summaryrefslogtreecommitdiff
path: root/debian/patches/svn-updates.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/svn-updates.diff')
-rw-r--r--debian/patches/svn-updates.diff95676
1 files changed, 28447 insertions, 67229 deletions
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 1ada192..8831b8b 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,3611 +1,2620 @@
-# DP: updates from the 6 branch upto 20170510 (r247831).
+# DP: updates from the 9 branch upto 20191109 (r278002).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Wed May 10 13:04:30 CEST 2017
-Wed May 10 11:04:30 UTC 2017 (revision 247831)
+Sat Nov 9 15:46:27 CET 2019
+Sat Nov 9 14:46:27 UTC 2019 (revision 278002)
EOF
}
-LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_6_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-6-branch \
+LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_9_2_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-9-branch \
| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
-Index: libgomp/env.c
-===================================================================
---- a/src/libgomp/env.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgomp/env.c (.../branches/gcc-6-branch)
-@@ -1182,7 +1182,7 @@
- static void __attribute__((constructor))
- initialize_env (void)
- {
-- unsigned long thread_limit_var, stacksize;
-+ unsigned long thread_limit_var, stacksize = 0;
- int wait_policy;
-
- /* Do a compile time check that mkomp_h.pl did good job. */
Index: libgomp/ChangeLog
===================================================================
---- a/src/libgomp/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/libgomp/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,33 @@
-+2017-05-05 Jakub Jelinek <jakub@redhat.com>
-+
-+ Backported from mainline
-+ 2017-04-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR libgomp/80394
-+ * testsuite/libgomp.c/pr80394.c: New test.
-+
-+ 2017-03-30 Jakub Jelinek <jakub@redhat.com>
-+
-+ * env.c (initialize_env): Initialize stacksize to 0.
-+
-+ 2017-03-08 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c/79940
-+ * testsuite/libgomp.c/pr79940.c: New test.
-+
-+2017-01-10 Thomas Schwinge <thomas@codesourcery.com>
-+
-+ Backport trunk r239125:
-+ 2016-08-04 Thomas Schwinge <thomas@codesourcery.com>
+--- a/src/libgomp/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libgomp/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,10 @@
++2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
-+ * testsuite/libgomp.oacc-c-c++-common/crash-1.c: Make it a "link"
-+ test, and don't hardcode -O0.
-+
-+ Backport trunk r239086:
-+ 2016-08-03 Nathan Sidwell <nathan@codesourcery.com>
-+
-+ * testsuite/libgomp.oacc-c-c++-common/crash-1.c: New.
++ Backport from trunk
++ PR fortran/91422
++ * testsuite/libgomp.oacc-fortran/routine-7.f90: Correct array
++ dimension.
+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
-Index: libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c
-===================================================================
---- a/src/libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,27 @@
-+/* { dg-do link } */
-+
-+/* For -O0, ICEd in nvptx backend due to unexpected frame size. */
-+#pragma acc routine worker
-+void
-+worker_matmul (int *c, int i)
-+{
-+ int j;
-+
-+#pragma acc loop
-+ for (j = 0; j < 4; j++)
-+ c[j] = j;
-+}
-+
-+
-+int
-+main ()
-+{
-+ int c[4];
-+
-+#pragma acc parallel
-+ {
-+ worker_matmul (c, 0);
-+ }
-+
-+ return 0;
-+}
-Index: libgomp/testsuite/libgomp.c/pr79940.c
+ * GCC 9.2.0 released.
+Index: libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90
===================================================================
---- a/src/libgomp/testsuite/libgomp.c/pr79940.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgomp/testsuite/libgomp.c/pr79940.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,47 @@
-+/* PR c/79940 */
-+
-+int
-+main ()
-+{
-+ int i, j, l, m;
-+ int a[10000], b[10000], c[10000];
-+ for (i = 0; i < 10000; i++)
-+ {
-+ a[i] = i;
-+ b[i] = i & 31;
-+ }
-+#pragma omp parallel shared(a, b, c)
-+#pragma omp single
-+#pragma omp taskloop shared(a, b, c)
-+ for (i = 0; i < 10000; i++)
-+ c[i] = a[i] + b[i];
-+#pragma omp parallel
-+#pragma omp single
-+ {
-+ #pragma omp taskloop shared(a, b, c) lastprivate (i)
-+ for (i = 0; i < 10000; i++)
-+ c[i] += a[i] + b[i];
-+ l = i;
-+ }
-+#pragma omp parallel
-+#pragma omp single
-+#pragma omp taskloop shared(a, b, c) collapse(2)
-+ for (i = 0; i < 100; i++)
-+ for (j = 0; j < 100; j++)
-+ c[i * 100 + j] += a[i * 100 + j] + b[i * 100 + j];
-+#pragma omp parallel
-+#pragma omp single
-+ {
-+ #pragma omp taskloop shared(a, b, c) lastprivate (i, j)
-+ for (i = 0; i < 100; i++)
-+ for (j = 0; j < 100; j++)
-+ c[i * 100 + j] += a[i * 100 + j] + b[i * 100 + j];
-+ m = i * 100 + j;
-+ }
-+ for (i = 0; i < 10000; i++)
-+ if (a[i] != i || b[i] != (i & 31) || c[i] != 4 * i + 4 * (i & 31))
-+ __builtin_abort ();
-+ if (l != 10000 || m != 10100)
-+ __builtin_abort ();
-+ return 0;
-+}
-Index: libgomp/testsuite/libgomp.c/pr80394.c
+--- a/src/libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90 (.../branches/gcc-9-branch)
+@@ -109,7 +109,7 @@
+
+ subroutine seq (a)
+ !$acc routine seq
+- integer, intent (inout) :: a(M)
++ integer, intent (inout) :: a(N)
+ integer :: i
+
+ do i = 1, N
+Index: libquadmath/ChangeLog
===================================================================
---- a/src/libgomp/testsuite/libgomp.c/pr80394.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgomp/testsuite/libgomp.c/pr80394.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+/* PR libgomp/80394 */
+--- a/src/libquadmath/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libquadmath/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,12 @@
++2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
-+int
-+main ()
-+{
-+ int x = 0;
-+ #pragma omp parallel shared(x)
-+ #pragma omp single
-+ {
-+ #pragma omp task depend(inout: x)
-+ {
-+ for (int i = 0; i < 100000; i++)
-+ asm volatile ("" : : : "memory");
-+ x += 5;
-+ }
-+ #pragma omp task if (0) depend(inout: x)
-+ ;
-+ if (x != 5)
-+ __builtin_abort ();
-+ }
-+ return 0;
-+}
++ Backported from mainline
++ 2019-08-02 Jakub Jelinek <jakub@redhat.com>
++
++ * quadmath.h (M_Eq, M_LOG2Eq, M_LOG10Eq, M_LN2q, M_LN10q, M_PIq,
++ M_PI_2q, M_PI_4q, M_1_PIq, M_2_PIq, M_2_SQRTPIq, M_SQRT2q,
++ M_SQRT1_2q): Use two more decimal places.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+Index: libquadmath/quadmath.h
+===================================================================
+--- a/src/libquadmath/quadmath.h (.../tags/gcc_9_2_0_release)
++++ b/src/libquadmath/quadmath.h (.../branches/gcc-9-branch)
+@@ -1,5 +1,5 @@
+ /* GCC Quad-Precision Math Library
+- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
++ Copyright (C) 2010-2019 Free Software Foundation, Inc.
+ Written by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ This file is part of the libquadmath library.
+@@ -165,19 +165,19 @@
+ (floating constant exceeds range of ‘__float128’) */
+ /* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */
+
+-#define M_Eq 2.7182818284590452353602874713526625Q /* e */
+-#define M_LOG2Eq 1.4426950408889634073599246810018921Q /* log_2 e */
+-#define M_LOG10Eq 0.4342944819032518276511289189166051Q /* log_10 e */
+-#define M_LN2q 0.6931471805599453094172321214581766Q /* log_e 2 */
+-#define M_LN10q 2.3025850929940456840179914546843642Q /* log_e 10 */
+-#define M_PIq 3.1415926535897932384626433832795029Q /* pi */
+-#define M_PI_2q 1.5707963267948966192313216916397514Q /* pi/2 */
+-#define M_PI_4q 0.7853981633974483096156608458198757Q /* pi/4 */
+-#define M_1_PIq 0.3183098861837906715377675267450287Q /* 1/pi */
+-#define M_2_PIq 0.6366197723675813430755350534900574Q /* 2/pi */
+-#define M_2_SQRTPIq 1.1283791670955125738961589031215452Q /* 2/sqrt(pi) */
+-#define M_SQRT2q 1.4142135623730950488016887242096981Q /* sqrt(2) */
+-#define M_SQRT1_2q 0.7071067811865475244008443621048490Q /* 1/sqrt(2) */
++#define M_Eq 2.718281828459045235360287471352662498Q /* e */
++#define M_LOG2Eq 1.442695040888963407359924681001892137Q /* log_2 e */
++#define M_LOG10Eq 0.434294481903251827651128918916605082Q /* log_10 e */
++#define M_LN2q 0.693147180559945309417232121458176568Q /* log_e 2 */
++#define M_LN10q 2.302585092994045684017991454684364208Q /* log_e 10 */
++#define M_PIq 3.141592653589793238462643383279502884Q /* pi */
++#define M_PI_2q 1.570796326794896619231321691639751442Q /* pi/2 */
++#define M_PI_4q 0.785398163397448309615660845819875721Q /* pi/4 */
++#define M_1_PIq 0.318309886183790671537767526745028724Q /* 1/pi */
++#define M_2_PIq 0.636619772367581343075535053490057448Q /* 2/pi */
++#define M_2_SQRTPIq 1.128379167095512573896158903121545172Q /* 2/sqrt(pi) */
++#define M_SQRT2q 1.414213562373095048801688724209698079Q /* sqrt(2) */
++#define M_SQRT1_2q 0.707106781186547524400844362104849039Q /* 1/sqrt(2) */
+
+ #define __quadmath_extern_inline \
+ extern inline __attribute__ ((__gnu_inline__))
Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
===================================================================
---- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../branches/gcc-6-branch)
-@@ -21,11 +21,6 @@
- #ifdef _FILE_OFFSET_BITS
- #undef _FILE_OFFSET_BITS
+--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc (.../branches/gcc-9-branch)
+@@ -1156,8 +1156,12 @@
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
+-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
++#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \
++ !defined(__arm__)
+ /* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
++/* On Arm glibc 2.31 and later provide a different mode field, this field is
++ never used by libsanitizer so we can simply ignore this assert for all glibc
++ versions. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
#endif
--#if SANITIZER_FREEBSD
--#define _WANT_RTENTRY
--#include <sys/param.h>
--#include <sys/socketvar.h>
--#endif
- #include <arpa/inet.h>
- #include <dirent.h>
- #include <errno.h>
-@@ -411,6 +406,7 @@
- unsigned struct_input_absinfo_sz = sizeof(struct input_absinfo);
- unsigned struct_input_id_sz = sizeof(struct input_id);
- unsigned struct_mtpos_sz = sizeof(struct mtpos);
-+ unsigned struct_rtentry_sz = sizeof(struct rtentry);
- unsigned struct_termio_sz = sizeof(struct termio);
- unsigned struct_vt_consize_sz = sizeof(struct vt_consize);
- unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes);
-@@ -430,7 +426,6 @@
- unsigned struct_midi_info_sz = sizeof(struct midi_info);
- unsigned struct_mtget_sz = sizeof(struct mtget);
- unsigned struct_mtop_sz = sizeof(struct mtop);
-- unsigned struct_rtentry_sz = sizeof(struct rtentry);
- unsigned struct_sbi_instrument_sz = sizeof(struct sbi_instrument);
- unsigned struct_seq_event_rec_sz = sizeof(struct seq_event_rec);
- unsigned struct_synth_info_sz = sizeof(struct synth_info);
+
+Index: libsanitizer/asan/Makefile.in
+===================================================================
+--- a/src/libsanitizer/asan/Makefile.in (.../tags/gcc_9_2_0_release)
++++ b/src/libsanitizer/asan/Makefile.in (.../branches/gcc-9-branch)
+@@ -90,7 +90,7 @@
+ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+-@USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT
++@USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0
+ @USING_MAC_INTERPOSE_FALSE@am__append_2 = $(top_builddir)/interception/libinterception.la
+ @LIBBACKTRACE_SUPPORTED_TRUE@am__append_3 = $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
+ subdir = asan
+Index: libsanitizer/asan/asan_interceptors.h
+===================================================================
+--- a/src/libsanitizer/asan/asan_interceptors.h (.../tags/gcc_9_2_0_release)
++++ b/src/libsanitizer/asan/asan_interceptors.h (.../branches/gcc-9-branch)
+@@ -79,7 +79,12 @@
+ #if ASAN_HAS_EXCEPTIONS && !SANITIZER_WINDOWS && !SANITIZER_SOLARIS && \
+ !SANITIZER_NETBSD
+ # define ASAN_INTERCEPT___CXA_THROW 1
+-# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1
++# if ! defined(ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION) \
++ || ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION
++# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1
++# else
++# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 0
++# endif
+ # if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__))
+ # define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 1
+ # else
+Index: libsanitizer/asan/Makefile.am
+===================================================================
+--- a/src/libsanitizer/asan/Makefile.am (.../tags/gcc_9_2_0_release)
++++ b/src/libsanitizer/asan/Makefile.am (.../branches/gcc-9-branch)
+@@ -5,7 +5,7 @@
+
+ DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 -DCAN_SANITIZE_UB=0
+ if USING_MAC_INTERPOSE
+-DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT
++DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0
+ endif
+ AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -fno-ipa-icf
+ AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
Index: libsanitizer/ChangeLog
===================================================================
---- a/src/libsanitizer/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/libsanitizer/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,12 @@
-+2017-02-17 Andreas Tobler <andreast@gcc.gnu.org>
+--- a/src/libsanitizer/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libsanitizer/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,24 @@
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
-+ 2017-02-16 Andreas Tobler <andreast@gcc.gnu.org>
++ 2019-10-22 Tamar Christina <tamar.christina@arm.com>
++
++ PR sanitizer/92154
++ * sanitizer_common/sanitizer_platform_limits_posix.cc:
++ Cherry-pick compiler-rt revision r375220.
+
-+ PR sanitizer/79562
-+ * sanitizer_common/sanitizer_platform_limits_posix.cc: Cherry-pick
-+ upstream r294806.
++2019-08-18 Iain Sandoe <iain@sandoe.co.uk>
++
++ Backport from mainline
++ 2019-06-18 Iain Sandoe <iain@sandoe.co.uk>
+
- 2016-12-21 Release Manager
++ PR libsanitizer/87880
++ * asan/asan_interceptors.h:
++ (ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): New.
++ * asan/Makefile.am (DEFS): Add (for Darwin only)
++ ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION, defined to 0.
++ * asan/Makefile.in: Regenerated.
++
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
+ * GCC 9.2.0 released.
Index: libstdc++-v3/configure
===================================================================
---- a/src/libstdc++-v3/configure (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/configure (.../branches/gcc-6-branch)
-@@ -18385,6 +18385,7 @@
+--- a/src/libstdc++-v3/configure (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/configure (.../branches/gcc-9-branch)
+@@ -79469,7 +79469,7 @@
+ fi
+
+ # For libtool versioning info, format is CURRENT:REVISION:AGE
+-libtool_VERSION=6:27:0
++libtool_VERSION=6:28:0
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
-+#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
- #include <math.h>
- #undef isnan
- namespace std {
+ # Everything parsed; figure out what files and settings to use.
+ case $enable_symvers in
Index: libstdc++-v3/python/libstdcxx/v6/xmethods.py
===================================================================
---- a/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../branches/gcc-6-branch)
-@@ -565,8 +565,14 @@
- # Xmethods for std::unique_ptr
+--- a/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../branches/gcc-9-branch)
+@@ -728,7 +728,7 @@
+ return gdb.lookup_type('long')
- class UniquePtrGetWorker(gdb.xmethod.XMethodWorker):
-+ "Implements std::unique_ptr<T>::get() and std::unique_ptr<T>::operator->()"
-+
- def __init__(self, elem_type):
-- self._elem_type = elem_type
-+ self._is_array = elem_type.code == gdb.TYPE_CODE_ARRAY
-+ if self._is_array:
-+ self._elem_type = elem_type.target()
-+ else:
-+ self._elem_type = elem_type
-
- def get_arg_types(self):
- return None
-@@ -574,10 +580,16 @@
- def get_result_type(self, obj):
- return self._elem_type.pointer()
-
-+ def _supports(self, method_name):
-+ "operator-> is not supported for unique_ptr<T[]>"
-+ return method_name == 'get' or not self._is_array
-+
def __call__(self, obj):
- return obj['_M_t']['_M_head_impl']
-
- class UniquePtrDerefWorker(UniquePtrGetWorker):
-+ "Implements std::unique_ptr<T>::operator*()"
-+
- def __init__(self, elem_type):
- UniquePtrGetWorker.__init__(self, elem_type)
+- refcounts = ['_M_refcount']['_M_pi']
++ refcounts = obj['_M_refcount']['_M_pi']
+ return refcounts['_M_use_count'] if refcounts else 0
-@@ -584,9 +596,32 @@
- def get_result_type(self, obj):
- return self._elem_type
+ class SharedPtrUniqueWorker(SharedPtrUseCountWorker):
+Index: libstdc++-v3/src/c++17/string-inst.cc
+===================================================================
+--- a/src/libstdc++-v3/src/c++17/string-inst.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/src/c++17/string-inst.cc (.../branches/gcc-9-branch)
+@@ -26,6 +26,12 @@
+ // ISO C++ 14882:2017 24 Strings library
+ //
-+ def _supports(self, method_name):
-+ "operator* is not supported for unique_ptr<T[]>"
-+ return not self._is_array
++#ifndef _GLIBCXX_USE_CXX11_ABI
++// Instantiations in this file use the new SSO std::string ABI unless included
++// by another file which defines _GLIBCXX_USE_CXX11_ABI=0.
++# define _GLIBCXX_USE_CXX11_ABI 1
++#endif
+
- def __call__(self, obj):
- return UniquePtrGetWorker.__call__(self, obj).dereference()
+ #include <string>
-+class UniquePtrSubscriptWorker(UniquePtrGetWorker):
-+ "Implements std::unique_ptr<T>::operator[](size_t)"
-+
-+ def __init__(self, elem_type):
-+ UniquePtrGetWorker.__init__(self, elem_type)
-+
-+ def get_arg_types(self):
-+ return get_std_size_type()
-+
-+ def get_result_type(self, obj, index):
-+ return self._elem_type
-+
-+ def _supports(self, method_name):
-+ "operator[] is only supported for unique_ptr<T[]>"
-+ return self._is_array
-+
-+ def __call__(self, obj, index):
-+ return UniquePtrGetWorker.__call__(self, obj)[index]
-+
- class UniquePtrMethodsMatcher(gdb.xmethod.XMethodMatcher):
- def __init__(self):
- gdb.xmethod.XMethodMatcher.__init__(self,
-@@ -595,6 +630,7 @@
- 'get': LibStdCxxXMethod('get', UniquePtrGetWorker),
- 'operator->': LibStdCxxXMethod('operator->', UniquePtrGetWorker),
- 'operator*': LibStdCxxXMethod('operator*', UniquePtrDerefWorker),
-+ 'operator[]': LibStdCxxXMethod('operator[]', UniquePtrSubscriptWorker),
- }
- self.methods = [self._method_dict[m] for m in self._method_dict]
+ namespace std _GLIBCXX_VISIBILITY(default)
+Index: libstdc++-v3/src/filesystem/ops-common.h
+===================================================================
+--- a/src/libstdc++-v3/src/filesystem/ops-common.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/src/filesystem/ops-common.h (.../branches/gcc-9-branch)
+@@ -76,7 +76,7 @@
+ inline int stat(const wchar_t* path, stat_type* buffer)
+ { return ::_wstat(path, buffer); }
-@@ -604,6 +640,112 @@
- method = self._method_dict.get(method_name)
- if method is None or not method.enabled:
- return None
-+ worker = method.worker_class(class_type.template_argument(0))
-+ if worker._supports(method_name):
-+ return worker
-+ return None
-+
-+# Xmethods for std::shared_ptr
-+
-+class SharedPtrGetWorker(gdb.xmethod.XMethodWorker):
-+ "Implements std::shared_ptr<T>::get() and std::shared_ptr<T>::operator->()"
-+
-+ def __init__(self, elem_type):
-+ self._is_array = elem_type.code == gdb.TYPE_CODE_ARRAY
-+ if self._is_array:
-+ self._elem_type = elem_type.target()
-+ else:
-+ self._elem_type = elem_type
-+
-+ def get_arg_types(self):
-+ return None
-+
-+ def get_result_type(self, obj):
-+ return self._elem_type.pointer()
-+
-+ def __call__(self, obj):
-+ return obj['_M_ptr']
-+
-+class SharedPtrDerefWorker(SharedPtrGetWorker):
-+ "Implements std::shared_ptr<T>::operator*()"
+- inline lstat(const wchar_t* path, stat_type* buffer)
++ inline int lstat(const wchar_t* path, stat_type* buffer)
+ {
+ // TODO symlinks not currently supported
+ return stat(path, buffer);
+Index: libstdc++-v3/doc/xml/manual/allocator.xml
+===================================================================
+--- a/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../branches/gcc-9-branch)
+@@ -499,12 +499,12 @@
+ </biblioentry>
+
+ <biblioentry>
+- <title>
+- <link xmlns:xlink="http://www.w3.org/1999/xlink"
+- xlink:href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759">
++ <title>
++ <link xmlns:xlink="http://www.w3.org/1999/xlink"
++ xlink:href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759">
+ The Standard Librarian: What Are Allocators Good For?
+- </link>
+- </title>
++ </link>
++ </title>
+
+ <author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author>
+ <publisher>
+@@ -512,12 +512,13 @@
+ C/C++ Users Journal
+ </publishername>
+ </publisher>
++ <pubdate>2000-12</pubdate>
+ </biblioentry>
+
+ <biblioentry>
+ <title>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink"
+- xlink:href="https://www.hoard.org">
++ xlink:href="http://hoard.org">
+ The Hoard Memory Allocator
+ </link>
+ </title>
+Index: libstdc++-v3/doc/xml/manual/abi.xml
+===================================================================
+--- a/src/libstdc++-v3/doc/xml/manual/abi.xml (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/xml/manual/abi.xml (.../branches/gcc-9-branch)
+@@ -268,7 +268,9 @@
+ <listitem><para>GCC 7.1.0: libstdc++.so.6.0.23</para></listitem>
+ <listitem><para>GCC 7.2.0: libstdc++.so.6.0.24</para></listitem>
+ <listitem><para>GCC 8.0.0: libstdc++.so.6.0.25</para></listitem>
+- <listitem><para>GCC 9.0.0: libstdc++.so.6.0.26</para></listitem>
++ <listitem><para>GCC 9.1.0: libstdc++.so.6.0.26</para></listitem>
++ <listitem><para>GCC 9.2.0: libstdc++.so.6.0.27</para></listitem>
++ <listitem><para>GCC 9.3.0: libstdc++.so.6.0.28</para></listitem>
+ </itemizedlist>
+ <para>
+ Note 1: Error should be libstdc++.so.3.0.3.
+Index: libstdc++-v3/doc/xml/manual/documentation_hacking.xml
+===================================================================
+--- a/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../branches/gcc-9-branch)
+@@ -805,7 +805,7 @@
+ </para>
+
+ <para>
+- Generated files are output into separate sub directores of
++ Generated files are output into separate sub-directores of
+ <filename class="directory">doc/docbook/</filename> in the
+ build directory, based on the output format. For instance, the
+ HTML docs will be in <filename
+@@ -813,6 +813,13 @@
+ </para>
+
+ <para>
++ The <screen>doc-html-docbook-regenerate</screen> target will generate
++ the HTML files and copy them back to the libstdc++ source tree.
++ This can be used to update the HTML files that are checked in to
++ version control.
++ </para>
++
++ <para>
+ If the Docbook stylesheets are installed in a custom location,
+ one can use the variable <literal>XSL_STYLE_DIR</literal> to
+ override the Makefile defaults. For example:
+Index: libstdc++-v3/doc/xml/manual/status_cxx2020.xml
+===================================================================
+--- a/src/libstdc++-v3/doc/xml/manual/status_cxx2020.xml (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/xml/manual/status_cxx2020.xml (.../branches/gcc-9-branch)
+@@ -309,7 +309,6 @@
+ </row>
+
+ <row>
+- <?dbhtml bgcolor="#C8B0B0" ?>
+ <entry> Constexpr iterator requirements </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html">
+@@ -316,8 +315,9 @@
+ P0858R0
+ </link>
+ </entry>
+- <entry align="center"> </entry>
+- <entry />
++ <entry align="center"> 9.1 </entry>
++ <entry> <code>__cpp_lib_string_view &gt;= 201803L</code>
++ and <code>__cpp_lib_array_constexpr &gt;= 201803L</code> </entry>
+ </row>
+
+ <row>
+Index: libstdc++-v3/doc/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/doc/Makefile.in (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/Makefile.in (.../branches/gcc-9-branch)
+@@ -978,7 +978,6 @@
+
+ ${docbook_outdir}/html:
+ mkdir -p ${docbook_outdir}/html
+- mkdir -p ${docbook_outdir}/html/ext
+ mkdir -p ${docbook_outdir}/html/images
+ mkdir -p ${docbook_outdir}/html/manual
+
+@@ -1030,6 +1029,12 @@
+ $(STAMP) stamp-html-docbook
+
+ doc-html-docbook: stamp-html-docbook-data
++
++# Generate the HTML pages and copy them back to the source tree.
++doc-html-docbook-regenerate: doc-html-docbook
++ $(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html
++ $(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images
++ $(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual
+ stamp-html-single-docbook: $(xml_sources) ${docbook_outdir}/html
+ @echo "Generating html single file..."
+ $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${manual_html} \
+Index: libstdc++-v3/doc/html/manual/status.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-9-branch)
+@@ -1110,11 +1110,12 @@
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf" target="_top">
+ P0809R0
+ </a>
+- </td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Constexpr iterator requirements </td><td align="left">
++ </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Constexpr iterator requirements </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html" target="_top">
+ P0858R0
+ </a>
+- </td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Symmetry for spaceship </td><td align="left">
++ </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_string_view &gt;= 201803L</code>
++ and <code class="code">__cpp_lib_array_constexpr &gt;= 201803L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Symmetry for spaceship </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html" target="_top">
+ P0905R1
+ </a>
+Index: libstdc++-v3/doc/html/manual/abi.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/manual/abi.html (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/html/manual/abi.html (.../branches/gcc-9-branch)
+@@ -110,7 +110,7 @@
+ has the same filename and <code class="constant">DT_SONAME</code> as the
+ preceding release.
+ </p><p>It is versioned as follows:
+- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: libstdc++.so.3.0.0</p></li><li class="listitem"><p>GCC 3.0.1: libstdc++.so.3.0.1</p></li><li class="listitem"><p>GCC 3.0.2: libstdc++.so.3.0.2</p></li><li class="listitem"><p>GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)</p></li><li class="listitem"><p>GCC 3.0.4: libstdc++.so.3.0.4</p></li><li class="listitem"><p>GCC 3.1.0: libstdc++.so.4.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.1.1: libstdc++.so.4.0.1</p></li><li class="listitem"><p>GCC 3.2.0: libstdc++.so.5.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.2.1: libstdc++.so.5.0.1</p></li><li class="listitem"><p>GCC 3.2.2: libstdc++.so.5.0.2</p></li><li class="listitem"><p>GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)</p></li><li class="listitem"><p>GCC 3.3.0: libstdc++.so.5.0.4</p></li><li class="listitem"><p>GCC 3.3.1: libstdc++.so.5.0.5</p></li><li class="listitem"><p>GCC 3.4.0: libstdc++.so.6.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.4.1: libstdc++.so.6.0.1</p></li><li class="listitem"><p>GCC 3.4.2: libstdc++.so.6.0.2</p></li><li class="listitem"><p>GCC 3.4.3: libstdc++.so.6.0.3</p></li><li class="listitem"><p>GCC 4.0.0: libstdc++.so.6.0.4</p></li><li class="listitem"><p>GCC 4.0.1: libstdc++.so.6.0.5</p></li><li class="listitem"><p>GCC 4.0.2: libstdc++.so.6.0.6</p></li><li class="listitem"><p>GCC 4.0.3: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.0: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.1: libstdc++.so.6.0.8</p></li><li class="listitem"><p>GCC 4.2.0: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)</p></li><li class="listitem"><p>GCC 4.2.2: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.3.0: libstdc++.so.6.0.10</p></li><li class="listitem"><p>GCC 4.4.0: libstdc++.so.6.0.11</p></li><li class="listitem"><p>GCC 4.4.1: libstdc++.so.6.0.12</p></li><li class="listitem"><p>GCC 4.4.2: libstdc++.so.6.0.13</p></li><li class="listitem"><p>GCC 4.5.0: libstdc++.so.6.0.14</p></li><li class="listitem"><p>GCC 4.6.0: libstdc++.so.6.0.15</p></li><li class="listitem"><p>GCC 4.6.1: libstdc++.so.6.0.16</p></li><li class="listitem"><p>GCC 4.7.0: libstdc++.so.6.0.17</p></li><li class="listitem"><p>GCC 4.8.0: libstdc++.so.6.0.18</p></li><li class="listitem"><p>GCC 4.8.3: libstdc++.so.6.0.19</p></li><li class="listitem"><p>GCC 4.9.0: libstdc++.so.6.0.20</p></li><li class="listitem"><p>GCC 5.1.0: libstdc++.so.6.0.21</p></li><li class="listitem"><p>GCC 6.1.0: libstdc++.so.6.0.22</p></li><li class="listitem"><p>GCC 7.1.0: libstdc++.so.6.0.23</p></li><li class="listitem"><p>GCC 7.2.0: libstdc++.so.6.0.24</p></li><li class="listitem"><p>GCC 8.0.0: libstdc++.so.6.0.25</p></li><li class="listitem"><p>GCC 9.0.0: libstdc++.so.6.0.26</p></li></ul></div><p>
++ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: libstdc++.so.3.0.0</p></li><li class="listitem"><p>GCC 3.0.1: libstdc++.so.3.0.1</p></li><li class="listitem"><p>GCC 3.0.2: libstdc++.so.3.0.2</p></li><li class="listitem"><p>GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)</p></li><li class="listitem"><p>GCC 3.0.4: libstdc++.so.3.0.4</p></li><li class="listitem"><p>GCC 3.1.0: libstdc++.so.4.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.1.1: libstdc++.so.4.0.1</p></li><li class="listitem"><p>GCC 3.2.0: libstdc++.so.5.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.2.1: libstdc++.so.5.0.1</p></li><li class="listitem"><p>GCC 3.2.2: libstdc++.so.5.0.2</p></li><li class="listitem"><p>GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)</p></li><li class="listitem"><p>GCC 3.3.0: libstdc++.so.5.0.4</p></li><li class="listitem"><p>GCC 3.3.1: libstdc++.so.5.0.5</p></li><li class="listitem"><p>GCC 3.4.0: libstdc++.so.6.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.4.1: libstdc++.so.6.0.1</p></li><li class="listitem"><p>GCC 3.4.2: libstdc++.so.6.0.2</p></li><li class="listitem"><p>GCC 3.4.3: libstdc++.so.6.0.3</p></li><li class="listitem"><p>GCC 4.0.0: libstdc++.so.6.0.4</p></li><li class="listitem"><p>GCC 4.0.1: libstdc++.so.6.0.5</p></li><li class="listitem"><p>GCC 4.0.2: libstdc++.so.6.0.6</p></li><li class="listitem"><p>GCC 4.0.3: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.0: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.1: libstdc++.so.6.0.8</p></li><li class="listitem"><p>GCC 4.2.0: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)</p></li><li class="listitem"><p>GCC 4.2.2: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.3.0: libstdc++.so.6.0.10</p></li><li class="listitem"><p>GCC 4.4.0: libstdc++.so.6.0.11</p></li><li class="listitem"><p>GCC 4.4.1: libstdc++.so.6.0.12</p></li><li class="listitem"><p>GCC 4.4.2: libstdc++.so.6.0.13</p></li><li class="listitem"><p>GCC 4.5.0: libstdc++.so.6.0.14</p></li><li class="listitem"><p>GCC 4.6.0: libstdc++.so.6.0.15</p></li><li class="listitem"><p>GCC 4.6.1: libstdc++.so.6.0.16</p></li><li class="listitem"><p>GCC 4.7.0: libstdc++.so.6.0.17</p></li><li class="listitem"><p>GCC 4.8.0: libstdc++.so.6.0.18</p></li><li class="listitem"><p>GCC 4.8.3: libstdc++.so.6.0.19</p></li><li class="listitem"><p>GCC 4.9.0: libstdc++.so.6.0.20</p></li><li class="listitem"><p>GCC 5.1.0: libstdc++.so.6.0.21</p></li><li class="listitem"><p>GCC 6.1.0: libstdc++.so.6.0.22</p></li><li class="listitem"><p>GCC 7.1.0: libstdc++.so.6.0.23</p></li><li class="listitem"><p>GCC 7.2.0: libstdc++.so.6.0.24</p></li><li class="listitem"><p>GCC 8.0.0: libstdc++.so.6.0.25</p></li><li class="listitem"><p>GCC 9.1.0: libstdc++.so.6.0.26</p></li><li class="listitem"><p>GCC 9.2.0: libstdc++.so.6.0.27</p></li><li class="listitem"><p>GCC 9.3.0: libstdc++.so.6.0.28</p></li></ul></div><p>
+ Note 1: Error should be libstdc++.so.3.0.3.
+ </p><p>
+ Note 2: Not strictly required.
+Index: libstdc++-v3/doc/html/manual/memory.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/manual/memory.html (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/html/manual/memory.html (.../branches/gcc-9-branch)
+@@ -314,13 +314,13 @@
+ </em>. </span>
+ isoc++_1998
+ <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.3"></a><p><span class="title"><em>
+- <a class="link" href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top">
++ <a class="link" href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top">
+ The Standard Librarian: What Are Allocators Good For?
+- </a>
+- </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
++ </a>
++ </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
+ C/C++ Users Journal
+- . </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em>
+- <a class="link" href="https://www.hoard.org" target="_top">
++ . </span></span><span class="pubdate">2000-12. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em>
++ <a class="link" href="http://hoard.org" target="_top">
+ The Hoard Memory Allocator
+ </a>
+ </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.5"></a><p><span class="title"><em>
+Index: libstdc++-v3/doc/html/manual/documentation_hacking.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../branches/gcc-9-branch)
+@@ -381,11 +381,16 @@
+ </p><p>
+ </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p>
+ </p><p>
+- Generated files are output into separate sub directores of
++ Generated files are output into separate sub-directores of
+ <code class="filename">doc/docbook/</code> in the
+ build directory, based on the output format. For instance, the
+ HTML docs will be in <code class="filename">doc/docbook/html</code>.
+ </p><p>
++ The </p><pre class="screen">doc-html-docbook-regenerate</pre><p> target will generate
++ the HTML files and copy them back to the libstdc++ source tree.
++ This can be used to update the HTML files that are checked in to
++ version control.
++ </p><p>
+ If the Docbook stylesheets are installed in a custom location,
+ one can use the variable <code class="literal">XSL_STYLE_DIR</code> to
+ override the Makefile defaults. For example:
+Index: libstdc++-v3/doc/Makefile.am
+===================================================================
+--- a/src/libstdc++-v3/doc/Makefile.am (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/doc/Makefile.am (.../branches/gcc-9-branch)
+@@ -477,7 +477,6 @@
+
+ ${docbook_outdir}/html:
+ mkdir -p ${docbook_outdir}/html
+- mkdir -p ${docbook_outdir}/html/ext
+ mkdir -p ${docbook_outdir}/html/images
+ mkdir -p ${docbook_outdir}/html/manual
+
+@@ -546,6 +545,12 @@
+
+ doc-html-docbook: stamp-html-docbook-data
+
++# Generate the HTML pages and copy them back to the source tree.
++doc-html-docbook-regenerate: doc-html-docbook
++ $(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html
++ $(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images
++ $(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual
++
+ # HTML, all one page
+ # NB: Have to generate customization XSL for UTF-8 output.
+ manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html
+Index: libstdc++-v3/include/std/numeric
+===================================================================
+--- a/src/libstdc++-v3/include/std/numeric (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/std/numeric (.../branches/gcc-9-branch)
+@@ -220,6 +220,472 @@
+ #endif // C++20
+
+ #if __cplusplus > 201402L
++#include <bits/stl_function.h>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ /// @addtogroup numeric_ops
++ /// @{
++
++ /// @cond undocumented
++ template<typename _It, typename _Traits = iterator_traits<_It>,
++ typename _Cat = typename _Traits::iterator_category>
++ using __is_random_access_iter
++ = is_base_of<random_access_iterator_tag, _Cat>;
++ /// @endcond
++
++ /**
++ * @brief Calculate reduction of values in a range.
++ *
++ * @param __first Start of range.
++ * @param __last End of range.
++ * @param __init Starting value to add other values to.
++ * @param __binary_op A binary function object.
++ * @return The final sum.
++ *
++ * Reduce the values in the range `[first,last)` using a binary operation.
++ * The initial value is `init`. The values are not necessarily processed
++ * in order.
++ *
++ * This algorithm is similar to `std::accumulate` but is not required to
++ * perform the operations in order from first to last. For operations
++ * that are commutative and associative the result will be the same as
++ * for `std::accumulate`, but for other operations (such as floating point
++ * arithmetic) the result can be different.
++ */
++ template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
++ _Tp
++ reduce(_InputIterator __first, _InputIterator __last, _Tp __init,
++ _BinaryOperation __binary_op)
++ {
++ using value_type = typename iterator_traits<_InputIterator>::value_type;
++ static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
++ static_assert(is_convertible_v<value_type, _Tp>);
++ if constexpr (__is_random_access_iter<_InputIterator>::value)
++ {
++ while ((__last - __first) >= 4)
++ {
++ _Tp __v1 = __binary_op(__first[0], __first[1]);
++ _Tp __v2 = __binary_op(__first[2], __first[3]);
++ _Tp __v3 = __binary_op(__v1, __v2);
++ __init = __binary_op(__init, __v3);
++ __first += 4;
++ }
++ }
++ for (; __first != __last; ++__first)
++ __init = __binary_op(__init, *__first);
++ return __init;
++ }
+
-+ def __init__(self, elem_type):
-+ SharedPtrGetWorker.__init__(self, elem_type)
++ /**
++ * @brief Calculate reduction of values in a range.
++ *
++ * @param __first Start of range.
++ * @param __last End of range.
++ * @param __init Starting value to add other values to.
++ * @return The final sum.
++ *
++ * Reduce the values in the range `[first,last)` using addition.
++ * Equivalent to calling `std::reduce(first, last, init, std::plus<>())`.
++ */
++ template<typename _InputIterator, typename _Tp>
++ inline _Tp
++ reduce(_InputIterator __first, _InputIterator __last, _Tp __init)
++ { return std::reduce(__first, __last, std::move(__init), plus<>()); }
++
++ /**
++ * @brief Calculate reduction of values in a range.
++ *
++ * @param __first Start of range.
++ * @param __last End of range.
++ * @return The final sum.
++ *
++ * Reduce the values in the range `[first,last)` using addition, with
++ * an initial value of `T{}`, where `T` is the iterator's value type.
++ * Equivalent to calling `std::reduce(first, last, T{}, std::plus<>())`.
++ */
++ template<typename _InputIterator>
++ inline typename iterator_traits<_InputIterator>::value_type
++ reduce(_InputIterator __first, _InputIterator __last)
++ {
++ using value_type = typename iterator_traits<_InputIterator>::value_type;
++ return std::reduce(__first, __last, value_type{}, plus<>());
++ }
+
-+ def get_result_type(self, obj):
-+ return self._elem_type
++ /**
++ * @brief Combine elements from two ranges and reduce
++ *
++ * @param __first1 Start of first range.
++ * @param __last1 End of first range.
++ * @param __first2 Start of second range.
++ * @param __init Starting value to add other values to.
++ * @param __binary_op1 The function used to perform reduction.
++ * @param __binary_op2 The function used to combine values from the ranges.
++ * @return The final sum.
++ *
++ * Call `binary_op2(first1[n],first2[n])` for each `n` in `[0,last1-first1)`
++ * and then use `binary_op1` to reduce the values returned by `binary_op2`
++ * to a single value of type `T`.
++ *
++ * The range beginning at `first2` must contain at least `last1-first1`
++ * elements.
++ */
++ template<typename _InputIterator1, typename _InputIterator2, typename _Tp,
++ typename _BinaryOperation1, typename _BinaryOperation2>
++ _Tp
++ transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
++ _InputIterator2 __first2, _Tp __init,
++ _BinaryOperation1 __binary_op1,
++ _BinaryOperation2 __binary_op2)
++ {
++ if constexpr (__and_v<__is_random_access_iter<_InputIterator1>,
++ __is_random_access_iter<_InputIterator2>>)
++ {
++ while ((__last1 - __first1) >= 4)
++ {
++ _Tp __v1 = __binary_op1(__binary_op2(__first1[0], __first2[0]),
++ __binary_op2(__first1[1], __first2[1]));
++ _Tp __v2 = __binary_op1(__binary_op2(__first1[2], __first2[2]),
++ __binary_op2(__first1[3], __first2[3]));
++ _Tp __v3 = __binary_op1(__v1, __v2);
++ __init = __binary_op1(__init, __v3);
++ __first1 += 4;
++ __first2 += 4;
++ }
++ }
++ for (; __first1 != __last1; ++__first1, (void) ++__first2)
++ __init = __binary_op1(__init, __binary_op2(*__first1, *__first2));
++ return __init;
++ }
+
-+ def __call__(self, obj):
-+ return SharedPtrGetWorker.__call__(self, obj).dereference()
++ /**
++ * @brief Combine elements from two ranges and reduce
++ *
++ * @param __first1 Start of first range.
++ * @param __last1 End of first range.
++ * @param __first2 Start of second range.
++ * @param __init Starting value to add other values to.
++ * @return The final sum.
++ *
++ * Call `first1[n]*first2[n]` for each `n` in `[0,last1-first1)` and then
++ * use addition to sum those products to a single value of type `T`.
++ *
++ * The range beginning at `first2` must contain at least `last1-first1`
++ * elements.
++ */
++ template<typename _InputIterator1, typename _InputIterator2, typename _Tp>
++ inline _Tp
++ transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1,
++ _InputIterator2 __first2, _Tp __init)
++ {
++ return std::transform_reduce(__first1, __last1, __first2,
++ std::move(__init),
++ plus<>(), multiplies<>());
++ }
+
-+class SharedPtrSubscriptWorker(SharedPtrGetWorker):
-+ "Implements std::shared_ptr<T>::operator[](size_t)"
++ /**
++ * @brief Transform the elements of a range and reduce
++ *
++ * @param __first Start of range.
++ * @param __last End of range.
++ * @param __init Starting value to add other values to.
++ * @param __binary_op The function used to perform reduction.
++ * @param __unary_op The function used to transform values from the range.
++ * @return The final sum.
++ *
++ * Call `unary_op(first[n])` for each `n` in `[0,last-first)` and then
++ * use `binary_op` to reduce the values returned by `unary_op`
++ * to a single value of type `T`.
++ */
++ template<typename _InputIterator, typename _Tp,
++ typename _BinaryOperation, typename _UnaryOperation>
++ _Tp
++ transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init,
++ _BinaryOperation __binary_op, _UnaryOperation __unary_op)
++ {
++ if constexpr (__is_random_access_iter<_InputIterator>::value)
++ {
++ while ((__last - __first) >= 4)
++ {
++ _Tp __v1 = __binary_op(__unary_op(__first[0]),
++ __unary_op(__first[1]));
++ _Tp __v2 = __binary_op(__unary_op(__first[2]),
++ __unary_op(__first[3]));
++ _Tp __v3 = __binary_op(__v1, __v2);
++ __init = __binary_op(__init, __v3);
++ __first += 4;
++ }
++ }
++ for (; __first != __last; ++__first)
++ __init = __binary_op(__init, __unary_op(*__first));
++ return __init;
++ }
+
-+ def __init__(self, elem_type):
-+ SharedPtrGetWorker.__init__(self, elem_type)
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __init Initial value.
++ * @param __binary_op Function to perform summation.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements (and the initial value),
++ * using `binary_op` for summation.
++ *
++ * This function generates an "exclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N-1 input elements,
++ * so the Nth input element is not included.
++ */
++ template<typename _InputIterator, typename _OutputIterator, typename _Tp,
++ typename _BinaryOperation>
++ _OutputIterator
++ exclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result, _Tp __init,
++ _BinaryOperation __binary_op)
++ {
++ while (__first != __last)
++ {
++ auto __v = __init;
++ __init = __binary_op(__init, *__first);
++ ++__first;
++ *__result++ = std::move(__v);
++ }
++ return __result;
++ }
+
-+ def get_arg_types(self):
-+ return get_std_size_type()
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __init Initial value.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements (and the initial value),
++ * using `std::plus<>` for summation.
++ *
++ * This function generates an "exclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N-1 input elements,
++ * so the Nth input element is not included.
++ */
++ template<typename _InputIterator, typename _OutputIterator, typename _Tp>
++ inline _OutputIterator
++ exclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result, _Tp __init)
++ {
++ return std::exclusive_scan(__first, __last, __result, std::move(__init),
++ plus<>());
++ }
+
-+ def get_result_type(self, obj, index):
-+ return self._elem_type
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __binary_op Function to perform summation.
++ * @param __init Initial value.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements (and the initial value),
++ * using `binary_op` for summation.
++ *
++ * This function generates an "inclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N input elements,
++ * so the Nth input element is included.
++ */
++ template<typename _InputIterator, typename _OutputIterator,
++ typename _BinaryOperation, typename _Tp>
++ _OutputIterator
++ inclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result, _BinaryOperation __binary_op,
++ _Tp __init)
++ {
++ for (; __first != __last; ++__first)
++ *__result++ = __init = __binary_op(__init, *__first);
++ return __result;
++ }
+
-+ def __call__(self, obj, index):
-+ # Check bounds if _elem_type is an array of known bound
-+ m = re.match('.*\[(\d+)]$', str(self._elem_type))
-+ if m and index >= int(m.group(1)):
-+ raise IndexError('shared_ptr<%s> index "%d" should not be >= %d.' %
-+ (self._elem_type, int(index), int(m.group(1))))
-+ return SharedPtrGetWorker.__call__(self, obj)[index]
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __binary_op Function to perform summation.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements, using `binary_op` for summation.
++ *
++ * This function generates an "inclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N input elements,
++ * so the Nth input element is included.
++ */
++ template<typename _InputIterator, typename _OutputIterator,
++ typename _BinaryOperation>
++ _OutputIterator
++ inclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result, _BinaryOperation __binary_op)
++ {
++ if (__first != __last)
++ {
++ auto __init = *__first;
++ *__result++ = __init;
++ ++__first;
++ if (__first != __last)
++ __result = std::inclusive_scan(__first, __last, __result,
++ __binary_op, std::move(__init));
++ }
++ return __result;
++ }
+
-+class SharedPtrUseCountWorker(gdb.xmethod.XMethodWorker):
-+ "Implements std::shared_ptr<T>::use_count()"
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements, using `std::plus<>` for summation.
++ *
++ * This function generates an "inclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N input elements,
++ * so the Nth input element is included.
++ */
++ template<typename _InputIterator, typename _OutputIterator>
++ inline _OutputIterator
++ inclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result)
++ { return std::inclusive_scan(__first, __last, __result, plus<>()); }
++
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __init Initial value.
++ * @param __binary_op Function to perform summation.
++ * @param __unary_op Function to transform elements of the input range.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements (and the initial value),
++ * using `__unary_op` to transform the input elements
++ * and using `__binary_op` for summation.
++ *
++ * This function generates an "exclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N-1 input elements,
++ * so the Nth input element is not included.
++ */
++ template<typename _InputIterator, typename _OutputIterator, typename _Tp,
++ typename _BinaryOperation, typename _UnaryOperation>
++ _OutputIterator
++ transform_exclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result, _Tp __init,
++ _BinaryOperation __binary_op,
++ _UnaryOperation __unary_op)
++ {
++ while (__first != __last)
++ {
++ auto __v = __init;
++ __init = __binary_op(__init, __unary_op(*__first));
++ ++__first;
++ *__result++ = std::move(__v);
++ }
++ return __result;
++ }
+
-+ def __init__(self, elem_type):
-+ SharedPtrUseCountWorker.__init__(self, elem_type)
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __binary_op Function to perform summation.
++ * @param __unary_op Function to transform elements of the input range.
++ * @param __init Initial value.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements (and the initial value),
++ * using `__unary_op` to transform the input elements
++ * and using `__binary_op` for summation.
++ *
++ * This function generates an "inclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N input elements,
++ * so the Nth input element is included.
++ */
++ template<typename _InputIterator, typename _OutputIterator,
++ typename _BinaryOperation, typename _UnaryOperation, typename _Tp>
++ _OutputIterator
++ transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result,
++ _BinaryOperation __binary_op,
++ _UnaryOperation __unary_op,
++ _Tp __init)
++ {
++ for (; __first != __last; ++__first)
++ *__result++ = __init = __binary_op(__init, __unary_op(*__first));
++ return __result;
++ }
+
-+ def get_arg_types(self):
-+ return None
++ /** @brief Output the cumulative sum of one range to a second range
++ *
++ * @param __first Start of input range.
++ * @param __last End of input range.
++ * @param __result Start of output range.
++ * @param __binary_op Function to perform summation.
++ * @param __unary_op Function to transform elements of the input range.
++ * @return The end of the output range.
++ *
++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range
++ * to the output range. Each element of the output range contains the
++ * running total of all earlier elements,
++ * using `__unary_op` to transform the input elements
++ * and using `__binary_op` for summation.
++ *
++ * This function generates an "inclusive" scan, meaning the Nth element
++ * of the output range is the sum of the first N input elements,
++ * so the Nth input element is included.
++ */
++ template<typename _InputIterator, typename _OutputIterator,
++ typename _BinaryOperation, typename _UnaryOperation>
++ _OutputIterator
++ transform_inclusive_scan(_InputIterator __first, _InputIterator __last,
++ _OutputIterator __result,
++ _BinaryOperation __binary_op,
++ _UnaryOperation __unary_op)
++ {
++ if (__first != __last)
++ {
++ auto __init = __unary_op(*__first);
++ *__result++ = __init;
++ ++__first;
++ if (__first != __last)
++ __result = std::transform_inclusive_scan(__first, __last, __result,
++ __binary_op, __unary_op,
++ std::move(__init));
++ }
++ return __result;
++ }
+
-+ def get_result_type(self, obj):
-+ return gdb.lookup_type('long')
++ // @} group numeric_ops
+
-+ def __call__(self, obj):
-+ refcounts = ['_M_refcount']['_M_pi']
-+ return refcounts['_M_use_count'] if refcounts else 0
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace std
+
-+class SharedPtrUniqueWorker(SharedPtrUseCountWorker):
-+ "Implements std::shared_ptr<T>::unique()"
+ // Parallel STL algorithms
+ # if __PSTL_EXECUTION_POLICIES_DEFINED
+ // If <execution> has already been included, pull in implementations
+Index: libstdc++-v3/include/std/type_traits
+===================================================================
+--- a/src/libstdc++-v3/include/std/type_traits (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/std/type_traits (.../branches/gcc-9-branch)
+@@ -2662,14 +2662,49 @@
+
+ // __is_invocable (std::is_invocable for C++11)
+
+- template<typename _Result, typename _Ret, typename = void>
++ // The primary template is used for invalid INVOKE expressions.
++ template<typename _Result, typename _Ret,
++ bool = is_void<_Ret>::value, typename = void>
+ struct __is_invocable_impl : false_type { };
+
++ // Used for valid INVOKE and INVOKE<void> expressions.
+ template<typename _Result, typename _Ret>
+- struct __is_invocable_impl<_Result, _Ret, __void_t<typename _Result::type>>
+- : __or_<is_void<_Ret>, is_convertible<typename _Result::type, _Ret>>::type
++ struct __is_invocable_impl<_Result, _Ret,
++ /* is_void<_Ret> = */ true,
++ __void_t<typename _Result::type>>
++ : true_type
+ { };
+
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wctor-dtor-privacy"
++ // Used for INVOKE<R> expressions to check the implicit conversion to R.
++ template<typename _Result, typename _Ret>
++ struct __is_invocable_impl<_Result, _Ret,
++ /* is_void<_Ret> = */ false,
++ __void_t<typename _Result::type>>
++ {
++ private:
++ // The type of the INVOKE expression.
++ // Unlike declval, this doesn't add_rvalue_reference.
++ static typename _Result::type _S_get();
+
-+ def __init__(self, elem_type):
-+ SharedPtrUseCountWorker.__init__(self, elem_type)
++ template<typename _Tp>
++ static void _S_conv(_Tp);
+
-+ def get_result_type(self, obj):
-+ return gdb.lookup_type('bool')
++ // This overload is viable if INVOKE(f, args...) can convert to _Tp.
++ template<typename _Tp, typename = decltype(_S_conv<_Tp>(_S_get()))>
++ static true_type
++ _S_test(int);
+
-+ def __call__(self, obj):
-+ return SharedPtrUseCountWorker.__call__(self, obj) == 1
++ template<typename _Tp>
++ static false_type
++ _S_test(...);
+
-+class SharedPtrMethodsMatcher(gdb.xmethod.XMethodMatcher):
-+ def __init__(self):
-+ gdb.xmethod.XMethodMatcher.__init__(self,
-+ matcher_name_prefix + 'shared_ptr')
-+ self._method_dict = {
-+ 'get': LibStdCxxXMethod('get', SharedPtrGetWorker),
-+ 'operator->': LibStdCxxXMethod('operator->', SharedPtrGetWorker),
-+ 'operator*': LibStdCxxXMethod('operator*', SharedPtrDerefWorker),
-+ 'operator[]': LibStdCxxXMethod('operator[]', SharedPtrSubscriptWorker),
-+ 'use_count': LibStdCxxXMethod('use_count', SharedPtrUseCountWorker),
-+ 'unique': LibStdCxxXMethod('unique', SharedPtrUniqueWorker),
-+ }
-+ self.methods = [self._method_dict[m] for m in self._method_dict]
-+
-+ def match(self, class_type, method_name):
-+ if not re.match('^std::shared_ptr<.*>$', class_type.tag):
-+ return None
-+ method = self._method_dict.get(method_name)
-+ if method is None or not method.enabled:
-+ return None
- return method.worker_class(class_type.template_argument(0))
-
- def register_libstdcxx_xmethods(locus):
-@@ -629,3 +771,4 @@
- gdb.xmethod.register_xmethod_matcher(
- locus, AssociativeContainerMethodsMatcher('unordered_multimap'))
- gdb.xmethod.register_xmethod_matcher(locus, UniquePtrMethodsMatcher())
-+ gdb.xmethod.register_xmethod_matcher(locus, SharedPtrMethodsMatcher())
-Index: libstdc++-v3/python/libstdcxx/v6/printers.py
-===================================================================
---- a/src/libstdc++-v3/python/libstdcxx/v6/printers.py (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/python/libstdcxx/v6/printers.py (.../branches/gcc-6-branch)
-@@ -127,8 +127,8 @@
-
- def to_string (self):
- v = self.val['_M_t']['_M_head_impl']
-- return ('std::unique_ptr<%s> containing %s' % (str(v.type.target()),
-- str(v)))
-+ return 'std::unique_ptr<%s> containing %s' % (str(v.type.target()),
-+ str(v))
-
- def get_value_from_list_node(node):
- """Returns the value held in an _List_node<_Val>"""
-@@ -191,10 +191,12 @@
- self.typename = typename
-
- def to_string(self):
-+ if not self.val['_M_node']:
-+ return 'non-dereferenceable iterator for std::list'
- nodetype = find_type(self.val.type, '_Node')
- nodetype = nodetype.strip_typedefs().pointer()
- node = self.val['_M_node'].cast(nodetype).dereference()
-- return get_value_from_list_node(node)
-+ return str(get_value_from_list_node(node))
-
- class StdSlistPrinter:
- "Print a __gnu_cxx::slist"
-@@ -237,9 +239,11 @@
- self.val = val
-
- def to_string(self):
-+ if not self.val['_M_node']:
-+ return 'non-dereferenceable iterator for __gnu_cxx::slist'
- nodetype = find_type(self.val.type, '_Node')
- nodetype = nodetype.strip_typedefs().pointer()
-- return self.val['_M_node'].cast(nodetype).dereference()['_M_data']
-+ return str(self.val['_M_node'].cast(nodetype).dereference()['_M_data'])
-
- class StdVectorPrinter:
- "Print a std::vector"
-@@ -324,7 +328,9 @@
- self.val = val
-
- def to_string(self):
-- return self.val['_M_current'].dereference()
-+ if not self.val['_M_current']:
-+ return 'non-dereferenceable iterator for std::vector'
-+ return str(self.val['_M_current'].dereference())
-
- class StdTuplePrinter:
- "Print a std::tuple"
-@@ -419,6 +425,11 @@
- return None
-
- class RbtreeIterator(Iterator):
-+ """
-+ Turn an RB-tree-based container (std::map, std::set etc.) into
-+ a Python iterable object.
-+ """
-+
- def __init__(self, rbtree):
- self.size = rbtree['_M_t']['_M_impl']['_M_node_count']
- self.node = rbtree['_M_t']['_M_impl']['_M_header']['_M_left']
-@@ -472,7 +483,7 @@
- # std::map::iterator), and has nothing to do with the RbtreeIterator
- # class above.
- class StdRbtreeIteratorPrinter:
-- "Print std::map::iterator"
-+ "Print std::map::iterator, std::set::iterator, etc."
-
- def __init__ (self, typename, val):
- self.val = val
-@@ -481,8 +492,10 @@
- self.link_type = nodetype.strip_typedefs().pointer()
-
- def to_string (self):
-+ if not self.val['_M_node']:
-+ return 'non-dereferenceable iterator for associative container'
- node = self.val['_M_node'].cast(self.link_type).dereference()
-- return get_value_from_Rb_tree_node(node)
-+ return str(get_value_from_Rb_tree_node(node))
-
- class StdDebugIteratorPrinter:
- "Print a debug enabled version of an iterator"
-@@ -494,7 +507,7 @@
- # and return the wrapped iterator value.
- def to_string (self):
- itype = self.val.type.template_argument(0)
-- return self.val.cast(itype)
-+ return str(self.val.cast(itype))
-
- class StdMapPrinter:
- "Print a std::map or std::multimap"
-@@ -687,7 +700,9 @@
- self.val = val
-
- def to_string(self):
-- return self.val['_M_cur'].dereference()
-+ if not self.val['_M_cur']:
-+ return 'non-dereferenceable iterator for std::deque'
-+ return str(self.val['_M_cur'].dereference())
-
- class StdStringPrinter:
- "Print a std::basic_string of some kind"
-@@ -873,8 +888,8 @@
-
- def to_string(self):
- if self.val['_M_impl']['_M_head']['_M_next'] == 0:
-- return 'empty %s' % (self.typename)
-- return '%s' % (self.typename)
-+ return 'empty %s' % self.typename
-+ return '%s' % self.typename
-
- class SingleObjContainerPrinter(object):
- "Base class for printers of containers of single objects"
-@@ -975,9 +990,10 @@
-
- def to_string (self):
- if self.contained_value is None:
-- return self.typename + " [no contained value]"
-+ return "%s [no contained value]" % self.typename
- if hasattr (self.visualizer, 'children'):
-- return self.typename + " containing " + self.visualizer.to_string ()
-+ return "%s containing %s" % (self.typename,
-+ self.visualizer.to_string())
- return self.typename
-
- class StdExpStringViewPrinter:
-@@ -1133,7 +1149,8 @@
- libstdcxx_printer = None
-
- class TemplateTypePrinter(object):
-- r"""A type printer for class templates.
-+ r"""
-+ A type printer for class templates.
-
- Recognizes type names that match a regular expression.
- Replaces them with a formatted string which can use replacement field
-Index: libstdc++-v3/src/c++11/cxx11-shim_facets.cc
-===================================================================
---- a/src/libstdc++-v3/src/c++11/cxx11-shim_facets.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/src/c++11/cxx11-shim_facets.cc (.../branches/gcc-6-branch)
-@@ -226,8 +226,14 @@
-
- namespace // unnamed
- {
-+ struct __shim_accessor : facet
-+ {
-+ using facet::__shim; // Redeclare protected member as public.
++ public:
++ using type = decltype(_S_test<_Ret>(1));
+ };
-+ using __shim = __shim_accessor::__shim;
-+
- template<typename _CharT>
-- struct numpunct_shim : std::numpunct<_CharT>, facet::__shim
-+ struct numpunct_shim : std::numpunct<_CharT>, __shim
- {
- typedef typename numpunct<_CharT>::__cache_type __cache_type;
++#pragma GCC diagnostic pop
++
+ template<typename _Fn, typename... _ArgTypes>
+ struct __is_invocable
+ : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
+Index: libstdc++-v3/include/std/version
+===================================================================
+--- a/src/libstdc++-v3/include/std/version (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/std/version (.../branches/gcc-9-branch)
+@@ -149,7 +149,7 @@
+
+ #if __cplusplus > 201703L
+ // c++2a
+-#define __cpp_lib_bind_front 201902L
++#define __cpp_lib_bind_front 201907L
+ #define __cpp_lib_bounded_array_traits 201902L
+ #if __cpp_impl_destroying_delete
+ # define __cpp_lib_destroying_delete 201806L
+Index: libstdc++-v3/include/std/functional
+===================================================================
+--- a/src/libstdc++-v3/include/std/functional (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/std/functional (.../branches/gcc-9-branch)
+@@ -837,7 +837,7 @@
+ }
-@@ -251,7 +257,7 @@
- };
+ #if __cplusplus > 201703L
+-#define __cpp_lib_bind_front 201902L
++#define __cpp_lib_bind_front 201907L
- template<typename _CharT>
-- struct collate_shim : std::collate<_CharT>, facet::__shim
-+ struct collate_shim : std::collate<_CharT>, __shim
- {
- typedef basic_string<_CharT> string_type;
+ template<typename _Fd, typename... _BoundArgs>
+ struct _Bind_front
+@@ -923,7 +923,7 @@
-@@ -276,7 +282,7 @@
- };
+ template<typename _Fn, typename... _Args>
+ using _Bind_front_t
+- = _Bind_front<decay_t<_Fn>, unwrap_ref_decay_t<_Args>...>;
++ = _Bind_front<decay_t<_Fn>, decay_t<_Args>...>;
- template<typename _CharT>
-- struct time_get_shim : std::time_get<_CharT>, facet::__shim
-+ struct time_get_shim : std::time_get<_CharT>, __shim
- {
- typedef typename std::time_get<_CharT>::iter_type iter_type;
- typedef typename std::time_get<_CharT>::char_type char_type;
-@@ -330,7 +336,7 @@
- };
-
- template<typename _CharT, bool _Intl>
-- struct moneypunct_shim : std::moneypunct<_CharT, _Intl>, facet::__shim
-+ struct moneypunct_shim : std::moneypunct<_CharT, _Intl>, __shim
- {
- typedef typename moneypunct<_CharT, _Intl>::__cache_type __cache_type;
+ template<typename _Fn, typename... _Args>
+ _Bind_front_t<_Fn, _Args...>
+Index: libstdc++-v3/include/std/complex
+===================================================================
+--- a/src/libstdc++-v3/include/std/complex (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/std/complex (.../branches/gcc-9-branch)
+@@ -1898,41 +1898,59 @@
+ template<typename _Tp>
+ std::complex<_Tp> proj(const std::complex<_Tp>&);
-@@ -357,7 +363,7 @@
- };
++ // Generic implementation of std::proj, does not work for infinities.
+ template<typename _Tp>
+- std::complex<_Tp>
++ inline std::complex<_Tp>
+ __complex_proj(const std::complex<_Tp>& __z)
+- {
+- const _Tp __den = (__z.real() * __z.real()
+- + __z.imag() * __z.imag() + _Tp(1.0));
++ { return __z; }
- template<typename _CharT>
-- struct money_get_shim : std::money_get<_CharT>, facet::__shim
-+ struct money_get_shim : std::money_get<_CharT>, __shim
- {
- typedef typename std::money_get<_CharT>::iter_type iter_type;
- typedef typename std::money_get<_CharT>::char_type char_type;
-@@ -398,7 +404,7 @@
- };
-
- template<typename _CharT>
-- struct money_put_shim : std::money_put<_CharT>, facet::__shim
-+ struct money_put_shim : std::money_put<_CharT>, __shim
- {
- typedef typename std::money_put<_CharT>::iter_type iter_type;
- typedef typename std::money_put<_CharT>::char_type char_type;
-@@ -427,7 +433,7 @@
- };
-
- template<typename _CharT>
-- struct messages_shim : std::messages<_CharT>, facet::__shim
-+ struct messages_shim : std::messages<_CharT>, __shim
- {
- typedef messages_base::catalog catalog;
- typedef basic_string<_CharT> string_type;
-Index: libstdc++-v3/src/c++11/codecvt.cc
+- return std::complex<_Tp>((_Tp(2.0) * __z.real()) / __den,
+- (_Tp(2.0) * __z.imag()) / __den);
+- }
+-
+ #if _GLIBCXX_USE_C99_COMPLEX
+- inline __complex__ float
+- __complex_proj(__complex__ float __z)
+- { return __builtin_cprojf(__z); }
++ inline complex<float>
++ __complex_proj(const complex<float>& __z)
++ { return __builtin_cprojf(__z.__rep()); }
+
+- inline __complex__ double
+- __complex_proj(__complex__ double __z)
+- { return __builtin_cproj(__z); }
++ inline complex<double>
++ __complex_proj(const complex<double>& __z)
++ { return __builtin_cproj(__z.__rep()); }
+
+- inline __complex__ long double
+- __complex_proj(const __complex__ long double& __z)
+- { return __builtin_cprojl(__z); }
++ inline complex<long double>
++ __complex_proj(const complex<long double>& __z)
++ { return __builtin_cprojl(__z.__rep()); }
++#elif defined _GLIBCXX_USE_C99_MATH_TR1
++ inline complex<float>
++ __complex_proj(const complex<float>& __z)
++ {
++ if (__builtin_isinf(__z.real()) || __builtin_isinf(__z.imag()))
++ return complex<float>(__builtin_inff(),
++ __builtin_copysignf(0.0f, __z.imag()));
++ return __z;
++ }
+
++ inline complex<double>
++ __complex_proj(const complex<double>& __z)
++ {
++ if (__builtin_isinf(__z.real()) || __builtin_isinf(__z.imag()))
++ return complex<double>(__builtin_inf(),
++ __builtin_copysign(0.0, __z.imag()));
++ return __z;
++ }
++
++ inline complex<long double>
++ __complex_proj(const complex<long double>& __z)
++ {
++ if (__builtin_isinf(__z.real()) || __builtin_isinf(__z.imag()))
++ return complex<long double>(__builtin_infl(),
++ __builtin_copysignl(0.0l, __z.imag()));
++ return __z;
++ }
++#endif
++
+ template<typename _Tp>
+ inline std::complex<_Tp>
+ proj(const std::complex<_Tp>& __z)
+- { return __complex_proj(__z.__rep()); }
+-#else
+- template<typename _Tp>
+- inline std::complex<_Tp>
+- proj(const std::complex<_Tp>& __z)
+ { return __complex_proj(__z); }
+-#endif
+
++ // Overload for scalars
+ template<typename _Tp>
+ inline std::complex<typename __gnu_cxx::__promote<_Tp>::__type>
+ proj(_Tp __x)
+Index: libstdc++-v3/include/experimental/internet
+===================================================================
+--- a/src/libstdc++-v3/include/experimental/internet (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/experimental/internet (.../branches/gcc-9-branch)
+@@ -50,6 +50,9 @@
+ #ifdef _GLIBCXX_HAVE_ARPA_INET_H
+ # include <arpa/inet.h> // inet_ntop
+ #endif
++#ifdef _GLIBCXX_HAVE_NETINET_IN_H
++# include <netinet/in.h> // IPPROTO_IP
++#endif
+ #ifdef _GLIBCXX_HAVE_NETINET_TCP_H
+ # include <netinet/tcp.h> // TCP_NODELAY
+ #endif
+@@ -539,7 +542,7 @@
+ const auto& __aa = __a._M_bytes;
+ const auto& __bb = __b._M_bytes;
+ int __i = 0;
+- for (; __aa[__i] == __bb[__i] && __i < 16; ++__i)
++ for (; __i < 16 && __aa[__i] == __bb[__i]; ++__i)
+ ;
+ return __i == 16 ? __a.scope_id() == __b.scope_id() : false;
+ }
+@@ -554,7 +557,7 @@
+ const auto& __aa = __a._M_bytes;
+ const auto& __bb = __b._M_bytes;
+ int __i = 0;
+- for (; __aa[__i] == __bb[__i] && __i < 16; ++__i)
++ for (; __i < 16 && __aa[__i] == __bb[__i]; ++__i)
+ ;
+ return __i == 16 ? __a.scope_id() < __b.scope_id() : __aa[__i] < __bb[__i];
+ }
+Index: libstdc++-v3/include/bits/stl_algobase.h
===================================================================
---- a/src/libstdc++-v3/src/c++11/codecvt.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/src/c++11/codecvt.cc (.../branches/gcc-6-branch)
-@@ -1,6 +1,6 @@
- // Locale support (codecvt) -*- C++ -*-
+--- a/src/libstdc++-v3/include/bits/stl_algobase.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_algobase.h (.../branches/gcc-9-branch)
+@@ -301,7 +301,7 @@
+ // (2) If we're using random access iterators, then write the loop as
+ // a for loop with an explicit count.
--// Copyright (C) 2015-2016 Free Software Foundation, Inc.
-+// Copyright (C) 2015-2017 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -24,7 +24,7 @@
+- template<bool, bool, typename>
++ template<bool _IsMove, bool _IsSimple, typename _Category>
+ struct __copy_move
+ {
+ template<typename _II, typename _OI>
+Index: libstdc++-v3/include/bits/stl_numeric.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_numeric.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_numeric.h (.../branches/gcc-9-branch)
+@@ -60,12 +60,16 @@
+ #include <debug/debug.h>
+ #include <bits/move.h> // For _GLIBCXX_MOVE
- #include <codecvt>
- #include <cstring> // std::memcpy, std::memcmp
--#include <bits/stl_algobase.h> // std::max
-+#include <bits/stl_algobase.h> // std::min
+-#if __cplusplus >= 201103L
- #ifdef _GLIBCXX_USE_C99_STDINT_TR1
namespace std _GLIBCXX_VISIBILITY(default)
-@@ -31,6 +31,20 @@
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
-+ // The standard doesn't define these operators, which is annoying.
-+ static underlying_type<codecvt_mode>::type
-+ to_integer(codecvt_mode m)
-+ { return static_cast<underlying_type<codecvt_mode>::type>(m); }
++ /** @defgroup numeric_ops Generalized Numeric operations
++ * @ingroup algorithms
++ */
+
-+ static codecvt_mode& operator&=(codecvt_mode& m, codecvt_mode n)
-+ { return m = codecvt_mode(to_integer(m) & to_integer(n)); }
-+
-+ static codecvt_mode& operator|=(codecvt_mode& m, codecvt_mode n)
-+ { return m = codecvt_mode(to_integer(m) | to_integer(n)); }
-+
-+ static codecvt_mode operator~(codecvt_mode m)
-+ { return codecvt_mode(~to_integer(m)); }
-+
- namespace
- {
- // Largest code point that fits in a single UTF-16 code unit.
-@@ -43,35 +57,142 @@
- const char32_t incomplete_mb_character = char32_t(-2);
- const char32_t invalid_mb_sequence = char32_t(-1);
-
-- template<typename Elem>
-+ // Utility type for reading and writing code units of type Elem from
-+ // a range defined by a pair of pointers.
-+ template<typename Elem, bool Aligned = true>
- struct range
- {
- Elem* next;
- Elem* end;
++#if __cplusplus >= 201103L
+ /**
+ * @brief Create a range of sequentially increasing values.
+ *
+@@ -76,6 +80,7 @@
+ * @param __last End of range.
+ * @param __value Starting value.
+ * @return Nothing.
++ * @ingroup numeric_ops
+ */
+ template<typename _ForwardIterator, typename _Tp>
+ void
+@@ -94,14 +99,10 @@
+ ++__value;
+ }
+ }
++#endif
-+ // Write a code unit.
-+ range& operator=(Elem e)
-+ {
-+ *next++ = e;
-+ return *this;
-+ }
-+
-+ // Read the next code unit.
- Elem operator*() const { return *next; }
+ _GLIBCXX_END_NAMESPACE_VERSION
+-} // namespace std
-- range& operator++() { ++next; return *this; }
-+ // Read the Nth code unit.
-+ Elem operator[](size_t n) const { return next[n]; }
+-#endif
+-
+-namespace std _GLIBCXX_VISIBILITY(default)
+-{
+ _GLIBCXX_BEGIN_NAMESPACE_ALGO
-+ // Move to the next code unit.
-+ range& operator++()
-+ {
-+ ++next;
-+ return *this;
-+ }
-+
-+ // Move to the Nth code unit.
-+ range& operator+=(size_t n)
-+ {
-+ next += n;
-+ return *this;
-+ }
-+
-+ // The number of code units remaining.
- size_t size() const { return end - next; }
-+
-+ // The number of bytes remaining.
-+ size_t nbytes() const { return (const char*)end - (const char*)next; }
- };
+ #if __cplusplus > 201703L
+@@ -112,6 +113,9 @@
+ # define _GLIBCXX_MOVE_IF_20(_E) _E
+ #endif
-+ // This specialization is used when accessing char16_t values through
-+ // pointers to char, which might not be correctly aligned for char16_t.
-+ template<typename Elem>
-+ struct range<Elem, false>
-+ {
-+ using value_type = typename remove_const<Elem>::type;
-+
-+ using char_pointer = typename
-+ conditional<is_const<Elem>::value, const char*, char*>::type;
-+
-+ char_pointer next;
-+ char_pointer end;
-+
-+ // Write a code unit.
-+ range& operator=(Elem e)
-+ {
-+ memcpy(next, &e, sizeof(Elem));
-+ ++*this;
-+ return *this;
-+ }
-+
-+ // Read the next code unit.
-+ Elem operator*() const
-+ {
-+ value_type e;
-+ memcpy(&e, next, sizeof(Elem));
-+ return e;
-+ }
-+
-+ // Read the Nth code unit.
-+ Elem operator[](size_t n) const
-+ {
-+ value_type e;
-+ memcpy(&e, next + n * sizeof(Elem), sizeof(Elem));
-+ return e;
-+ }
-+
-+ // Move to the next code unit.
-+ range& operator++()
-+ {
-+ next += sizeof(Elem);
-+ return *this;
-+ }
-+
-+ // Move to the Nth code unit.
-+ range& operator+=(size_t n)
-+ {
-+ next += n * sizeof(Elem);
-+ return *this;
-+ }
-+
-+ // The number of code units remaining.
-+ size_t size() const { return nbytes() / sizeof(Elem); }
-+
-+ // The number of bytes remaining.
-+ size_t nbytes() const { return end - next; }
-+ };
-+
- // Multibyte sequences can have "header" consisting of Byte Order Mark
- const unsigned char utf8_bom[3] = { 0xEF, 0xBB, 0xBF };
-- const unsigned char utf16_bom[4] = { 0xFE, 0xFF };
-- const unsigned char utf16le_bom[4] = { 0xFF, 0xFE };
-+ const unsigned char utf16_bom[2] = { 0xFE, 0xFF };
-+ const unsigned char utf16le_bom[2] = { 0xFF, 0xFE };
-
-- template<size_t N>
-- inline bool
-- write_bom(range<char>& to, const unsigned char (&bom)[N])
-+ // Write a BOM (space permitting).
-+ template<typename C, bool A, size_t N>
-+ bool
-+ write_bom(range<C, A>& to, const unsigned char (&bom)[N])
- {
-- if (to.size() < N)
-+ static_assert( (N / sizeof(C)) != 0, "" );
-+ static_assert( (N % sizeof(C)) == 0, "" );
++ /// @addtogroup numeric_ops
++ /// @{
+
-+ if (to.nbytes() < N)
- return false;
- memcpy(to.next, bom, N);
-- to.next += N;
-+ to += (N / sizeof(C));
- return true;
+ /**
+ * @brief Accumulate values in a range.
+ *
+@@ -139,8 +143,8 @@
+ /**
+ * @brief Accumulate values in a range with operation.
+ *
+- * Accumulates the values in the range [first,last) using the function
+- * object @p __binary_op. The initial value is @p __init. The values are
++ * Accumulates the values in the range `[first,last)` using the function
++ * object `__binary_op`. The initial value is `__init`. The values are
+ * processed in order.
+ *
+ * @param __first Start of range.
+@@ -390,6 +394,8 @@
+ return ++__result;
}
-+ // Try to read a BOM.
-+ template<typename C, bool A, size_t N>
-+ bool
-+ read_bom(range<C, A>& from, const unsigned char (&bom)[N])
-+ {
-+ static_assert( (N / sizeof(C)) != 0, "" );
-+ static_assert( (N % sizeof(C)) == 0, "" );
++ // @} group numeric_ops
+
-+ if (from.nbytes() >= N && !memcmp(from.next, bom, N))
-+ {
-+ from += (N / sizeof(C));
-+ return true;
-+ }
-+ return false;
-+ }
-+
- // If generate_header is set in mode write out UTF-8 BOM.
- bool
- write_utf8_bom(range<char>& to, codecvt_mode mode)
-@@ -83,32 +204,20 @@
-
- // If generate_header is set in mode write out the UTF-16 BOM indicated
- // by whether little_endian is set in mode.
-+ template<bool Aligned>
- bool
-- write_utf16_bom(range<char16_t>& to, codecvt_mode mode)
-+ write_utf16_bom(range<char16_t, Aligned>& to, codecvt_mode mode)
- {
- if (mode & generate_header)
- {
-- if (!to.size())
-- return false;
-- auto* bom = (mode & little_endian) ? utf16le_bom : utf16_bom;
-- std::memcpy(to.next, bom, 2);
-- ++to.next;
-+ if (mode & little_endian)
-+ return write_bom(to, utf16le_bom);
-+ else
-+ return write_bom(to, utf16_bom);
- }
- return true;
- }
+ #undef _GLIBCXX_MOVE_IF_20
-- template<size_t N>
-- inline bool
-- read_bom(range<const char>& from, const unsigned char (&bom)[N])
-- {
-- if (from.size() >= N && !memcmp(from.next, bom, N))
-- {
-- from.next += N;
-- return true;
-- }
-- return false;
-- }
--
- // If consume_header is set in mode update from.next to after any BOM.
- void
- read_utf8_bom(range<const char>& from, codecvt_mode mode)
-@@ -117,22 +226,21 @@
- read_bom(from, utf8_bom);
- }
+ _GLIBCXX_END_NAMESPACE_ALGO
+Index: libstdc++-v3/include/bits/stl_uninitialized.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../branches/gcc-9-branch)
+@@ -122,9 +122,15 @@
+ #if __cplusplus < 201103L
+ const bool __assignable = true;
+ #else
+- // trivial types can have deleted assignment
++ // Trivial types can have deleted copy constructor, but the std::copy
++ // optimization that uses memmove would happily "copy" them anyway.
++ static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
++ "result type must be constructible from value type of input range");
++
+ typedef typename iterator_traits<_InputIterator>::reference _RefType1;
+ typedef typename iterator_traits<_ForwardIterator>::reference _RefType2;
++ // Trivial types can have deleted assignment, so using std::copy
++ // would be ill-formed. Require assignability before using std::copy:
+ const bool __assignable = is_assignable<_RefType2, _RefType1>::value;
+ #endif
-- // If consume_header is set in mode update from.next to after any BOM.
-- // Return little_endian iff the UTF-16LE BOM was present.
-- codecvt_mode
-- read_utf16_bom(range<const char16_t>& from, codecvt_mode mode)
-+ // If consume_header is not set in mode, no effects.
-+ // Otherwise, if *from.next is a UTF-16 BOM increment from.next and then:
-+ // - if the UTF-16BE BOM was found unset little_endian in mode, or
-+ // - if the UTF-16LE BOM was found set little_endian in mode.
-+ template<bool Aligned>
-+ void
-+ read_utf16_bom(range<const char16_t, Aligned>& from, codecvt_mode& mode)
- {
-- if (mode & consume_header && from.size())
-+ if (mode & consume_header)
- {
-- if (*from.next == 0xFEFF)
-- ++from.next;
-- else if (*from.next == 0xFFFE)
-- {
-- ++from.next;
-- return little_endian;
-- }
-+ if (read_bom(from, utf16_bom))
-+ mode &= ~little_endian;
-+ else if (read_bom(from, utf16le_bom))
-+ mode |= little_endian;
- }
-- return {};
- }
+@@ -186,7 +192,13 @@
+ #if __cplusplus < 201103L
+ const bool __assignable = true;
+ #else
+- // trivial types can have deleted assignment
++ // Trivial types can have deleted copy constructor, but the std::fill
++ // optimization that uses memmove would happily "copy" them anyway.
++ static_assert(is_constructible<_ValueType, const _Tp&>::value,
++ "result type must be constructible from input type");
++
++ // Trivial types can have deleted assignment, so using std::fill
++ // would be ill-formed. Require assignability before using std::fill:
+ const bool __assignable = is_copy_assignable<_ValueType>::value;
+ #endif
- // Read a codepoint from a UTF-8 multibyte sequence.
-@@ -144,11 +252,11 @@
- const size_t avail = from.size();
- if (avail == 0)
- return incomplete_mb_character;
-- unsigned char c1 = from.next[0];
-+ unsigned char c1 = from[0];
- // https://en.wikipedia.org/wiki/UTF-8#Sample_code
- if (c1 < 0x80)
- {
-- ++from.next;
-+ ++from;
- return c1;
- }
- else if (c1 < 0xC2) // continuation or overlong 2-byte sequence
-@@ -157,12 +265,12 @@
- {
- if (avail < 2)
- return incomplete_mb_character;
-- unsigned char c2 = from.next[1];
-+ unsigned char c2 = from[1];
- if ((c2 & 0xC0) != 0x80)
- return invalid_mb_sequence;
- char32_t c = (c1 << 6) + c2 - 0x3080;
- if (c <= maxcode)
-- from.next += 2;
-+ from += 2;
- return c;
- }
- else if (c1 < 0xF0) // 3-byte sequence
-@@ -169,17 +277,17 @@
- {
- if (avail < 3)
- return incomplete_mb_character;
-- unsigned char c2 = from.next[1];
-+ unsigned char c2 = from[1];
- if ((c2 & 0xC0) != 0x80)
- return invalid_mb_sequence;
- if (c1 == 0xE0 && c2 < 0xA0) // overlong
- return invalid_mb_sequence;
-- unsigned char c3 = from.next[2];
-+ unsigned char c3 = from[2];
- if ((c3 & 0xC0) != 0x80)
- return invalid_mb_sequence;
- char32_t c = (c1 << 12) + (c2 << 6) + c3 - 0xE2080;
- if (c <= maxcode)
-- from.next += 3;
-+ from += 3;
- return c;
- }
- else if (c1 < 0xF5) // 4-byte sequence
-@@ -186,7 +294,7 @@
- {
- if (avail < 4)
- return incomplete_mb_character;
-- unsigned char c2 = from.next[1];
-+ unsigned char c2 = from[1];
- if ((c2 & 0xC0) != 0x80)
- return invalid_mb_sequence;
- if (c1 == 0xF0 && c2 < 0x90) // overlong
-@@ -193,15 +301,15 @@
- return invalid_mb_sequence;
- if (c1 == 0xF4 && c2 >= 0x90) // > U+10FFFF
- return invalid_mb_sequence;
-- unsigned char c3 = from.next[2];
-+ unsigned char c3 = from[2];
- if ((c3 & 0xC0) != 0x80)
- return invalid_mb_sequence;
-- unsigned char c4 = from.next[3];
-+ unsigned char c4 = from[3];
- if ((c4 & 0xC0) != 0x80)
- return invalid_mb_sequence;
- char32_t c = (c1 << 18) + (c2 << 12) + (c3 << 6) + c4 - 0x3C82080;
- if (c <= maxcode)
-- from.next += 4;
-+ from += 4;
- return c;
+@@ -248,7 +260,13 @@
+ #if __cplusplus < 201103L
+ const bool __assignable = true;
+ #else
+- // trivial types can have deleted assignment
++ // Trivial types can have deleted copy constructor, but the std::fill
++ // optimization that uses memmove would happily "copy" them anyway.
++ static_assert(is_constructible<_ValueType, const _Tp&>::value,
++ "result type must be constructible from input type");
++
++ // Trivial types can have deleted assignment, so using std::fill
++ // would be ill-formed. Require assignability before using std::fill:
+ const bool __assignable = is_copy_assignable<_ValueType>::value;
+ #endif
+ return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>::
+Index: libstdc++-v3/include/bits/stl_algo.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/stl_algo.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/stl_algo.h (.../branches/gcc-9-branch)
+@@ -3877,7 +3877,44 @@
+ return __f; // N.B. [alg.foreach] says std::move(f) but it's redundant.
}
- else // > U+10FFFF
-@@ -215,31 +323,31 @@
- {
- if (to.size() < 1)
- return false;
-- *to.next++ = code_point;
-+ to = code_point;
- }
- else if (code_point <= 0x7FF)
- {
- if (to.size() < 2)
- return false;
-- *to.next++ = (code_point >> 6) + 0xC0;
-- *to.next++ = (code_point & 0x3F) + 0x80;
-+ to = (code_point >> 6) + 0xC0;
-+ to = (code_point & 0x3F) + 0x80;
- }
- else if (code_point <= 0xFFFF)
- {
- if (to.size() < 3)
- return false;
-- *to.next++ = (code_point >> 12) + 0xE0;
-- *to.next++ = ((code_point >> 6) & 0x3F) + 0x80;
-- *to.next++ = (code_point & 0x3F) + 0x80;
-+ to = (code_point >> 12) + 0xE0;
-+ to = ((code_point >> 6) & 0x3F) + 0x80;
-+ to = (code_point & 0x3F) + 0x80;
- }
- else if (code_point <= 0x10FFFF)
- {
- if (to.size() < 4)
- return false;
-- *to.next++ = (code_point >> 18) + 0xF0;
-- *to.next++ = ((code_point >> 12) & 0x3F) + 0x80;
-- *to.next++ = ((code_point >> 6) & 0x3F) + 0x80;
-- *to.next++ = (code_point & 0x3F) + 0x80;
-+ to = (code_point >> 18) + 0xF0;
-+ to = ((code_point >> 12) & 0x3F) + 0x80;
-+ to = ((code_point >> 6) & 0x3F) + 0x80;
-+ to = (code_point & 0x3F) + 0x80;
- }
- else
- return false;
-@@ -280,47 +388,47 @@
- // The sequence's endianness is indicated by (mode & little_endian).
- // Updates from.next if the codepoint is not greater than maxcode.
- // Returns invalid_mb_sequence, incomplete_mb_character or the code point.
-- char32_t
-- read_utf16_code_point(range<const char16_t>& from, unsigned long maxcode,
-- codecvt_mode mode)
-- {
-- const size_t avail = from.size();
-- if (avail == 0)
-- return incomplete_mb_character;
-- int inc = 1;
-- char32_t c = adjust_byte_order(from.next[0], mode);
-- if (is_high_surrogate(c))
-- {
-- if (avail < 2)
-- return incomplete_mb_character;
-- const char16_t c2 = adjust_byte_order(from.next[1], mode);
-- if (is_low_surrogate(c2))
-- {
-- c = surrogate_pair_to_code_point(c, c2);
-- inc = 2;
-- }
-- else
-- return invalid_mb_sequence;
-- }
-- else if (is_low_surrogate(c))
-- return invalid_mb_sequence;
-- if (c <= maxcode)
-- from.next += inc;
-- return c;
-- }
-+ template<bool Aligned>
-+ char32_t
-+ read_utf16_code_point(range<const char16_t, Aligned>& from,
-+ unsigned long maxcode, codecvt_mode mode)
+
++#if __cplusplus >= 201703L
+ /**
++ * @brief Apply a function to every element of a sequence.
++ * @ingroup non_mutating_algorithms
++ * @param __first An input iterator.
++ * @param __n A value convertible to an integer.
++ * @param __f A unary function object.
++ * @return `__first+__n`
++ *
++ * Applies the function object `__f` to each element in the range
++ * `[first, first+n)`. `__f` must not modify the order of the sequence.
++ * If `__f` has a return value it is ignored.
++ */
++ template<typename _InputIterator, typename _Size, typename _Function>
++ _InputIterator
++ for_each_n(_InputIterator __first, _Size __n, _Function __f)
+ {
-+ const size_t avail = from.size();
-+ if (avail == 0)
-+ return incomplete_mb_character;
-+ int inc = 1;
-+ char32_t c = adjust_byte_order(from[0], mode);
-+ if (is_high_surrogate(c))
++ typename iterator_traits<_InputIterator>::difference_type __n2 = __n;
++ using _Cat = typename iterator_traits<_InputIterator>::iterator_category;
++ if constexpr (is_base_of_v<random_access_iterator_tag, _Cat>)
+ {
-+ if (avail < 2)
-+ return incomplete_mb_character;
-+ const char16_t c2 = adjust_byte_order(from[1], mode);
-+ if (is_low_surrogate(c2))
++ auto __last = __first + __n2;
++ std::for_each(__first, __last, std::move(__f));
++ return __last;
++ }
++ else
++ {
++ while (__n2-->0)
+ {
-+ c = surrogate_pair_to_code_point(c, c2);
-+ inc = 2;
++ __f(*__first);
++ ++__first;
+ }
-+ else
-+ return invalid_mb_sequence;
++ return __first;
+ }
-+ else if (is_low_surrogate(c))
-+ return invalid_mb_sequence;
-+ if (c <= maxcode)
-+ from += inc;
-+ return c;
+ }
++#endif // C++17
++
++ /**
+ * @brief Find the first occurrence of a value in a sequence.
+ * @ingroup non_mutating_algorithms
+ * @param __first An input iterator.
+Index: libstdc++-v3/include/bits/algorithmfwd.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/algorithmfwd.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/algorithmfwd.h (.../branches/gcc-9-branch)
+@@ -154,7 +154,7 @@
+ */
-- template<typename C>
-+ template<typename C, bool A>
- bool
-- write_utf16_code_point(range<C>& to, char32_t codepoint, codecvt_mode mode)
-+ write_utf16_code_point(range<C, A>& to, char32_t codepoint, codecvt_mode mode)
- {
- static_assert(sizeof(C) >= 2, "a code unit must be at least 16-bit");
-
-- if (codepoint < max_single_utf16_unit)
-+ if (codepoint <= max_single_utf16_unit)
- {
- if (to.size() > 0)
- {
-- *to.next = adjust_byte_order(codepoint, mode);
-- ++to.next;
-+ to = adjust_byte_order(codepoint, mode);
- return true;
- }
- }
-@@ -330,9 +438,8 @@
- const char32_t LEAD_OFFSET = 0xD800 - (0x10000 >> 10);
- char16_t lead = LEAD_OFFSET + (codepoint >> 10);
- char16_t trail = 0xDC00 + (codepoint & 0x3FF);
-- to.next[0] = adjust_byte_order(lead, mode);
-- to.next[1] = adjust_byte_order(trail, mode);
-- to.next += 2;
-+ to = adjust_byte_order(lead, mode);
-+ to = adjust_byte_order(trail, mode);
- return true;
- }
- return false;
-@@ -351,7 +458,7 @@
- return codecvt_base::partial;
- if (codepoint > maxcode)
- return codecvt_base::error;
-- *to.next++ = codepoint;
-+ to = codepoint;
- }
- return from.size() ? codecvt_base::partial : codecvt_base::ok;
- }
-@@ -365,12 +472,12 @@
- return codecvt_base::partial;
- while (from.size())
- {
-- const char32_t c = from.next[0];
-+ const char32_t c = from[0];
- if (c > maxcode)
- return codecvt_base::error;
- if (!write_utf8_code_point(to, c))
- return codecvt_base::partial;
-- ++from.next;
-+ ++from;
+ /**
+- * @defgroup set_algorithms Set Operation
++ * @defgroup set_algorithms Set Operations
+ * @ingroup sorting_algorithms
+ *
+ * These algorithms are common set operations performed on sequences
+Index: libstdc++-v3/include/bits/std_function.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/std_function.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/std_function.h (.../branches/gcc-9-branch)
+@@ -359,10 +359,6 @@
}
- return codecvt_base::ok;
- }
-@@ -377,11 +484,10 @@
+ };
- // utf16 -> ucs4
- codecvt_base::result
-- ucs4_in(range<const char16_t>& from, range<char32_t>& to,
-+ ucs4_in(range<const char16_t, false>& from, range<char32_t>& to,
- unsigned long maxcode = max_code_point, codecvt_mode mode = {})
- {
-- if (read_utf16_bom(from, mode) == little_endian)
-- mode = codecvt_mode(mode & little_endian);
-+ read_utf16_bom(from, mode);
- while (from.size() && to.size())
- {
- const char32_t codepoint = read_utf16_code_point(from, maxcode, mode);
-@@ -389,7 +495,7 @@
- return codecvt_base::partial;
- if (codepoint > maxcode)
- return codecvt_base::error;
-- *to.next++ = codepoint;
-+ to = codepoint;
- }
- return from.size() ? codecvt_base::partial : codecvt_base::ok;
- }
-@@ -396,7 +502,7 @@
+- template<typename _From, typename _To>
+- using __check_func_return_type
+- = __or_<is_void<_To>, is_same<_From, _To>, is_convertible<_From, _To>>;
+-
+ /**
+ * @brief Primary class template for std::function.
+ * @ingroup functors
+@@ -375,8 +371,10 @@
+ private _Function_base
+ {
+ template<typename _Func,
+- typename _Res2 = typename result_of<_Func&(_ArgTypes...)>::type>
+- struct _Callable : __check_func_return_type<_Res2, _Res> { };
++ typename _Res2 = __invoke_result<_Func&, _ArgTypes...>>
++ struct _Callable
++ : __is_invocable_impl<_Res2, _Res>::type
++ { };
+
+ // Used so the return type convertibility checks aren't done when
+ // performing overload resolution for copy construction/assignment.
+Index: libstdc++-v3/include/bits/memoryfwd.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/memoryfwd.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/bits/memoryfwd.h (.../branches/gcc-9-branch)
+@@ -66,9 +66,11 @@
+ template<>
+ class allocator<void>;
- // ucs4 -> utf16
- codecvt_base::result
-- ucs4_out(range<const char32_t>& from, range<char16_t>& to,
-+ ucs4_out(range<const char32_t>& from, range<char16_t, false>& to,
- unsigned long maxcode = max_code_point, codecvt_mode mode = {})
- {
- if (!write_utf16_bom(to, mode))
-@@ -403,34 +509,43 @@
- return codecvt_base::partial;
- while (from.size())
- {
-- const char32_t c = from.next[0];
-+ const char32_t c = from[0];
- if (c > maxcode)
- return codecvt_base::error;
- if (!write_utf16_code_point(to, c, mode))
- return codecvt_base::partial;
-- ++from.next;
-+ ++from;
- }
- return codecvt_base::ok;
- }
++#if __cplusplus >= 201103L
+ /// Declare uses_allocator so it can be specialized in \<queue\> etc.
+ template<typename, typename>
+ struct uses_allocator;
++#endif
-- // utf8 -> utf16
-+ // Flag indicating whether to process UTF-16 or UCS2
-+ enum class surrogates { allowed, disallowed };
-+
-+ // utf8 -> utf16 (or utf8 -> ucs2 if s == surrogates::disallowed)
- template<typename C>
- codecvt_base::result
- utf16_in(range<const char>& from, range<C>& to,
-- unsigned long maxcode = max_code_point, codecvt_mode mode = {})
-+ unsigned long maxcode = max_code_point, codecvt_mode mode = {},
-+ surrogates s = surrogates::allowed)
- {
- read_utf8_bom(from, mode);
- while (from.size() && to.size())
- {
-- const char* const first = from.next;
-+ auto orig = from;
- const char32_t codepoint = read_utf8_code_point(from, maxcode);
- if (codepoint == incomplete_mb_character)
-- return codecvt_base::partial;
-+ {
-+ if (s == surrogates::allowed)
-+ return codecvt_base::partial;
-+ else
-+ return codecvt_base::error; // No surrogates in UCS2
-+ }
- if (codepoint > maxcode)
- return codecvt_base::error;
- if (!write_utf16_code_point(to, codepoint, mode))
- {
-- from.next = first;
-+ from = orig; // rewind to previous position
- return codecvt_base::partial;
- }
- }
-@@ -437,24 +552,28 @@
- return codecvt_base::ok;
- }
+ /// @} group memory
-- // utf16 -> utf8
-+ // utf16 -> utf8 (or ucs2 -> utf8 if s == surrogates::disallowed)
- template<typename C>
- codecvt_base::result
- utf16_out(range<const C>& from, range<char>& to,
-- unsigned long maxcode = max_code_point, codecvt_mode mode = {})
-+ unsigned long maxcode = max_code_point, codecvt_mode mode = {},
-+ surrogates s = surrogates::allowed)
- {
- if (!write_utf8_bom(to, mode))
- return codecvt_base::partial;
- while (from.size())
- {
-- char32_t c = from.next[0];
-+ char32_t c = from[0];
- int inc = 1;
- if (is_high_surrogate(c))
- {
-+ if (s == surrogates::disallowed)
-+ return codecvt_base::error; // No surrogates in UCS-2
-+
- if (from.size() < 2)
- return codecvt_base::ok; // stop converting at this point
-
-- const char32_t c2 = from.next[1];
-+ const char32_t c2 = from[1];
- if (is_low_surrogate(c2))
- {
- c = surrogate_pair_to_code_point(c, c2);
-@@ -469,7 +588,7 @@
- return codecvt_base::error;
- if (!write_utf8_code_point(to, c))
- return codecvt_base::partial;
-- from.next += inc;
-+ from += inc;
- }
- return codecvt_base::ok;
- }
-@@ -492,7 +611,7 @@
- ++count;
- }
- if (count+1 == max) // take one more character if it fits in a single unit
-- read_utf8_code_point(from, std::max(max_single_utf16_unit, maxcode));
-+ read_utf8_code_point(from, std::min(max_single_utf16_unit, maxcode));
- return from.next;
- }
+Index: libstdc++-v3/include/tr2/dynamic_bitset.tcc
+===================================================================
+--- a/src/libstdc++-v3/include/tr2/dynamic_bitset.tcc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/tr2/dynamic_bitset.tcc (.../branches/gcc-9-branch)
+@@ -174,7 +174,7 @@
-@@ -501,7 +620,9 @@
- ucs2_in(range<const char>& from, range<char16_t>& to,
- char32_t maxcode = max_code_point, codecvt_mode mode = {})
- {
-- return utf16_in(from, to, std::max(max_single_utf16_unit, maxcode), mode);
-+ // UCS-2 only supports characters in the BMP, i.e. one UTF-16 code unit:
-+ maxcode = std::min(max_single_utf16_unit, maxcode);
-+ return utf16_in(from, to, maxcode, mode, surrogates::disallowed);
- }
+ // Definitions of non-inline member functions.
+ template<typename _WordT, typename _Alloc>
+- template<typename _CharT, typename _Traits>
++ template<typename _Traits, typename _CharT>
+ void
+ dynamic_bitset<_WordT, _Alloc>::
+ _M_copy_from_ptr(const _CharT* __str, size_t __len,
+Index: libstdc++-v3/include/tr2/dynamic_bitset
+===================================================================
+--- a/src/libstdc++-v3/include/tr2/dynamic_bitset (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/include/tr2/dynamic_bitset (.../branches/gcc-9-branch)
+@@ -34,10 +34,9 @@
+ #include <limits>
+ #include <vector>
+ #include <string>
+-#include <memory> // For std::allocator
+-#include <bits/functexcept.h> // For invalid_argument, out_of_range,
+- // overflow_error
+-#include <iosfwd>
++#include <istream>
++#include <bits/functexcept.h>
++#include <bits/stl_algo.h> // For fill
+ #include <bits/cxxabi_forced.h>
- // ucs2 -> utf8
-@@ -509,12 +630,14 @@
- ucs2_out(range<const char16_t>& from, range<char>& to,
- char32_t maxcode = max_code_point, codecvt_mode mode = {})
- {
-- return utf16_out(from, to, std::max(max_single_utf16_unit, maxcode), mode);
-+ // UCS-2 only supports characters in the BMP, i.e. one UTF-16 code unit:
-+ maxcode = std::min(max_single_utf16_unit, maxcode);
-+ return utf16_out(from, to, maxcode, mode, surrogates::disallowed);
- }
+ namespace std _GLIBCXX_VISIBILITY(default)
+@@ -76,41 +75,48 @@
+ std::vector<block_type, allocator_type> _M_w;
- // ucs2 -> utf16
- codecvt_base::result
-- ucs2_out(range<const char16_t>& from, range<char16_t>& to,
-+ ucs2_out(range<const char16_t>& from, range<char16_t, false>& to,
- char32_t maxcode = max_code_point, codecvt_mode mode = {})
- {
- if (!write_utf16_bom(to, mode))
-@@ -521,13 +644,13 @@
- return codecvt_base::partial;
- while (from.size() && to.size())
- {
-- char16_t c = from.next[0];
-+ char16_t c = from[0];
- if (is_high_surrogate(c))
- return codecvt_base::error;
- if (c > maxcode)
- return codecvt_base::error;
-- *to.next++ = adjust_byte_order(c, mode);
-- ++from.next;
-+ to = adjust_byte_order(c, mode);
-+ ++from;
- }
- return from.size() == 0 ? codecvt_base::ok : codecvt_base::partial;
- }
-@@ -534,36 +657,35 @@
+ explicit
+- __dynamic_bitset_base(const allocator_type& __alloc = allocator_type())
++ __dynamic_bitset_base(const allocator_type& __alloc)
+ : _M_w(__alloc)
+ { }
- // utf16 -> ucs2
- codecvt_base::result
-- ucs2_in(range<const char16_t>& from, range<char16_t>& to,
-+ ucs2_in(range<const char16_t, false>& from, range<char16_t>& to,
- char32_t maxcode = max_code_point, codecvt_mode mode = {})
- {
-- if (read_utf16_bom(from, mode) == little_endian)
-- mode = codecvt_mode(mode & little_endian);
-- maxcode = std::max(max_single_utf16_unit, maxcode);
-+ read_utf16_bom(from, mode);
-+ // UCS-2 only supports characters in the BMP, i.e. one UTF-16 code unit:
-+ maxcode = std::min(max_single_utf16_unit, maxcode);
- while (from.size() && to.size())
+- explicit
+- __dynamic_bitset_base(__dynamic_bitset_base&& __b)
+- { this->_M_w.swap(__b._M_w); }
++ __dynamic_bitset_base() = default;
++ __dynamic_bitset_base(const __dynamic_bitset_base&) = default;
++ __dynamic_bitset_base(__dynamic_bitset_base&& __b) = default;
++ __dynamic_bitset_base& operator=(const __dynamic_bitset_base&) = default;
++ __dynamic_bitset_base& operator=(__dynamic_bitset_base&&) = default;
++ ~__dynamic_bitset_base() = default;
+
+ explicit
+ __dynamic_bitset_base(size_type __nbits, unsigned long long __val = 0ULL,
+ const allocator_type& __alloc = allocator_type())
+- : _M_w(__nbits / _S_bits_per_block
+- + (__nbits % _S_bits_per_block > 0),
+- __val, __alloc)
++ : _M_w(__nbits / _S_bits_per_block + (__nbits % _S_bits_per_block > 0),
++ block_type(0), __alloc)
{
- const char32_t c = read_utf16_code_point(from, maxcode, mode);
- if (c == incomplete_mb_character)
-- return codecvt_base::partial;
-+ return codecvt_base::error; // UCS-2 only supports single units.
- if (c > maxcode)
- return codecvt_base::error;
-- *to.next++ = c;
-+ to = c;
+- unsigned long long __mask = ~static_cast<block_type>(0);
+- size_t __n = std::min(this->_M_w.size(),
+- sizeof(unsigned long long) / sizeof(block_type));
+- for (size_t __i = 0; __i < __n; ++__i)
++ if (__nbits < std::numeric_limits<decltype(__val)>::digits)
++ __val &= ~(-1ULL << __nbits);
++ if (__val == 0)
++ return;
++
++ if _GLIBCXX17_CONSTEXPR (sizeof(__val) == sizeof(block_type))
++ _M_w[0] = __val;
++ else
+ {
+- this->_M_w[__i] = (__val & __mask) >> (__i * _S_bits_per_block);
+- __mask <<= _S_bits_per_block;
++ const size_t __n
++ = std::min(_M_w.size(), sizeof(__val) / sizeof(block_type));
++ for (size_t __i = 0; __val && __i < __n; ++__i)
++ {
++ _M_w[__i] = static_cast<block_type>(__val);
++ __val >>= _S_bits_per_block;
++ }
+ }
}
- return from.size() == 0 ? codecvt_base::ok : codecvt_base::partial;
- }
-
- const char16_t*
-- ucs2_span(const char16_t* begin, const char16_t* end, size_t max,
-+ ucs2_span(range<const char16_t, false>& from, size_t max,
- char32_t maxcode, codecvt_mode mode)
- {
-- range<const char16_t> from{ begin, end };
-- if (read_utf16_bom(from, mode) == little_endian)
-- mode = codecvt_mode(mode & little_endian);
-- maxcode = std::max(max_single_utf16_unit, maxcode);
-+ read_utf16_bom(from, mode);
-+ // UCS-2 only supports characters in the BMP, i.e. one UTF-16 code unit:
-+ maxcode = std::min(max_single_utf16_unit, maxcode);
- char32_t c = 0;
- while (max-- && c <= maxcode)
- c = read_utf16_code_point(from, maxcode, mode);
-- return from.next;
-+ return reinterpret_cast<const char16_t*>(from.next);
- }
-
- const char*
-@@ -572,7 +694,8 @@
- {
- range<const char> from{ begin, end };
- read_utf8_bom(from, mode);
-- maxcode = std::max(max_single_utf16_unit, maxcode);
-+ // UCS-2 only supports characters in the BMP, i.e. one UTF-16 code unit:
-+ maxcode = std::min(max_single_utf16_unit, maxcode);
- char32_t c = 0;
- while (max-- && c <= maxcode)
- c = read_utf8_code_point(from, maxcode);
-@@ -594,16 +717,14 @@
-
- // return pos such that [begin,pos) is valid UCS-4 string no longer than max
- const char16_t*
-- ucs4_span(const char16_t* begin, const char16_t* end, size_t max,
-+ ucs4_span(range<const char16_t, false>& from, size_t max,
- char32_t maxcode = max_code_point, codecvt_mode mode = {})
- {
-- range<const char16_t> from{ begin, end };
-- if (read_utf16_bom(from, mode) == little_endian)
-- mode = codecvt_mode(mode & little_endian);
-+ read_utf16_bom(from, mode);
- char32_t c = 0;
- while (max-- && c <= maxcode)
- c = read_utf16_code_point(from, maxcode, mode);
-- return from.next;
-+ return reinterpret_cast<const char16_t*>(from.next);
- }
- }
-
-@@ -661,7 +782,7 @@
-
- int
- codecvt<char16_t, char, mbstate_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
-
- bool
- codecvt<char16_t, char, mbstate_t>::do_always_noconv() const throw()
-@@ -679,9 +800,9 @@
- int
- codecvt<char16_t, char, mbstate_t>::do_max_length() const throw()
- {
-- // Any valid UTF-8 sequence of 3 bytes fits in a single 16-bit code unit,
-- // whereas 4 byte sequences require two 16-bit code units.
-- return 3;
-+ // A single character (one or two UTF-16 code units) requires
-+ // up to four UTF-8 code units.
-+ return 4;
- }
-
- // Define members of codecvt<char32_t, char, mbstate_t> specialization.
-@@ -732,7 +853,7 @@
-
- int
- codecvt<char32_t, char, mbstate_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
-
- bool
- codecvt<char32_t, char, mbstate_t>::do_always_noconv() const throw()
-@@ -749,7 +870,11 @@
-
- int
- codecvt<char32_t, char, mbstate_t>::do_max_length() const throw()
--{ return 4; }
-+{
-+ // A single character (one UTF-32 code unit) requires
-+ // up to 4 UTF-8 code units.
-+ return 4;
-+}
-
- // Define members of codecvt_utf8<char16_t> base class implementation.
- // Converts from UTF-8 to UCS-2.
-@@ -801,7 +926,7 @@
-
- int
- __codecvt_utf8_base<char16_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
-
- bool
- __codecvt_utf8_base<char16_t>::do_always_noconv() const throw()
-@@ -818,7 +943,14 @@
- int
- __codecvt_utf8_base<char16_t>::do_max_length() const throw()
--{ return 3; }
-+{
-+ // A single UCS-2 character requires up to three UTF-8 code units.
-+ // (UCS-2 cannot represent characters that use four UTF-8 code units).
-+ int max = 3;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf8_bom);
-+ return max;
-+}
-
- // Define members of codecvt_utf8<char32_t> base class implementation.
- // Converts from UTF-8 to UTF-32 (aka UCS-4).
-@@ -866,7 +998,7 @@
-
- int
- __codecvt_utf8_base<char32_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
-
- bool
- __codecvt_utf8_base<char32_t>::do_always_noconv() const throw()
-@@ -883,9 +1015,22 @@
-
- int
- __codecvt_utf8_base<char32_t>::do_max_length() const throw()
--{ return 4; }
-+{
-+ // A single UCS-4 character requires up to four UTF-8 code units.
-+ int max = 4;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf8_bom);
-+ return max;
-+}
-
- #ifdef _GLIBCXX_USE_WCHAR_T
-+
-+#if __SIZEOF_WCHAR_T__ == 2
-+static_assert(sizeof(wchar_t) == sizeof(char16_t), "");
-+#elif __SIZEOF_WCHAR_T__ == 4
-+static_assert(sizeof(wchar_t) == sizeof(char32_t), "");
-+#endif
-+
- // Define members of codecvt_utf8<wchar_t> base class implementation.
- // Converts from UTF-8 to UCS-2 or UCS-4 depending on sizeof(wchar_t).
-
-@@ -958,7 +1103,7 @@
-
- int
- __codecvt_utf8_base<wchar_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
-
- bool
- __codecvt_utf8_base<wchar_t>::do_always_noconv() const throw()
-@@ -981,8 +1126,17 @@
-
- int
- __codecvt_utf8_base<wchar_t>::do_max_length() const throw()
--{ return 4; }
-+{
-+#if __SIZEOF_WCHAR_T__ == 2
-+ int max = 3; // See __codecvt_utf8_base<char16_t>::do_max_length()
-+#else
-+ int max = 4; // See __codecvt_utf8_base<char32_t>::do_max_length()
- #endif
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf8_bom);
-+ return max;
-+}
-+#endif
-
- // Define members of codecvt_utf16<char16_t> base class implementation.
- // Converts from UTF-16 to UCS-2.
-@@ -997,10 +1151,7 @@
- extern_type*& __to_next) const
- {
- range<const char16_t> from{ __from, __from_end };
-- range<char16_t> to{
-- reinterpret_cast<char16_t*>(__to),
-- reinterpret_cast<char16_t*>(__to_end)
-- };
-+ range<char16_t, false> to{ __to, __to_end };
- auto res = ucs2_out(from, to, _M_maxcode, _M_mode);
- __from_next = from.next;
- __to_next = reinterpret_cast<char*>(to.next);
-@@ -1023,20 +1174,19 @@
- intern_type* __to, intern_type* __to_end,
- intern_type*& __to_next) const
- {
-- range<const char16_t> from{
-- reinterpret_cast<const char16_t*>(__from),
-- reinterpret_cast<const char16_t*>(__from_end)
-- };
-+ range<const char16_t, false> from{ __from, __from_end };
- range<char16_t> to{ __to, __to_end };
- auto res = ucs2_in(from, to, _M_maxcode, _M_mode);
- __from_next = reinterpret_cast<const char*>(from.next);
- __to_next = to.next;
-+ if (res == codecvt_base::ok && __from_next != __from_end)
-+ res = codecvt_base::error;
- return res;
- }
-
- int
- __codecvt_utf16_base<char16_t>::do_encoding() const throw()
--{ return 1; }
-+{ return 0; } // UTF-16 is not a fixed-width encoding
-
- bool
- __codecvt_utf16_base<char16_t>::do_always_noconv() const throw()
-@@ -1047,15 +1197,21 @@
- do_length(state_type&, const extern_type* __from,
- const extern_type* __end, size_t __max) const
- {
-- auto next = reinterpret_cast<const char16_t*>(__from);
-- next = ucs2_span(next, reinterpret_cast<const char16_t*>(__end), __max,
-- _M_maxcode, _M_mode);
-+ range<const char16_t, false> from{ __from, __end };
-+ const char16_t* next = ucs2_span(from, __max, _M_maxcode, _M_mode);
- return reinterpret_cast<const char*>(next) - __from;
- }
-
- int
- __codecvt_utf16_base<char16_t>::do_max_length() const throw()
--{ return 3; }
-+{
-+ // A single UCS-2 character requires one UTF-16 code unit (so two chars).
-+ // (UCS-2 cannot represent characters that use multiple UTF-16 code units).
-+ int max = 2;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf16_bom);
-+ return max;
-+}
-
- // Define members of codecvt_utf16<char32_t> base class implementation.
- // Converts from UTF-16 to UTF-32 (aka UCS-4).
-@@ -1070,10 +1226,7 @@
- extern_type*& __to_next) const
- {
- range<const char32_t> from{ __from, __from_end };
-- range<char16_t> to{
-- reinterpret_cast<char16_t*>(__to),
-- reinterpret_cast<char16_t*>(__to_end)
-- };
-+ range<char16_t, false> to{ __to, __to_end };
- auto res = ucs4_out(from, to, _M_maxcode, _M_mode);
- __from_next = from.next;
- __to_next = reinterpret_cast<char*>(to.next);
-@@ -1096,20 +1249,19 @@
- intern_type* __to, intern_type* __to_end,
- intern_type*& __to_next) const
- {
-- range<const char16_t> from{
-- reinterpret_cast<const char16_t*>(__from),
-- reinterpret_cast<const char16_t*>(__from_end)
-- };
-+ range<const char16_t, false> from{ __from, __from_end };
- range<char32_t> to{ __to, __to_end };
- auto res = ucs4_in(from, to, _M_maxcode, _M_mode);
- __from_next = reinterpret_cast<const char*>(from.next);
- __to_next = to.next;
-+ if (res == codecvt_base::ok && __from_next != __from_end)
-+ res = codecvt_base::error;
- return res;
- }
-
- int
- __codecvt_utf16_base<char32_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-16 is not a fixed-width encoding
-
- bool
- __codecvt_utf16_base<char32_t>::do_always_noconv() const throw()
-@@ -1120,15 +1272,21 @@
- do_length(state_type&, const extern_type* __from,
- const extern_type* __end, size_t __max) const
- {
-- auto next = reinterpret_cast<const char16_t*>(__from);
-- next = ucs4_span(next, reinterpret_cast<const char16_t*>(__end), __max,
-- _M_maxcode, _M_mode);
-+ range<const char16_t, false> from{ __from, __end };
-+ const char16_t* next = ucs4_span(from, __max, _M_maxcode, _M_mode);
- return reinterpret_cast<const char*>(next) - __from;
- }
-
- int
- __codecvt_utf16_base<char32_t>::do_max_length() const throw()
--{ return 4; }
-+{
-+ // A single UCS-4 character requires one or two UTF-16 code units
-+ // (so up to four chars).
-+ int max = 4;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf16_bom);
-+ return max;
-+}
-
- #ifdef _GLIBCXX_USE_WCHAR_T
- // Define members of codecvt_utf16<wchar_t> base class implementation.
-@@ -1143,17 +1301,17 @@
- extern_type* __to, extern_type* __to_end,
- extern_type*& __to_next) const
- {
-- range<char> to{ __to, __to_end };
-+ range<char16_t, false> to{ __to, __to_end };
- #if __SIZEOF_WCHAR_T__ == 2
- range<const char16_t> from{
- reinterpret_cast<const char16_t*>(__from),
-- reinterpret_cast<const char16_t*>(__from_end)
-+ reinterpret_cast<const char16_t*>(__from_end),
- };
- auto res = ucs2_out(from, to, _M_maxcode, _M_mode);
- #elif __SIZEOF_WCHAR_T__ == 4
- range<const char32_t> from{
- reinterpret_cast<const char32_t*>(__from),
-- reinterpret_cast<const char32_t*>(__from_end)
-+ reinterpret_cast<const char32_t*>(__from_end),
- };
- auto res = ucs4_out(from, to, _M_maxcode, _M_mode);
- #else
-@@ -1160,7 +1318,7 @@
- return codecvt_base::error;
- #endif
- __from_next = reinterpret_cast<const wchar_t*>(from.next);
-- __to_next = to.next;
-+ __to_next = reinterpret_cast<char*>(to.next);
- return res;
- }
-
-@@ -1180,30 +1338,32 @@
- intern_type* __to, intern_type* __to_end,
- intern_type*& __to_next) const
- {
-- range<const char> from{ __from, __from_end };
-+ range<const char16_t, false> from{ __from, __from_end };
- #if __SIZEOF_WCHAR_T__ == 2
- range<char16_t> to{
- reinterpret_cast<char16_t*>(__to),
-- reinterpret_cast<char16_t*>(__to_end)
-+ reinterpret_cast<char16_t*>(__to_end),
- };
- auto res = ucs2_in(from, to, _M_maxcode, _M_mode);
- #elif __SIZEOF_WCHAR_T__ == 4
- range<char32_t> to{
- reinterpret_cast<char32_t*>(__to),
-- reinterpret_cast<char32_t*>(__to_end)
-+ reinterpret_cast<char32_t*>(__to_end),
- };
- auto res = ucs4_in(from, to, _M_maxcode, _M_mode);
- #else
- return codecvt_base::error;
- #endif
-- __from_next = from.next;
-+ __from_next = reinterpret_cast<const char*>(from.next);
- __to_next = reinterpret_cast<wchar_t*>(to.next);
-+ if (res == codecvt_base::ok && __from_next != __from_end)
-+ res = codecvt_base::error;
- return res;
- }
+ void
+- _M_assign(const __dynamic_bitset_base& __b)
+- { this->_M_w = __b._M_w; }
+-
+- void
+- _M_swap(__dynamic_bitset_base& __b)
++ _M_swap(__dynamic_bitset_base& __b) noexcept
+ { this->_M_w.swap(__b._M_w); }
- int
- __codecvt_utf16_base<wchar_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-16 is not a fixed-width encoding
+ void
+- _M_clear()
++ _M_clear() noexcept
+ { this->_M_w.clear(); }
- bool
- __codecvt_utf16_base<wchar_t>::do_always_noconv() const throw()
-@@ -1214,13 +1374,11 @@
- do_length(state_type&, const extern_type* __from,
- const extern_type* __end, size_t __max) const
- {
-- auto next = reinterpret_cast<const char16_t*>(__from);
-+ range<const char16_t, false> from{ __from, __end };
- #if __SIZEOF_WCHAR_T__ == 2
-- next = ucs2_span(next, reinterpret_cast<const char16_t*>(__end), __max,
-- _M_maxcode, _M_mode);
-+ const char16_t* next = ucs2_span(from, __max, _M_maxcode, _M_mode);
- #elif __SIZEOF_WCHAR_T__ == 4
-- next = ucs4_span(next, reinterpret_cast<const char16_t*>(__end), __max,
-- _M_maxcode, _M_mode);
-+ const char16_t* next = ucs4_span(from, __max, _M_maxcode, _M_mode);
- #endif
- return reinterpret_cast<const char*>(next) - __from;
- }
-@@ -1227,8 +1385,17 @@
+ void
+@@ -129,7 +135,7 @@
+ }
- int
- __codecvt_utf16_base<wchar_t>::do_max_length() const throw()
--{ return 4; }
-+{
-+#if __SIZEOF_WCHAR_T__ == 2
-+ int max = 2; // See __codecvt_utf16_base<char16_t>::do_max_length()
-+#else
-+ int max = 4; // See __codecvt_utf16_base<char32_t>::do_max_length()
- #endif
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf16_bom);
-+ return max;
-+}
-+#endif
+ allocator_type
+- _M_get_allocator() const
++ _M_get_allocator() const noexcept
+ { return this->_M_w.get_allocator(); }
- // Define members of codecvt_utf8_utf16<char16_t> base class implementation.
- // Converts from UTF-8 to UTF-16.
-@@ -1280,7 +1447,7 @@
+ static size_type
+@@ -149,23 +155,23 @@
+ { return (static_cast<block_type>(1)) << _S_whichbit(__pos); }
- int
- __codecvt_utf8_utf16_base<char16_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
+ block_type&
+- _M_getword(size_type __pos)
++ _M_getword(size_type __pos) noexcept
+ { return this->_M_w[_S_whichword(__pos)]; }
- bool
- __codecvt_utf8_utf16_base<char16_t>::do_always_noconv() const throw()
-@@ -1298,9 +1465,12 @@
- int
- __codecvt_utf8_utf16_base<char16_t>::do_max_length() const throw()
- {
-- // Any valid UTF-8 sequence of 3 bytes fits in a single 16-bit code unit,
-- // whereas 4 byte sequences require two 16-bit code units.
-- return 3;
-+ // A single character can be 1 or 2 UTF-16 code units,
-+ // requiring up to 4 UTF-8 code units.
-+ int max = 4;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf8_bom);
-+ return max;
- }
+ block_type
+- _M_getword(size_type __pos) const
++ _M_getword(size_type __pos) const noexcept
+ { return this->_M_w[_S_whichword(__pos)]; }
- // Define members of codecvt_utf8_utf16<char32_t> base class implementation.
-@@ -1341,7 +1511,11 @@
- {
- range<const char> from{ __from, __from_end };
- range<char32_t> to{ __to, __to_end };
-- auto res = utf16_in(from, to, _M_maxcode, _M_mode);
-+ codecvt_mode mode = codecvt_mode(_M_mode & (consume_header|generate_header));
-+#if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__
-+ mode = codecvt_mode(mode | little_endian);
-+#endif
-+ auto res = utf16_in(from, to, _M_maxcode, mode);
- __from_next = from.next;
- __to_next = to.next;
- return res;
-@@ -1349,7 +1523,7 @@
+ block_type&
+- _M_hiword()
++ _M_hiword() noexcept
+ { return this->_M_w[_M_w.size() - 1]; }
- int
- __codecvt_utf8_utf16_base<char32_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
+ block_type
+- _M_hiword() const
++ _M_hiword() const noexcept
+ { return this->_M_w[_M_w.size() - 1]; }
- bool
- __codecvt_utf8_utf16_base<char32_t>::do_always_noconv() const throw()
-@@ -1367,9 +1541,12 @@
- int
- __codecvt_utf8_utf16_base<char32_t>::do_max_length() const throw()
- {
-- // Any valid UTF-8 sequence of 3 bytes fits in a single 16-bit code unit,
-- // whereas 4 byte sequences require two 16-bit code units.
-- return 3;
-+ // A single character can be 1 or 2 UTF-16 code units,
-+ // requiring up to 4 UTF-8 code units.
-+ int max = 4;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf8_bom);
-+ return max;
- }
-
- #ifdef _GLIBCXX_USE_WCHAR_T
-@@ -1411,7 +1588,11 @@
- {
- range<const char> from{ __from, __from_end };
- range<wchar_t> to{ __to, __to_end };
-- auto res = utf16_in(from, to, _M_maxcode, _M_mode);
-+ codecvt_mode mode = codecvt_mode(_M_mode & (consume_header|generate_header));
-+#if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__
-+ mode = codecvt_mode(mode | little_endian);
-+#endif
-+ auto res = utf16_in(from, to, _M_maxcode, mode);
- __from_next = from.next;
- __to_next = to.next;
- return res;
-@@ -1419,7 +1600,7 @@
+ void
+- _M_do_and(const __dynamic_bitset_base& __x)
++ _M_do_and(const __dynamic_bitset_base& __x) noexcept
+ {
+ if (__x._M_w.size() == this->_M_w.size())
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+@@ -175,7 +181,7 @@
+ }
- int
- __codecvt_utf8_utf16_base<wchar_t>::do_encoding() const throw()
--{ return 0; }
-+{ return 0; } // UTF-8 is not a fixed-width encoding
+ void
+- _M_do_or(const __dynamic_bitset_base& __x)
++ _M_do_or(const __dynamic_bitset_base& __x) noexcept
+ {
+ if (__x._M_w.size() == this->_M_w.size())
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+@@ -185,7 +191,7 @@
+ }
- bool
- __codecvt_utf8_utf16_base<wchar_t>::do_always_noconv() const throw()
-@@ -1437,9 +1618,12 @@
- int
- __codecvt_utf8_utf16_base<wchar_t>::do_max_length() const throw()
- {
-- // Any valid UTF-8 sequence of 3 bytes fits in a single 16-bit code unit,
-- // whereas 4 byte sequences require two 16-bit code units.
-- return 3;
-+ // A single character can be 1 or 2 UTF-16 code units,
-+ // requiring up to 4 UTF-8 code units.
-+ int max = 4;
-+ if (_M_mode & consume_header)
-+ max += sizeof(utf8_bom);
-+ return max;
- }
- #endif
+ void
+- _M_do_xor(const __dynamic_bitset_base& __x)
++ _M_do_xor(const __dynamic_bitset_base& __x) noexcept
+ {
+ if (__x._M_w.size() == this->_M_w.size())
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+@@ -195,7 +201,7 @@
+ }
-Index: libstdc++-v3/doc/xml/faq.xml
-===================================================================
---- a/src/libstdc++-v3/doc/xml/faq.xml (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/doc/xml/faq.xml (.../branches/gcc-6-branch)
-@@ -1230,7 +1230,7 @@
- details than for C, and most CPU designers (for good reasons elaborated
- below) have not stepped up to publish C++ ABIs. Such an ABI has been
- defined for the Itanium architecture (see
-- <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/">C++
-+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://mentorembedded.github.io/cxx-abi/">C++
- ABI for Itanium</link>) and that is used by G++ and other compilers
- as the de facto standard ABI on many common architectures (including x86).
- G++ can also use the ARM architecture's EABI, for embedded
-Index: libstdc++-v3/doc/xml/manual/abi.xml
-===================================================================
---- a/src/libstdc++-v3/doc/xml/manual/abi.xml (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/doc/xml/manual/abi.xml (.../branches/gcc-6-branch)
-@@ -42,7 +42,7 @@
- virtual functions, etc. These details are defined as the compiler
- Application Binary Interface, or ABI. The GNU C++ compiler uses an
- industry-standard C++ ABI starting with version 3. Details can be
-- found in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://mentorembedded.github.com/cxx-abi/abi.html">ABI
-+ found in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://mentorembedded.github.io/cxx-abi/abi.html">ABI
- specification</link>.
- </para>
-
-@@ -736,7 +736,7 @@
- the way the compiler deals with this class in by-value return
- statements or parameters: instead of passing instances of this
- class in registers, the compiler will be forced to use memory. See the
--section on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://mentorembedded.github.com/cxx-abi/abi.html#calls">Function
-+section on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://mentorembedded.github.io/cxx-abi/abi.html#calls">Function
- Calling Conventions and APIs</link>
- of the C++ ABI documentation for further details.
- </para></listitem>
-@@ -1094,7 +1094,7 @@
- <biblioentry xml:id="biblio.cxxabi">
- <title>
- <link xmlns:xlink="http://www.w3.org/1999/xlink"
-- xlink:href="http://www.codesourcery.com/cxx-abi/">
-+ xlink:href="http://mentorembedded.github.io/cxx-abi/">
- C++ ABI Summary
- </link>
- </title>
-Index: libstdc++-v3/include/std/tuple
-===================================================================
---- a/src/libstdc++-v3/include/std/tuple (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/std/tuple (.../branches/gcc-6-branch)
-@@ -923,7 +923,9 @@
- enable_if<_TMC::template
- _MoveConstructibleTuple<_U1, _U2>()
- && _TMC::template
-- _ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
-+ _ImplicitlyMoveConvertibleTuple<_U1, _U2>()
-+ && !is_same<typename decay<_U1>::type,
-+ allocator_arg_t>::value,
- bool>::type = true>
- constexpr tuple(_U1&& __a1, _U2&& __a2)
- : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
-@@ -932,7 +934,9 @@
- enable_if<_TMC::template
- _MoveConstructibleTuple<_U1, _U2>()
- && !_TMC::template
-- _ImplicitlyMoveConvertibleTuple<_U1, _U2>(),
-+ _ImplicitlyMoveConvertibleTuple<_U1, _U2>()
-+ && !is_same<typename decay<_U1>::type,
-+ allocator_arg_t>::value,
- bool>::type = false>
- explicit constexpr tuple(_U1&& __a1, _U2&& __a2)
- : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { }
-Index: libstdc++-v3/include/std/thread
-===================================================================
---- a/src/libstdc++-v3/include/std/thread (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/std/thread (.../branches/gcc-6-branch)
-@@ -119,6 +119,7 @@
- // 2097. packaged_task constructors should be constrained
- thread(thread&) = delete;
- thread(const thread&) = delete;
-+ thread(const thread&&) = delete;
-
- thread(thread&& __t) noexcept
- { swap(__t); }
-Index: libstdc++-v3/include/std/type_traits
-===================================================================
---- a/src/libstdc++-v3/include/std/type_traits (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/std/type_traits (.../branches/gcc-6-branch)
-@@ -2576,12 +2576,6 @@
- using __detected_or_t
- = typename __detected_or<_Default, _Op, _Args...>::type;
-
-- // _Op<_Args...> if that is a valid type, otherwise _Default<_Args...>.
-- template<template<typename...> class _Default,
-- template<typename...> class _Op, typename... _Args>
-- using __detected_or_t_ =
-- __detected_or_t<_Default<_Args...>, _Op, _Args...>;
--
- /// @} group metaprogramming
+ void
+- _M_do_dif(const __dynamic_bitset_base& __x)
++ _M_do_dif(const __dynamic_bitset_base& __x) noexcept
+ {
+ if (__x._M_w.size() == this->_M_w.size())
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+@@ -211,7 +217,7 @@
+ _M_do_right_shift(size_t __shift);
- /**
-Index: libstdc++-v3/include/std/memory
-===================================================================
---- a/src/libstdc++-v3/include/std/memory (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/std/memory (.../branches/gcc-6-branch)
-@@ -133,9 +133,9 @@
- inline void
- declare_reachable(void*) { }
-
--template <class T>
-- inline T*
-- undeclare_reachable(T* __p) { return __p; }
-+template <typename _Tp>
-+ inline _Tp*
-+ undeclare_reachable(_Tp* __p) { return __p; }
-
- inline void
- declare_no_pointers(char*, size_t) { }
-Index: libstdc++-v3/include/std/atomic
-===================================================================
---- a/src/libstdc++-v3/include/std/atomic (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/std/atomic (.../branches/gcc-6-branch)
-@@ -230,35 +230,39 @@
-
- _Tp
- load(memory_order __m = memory_order_seq_cst) const noexcept
-- {
-- _Tp tmp;
-- __atomic_load(&_M_i, &tmp, __m);
-- return tmp;
-+ {
-+ alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
-+ _Tp* __ptr = reinterpret_cast<_Tp*>(__buf);
-+ __atomic_load(&_M_i, __ptr, __m);
-+ return *__ptr;
+ void
+- _M_do_flip()
++ _M_do_flip() noexcept
+ {
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+ this->_M_w[__i] = ~this->_M_w[__i];
+@@ -218,21 +224,20 @@
}
- _Tp
- load(memory_order __m = memory_order_seq_cst) const volatile noexcept
-- {
-- _Tp tmp;
-- __atomic_load(&_M_i, &tmp, __m);
-- return tmp;
-+ {
-+ alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
-+ _Tp* __ptr = reinterpret_cast<_Tp*>(__buf);
-+ __atomic_load(&_M_i, __ptr, __m);
-+ return *__ptr;
+ void
+- _M_do_set()
++ _M_do_set() noexcept
+ {
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+- this->_M_w[__i] = ~static_cast<block_type>(0);
++ this->_M_w[__i] = static_cast<block_type>(-1);
}
- _Tp
- exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept
-- {
-- _Tp tmp;
-- __atomic_exchange(&_M_i, &__i, &tmp, __m);
-- return tmp;
-+ {
-+ alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
-+ _Tp* __ptr = reinterpret_cast<_Tp*>(__buf);
-+ __atomic_exchange(&_M_i, &__i, __ptr, __m);
-+ return *__ptr;
+ void
+- _M_do_reset()
++ _M_do_reset() noexcept
+ {
+- for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+- this->_M_w[__i] = static_cast<block_type>(0);
++ std::fill(_M_w.begin(), _M_w.end(), static_cast<block_type>(0));
}
- _Tp
- exchange(_Tp __i,
- memory_order __m = memory_order_seq_cst) volatile noexcept
-- {
-- _Tp tmp;
-- __atomic_exchange(&_M_i, &__i, &tmp, __m);
-- return tmp;
-+ {
-+ alignas(_Tp) unsigned char __buf[sizeof(_Tp)];
-+ _Tp* __ptr = reinterpret_cast<_Tp*>(__buf);
-+ __atomic_exchange(&_M_i, &__i, __ptr, __m);
-+ return *__ptr;
+ bool
+- _M_is_equal(const __dynamic_bitset_base& __x) const
++ _M_is_equal(const __dynamic_bitset_base& __x) const noexcept
+ {
+ if (__x._M_w.size() == this->_M_w.size())
+ {
+@@ -246,7 +251,7 @@
}
bool
-Index: libstdc++-v3/include/experimental/any
-===================================================================
---- a/src/libstdc++-v3/include/experimental/any (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/experimental/any (.../branches/gcc-6-branch)
-@@ -425,7 +425,10 @@
- template<typename _Tp>
- void* __any_caster(const any* __any)
- {
-- if (__any->_M_manager != &any::_Manager<decay_t<_Tp>>::_S_manage)
-+ struct _None { };
-+ using _Up = decay_t<_Tp>;
-+ using _Vp = conditional_t<is_copy_constructible<_Up>::value, _Up, _None>;
-+ if (__any->_M_manager != &any::_Manager<_Vp>::_S_manage)
- return nullptr;
- any::_Arg __arg;
- __any->_M_manager(any::_Op_access, __any, &__arg);
-Index: libstdc++-v3/include/experimental/iterator
-===================================================================
---- a/src/libstdc++-v3/include/experimental/iterator (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/experimental/iterator (.../branches/gcc-6-branch)
-@@ -39,10 +39,9 @@
- # include <bits/c++14_warning.h>
- #else
-
-+#include <iterator>
-+#include <iosfwd>
- #include <experimental/type_traits>
--#include <iosfwd>
--#include <bits/move.h>
--#include <bits/stl_iterator_base_types.h>
-
- namespace std _GLIBCXX_VISIBILITY(default)
- {
-Index: libstdc++-v3/include/experimental/memory
-===================================================================
---- a/src/libstdc++-v3/include/experimental/memory (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/experimental/memory (.../branches/gcc-6-branch)
-@@ -124,9 +124,9 @@
- constexpr __pointer
- release() noexcept
+- _M_is_less(const __dynamic_bitset_base& __x) const
++ _M_is_less(const __dynamic_bitset_base& __x) const noexcept
{
-- __pointer tmp = get();
-+ __pointer __tmp = get();
- reset();
-- return tmp;
-+ return __tmp;
+ if (__x._M_w.size() == this->_M_w.size())
+ {
+@@ -264,10 +269,10 @@
}
- constexpr void
-Index: libstdc++-v3/include/experimental/array
-===================================================================
---- a/src/libstdc++-v3/include/experimental/array (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/experimental/array (.../branches/gcc-6-branch)
-@@ -69,9 +69,9 @@
- template <typename _Dest = void, typename... _Types>
- constexpr auto
- make_array(_Types&&... __t)
-- -> array<conditional_t<is_void_v<_Dest>,
-- common_type_t<_Types...>,
-- _Dest>,
-+ -> array<typename conditional_t<is_void_v<_Dest>,
-+ common_type<_Types...>,
-+ common_type<_Dest>>::type,
- sizeof...(_Types)>
- {
- static_assert(__or_<
-@@ -80,13 +80,12 @@
- ::value,
- "make_array cannot be used without an explicit target type "
- "if any of the types given is a reference_wrapper");
-- return {{forward<_Types>(__t)...}};
-+ return {{ std::forward<_Types>(__t)... }};
- }
+ size_t
+- _M_are_all_aux() const
++ _M_are_all_aux() const noexcept
+ {
+ for (size_t __i = 0; __i < this->_M_w.size() - 1; ++__i)
+- if (_M_w[__i] != ~static_cast<block_type>(0))
++ if (_M_w[__i] != static_cast<block_type>(-1))
+ return 0;
+ return ((this->_M_w.size() - 1) * _S_bits_per_block
+ + __builtin_popcountll(this->_M_hiword()));
+@@ -274,7 +279,7 @@
+ }
- template <typename _Tp, size_t _Nm, size_t... _Idx>
- constexpr array<remove_cv_t<_Tp>, _Nm>
-- __to_array(_Tp (&__a)[_Nm],
-- index_sequence<_Idx...>)
-+ __to_array(_Tp (&__a)[_Nm], index_sequence<_Idx...>)
- {
- return {{__a[_Idx]...}};
- }
-@@ -94,6 +93,7 @@
- template <typename _Tp, size_t _Nm>
- constexpr array<remove_cv_t<_Tp>, _Nm>
- to_array(_Tp (&__a)[_Nm])
-+ noexcept(is_nothrow_constructible<remove_cv_t<_Tp>, _Tp&>::value)
- {
- return __to_array(__a, make_index_sequence<_Nm>{});
- }
-Index: libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
-===================================================================
---- a/src/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp (.../branches/gcc-6-branch)
-@@ -103,7 +103,6 @@
- swap_value_imp(it.m_p_e, r_new_val, s_no_throw_copies_ind);
- fix(it.m_p_e);
- PB_DS_ASSERT_VALID((*this))
-- _GLIBCXX_DEBUG_ASSERT(is_heap());
- }
+ bool
+- _M_is_any() const
++ _M_is_any() const noexcept
+ {
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+ if (this->_M_w[__i] != static_cast<block_type>(0))
+@@ -283,7 +288,7 @@
+ }
- PB_DS_CLASS_T_DEC
-Index: libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
-===================================================================
---- a/src/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp (.../branches/gcc-6-branch)
-@@ -266,20 +266,14 @@
- const entry_cmp& m_cmp = static_cast<entry_cmp&>(*this);
- entry_pointer end = m_a_entries + m_size;
- std::make_heap(m_a_entries, end, m_cmp);
-- _GLIBCXX_DEBUG_ASSERT(is_heap());
+ bool
+- _M_is_subset_of(const __dynamic_bitset_base& __b)
++ _M_is_subset_of(const __dynamic_bitset_base& __b) noexcept
+ {
+ if (__b._M_w.size() == this->_M_w.size())
+ {
+@@ -297,7 +302,7 @@
}
- void
- push_heap()
+ bool
+- _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const
++ _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const noexcept
{
-- if (!is_heap())
-- make_heap();
-- else
-- {
-- const entry_cmp& m_cmp = static_cast<entry_cmp&>(*this);
-- entry_pointer end = m_a_entries + m_size;
-- std::push_heap(m_a_entries, end, m_cmp);
-- }
-+ const entry_cmp& m_cmp = static_cast<entry_cmp&>(*this);
-+ entry_pointer end = m_a_entries + m_size;
-+ std::push_heap(m_a_entries, end, m_cmp);
+ if (this->is_subset_of(__b))
+ {
+@@ -311,7 +316,7 @@
}
- void
-@@ -290,15 +284,6 @@
- std::pop_heap(m_a_entries, end, m_cmp);
+ size_t
+- _M_do_count() const
++ _M_do_count() const noexcept
+ {
+ size_t __result = 0;
+ for (size_t __i = 0; __i < this->_M_w.size(); ++__i)
+@@ -357,6 +362,7 @@
+ *
+ * See N2050,
+ * Proposal to Add a Dynamically Sizeable Bitset to the Standard Library.
++ * http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2050.pdf
+ *
+ * In the general unoptimized case, storage is allocated in
+ * word-sized blocks. Let B be the number of bits in a word, then
+@@ -435,7 +441,7 @@
+ {
+ size_type __shift = this->_M_Nb % bits_per_block;
+ if (__shift > 0)
+- this->_M_hiword() &= ~((~static_cast<block_type>(0)) << __shift);
++ this->_M_hiword() &= block_type(~(block_type(-1) << __shift));
}
-- bool
-- is_heap()
-- {
-- const entry_cmp& m_cmp = static_cast<entry_cmp&>(*this);
-- entry_pointer end = m_a_entries + m_size;
-- bool p = std::__is_heap(m_a_entries, end, m_cmp);
-- return p;
-- }
--
- #ifdef _GLIBCXX_DEBUG
- void
- assert_valid(const char*, int) const;
-Index: libstdc++-v3/include/ext/pointer.h
-===================================================================
---- a/src/libstdc++-v3/include/ext/pointer.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/ext/pointer.h (.../branches/gcc-6-branch)
-@@ -449,9 +449,9 @@
- inline _Pointer_adapter
- operator++(int)
+ // Set the unused bits in the uppermost word.
+@@ -444,7 +450,7 @@
{
-- _Pointer_adapter tmp(*this);
-+ _Pointer_adapter __tmp(*this);
- _Storage_policy::set(_Storage_policy::get() + 1);
-- return tmp;
-+ return __tmp;
+ size_type __shift = this->_M_Nb % bits_per_block;
+ if (__shift > 0)
+- this->_M_hiword() |= ((~static_cast<block_type>(0)) << __shift);
++ this->_M_hiword() |= block_type(block_type(-1) << __shift);
}
-
- inline _Pointer_adapter&
-@@ -464,9 +464,9 @@
- inline _Pointer_adapter
- operator--(int)
+
+ /**
+@@ -451,15 +457,15 @@
+ * These versions of single-bit set, reset, flip, and test
+ * do no range checking.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
+- _M_unchecked_set(size_type __pos)
++ dynamic_bitset&
++ _M_unchecked_set(size_type __pos) noexcept
{
-- _Pointer_adapter tmp(*this);
-+ _Pointer_adapter __tmp(*this);
- _Storage_policy::set(_Storage_policy::get() - 1);
-- return tmp;
-+ return __tmp;
+ this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
+ return *this;
}
-
- }; // class _Pointer_adapter
-Index: libstdc++-v3/include/bits/stl_map.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/stl_map.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/stl_map.h (.../branches/gcc-6-branch)
-@@ -1129,7 +1129,7 @@
- template<typename _Kt>
- auto
- count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
-- { return _M_t._M_find_tr(__x) == _M_t.end() ? 0 : 1; }
-+ { return _M_t._M_count_tr(__x); }
- #endif
- //@}
-@@ -1153,8 +1153,8 @@
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x)
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return iterator(_M_t._M_lower_bound_tr(__x)); }
- #endif
- //@}
+- dynamic_bitset<_WordT, _Alloc>&
+- _M_unchecked_set(size_type __pos, int __val)
++ dynamic_bitset&
++ _M_unchecked_set(size_type __pos, int __val) noexcept
+ {
+ if (__val)
+ this->_M_getword(__pos) |= _Base::_S_maskbit(__pos);
+@@ -468,15 +474,15 @@
+ return *this;
+ }
-@@ -1178,8 +1178,8 @@
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return const_iterator(_M_t._M_lower_bound_tr(__x)); }
- #endif
- //@}
+- dynamic_bitset<_WordT, _Alloc>&
+- _M_unchecked_reset(size_type __pos)
++ dynamic_bitset&
++ _M_unchecked_reset(size_type __pos) noexcept
+ {
+ this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos);
+ return *this;
+ }
-@@ -1198,8 +1198,8 @@
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x)
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return iterator(_M_t._M_upper_bound_tr(__x)); }
- #endif
- //@}
+- dynamic_bitset<_WordT, _Alloc>&
+- _M_unchecked_flip(size_type __pos)
++ dynamic_bitset&
++ _M_unchecked_flip(size_type __pos) noexcept
+ {
+ this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos);
+ return *this;
+@@ -483,11 +489,11 @@
+ }
-@@ -1218,8 +1218,8 @@
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return const_iterator(_M_t._M_upper_bound_tr(__x)); }
- #endif
- //@}
+ bool
+- _M_unchecked_test(size_type __pos) const
++ _M_unchecked_test(size_type __pos) const noexcept
+ { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
+ != static_cast<_WordT>(0)); }
-@@ -1247,8 +1247,8 @@
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x)
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
-+ { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
- #endif
- //@}
+- size_type _M_Nb;
++ size_type _M_Nb = 0;
-@@ -1276,8 +1276,12 @@
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x) const
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<const_iterator, const_iterator>(
-+ _M_t._M_equal_range_tr(__x)))
-+ {
-+ return pair<const_iterator, const_iterator>(
-+ _M_t._M_equal_range_tr(__x));
-+ }
- #endif
- //@}
+ public:
+ /**
+@@ -511,22 +517,16 @@
+ block_type *_M_wp;
+ size_type _M_bpos;
-Index: libstdc++-v3/include/bits/locale_classes.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/locale_classes.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/locale_classes.h (.../branches/gcc-6-branch)
-@@ -461,10 +461,11 @@
+- // left undefined
+- reference();
+-
+ public:
+- reference(dynamic_bitset& __b, size_type __pos)
++ reference(dynamic_bitset& __b, size_type __pos) noexcept
+ {
+ this->_M_wp = &__b._M_getword(__pos);
+ this->_M_bpos = _Base::_S_whichbit(__pos);
}
- }
-- class __shim;
+- ~reference()
+- { }
-
- const facet* _M_sso_shim(const id*) const;
- const facet* _M_cow_shim(const id*) const;
-+
-+ protected:
-+ class __shim; // For internal use only.
- };
-
-
-Index: libstdc++-v3/include/bits/stl_set.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/stl_set.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/stl_set.h (.../branches/gcc-6-branch)
-@@ -670,7 +670,7 @@
- auto
- count(const _Kt& __x) const
- -> decltype(_M_t._M_count_tr(__x))
-- { return _M_t._M_find_tr(__x) == _M_t.end() ? 0 : 1; }
-+ { return _M_t._M_count_tr(__x); }
- #endif
- //@}
-
-@@ -735,14 +735,14 @@
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x)
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return iterator(_M_t._M_lower_bound_tr(__x)); }
-
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return const_iterator(_M_t._M_lower_bound_tr(__x)); }
- #endif
- //@}
-
-@@ -765,14 +765,14 @@
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x)
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return iterator(_M_t._M_upper_bound_tr(__x)); }
-
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return const_iterator(_M_t._M_upper_bound_tr(__x)); }
- #endif
- //@}
-
-@@ -804,14 +804,14 @@
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x)
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
-+ { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
-
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x) const
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
-+ { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
- #endif
- //@}
-
-Index: libstdc++-v3/include/bits/locale_conv.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/locale_conv.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/locale_conv.h (.../branches/gcc-6-branch)
-@@ -81,7 +81,10 @@
- && (__outstr.size() - __outchars) < __maxlen);
-
- if (__result == codecvt_base::error)
-- return false;
-+ {
-+ __count = __next - __first;
-+ return false;
-+ }
-
- if (__result == codecvt_base::noconv)
+ // For b[i] = __x;
+ reference&
+- operator=(bool __x)
++ operator=(bool __x) noexcept
{
-Index: libstdc++-v3/include/bits/basic_string.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/basic_string.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/basic_string.h (.../branches/gcc-6-branch)
-@@ -570,10 +570,25 @@
- if (!_Alloc_traits::_S_always_equal() && !_M_is_local()
- && _M_get_allocator() != __str._M_get_allocator())
- {
-- // replacement allocator cannot free existing storage
-- _M_destroy(_M_allocated_capacity);
-- _M_data(_M_local_data());
-- _M_set_length(0);
-+ // Propagating allocator cannot free existing storage so must
-+ // deallocate it before replacing current allocator.
-+ if (__str.size() <= _S_local_capacity)
-+ {
-+ _M_destroy(_M_allocated_capacity);
-+ _M_data(_M_local_data());
-+ _M_set_length(0);
-+ }
-+ else
-+ {
-+ const auto __len = __str.size();
-+ auto __alloc = __str._M_get_allocator();
-+ // If this allocation throws there are no effects:
-+ auto __ptr = _Alloc_traits::allocate(__alloc, __len + 1);
-+ _M_destroy(_M_allocated_capacity);
-+ _M_data(__ptr);
-+ _M_capacity(__len);
-+ _M_set_length(__len);
-+ }
- }
- std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator());
- }
-Index: libstdc++-v3/include/bits/stl_multimap.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-6-branch)
-@@ -822,8 +822,8 @@
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x)
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return iterator(_M_t._M_lower_bound_tr(__x)); }
- #endif
- //@}
-
-@@ -847,8 +847,8 @@
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return const_iterator(_M_t._M_lower_bound_tr(__x)); }
- #endif
- //@}
+ if (__x)
+ *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos);
+@@ -537,7 +537,7 @@
+
+ // For b[i] = b[__j];
+ reference&
+- operator=(const reference& __j)
++ operator=(const reference& __j) noexcept
+ {
+ if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos)))
+ *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos);
+@@ -548,16 +548,16 @@
-@@ -867,8 +867,8 @@
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x)
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return iterator(_M_t._M_upper_bound_tr(__x)); }
- #endif
- //@}
+ // Flips the bit
+ bool
+- operator~() const
++ operator~() const noexcept
+ { return (*(_M_wp) & _Base::_S_maskbit(this->_M_bpos)) == 0; }
+
+ // For __x = b[i];
+- operator bool() const
++ operator bool() const noexcept
+ { return (*(this->_M_wp) & _Base::_S_maskbit(this->_M_bpos)) != 0; }
+
+ // For b[i].flip();
+ reference&
+- flip()
++ flip() noexcept
+ {
+ *this->_M_wp ^= _Base::_S_maskbit(this->_M_bpos);
+ return *this;
+@@ -569,10 +569,14 @@
+ typedef bool const_reference;
+
+ // 23.3.5.1 constructors:
++
+ /// All bits set to zero.
++ dynamic_bitset() = default;
++
++ /// All bits set to zero.
+ explicit
+- dynamic_bitset(const allocator_type& __alloc = allocator_type())
+- : _Base(__alloc), _M_Nb(0)
++ dynamic_bitset(const allocator_type& __alloc)
++ : _Base(__alloc)
+ { }
-@@ -887,8 +887,8 @@
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return const_iterator(_M_t._M_upper_bound_tr(__x)); }
- #endif
- //@}
+ /// Initial bits bitwise-copied from a single word (others set to zero).
+@@ -585,7 +589,7 @@
-@@ -914,8 +914,8 @@
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x)
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
-+ { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
- #endif
- //@}
+ dynamic_bitset(initializer_list<block_type> __il,
+ const allocator_type& __alloc = allocator_type())
+- : _Base(__alloc), _M_Nb(0)
++ : _Base(__alloc)
+ { this->append(__il); }
-@@ -941,8 +941,12 @@
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x) const
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<const_iterator, const_iterator>(
-+ _M_t._M_equal_range_tr(__x)))
-+ {
-+ return pair<const_iterator, const_iterator>(
-+ _M_t._M_equal_range_tr(__x));
-+ }
- #endif
- //@}
+ /**
+@@ -609,8 +613,7 @@
+ __n = std::basic_string<_CharT, _Traits, _Alloc1>::npos,
+ _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'),
+ const allocator_type& __alloc = allocator_type())
+- : _Base(__alloc),
+- _M_Nb(0) // Watch for npos.
++ : _Base(__alloc)
+ {
+ if (__pos > __str.size())
+ __throw_out_of_range(__N("dynamic_bitset::bitset initial position "
+@@ -619,8 +622,7 @@
+ // Watch for npos.
+ this->_M_Nb = (__n > __str.size() ? __str.size() - __pos : __n);
+ this->resize(this->_M_Nb);
+- this->_M_copy_from_string(__str, __pos, __n,
+- _CharT('0'), _CharT('1'));
++ this->_M_copy_from_string(__str, __pos, __n);
+ }
-Index: libstdc++-v3/include/bits/stl_pair.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/stl_pair.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/stl_pair.h (.../branches/gcc-6-branch)
-@@ -178,6 +178,10 @@
+ /**
+@@ -633,61 +635,42 @@
+ explicit
+ dynamic_bitset(const char* __str,
+ const allocator_type& __alloc = allocator_type())
+- : _Base(__alloc)
++ : _Base(__builtin_strlen(__str), 0ULL, __alloc),
++ _M_Nb(__builtin_strlen(__str))
+ {
+- size_t __len = 0;
+- if (__str)
+- while (__str[__len] != '\0')
+- ++__len;
+- this->resize(__len);
+- this->_M_copy_from_ptr<char,std::char_traits<char>>
+- (__str, __len, 0, __len, '0', '1');
++ this->_M_copy_from_ptr(__str, _M_Nb, 0, _M_Nb);
}
- };
-+ struct __wrap_nonesuch : std::__nonesuch {
-+ explicit __wrap_nonesuch(const __nonesuch&) = delete;
-+ };
-+
- #endif
-
- /**
-@@ -359,7 +363,7 @@
- operator=(typename conditional<
- __and_<is_copy_assignable<_T1>,
- is_copy_assignable<_T2>>::value,
-- const pair&, const __nonesuch&>::type __p)
-+ const pair&, const __wrap_nonesuch&>::type __p)
- {
- first = __p.first;
- second = __p.second;
-@@ -370,13 +374,13 @@
- operator=(typename conditional<
- __not_<__and_<is_copy_assignable<_T1>,
- is_copy_assignable<_T2>>>::value,
-- const pair&, const __nonesuch&>::type __p) = delete;
-+ const pair&, const __wrap_nonesuch&>::type __p) = delete;
-
- pair&
- operator=(typename conditional<
- __and_<is_move_assignable<_T1>,
- is_move_assignable<_T2>>::value,
-- pair&&, __nonesuch&&>::type __p)
-+ pair&&, __wrap_nonesuch&&>::type __p)
- noexcept(__and_<is_nothrow_move_assignable<_T1>,
- is_nothrow_move_assignable<_T2>>::value)
+- /**
+- * @brief Copy constructor.
+- */
+- dynamic_bitset(const dynamic_bitset& __b)
+- : _Base(__b), _M_Nb(__b.size())
+- { }
++ /// Copy constructor.
++ dynamic_bitset(const dynamic_bitset&) = default;
+
+- /**
+- * @brief Move constructor.
+- */
+- dynamic_bitset(dynamic_bitset&& __b)
+- : _Base(std::forward<_Base>(__b)), _M_Nb(__b.size())
+- { }
++ /// Move constructor.
++ dynamic_bitset(dynamic_bitset&& __b) noexcept
++ : _Base(std::move(__b)), _M_Nb(__b._M_Nb)
++ { __b.clear(); }
+
+- /**
+- * @brief Swap with another bitset.
+- */
++ /// Swap with another bitset.
+ void
+- swap(dynamic_bitset& __b)
++ swap(dynamic_bitset& __b) noexcept
{
-Index: libstdc++-v3/include/bits/ios_base.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/ios_base.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/ios_base.h (.../branches/gcc-6-branch)
-@@ -207,12 +207,12 @@
- const error_category& iostream_category() noexcept;
-
- inline error_code
-- make_error_code(io_errc e) noexcept
-- { return error_code(static_cast<int>(e), iostream_category()); }
-+ make_error_code(io_errc __e) noexcept
-+ { return error_code(static_cast<int>(__e), iostream_category()); }
-
- inline error_condition
-- make_error_condition(io_errc e) noexcept
-- { return error_condition(static_cast<int>(e), iostream_category()); }
-+ make_error_condition(io_errc __e) noexcept
-+ { return error_condition(static_cast<int>(__e), iostream_category()); }
- #endif
-
- // 27.4.2 Class ios_base
-Index: libstdc++-v3/include/bits/predefined_ops.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/predefined_ops.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/predefined_ops.h (.../branches/gcc-6-branch)
-@@ -24,7 +24,7 @@
-
- /** @file predefined_ops.h
- * This is an internal header file, included by other library headers.
-- * You should not attempt to use it directly.
-+ * You should not attempt to use it directly. @headername{algorithm}
- */
-
- #ifndef _GLIBCXX_PREDEFINED_OPS_H
-@@ -42,6 +42,7 @@
- operator()(_Iterator1 __it1, _Iterator2 __it2) const
- { return *__it1 < *__it2; }
- };
-+
- _GLIBCXX14_CONSTEXPR
- inline _Iter_less_iter
- __iter_less_iter()
-@@ -53,7 +54,7 @@
- bool
- operator()(_Iterator __it, _Value& __val) const
- { return *__it < __val; }
-- };
-+ };
+ this->_M_swap(__b);
+ std::swap(this->_M_Nb, __b._M_Nb);
+ }
- inline _Iter_less_val
- __iter_less_val()
-@@ -69,7 +70,7 @@
- bool
- operator()(_Value& __val, _Iterator __it) const
- { return __val < *__it; }
-- };
-+ };
+- /**
+- * @brief Assignment.
+- */
+- dynamic_bitset&
+- operator=(const dynamic_bitset& __b)
+- {
+- if (&__b != this)
+- {
+- this->_M_assign(__b);
+- this->_M_Nb = __b._M_Nb;
+- }
+- }
++ /// Copy assignment operator.
++ dynamic_bitset& operator=(const dynamic_bitset&) = default;
+
+- /**
+- * @brief Move assignment.
+- */
++ /// Move assignment operator.
+ dynamic_bitset&
+ operator=(dynamic_bitset&& __b)
++ noexcept(std::is_nothrow_move_assignable<_Base>::value)
+ {
+- this->swap(__b);
++ static_cast<_Base&>(*this) = static_cast<_Base&&>(__b);
++ _M_Nb = __b._M_Nb;
++ if _GLIBCXX17_CONSTEXPR (std::is_nothrow_move_assignable<_Base>::value)
++ __b._M_Nb = 0;
++ else if (get_allocator() == __b.get_allocator())
++ __b._M_Nb = 0;
+ return *this;
+ }
- inline _Val_less_iter
- __val_less_iter()
-@@ -85,7 +86,7 @@
- bool
- operator()(_Iterator1 __it1, _Iterator2 __it2) const
- { return *__it1 == *__it2; }
-- };
-+ };
+@@ -695,7 +678,7 @@
+ * @brief Return the allocator for the bitset.
+ */
+ allocator_type
+- get_allocator() const
++ get_allocator() const noexcept
+ { return this->_M_get_allocator(); }
- inline _Iter_equal_to_iter
- __iter_equal_to_iter()
-@@ -97,7 +98,7 @@
- bool
- operator()(_Iterator __it, _Value& __val) const
- { return *__it == __val; }
-- };
-+ };
+ /**
+@@ -734,6 +717,8 @@
+ ++this->_M_Nb;
+ }
- inline _Iter_equal_to_val
- __iter_equal_to_val()
-@@ -111,7 +112,8 @@
- struct _Iter_comp_iter
- {
- _Compare _M_comp;
-- _GLIBCXX14_CONSTEXPR
++ // XXX why is there no pop_back() member in the proposal?
+
-+ explicit _GLIBCXX14_CONSTEXPR
- _Iter_comp_iter(_Compare __comp)
- : _M_comp(__comp)
- { }
-@@ -134,6 +136,7 @@
- {
- _Compare _M_comp;
-
-+ explicit
- _Iter_comp_val(_Compare __comp)
- : _M_comp(__comp)
- { }
-@@ -159,6 +162,7 @@
- {
- _Compare _M_comp;
-
-+ explicit
- _Val_comp_iter(_Compare __comp)
- : _M_comp(__comp)
- { }
-@@ -184,6 +188,7 @@
- {
- _Value& _M_value;
-
-+ explicit
- _Iter_equals_val(_Value& __value)
- : _M_value(__value)
- { }
-@@ -202,16 +207,17 @@
- template<typename _Iterator1>
- struct _Iter_equals_iter
- {
-- typename std::iterator_traits<_Iterator1>::reference _M_ref;
-+ _Iterator1 _M_it1;
-
-+ explicit
- _Iter_equals_iter(_Iterator1 __it1)
-- : _M_ref(*__it1)
-+ : _M_it1(__it1)
- { }
-
- template<typename _Iterator2>
- bool
- operator()(_Iterator2 __it2)
-- { return *__it2 == _M_ref; }
-+ { return *__it2 == *_M_it1; }
- };
-
- template<typename _Iterator>
-@@ -224,6 +230,7 @@
- {
- _Predicate _M_pred;
-
-+ explicit
- _Iter_pred(_Predicate __pred)
- : _M_pred(__pred)
- { }
-@@ -264,16 +271,16 @@
- struct _Iter_comp_to_iter
- {
- _Compare _M_comp;
-- typename std::iterator_traits<_Iterator1>::reference _M_ref;
-+ _Iterator1 _M_it1;
-
- _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1)
-- : _M_comp(__comp), _M_ref(*__it1)
-+ : _M_comp(__comp), _M_it1(__it1)
- { }
-
- template<typename _Iterator2>
- bool
- operator()(_Iterator2 __it2)
-- { return bool(_M_comp(*__it2, _M_ref)); }
-+ { return bool(_M_comp(*__it2, *_M_it1)); }
- };
-
- template<typename _Compare, typename _Iterator>
-@@ -286,6 +293,7 @@
- {
- _Predicate _M_pred;
-
-+ explicit
- _Iter_negate(_Predicate __pred)
- : _M_pred(__pred)
- { }
-Index: libstdc++-v3/include/bits/stl_multiset.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/stl_multiset.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/stl_multiset.h (.../branches/gcc-6-branch)
-@@ -716,14 +716,14 @@
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x)
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return iterator(_M_t._M_lower_bound_tr(__x)); }
-
- template<typename _Kt>
- auto
- lower_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_lower_bound_tr(__x))
-- { return _M_t._M_lower_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
-+ { return iterator(_M_t._M_lower_bound_tr(__x)); }
- #endif
- //@}
-
-@@ -746,14 +746,14 @@
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x)
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return iterator(_M_t._M_upper_bound_tr(__x)); }
-
- template<typename _Kt>
- auto
- upper_bound(const _Kt& __x) const
-- -> decltype(_M_t._M_upper_bound_tr(__x))
-- { return _M_t._M_upper_bound_tr(__x); }
-+ -> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
-+ { return iterator(_M_t._M_upper_bound_tr(__x)); }
- #endif
- //@}
+ /**
+ * @brief Append a block.
+ */
+@@ -770,36 +755,36 @@
+ *
+ * These should be self-explanatory.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
+- operator&=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
++ dynamic_bitset&
++ operator&=(const dynamic_bitset& __rhs)
+ {
+ this->_M_do_and(__rhs);
+ return *this;
+ }
-@@ -785,14 +785,14 @@
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x)
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
-+ { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
-
- template<typename _Kt>
- auto
- equal_range(const _Kt& __x) const
-- -> decltype(_M_t._M_equal_range_tr(__x))
-- { return _M_t._M_equal_range_tr(__x); }
-+ -> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
-+ { return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
- #endif
- //@}
+- dynamic_bitset<_WordT, _Alloc>&
+- operator&=(dynamic_bitset<_WordT, _Alloc>&& __rhs)
++ dynamic_bitset&
++ operator&=(dynamic_bitset&& __rhs)
+ {
+ this->_M_do_and(std::move(__rhs));
+ return *this;
+ }
-Index: libstdc++-v3/include/bits/mask_array.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/mask_array.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/mask_array.h (.../branches/gcc-6-branch)
-@@ -136,8 +136,8 @@
- };
+- dynamic_bitset<_WordT, _Alloc>&
+- operator|=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
++ dynamic_bitset&
++ operator|=(const dynamic_bitset& __rhs)
+ {
+ this->_M_do_or(__rhs);
+ return *this;
+ }
- template<typename _Tp>
-- inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& a)
-- : _M_sz(a._M_sz), _M_mask(a._M_mask), _M_array(a._M_array) {}
-+ inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& __a)
-+ : _M_sz(__a._M_sz), _M_mask(__a._M_mask), _M_array(__a._M_array) {}
+- dynamic_bitset<_WordT, _Alloc>&
+- operator^=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
++ dynamic_bitset&
++ operator^=(const dynamic_bitset& __rhs)
+ {
+ this->_M_do_xor(__rhs);
+ return *this;
+ }
- template<typename _Tp>
- inline
-Index: libstdc++-v3/include/bits/ptr_traits.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/ptr_traits.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/ptr_traits.h (.../branches/gcc-6-branch)
-@@ -56,7 +56,7 @@
- // Given Template<T, ...> and U return Template<U, ...>, otherwise invalid.
- template<typename _Tp, typename _Up>
- struct __replace_first_arg
-- { using type = __undefined; };
-+ { };
-
- template<template<typename, typename...> class _Template, typename _Up,
- typename _Tp, typename... _Types>
-@@ -84,8 +84,12 @@
- template<typename _Tp>
- using __difference_type = typename _Tp::difference_type;
-
-+ template<typename _Tp, typename _Up, typename = void>
-+ struct __rebind : __replace_first_arg<_Tp, _Up> { };
-+
- template<typename _Tp, typename _Up>
-- using __rebind = typename _Tp::template rebind<_Up>;
-+ struct __rebind<_Tp, _Up, __void_t<typename _Tp::template rebind<_Up>>>
-+ { using type = typename _Tp::template rebind<_Up>; };
+- dynamic_bitset<_WordT, _Alloc>&
+- operator-=(const dynamic_bitset<_WordT, _Alloc>& __rhs)
++ dynamic_bitset&
++ operator-=(const dynamic_bitset& __rhs)
+ {
+ this->_M_do_dif(__rhs);
+ return *this;
+@@ -813,7 +798,7 @@
+ *
+ * These should be self-explanatory.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ operator<<=(size_type __pos)
+ {
+ if (__builtin_expect(__pos < this->_M_Nb, 1))
+@@ -826,7 +811,7 @@
+ return *this;
+ }
- public:
- /// The pointer type.
-@@ -93,7 +97,7 @@
-
- /// The type pointed to.
- using element_type
-- = __detected_or_t_<__get_first_arg_t, __element_type, _Ptr>;
-+ = __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>;
-
- /// The type used to represent the difference between two pointers.
- using difference_type
-@@ -101,8 +105,7 @@
-
- /// A pointer to a different type.
- template<typename _Up>
-- using rebind
-- = __detected_or_t_<__replace_first_arg_t, __rebind, _Ptr, _Up>;
-+ using rebind = typename __rebind<_Ptr, _Up>::type;
-
- static _Ptr
- pointer_to(__make_not_void<element_type>& __e)
-@@ -110,8 +113,6 @@
-
- static_assert(!is_same<element_type, __undefined>::value,
- "pointer type defines element_type or is like SomePointer<T, Args>");
-- static_assert(!is_same<rebind<element_type>, __undefined>::value,
-- "pointer type defines rebind<U> or is like SomePointer<T, Args>");
- };
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ operator>>=(size_type __pos)
+ {
+ if (__builtin_expect(__pos < this->_M_Nb, 1))
+@@ -844,7 +829,7 @@
+ /**
+ * @brief Sets every bit to true.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ set()
+ {
+ this->_M_do_set();
+@@ -858,7 +843,7 @@
+ * @param __val Either true or false, defaults to true.
+ * @throw std::out_of_range If @a __pos is bigger the size of the %set.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ set(size_type __pos, bool __val = true)
+ {
+ if (__pos >= _M_Nb)
+@@ -869,7 +854,7 @@
+ /**
+ * @brief Sets every bit to false.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ reset()
+ {
+ this->_M_do_reset();
+@@ -883,7 +868,7 @@
+ *
+ * Same as writing @c set(__pos, false).
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ reset(size_type __pos)
+ {
+ if (__pos >= _M_Nb)
+@@ -894,7 +879,7 @@
+ /**
+ * @brief Toggles every bit to its opposite value.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ flip()
+ {
+ this->_M_do_flip();
+@@ -907,7 +892,7 @@
+ * @param __pos The index of the bit.
+ * @throw std::out_of_range If @a __pos is bigger the size of the %set.
+ */
+- dynamic_bitset<_WordT, _Alloc>&
++ dynamic_bitset&
+ flip(size_type __pos)
+ {
+ if (__pos >= _M_Nb)
+@@ -916,7 +901,7 @@
+ }
- /**
-Index: libstdc++-v3/include/bits/slice_array.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/slice_array.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/slice_array.h (.../branches/gcc-6-branch)
-@@ -204,8 +204,8 @@
+ /// See the no-argument flip().
+- dynamic_bitset<_WordT, _Alloc>
++ dynamic_bitset
+ operator~() const
+ { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); }
- template<typename _Tp>
- inline
-- slice_array<_Tp>::slice_array(const slice_array<_Tp>& a)
-- : _M_sz(a._M_sz), _M_stride(a._M_stride), _M_array(a._M_array) {}
-+ slice_array<_Tp>::slice_array(const slice_array<_Tp>& __a)
-+ : _M_sz(__a._M_sz), _M_stride(__a._M_stride), _M_array(__a._M_array) {}
-
- // template<typename _Tp>
- // inline slice_array<_Tp>::~slice_array () {}
-Index: libstdc++-v3/include/bits/list.tcc
-===================================================================
---- a/src/libstdc++-v3/include/bits/list.tcc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/list.tcc (.../branches/gcc-6-branch)
-@@ -380,26 +380,36 @@
- // 300. list::merge() specification incomplete
- if (this != std::__addressof(__x))
- {
-- _M_check_equal_allocators(__x);
-+ _M_check_equal_allocators(__x);
-
- iterator __first1 = begin();
- iterator __last1 = end();
- iterator __first2 = __x.begin();
- iterator __last2 = __x.end();
-- while (__first1 != __last1 && __first2 != __last2)
-- if (*__first2 < *__first1)
-- {
-- iterator __next = __first2;
-- _M_transfer(__first1, __first2, ++__next);
-- __first2 = __next;
-- }
-- else
-- ++__first1;
-- if (__first2 != __last2)
-- _M_transfer(__last1, __first2, __last2);
-+ const size_t __orig_size = __x.size();
-+ __try {
-+ while (__first1 != __last1 && __first2 != __last2)
-+ if (*__first2 < *__first1)
-+ {
-+ iterator __next = __first2;
-+ _M_transfer(__first1, __first2, ++__next);
-+ __first2 = __next;
-+ }
-+ else
-+ ++__first1;
-+ if (__first2 != __last2)
-+ _M_transfer(__last1, __first2, __last2);
-
-- this->_M_inc_size(__x._M_get_size());
-- __x._M_set_size(0);
-+ this->_M_inc_size(__x._M_get_size());
-+ __x._M_set_size(0);
-+ }
-+ __catch(...)
-+ {
-+ const size_t __dist = std::distance(__first2, __last2);
-+ this->_M_inc_size(__orig_size - __dist);
-+ __x._M_set_size(__dist);
-+ __throw_exception_again;
-+ }
+@@ -978,19 +963,23 @@
}
- }
-@@ -423,20 +433,31 @@
- iterator __last1 = end();
- iterator __first2 = __x.begin();
- iterator __last2 = __x.end();
-- while (__first1 != __last1 && __first2 != __last2)
-- if (__comp(*__first2, *__first1))
-- {
-- iterator __next = __first2;
-- _M_transfer(__first1, __first2, ++__next);
-- __first2 = __next;
-- }
-- else
-- ++__first1;
-- if (__first2 != __last2)
-- _M_transfer(__last1, __first2, __last2);
-+ const size_t __orig_size = __x.size();
-+ __try
-+ {
-+ while (__first1 != __last1 && __first2 != __last2)
-+ if (__comp(*__first2, *__first1))
-+ {
-+ iterator __next = __first2;
-+ _M_transfer(__first1, __first2, ++__next);
-+ __first2 = __next;
-+ }
-+ else
-+ ++__first1;
-+ if (__first2 != __last2)
-+ _M_transfer(__last1, __first2, __last2);
-
-- this->_M_inc_size(__x._M_get_size());
-- __x._M_set_size(0);
-+ this->_M_inc_size(__x._M_get_size());
-+ __x._M_set_size(0);
-+ }
-+ __catch(...)
-+ {
-+ const size_t __dist = std::distance(__first2, __last2);
-+ this->_M_inc_size(__orig_size - __dist);
-+ __x._M_set_size(__dist);
-+ __throw_exception_again;
-+ }
- }
- }
-
-Index: libstdc++-v3/include/bits/random.tcc
-===================================================================
---- a/src/libstdc++-v3/include/bits/random.tcc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/random.tcc (.../branches/gcc-6-branch)
-@@ -3323,18 +3323,23 @@
- const size_t __m = std::max<size_t>(1UL,
- (__b + __log2r - 1UL) / __log2r);
- _RealType __ret;
-- do
-+ _RealType __sum = _RealType(0);
-+ _RealType __tmp = _RealType(1);
-+ for (size_t __k = __m; __k != 0; --__k)
- {
-- _RealType __sum = _RealType(0);
-- _RealType __tmp = _RealType(1);
-- for (size_t __k = __m; __k != 0; --__k)
-- {
-- __sum += _RealType(__urng() - __urng.min()) * __tmp;
-- __tmp *= __r;
-- }
-- __ret = __sum / __tmp;
-+ __sum += _RealType(__urng() - __urng.min()) * __tmp;
-+ __tmp *= __r;
- }
-- while (__builtin_expect(__ret >= _RealType(1), 0));
-+ __ret = __sum / __tmp;
-+ if (__builtin_expect(__ret >= _RealType(1), 0))
+ // Helper functions for string operations.
+- template<typename _CharT, typename _Traits>
++ template<typename _Traits = std::char_traits<char>,
++ typename _CharT = typename _Traits::char_type>
+ void
+ _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t,
+- _CharT, _CharT);
++ _CharT __zero = _CharT('0'),
++ _CharT __one = _CharT('1'));
+
+ template<typename _CharT, typename _Traits, typename _Alloc1>
+ void
+- _M_copy_from_string(const std::basic_string<_CharT,
+- _Traits, _Alloc1>& __str, size_t __pos, size_t __n,
++ _M_copy_from_string(const basic_string<_CharT, _Traits, _Alloc1>& __str,
++ size_t __pos, size_t __n,
+ _CharT __zero = _CharT('0'),
+ _CharT __one = _CharT('1'))
+- { _M_copy_from_ptr<_CharT, _Traits>(__str.data(), __str.size(),
+- __pos, __n, __zero, __one); }
+ {
-+#if _GLIBCXX_USE_C99_MATH_TR1
-+ __ret = std::nextafter(_RealType(1), _RealType(0));
-+#else
-+ __ret = _RealType(1)
-+ - std::numeric_limits<_RealType>::epsilon() / _RealType(2);
-+#endif
++ _M_copy_from_ptr<_Traits>(__str.data(), __str.size(), __pos, __n,
++ __zero, __one);
+ }
- return __ret;
- }
-Index: libstdc++-v3/include/bits/regex.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/regex.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/regex.h (.../branches/gcc-6-branch)
-@@ -2672,9 +2672,9 @@
- initializer_list<int>,
- regex_constants::match_flag_type =
- regex_constants::match_default) = delete;
-- template <std::size_t N>
-+ template <std::size_t _Nm>
- regex_token_iterator(_Bi_iter, _Bi_iter, const regex_type&&,
-- const int (&)[N],
-+ const int (&)[_Nm],
- regex_constants::match_flag_type =
- regex_constants::match_default) = delete;
-
-Index: libstdc++-v3/include/bits/alloc_traits.h
-===================================================================
---- a/src/libstdc++-v3/include/bits/alloc_traits.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/include/bits/alloc_traits.h (.../branches/gcc-6-branch)
-@@ -44,9 +44,14 @@
-
- struct __allocator_traits_base
- {
-- template<typename _Alloc, typename _Up>
-- using __rebind = typename _Alloc::template rebind<_Up>::other;
-+ template<typename _Tp, typename _Up, typename = void>
-+ struct __rebind : __replace_first_arg<_Tp, _Up> { };
-
-+ template<typename _Tp, typename _Up>
-+ struct __rebind<_Tp, _Up,
-+ __void_t<typename _Tp::template rebind<_Up>::other>>
-+ { using type = typename _Tp::template rebind<_Up>::other; };
-+
- protected:
- template<typename _Tp>
- using __pointer = typename _Tp::pointer;
-@@ -57,10 +62,6 @@
- template<typename _Tp>
- using __cv_pointer = typename _Tp::const_void_pointer;
- template<typename _Tp>
-- using __diff_type = typename _Tp::difference_type;
-- template<typename _Tp>
-- using __size_type = typename _Tp::size_type;
-- template<typename _Tp>
- using __pocca = typename _Tp::propagate_on_container_copy_assignment;
- template<typename _Tp>
- using __pocma = typename _Tp::propagate_on_container_move_assignment;
-@@ -71,9 +72,8 @@
- };
-
- template<typename _Alloc, typename _Up>
-- using __alloc_rebind = __detected_or_t_<__replace_first_arg_t,
-- __allocator_traits_base::__rebind,
-- _Alloc, _Up>;
-+ using __alloc_rebind
-+ = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type;
+ template<typename _CharT, typename _Traits, typename _Alloc1>
+ void
+@@ -1065,13 +1054,13 @@
+
+ //@{
+ /// Self-explanatory.
+- dynamic_bitset<_WordT, _Alloc>
++ dynamic_bitset
+ operator<<(size_type __pos) const
+- { return dynamic_bitset<_WordT, _Alloc>(*this) <<= __pos; }
++ { return dynamic_bitset(*this) <<= __pos; }
+
+- dynamic_bitset<_WordT, _Alloc>
++ dynamic_bitset
+ operator>>(size_type __pos) const
+- { return dynamic_bitset<_WordT, _Alloc>(*this) >>= __pos; }
++ { return dynamic_bitset(*this) >>= __pos; }
+ //@}
- /**
- * @brief Uniform interface to all allocator types.
-@@ -94,6 +94,38 @@
- */
- using pointer = __detected_or_t<value_type*, __pointer, _Alloc>;
+ /**
+@@ -1102,14 +1091,14 @@
+ { return this->_M_is_proper_subset_of(__b); }
+
+ friend bool
+- operator==(const dynamic_bitset<_WordT, _Alloc>& __lhs,
+- const dynamic_bitset<_WordT, _Alloc>& __rhs)
+- { return __lhs._M_is_equal(__rhs); }
++ operator==(const dynamic_bitset& __lhs,
++ const dynamic_bitset& __rhs) noexcept
++ { return __lhs._M_Nb == __rhs._M_Nb && __lhs._M_is_equal(__rhs); }
+
+ friend bool
+- operator<(const dynamic_bitset<_WordT, _Alloc>& __lhs,
+- const dynamic_bitset<_WordT, _Alloc>& __rhs)
+- { return __lhs._M_is_less(__rhs); }
++ operator<(const dynamic_bitset& __lhs,
++ const dynamic_bitset& __rhs) noexcept
++ { return __lhs._M_is_less(__rhs) || __lhs._M_Nb < __rhs._M_Nb; }
+ };
-+ private:
-+ // Select _Func<_Alloc> or pointer_traits<pointer>::rebind<_Tp>
-+ template<template<typename> class _Func, typename _Tp, typename = void>
-+ struct _Ptr
-+ {
-+ using type = typename pointer_traits<pointer>::template rebind<_Tp>;
-+ };
-+
-+ template<template<typename> class _Func, typename _Tp>
-+ struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>>
-+ {
-+ using type = _Func<_Alloc>;
-+ };
-+
-+ // Select _A2::difference_type or pointer_traits<_Ptr>::difference_type
-+ template<typename _A2, typename _PtrT, typename = void>
-+ struct _Diff
-+ { using type = typename pointer_traits<_PtrT>::difference_type; };
+ template<typename _WordT, typename _Alloc>
+Index: libstdc++-v3/libsupc++/new_opa.cc
+===================================================================
+--- a/src/libstdc++-v3/libsupc++/new_opa.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/libsupc++/new_opa.cc (.../branches/gcc-9-branch)
+@@ -114,9 +114,10 @@
+ sz = 1;
+
+ #if _GLIBCXX_HAVE_ALIGNED_ALLOC
+-# ifdef _AIX
++# if defined _AIX || defined __APPLE__
+ /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement
+- * that alignment is a multiple of sizeof(void*). */
++ * that alignment is a multiple of sizeof(void*).
++ * OS X 10.15 has the same requirement. */
+ if (align < sizeof(void*))
+ align = sizeof(void*);
+ # endif
+Index: libstdc++-v3/libsupc++/eh_term_handler.h
+===================================================================
+--- a/src/libstdc++-v3/libsupc++/eh_term_handler.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/libsupc++/eh_term_handler.h (.../branches/gcc-9-branch)
+@@ -0,0 +1,39 @@
++// -*- C++ -*- default std::terminate handler
++// Copyright (C) 2002-2019 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.
++//
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
+
-+ template<typename _A2, typename _PtrT>
-+ struct _Diff<_A2, _PtrT, __void_t<typename _A2::difference_type>>
-+ { using type = typename _A2::difference_type; };
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
++// <http://www.gnu.org/licenses/>.
+
-+ // Select _A2::size_type or make_unsigned<_DiffT>::type
-+ template<typename _A2, typename _DiffT, typename = void>
-+ struct _Size : make_unsigned<_DiffT> { };
++#include <bits/c++config.h>
+
-+ template<typename _A2, typename _DiffT>
-+ struct _Size<_A2, _DiffT, __void_t<typename _A2::size_type>>
-+ { using type = typename _A2::size_type; };
++/* We default to the talkative, informative handler in a normal hosted
++ library. This pulls in the demangler, the dyn-string utilities, and
++ elements of the I/O library. For a low-memory environment, you can return
++ to the earlier "silent death" handler by configuring GCC with
++ --disable-libstdcxx-verbose and rebuilding the library.
++ In a freestanding environment, we default to this latter approach. */
+
-+ public:
- /**
- * @brief The allocator's const pointer type.
- *
-@@ -100,9 +132,7 @@
- * @c Alloc::const_pointer if that type exists, otherwise
- * <tt> pointer_traits<pointer>::rebind<const value_type> </tt>
- */
-- using const_pointer
-- = __detected_or_t<__ptr_rebind<pointer, const value_type>,
-- __c_pointer, _Alloc>;
-+ using const_pointer = typename _Ptr<__c_pointer, const value_type>::type;
-
- /**
- * @brief The allocator's void pointer type.
-@@ -110,8 +140,7 @@
- * @c Alloc::void_pointer if that type exists, otherwise
- * <tt> pointer_traits<pointer>::rebind<void> </tt>
- */
-- using void_pointer
-- = __detected_or_t<__ptr_rebind<pointer, void>, __v_pointer, _Alloc>;
-+ using void_pointer = typename _Ptr<__v_pointer, void>::type;
-
- /**
- * @brief The allocator's const void pointer type.
-@@ -119,9 +148,7 @@
- * @c Alloc::const_void_pointer if that type exists, otherwise
- * <tt> pointer_traits<pointer>::rebind<const void> </tt>
- */
-- using const_void_pointer
-- = __detected_or_t<__ptr_rebind<pointer, const void>, __cv_pointer,
-- _Alloc>;
-+ using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type;
-
- /**
- * @brief The allocator's difference type
-@@ -129,9 +156,7 @@
- * @c Alloc::difference_type if that type exists, otherwise
- * <tt> pointer_traits<pointer>::difference_type </tt>
- */
-- using difference_type
-- = __detected_or_t<typename pointer_traits<pointer>::difference_type,
-- __diff_type, _Alloc>;
-+ using difference_type = typename _Diff<_Alloc, pointer>::type;
-
- /**
- * @brief The allocator's size type
-@@ -139,9 +164,7 @@
- * @c Alloc::size_type if that type exists, otherwise
- * <tt> make_unsigned<difference_type>::type </tt>
- */
-- using size_type
-- = __detected_or_t<typename make_unsigned<difference_type>::type,
-- __size_type, _Alloc>;
-+ using size_type = typename _Size<_Alloc, difference_type>::type;
-
- /**
- * @brief How the allocator is propagated on copy assignment
-@@ -184,9 +207,6 @@
- template<typename _Tp>
- using rebind_traits = allocator_traits<rebind_alloc<_Tp>>;
-
-- static_assert(!is_same<rebind_alloc<value_type>, __undefined>::value,
-- "allocator defines rebind or is like Alloc<T, Args>");
++#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE && __cpp_exceptions
++# define _GLIBCXX_DEFAULT_TERM_HANDLER __gnu_cxx::__verbose_terminate_handler
++#else
++# include <cstdlib>
++# define _GLIBCXX_DEFAULT_TERM_HANDLER std::abort
++#endif
+Index: libstdc++-v3/libsupc++/eh_terminate.cc
+===================================================================
+--- a/src/libstdc++-v3/libsupc++/eh_terminate.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/libsupc++/eh_terminate.cc (.../branches/gcc-9-branch)
+@@ -26,6 +26,7 @@
+ #include "exception"
+ #include <cstdlib>
+ #include "unwind-cxx.h"
++#include "eh_term_handler.h"
+ #include <bits/exception_defines.h>
+ #include <bits/atomic_lockfree_defines.h>
+
+@@ -73,6 +74,9 @@
+ std::terminate_handler
+ std::set_terminate (std::terminate_handler func) throw()
+ {
++ if (!func)
++ func = _GLIBCXX_DEFAULT_TERM_HANDLER;
++
+ std::terminate_handler old;
+ #if ATOMIC_POINTER_LOCK_FREE > 1
+ __atomic_exchange (&__terminate_handler, &func, &old, __ATOMIC_ACQ_REL);
+@@ -100,6 +104,9 @@
+ std::unexpected_handler
+ std::set_unexpected (std::unexpected_handler func) throw()
+ {
++ if (!func)
++ func = std::terminate;
++
+ std::unexpected_handler old;
+ #if ATOMIC_POINTER_LOCK_FREE > 1
+ __atomic_exchange (&__unexpected_handler, &func, &old, __ATOMIC_ACQ_REL);
+Index: libstdc++-v3/libsupc++/eh_term_handler.cc
+===================================================================
+--- a/src/libstdc++-v3/libsupc++/eh_term_handler.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/libsupc++/eh_term_handler.cc (.../branches/gcc-9-branch)
+@@ -24,21 +24,8 @@
+
+ #include <bits/c++config.h>
+ #include "unwind-cxx.h"
++#include "eh_term_handler.h"
+
+-/* We default to the talkative, informative handler in a normal hosted
+- library. This pulls in the demangler, the dyn-string utilities, and
+- elements of the I/O library. For a low-memory environment, you can return
+- to the earlier "silent death" handler by configuring GCC with
+- --disable-libstdcxx-verbose and rebuilding the library.
+- In a freestanding environment, we default to this latter approach. */
+-
+-#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE && __cpp_exceptions
+ /* The current installed user handler. */
+ std::terminate_handler __cxxabiv1::__terminate_handler =
+- __gnu_cxx::__verbose_terminate_handler;
+-#else
+-# include <cstdlib>
+-/* The current installed user handler. */
+-std::terminate_handler __cxxabiv1::__terminate_handler = std::abort;
+-#endif
-
- private:
- template<typename _Alloc2>
- static auto
-Index: libstdc++-v3/libsupc++/nested_exception.h
-===================================================================
---- a/src/libstdc++-v3/libsupc++/nested_exception.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/libsupc++/nested_exception.h (.../branches/gcc-6-branch)
-@@ -115,7 +115,7 @@
- inline void
- throw_with_nested(_Tp&& __t)
- {
-- using _Up = typename remove_reference<_Tp>::type;
-+ using _Up = typename decay<_Tp>::type;
- using _CopyConstructible
- = __and_<is_copy_constructible<_Up>, is_move_constructible<_Up>>;
- static_assert(_CopyConstructible::value,
++ _GLIBCXX_DEFAULT_TERM_HANDLER;
Index: libstdc++-v3/ChangeLog
===================================================================
---- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,413 @@
-+2017-04-03 Ville Voutilainen <ville.voutilainen@gmail.com>
+--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,332 @@
++2019-10-28 John David Anglin <danglin@gcc.gnu.org>
+
-+ Backport from mainline
-+ 2017-04-03 Ville Voutilainen <ville.voutilainen@gmail.com>
-+
-+ PR libstdc++/79141
-+ * include/bits/stl_pair.h (__nonesuch_no_braces): New.
-+ (operator=(typename conditional<
-+ __and_<is_copy_assignable<_T1>,
-+ is_copy_assignable<_T2>>::value,
-+ const pair&, const __nonesuch&>::type)): Change __nonesuch
-+ to __nonesuch_no_braces.
-+ (operator=(typename conditional<
-+ __not_<__and_<is_copy_assignable<_T1>,
-+ is_copy_assignable<_T2>>>::value,
-+ const pair&, const __nonesuch&>::type)): Likewise.
-+ (operator=(typename conditional<
-+ __and_<is_move_assignable<_T1>,
-+ is_move_assignable<_T2>>::value,
-+ pair&&, __nonesuch&&>::type)): Likewise.
-+ * testsuite/20_util/pair/79141.cc: New.
-+
-+2017-03-28 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/80137
-+ * include/bits/random.tcc (generate_canonical): Use std::nextafter
-+ or numeric_limits::epsilon() to reduce out-of-range values.
-+ * testsuite/26_numerics/random/uniform_real_distribution/operators/
-+ 64351.cc: Verify complexity requirement is met.
++ * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
++
++2019-10-24 Jonathan Wakely <jwakely@redhat.com>
+
+ Backport from mainline
-+ 2017-03-15  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
-+
-+ PR libstdc++/62045
-+ * include/ext/pb_ds/qdetail/binary_heap_/binary_heap_.hpp
-+ (is_heap): Remove.
-+ (push_heap): Remove the wrong checking using is_heap.
-+ (make_heap): Remove the assertion using is_heap.
-+ * include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
-+ (modify): Ditto.
-+ (resize_for_insert_if_needed): Add PB_DS_ASSERT_VALID after
-+ calling make_heap.
++ 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
++
++ PR libstdc++/90682
++ * libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
++ definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
++ * libsupc++/eh_term_handler.h: New header defining
++ _GLIBCXX_DEFAULT_TERM_HANDLER.
++ * libsupc++/eh_terminate.cc: Include eh_term_handler.h.
++ (set_terminate): Restore default handler when argument is null.
++ (set_unexpected): Likewise.
++ * testsuite/18_support/set_terminate.cc: New test.
++ * testsuite/18_support/set_unexpected.cc: New test.
+
+ Backport from mainline
-+ 2017-03-15 Jonathan Wakely <jwakely@redhat.com>
++ 2019-05-01 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR libstdc++/62045
-+ * testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc:
-+ New test.
-+ * testsuite/ext/pb_ds/regression/priority_queues.cc: Fix copy&paste
-+ error in comment.
++ PR libstdc++/61761
++ * include/std/complex (__complex_proj): Return parameter unchanged.
++ [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for
++ floating-point types to take std::complex arguments.
++ [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for
++ floating-point types.
++ * testsuite/26_numerics/complex/proj.cc: New test.
+
+ Backport from mainline
-+ 2017-02-23 Jonathan Wakely <jwakely@redhat.com>
++ 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
+
-+ * include/experimental/iterator: Include <iterator>.
-+ * testsuite/experimental/iterator/requirements.cc: Check for contents
-+ of <iterator>.
-+
-+2017-03-17 Jonathan Wakely <jwakely@redhat.com>
++ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
++ dg-prune-output for different C++98 diagnostic.
++ * testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
++ Likewise.
++ * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
++ Likewise.
++ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
++ Likewise.
++ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
++ Likewise.
++ * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
++ Likewise.
++ * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
++ Likewise.
++ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
++ Likewise.
++ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
++ Likewise.
++ * testsuite/23_containers/vector/requirements/dr438/
++ constructor_1_neg.cc: Likewise.
++ * testsuite/23_containers/vector/requirements/dr438/
++ constructor_2_neg.cc: Likewise.
++ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
++ Likewise.
++ * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
+
+ Backport from mainline
-+ 2017-03-17 Jonathan Wakely <jwakely@redhat.com>
-+
-+ * src/c++11/codecvt.cc (range): Add non-type template parameter and
-+ define oerloaded operators for reading and writing code units.
-+ (range<Elem, false>): Define partial specialization for accessing
-+ wide characters in potentially unaligned byte ranges.
-+ (ucs2_span(const char16_t*, const char16_t*, ...))
-+ (ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters
-+ to range<const char16_t, false> in order to avoid unaligned reads.
-+ (__codecvt_utf16_base<char16_t>::do_out)
-+ (__codecvt_utf16_base<char32_t>::do_out)
-+ (__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for
-+ unaligned data to avoid unaligned writes.
-+ (__codecvt_utf16_base<char16_t>::do_in)
-+ (__codecvt_utf16_base<char32_t>::do_in)
-+ (__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return
-+ error if there are unprocessable trailing bytes.
-+ (__codecvt_utf16_base<char16_t>::do_length)
-+ (__codecvt_utf16_base<char32_t>::do_length)
-+ (__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type
-+ range<const char16_t, false> to span functions.
-+ * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test.
++ 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
++
++ * testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
++ void.
++ * testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
++ include Library Fundamentals or Networking headers in C++11 mode.
++ * testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.
+
+ Backport from mainline
-+ 2017-03-16 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/79980
-+ * src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type.
-+
-+ PR libstdc++/80041
-+ * src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out)
-+ (__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to
-+ char16_t to work with UTF-16 instead of UTF-8.
-+ * testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test.
-+
-+ * src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>)
-+ (codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>)
-+ (__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>)
-+ (__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>)
-+ (__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>)
-+ (__codecvt_utf8_utf16_base<char32_t>)
-+ (__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and
-+ do_max_length() return values.
-+ * testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test.
-+ * testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test.
-+ * testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test.
-+
-+ PR libstdc++/79980
-+ * include/bits/locale_conv.h (__do_str_codecvt): Set __count on
-+ error path.
-+ * src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads
-+ for manipulating codecvt_mode values.
-+ (read_utf16_bom): Compare input to BOM constants instead of integral
-+ constants that depend on endianness. Take mode parameter by
-+ reference and adjust it, to distinguish between no BOM present and
-+ UTF-16BE BOM present.
-+ (ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom.
-+ (surrogates): New enumeration type.
-+ (utf16_in, utf16_out): Add surrogates parameter to choose between
-+ UTF-16 and UCS2 behaviour.
-+ (utf16_span, ucs2_span): Use std::min not std::max.
-+ (ucs2_out): Use std::min not std::max. Disallow surrogate pairs.
-+ (ucs2_in): Likewise. Adjust calls to read_utf16_bom.
-+ * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test.
-+ * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test.
-+
-+ PR libstdc++/79511
-+ * src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff
-+ as a surrogate pair.
-+ (__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness
-+ for internal representation.
-+ (__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise.
-+ * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test.
-+
-+2017-03-14 Jonathan Wakely <jwakely@redhat.com>
-+
-+ * testsuite/17_intro/names.cc: Undefine macros that clash with
-+ identifiers in AIX system headers.
-+
-+2017-03-13 Ville Voutilainen <ville.voutilainen@gmail.com>
-+
-+ PR libstdc++/80034
-+ * include/bits/list.tcc (merge(list&&)): Use const for the size_t
-+ in the function and in the catch-block, qualify uses of std::distance.
-+ (merge(list&&, _StrictWeakOrdering)): Likewise.
-+ * testsuite/23_containers/list/operations/80034.cc: New.
-+
-+2017-03-10 George Lander <george.lander@arm.com>
-+
-+ * acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
-+ _GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
-+ * configure: Regenerate.
++ 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
+
-+2017-03-02 Jonathan Wakely <jwakely@redhat.com>
++ * testsuite/util/testsuite_allocator.h (memory_resource)
++ (default_resource_mgr): Fix indentation.
+
-+ PR libstdc++/79789
-+ * include/bits/ios_base.h (make_error_code, make_error_condition):
-+ Likewise.
-+ * include/bits/mask_array.h (mask_array): Likewise.
-+ * include/bits/regex.h (regex_token_iterator): Likewise.
-+ * include/bits/slice_array.h (slice_array): Likewise.
-+ * include/std/memory (undeclare_no_pointers): Likewise.
-+ * testsuite/17_intro/names.cc: New test.
++ Backport from mainline
++ 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
++
++ PR libstdc++/89164
++ * include/bits/stl_algobase.h (__copy_move): Give descriptive names
++ to template parameters.
++ * include/bits/stl_uninitialized.h (uninitialized_copy)
++ (uninitialized_fill, uninitialized_fill_n): Add static assertions to
++ diagnose invalid uses.
++ * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
++ Adjust expected error.
++ * testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
++ New test.
++ * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
++ 89164.cc: New test.
++ * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
++ New test.
++ * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
++ 89164.cc: New test.
++ * testsuite/23_containers/vector/cons/89164.cc: New test.
++ * testsuite/23_containers/vector/cons/89164_c++17.cc: New test.
+
-+2017-02-15 Jonathan Wakely <jwakely@redhat.com>
++ Backport from mainline
++ 2019-10-22 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR libstdc++/79114
-+ * testsuite/18_support/nested_exception/79114.cc: Add dg-require.
++ * include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
++ * testsuite/17_intro/names.cc: Check uses_allocator in C++98.
+
+ Backport from mainline
-+ 2016-12-15 Jonathan Wakely <jwakely@redhat.com>
++ 2019-10-18 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR libstdc++/59170
-+ * python/libstdcxx/v6/printers.py (StdListIteratorPrinter.to_string)
-+ (StdSlistIteratorPrinter.to_string, StdVectorIteratorPrinter.to_string)
-+ (StdRbtreeIteratorPrinter.to_string)
-+ (StdDequeIteratorPrinter.to_string): Add check for value-initialized
-+ iterators.
-+ * testsuite/libstdc++-prettyprinters/simple.cc: Test them.
-+ * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
++ PR libstdc++/92143
++ * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
++ to at least sizeof(void*).
+
+ Backport from mainline
-+ 2016-12-15 Jonathan Wakely <jwakely@redhat.com>
++ 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR libstdc++/59161
-+ * python/libstdcxx/v6/printers.py (StdListIteratorPrinter.to_string)
-+ (StdSlistIteratorPrinter.to_string, StdVectorIteratorPrinter.to_string)
-+ (StdRbtreeIteratorPrinter.to_string, StdDequeIteratorPrinter.to_string)
-+ (StdDebugIteratorPrinter.to_string): Return string instead of
-+ gdb.Value.
-+ * testsuite/libstdc++-prettyprinters/59161.cc: New test.
++ * testsuite/23_containers/unordered_map/requirements/debug_container.cc:
++ Do not test allocator rebinding extension for C++2a.
++ * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
++ dg-do directive for C++17 and C++2a.
+
+ Backport from mainline
-+ 2016-12-15 Jonathan Wakely <jwakely@redhat.com>
++ 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
+
-+ * python/libstdcxx/v6/printers.py (UniquePointerPrinter.to_string):
-+ Remove redundant parentheses.
-+ (RbtreeIterator, StdRbtreeIteratorPrinter): Add docstrings.
-+ (StdForwardListPrinter.to_string): Remove redundant parentheses.
-+ (StdExpOptionalPrinter.to_string): Use string formatting instead of
-+ concatenation.
-+ (TemplateTypePrinter): Adjust whitespace.
++ * testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
++ Move C++17-specific tests to ...
++ * testsuite/20_util/function_objects/invoke/3.cc: New test.
++ * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
++ "compile" test to "run".
+
+ Backport from mainline
-+ 2016-12-15 Jonathan Wakely <jwakely@redhat.com>
-+
-+ * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker.__init__): Use
-+ correct element type for unique_ptr<T[]>.
-+ (UniquePtrGetWorker._supports, UniquePtrDerefWorker._supports): New
-+ functions to disable unsupported operators for unique_ptr<T[]>.
-+ (UniquePtrSubscriptWorker): New worker for operator[].
-+ (UniquePtrMethodsMatcher.__init__): Register UniquePtrSubscriptWorker.
-+ (UniquePtrMethodsMatcher.match): Call _supports on the chosen worker.
-+ (SharedPtrGetWorker, SharedPtrDerefWorker, SharedPtrSubscriptWorker)
-+ (SharedPtrUseCountWorker, SharedPtrUniqueWorker): New workers.
-+ (SharedPtrMethodsMatcher): New matcher for shared_ptr.
-+ (register_libstdcxx_xmethods): Register SharedPtrMethodsMatcher.
-+ * testsuite/libstdc++-xmethods/unique_ptr.cc: Test arrays.
-+ * testsuite/libstdc++-xmethods/shared_ptr.cc: New test.
-+
-+2017-02-14 Jonathan Wakely <jwakely@redhat.com>
++ 2019-10-08 Jonathan Wakely <jwakely@redhat.com>
+
-+ Backport from mainline
-+ 2017-01-20 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/72792
-+ * include/bits/alloc_traits.h (__allocator_traits_base::__diff_type)
-+ (__allocator_traits_base::__size_type): Remove.
-+ (allocator_traits::_Ptr): New class template to detect const and void
-+ pointer types without instantiating pointer_traits::rebind
-+ unnecessarily.
-+ (allocator_traits::_Diff): Likewise for detecting difference_type.
-+ (allocator_traits::_Size): New class template to detect size_type
-+ without instantiating make_unsigned unnecessarily.
-+ * include/bits/ptr_traits.h (pointer_traits::element_type): Use
-+ __detected_or_t instead of __detected_or_t_.
-+ * include/std/type_traits (__detected_or_t_): Remove.
-+ * testsuite/20_util/allocator_traits/members/pointers.cc: New test.
++ * doc/Makefile.am (doc-html-docbook-regenerate): New target.
++ (${docbook_outdir}/html): Do not create unused 'html/ext' directory.
++ * doc/Makefile.in: Regenerate.
++ * doc/xml/manual/documentation_hacking.xml: Document new target.
++ * doc/html/*: Regenerate.
+
-+ Backport from mainline
-+ 2017-01-20 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/72792
-+ PR libstdc++/72793
-+ * include/bits/alloc_traits.h (__allocator_traits_base::__rebind):
-+ Replace with class template using void_t.
-+ (__alloc_rebind): Define in terms of
-+ __allocator_traits_base::__rebind.
-+ (allocator_traits): Remove unconditional static_assert for
-+ rebind_alloc.
-+ * include/bits/ptr_traits.h (__replace_first_arg): Remove type member.
-+ (pointer_traits::__rebind): Replace with class template using void_t.
-+ (pointer_traits::rebind): Define in terms of __rebind.
-+ (pointer_traits): Remove unconditional static_assert for rebind.
-+ * testsuite/20_util/allocator_traits/members/rebind_alloc.cc: New test.
-+ * testsuite/20_util/pointer_traits/rebind.cc: New test.
++ * doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
+
+ Backport from mainline
-+ 2017-01-20 Jonathan Wakely <jwakely@redhat.com>
++ 2019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
+
-+ PR libstdc++/69321
-+ * include/experimental/any (__any_caster): Avoid instantiating
-+ manager function for types that can't be stored in any.
-+ * testsuite/experimental/any/misc/any_cast.cc: Test non-copyable type.
++ * doc/xml/manual/allocator.xml: Move hoard.org back to http.
+
+ Backport from mainline
-+ 2017-01-18 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/69301
-+ * include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use
-+ aligned buffer instead of default-initialized variable.
-+ * testsuite/29_atomics/atomic/69301.cc: New test.
-+ * include/experimental/memory (observer_ptr::release): Use reserved
-+ name.
-+ * include/ext/pointer.h (_Pointer_adapter::operator++(int))
-+ (_Pointer_adapter::operator--(int)): Likewise.
++ 2019-08-15 Jonathan Wakely <jwakely@redhat.com>
++
++ PR libstdc++/91456
++ * include/bits/std_function.h (__check_func_return_type): Remove.
++ (function::_Callable): Use std::__is_invocable_impl instead of
++ __check_func_return_type.
++ * include/std/type_traits (__is_invocable_impl): Add another defaulted
++ template parameter. Define a separate partial specialization for
++ INVOKE and INVOKE<void>. For INVOKE<R> replace is_convertible check
++ with a check that models delayed temporary materialization.
++ * testsuite/20_util/function/91456.cc: New test.
++ * testsuite/20_util/is_invocable/91456.cc: New test.
+
+ Backport from mainline
-+ 2017-01-17 Jonathan Wakely <jwakely@redhat.com>
++ 2019-09-30 Andreas Tobler <andreast@gcc.gnu.org>
+
-+ PR libstdc++/79114
-+ * libsupc++/nested_exception.h (throw_with_nested): Use decay instead
-+ of remove_reference.
-+ * testsuite/18_support/nested_exception/79114.cc: New test.
++ * include/experimental/internet: Include netinet/in.h if we have
++ _GLIBCXX_HAVE_NETINET_IN_H defined.
+
+ Backport from mainline
-+ 2017-01-16 Jonathan Wakely <jwakely@redhat.com>
++ 2019-09-26 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR libstdc++/78702
-+ * include/bits/locale_classes.h (locale::facet::__shim): Change from
-+ private to protected.
-+ * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
-+ make locale::facet::__shim accessible.
++ * include/experimental/internet (operator==, operator<): Fix loop
++ condition to avoid reading past the end of the array.
+
+ Backport from mainline
-+ 2017-01-11 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/78134
-+ * include/bits/stl_map.h (map::lower_bound, map::upper_bound)
-+ (map::equal_range): Fix return type of heterogeneous overloads.
-+ * include/bits/stl_multimap.h (multimap::lower_bound)
-+ (multimap::upper_bound, multimap::equal_range): Likewise.
-+ * include/bits/stl_multiset.h (multiset::lower_bound)
-+ (multiset::upper_bound, multiset::equal_range): Likewise.
-+ * include/bits/stl_set.h (set::lower_bound, set::upper_bound)
-+ (set::equal_range): Likewise.
-+ * testsuite/23_containers/map/operations/2.cc: Check return types.
-+ * testsuite/23_containers/multimap/operations/2.cc: Likewise.
-+ * testsuite/23_containers/multiset/operations/2.cc: Likewise.
-+ * testsuite/23_containers/set/operations/2.cc: Likewise.
++ 2019-08-06 Jonathan Wakely <jwakely@redhat.com>
++
++ P1651R0 bind_front should not unwrap reference_wrapper
++ * include/std/functional (bind_front): Don't unwrap reference_wrapper.
++ * include/std/version (__cpp_lib_bind_front): Update value.
++ * testsuite/20_util/function_objects/bind_front/1.cc: Fix test for
++ feature test macro.
++ * testsuite/20_util/function_objects/bind_front/2.cc: New test.
+
+ Backport from mainline
-+ 2017-01-11 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/78273
-+ * include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume
-+ the heterogeneous comparison can only find one match.
-+ * include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise.
-+ * testsuite/23_containers/map/operations/2.cc: Test count works with
-+ comparison function that just partitions rather than sorting.
-+ * testsuite/23_containers/set/operations/2.cc: Likewise.
-+
-+2017-02-01 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/78346
-+ * include/bits/predefined_ops.h (_Iter_equals_iter): Store iterator
-+ not its referent.
-+ (_Iter_comp_to_iter): Likewise.
-+ * testsuite/25_algorithms/search/78346.cc: New test.
-+
-+ PR libstdc++/79195
-+ * include/experimental/array (make_array): Use common_type<_Dest>
-+ and delay instantiation of common_type until after conditional_t.
-+ Qualify std::forward call.
-+ (to_array): Add exception specification.
-+ * testsuite/experimental/array/make_array.cc: Test argument types
-+ without a common type.
-+
-+ PR libstdc++/79254
-+ * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
-+ (basic_string::operator=(const basic_string&)): If source object is
-+ small just deallocate, otherwise perform new allocation before
-+ making any changes.
-+ * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
-+ Test exception-safety of copy assignment when allocator propagates.
-+ * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
++ 2019-10-11 Jonathan Wakely <jwakely@redhat.com>
++
++ PR libstdc++/92059
++ * include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
++ special member functions as defaulted. Add noexcept to most members.
++ (__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
++ Mask off unwanted bits in the __val parameter. Avoid undefined left
++ shifts.
++ (__dynamic_bitset_base::_M_assign): Remove.
++ (__dynamic_bitset_base::_M_do_reset): Use std::fill.
++ (__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
++ block_type has lower rank than int.
++ (dynamic_bitset): Add noexcept to most members. Use injected-class-name
++ in return types and parameter types.
++ (dynamic_bitset::_M_Nb): Add default member initializer.
++ (dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
++ defaulted.
++ (dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
++ (dynamic_bitset::operator=(const dynamic_bitset&)): Define as
++ defaulted.
++ (dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
++ Define without using swap, to propagate allocator correctly.
++ (dynamic_bitset(const char*, const _Alloc&)): Use strlen.
++ (dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
++ casts to avoid unwanted integer promotions.
++ (dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
++ add default template arguments and default argument to simplify usage.
++ (dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
++ (operator==(const dynamic_bitset&, const dynamic_bitset&))
++ (operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
++ * include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
++ Adjust template parameters to match declaration.
++ * testsuite/tr2/dynamic_bitset/cmp.cc: New test.
++ * testsuite/tr2/dynamic_bitset/cons.cc: New test.
++ * testsuite/tr2/dynamic_bitset/copy.cc: New test.
++ * testsuite/tr2/dynamic_bitset/move.cc: New test.
++ * testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
++
++2019-09-12 Jonathan Wakely <jwakely@redhat.com>
++
++ PR libstdc++/91748
++ * include/bits/stl_algo.h (for_each_n): Fix random access iterator
++ case.
++ * testsuite/25_algorithms/for_each/for_each_n.cc: Test with random
++ access iterators.
++
++2019-09-11 Jonathan Wakely <jwakely@redhat.com>
++
++ * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__):
++ Fix syntax error.
++
++2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
++
++ Update docs for p858 - Constexpr iterator changes available since 9.1.
++ * doc/xml/manual/status_cxx2020.xml: Update p0858r0 status.
++
++2019-09-02 Jonathan Wakely <jwakely@redhat.com>
++
++ * doc/xml/manual/abi.xml: Document 9.x library versions.
++ * doc/html/*: Regenerate.
++
++2019-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
++ * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
++ * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
++ * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
++ * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
++ * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
++ Likewise.
++ * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
++ * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
+ Likewise.
-+ * testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
-+ std::swap visible.
+
-+2017-01-22 Gerald Pfeifer <gerald@pfeifer.com>
++2019-08-29 Jonathan Wakely <jwakely@redhat.com>
+
-+ Backport from mainline
-+ 2017-01-01 Gerald Pfeifer <gerald@pfeifer.com>
++ PR libstdc++/91067
++ * acinclude.m4 (libtool_VERSION): Bump to 6:28:0.
++ * configure: Regenerate.
++ * config/abi/pre/gnu.ver (GLIBCXX_3.4.28): Add new version. Export
++ missing symbols.
++ * testsuite/27_io/filesystem/iterators/91067.cc: Test move
++ constructors.
++ * testsuite/util/testsuite_abi.cc: Add new symbol version.
+
-+ * doc/xml/faq.xml: Update address of C++ ABI link.
-+ * doc/xml/manual/abi.xml: Ditto.
-+
-+2017-01-16 Ville Voutilainen <ville.voutilainen@gmail.com>
++2019-08-29 Jakub Jelinek <jakub@redhat.com
+
-+ Backport from mainline
-+ 2017-01-16 Ville Voutilainen <ville.voutilainen@gmail.com>
++ * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
++ * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
+
-+ PR libstdc++/78389
-+ * include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
-+ (merge(list&&, _StrictWeakOrdering)): Likewise.
-+ * testsuite/23_containers/list/operations/78389.cc: Add
-+ better test for the sizes.
++2019-08-28 Jonathan Wakely <jwakely@redhat.com>
+
-+2017-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
++ * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
++ * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
++ * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
++ * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
++ * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
++ * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
++ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
+
-+ Backport from mainline
-+ 2017-01-13 Ville Voutilainen <ville.voutilainen@gmail.com>
++2019-08-23 Joseph Myers <joseph@codesourcery.com>
+
-+ PR libstdc++/78389
-+ * include/bits/list.tcc (merge(list&&)):
-+ Adjust list sizes if the comparator throws.
-+ (merge(list&&, _StrictWeakOrdering)): Likewise.
-+ * testsuite/23_containers/list/operations/78389.cc: New.
++ * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
++ (std::filesystem::__gnu_posix::lstat): Add return type.
+
-+2017-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
++2019-08-20 Jonathan Wakely <jwakely@redhat.com>
+
-+ Backport from mainline
-+ 2016-12-19 Ville Voutilainen <ville.voutilainen@gmail.com>
++ * include/std/numeric (reduce): Fix Doxygen markup.
+
-+ Make the perfect-forwarding constructor of a two-element tuple
-+ sfinae away when the first argument is an allocator_arg.
-+ * include/std/tuple (tuple(_U1&&, _U2&&)): Constrain.
-+ * testsuite/20_util/tuple/cons/allocator_with_any.cc: New.
++ Backport from mainline
++ 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
+
-+2017-01-06 Jonathan Wakely <jwakely@redhat.com>
++ * include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value
++ category used in invocable check.
++ (reduce(Iter, Iter, T)): Pass initial value as rvalue.
++ * testsuite/26_numerics/reduce/2.cc: New test.
+
+ Backport from mainline
-+ 2017-01-03 Jonathan Wakely <jwakely@redhat.com>
-+
-+ PR libstdc++/78956
-+ * include/std/thread (thread(const thread&&)): Add deleted
-+ constructor.
-+ * testsuite/30_threads/thread/cons/lwg2097.cc: New test.
++ 2019-06-18 Jonathan Wakely <jwakely@redhat.com>
++
++ * include/bits/algorithmfwd.h: Change title of doc group.
++ * include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from
++ P0024R2.
++ * include/bits/stl_numeric.h: Define doc group and add algos to it.
++ * include/std/numeric (__is_random_access_iter): New internal trait.
++ (reduce, transform_reduce, exclusive_scan, inclusive_scan)
++ (transform_exclusive_scan, transform_inclusive_scan): Likewise.
++ * testsuite/25_algorithms/for_each/for_each_n.cc: New test.
++ * testsuite/26_numerics/exclusive_scan/1.cc: New test.
++ * testsuite/26_numerics/inclusive_scan/1.cc: New test.
++ * testsuite/26_numerics/reduce/1.cc: New test.
++ * testsuite/26_numerics/transform_exclusive_scan/1.cc: New test.
++ * testsuite/26_numerics/transform_inclusive_scan/1.cc: New test.
++ * testsuite/26_numerics/transform_reduce/1.cc: New test.
++ * testsuite/util/testsuite_iterators.h (test_container::size()): New
++ member function.
++
++2019-08-20 Uros Bizjak <ubizjak@gmail.com>
++
++ * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
++
++2019-08-13 Jonathan Wakely <jwakely@redhat.com>
+
-+2017-01-06 Jonathan Wakely <jwakely@redhat.com>
++ Backport from mainline
++ 2019-08-12 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR libstdc++/78991
-+ * include/bits/predefined_ops.h (_Iter_comp_iter, _Iter_comp_val)
-+ (_Val_comp_iter, _Iter_equals_val, _Iter_pred, _Iter_comp_to_val)
-+ (_Iter_comp_to_iter, _Iter_negate): Make constructors explicit.
-+ * testsuite/25_algorithms/sort/78991.cc: New test.
++ PR libstdc++/90361
++ * src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default.
+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
-Index: libstdc++-v3/testsuite/25_algorithms/search/78346.cc
+ * GCC 9.2.0 released.
+Index: libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/25_algorithms/search/78346.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/25_algorithms/search/78346.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,118 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,88 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -3622,113 +2631,80 @@ Index: libstdc++-v3/testsuite/25_algorithms/search/78346.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
-+
+#include <algorithm>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
+
-+bool values[100];
-+
-+unsigned next_id()
-+{
-+ static unsigned counter = 0;
-+ VERIFY(counter < 100);
-+ return counter++;
-+}
-+
-+struct value
++void test01()
+{
-+ int val;
-+ const unsigned id;
++ using __gnu_test::test_container;
++ using __gnu_test::input_iterator_wrapper;
++ int array[5] = { 1, 2, 3, 4, 5 };
++ test_container<int, input_iterator_wrapper> con(array);
+
-+ value(int i = 0) : val(i), id(next_id()) { values[id] = true; }
-+ value(const value& v) : val(v.val), id(next_id()) { values[id] = true; }
-+ value& operator=(const value& v) { val = v.val; return *this; }
-+ ~value() { values[id] = false; }
-+};
++ int sum = 0;
++ struct Func
++ {
++ Func(int& i) : i(i) { }
++ Func(Func&&) = default;
++ Func& operator=(Func&&) = delete;
++ void operator()(int n) const { i += n; }
++ int& i;
++ };
+
-+bool operator<(const value& lhs, const value& rhs)
-+{
-+ if (!values[lhs.id])
-+ throw lhs.id;
-+ if (!values[rhs.id])
-+ throw rhs.id;
-+ return lhs.val < rhs.val;
-+}
++ struct Size
++ {
++ Size(short v) : val(v) { }
++ operator short() const { return val; }
++ short val;
++ };
++ auto res = std::for_each_n(con.begin(), Size(con.size()), Func(sum));
+
-+bool operator==(const value& lhs, const value& rhs)
-+{
-+ if (!values[lhs.id])
-+ throw lhs.id;
-+ if (!values[rhs.id])
-+ throw rhs.id;
-+ return lhs.val == rhs.val;
++ VERIFY( res == con.end() );
++ VERIFY( sum == 15 );
+}
+
-+// A forward iterator that fails to meet the requirement that for any
-+// two dereferenceable forward iterators, a == b implies &*a == &*b
-+struct stashing_iterator
++void
++test02()
+{
-+ typedef std::forward_iterator_tag iterator_category;
-+ typedef value value_type;
-+ typedef value_type const* pointer;
-+ typedef value_type const& reference;
-+ typedef std::ptrdiff_t difference_type;
-+
-+ stashing_iterator() : ptr(), stashed() { }
-+ stashing_iterator(pointer p) : ptr(p), stashed() { stash(); }
-+ stashing_iterator(const stashing_iterator&) = default;
-+ stashing_iterator& operator=(const stashing_iterator&) = default;
-+
-+ stashing_iterator& operator++()
-+ {
-+ ++ptr;
-+ stash();
-+ return *this;
-+ }
++ using __gnu_test::test_container;
++ using __gnu_test::random_access_iterator_wrapper;
++ int array[5] = { 2, 4, 6, 8, 10 };
++ test_container<int, random_access_iterator_wrapper> con(array);
+
-+ stashing_iterator operator++(int)
++ int prod = 1;
++ struct Func
+ {
-+ stashing_iterator i = *this;
-+ ++*this;
-+ return i;
-+ }
-+
-+ reference operator*() const { return stashed; }
-+ pointer operator->() const { return &**this; }
-+
-+ bool operator==(const stashing_iterator& i) const { return ptr == i.ptr; }
-+ bool operator!=(const stashing_iterator& i) const { return !(*this == i); }
++ Func(int& i) : i(i) { }
++ Func(Func&&) = default;
++ Func& operator=(Func&&) = delete;
++ void operator()(int n) const { i *= n; }
++ int& i;
++ };
+
-+private:
-+ void stash()
++ struct Size
+ {
-+ if (ptr)
-+ stashed = *ptr;
-+ }
-+
-+ pointer ptr;
-+ value_type stashed;
-+};
++ Size(short v) : val(v) { }
++ operator short() const { return val; }
++ short val;
++ };
++ auto res = std::for_each_n(con.begin(), Size(con.size()), Func(prod));
+
-+void
-+test01()
-+{
-+ value s[] = { 0, 1, 2, 3, 4, 5 };
-+ std::search(s, s+6, stashing_iterator(s), stashing_iterator(s+4));
++ VERIFY( res == con.end() );
++ VERIFY( prod == 3840 );
+}
+
-+int
-+main()
++int main()
+{
+ test01();
++ test02();
+}
-Index: libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
+Index: libstdc++-v3/testsuite/18_support/set_terminate.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/25_algorithms/sort/78991.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/25_algorithms/sort/78991.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,40 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/18_support/set_terminate.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/18_support/set_terminate.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,57 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -3745,35 +2721,52 @@ Index: libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do compile { target c++14 } }
++// { dg-options "-std=gnu++11" }
++// { dg-do run }
+
-+// PR 78991
-+// This failed to compile with Clang because the result_of expression causes
-+// instantiation of _Iter_comp_iter::operator() outside the immediate context.
++#include <exception>
++#include <testsuite_hooks.h>
+
-+#include <algorithm>
++void term_handler() { __builtin_abort(); }
+
-+struct function
++void
++test01()
+{
-+ function() = default;
++ const std::terminate_handler orig = std::get_terminate();
++ VERIFY( orig != 0 ); // GNU-specific behaviour
+
-+ template<typename F, typename = std::result_of_t<F&(int, int)>>
-+ function(F) { }
++ std::terminate_handler prev = std::set_terminate(term_handler);
++ VERIFY( std::get_terminate() == term_handler );
++ VERIFY( prev == orig );
+
-+ bool operator()(int x, int y) const { return x < y; }
-+};
++ prev = std::set_terminate(orig);
++ VERIFY( std::get_terminate() == orig );
++ VERIFY( prev == term_handler );
++}
+
-+int main()
++void
++test02()
+{
-+ int a[2]{ 2, 1 };
-+ std::sort(a, a+2, function{});
++ // PR libstdc++/90682
++ std::set_terminate(0); // Undefined in C++98, unspecified in C++11 and later
++ const std::terminate_handler dfault = std::get_terminate();
++ VERIFY( dfault != 0 ); // GNU-specific behaviour
++ const std::terminate_handler prev = std::set_terminate(0);
++ VERIFY( prev == dfault );
++}
++
++int
++main()
++{
++ test01();
++ test02();
+}
-Index: libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
+Index: libstdc++-v3/testsuite/18_support/set_unexpected.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/18_support/nested_exception/79114.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/18_support/nested_exception/79114.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,28 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/18_support/set_unexpected.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/18_support/set_unexpected.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,57 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -3790,99 +2783,75 @@ Index: libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do compile { target c++11 } }
-+// { dg-require-atomic-builtins "" }
++// { dg-options "-std=gnu++11" }
++// { dg-do run { target { c++11_only || c++14_only } } }
+
+#include <exception>
++#include <testsuite_hooks.h>
++
++void unex_handler() { __builtin_abort(); }
+
+void
+test01()
+{
-+ std::throw_with_nested("");
-+ std::throw_with_nested(test01);
++ const std::unexpected_handler orig = std::get_unexpected();
++ VERIFY( orig == std::terminate ); // GNU-specific behaviour
++
++ std::unexpected_handler prev = std::set_unexpected(unex_handler);
++ VERIFY( std::get_unexpected() == unex_handler );
++ VERIFY( prev == orig );
++
++ prev = std::set_unexpected(orig);
++ VERIFY( std::get_unexpected() == orig );
++ VERIFY( prev == unex_handler );
+}
-Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
++
++void
++test02()
++{
++ // PR libstdc++/90682
++ std::set_unexpected(0); // Undefined in C++98, unspecified in C++11 and C++14
++ const std::unexpected_handler dfault = std::get_unexpected();
++ VERIFY( dfault == std::terminate ); // GNU-specific behaviour
++ const std::unexpected_handler prev = std::set_unexpected(0);
++ VERIFY( prev == dfault );
++}
++
++int
++main()
++{
++ test01();
++ test02();
++}
+Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc (.../branches/gcc-6-branch)
-@@ -30,6 +30,7 @@
- #include <list>
- #include <map>
- #include <set>
-+#include <vector>
- #include <ext/slist>
+--- a/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc (.../branches/gcc-9-branch)
+@@ -1,5 +1,5 @@
+ // { dg-options "-g -O0" }
+-// { dg-do run }
++// { dg-do run { target c++11 } }
+ // { dg-skip-if "" { *-*-* } { "-D_GLIBCXX_PROFILE" } }
- int
-@@ -53,6 +54,9 @@
- std::deque<std::string>::iterator deqiter = deq.begin();
- // { dg-final { note-test deqiter {"one"} } }
-
-+ std::deque<int>::iterator deqiter0;
-+// { dg-final { note-test deqiter0 {non-dereferenceable iterator for std::deque} } }
-+
- std::list<std::string> lst;
- lst.push_back("one");
- lst.push_back("two");
-@@ -66,6 +70,9 @@
- tem = *lstciter;
- // { dg-final { note-test lstciter {"one"}} }
-
-+ std::list<int>::iterator lstiter0;
-+// { dg-final { note-test lstiter0 {non-dereferenceable iterator for std::list} } }
-+
- std::map<std::string, int> mp;
- mp["zardoz"] = 23;
- // { dg-final { note-test mp {std::map with 1 elements = {["zardoz"] = 23}} } }
-@@ -73,6 +80,9 @@
- std::map<std::string, int>::iterator mpiter = mp.begin();
- // { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
-
-+ std::map<std::string, int>::iterator mpiter0;
-+// { dg-final { note-test mpiter0 {non-dereferenceable iterator for associative container} } }
-+
- // PR 67440
- const std::set<int> const_intset = {2, 3};
- // { dg-final { note-test const_intset {std::set with 2 elements = {[0] = 2, [1] = 3}} } }
-@@ -85,6 +95,20 @@
- std::set<std::string>::const_iterator spciter = sp.begin();
- // { dg-final { note-test spciter {"barrel"} } }
-
-+ std::set<int>::iterator spiter0;
-+// { dg-final { note-test spiter0 {non-dereferenceable iterator for associative container} } }
-+
-+ std::vector<int> v;
-+ v.push_back(1);
-+ v.push_back(2);
-+ v.erase(v.begin());
-+// { dg-final { note-test v {std::vector of length 1, capacity 2 = {2}} } }
-+ std::vector<int>::iterator viter3 = v.begin();
-+// { dg-final { note-test viter3 {2} } }
-+
-+ std::vector<int>::iterator viter0;
-+// { dg-final { note-test viter0 {non-dereferenceable iterator for std::vector} } }
-+
- __gnu_cxx::slist<int> sll;
- sll.push_front(23);
- sll.push_front(47);
-@@ -93,6 +117,9 @@
- __gnu_cxx::slist<int>::iterator slliter = sll.begin();
- // { dg-final { note-test slliter {47} } }
-
-+ __gnu_cxx::slist<int>::iterator slliter0;
-+// { dg-final { note-test slliter0 {non-dereferenceable iterator for __gnu_cxx::slist} } }
-+
- std::cout << "\n";
- return 0; // Mark SPOT
- }
-Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
+ // Copyright (C) 2014-2019 Free Software Foundation, Inc.
+Index: libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,70 @@
-+// { dg-do run }
-+// { dg-options "-g -O0" }
-+
-+// Copyright (C) 2011-2016 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc (.../branches/gcc-9-branch)
+@@ -1,6 +1,6 @@
+ // Test that char8_t related atomic types and macros are not present when
+ // -fchar8_t is not enabled.
+-// { dg-do compile }
++// { dg-do compile { target c++11 } }
+ // { dg-options "-fno-char8_t" }
+
+ #include <atomic>
+Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,50 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -3899,139 +2868,45 @@ Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+#include <deque>
-+#include <list>
-+#include <ext/slist>
-+#include <set>
-+#include <vector>
-+#include <debug/vector>
-+#include <iostream>
++// { dg-do run { target c++11 } }
+
-+struct C {
-+ C(int& i) : ref(i) { }
-+ int& ref;
-+ bool operator<(const C& c) const { return ref < c.ref; }
-+};
++#include <tr2/dynamic_bitset>
++#include <testsuite_hooks.h>
+
-+int main()
++void
++test01()
+{
-+ int i = 1;
-+ C c(i);
-+
-+ std::deque<C> d;
-+ d.push_back(c);
-+ std::deque<C>::iterator diter = d.begin();
-+// { dg-final { regexp-test diter {ref = @0x.*} } }
-+
-+ std::list<C> l;
-+ l.push_back(c);
-+ std::list<C>::iterator liter = l.begin();
-+ // Need to ensure the list<C>::iterator::_Node typedef is in the debuginfo:
-+ int tmp __attribute__((unused)) = (*liter).ref;
-+// { dg-final { regexp-test liter {ref = @0x.*} } }
-+
-+ __gnu_cxx::slist<C> sl;
-+ sl.push_front(c);
-+ __gnu_cxx::slist<C>::iterator sliter = sl.begin();
-+// { dg-final { regexp-test sliter {ref = @0x.*} } }
-+
-+ std::set<C> s;
-+ s.insert(c);
-+ std::set<C>::iterator siter = s.begin();
-+// { dg-final { regexp-test siter {ref = @0x.*} } }
-+
-+ std::vector<C> v;
-+ v.push_back(c);
-+ std::vector<C>::iterator viter = v.begin();
-+// { dg-final { regexp-test viter {ref = @0x.*} } }
-+
-+ std::cout << "\n";
-+ return 0; // Mark SPOT
++ std::tr2::dynamic_bitset<> a(100);
++ std::tr2::dynamic_bitset<> b = a;
++ VERIFY( a == b );
++ b.resize(99);
++ VERIFY( a != b );
+}
-+// { dg-final { gdb-test SPOT } }
-Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc (.../branches/gcc-6-branch)
-@@ -30,6 +30,7 @@
- #include <list>
- #include <map>
- #include <set>
-+#include <vector>
- #include <ext/slist>
-
- int
-@@ -50,6 +51,9 @@
- deq.push_back("two");
- // { dg-final { note-test deq {std::deque with 2 elements = {"one", "two"}} } }
-
-+ std::deque<int>::iterator deqiter0;
-+// { dg-final { note-test deqiter0 {non-dereferenceable iterator for std::deque} } }
-+
- std::deque<std::string>::iterator deqiter = deq.begin();
- // { dg-final { note-test deqiter {"one"} } }
-
-@@ -58,6 +62,9 @@
- lst.push_back("two");
- // { dg-final { note-test lst {std::list = {[0] = "one", [1] = "two"}} } }
-
-+ std::list<int>::iterator lstiter0;
-+// { dg-final { note-test lstiter0 {non-dereferenceable iterator for std::list} } }
-+
- std::list<std::string>::iterator lstiter = lst.begin();
- tem = *lstiter;
- // { dg-final { note-test lstiter {"one"}} }
-@@ -73,6 +80,9 @@
- std::map<std::string, int>::iterator mpiter = mp.begin();
- // { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
-
-+ std::map<std::string, int>::iterator mpiter0;
-+// { dg-final { note-test mpiter0 {non-dereferenceable iterator for associative container} } }
-+
- // PR 67440
- std::set<int> intset;
- intset.insert(2);
-@@ -88,6 +98,20 @@
- std::set<std::string>::const_iterator spciter = sp.begin();
- // { dg-final { note-test spciter {"barrel"} } }
-
-+ std::set<int>::iterator spiter0;
-+// { dg-final { note-test spiter0 {non-dereferenceable iterator for associative container} } }
-+
-+ std::vector<int> v;
-+ v.push_back(1);
-+ v.push_back(2);
-+ v.erase(v.begin());
-+// { dg-final { note-test v {std::vector of length 1, capacity 2 = {2}} } }
-+ std::vector<int>::iterator viter3 = v.begin();
-+// { dg-final { note-test viter3 {2} } }
-+
-+ std::vector<int>::iterator viter0;
-+// { dg-final { note-test viter0 {non-dereferenceable iterator for std::vector} } }
-+
- __gnu_cxx::slist<int> sll;
- sll.push_front(23);
- sll.push_front(47);
-@@ -96,6 +120,9 @@
- __gnu_cxx::slist<int>::iterator slliter = sll.begin();
- // { dg-final { note-test slliter {47} } }
-
-+ __gnu_cxx::slist<int>::iterator slliter0;
-+// { dg-final { note-test slliter0 {non-dereferenceable iterator for __gnu_cxx::slist} } }
-+
- std::cout << "\n";
- return 0; // Mark SPOT
- }
-Index: libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,29 @@
-+// { dg-do compile { target c++11 } }
-+// { dg-require-cstdint "" }
-+// { dg-require-gthreads "" }
+
-+// Copyright (C) 2017 Free Software Foundation, Inc.
++void
++test02()
++{
++ std::tr2::dynamic_bitset<> a(100);
++ std::tr2::dynamic_bitset<> b = a;
++ VERIFY( !(a < b) );
++ VERIFY( !(b < a) );
++ b.resize(99);
++ VERIFY( !(a < b) );
++ VERIFY( b < a );
++}
++
++int
++main()
++{
++ test01();
++ test02();
++}
+Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,105 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4048,20 +2923,100 @@ Index: libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+#include <thread>
++// { dg-do run { target c++11 } }
++
++#include <tr2/dynamic_bitset>
++#include <testsuite_hooks.h>
++
++void
++test01()
++{
++ std::tr2::dynamic_bitset<> a;
++ VERIFY( a.size() == 0 );
++ VERIFY( a.empty() );
++ std::tr2::dynamic_bitset<> b(1);
++ VERIFY( b.size() == 1 );
++ VERIFY( !b.empty() );
++ VERIFY( a != b );
++}
++
++void
++test02()
++{
++ std::tr2::dynamic_bitset<> a(1, 0); // { 0 }
++ std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 }
++ VERIFY( a != b );
++}
++
++void
++test03()
++{
++ std::tr2::dynamic_bitset<> a;
++ a.resize(1); // { 0 }
++ std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 }
++ VERIFY( a != b );
++}
++
++void
++test04()
++{
++ std::tr2::dynamic_bitset<> a(3, 2); // { 0, 1, 0 }
++ std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 }
++ VERIFY( a != b );
++}
++
++void
++test05()
++{
++ std::tr2::dynamic_bitset<unsigned short> a(1, 0); // { 0 }
++ std::tr2::dynamic_bitset<unsigned short> b(2, 2); // { 0, 1 }
++ VERIFY( a != b );
++}
++
++void
++test06()
++{
++ std::tr2::dynamic_bitset<unsigned short> a;
++ a.resize(1); // { 0 }
++ std::tr2::dynamic_bitset<unsigned short> b(2, 2); // { 0, 1 }
++ VERIFY( a != b );
++}
+
-+using std::thread;
-+using std::is_constructible;
++void
++test07()
++{
++ std::tr2::dynamic_bitset<unsigned short> a(3, 2); // { 0, 1, 0 }
++ std::tr2::dynamic_bitset<unsigned short> b(2, 2); // { 0, 1 }
++ VERIFY( a != b );
++}
++
++void
++test08()
++{
++ std::tr2::dynamic_bitset<> a(65, -1ULL);
++ std::tr2::dynamic_bitset<> b(64, -1ULL);
++ b.push_back(0);
++ VERIFY( a == b );
++}
+
-+static_assert( !is_constructible<thread, thread&>::value, "" );
-+static_assert( !is_constructible<thread, const thread&>::value, "" );
-+static_assert( !is_constructible<thread, const thread>::value, "" );
-Index: libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
++int
++main()
++{
++ test01();
++ test02();
++ test03();
++ test04();
++ test05();
++ test06();
++ test07();
++ test08();
++}
+Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,51 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,53 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4078,59 +3033,48 @@ Index: libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run }
++// { dg-do run { target c++11 } }
+
-+#include <ext/pb_ds/priority_queue.hpp>
++#include <tr2/dynamic_bitset>
+#include <testsuite_hooks.h>
+
-+int count = 0;
-+
-+struct less
++void
++test01()
+{
-+ bool operator()(int i, int j) const
-+ {
-+ ++count;
-+ return i < j;
-+ }
-+};
++ std::tr2::dynamic_bitset<> a(100);
++ const auto n = a.num_blocks();
++ std::tr2::dynamic_bitset<> b = std::move(a);
++ VERIFY(b.num_blocks() == n);
++ VERIFY(b.size() == 100);
++ VERIFY(a.num_blocks() == 0);
++ VERIFY(a.size() == 0);
++}
+
+void
-+test01()
++test02()
+{
-+ __gnu_pbds::priority_queue<int, less, __gnu_pbds::binary_heap_tag> c;
-+ c.push(1);
-+ c.push(2);
-+ c.push(3);
-+ c.push(4);
-+ count = 0;
-+ c.push(5);
-+ VERIFY( count < c.size() );
++ std::tr2::dynamic_bitset<> a(100);
++ const auto n = a.num_blocks();
++ std::tr2::dynamic_bitset<> b;
++ b = std::move(a);
++ VERIFY(b.num_blocks() == n);
++ VERIFY(b.size() == 100);
++ VERIFY(a.num_blocks() == 0);
++ VERIFY(a.size() == 0);
+}
+
+int
+main()
+{
+ test01();
++ test02();
+}
-Index: libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
+Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc (.../branches/gcc-6-branch)
-@@ -108,7 +108,7 @@
-
- {
- /*
-- * Perform operations on a binomial-heap queue.
-+ * Perform operations on a binary-heap queue.
- */
- cout << "Binary heap" << endl;
- __gnu_pbds::priority_queue<int, less<int>, binary_heap_tag> c;
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,60 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,55 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4149,39 +3093,34 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
+
+// { dg-do run { target c++11 } }
+
-+#include <locale>
-+#include <codecvt>
++#include <tr2/dynamic_bitset>
+#include <testsuite_hooks.h>
+
-+// PR libstdc++/79511
-+
-+template<typename ElemT>
-+ std::basic_string<ElemT> conv(const char* src)
-+ {
-+ std::wstring_convert<std::codecvt_utf8_utf16<ElemT>, ElemT> conv;
-+ return conv.from_bytes(src);
-+ }
-+
+void
+test01()
+{
-+ static char const src[] = "\xEF\xBF\xBF";
-+ VERIFY( conv<char16_t>(src) == u"\xffff" );
-+ VERIFY( conv<char32_t>(src) == U"\xffff" );
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ VERIFY( conv<wchar_t>(src) == L"\xffff" );
-+#endif
++ std::tr2::dynamic_bitset<> a(100);
++ const auto n = a.num_blocks();
++ std::tr2::dynamic_bitset<> b = a;
++ VERIFY(b.num_blocks() == n);
++ VERIFY(b.size() == 100);
++ VERIFY(a.num_blocks() == n);
++ VERIFY(a.size() == 100);
++ VERIFY(b == a);
+}
+
+void
+test02()
+{
-+ static char const src[] = "\xE2\x82\xAC";
-+ VERIFY( conv<char16_t>(src) == u"\x20ac" );
-+ VERIFY( conv<char32_t>(src) == U"\x20ac" );
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ VERIFY( conv<wchar_t>(src) == L"\x20ac" );
-+#endif
++ std::tr2::dynamic_bitset<> a(100);
++ const auto n = a.num_blocks();
++ std::tr2::dynamic_bitset<> b;
++ b = a;
++ VERIFY(b.num_blocks() == n);
++ VERIFY(b.size() == 100);
++ VERIFY(a.num_blocks() == n);
++ VERIFY(a.size() == 100);
++ VERIFY(b == a);
+}
+
+int
@@ -4190,12 +3129,12 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
+ test01();
+ test02();
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
+Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,76 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,36 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4214,82 +3153,333 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
+
+// { dg-do run { target c++11 } }
+
-+#include <codecvt>
++#include <tr2/dynamic_bitset>
+#include <testsuite_hooks.h>
+
-+const int bomlen = 3; // UTF-8 BOM is 24 bits
-+const int maxlen = 4;
-+
+void
+test01()
+{
-+ std::codecvt_utf8_utf16<char16_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
-+
-+ std::codecvt_utf8_utf16<char16_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
++ // PR libstdc++/92059
++ std::tr2::dynamic_bitset<> b1(10000), b2(10000);
++ b2 = b1; // crashed on missing return
++ VERIFY( b2 == b1);
+}
+
-+void
-+test02()
++int
++main()
+{
-+ std::codecvt_utf8_utf16<char32_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
-+
-+ std::codecvt_utf8_utf16<char32_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
++ test01();
+}
+Index: libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc (.../branches/gcc-9-branch)
+@@ -30,7 +30,7 @@
+ template class __gnu_debug::unordered_map<string, int,
+ hash<string>, equal_to<string>,
+ allocator<pair<const string, int>>>;
+-#ifndef __STRICT_ANSI__
++#if !defined __STRICT_ANSI__ && __cplusplus <= 201703L
+ template class __gnu_debug::unordered_map<string, float,
+ hash<string>, equal_to<string>,
+ allocator<char>>;
+Index: libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,40 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
+
-+void
-+test03()
++// This library 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 this library; see the file COPYING3. If not see
++// <http://www.gnu.org/licenses/>.
++
++// { dg-do compile { target c++11 } }
++
++#include <vector>
++
++// PR libstdc++/89164
++
++struct X
+{
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ std::codecvt_utf8_utf16<wchar_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
-+
-+ std::codecvt_utf8_utf16<wchar_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
-+#endif
++ X() = default;
++ X(const X&) = delete;
++};
++
++void test01()
++{
++ X x[1];
++ // Should not be able to create vector using uninitialized_copy:
++ std::vector<X> v1{x, x+1}; // { dg-error "here" }
++
++ // Should not be able to create vector using uninitialized_fill_n:
++ std::vector<X> v2{2u, X{}}; // { dg-error "here" }
+}
++// { dg-error "constructible from value" "" { target *-*-* } 0 }
++// { dg-error "constructible from input" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,50 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
+
-+int
-+main()
++// This library 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 this library; see the file COPYING3. If not see
++// <http://www.gnu.org/licenses/>.
++
++// { dg-options "-std=gnu++17" }
++// { dg-do compile { target c++17 } }
++
++#include <vector>
++
++// PR libstdc++/89164
++
++struct X
+{
-+ test01();
-+ test02();
-+ test03();
++ X() = default;
++ X(const X&) = delete;
++};
++
++void test01()
++{
++ X x[1];
++ // Should not be able to create vector using uninitialized_copy:
++ std::vector<X> v1{x, x+1}; // { dg-error "here" }
++
++ // Should not be able to create vector using uninitialized_fill_n:
++ std::vector<X> v2{2u, X{}}; // { dg-error "here" }
++}
++
++void test02()
++{
++#if __cplusplus >= 201703L
++ // Can create initializer_list<X> with C++17 guaranteed copy elision,
++ // but shouldn't be able to copy from it with uninitialized_copy:
++ std::vector<X> v3{X{}, X{}, X{}}; // { dg-error "here" }
++#endif
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
++// { dg-error "constructible from value" "" { target *-*-* } 0 }
++// { dg-error "constructible from input" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_assign" }
+
+ #include <vector>
+Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_insert" }
+
+ #include <vector>
+Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
+
+ #include <vector>
+Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
+
+ #include <vector>
+Index: libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc (.../branches/gcc-9-branch)
+@@ -15,7 +15,8 @@
+ // with this library; see the file COPYING3. If not see
+ // <http://www.gnu.org/licenses/>.
+
+-// { dg-do compile { target c++11 } }
++// { dg-do run { target { c++11_only || c++14_only } } }
++// { dg-do compile { target c++17 } }
+
+ #include <unordered_set>
+ #include <memory>
+Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_assign" }
+
+ #include <deque>
+Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_insert" }
+
+ #include <deque>
+Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
+
+ #include <deque>
+Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc (.../branches/gcc-6-branch)
-@@ -34,7 +34,7 @@
- const codecvt_c16* const cvt = &use_facet<codecvt_c16>(loc_c);
+--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
- VERIFY(!cvt->always_noconv());
-- VERIFY(cvt->max_length() == 3);
-+ VERIFY(cvt->max_length() == 4);
- VERIFY(cvt->encoding() == 0);
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
- const char u8dat[] = u8"H\U000000E4ll\U000000F6 \U0001F63F \U000056FD "
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
+ #include <deque>
+Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_assign" }
+
+ #include <list>
+Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,87 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
+
+ #include <list>
+Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
+
+ #include <list>
+Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-9-branch)
+@@ -18,6 +18,7 @@
+ // <http://www.gnu.org/licenses/>.
+
+ // { dg-do compile }
++// { dg-prune-output "cannot convert" }
+ // { dg-prune-output "no matching function .*_M_fill_initialize" }
+
+ #include <list>
+Index: libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc (.../branches/gcc-9-branch)
+@@ -37,9 +37,25 @@
+ d = std::move(d);
+ }
+
++void
++test03()
++{
++ std::filesystem::directory_iterator d;
++ auto d2 = std::move(d);
++}
++
++void
++test04()
++{
++ std::filesystem::recursive_directory_iterator d;
++ auto d2 = std::move(d);
++}
++
+ int
+ main()
+ {
+ test01();
+ test02();
++ test03();
++ test04();
+ }
+Index: libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,94 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4306,82 +3496,89 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
++// C++17 29.8.10 [transform.inclusive.scan]
+
-+#include <codecvt>
++#include <numeric>
++#include <iterator>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
++
++int a[] = {1, 2, 3, 4, 5, 6, 7};
+
++using __gnu_test::test_container;
++using __gnu_test::input_iterator_wrapper;
++using __gnu_test::output_iterator_wrapper;
++
++/*
++template<class InputIterator, class OutputIterator, class BinaryOperation,
++ class UnaryOperation>
++ OutputIterator
++ transform_inclusive_scan(InputIterator, InputIterator, OutputIterator,
++ BinaryOperation, UnaryOperation);
++*/
+void
+test01()
+{
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ std::codecvt_utf16<wchar_t> conv;
-+ const wchar_t wc = 0x6557;
-+ char bytes[2] = {0};
-+ const wchar_t* wcnext;
-+ std::mbstate_t st{};
-+ char* next = nullptr;
-+ auto res = conv.out(st, &wc, &wc+ 1, wcnext, bytes, std::end(bytes), next);
-+ VERIFY( res == std::codecvt_base::ok );
-+ VERIFY( wcnext == &wc + 1 );
-+ VERIFY( next == std::end(bytes) );
-+ VERIFY( bytes[0] == 0x65 );
-+ VERIFY( bytes[1] == 0x57 );
-+ VERIFY( conv.length(st, bytes, next, 1) == (next - bytes) );
-+
-+ wchar_t w;
-+ wchar_t* wnext;
-+ const char* cnext;
-+ st = {};
-+ res = conv.in(st, bytes, next, cnext, &w, &w + 1, wnext);
-+ VERIFY( res == std::codecvt_base::ok );
-+ VERIFY( wnext == &w + 1 );
-+ VERIFY( cnext == next );
-+ VERIFY( w == wc );
-+#endif
++ int out[7];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::transform_inclusive_scan(ca.begin(), ca.end(), co.begin(),
++ std::multiplies<>(),
++ [](int i) { return i+1; });
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+7 );
++ VERIFY( out[0] == 2 );
++ VERIFY( out[1] == (2*3) );
++ VERIFY( out[2] == (2*3*4) );
++ VERIFY( out[3] == (2*3*4*5) );
++ VERIFY( out[4] == (2*3*4*5*6) );
++ VERIFY( out[5] == (2*3*4*5*6*7) );
++ VERIFY( out[6] == (2*3*4*5*6*7*8) );
+}
+
++/*
++template<class InputIterator, class OutputIterator, class BinaryOperation,
++ class UnaryOperation, class T>
++ OutputIterator
++ transform_inclusive_scan(InputIterator, InputIterator, OutputIterator,
++ BinaryOperation, UnaryOperation, T);
++*/
+void
+test02()
+{
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ std::codecvt_utf16<wchar_t, 0x10FFFF, std::little_endian> conv;
-+ wchar_t wc = 0x6557;
-+ char bytes[2] = {0};
-+ const wchar_t* wcnext;
-+ std::mbstate_t st{};
-+ char* next = nullptr;
-+ auto res = conv.out(st, &wc, &wc+ 1, wcnext, bytes, std::end(bytes), next);
-+ VERIFY( res == std::codecvt_base::ok );
-+ VERIFY( wcnext == &wc + 1 );
-+ VERIFY( next == std::end(bytes) );
-+ VERIFY( bytes[0] == 0x57 );
-+ VERIFY( bytes[1] == 0x65 );
-+ VERIFY( conv.length(st, bytes, next, 1) == (next - bytes) );
-+
-+ wchar_t w;
-+ wchar_t* wnext;
-+ const char* cnext;
-+ st = {};
-+ res = conv.in(st, bytes, next, cnext, &w, &w + 1, wnext);
-+ VERIFY( res == std::codecvt_base::ok );
-+ VERIFY( wnext == &w + 1 );
-+ VERIFY( cnext == next );
-+ VERIFY( w == wc );
-+#endif
++ int out[7];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::transform_inclusive_scan(ca.begin(), ca.end(), co.begin(),
++ std::multiplies<>(),
++ [](int i) { return i+1; },
++ 3);
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+7 );
++ VERIFY( out[0] == 3*2 );
++ VERIFY( out[1] == (3*2*3) );
++ VERIFY( out[2] == (3*2*3*4) );
++ VERIFY( out[3] == (3*2*3*4*5) );
++ VERIFY( out[4] == (3*2*3*4*5*6) );
++ VERIFY( out[5] == (3*2*3*4*5*6*7) );
++ VERIFY( out[6] == (3*2*3*4*5*6*7*8) );
+}
+
-+int main()
++int
++main()
+{
+ test01();
+ test02();
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
+Index: libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,289 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,109 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4398,269 +3595,86 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
++// C++17 29.8.5 [transform.reduce]
+
-+#include <locale>
-+#include <codecvt>
++#include <numeric>
++#include <iterator>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
+
-+using std::codecvt_base;
-+using std::codecvt_mode;
-+using std::codecvt_utf16;
-+using std::wstring_convert;
-+using std::mbstate_t;
-+
-+constexpr codecvt_mode
-+operator|(codecvt_mode m1, codecvt_mode m2)
-+{
-+ using underlying = std::underlying_type<codecvt_mode>::type;
-+ return static_cast<codecvt_mode>(static_cast<underlying>(m1) | m2);
-+}
++int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
++double b[] = {0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5};
+
-+// Read/write UTF-16 code units from data not correctly aligned for char16_t
++using __gnu_test::test_container;
++using __gnu_test::input_iterator_wrapper;
+
++/*
++template<class InputIterator1, class InputIterator2, class T>
++ T transform_reduce(InputIterator1, InputIterator1, InputIterator2, T);
++*/
+void
+test01()
+{
-+ mbstate_t st;
-+ constexpr codecvt_mode m = std::consume_header|std::generate_header;
-+ codecvt_utf16<char16_t, 0x10FFFF, m> conv;
-+ const char src[] = "-\xFE\xFF\0\x61\xAB\xCD";
-+ const char* const src_end = src + 7;
-+
-+ int len = conv.length(st, src + 1, src_end, 1);
-+ VERIFY( len == 4 );
-+ len = conv.length(st, src + 1, src_end, 2);
-+ VERIFY( len == 6 );
-+
-+ char16_t dst[2];
-+ char16_t* const dst_end = dst + 2;
-+ char16_t* dst_next;
-+ const char* src_cnext;
-+ auto res = conv.in(st, src + 1, src_end, src_cnext, dst, dst_end, dst_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( dst[0] == 0x0061 );
-+ VERIFY( dst[1] == 0xabcd );
-+ VERIFY( src_cnext == src_end );
-+ VERIFY( dst_next == dst_end );
-+
-+ char out[sizeof(src)] = { src[0] };
-+ char* const out_end = out + 7;
-+ char* out_next;
-+ const char16_t* dst_cnext;
-+ res = conv.out(st, dst, dst_end, dst_cnext, out + 1, out_end, out_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( out_next == out_end );
-+ VERIFY( dst_cnext == dst_end );
-+ VERIFY( out[1] == src[1] );
-+ VERIFY( out[2] == src[2] );
-+ VERIFY( out[3] == src[3] );
-+ VERIFY( out[4] == src[4] );
-+ VERIFY( out[5] == src[5] );
-+ VERIFY( out[6] == src[6] );
-+
-+ codecvt_utf16<char16_t, 0x10FFFF, m|std::little_endian> conv_le;
-+
-+ len = conv_le.length(st, src + 1, src_end, 1);
-+ VERIFY( len == 4 );
-+ len = conv_le.length(st, src + 1, src_end, 2);
-+ VERIFY( len == 6 );
-+
-+ res = conv_le.in(st, src + 1, src_end, src_cnext, dst, dst_end, dst_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( dst[0] == 0x0061 );
-+ VERIFY( dst[1] == 0xabcd );
-+ VERIFY( src_cnext == src_end );
-+ VERIFY( dst_next == dst_end );
-+
-+ res = conv_le.out(st, dst, dst_end, dst_cnext, out + 1, out_end, out_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( out_next == out_end );
-+ VERIFY( dst_cnext == dst_end );
-+ VERIFY( out[1] == src[2] );
-+ VERIFY( out[2] == src[1] );
-+ VERIFY( out[3] == src[4] );
-+ VERIFY( out[4] == src[3] );
-+ VERIFY( out[5] == src[6] );
-+ VERIFY( out[6] == src[5] );
++ auto res = std::transform_reduce(std::begin(a), std::end(a), std::begin(b),
++ 1.0f);
++ static_assert(std::is_same_v<decltype(res), float>);
++ VERIFY( res == (float)(1 + 0.5 + 1 + 1.5 + 2 + 2.5 + 3 + 3.5 + 4 + 4.5 + 5) );
++
++ test_container<int, input_iterator_wrapper> ca(a);
++ test_container<double, input_iterator_wrapper> cb(b);
++
++ auto res2 = std::transform_reduce(ca.begin(), ca.end(), cb.begin(),
++ 1.0f);
++ static_assert(std::is_same_v<decltype(res2), float>);
++ VERIFY( res2 == res );
+}
+
++/*
++template<class InputIterator1, class InputIterator2, class T,
++ class BinaryOperation1, class BinaryOperation2>
++ T transform_reduce(InputIterator1, InputIterator1, InputIterator2, T,
++ BinaryOperation1, BinaryOperation2);
++*/
+void
+test02()
+{
-+ mbstate_t st;
-+ constexpr codecvt_mode m = std::consume_header|std::generate_header;
-+ codecvt_utf16<char32_t, 0x10FFFF, m> conv;
-+ const char src[] = "-\xFE\xFF\0\x61\xAB\xCD\xD8\x08\xDF\x45";
-+ const char* const src_end = src + 11;
-+
-+ int len = conv.length(st, src + 1, src_end, 1);
-+ VERIFY( len == 4 );
-+ len = conv.length(st, src + 1, src_end, 2);
-+ VERIFY( len == 6 );
-+ len = conv.length(st, src + 1, src_end, -1ul);
-+ VERIFY( len == 10 );
-+
-+ char32_t dst[3];
-+ char32_t* const dst_end = dst + 3;
-+ char32_t* dst_next;
-+ const char* src_cnext;
-+ auto res = conv.in(st, src + 1, src_end, src_cnext, dst, dst_end, dst_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( dst[0] == 0x0061 );
-+ VERIFY( dst[1] == 0xabcd );
-+ VERIFY( dst[2] == 0x012345 );
-+ VERIFY( src_cnext == src_end );
-+ VERIFY( dst_next == dst_end );
-+
-+ char out[sizeof(src)] = { src[0] };
-+ char* const out_end = out + 11;
-+ char* out_next;
-+ const char32_t* dst_cnext;
-+ res = conv.out(st, dst, dst_end, dst_cnext, out + 1, out_end, out_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( out_next == out_end );
-+ VERIFY( dst_cnext == dst_end );
-+ VERIFY( out[1] == src[1] );
-+ VERIFY( out[2] == src[2] );
-+ VERIFY( out[3] == src[3] );
-+ VERIFY( out[4] == src[4] );
-+ VERIFY( out[5] == src[5] );
-+ VERIFY( out[6] == src[6] );
-+ VERIFY( out[7] == src[7] );
-+ VERIFY( out[8] == src[8] );
-+ VERIFY( out[9] == src[9] );
-+ VERIFY( out[10] == src[10] );
-+
-+ codecvt_utf16<char32_t, 0x10FFFF, m|std::little_endian> conv_le;
-+
-+ len = conv_le.length(st, src + 1, src_end, 1);
-+ VERIFY( len == 4 );
-+ len = conv_le.length(st, src + 1, src_end, 2);
-+ VERIFY( len == 6 );
-+ len = conv.length(st, src + 1, src_end, -1ul);
-+ VERIFY( len == 10 );
-+
-+ res = conv_le.in(st, src + 1, src_end, src_cnext, dst, dst_end, dst_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( dst[0] == 0x0061 );
-+ VERIFY( dst[1] == 0xabcd );
-+ VERIFY( dst[2] == 0x012345 );
-+ VERIFY( src_cnext == src_end );
-+ VERIFY( dst_next == dst_end );
-+
-+ res = conv_le.out(st, dst, dst_end, dst_cnext, out + 1, out_end, out_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( out_next == out_end );
-+ VERIFY( dst_cnext == dst_end );
-+ VERIFY( out[1] == src[2] );
-+ VERIFY( out[2] == src[1] );
-+ VERIFY( out[3] == src[4] );
-+ VERIFY( out[4] == src[3] );
-+ VERIFY( out[5] == src[6] );
-+ VERIFY( out[6] == src[5] );
-+ VERIFY( out[7] == src[8] );
-+ VERIFY( out[8] == src[7] );
-+ VERIFY( out[9] == src[10] );
-+ VERIFY( out[10] == src[9] );
++ auto res = std::transform_reduce(std::begin(a), std::end(a), std::begin(b),
++ 1L, std::multiplies<>(), std::plus<int>());
++ static_assert(std::is_same_v<decltype(res), long>);
++ VERIFY( res == (1L * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10) );
++
++ test_container<int, input_iterator_wrapper> ca(a);
++ test_container<double, input_iterator_wrapper> cb(b);
++
++ auto res2 = std::transform_reduce(ca.begin(), ca.end(), cb.begin(),
++ 1L, std::multiplies<>(), std::plus<int>());
++ static_assert(std::is_same_v<decltype(res2), long>);
++ VERIFY( res2 == res );
+}
+
++/*
++template<class InputIterator, class T, class BinaryOperation,
++ class UnaryOperation>
++ T transform_reduce(InputIterator, InputIterator, T,
++ BinaryOperation, UnaryOperation);
++*/
+void
+test03()
+{
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ mbstate_t st;
-+ constexpr codecvt_mode m = std::consume_header|std::generate_header;
-+ codecvt_utf16<wchar_t, 0x10FFFF, m> conv;
-+ const char src[] = "-\xFE\xFF\0\x61\xAB\xCD\xD8\x08\xDF\x45";
-+ const size_t in_len = sizeof(wchar_t) == 4 ? 11 : 7;
-+ const size_t out_len = sizeof(wchar_t) == 4 ? 3 : 2;
-+ const char* const src_end = src + in_len;
-+
-+ int len = conv.length(st, src + 1, src_end, 1);
-+ VERIFY( len == 4 );
-+ len = conv.length(st, src + 1, src_end, 2);
-+ VERIFY( len == 6 );
-+ if (sizeof(wchar_t) == 4)
-+ {
-+ len = conv.length(st, src + 1, src_end, -1ul);
-+ VERIFY( len == 10 );
-+ }
++ auto res = std::transform_reduce(std::begin(a), std::end(a), 10.0,
++ std::plus<>(),
++ [](int i) { return i * i; });
++ static_assert(std::is_same_v<decltype(res), double>);
++ VERIFY( res == (10.0 + 1 + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81 + 100) );
+
-+ wchar_t dst[out_len];
-+ wchar_t* const dst_end = dst + out_len;
-+ wchar_t* dst_next;
-+ const char* src_cnext;
-+ auto res = conv.in(st, src + 1, src_end, src_cnext, dst, dst_end, dst_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( dst[0] == 0x0061 );
-+ VERIFY( dst[1] == 0xabcd );
-+ if (sizeof(wchar_t) == 4)
-+ VERIFY( dst[2] == 0x012345 );
-+ VERIFY( src_cnext == src_end );
-+ VERIFY( dst_next == dst_end );
-+
-+ char out[sizeof(src)] = { src[0] };
-+ char* const out_end = out + in_len;
-+ char* out_next;
-+ const wchar_t* dst_cnext;
-+ res = conv.out(st, dst, dst_end, dst_cnext, out + 1, out_end, out_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( out_next == out_end );
-+ VERIFY( dst_cnext == dst_end );
-+ VERIFY( out[1] == src[1] );
-+ VERIFY( out[2] == src[2] );
-+ VERIFY( out[3] == src[3] );
-+ VERIFY( out[4] == src[4] );
-+ VERIFY( out[5] == src[5] );
-+ VERIFY( out[6] == src[6] );
-+ if (sizeof(wchar_t) == 4)
-+ {
-+ VERIFY( out[7] == src[7] );
-+ VERIFY( out[8] == src[8] );
-+ VERIFY( out[9] == src[9] );
-+ VERIFY( out[10] == src[10] );
-+ }
-+
-+ codecvt_utf16<wchar_t, 0x10FFFF, m|std::little_endian> conv_le;
-+
-+ len = conv_le.length(st, src + 1, src_end, 1);
-+ VERIFY( len == 4 );
-+ len = conv_le.length(st, src + 1, src_end, 2);
-+ VERIFY( len == 6 );
-+ if (sizeof(wchar_t) == 4)
-+ {
-+ len = conv.length(st, src + 1, src_end, -1ul);
-+ VERIFY( len == 10 );
-+ }
++ test_container<int, input_iterator_wrapper> ca(a);
++ test_container<double, input_iterator_wrapper> cb(b);
+
-+ res = conv_le.in(st, src + 1, src_end, src_cnext, dst, dst_end, dst_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( dst[0] == 0x0061 );
-+ VERIFY( dst[1] == 0xabcd );
-+ if (sizeof(wchar_t) == 4)
-+ VERIFY( dst[2] == 0x012345 );
-+ VERIFY( src_cnext == src_end );
-+ VERIFY( dst_next == dst_end );
-+
-+ res = conv_le.out(st, dst, dst_end, dst_cnext, out + 1, out_end, out_next);
-+ VERIFY( res == codecvt_base::ok );
-+ VERIFY( out_next == out_end );
-+ VERIFY( dst_cnext == dst_end );
-+ VERIFY( out[1] == src[2] );
-+ VERIFY( out[2] == src[1] );
-+ VERIFY( out[3] == src[4] );
-+ VERIFY( out[4] == src[3] );
-+ VERIFY( out[5] == src[6] );
-+ VERIFY( out[6] == src[5] );
-+ if (sizeof(wchar_t) == 4)
-+ {
-+ VERIFY( out[7] == src[8] );
-+ VERIFY( out[8] == src[7] );
-+ VERIFY( out[9] == src[10] );
-+ VERIFY( out[10] == src[9] );
-+ }
-+#endif
++ auto res2 = std::transform_reduce(ca.begin(), ca.end(), 10.0,
++ std::plus<>(),
++ [](int i) { return i * i; });
++ static_assert(std::is_same_v<decltype(res2), double>);
++ VERIFY( res2 == (10.0 + 1 + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81 + 100) );
+}
+
+int
@@ -4670,12 +3684,15 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
+ test02();
+ test03();
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
+Index: libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,142 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,123 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4692,137 +3709,185 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
++// C++17 29.8.8 [inclusive.scan]
+
-+#include <locale>
-+#include <codecvt>
++#include <numeric>
++#include <iterator>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
+
-+// PR libstdc++/79980
-+
-+constexpr std::codecvt_mode mode(std::codecvt_mode m)
-+{ return static_cast<std::codecvt_mode>(m | std::consume_header); }
++int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+
-+template<typename WCh, unsigned long Max = 0x10FFFF,
-+ std::codecvt_mode Mode = std::consume_header>
-+ using Conv
-+ = std::wstring_convert<std::codecvt_utf16<WCh, Max, mode(Mode)>, WCh>;
++using __gnu_test::test_container;
++using __gnu_test::input_iterator_wrapper;
++using __gnu_test::output_iterator_wrapper;
+
++/*
++template<class InputIterator, class OutputIterator>
++ OutputIterator
++ inclusive_scan(InputIterator, InputIterator, OutputIterator);
++*/
+void
+test01()
+{
-+ const char src[] = "\xFE\xFF\xAB\xCD";
-+ Conv<char16_t> conv;
-+ auto dst = conv.from_bytes(src, src+4);
-+ VERIFY( dst[0] == 0xabcd );
++ int out[10];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::inclusive_scan(ca.begin(), ca.end(), co.begin());
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+10 );
++ VERIFY( out[0] == 1 );
++ VERIFY( out[1] == (1+2) );
++ VERIFY( out[2] == (1+2+3) );
++ VERIFY( out[3] == (1+2+3+4) );
++ VERIFY( out[4] == (1+2+3+4+5) );
++ VERIFY( out[5] == (1+2+3+4+5+6) );
++ VERIFY( out[6] == (1+2+3+4+5+6+7) );
++ VERIFY( out[7] == (1+2+3+4+5+6+7+8) );
++ VERIFY( out[8] == (1+2+3+4+5+6+7+8+9) );
++ VERIFY( out[9] == (1+2+3+4+5+6+7+8+9+10) );
+}
+
++/*
++template<class InputIterator, class OutputIterator, class BinaryOperation>
++ OutputIterator
++ inclusive_scan(InputIterator, InputIterator, OutputIterator,
++ BinaryOperation);
++*/
+void
+test02()
+{
-+ const char src[] = "\xFF\xFE\xAB\xCD";
-+ Conv<char16_t> conv;
-+ auto dst = conv.from_bytes(src, src+4);
-+ VERIFY( dst[0] == 0xcdab );
++ int out[10];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::inclusive_scan(ca.begin(), ca.end(), co.begin(),
++ [](int i, int j) { return 2*i + 2*j; });
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+10 );
++ VERIFY( out[0] == 1 );
++ VERIFY( out[1] == (2*1+2*2) );
++ VERIFY( out[2] == (2*6+2*3) );
++ VERIFY( out[3] == (2*18+2*4) );
++ VERIFY( out[4] == (2*44+2*5) );
++ VERIFY( out[5] == (2*98+2*6));
++ VERIFY( out[6] == (2*208+2*7) );
++ VERIFY( out[7] == (2*430+2*8) );
++ VERIFY( out[8] == (2*876+2*9) );
++ VERIFY( out[9] == (2*1770+2*10) );
+}
+
++/*
++template<class InputIterator, class OutputIterator, class BinaryOperation, T>
++ OutputIterator
++ inclusive_scan(InputIterator, InputIterator, OutputIterator,
++ BinaryOperation, T);
++*/
+void
+test03()
+{
-+ const char src[] = "\xFE\xFF\xAB\xCD";
-+ Conv<char16_t, 0x10FFFF, std::little_endian> conv;
-+ auto dst = conv.from_bytes(src, src+4);
-+ VERIFY( dst[0] == 0xabcd );
++ int out[10];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::inclusive_scan(ca.begin(), ca.end(), co.begin(),
++ [](int i, int j) { return 2*i + 2*j; },
++ 1);
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+10 );
++ VERIFY( out[0] == 4 );
++ VERIFY( out[1] == (2*4+2*2) );
++ VERIFY( out[2] == (2*12+2*3) );
++ VERIFY( out[3] == (2*30+2*4) );
++ VERIFY( out[4] == (2*68+2*5) );
++ VERIFY( out[5] == (2*146+2*6) );
++ VERIFY( out[6] == (2*304+2*7));
++ VERIFY( out[7] == (2*622+2*8) );
++ VERIFY( out[8] == (2*1260+2*9) );
++ VERIFY( out[9] == (2*2538+2*10) );
+}
+
-+void
-+test04()
++int
++main()
+{
-+ const char src[] = "\xFF\xFE\xAB\xCD";
-+ Conv<char16_t, 0x10FFFF, std::little_endian> conv;
-+ auto dst = conv.from_bytes(src, src+4);
-+ VERIFY( dst[0] == 0xcdab );
++ test01();
++ test02();
++ test03();
+}
+Index: libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,65 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
+
-+void
-+test05()
-+{
-+ const char src[] = "\0\x61\xAB\xCD"; // character greater than 0x00FF
-+ Conv<char16_t, 0xFF> conv("to_bytes failed", u"from_bytes failed");
-+ std::u16string result = conv.from_bytes(src, src+4);
-+ VERIFY( result == u"from_bytes failed" );
-+ VERIFY( conv.converted() == 2 );
-+}
++// Copyright (C) 2019 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
+
-+void
-+test06()
-+{
-+ const char src[] = "\0\x61\xAB\xCD";
-+ Conv<char16_t> conv("to_bytes failed", u"from_bytes failed");
-+ std::u16string result = conv.from_bytes(src, src+3); // incomplete character
-+ VERIFY( result == u"from_bytes failed" );
-+ VERIFY( conv.converted() == 2 );
-+}
++// This library 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.
+
-+void
-+test07()
-+{
-+ Conv<char16_t> conv("to_bytes failed", u"from_bytes failed");
-+ // ucs2 to utf-16 conversion should fail on invalid ucs2 input:
-+ std::u16string utf16 = u"1234\U00001111\U0001ffff";
-+ auto out = conv.to_bytes(utf16);
-+ VERIFY( out == "to_bytes failed" );
-+ VERIFY( conv.converted() == 5 );
-+
-+ // And should also fail on incomplete surrogate pair (not return partial):
-+ out = conv.to_bytes(utf16.substr(0, utf16.size()-1));
-+ VERIFY( out == "to_bytes failed" );
-+ VERIFY( conv.converted() == 5 );
-+}
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3. If not see
++// <http://www.gnu.org/licenses/>.
+
-+void
-+test08()
-+{
-+ // Read/write UTF-16 code units from data not correctly aligned for char16_t
-+ Conv<char16_t, 0x10FFFF, std::generate_header> conv;
-+ const char src[] = "-\xFE\xFF\0\x61\xAB\xCD";
-+ auto out = conv.from_bytes(src + 1, src + 7);
-+ VERIFY( out[0] == 0x0061 );
-+ VERIFY( out[1] == 0xabcd );
-+ auto bytes = conv.to_bytes(out);
-+ VERIFY( bytes == std::string(src + 1, 6) );
-+}
++// C++17 29.8.9 [transform.exclusive.scan]
++
++#include <numeric>
++#include <iterator>
++#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
++
++int a[] = {1, 2, 3, 4, 5, 6, 7};
+
++using __gnu_test::test_container;
++using __gnu_test::input_iterator_wrapper;
++using __gnu_test::output_iterator_wrapper;
++
++/*
++template<class InputIterator, class OutputIterator, class T,
++ class BinaryOperation, class UnaryOperation>
++ OutputIterator
++ transform_exclusive_scan(InputIterator, InputIterator, OutputIterator, T,
++ BinaryOperation, UnaryOperation);
++*/
+void
-+test09()
++test01()
+{
-+ // Read/write UTF-16 code units from data not correctly aligned for char16_t
-+ Conv<char32_t, 0x10FFFF, std::generate_header> conv;
-+ const char src[] = "-\xFE\xFF\xD8\x08\xDF\x45";
-+ auto out = conv.from_bytes(src + 1, src + 7);
-+ VERIFY( out == U"\U00012345" );
-+ auto bytes = conv.to_bytes(out);
-+ VERIFY( bytes == std::string(src + 1, 6) );
++ int out[7];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::transform_exclusive_scan(ca.begin(), ca.end(), co.begin(), 5,
++ std::multiplies<>(),
++ std::negate<>());
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+7 );
++ VERIFY( out[0] == 5 );
++ VERIFY( out[1] == -5 );
++ VERIFY( out[2] == 10 );
++ VERIFY( out[3] == -30 );
++ VERIFY( out[4] == 120 );
++ VERIFY( out[5] == -600 );
++ VERIFY( out[6] == 3600 );
+}
+
-+int main()
++int
++main()
+{
+ test01();
-+ test02();
-+ test03();
-+ test04();
-+ test05();
-+ test06();
-+ test07();
-+ test08();
-+ test09();
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
+Index: libstdc++-v3/testsuite/26_numerics/complex/proj.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,81 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/26_numerics/complex/proj.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/complex/proj.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,403 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4841,59 +3906,381 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
+
+// { dg-do run { target c++11 } }
+
-+#include <codecvt>
++#include <complex>
++#include <limits>
+#include <testsuite_hooks.h>
+
-+const int bomlen = 2; // UTF-16 BOM is 16 bits
++namespace test
++{
++#ifdef _GLIBCXX_USE_C99_MATH_TR1
++ using std::copysign;
++#else
++ bool copysign(float x, float y)
++ { return __builtin_copysignf(x, y); }
++
++ bool copysign(double x, double y)
++ { return __builtin_copysign(x, y); }
++
++ bool copysign(long double x, long double y)
++ { return __builtin_copysignl(x, y); }
++#endif
++}
++
++template<typename T>
++bool eq(const std::complex<T>& x, const std::complex<T>& y)
++{
++ bool nan_reals = std::isnan(x.real()) && std::isnan(y.real());
++ bool nan_imags = std::isnan(x.imag()) && std::isnan(y.imag());
++
++ bool sign_reals
++ = test::copysign(T(1), x.real()) == test::copysign(T(1), y.real());
++ bool sign_imags
++ = test::copysign(T(1), x.imag()) == test::copysign(T(1), y.imag());
++
++ return ((x.real() == y.real() && sign_reals) || nan_reals)
++ && ((x.imag() == y.imag() && sign_imags) || nan_imags);
++}
+
+void
+test01()
+{
-+ const int maxlen = 2;
++ const double qnan = std::numeric_limits<double>::quiet_NaN();
++ const double pinf = std::numeric_limits<double>::infinity();
++ const double ninf = -pinf;
++
++ std::complex<double> c00(0, 0);
++ VERIFY( eq( std::proj(c00) , c00 ) );
++ VERIFY( eq( std::proj(-c00) , -c00 ) );
++ c00.real(-0.0);
++ VERIFY( eq( std::proj(c00) , c00 ) );
++ VERIFY( eq( std::proj(-c00) , -c00 ) );
++
++ const std::complex<double> c01(0, 1);
++ VERIFY( eq( std::proj(c01) , c01 ) );
++ VERIFY( eq( std::proj(-c01) , -c01 ) );
++ c00.real(-0.0);
++ VERIFY( eq( std::proj(c01) , c01 ) );
++ VERIFY( eq( std::proj(-c01) , -c01 ) );
++
++ const std::complex<double> c10(1, 0);
++ VERIFY( eq( std::proj(c10) , c10 ) );
++ VERIFY( eq( std::proj(-c10) , -c10 ) );
++
++ const std::complex<double> c12(1, 2);
++ VERIFY( eq( std::proj(c12) , c12 ) );
++ VERIFY( eq( std::proj(-c12) , -c12 ) );
++
++ const std::complex<double> c0q(0, qnan);
++ VERIFY( eq( std::proj(c0q) , c0q ) );
++ VERIFY( eq( std::proj(-c0q) , -c0q ) );
++
++ const std::complex<double> c1q(1, qnan);
++ VERIFY( eq( std::proj(c1q) , c1q ) );
++ VERIFY( eq( std::proj(-c1q) , -c1q ) );
++
++ const std::complex<double> cq0(qnan, 0);
++ VERIFY( eq( std::proj(cq0) , cq0 ) );
++ VERIFY( eq( std::proj(-cq0) , -cq0 ) );
++
++ const std::complex<double> cq1(qnan, 1);
++ VERIFY( eq( std::proj(cq1) , cq1 ) );
++ VERIFY( eq( std::proj(-cq1) , -cq1 ) );
++
++ const std::complex<double> cqq(qnan, qnan);
++ VERIFY( eq( std::proj(cqq) , cqq ) );
++ VERIFY( eq( std::proj(-cqq) , -cqq ) );
++
++ const std::complex<double> c0p(0, pinf);
++ VERIFY( eq( std::proj(c0p) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-c0p) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> c1p(1, pinf);
++ VERIFY( eq( std::proj(c1p) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-c1p) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cqp(qnan, pinf);
++ VERIFY( eq( std::proj(cqp) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cqp) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cpp(pinf, pinf);
++ VERIFY( eq( std::proj(cpp) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cpp) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> c0n(0, ninf);
++ VERIFY( eq( std::proj(c0n) , std::complex<double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-c0n) , std::complex<double>(pinf, +0.0) ) );
+
-+ std::codecvt_utf16<char16_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
++ const std::complex<double> c1n(1, ninf);
++ VERIFY( eq( std::proj(c1n) , std::complex<double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-c1n) , std::complex<double>(pinf, +0.0) ) );
+
-+ std::codecvt_utf16<char16_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
++ const std::complex<double> cqn(qnan, ninf);
++ VERIFY( eq( std::proj(cqn) , std::complex<double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cqn) , std::complex<double>(pinf, +0.0) ) );
++
++ const std::complex<double> cpn(pinf, ninf);
++ VERIFY( eq( std::proj(cpn) , std::complex<double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cpn) , std::complex<double>(pinf, +0.0) ) );
++
++ const std::complex<double> cnn(ninf, ninf);
++ VERIFY( eq( std::proj(cnn) , std::complex<double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cnn) , std::complex<double>(pinf, +0.0) ) );
++
++ const std::complex<double> cp0(pinf, 0);
++ VERIFY( eq( std::proj(cp0) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cp0) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cp1(pinf, 1);
++ VERIFY( eq( std::proj(cp1) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cp1) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cpq(pinf, qnan);
++ VERIFY( eq( std::proj(cpq) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cpq) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cn0(ninf, 0);
++ VERIFY( eq( std::proj(cn0) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cn0) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cn1(ninf, 1);
++ VERIFY( eq( std::proj(cn1) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cn1) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cnq(ninf, qnan);
++ VERIFY( eq( std::proj(cnq) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cnq) , std::complex<double>(pinf, -0.0) ) );
++
++ const std::complex<double> cnp(ninf, pinf);
++ VERIFY( eq( std::proj(cnp) , std::complex<double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cnp) , std::complex<double>(pinf, -0.0) ) );
+}
+
+void
+test02()
+{
-+ const int maxlen = 4;
++ const float qnan = std::numeric_limits<float>::quiet_NaN();
++ const float pinf = std::numeric_limits<float>::infinity();
++ const float ninf = -pinf;
++
++ std::complex<float> c00(0, 0);
++ VERIFY( eq( std::proj(c00) , c00 ) );
++ VERIFY( eq( std::proj(-c00) , -c00 ) );
++ c00.real(-0.0);
++ VERIFY( eq( std::proj(c00) , c00 ) );
++ VERIFY( eq( std::proj(-c00) , -c00 ) );
++
++ const std::complex<float> c01(0, 1);
++ VERIFY( eq( std::proj(c01) , c01 ) );
++ VERIFY( eq( std::proj(-c01) , -c01 ) );
++ c00.real(-0.0);
++ VERIFY( eq( std::proj(c01) , c01 ) );
++ VERIFY( eq( std::proj(-c01) , -c01 ) );
++
++ const std::complex<float> c10(1, 0);
++ VERIFY( eq( std::proj(c10) , c10 ) );
++ VERIFY( eq( std::proj(-c10) , -c10 ) );
++
++ const std::complex<float> c12(1, 2);
++ VERIFY( eq( std::proj(c12) , c12 ) );
++ VERIFY( eq( std::proj(-c12) , -c12 ) );
++
++ const std::complex<float> c0q(0, qnan);
++ VERIFY( eq( std::proj(c0q) , c0q ) );
++ VERIFY( eq( std::proj(-c0q) , -c0q ) );
++
++ const std::complex<float> c1q(1, qnan);
++ VERIFY( eq( std::proj(c1q) , c1q ) );
++ VERIFY( eq( std::proj(-c1q) , -c1q ) );
++
++ const std::complex<float> cq0(qnan, 0);
++ VERIFY( eq( std::proj(cq0) , cq0 ) );
++ VERIFY( eq( std::proj(-cq0) , -cq0 ) );
++
++ const std::complex<float> cq1(qnan, 1);
++ VERIFY( eq( std::proj(cq1) , cq1 ) );
++ VERIFY( eq( std::proj(-cq1) , -cq1 ) );
++
++ const std::complex<float> cqq(qnan, qnan);
++ VERIFY( eq( std::proj(cqq) , cqq ) );
++ VERIFY( eq( std::proj(-cqq) , -cqq ) );
++
++ const std::complex<float> c0p(0, pinf);
++ VERIFY( eq( std::proj(c0p) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-c0p) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> c1p(1, pinf);
++ VERIFY( eq( std::proj(c1p) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-c1p) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cqp(qnan, pinf);
++ VERIFY( eq( std::proj(cqp) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cqp) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cpp(pinf, pinf);
++ VERIFY( eq( std::proj(cpp) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cpp) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> c0n(0, ninf);
++ VERIFY( eq( std::proj(c0n) , std::complex<float>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-c0n) , std::complex<float>(pinf, +0.0) ) );
++
++ const std::complex<float> c1n(1, ninf);
++ VERIFY( eq( std::proj(c1n) , std::complex<float>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-c1n) , std::complex<float>(pinf, +0.0) ) );
++
++ const std::complex<float> cqn(qnan, ninf);
++ VERIFY( eq( std::proj(cqn) , std::complex<float>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cqn) , std::complex<float>(pinf, +0.0) ) );
++
++ const std::complex<float> cpn(pinf, ninf);
++ VERIFY( eq( std::proj(cpn) , std::complex<float>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cpn) , std::complex<float>(pinf, +0.0) ) );
+
-+ std::codecvt_utf16<char32_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
++ const std::complex<float> cnn(ninf, ninf);
++ VERIFY( eq( std::proj(cnn) , std::complex<float>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cnn) , std::complex<float>(pinf, +0.0) ) );
+
-+ std::codecvt_utf16<char32_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
++ const std::complex<float> cp0(pinf, 0);
++ VERIFY( eq( std::proj(cp0) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cp0) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cp1(pinf, 1);
++ VERIFY( eq( std::proj(cp1) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cp1) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cpq(pinf, qnan);
++ VERIFY( eq( std::proj(cpq) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cpq) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cn0(ninf, 0);
++ VERIFY( eq( std::proj(cn0) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cn0) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cn1(ninf, 1);
++ VERIFY( eq( std::proj(cn1) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cn1) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cnq(ninf, qnan);
++ VERIFY( eq( std::proj(cnq) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cnq) , std::complex<float>(pinf, -0.0) ) );
++
++ const std::complex<float> cnp(ninf, pinf);
++ VERIFY( eq( std::proj(cnp) , std::complex<float>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cnp) , std::complex<float>(pinf, -0.0) ) );
+}
+
+void
+test03()
+{
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ const int maxlen = sizeof(wchar_t) == 4 ? 4 : 2;
-+
-+ std::codecvt_utf16<wchar_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
-+
-+ std::codecvt_utf16<wchar_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
-+#endif
++ const long double qnan = std::numeric_limits<long double>::quiet_NaN();
++ const long double pinf = std::numeric_limits<long double>::infinity();
++ const long double ninf = -pinf;
++
++ std::complex<long double> c00(0, 0);
++ VERIFY( eq( std::proj(c00) , c00 ) );
++ VERIFY( eq( std::proj(-c00) , -c00 ) );
++ c00.real(-0.0);
++ VERIFY( eq( std::proj(c00) , c00 ) );
++ VERIFY( eq( std::proj(-c00) , -c00 ) );
++
++ const std::complex<long double> c01(0, 1);
++ VERIFY( eq( std::proj(c01) , c01 ) );
++ VERIFY( eq( std::proj(-c01) , -c01 ) );
++ c00.real(-0.0);
++ VERIFY( eq( std::proj(c01) , c01 ) );
++ VERIFY( eq( std::proj(-c01) , -c01 ) );
++
++ const std::complex<long double> c10(1, 0);
++ VERIFY( eq( std::proj(c10) , c10 ) );
++ VERIFY( eq( std::proj(-c10) , -c10 ) );
++
++ const std::complex<long double> c12(1, 2);
++ VERIFY( eq( std::proj(c12) , c12 ) );
++ VERIFY( eq( std::proj(-c12) , -c12 ) );
++
++ const std::complex<long double> c0q(0, qnan);
++ VERIFY( eq( std::proj(c0q) , c0q ) );
++ VERIFY( eq( std::proj(-c0q) , -c0q ) );
++
++ const std::complex<long double> c1q(1, qnan);
++ VERIFY( eq( std::proj(c1q) , c1q ) );
++ VERIFY( eq( std::proj(-c1q) , -c1q ) );
++
++ const std::complex<long double> cq0(qnan, 0);
++ VERIFY( eq( std::proj(cq0) , cq0 ) );
++ VERIFY( eq( std::proj(-cq0) , -cq0 ) );
++
++ const std::complex<long double> cq1(qnan, 1);
++ VERIFY( eq( std::proj(cq1) , cq1 ) );
++ VERIFY( eq( std::proj(-cq1) , -cq1 ) );
++
++ const std::complex<long double> cqq(qnan, qnan);
++ VERIFY( eq( std::proj(cqq) , cqq ) );
++ VERIFY( eq( std::proj(-cqq) , -cqq ) );
++
++ const std::complex<long double> c0p(0, pinf);
++ VERIFY( eq( std::proj(c0p) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-c0p) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> c1p(1, pinf);
++ VERIFY( eq( std::proj(c1p) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-c1p) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cqp(qnan, pinf);
++ VERIFY( eq( std::proj(cqp) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cqp) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cpp(pinf, pinf);
++ VERIFY( eq( std::proj(cpp) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cpp) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> c0n(0, ninf);
++ VERIFY( eq( std::proj(c0n) , std::complex<long double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-c0n) , std::complex<long double>(pinf, +0.0) ) );
++
++ const std::complex<long double> c1n(1, ninf);
++ VERIFY( eq( std::proj(c1n) , std::complex<long double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-c1n) , std::complex<long double>(pinf, +0.0) ) );
++
++ const std::complex<long double> cqn(qnan, ninf);
++ VERIFY( eq( std::proj(cqn) , std::complex<long double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cqn) , std::complex<long double>(pinf, +0.0) ) );
++
++ const std::complex<long double> cpn(pinf, ninf);
++ VERIFY( eq( std::proj(cpn) , std::complex<long double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cpn) , std::complex<long double>(pinf, +0.0) ) );
++
++ const std::complex<long double> cnn(ninf, ninf);
++ VERIFY( eq( std::proj(cnn) , std::complex<long double>(pinf, -0.0) ) );
++ VERIFY( eq( std::proj(-cnn) , std::complex<long double>(pinf, +0.0) ) );
++
++ const std::complex<long double> cp0(pinf, 0);
++ VERIFY( eq( std::proj(cp0) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cp0) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cp1(pinf, 1);
++ VERIFY( eq( std::proj(cp1) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cp1) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cpq(pinf, qnan);
++ VERIFY( eq( std::proj(cpq) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cpq) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cn0(ninf, 0);
++ VERIFY( eq( std::proj(cn0) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cn0) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cn1(ninf, 1);
++ VERIFY( eq( std::proj(cn1) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cn1) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cnq(ninf, qnan);
++ VERIFY( eq( std::proj(cnq) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cnq) , std::complex<long double>(pinf, -0.0) ) );
++
++ const std::complex<long double> cnp(ninf, pinf);
++ VERIFY( eq( std::proj(cnp) , std::complex<long double>(pinf, +0.0) ) );
++ VERIFY( eq( std::proj(-cnp) , std::complex<long double>(pinf, -0.0) ) );
+}
+
+int
@@ -4903,12 +4290,15 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
+ test02();
+ test03();
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
+Index: libstdc++-v3/testsuite/26_numerics/reduce/1.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,94 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/26_numerics/reduce/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/reduce/1.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,82 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -4925,73 +4315,59 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
++// C++17 29.8.3 [reduce]
+
-+#include <codecvt>
-+#include <locale>
-+#include <string>
++#include <numeric>
++#include <iterator>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
+
-+using std::wstring_convert;
-+using std::codecvt_utf8;
-+
++/*
++template<class InputIterator>
++ iterator_traits<InputIterator>::value_type
++ reduce(InputIterator, InputIterator);
++*/
+void
+test01()
+{
-+ std::string src = u8"1234\U00001111\U0001ffff";
-+ wstring_convert<codecvt_utf8<char16_t>, char16_t> c("bad", u"BAD");
-+
-+ // utf-8 to ucs2 conversion should fail on character outside BMP
-+ auto ucs2 = c.from_bytes(src);
-+ VERIFY( ucs2 == u"BAD" );
-+ VERIFY( c.converted() == 7 );
-+
-+ // ucs2 to utf-8 conversion should fail on invalid ucs2 input:
-+ std::u16string utf16 = u"1234\U00001111\U0001ffff";
-+ auto out = c.to_bytes(utf16);
-+ VERIFY( out == "bad" );
-+ VERIFY( c.converted() == 5 );
-+
-+ // And should also fail on incomplete surrogate pair (not return partial):
-+ out = c.to_bytes(utf16.substr(0, utf16.size()-1));
-+ VERIFY( out == "bad" );
-+ VERIFY( c.converted() == 5 );
++ using __gnu_test::test_container;
++ using __gnu_test::input_iterator_wrapper;
++ int array[5] = { 1, 2, 3, 4, 5 };
++ test_container<int, input_iterator_wrapper> con(array);
++ int res = std::reduce(con.begin(), con.end());
++ VERIFY( res == 15 );
+}
+
++/*
++template<class InputIterator, class T>
++ T reduce(InputIterator, InputIterator, T);
++*/
+void
+test02()
+{
-+ std::string src = u8"1234\U00001111\U0001ffff";
-+ wstring_convert<codecvt_utf8<char16_t, 0x1000>, char16_t> c("bad", u"BAD");
-+
-+ // utf-8 to ucs2 conversion should fail on character above Maxcode=0x1000
-+ auto ucs2 = c.from_bytes(src);
-+ VERIFY( ucs2 == u"BAD" );
-+ VERIFY( c.converted() == 4 );
++ bool b[] = {true, false, true, true, false, true, false, true, true, false};
++ int res = std::reduce(std::begin(b), std::end(b), 100);
++ VERIFY( res == 106 );
+}
+
++/*
++template<class InputIterator, class T>
++ T reduce(InputIterator, InputIterator, T);
++template<class InputIterator, class T, class BinaryOperation>
++ T reduce(InputIterator, InputIterator, T, BinaryOperation);
++*/
+void
+test03()
+{
-+ std::string src = u8"1234\U00001111\U0001ffff";
-+ wstring_convert<codecvt_utf8<char32_t, 0x10000>, char32_t> c("bad", U"BAD");
++ int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+
-+ // utf-8 to ucs4 conversion should fail on character above Maxcode=0x10000
-+ auto ucs4 = c.from_bytes(src);
-+ VERIFY( ucs4 == U"BAD" );
-+ VERIFY( c.converted() == 7 );
-+}
-+
-+void
-+test04()
-+{
-+ std::string src = u8"1234\U00001111\U0001ffff";
-+ wstring_convert<codecvt_utf8<char32_t, 0x1000>, char32_t> c("bad", U"BAD");
++ auto res = std::reduce(std::begin(a), std::end(a), (short)11);
++ static_assert(std::is_same_v<decltype(res), short>);
++ VERIFY( res == 66 );
+
-+ // utf-8 to ucs4 conversion should fail on character above Maxcode=0x1000
-+ auto ucs4 = c.from_bytes(src);
-+ VERIFY( ucs4 == U"BAD" );
-+ VERIFY( c.converted() == 4 );
++ auto res2 = std::reduce(std::begin(a), std::end(a), -1l, std::multiplies<>());
++ static_assert(std::is_same_v<decltype(res2), long>);
++ VERIFY( res2 == -3628800 );
+}
+
+int
@@ -5000,14 +4376,16 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
+ test01();
+ test02();
+ test03();
-+ test04();
+}
-Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
+Index: libstdc++-v3/testsuite/26_numerics/reduce/2.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,81 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/26_numerics/reduce/2.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/reduce/2.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,70 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do compile { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -5024,76 +4402,65 @@ Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
++// C++17 29.8.3 [reduce]
+
-+#include <codecvt>
++#include <numeric>
++#include <iterator>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
+
-+const int bomlen = 3; // UTF-8 BOM is 24 bits
++struct T
++{
++ T(int);
++ T(T&&); // MoveConstructible
++ T& operator=(T&&); // not required by the standard, but it needs to be
++ T operator+(const T&) const;
++};
+
+void
+test01()
+{
-+ const int maxlen = 3;
-+
-+ std::codecvt_utf8<char16_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
++ T t[1]{1};
++ std::reduce(t, t+1, T(0));
+
-+ std::codecvt_utf8<char16_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
++ using __gnu_test::test_container;
++ using __gnu_test::input_iterator_wrapper;
++ test_container<T, input_iterator_wrapper> con(t);
++ std::reduce(con.begin(), con.end(), T(0));
+}
+
-+void
-+test02()
++struct Op
+{
-+ const int maxlen = 4;
++ T operator()(T&, T&) const&;
+
-+ std::codecvt_utf8<char32_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
++ // The standard does *not* require invoking as an rvalue to be supported.
++ T operator()(T&, T&) && = delete;
+
-+ std::codecvt_utf8<char32_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
-+}
++ // The standard does *not* require rvalue arguments to be supported
++ // (this is almost certainly a defect and should be allowed).
++ T operator()(T&&, T&&) const = delete;
++};
+
+void
-+test03()
++test02()
+{
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+ const int maxlen = sizeof(wchar_t) == 4 ? 4 : 3;
-+
-+ std::codecvt_utf8<wchar_t> c;
-+ VERIFY( c.always_noconv() == false );
-+ VERIFY( c.encoding() == 0 );
-+ VERIFY( c.max_length() == maxlen );
-+
-+ std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header> c_bom;
-+ VERIFY( c_bom.always_noconv() == false );
-+ VERIFY( c_bom.encoding() == 0 );
-+ VERIFY( c_bom.max_length() == (maxlen + bomlen) );
-+#endif
-+}
++ T t[1]{1};
++ std::reduce(t, t+1, T(0), Op());
+
-+int
-+main()
-+{
-+ test01();
-+ test02();
-+ test03();
++ using __gnu_test::test_container;
++ using __gnu_test::input_iterator_wrapper;
++ test_container<T, input_iterator_wrapper> con(t);
++ std::reduce(con.begin(), con.end(), T(0), Op());
+}
-Index: libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
+Index: libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/29_atomics/atomic/69301.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/29_atomics/atomic/69301.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,57 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,94 @@
++// { dg-options "-std=gnu++17" }
++// { dg-do run { target c++17 } }
++
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -5110,38 +4477,72 @@ Index: libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do run { target c++11 } }
-+// { dg-require-atomic-builtins "" }
++// C++17 29.8.7 [exclusive.scan]
+
-+#include <atomic>
++#include <numeric>
++#include <iterator>
+#include <testsuite_hooks.h>
++#include <testsuite_iterators.h>
+
-+struct NonDefaultConstructible
-+{
-+ NonDefaultConstructible(int i) : val(i) { }
-+ int val;
-+};
++int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+
-+template class std::atomic<NonDefaultConstructible>;
++using __gnu_test::test_container;
++using __gnu_test::input_iterator_wrapper;
++using __gnu_test::output_iterator_wrapper;
+
++/*
++template<class InputIterator, class OutputIterator, class T>
++ OutputIterator
++ exclusive_scan(InputIterator, InputIterator, OutputIterator, T);
++*/
+void
+test01()
+{
-+ std::atomic<NonDefaultConstructible> a(1);
-+ const auto n1 = a.exchange(2);
-+ VERIFY( n1.val == 1 );
-+ const auto n2 = a.load();
-+ VERIFY( n2.val == 2 );
++ int out[10];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::exclusive_scan(ca.begin(), ca.end(), co.begin(), 5);
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+10 );
++ VERIFY( out[0] == 5 );
++ VERIFY( out[1] == 6 );
++ VERIFY( out[2] == 8 );
++ VERIFY( out[3] == 11 );
++ VERIFY( out[4] == 15 );
++ VERIFY( out[5] == 20 );
++ VERIFY( out[6] == 26 );
++ VERIFY( out[7] == 33 );
++ VERIFY( out[8] == 41 );
++ VERIFY( out[9] == 50 );
+}
+
++/*
++template<class InputIterator, class OutputIterator, class T,
++ class BinaryOperation>
++ OutputIterator
++ exclusive_scan(InputIterator, InputIterator, OutputIterator, T,
++ BinaryOperation);
++*/
+void
+test02()
+{
-+ volatile std::atomic<NonDefaultConstructible> a(1);
-+ const auto n1 = a.exchange(2);
-+ VERIFY( n1.val == 1 );
-+ const auto n2 = a.load();
-+ VERIFY( n2.val == 2 );
++ int out[10];
++ test_container<int, output_iterator_wrapper> co(out);
++ test_container<int, input_iterator_wrapper> ca(a);
++ auto end = std::exclusive_scan(ca.begin(), ca.end(), co.begin(), 2,
++ [](int i, int j) { return 2*i + 2*j; });
++ static_assert(std::is_same_v<decltype(end), decltype(co.begin())>);
++ VERIFY( end.ptr == out+10 );
++ VERIFY( out[0] == 2 );
++ VERIFY( out[1] == 6 );
++ VERIFY( out[2] == 16 );
++ VERIFY( out[3] == 38 );
++ VERIFY( out[4] == 84 );
++ VERIFY( out[5] == 178 );
++ VERIFY( out[6] == 368 );
++ VERIFY( out[7] == 750 );
++ VERIFY( out[8] == 1516 );
++ VERIFY( out[9] == 3050 );
+}
+
+int
@@ -5150,246 +4551,392 @@ Index: libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
+ test01();
+ test02();
+}
-Index: libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
+Index: libstdc++-v3/testsuite/experimental/names.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc (.../branches/gcc-6-branch)
-@@ -53,7 +53,7 @@
- cit = cx.find(2L);
- VERIFY( cit == cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-
- static_assert(std::is_same<decltype(it), test_type::iterator>::value,
- "find returns iterator");
-@@ -76,7 +76,7 @@
- cn = cx.count(2L);
- VERIFY( cn == 0 );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
- }
+--- a/src/libstdc++-v3/testsuite/experimental/names.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/experimental/names.cc (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
+ // with this library; see the file COPYING3. If not see
+ // <http://www.gnu.org/licenses/>.
- void
-@@ -94,7 +94,12 @@
- cit = cx.lower_bound(2L);
- VERIFY( cit != cx.end() && cit->second == '4' );
+-// { dg-do compile }
++// { dg-do compile { target c++11 } }
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
+ // Define macros for some common variables names that we must not use for
+ // naming variables, parameters etc. in the library.
+@@ -25,6 +25,9 @@
+ #if __has_include(<experimental/filesystem>)
+ # include <experimental/filesystem>
+ #endif
+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "lower_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const lower_bound returns const_iterator");
- }
++#if __cplusplus >= 201402L
++
+ // Library Fundamentals
+ #include <experimental/algorithm>
+ #include <experimental/any>
+@@ -66,3 +69,5 @@
+ # include <experimental/timer>
+ # include <experimental/executor>
+ #endif
++
++#endif // C++14
+Index: libstdc++-v3/testsuite/17_intro/names.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/17_intro/names.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/17_intro/names.cc (.../branches/gcc-9-branch)
+@@ -100,6 +100,10 @@
- void
-@@ -112,7 +117,12 @@
- cit = cx.upper_bound(3L);
- VERIFY( cit == cx.end() );
+ #define tmp (
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
++#if __cplusplus < 201103L
++#define uses_allocator (
++#endif
+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "upper_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const upper_bound returns const_iterator");
+ #if __cplusplus < 201703L
+ // <charconv> defines to_chars_result::ptr and to_chars_result::ec
+ #define ec (
+Index: libstdc++-v3/testsuite/util/testsuite_abi.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/util/testsuite_abi.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/util/testsuite_abi.cc (.../branches/gcc-9-branch)
+@@ -208,6 +208,7 @@
+ known_versions.push_back("GLIBCXX_3.4.25");
+ known_versions.push_back("GLIBCXX_3.4.26");
+ known_versions.push_back("GLIBCXX_3.4.27");
++ known_versions.push_back("GLIBCXX_3.4.28");
+ known_versions.push_back("CXXABI_1.3");
+ known_versions.push_back("CXXABI_LDBL_1.3");
+ known_versions.push_back("CXXABI_1.3.1");
+@@ -239,7 +240,7 @@
+ test.version_status = symbol::incompatible;
+
+ // Check that added symbols are added in the latest pre-release version.
+- bool latestp = (test.version_name == "GLIBCXX_3.4.27"
++ bool latestp = (test.version_name == "GLIBCXX_3.4.28"
+ || test.version_name == "CXXABI_1.3.12"
+ || test.version_name == "CXXABI_FLOAT128"
+ || test.version_name == "CXXABI_TM_1");
+Index: libstdc++-v3/testsuite/util/testsuite_iterators.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/util/testsuite_iterators.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/util/testsuite_iterators.h (.../branches/gcc-9-branch)
+@@ -589,6 +589,10 @@
+ ItType<T>
+ end()
+ { return it(bounds.last); }
++
++ std::size_t
++ size() const
++ { return bounds.last - bounds.first; }
+ };
}
+ #endif
+Index: libstdc++-v3/testsuite/util/testsuite_allocator.h
+===================================================================
+--- a/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../branches/gcc-9-branch)
+@@ -699,162 +699,162 @@
- void
-@@ -131,7 +141,14 @@
- cit = cx.equal_range(2L);
- VERIFY( cit.first == cit.second && cit.first != cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ using pair = std::pair<test_type::iterator, test_type::iterator>;
-+ static_assert(std::is_same<decltype(it), pair>::value,
-+ "equal_range returns pair<iterator, iterator>");
-+ using cpair = std::pair<test_type::const_iterator, test_type::const_iterator>;
-+ static_assert(std::is_same<decltype(cit), cpair>::value,
-+ "const equal_range returns pair<const_iterator, const_iterator>");
- }
+ #if __cplusplus >= 201703L
+ #if __cpp_aligned_new && __cpp_rtti
+- // A concrete memory_resource, with error checking.
+- class memory_resource : public std::pmr::memory_resource
+- {
+- public:
+- memory_resource()
+- : lists(new allocation_lists)
+- { }
++ // A concrete memory_resource, with error checking.
++ class memory_resource : public std::pmr::memory_resource
++ {
++ public:
++ memory_resource()
++ : lists(new allocation_lists)
++ { }
+- memory_resource(const memory_resource& r) noexcept
+- : lists(r.lists)
+- { lists->refcount++; }
++ memory_resource(const memory_resource& r) noexcept
++ : lists(r.lists)
++ { lists->refcount++; }
-Index: libstdc++-v3/testsuite/23_containers/set/operations/2.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/23_containers/set/operations/2.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/23_containers/set/operations/2.cc (.../branches/gcc-6-branch)
-@@ -53,7 +53,7 @@
- cit = cx.find(2L);
- VERIFY( cit == cx.end() );
+- memory_resource& operator=(const memory_resource&) = delete;
++ memory_resource& operator=(const memory_resource&) = delete;
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
+- ~memory_resource()
+- {
+- if (lists->refcount-- == 1)
+- delete lists; // last one out turns out the lights
+- }
++ ~memory_resource()
++ {
++ if (lists->refcount-- == 1)
++ delete lists; // last one out turns out the lights
++ }
- static_assert(std::is_same<decltype(it), test_type::iterator>::value,
- "find returns iterator");
-@@ -76,7 +76,7 @@
- cn = cx.count(2L);
- VERIFY( cn == 0 );
+- struct bad_size { };
+- struct bad_alignment { };
+- struct bad_address { };
++ struct bad_size { };
++ struct bad_alignment { };
++ struct bad_address { };
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
- }
+- // Deallocate everything (moving the tracking info to the freed list)
+- void
+- deallocate_everything()
+- {
+- while (lists->active)
+- {
+- auto a = lists->active;
+- // Intentionally virtual dispatch, to inform derived classes:
+- this->do_deallocate(a->p, a->bytes, a->alignment);
+- }
+- }
++ // Deallocate everything (moving the tracking info to the freed list)
++ void
++ deallocate_everything()
++ {
++ while (lists->active)
++ {
++ auto a = lists->active;
++ // Intentionally virtual dispatch, to inform derived classes:
++ this->do_deallocate(a->p, a->bytes, a->alignment);
++ }
++ }
- void
-@@ -94,7 +94,12 @@
- cit = cx.lower_bound(2L);
- VERIFY( cit != cx.end() && *cit == 3 );
+- // Clear the freed list
+- void
+- forget_freed_allocations()
+- { lists->forget_allocations(lists->freed); }
++ // Clear the freed list
++ void
++ forget_freed_allocations()
++ { lists->forget_allocations(lists->freed); }
+
+- // Count how many allocations have been done and not freed.
+- std::size_t
+- number_of_active_allocations() const noexcept
+- {
+- std::size_t n = 0;
+- for (auto a = lists->active; a != nullptr; a = a->next)
+- ++n;
+- return n;
+- }
++ // Count how many allocations have been done and not freed.
++ std::size_t
++ number_of_active_allocations() const noexcept
++ {
++ std::size_t n = 0;
++ for (auto a = lists->active; a != nullptr; a = a->next)
++ ++n;
++ return n;
++ }
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "lower_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const lower_bound returns const_iterator");
- }
+- protected:
+- void*
+- do_allocate(std::size_t bytes, std::size_t alignment) override
+- {
+- // TODO perform a single allocation and put the allocation struct
+- // in the buffer using placement new? It means deallocation won't
+- // actually return memory to the OS, as it will stay in lists->freed.
+- //
+- // TODO adjust the returned pointer to be minimally aligned?
+- // e.g. if alignment==1 don't return something aligned to 2 bytes.
+- // Maybe not worth it, at least monotonic_buffer_resource will
+- // never ask upstream for anything with small alignment.
+- void* p = ::operator new(bytes, std::align_val_t(alignment));
+- lists->active = new allocation{p, bytes, alignment, lists->active};
+- return p;
+- }
++ protected:
++ void*
++ do_allocate(std::size_t bytes, std::size_t alignment) override
++ {
++ // TODO perform a single allocation and put the allocation struct
++ // in the buffer using placement new? It means deallocation won't
++ // actually return memory to the OS, as it will stay in lists->freed.
++ //
++ // TODO adjust the returned pointer to be minimally aligned?
++ // e.g. if alignment==1 don't return something aligned to 2 bytes.
++ // Maybe not worth it, at least monotonic_buffer_resource will
++ // never ask upstream for anything with small alignment.
++ void* p = ::operator new(bytes, std::align_val_t(alignment));
++ lists->active = new allocation{p, bytes, alignment, lists->active};
++ return p;
++ }
- void
-@@ -112,7 +117,12 @@
- cit = cx.upper_bound(5L);
- VERIFY( cit == cx.end() );
+- void
+- do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override
+- {
+- allocation** aptr = &lists->active;
+- while (*aptr)
+- {
+- allocation* a = *aptr;
+- if (p == a->p)
+- {
+- if (bytes != a->bytes)
+- throw bad_size();
+- if (alignment != a->alignment)
+- throw bad_alignment();
++ void
++ do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override
++ {
++ allocation** aptr = &lists->active;
++ while (*aptr)
++ {
++ allocation* a = *aptr;
++ if (p == a->p)
++ {
++ if (bytes != a->bytes)
++ throw bad_size();
++ if (alignment != a->alignment)
++ throw bad_alignment();
+ #if __cpp_sized_deallocation
+- ::operator delete(p, bytes, std::align_val_t(alignment));
++ ::operator delete(p, bytes, std::align_val_t(alignment));
+ #else
+- ::operator delete(p, std::align_val_t(alignment));
++ ::operator delete(p, std::align_val_t(alignment));
+ #endif
+- *aptr = a->next;
+- a->next = lists->freed;
+- lists->freed = a;
+- return;
+- }
+- aptr = &a->next;
+- }
+- throw bad_address();
+- }
+-
+- bool
+- do_is_equal(const std::pmr::memory_resource& r) const noexcept override
+- {
+- // Equality is determined by sharing the same allocation_lists object.
+- if (auto p = dynamic_cast<const memory_resource*>(&r))
+- return p->lists == lists;
+- return false;
+- }
+-
+- private:
+- struct allocation
+- {
+- void* p;
+- std::size_t bytes;
+- std::size_t alignment;
+- allocation* next;
+- };
+-
+- // Maintain list of allocated blocks and list of freed blocks.
+- // Copies of this memory_resource share the same ref-counted lists.
+- struct allocation_lists
+- {
+- unsigned refcount = 1;
+- allocation* active = nullptr;
+- allocation* freed = nullptr;
+-
+- void forget_allocations(allocation*& list)
+- {
+- while (list)
+- {
+- auto p = list;
+- list = list->next;
+- delete p;
++ *aptr = a->next;
++ a->next = lists->freed;
++ lists->freed = a;
++ return;
+ }
++ aptr = &a->next;
+ }
++ throw bad_address();
++ }
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "upper_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const upper_bound returns const_iterator");
- }
+- ~allocation_lists()
+- {
+- forget_allocations(active); // Anything in this list is a leak!
+- forget_allocations(freed);
+- }
+- };
++ bool
++ do_is_equal(const std::pmr::memory_resource& r) const noexcept override
++ {
++ // Equality is determined by sharing the same allocation_lists object.
++ if (auto p = dynamic_cast<const memory_resource*>(&r))
++ return p->lists == lists;
++ return false;
++ }
- void
-@@ -130,7 +140,14 @@
- cit = cx.equal_range(2L);
- VERIFY( cit.first == cit.second && cit.first != cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ using pair = std::pair<test_type::iterator, test_type::iterator>;
-+ static_assert(std::is_same<decltype(it), pair>::value,
-+ "equal_range returns pair<iterator, iterator>");
-+ using cpair = std::pair<test_type::const_iterator, test_type::const_iterator>;
-+ static_assert(std::is_same<decltype(cit), cpair>::value,
-+ "const equal_range returns pair<const_iterator, const_iterator>");
- }
+- allocation_lists* lists;
++ private:
++ struct allocation
++ {
++ void* p;
++ std::size_t bytes;
++ std::size_t alignment;
++ allocation* next;
+ };
+-#endif // aligned-new && rtti
- void
-@@ -150,6 +167,28 @@
- s.find(i);
- }
+- // Set the default resource, and restore the previous one on destruction.
+- struct default_resource_mgr
++ // Maintain list of allocated blocks and list of freed blocks.
++ // Copies of this memory_resource share the same ref-counted lists.
++ struct allocation_lists
+ {
+- explicit default_resource_mgr(std::pmr::memory_resource* r)
+- : prev(std::pmr::set_default_resource(r))
+- { }
++ unsigned refcount = 1;
++ allocation* active = nullptr;
++ allocation* freed = nullptr;
+
+- ~default_resource_mgr()
+- { std::pmr::set_default_resource(prev); }
++ void forget_allocations(allocation*& list)
++ {
++ while (list)
++ {
++ auto p = list;
++ list = list->next;
++ delete p;
++ }
++ }
-+void
-+test07()
-+{
-+ // PR libstdc++/78273
-+
-+ struct C {
-+ bool operator()(int l, int r) const { return l < r; }
-+
-+ struct Partition { };
-+
-+ bool operator()(int l, Partition) const { return l < 2; }
-+ bool operator()(Partition, int r) const { return 4 < r; }
-+
-+ using is_transparent = void;
+- std::pmr::memory_resource* prev;
++ ~allocation_lists()
++ {
++ forget_allocations(active); // Anything in this list is a leak!
++ forget_allocations(freed);
++ }
+ };
+
++ allocation_lists* lists;
+ };
++#endif // aligned-new && rtti
+
-+ std::set<int, C> s{ 1, 2, 3, 4, 5 };
-+
-+ auto n = s.count(C::Partition{});
-+ VERIFY( n == 3 );
-+}
++ // Set the default resource, and restore the previous one on destruction.
++ struct default_resource_mgr
++ {
++ explicit default_resource_mgr(std::pmr::memory_resource* r)
++ : prev(std::pmr::set_default_resource(r))
++ { }
+
- int
- main()
- {
-@@ -159,4 +198,5 @@
- test04();
- test05();
- test06();
-+ test07();
- }
-Index: libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc (.../branches/gcc-6-branch)
-@@ -53,7 +53,7 @@
- cit = cx.find(2L);
- VERIFY( cit == cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-
- static_assert(std::is_same<decltype(it), test_type::iterator>::value,
- "find returns iterator");
-@@ -76,7 +76,7 @@
- cn = cx.count(2L);
- VERIFY( cn == 0 );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
- }
-
- void
-@@ -94,7 +94,12 @@
- cit = cx.lower_bound(2L);
- VERIFY( cit != cx.end() && *cit == 3 );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
++ ~default_resource_mgr()
++ { std::pmr::set_default_resource(prev); }
+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "lower_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const lower_bound returns const_iterator");
- }
-
- void
-@@ -112,7 +117,12 @@
- cit = cx.upper_bound(5L);
- VERIFY( cit == cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
++ std::pmr::memory_resource* prev;
++ };
+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "upper_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const upper_bound returns const_iterator");
- }
-
- void
-@@ -131,7 +141,14 @@
- cit = cx.equal_range(2L);
- VERIFY( cit.first == cit.second && cit.first != cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ using pair = std::pair<test_type::iterator, test_type::iterator>;
-+ static_assert(std::is_same<decltype(it), pair>::value,
-+ "equal_range returns pair<iterator, iterator>");
-+ using cpair = std::pair<test_type::const_iterator, test_type::const_iterator>;
-+ static_assert(std::is_same<decltype(cit), cpair>::value,
-+ "const equal_range returns pair<const_iterator, const_iterator>");
- }
-
+ #endif // C++17
-Index: libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
+ } // namespace __gnu_test
+Index: libstdc++-v3/testsuite/20_util/function/91456.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,32 @@
-+// { dg-do compile }
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/20_util/function/91456.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/function/91456.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,37 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -5406,28 +4953,45 @@ Index: libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+#include <list>
++// { dg-options "-std=gnu++17" }
++// { dg-do compile { target c++17 } }
+
-+namespace X {
-+ struct Y { };
-+ bool operator<(Y, Y) { return false; }
-+ template<typename T>
-+ void distance(T, T) { }
-+}
++#include <functional>
+
-+int main()
-+{
-+ std::list<X::Y> l;
-+ l.sort();
-+}
-Index: libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,74 @@
-+// { dg-do run { target c++11 } }
++struct Immovable {
++ Immovable() = default;
++ Immovable(const Immovable&) = delete;
++ Immovable& operator=(const Immovable&) = delete;
++};
+
-+// Copyright (C) 2017 Free Software Foundation, Inc.
++Immovable get() { return {}; }
++const Immovable i = get(); // OK
++std::function<const Immovable()> f{&get}; // fails
++const Immovable i2 = f();
++
++const Immovable cget() { return {}; }
++Immovable ci = cget(); // OK
++std::function<Immovable()> cf{&cget}; // fails
++Immovable ci2 = cf();
+Index: libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc (.../branches/gcc-9-branch)
+@@ -23,7 +23,7 @@
+
+ #ifndef __cpp_lib_bind_front
+ # error "Feature test macro for bind_front is missing"
+-#elif __cpp_lib_bind_front < 201811L
++#elif __cpp_lib_bind_front < 201902L
+ # error "Feature test macro for bind_front has wrong value"
+ #endif
+
+Index: libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,91 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -5444,415 +5008,113 @@ Index: libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// 23.2.2.4 list operations [lib.list.ops]
++// { dg-options "-std=gnu++2a" }
++// { dg-do run { target c++2a } }
+
++#include <functional>
++#include <memory>
++#include <string>
+#include <testsuite_hooks.h>
+
-+#include <list>
++// P1651R0 bind_front should not unwrap reference_wrapper
+
-+struct ThrowingComparator
-+{
-+ unsigned int throw_after = 0;
-+ unsigned int count = 0;
-+ bool operator()(int, int) {
-+ if (++count >= throw_after) {
-+ throw 666;
-+ }
-+ return true;
-+ }
-+};
-+
-+struct X
-+{
-+ X() = default;
-+ X(int) {}
-+};
++#ifndef __cpp_lib_bind_front
++# error "Feature test macro for bind_front is missing"
++#elif __cpp_lib_bind_front < 201907L
++# error "Feature test macro for bind_front has wrong value"
++#endif
+
-+unsigned int throw_after_X = 0;
-+unsigned int count_X = 0;
++void functionAcceptingStringView(std::string_view) { }
+
-+bool operator<(const X&, const X&) {
-+ if (++count_X >= throw_after_X) {
-+ throw 666;
-+ }
-+ return true;
++void
++test01()
++{
++ std::string s;
++ auto fs = std::bind_front(&functionAcceptingStringView, std::string_view(s));
++ fs();
+}
+
++template <typename F>
++struct PartialApply {
++ PartialApply(F f) : f(f) {}
++ F f;
+
-+int main()
-+{
-+ std::list<int> a{1, 2, 3, 4};
-+ std::list<int> b{5, 6, 7, 8, 9, 10, 11, 12};
-+ try {
-+ a.merge(b, ThrowingComparator{4});
-+ } catch (...) {
-+ }
-+ VERIFY(a.size() == std::distance(a.begin(), a.end()) &&
-+ b.size() == std::distance(b.begin(), b.end()));
-+ std::list<X> ax{1, 2, 3, 4};
-+ std::list<X> bx{5, 6, 7, 8, 9, 10, 11, 12};
-+ throw_after_X = 4;
-+ try {
-+ ax.merge(bx);
-+ } catch (...) {
++ template <typename... A> decltype(auto) operator()(A const&... a) const {
++ if constexpr (std::is_invocable<F const&, A const&...>::value) {
++ return f(a...);
++ } else {
++ return bind_front(*this, a...);
++ }
+ }
-+ VERIFY(ax.size() == std::distance(ax.begin(), ax.end()) &&
-+ bx.size() == std::distance(bx.begin(), bx.end()));
-+}
-Index: libstdc++-v3/testsuite/23_containers/map/operations/2.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/23_containers/map/operations/2.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/23_containers/map/operations/2.cc (.../branches/gcc-6-branch)
-@@ -53,7 +53,7 @@
- cit = cx.find(2L);
- VERIFY( cit == cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-
- static_assert(std::is_same<decltype(it), test_type::iterator>::value,
- "find returns iterator");
-@@ -76,7 +76,7 @@
- cn = cx.count(2L);
- VERIFY( cn == 0 );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
- }
-
- void
-@@ -94,7 +94,12 @@
- cit = cx.lower_bound(2L);
- VERIFY( cit != cx.end() && cit->second == '4' );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "lower_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const lower_bound returns const_iterator");
- }
-
- void
-@@ -112,7 +117,12 @@
- cit = cx.upper_bound(3L);
- VERIFY( cit == cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
++};
+
-+ static_assert(std::is_same<decltype(it), test_type::iterator>::value,
-+ "upper_bound returns iterator");
-+ static_assert(std::is_same<decltype(cit), test_type::const_iterator>::value,
-+ "const upper_bound returns const_iterator");
- }
-
- void
-@@ -130,10 +140,38 @@
- cit = cx.equal_range(2L);
- VERIFY( cit.first == cit.second && cit.first != cx.end() );
-
-- VERIFY( Cmp::count == 0);
-+ VERIFY( Cmp::count == 0 );
-+
-+ using pair = std::pair<test_type::iterator, test_type::iterator>;
-+ static_assert(std::is_same<decltype(it), pair>::value,
-+ "equal_range returns pair<iterator, iterator>");
-+ using cpair = std::pair<test_type::const_iterator, test_type::const_iterator>;
-+ static_assert(std::is_same<decltype(cit), cpair>::value,
-+ "const equal_range returns pair<const_iterator, const_iterator>");
- }
-
+void
-+test06()
++test02()
+{
-+ // PR libstdc++/78273
-
-+ struct C {
-+ bool operator()(int l, int r) const { return l < r; }
-+
-+ struct Partition { };
-+
-+ bool operator()(int l, Partition) const { return l < 2; }
-+ bool operator()(Partition, int r) const { return 4 < r; }
++ struct Thingy { };
++ std::unique_ptr<Thingy> thingy;
++ auto func = [](const std::unique_ptr<Thingy>&, int) {};
++ PartialApply{func}(std::ref(thingy))(10);
++}
+
-+ using is_transparent = void;
-+ };
++void
++test03()
++{
++ std::string str;
++ auto func = [](const std::string& s, int) -> const std::string& { return s; };
+
-+ std::map<int, int, C> m{ {1,0}, {2,0}, {3,0}, {4, 0}, {5, 0} };
++ // sref refers to copy of str stored in bind_front result:
++ const std::string& sref = PartialApply{func}(std::ref(str))(10);
+
-+ auto n = m.count(C::Partition{});
-+ VERIFY( n == 3 );
-+}
++ // pre-P1651R0 this is a use of a dangling reference:
++ const char& c = sref[0];
+
- int
- main()
- {
-@@ -142,4 +180,5 @@
- test03();
- test04();
- test05();
-+ test06();
- }
-Index: libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc (.../branches/gcc-6-branch)
-@@ -1,4 +1,4 @@
--// Copyright (C) 2015-2016 Free Software Foundation, Inc.
-+// Copyright (C) 2015-2017 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -20,6 +20,7 @@
- #include <string>
- #include <testsuite_hooks.h>
- #include <testsuite_allocator.h>
-+#include <ext/throw_allocator.h>
-
- #if _GLIBCXX_USE_CXX11_ABI
- using C = wchar_t;
-@@ -100,10 +101,44 @@
- VERIFY(1 == v5.get_allocator().get_personality());
- }
-
-+void test03()
-+{
-+ // PR libstdc++/79254
-+ using throw_alloc = __gnu_cxx::throw_allocator_limit<C>;
-+ typedef propagating_allocator<C, true, throw_alloc> alloc_type;
-+ typedef std::basic_string<C, traits, alloc_type> test_type;
-+ alloc_type a1(1), a2(2);
-+ throw_alloc::set_limit(2); // Throw on third allocation (during assignment).
-+ const C* s1 = L"a string that is longer than a small string";
-+ const C* s2 = L"another string that is longer than a small string";
-+ test_type v1(s1, a1);
-+ test_type v2(s2, a2);
-+ bool caught = false;
-+ try {
-+ v1 = v2;
-+ } catch (__gnu_cxx::forced_error&) {
-+ caught = true;
-+ }
-+ VERIFY( caught );
-+ VERIFY( v1 == s1 );
-+ VERIFY( v1.get_allocator() == a1 );
-+
-+ throw_alloc::set_limit(1); // Allow one more allocation (and no more).
-+ test_type v3(s1, a1);
-+ // No allocation when allocators are equal and capacity is sufficient:
-+ VERIFY( v1.capacity() >= v3.size() );
-+ v1 = v3;
-+ // No allocation when the contents fit in the small-string buffer:
-+ v2 = L"sso";
-+ v1 = v2;
-+ VERIFY( v1.get_allocator() == a2 );
++ // post-P1651R0 the bind_front result stores a reference_wrapper by value,
++ // and so sref is bound to str instead of dangling:
++ VERIFY( &c == str.data() );
++ VERIFY( &sref == &str );
+}
+
- int main()
- {
- test01();
- test02();
-+ test03();
- return 0;
- }
- #else
-Index: libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc (.../branches/gcc-6-branch)
-@@ -1,4 +1,4 @@
--// Copyright (C) 2015-2016 Free Software Foundation, Inc.
-+// Copyright (C) 2015-2017 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -20,6 +20,7 @@
- #include <string>
- #include <testsuite_hooks.h>
- #include <testsuite_allocator.h>
-+#include <ext/throw_allocator.h>
-
- #if _GLIBCXX_USE_CXX11_ABI
- using C = char;
-@@ -100,10 +101,44 @@
- VERIFY(1 == v5.get_allocator().get_personality());
- }
-
-+void test03()
++int
++main()
+{
-+ // PR libstdc++/79254
-+ using throw_alloc = __gnu_cxx::throw_allocator_limit<C>;
-+ typedef propagating_allocator<C, true, throw_alloc> alloc_type;
-+ typedef std::basic_string<C, traits, alloc_type> test_type;
-+ alloc_type a1(1), a2(2);
-+ throw_alloc::set_limit(2); // Throw on third allocation (during assignment).
-+ const C* s1 = "a string that is longer than a small string";
-+ const C* s2 = "another string that is longer than a small string";
-+ test_type v1(s1, a1);
-+ test_type v2(s2, a2);
-+ bool caught = false;
-+ try {
-+ v1 = v2;
-+ } catch (__gnu_cxx::forced_error&) {
-+ caught = true;
-+ }
-+ VERIFY( caught );
-+ VERIFY( v1 == s1 );
-+ VERIFY( v1.get_allocator() == a1 );
-+
-+ throw_alloc::set_limit(1); // Allow one more allocation (and no more).
-+ test_type v3(s1, a1);
-+ // No allocation when allocators are equal and capacity is sufficient:
-+ VERIFY( v1.capacity() >= v3.size() );
-+ v1 = v3;
-+ // No allocation when the contents fit in the small-string buffer:
-+ v2 = "sso";
-+ v1 = v2;
-+ VERIFY( v1.get_allocator() == a2 );
-+}
-+
- int main()
- {
- test01();
- test02();
++ test01();
++ test02();
+ test03();
- return 0;
- }
- #else
-Index: libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc (.../branches/gcc-6-branch)
-@@ -43,10 +43,18 @@
- std::mt19937 rng(8890);
- std::seed_seq sequence{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- rng.seed(sequence);
-- rng.discard(12 * 629143 + 6);
-- float n =
-- std::generate_canonical<float, std::numeric_limits<float>::digits>(rng);
-- VERIFY( n != 1.f );
-+ rng.discard(12 * 629143);
-+ std::mt19937 rng2{rng};
-+ for (int i = 0; i < 20; ++i)
-+ {
-+ float n =
-+ std::generate_canonical<float, std::numeric_limits<float>::digits>(rng);
-+ VERIFY( n != 1.f );
-+
-+ // PR libstdc++/80137
-+ rng2.discard(1);
-+ VERIFY( rng == rng2 );
-+ }
- }
-
- int
-Index: libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc (.../branches/gcc-6-branch)
-@@ -106,9 +106,22 @@
- MoveDeleted&& md3 = any_cast<MoveDeleted&&>(any(std::move(md)));
- }
-
-+void test04()
-+{
-+ // PR libstdc++/69321
-+ struct noncopyable {
-+ noncopyable(noncopyable const&) = delete;
-+ };
-+
-+ any a;
-+ auto p = any_cast<noncopyable>(&a);
-+ VERIFY( p == nullptr );
+}
-+
- int main()
- {
- test01();
- test02();
- test03();
-+ test04();
- }
-Index: libstdc++-v3/testsuite/experimental/iterator/requirements.cc
+Index: libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/experimental/iterator/requirements.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/experimental/iterator/requirements.cc (.../branches/gcc-6-branch)
-@@ -20,7 +20,7 @@
-
- // This is a compile-only test with minimal includes
- #include <experimental/iterator>
--#include <iosfwd>
-+#include <iosfwd> // No guarantee that <experimental/iterator> includes this!
-
- using namespace std::experimental;
-
-@@ -56,3 +56,13 @@
- tester<wchar_t, wchar_t> ww;
- tester<int, wchar_t> iw;
- #endif
-+
-+std::ostream& os();
-+
-+// Ensure that contents of <iterator> are defined by <experimental/iterator>:
-+std::reverse_iterator<int*> ii;
-+std::move_iterator<int*> mi;
-+std::istream_iterator<int> isi;
-+std::ostream_iterator<int> osi(os());
-+std::istreambuf_iterator<char> isbi;
-+std::ostreambuf_iterator<char> osbi(os());
-Index: libstdc++-v3/testsuite/experimental/array/make_array.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/experimental/array/make_array.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/experimental/array/make_array.cc (.../branches/gcc-6-branch)
-@@ -1,7 +1,6 @@
--// { dg-options "-std=gnu++14" }
--// { dg-do compile }
-+// { dg-do compile { target c++14 } }
-
--// Copyright (C) 2015-2016 Free Software Foundation, Inc.
-+// Copyright (C) 2015-2017 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -19,6 +18,7 @@
- // <http://www.gnu.org/licenses/>.
-
- #include <experimental/array>
-+#include <functional> // for std::ref and std::reference_wrapper
-
- struct MoveOnly
- {
-@@ -27,7 +27,7 @@
- MoveOnly& operator=(MoveOnly&&) = default;
+--- a/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc (.../branches/gcc-9-branch)
+@@ -24,7 +24,18 @@
+ void operator()() noexcept;
};
--int main()
-+void test01()
- {
- char x[42];
- std::array<char, 42> y = std::experimental::to_array(x);
-@@ -45,3 +45,13 @@
- = std::experimental::make_array(1,2L, 3);
- constexpr std::array<MoveOnly, 1> zzz2 = std::experimental::make_array(MoveOnly{});
- }
+-static_assert( noexcept(std::__invoke(std::declval<abstract>())), "" );
+-#if __cpp_lib_invoke
+-static_assert( noexcept(std::invoke(std::declval<abstract>())), "" );
+-#endif
++static_assert( noexcept(std::__invoke(std::declval<abstract>())),
++ "It should be possible to use abstract types with INVOKE" );
++
++struct F {
++ void operator()() &;
++ void operator()() && noexcept;
++ int operator()(int);
++ double* operator()(int, int) noexcept;
++};
++struct D { D(void*); };
+
-+void test02()
-+{
-+ // PR libstdc++/79195
-+ struct A {};
-+ struct B : A {};
-+ struct C : A {};
-+ auto arr = std::experimental::make_array<A>(B{}, C{});
-+ static_assert(std::is_same<decltype(arr), std::array<A, 2>>::value, "");
-+}
-Index: libstdc++-v3/testsuite/17_intro/names.cc
++static_assert( !noexcept(std::__invoke(std::declval<F&>())), "" );
++static_assert( noexcept(std::__invoke(std::declval<F>())), "" );
++static_assert( !noexcept(std::__invoke(std::declval<F>(), 1)), "" );
++static_assert( noexcept(std::__invoke(std::declval<F>(), 1, 2)), "" );
+Index: libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/17_intro/names.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/17_intro/names.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,110 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,49 @@
++// Copyright (C) 2016-2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -5869,216 +5131,44 @@ Index: libstdc++-v3/testsuite/17_intro/names.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+// { dg-do compile }
-+
-+// Define macros for some common variables names that we must not use for
-+// naming variables, parameters etc. in the library.
-+#define tmp (
-+#define A (
-+#define B (
-+#define C (
-+#define D (
-+#define E (
-+#define F (
-+#define G (
-+#define H (
-+#define I (
-+#define J (
-+#define K (
-+#define L (
-+#define M (
-+#define N (
-+#define O (
-+#define P (
-+#define Q (
-+#define R (
-+#define S (
-+#define T (
-+#define U (
-+#define V (
-+#define W (
-+#define X (
-+#define Y (
-+#define Z (
-+#if __cplusplus >= 201103L
-+// <random> defines member functions called a() and b()
-+#else
-+#define a (
-+#define b (
-+#endif
-+// <queue> and <stack> defined data members called c
-+#define d (
-+#define e (
-+#define f (
-+#define g (
-+#if __cplusplus >= 201402L
-+// <chrono> defines operator ""h in C++14
-+// <complex> defines operator ""i in C++14
-+#else
-+#define h (
-+#define i (
-+#endif
-+#define j (
-+#if __cplusplus >= 201103L
-+// <random> defines member functions called k()
-+#else
-+#define k (
-+#endif
-+#define l (
-+#if __cplusplus >= 201103L
-+// <random> defines member functions called m() and n()
-+#else
-+#define m (
-+#define n (
-+#endif
-+#define o (
-+#if __cplusplus >= 201103L
-+// <random> defines member functions called p()
-+#else
-+#define p (
-+#endif
-+#define q (
-+#define r (
-+#if __cplusplus >= 201103L
-+// <random> defines member functions called s() and t()
-+// <chrono> and <string> define operator ""s in C++14
-+#else
-+#define s (
-+#define t (
-+#endif
-+#define u (
-+#define v (
-+#define w (
-+#define x (
-+#define y (
-+#define z (
-+
-+#ifdef _AIX
-+// See https://gcc.gnu.org/ml/libstdc++/2017-03/msg00015.html
-+#undef f
-+#undef r
-+#undef x
-+#undef y
-+#endif
-+
-+#include <bits/stdc++.h>
-Index: libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,52 @@
-+// { dg-do run { target c++11 } }
-+// { dg-options "-g -O0" }
-+
-+// Copyright (C) 2016 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library. This library 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.
-+
-+// This library 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 this library; see the file COPYING3. If not see
-+// <http://www.gnu.org/licenses/>.
++// { dg-options "-std=gnu++17" }
++// { dg-do compile { target c++17 } }
+
-+#include <memory>
++#include <functional>
+
-+struct x_struct
-+{
-+ int y;
++struct abstract {
++ virtual ~abstract() = 0;
++ void operator()() noexcept;
+};
+
-+int
-+main ()
-+{
-+ std::shared_ptr<int> p(new int(10));
-+
-+ std::shared_ptr<x_struct> q(new x_struct{23});
++static_assert( noexcept(std::__invoke(std::declval<abstract>())),
++ "It should be possible to use abstract types with INVOKE" );
++static_assert( noexcept(std::invoke(std::declval<abstract>())),
++ "It should be possible to use abstract types with INVOKE" );
+
-+// { dg-final { note-test *p 10 } }
-+// { dg-final { regexp-test p.get() 0x.* } }
-+
-+// { dg-final { whatis-test *p int } }
-+// { dg-final { whatis-test p.get() "int \*" } }
-+
-+// { dg-final { note-test *q {\{y = 23\}} } }
-+// { dg-final { regexp-test q.get() 0x.* } }
-+// { dg-final { note-test q->y 23 } }
-+
-+// { dg-final { whatis-test *q x_struct } }
-+// { dg-final { whatis-test q.get() "x_struct \*" } }
-+// { dg-final { whatis-test q->y int } }
-+
-+ return 0; // Mark SPOT
-+}
-+
-+// { dg-final { gdb-test SPOT {} 1 } }
-Index: libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc (.../branches/gcc-6-branch)
-@@ -28,14 +28,12 @@
- int
- main ()
- {
-- int *i = new int;
-- *i = 10;
-- std::unique_ptr<int> p(i);
-+ std::unique_ptr<int> p(new int(10));
-
-- x_struct *x = new x_struct;
-- x->y = 23;
-- std::unique_ptr<x_struct> q(x);
-+ std::unique_ptr<x_struct> q(new x_struct{23});
-
-+ std::unique_ptr<x_struct[]> r(new x_struct[2]{ {46}, {69} });
-+
- // { dg-final { note-test *p 10 } }
- // { dg-final { regexp-test p.get() 0x.* } }
-
-@@ -50,6 +48,15 @@
- // { dg-final { whatis-test q.get() "x_struct \*" } }
- // { dg-final { whatis-test q->y int } }
-
-+// { dg-final { note-test r\[1] {\{y = 69\}} } }
-+// { dg-final { regexp-test r.get() 0x.* } }
-+// { dg-final { note-test r\[1].y 69 } }
-+
-+// { dg-final { whatis-test r\[1] x_struct } }
-+// { dg-final { whatis-test r.get() "x_struct \*" } }
-+// { dg-final { whatis-test r\[1].y int } }
++struct F {
++ void operator()() &;
++ void operator()() && noexcept;
++ int operator()(int);
++ double* operator()(int, int) noexcept;
++};
++struct D { D(void*); };
+
++static_assert( !noexcept(std::__invoke(std::declval<F&>())), "" );
++static_assert( noexcept(std::__invoke(std::declval<F>())), "" );
++static_assert( !noexcept(std::__invoke(std::declval<F>(), 1)), "" );
++static_assert( noexcept(std::__invoke(std::declval<F>(), 1, 2)), "" );
+
- return 0; // Mark SPOT
- }
-
-Index: libstdc++-v3/testsuite/util/testsuite_allocator.h
++static_assert( !noexcept(std::invoke(std::declval<F&>())), "" );
++static_assert( noexcept(std::invoke(std::declval<F>())), "" );
++static_assert( !noexcept(std::invoke(std::declval<F>(), 1)), "" );
++static_assert( noexcept(std::invoke(std::declval<F>(), 1, 2)), "" );
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../branches/gcc-6-branch)
-@@ -287,7 +287,7 @@
-
- Alloc& base() { return *this; }
- const Alloc& base() const { return *this; }
-- void swap_base(Alloc& b) { swap(b, this->base()); }
-+ void swap_base(Alloc& b) { using std::swap; swap(b, this->base()); }
-
- public:
- typedef typename check_consistent_alloc_value_type<Tp, Alloc>::value_type
-Index: libstdc++-v3/testsuite/20_util/pair/79141.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/20_util/pair/79141.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/20_util/pair/79141.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,25 @@
-+// { dg-do compile { target c++11 } }
-+
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,35 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -6095,18 +5185,30 @@ Index: libstdc++-v3/testsuite/20_util/pair/79141.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
-+#include <utility>
++// { dg-do compile { target c++11 } }
+
-+int main() {
-+ std::pair<int,int> p;
-+ p = {};
++#include <vector>
++
++struct X {
++ X() = default;
++ X(const X&) = delete;
++};
++
++void test01()
++{
++ X x[1];
++ alignas(X) unsigned char buf[sizeof(X)];
++ X* p = (X*)buf;
++
++ std::uninitialized_copy_n(x, 1, p); // { dg-error "here" }
+}
-Index: libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
++// { dg-error "must be constructible" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc
===================================================================
---- a/src/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,81 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,38 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -6125,74 +5227,41 @@ Index: libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
+
+// { dg-do compile { target c++11 } }
+
-+#include <memory>
-+
-+using std::is_same;
-+
-+template<typename T, typename U>
-+ using Rebind = typename std::allocator_traits<T>::template rebind_alloc<U>;
-+
-+template<typename T>
-+ struct HasRebind {
-+ using value_type = T;
-+ template<typename U> struct rebind { using other = std::allocator<U>; };
-+ };
-+
-+static_assert(is_same<Rebind<HasRebind<int>, long>,
-+ std::allocator<long>>::value,
-+ "nested alias template is used");
-+
-+template<typename T>
-+ struct NoRebind0 {
-+ using value_type = T;
-+ };
-+
-+static_assert(is_same<Rebind<NoRebind0<int>, long>,
-+ NoRebind0<long>>::value,
-+ "first template argument is replaced");
-+
-+template<typename T, typename>
-+ struct NoRebind1 {
-+ using value_type = T;
-+ };
-+
-+static_assert(is_same<Rebind<NoRebind1<int, void>, long>,
-+ NoRebind1<long, void>>::value,
-+ "first template argument is replaced");
-+
-+template<typename T, typename, typename>
-+ struct NoRebind2 {
-+ using value_type = T;
-+ };
++#include <vector>
+
-+static_assert(is_same<Rebind<NoRebind2<int, void, void>, long>,
-+ NoRebind2<long, void, void>>::value,
-+ "first template argument is replaced");
++// PR libstdc++/89164
+
-+template<typename T, typename...>
-+ struct NoRebindN {
-+ using value_type = T;
-+ };
++struct X
++{
++ X() = default;
++ X(const X&) = delete;
++};
+
-+static_assert(is_same<Rebind<NoRebindN<int>, long>,
-+ NoRebindN<long>>::value,
-+ "first template argument is replaced");
-+static_assert(is_same<Rebind<NoRebindN<int, void>, long>,
-+ NoRebindN<long, void>>::value,
-+ "first template argument is replaced");
++void test01()
++{
++ X x[1];
++ alignas(X) unsigned char buf[sizeof(X)];
++ X* p = (X*)buf;
+
-+template<typename T, int = 0>
-+ struct CannotRebind {
-+ using value_type = T;
-+ };
-+// PR libstdc++/72792 specialization of allocator_traits is still well-formed:
-+std::allocator_traits<CannotRebind<int>>::value_type v;
-Index: libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,52 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
++ std::uninitialized_copy(x, x+1, p); // { dg-error "here" }
++}
++// { dg-error "must be constructible" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc (.../branches/gcc-9-branch)
+@@ -34,4 +34,4 @@
+ T t[1];
+ std::uninitialized_copy(t, t+1, result); // { dg-error "here" }
+ }
+-// { dg-prune-output "use of deleted function" }
++// { dg-error "constructible from value" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,35 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -6211,45 +5280,28 @@ Index: libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
+
+// { dg-do compile { target c++11 } }
+
-+#include <memory>
-+
-+// Non-type template param means pointer_traits::rebind can't be instantiated.
-+template<typename T, int = 0>
-+ struct Pointer
-+ {
-+ using element_type = T;
-+ Pointer(T* p = nullptr) : ptr(p) { }
-+ T* ptr;
-+ };
-+
-+template<typename T>
-+ struct Alloc
-+ {
-+ using value_type = T;
-+ using pointer = Pointer<T>;
-+ using const_pointer = Pointer<const T>;
-+ using void_pointer = Pointer<void>;
-+ using const_void_pointer = Pointer<const void>;
++#include <vector>
+
-+ pointer allocate(std::size_t n)
-+ { return std::allocator<T>().allocate(n); }
++struct X {
++ X() = default;
++ X(const X&) = delete;
++};
+
-+ void allocate(pointer p, std::size_t n)
-+ { return std::allocator<T>().deallocate(p, n); }
-+ };
++void test01()
++{
++ X x;
++ alignas(X) unsigned char buf[sizeof(X)];
++ X* p = (X*)buf;
+
-+// The nested pointer types in Alloc should be found without attempting to
-+// instantiate pointer_traits::rebind (which would fail):
-+std::allocator_traits<Alloc<int>>::pointer p;
-+std::allocator_traits<Alloc<int>>::const_pointer cp;
-+std::allocator_traits<Alloc<int>>::void_pointer vp;
-+std::allocator_traits<Alloc<int>>::const_void_pointer cvp;
-Index: libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,68 @@
-+// Copyright (C) 2017 Free Software Foundation, Inc.
++ std::uninitialized_fill_n(p, 1, x); // { dg-error "here" }
++}
++// { dg-error "must be constructible" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,35 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -6268,63 +5320,60 @@ Index: libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
+
+// { dg-do compile { target c++11 } }
+
-+#include <memory>
-+
-+using std::is_same;
-+
-+template<typename T, typename U>
-+ using Rebind = typename std::pointer_traits<T>::template rebind<U>;
-+
-+template<typename T>
-+ struct HasRebind {
-+ template<typename U> using rebind = U*;
-+ };
-+
-+static_assert(is_same<Rebind<HasRebind<int>, long>,
-+ long*>::value,
-+ "nested alias template is used");
-+
-+template<typename T> struct NoRebind0 { };
-+
-+static_assert(is_same<Rebind<NoRebind0<int>, long>,
-+ NoRebind0<long>>::value,
-+ "first template argument is replaced");
-+
-+template<typename T, typename> struct NoRebind1 { };
-+
-+static_assert(is_same<Rebind<NoRebind1<int, void>, long>,
-+ NoRebind1<long, void>>::value,
-+ "first template argument is replaced");
-+
-+template<typename T, typename, typename> struct NoRebind2 { };
-+
-+static_assert(is_same<Rebind<NoRebind2<int, void, void>, long>,
-+ NoRebind2<long, void, void>>::value,
-+ "first template argument is replaced");
-+
-+template<typename T, typename...> struct NoRebindN { };
-+
-+static_assert(is_same<Rebind<NoRebindN<int>, long>,
-+ NoRebindN<long>>::value,
-+ "first template argument is replaced");
-+static_assert(is_same<Rebind<NoRebindN<int, void>, long>,
-+ NoRebindN<long, void>>::value,
-+ "first template argument is replaced");
++#include <vector>
+
-+template<typename T, int = 0>
-+ struct CannotRebind {
-+ using element_type = T;
-+ };
-+// PR libstdc++/72793 specialization of pointer_traits is still well-formed:
-+std::pointer_traits<CannotRebind<int>>::element_type e;
-Index: libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
-===================================================================
---- a/src/libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc (.../branches/gcc-6-branch)
-@@ -0,0 +1,42 @@
-+// { dg-do run { target c++14 } }
++struct X {
++ X() = default;
++ X(const X&) = delete;
++};
+
-+// Copyright (C) 2016 Free Software Foundation, Inc.
++void f()
++{
++ X x;
++ alignas(X) unsigned char buf[sizeof(X)];
++ X* p = (X*)buf;
++
++ std::uninitialized_fill(p, p+1, x); // { dg-error "here" }
++}
++// { dg-error "must be constructible" "" { target *-*-* } 0 }
+Index: libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../branches/gcc-9-branch)
+@@ -119,9 +119,11 @@
+ static_assert( ! is_nt_invocable_r< T, F >(), "call throws");
+ static_assert( ! is_nt_invocable_r< NT, F >(), "call throws");
+ static_assert( ! is_nt_invocable_r< Ex, F >(), "call throws");
++ static_assert( ! is_nt_invocable_r< void, F >(), "call throws");
+ static_assert( ! is_nt_invocable_r< T, CF >(), "conversion throws");
+ static_assert( is_nt_invocable_r< NT, CF >(), "" );
+ static_assert( ! is_nt_invocable_r< Ex, CF >(), "conversion fails");
++ static_assert( is_nt_invocable_r< void, CF >(), "");
+
+ static_assert( ! is_nt_invocable< F, int >(), "call throws");
+ static_assert( is_nt_invocable< F&, int >(), "");
+@@ -140,6 +142,7 @@
+
+ static_assert( is_nt_invocable_r< char&, CF, int >(), "");
+ static_assert( is_nt_invocable_r< char&, CF&, int >(), "");
++ static_assert( is_nt_invocable_r< void, CF&, int >(), "");
+
+ static_assert( ! is_nt_invocable_r< T, CF&, int >(),
+ "conversion throws");
+@@ -146,6 +149,7 @@
+ static_assert( is_nt_invocable_r< NT, CF&, int >(), "");
+ static_assert( ! is_nt_invocable_r< Ex, CF&, int >(),
+ "conversion fails, would use explicit constructor");
++ static_assert( is_nt_invocable_r< void, CF&, int >(), "");
+
+ static_assert( ! is_nt_invocable< F, int, int >(),
+ "would call private member");
+Index: libstdc++-v3/testsuite/20_util/is_invocable/91456.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/is_invocable/91456.cc (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/is_invocable/91456.cc (.../branches/gcc-9-branch)
+@@ -0,0 +1,34 @@
++// Copyright (C) 2019 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
@@ -6341,64733 +5390,27122 @@ Index: libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
++// { dg-options "-std=gnu++17" }
++// { dg-do compile { target c++17 } }
+
-+// NOTE: This makes use of the fact that we know how moveable
-+// is implemented on tuple. If the implementation changed
-+// this test may begin to fail.
-+
-+#include <tuple>
-+#include <experimental/any>
-+#include <testsuite_hooks.h>
++#include <type_traits>
+
-+using std::experimental::any;
++#include <functional>
+
-+void test01()
-+{
-+ std::tuple<any, any> t(std::allocator_arg,
-+ std::allocator<any>{});
-+ VERIFY(std::get<0>(t).empty());
-+ VERIFY(std::get<1>(t).empty());
-+}
++struct Immovable {
++ Immovable() = default;
++ Immovable(const Immovable&) = delete;
++ Immovable& operator=(const Immovable&) = delete;
++};
+
-+int main()
-+{
-+ test01();
-+}
++Immovable get() { return {}; }
++const Immovable i = get(); // OK
++std::function<const Immovable()> f{&get}; // fails
++const Immovable i2 = f();
+Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1829,6 +1829,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1885,6 +1886,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2060,13 +2062,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4402,6 +4408,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1829,6 +1829,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1885,6 +1886,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2060,13 +2062,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4402,6 +4408,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4360,6 +4370,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4360,6 +4370,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4362,6 +4372,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4362,6 +4372,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1975,6 +1975,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -2031,6 +2032,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2206,13 +2208,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4635,6 +4641,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4361,6 +4371,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4361,6 +4371,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4363,6 +4373,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1804,6 +1804,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1860,6 +1861,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2031,13 +2033,21 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4363,6 +4373,8 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -112,6 +112,7 @@
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
++FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+ FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
+ FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
+ FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
+@@ -261,6 +262,7 @@
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
++FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4
+ FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+@@ -328,9 +330,66 @@
+ FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+ FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+ FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
++FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSsixEm@@GLIBCXX_3.4
+ FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+ FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
++FUNC:_ZNKSt10filesystem16filesystem_error4whatEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem16filesystem_error5path1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem16filesystem_error5path2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem18directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path11parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path12has_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path13has_root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path13has_root_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path13relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path14root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path15has_parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path16lexically_normalEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path17_M_find_extensionEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path17has_relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path18has_root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path18lexically_relativeERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path19lexically_proximateERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path5_List13_Impl_deleterclEPNS1_5_ImplE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path5_List3endEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path5_List5beginEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path7compareERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path9root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path9root_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error4whatEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1118directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path11parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path12has_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path13relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path14root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path15has_parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path16lexically_normalEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path17_M_find_extensionEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path17has_relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path18has_root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path18lexically_relativeERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path19lexically_proximateERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path5_List13_Impl_deleterclEPNS2_5_ImplE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path5_List3endEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path5_List5beginEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path7compareERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path9root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path9root_pathEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+ FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+ FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+@@ -876,6 +935,7 @@
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+@@ -936,6 +996,7 @@
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.21
+@@ -1067,6 +1128,13 @@
+ FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE6do_outERS0_PKDiS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE9do_lengthERS0_PKDuS4_m@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21
+@@ -1074,6 +1142,13 @@
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDsS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE6do_outERS0_PKDsS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE9do_lengthERS0_PKDuS4_m@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21
+@@ -1276,6 +1351,7 @@
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21
++FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+@@ -1294,6 +1370,7 @@
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21
++FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+@@ -1386,6 +1463,8 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+@@ -1393,6 +1472,7 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+@@ -1409,6 +1489,7 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+@@ -1467,11 +1548,14 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mRKS1_@@GLIBCXX_3.4.23
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4
+@@ -1481,11 +1565,14 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mRKS1_@@GLIBCXX_3.4.23
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4
+@@ -1616,6 +1703,7 @@
+ FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSoaSEOSo@@GLIBCXX_3.4.21
++FUNC:_ZNSolsEDn@@GLIBCXX_3.4.26
+ FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+ FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+ FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+@@ -1643,6 +1731,8 @@
+ FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
++FUNC:_ZNSs12__sv_wrapperC1ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSs12__sv_wrapperC2ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
+ FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+ FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+ FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+@@ -1650,6 +1740,7 @@
+ FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+ FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4
+ FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4
++FUNC:_ZNSs17_S_to_string_viewESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
+ FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14
+ FUNC:_ZNSs2atEm@@GLIBCXX_3.4
+ FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+@@ -1666,6 +1757,7 @@
+ FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4
+ FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
++FUNC:_ZNSs4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+ FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+ FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+@@ -1724,11 +1816,14 @@
+ FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
+ FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4
+ FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
++FUNC:_ZNSsC1ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
++FUNC:_ZNSsC1EOSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSsC1ERKSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC1ERKSsmRKSaIcE@@GLIBCXX_3.4.23
+ FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4
+ FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4
+@@ -1738,11 +1833,14 @@
+ FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
++FUNC:_ZNSsC2ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
++FUNC:_ZNSsC2EOSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSsC2ERKSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC2ERKSsmRKSaIcE@@GLIBCXX_3.4.23
+ FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4
+ FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4
+@@ -1774,6 +1872,208 @@
+ FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10hash_valueERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEm@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEmRSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEm@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEmRSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathB5cxx11Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIlSt5ratioILl1ELl1000000000EEEEEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIlSt5ratioILl1ELl1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIlSt5ratioILl1ELl1000000000EEEEEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIlSt5ratioILl1ELl1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorD0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path14_M_split_cmptsEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path14_S_convert_locEPKcS2_RKSt6locale@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path15remove_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path16replace_filenameERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path17replace_extensionERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path5_ListC1ERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path5_ListC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4pathaSERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4pathdVERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4pathpLERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1110hash_valueERKNS0_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path15remove_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path16replace_filenameERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path17replace_extensionERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1ERKS2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114pathaSERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114pathdVERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114pathpLERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+ FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+ FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4
+@@ -1860,10 +2160,12 @@
+ FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+ FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+ FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
++FUNC:_ZNSt11logic_errorC1EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt11logic_errorC1EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC1ERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSt11logic_errorC2EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt11logic_errorC2EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC2ERKS_@@GLIBCXX_3.4.21
+@@ -1871,6 +2173,7 @@
+ FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt11logic_erroraSEOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt11logic_erroraSERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11range_errorC1EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+@@ -1903,6 +2206,20 @@
+ FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+ FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+@@ -2206,6 +2523,7 @@
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_@@GLIBCXX_3.4.21
++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+@@ -2231,10 +2549,12 @@
+ FUNC:_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18
+ FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18
++FUNC:_ZNSt13runtime_errorC1EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC1ERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSt13runtime_errorC2EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC2ERKS_@@GLIBCXX_3.4.21
+@@ -2242,6 +2562,7 @@
+ FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt13runtime_erroraSEOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13runtime_erroraSERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@@GLIBCXX_3.4.21
+@@ -2353,12 +2674,16 @@
+ FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIcEC1ERKSsm@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIcEC2ERKSsm@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIwEC1ERKSsm@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIwEC2ERKSsm@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+@@ -2498,9 +2823,11 @@
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_@@GLIBCXX_3.4.21
+@@ -2520,9 +2847,11 @@
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21
+@@ -2730,9 +3059,11 @@
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+@@ -2742,9 +3073,11 @@
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+@@ -2756,6 +3089,7 @@
+ FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+ FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+ FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
++FUNC:_ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19__codecvt_utf8_baseIDiED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19__codecvt_utf8_baseIDiED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19__codecvt_utf8_baseIDiED2Ev@@GLIBCXX_3.4.21
+@@ -2770,9 +3104,11 @@
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+@@ -2782,9 +3118,11 @@
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+@@ -2794,9 +3132,11 @@
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+@@ -2806,9 +3146,11 @@
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+@@ -2849,6 +3191,26 @@
+ FUNC:_ZNSt3_V214error_categoryD2Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt3_V215system_categoryEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt3_V216generic_categoryEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt3pmr19new_delete_resourceEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr20get_default_resourceEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr20null_memory_resourceEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr20set_default_resourceEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr25monotonic_buffer_resource13_M_new_bufferEmm@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr25monotonic_buffer_resource18_M_release_buffersEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resource11do_allocateEmm@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resource13do_deallocateEPvmm@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resource11do_allocateEmm@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPvmm@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+ FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4
+ FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4
+@@ -2982,6 +3344,8 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC2ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_@@GLIBCXX_3.4.21
+@@ -2991,10 +3355,12 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@@GLIBCXX_3.4.21
+@@ -3018,6 +3384,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_mm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEmc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.21
+@@ -3067,6 +3434,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcmc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@@GLIBCXX_3.4.21
+@@ -3083,6 +3451,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_@@GLIBCXX_3.4.21
+@@ -3125,6 +3494,8 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_@@GLIBCXX_3.4.21
+@@ -3134,10 +3505,12 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Emw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4.21
+@@ -3161,6 +3534,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_mm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEmw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.21
+@@ -3210,6 +3584,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEmmPKwm@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwmw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_@@GLIBCXX_3.4.21
+@@ -3226,6 +3601,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_@@GLIBCXX_3.4.21
+@@ -3289,10 +3665,12 @@
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3318,10 +3696,12 @@
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3401,9 +3781,11 @@
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3413,9 +3795,11 @@
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3425,9 +3809,11 @@
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3437,9 +3823,11 @@
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3449,9 +3837,11 @@
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3461,9 +3851,11 @@
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3546,9 +3938,15 @@
+ FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4.21
++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7codecvtIDic11__mbstate_tED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDic11__mbstate_tED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDic11__mbstate_tED2Ev@@GLIBCXX_3.4.21
++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7codecvtIDsc11__mbstate_tED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDsc11__mbstate_tED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDsc11__mbstate_tED2Ev@@GLIBCXX_3.4.21
+@@ -3831,6 +4229,7 @@
+ FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+ FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
++FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
+ FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+ FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+ FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+@@ -4211,6 +4610,7 @@
+ OBJECT:0:CXXABI_1.3.1
+ OBJECT:0:CXXABI_1.3.10
+ OBJECT:0:CXXABI_1.3.11
++OBJECT:0:CXXABI_1.3.12
+ OBJECT:0:CXXABI_1.3.2
+ OBJECT:0:CXXABI_1.3.3
+ OBJECT:0:CXXABI_1.3.4
+@@ -4240,6 +4640,8 @@
+ OBJECT:0:GLIBCXX_3.4.23
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
++OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+@@ -4326,6 +4728,7 @@
+ OBJECT:16:_ZTIDi@@CXXABI_1.3.3
+ OBJECT:16:_ZTIDn@@CXXABI_1.3.5
+ OBJECT:16:_ZTIDs@@CXXABI_1.3.3
++OBJECT:16:_ZTIDu@@CXXABI_1.3.12
+ OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+ OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+ OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+@@ -4447,6 +4850,19 @@
+ OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+ OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+ OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_boundedE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_integerE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE12has_infinityE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE13has_quiet_NaNE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE14is_specializedE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE15has_denorm_lossE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE15tinyness_beforeE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE17has_signaling_NaNE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE5trapsE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE8is_exactE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_iec559E@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_moduloE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_signedE@@GLIBCXX_3.4.26
+ OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+ OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+ OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+@@ -4758,6 +5174,8 @@
+ OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+ OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+ OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
++OBJECT:24:_ZTINSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26
++OBJECT:24:_ZTINSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26
+ OBJECT:24:_ZTINSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+ OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+ OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+@@ -4767,6 +5185,8 @@
+ OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+ OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+ OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
++OBJECT:24:_ZTINSt3pmr26synchronized_pool_resourceE@@GLIBCXX_3.4.26
++OBJECT:24:_ZTINSt3pmr28unsynchronized_pool_resourceE@@GLIBCXX_3.4.26
+ OBJECT:24:_ZTINSt7__cxx1114collate_bynameIcEE@@GLIBCXX_3.4.21
+ OBJECT:24:_ZTINSt7__cxx1114collate_bynameIwEE@@GLIBCXX_3.4.21
+ OBJECT:24:_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+@@ -4865,7 +5285,9 @@
+ OBJECT:24:_ZTISt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21
+ OBJECT:24:_ZTISt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21
+ OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4
++OBJECT:24:_ZTISt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:24:_ZTISt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21
++OBJECT:24:_ZTISt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:24:_ZTISt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21
+ OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+ OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+@@ -4952,6 +5374,8 @@
+ OBJECT:2:_ZTSw@@CXXABI_1.3
+ OBJECT:2:_ZTSx@@CXXABI_1.3
+ OBJECT:2:_ZTSy@@CXXABI_1.3
++OBJECT:30:_ZTSSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26
++OBJECT:30:_ZTSSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+ OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4
+ OBJECT:32:_ZTIPDd@@CXXABI_1.3.4
+@@ -4960,6 +5384,7 @@
+ OBJECT:32:_ZTIPDi@@CXXABI_1.3.3
+ OBJECT:32:_ZTIPDn@@CXXABI_1.3.5
+ OBJECT:32:_ZTIPDs@@CXXABI_1.3.3
++OBJECT:32:_ZTIPDu@@CXXABI_1.3.12
+ OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4
+ OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4
+ OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4
+@@ -4966,6 +5391,7 @@
+ OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3
+ OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5
+ OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3
++OBJECT:32:_ZTIPKDu@@CXXABI_1.3.12
+ OBJECT:32:_ZTIPKa@@CXXABI_1.3
+ OBJECT:32:_ZTIPKb@@CXXABI_1.3
+ OBJECT:32:_ZTIPKc@@CXXABI_1.3
+@@ -5095,6 +5521,8 @@
+ OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
+ OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4
+ OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4
++OBJECT:40:_ZTVNSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26
++OBJECT:40:_ZTVNSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26
+ OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+ OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+ OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+@@ -5169,6 +5597,15 @@
+ OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+ OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+ OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
++OBJECT:4:_ZNSt14numeric_limitsIDuE10has_denormE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE11round_styleE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE12max_exponentE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE12min_exponentE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE14max_exponent10E@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE14min_exponent10E@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE5radixE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE6digitsE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE8digits10E@@GLIBCXX_3.4.26
+ OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+ OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+ OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+@@ -5585,7 +6022,9 @@
+ OBJECT:88:_ZTVSt25__codecvt_utf8_utf16_baseIDiE@@GLIBCXX_3.4.21
+ OBJECT:88:_ZTVSt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21
+ OBJECT:88:_ZTVSt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21
++OBJECT:88:_ZTVSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:88:_ZTVSt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21
++OBJECT:88:_ZTVSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:88:_ZTVSt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21
+ OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+ OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+@@ -5679,7 +6118,9 @@
+ OBJECT:8:_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21
+ OBJECT:8:_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4.21
+ OBJECT:8:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21
++OBJECT:8:_ZNSt7codecvtIDiDu11__mbstate_tE2idE@@GLIBCXX_3.4.26
+ OBJECT:8:_ZNSt7codecvtIDic11__mbstate_tE2idE@@GLIBCXX_3.4.21
++OBJECT:8:_ZNSt7codecvtIDsDu11__mbstate_tE2idE@@GLIBCXX_3.4.26
+ OBJECT:8:_ZNSt7codecvtIDsc11__mbstate_tE2idE@@GLIBCXX_3.4.21
+ OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+ OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+Index: libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1975,6 +1975,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -2031,6 +2032,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2206,13 +2208,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4635,6 +4641,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -112,6 +112,7 @@
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
++FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26
+ FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
+ FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
+ FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
+@@ -261,6 +262,7 @@
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4
++FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4
+ FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4
+ FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4
+@@ -328,9 +330,66 @@
+ FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4
+ FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4
+ FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4
++FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSsixEj@@GLIBCXX_3.4
+ FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9
+ FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11
++FUNC:_ZNKSt10filesystem16filesystem_error4whatEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem16filesystem_error5path1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem16filesystem_error5path2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem18directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem28recursive_directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path11parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path12has_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path13has_root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path13has_root_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path13relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path14root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path15has_parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path16lexically_normalEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path17_M_find_extensionEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path17has_relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path18has_root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path18lexically_relativeERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path19lexically_proximateERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path5_List13_Impl_deleterclEPNS1_5_ImplE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path5_List3endEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path5_List5beginEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path7compareERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path9root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem4path9root_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error4whatEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1118directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iteratordeEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path11parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path12has_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path13relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path14root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path15has_parent_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path16lexically_normalEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path17_M_find_extensionEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path17has_relative_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path18has_root_directoryEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path18lexically_relativeERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path19lexically_proximateERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path5_List13_Impl_deleterclEPNS2_5_ImplE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path5_List3endEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path5_List5beginEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path7compareERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path9root_nameEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt10filesystem7__cxx114path9root_pathEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4
+ FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11
+ FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4
+@@ -734,6 +793,7 @@
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21
+@@ -794,6 +854,7 @@
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.21
+@@ -925,6 +986,13 @@
+ FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewe@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE6do_outERS0_PKDiS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE9do_lengthERS0_PKDuS4_j@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21
+@@ -932,6 +1000,13 @@
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4.21
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDsS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE6do_outERS0_PKDsS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26
++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE9do_lengthERS0_PKDuS4_j@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21
+@@ -1134,6 +1209,7 @@
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21
++FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+@@ -1152,6 +1228,7 @@
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21
++FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+ FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4
+@@ -1244,6 +1321,8 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4
+@@ -1251,6 +1330,7 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4
+@@ -1267,6 +1347,7 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4
+@@ -1325,11 +1406,14 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jRKS1_@@GLIBCXX_3.4.24
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4
+@@ -1339,11 +1423,14 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_RKS1_@@GLIBCXX_3.4.26
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jRKS1_@@GLIBCXX_3.4.24
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4
+@@ -1471,6 +1558,7 @@
+ FUNC:_ZNSoD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSoD2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSoaSEOSo@@GLIBCXX_3.4.21
++FUNC:_ZNSolsEDn@@GLIBCXX_3.4.26
+ FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4
+ FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4
+ FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4
+@@ -1497,6 +1585,8 @@
+ FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14
+ FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4
++FUNC:_ZNSs12__sv_wrapperC1ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSs12__sv_wrapperC2ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
+ FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4
+ FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4
+ FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4
+@@ -1504,6 +1594,7 @@
+ FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14
+ FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4
+ FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4
++FUNC:_ZNSs17_S_to_string_viewESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
+ FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14
+ FUNC:_ZNSs2atEj@@GLIBCXX_3.4
+ FUNC:_ZNSs3endEv@@GLIBCXX_3.4
+@@ -1520,6 +1611,7 @@
+ FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4
+ FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15
++FUNC:_ZNSs4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSs4rendEv@@GLIBCXX_3.4
+ FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4
+ FUNC:_ZNSs5beginEv@@GLIBCXX_3.4
+@@ -1578,11 +1670,14 @@
+ FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+ FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+ FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4
++FUNC:_ZNSsC1ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14
++FUNC:_ZNSsC1EOSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSsC1ERKSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC1ERKSsjRKSaIcE@@GLIBCXX_3.4.23
+ FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4
+ FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4
+@@ -1592,11 +1687,14 @@
+ FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4
++FUNC:_ZNSsC2ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15
++FUNC:_ZNSsC2EOSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSsC2ERKSsRKSaIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSsC2ERKSsjRKSaIcE@@GLIBCXX_3.4.23
+ FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4
+ FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4
+@@ -1628,6 +1726,208 @@
+ FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10hash_valueERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEy@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEyRSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEy@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEyRSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathB5cxx11Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12current_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIxSt5ratioILx1ELx1000000000EEEEEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIxSt5ratioILx1ELx1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIxSt5ratioILx1ELx1000000000EEEEEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIxSt5ratioILx1ELx1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorD0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16filesystem_errorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem18directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem19temp_directory_pathEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
++FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path14_M_split_cmptsEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path14_S_convert_locEPKcS2_RKSt6locale@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path15remove_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path16replace_filenameERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path17replace_extensionERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path5_ListC1ERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path5_ListC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4pathaSERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4pathdVERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem4pathpLERKS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1110hash_valueERKNS0_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path15remove_filenameEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path16replace_filenameERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path17replace_extensionERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1ERKS2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114pathaSERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114pathdVERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx114pathpLERKS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4
+ FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4
+ FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4
+@@ -1714,10 +2014,12 @@
+ FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
+ FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
+ FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
++FUNC:_ZNSt11logic_errorC1EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt11logic_errorC1EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC1ERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSt11logic_errorC2EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt11logic_errorC2EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11logic_errorC2ERKS_@@GLIBCXX_3.4.21
+@@ -1725,6 +2027,7 @@
+ FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt11logic_erroraSEOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt11logic_erroraSERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11range_errorC1EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+@@ -1757,6 +2060,24 @@
+ FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4
+ FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15
+@@ -2057,6 +2378,7 @@
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_@@GLIBCXX_3.4.21
++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4
+ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4
+@@ -2081,10 +2403,12 @@
+ FUNC:_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18
+ FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18
++FUNC:_ZNSt13runtime_errorC1EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC1ERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
++FUNC:_ZNSt13runtime_errorC2EOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt13runtime_errorC2ERKS_@@GLIBCXX_3.4.21
+@@ -2092,6 +2416,7 @@
+ FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4
++FUNC:_ZNSt13runtime_erroraSEOS_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt13runtime_erroraSERKS_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@@GLIBCXX_3.4.21
+@@ -2203,12 +2528,16 @@
+ FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIcEC1ERKSsj@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIcEC2ERKSsj@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIwEC1ERKSsj@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4
++FUNC:_ZNSt14collate_bynameIwEC2ERKSsj@@GLIBCXX_3.4.26
+ FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4
+@@ -2348,9 +2677,11 @@
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_@@GLIBCXX_3.4.21
+@@ -2370,9 +2701,11 @@
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21
+@@ -2540,9 +2873,11 @@
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+@@ -2552,9 +2887,11 @@
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+@@ -2566,6 +2903,7 @@
+ FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11
+ FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11
+ FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11
++FUNC:_ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19__codecvt_utf8_baseIDiED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19__codecvt_utf8_baseIDiED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19__codecvt_utf8_baseIDiED2Ev@@GLIBCXX_3.4.21
+@@ -2580,9 +2918,11 @@
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+@@ -2592,9 +2932,11 @@
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+@@ -2604,9 +2946,11 @@
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4
+@@ -2616,9 +2960,11 @@
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4
+@@ -2659,6 +3005,26 @@
+ FUNC:_ZNSt3_V214error_categoryD2Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt3_V215system_categoryEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt3_V216generic_categoryEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt3pmr19new_delete_resourceEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr20get_default_resourceEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr20null_memory_resourceEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr20set_default_resourceEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr25monotonic_buffer_resource13_M_new_bufferEjj@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr25monotonic_buffer_resource18_M_release_buffersEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resource11do_allocateEjj@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resource13do_deallocateEPvjj@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr26synchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resource11do_allocateEjj@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPvjj@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4
+ FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4
+ FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4
+@@ -2792,6 +3158,8 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC2ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_@@GLIBCXX_3.4.21
+@@ -2801,10 +3169,12 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@@GLIBCXX_3.4.21
+@@ -2828,6 +3198,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_jj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEjc@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEjc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.21
+@@ -2877,6 +3248,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcjc@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@@GLIBCXX_3.4.21
+@@ -2893,6 +3265,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_@@GLIBCXX_3.4.21
+@@ -2935,6 +3308,8 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_@@GLIBCXX_3.4.21
+@@ -2944,10 +3319,12 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4.21
+@@ -2971,6 +3348,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_jj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEjw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.21
+@@ -3020,6 +3398,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEjjPKwj@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwjw@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_@@GLIBCXX_3.4.21
+@@ -3036,6 +3415,7 @@
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_@@GLIBCXX_3.4.21
+@@ -3099,10 +3479,12 @@
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3128,10 +3510,12 @@
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3211,9 +3595,11 @@
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3223,9 +3609,11 @@
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3235,9 +3623,11 @@
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3247,9 +3637,11 @@
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3259,9 +3651,11 @@
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21
+@@ -3271,9 +3665,11 @@
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21
++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21
+@@ -3356,9 +3752,15 @@
+ FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4.21
++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7codecvtIDic11__mbstate_tED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDic11__mbstate_tED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDic11__mbstate_tED2Ev@@GLIBCXX_3.4.21
++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt7codecvtIDsc11__mbstate_tED0Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDsc11__mbstate_tED1Ev@@GLIBCXX_3.4.21
+ FUNC:_ZNSt7codecvtIDsc11__mbstate_tED2Ev@@GLIBCXX_3.4.21
+@@ -3640,6 +4042,7 @@
+ FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4
+ FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4
+ FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4
++FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26
+ FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4
+ FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4
+ FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15
+@@ -4000,6 +4403,7 @@
+ OBJECT:0:CXXABI_1.3.1
+ OBJECT:0:CXXABI_1.3.10
+ OBJECT:0:CXXABI_1.3.11
++OBJECT:0:CXXABI_1.3.12
+ OBJECT:0:CXXABI_1.3.2
+ OBJECT:0:CXXABI_1.3.3
+ OBJECT:0:CXXABI_1.3.4
+@@ -4028,6 +4432,9 @@
+ OBJECT:0:GLIBCXX_3.4.23
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
++OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
++OBJECT:0:GLIBCXX_3.4.28
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+@@ -4051,7 +4458,11 @@
+ OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+ OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+ OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
++OBJECT:12:_ZTINSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26
++OBJECT:12:_ZTINSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26
+ OBJECT:12:_ZTINSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
++OBJECT:12:_ZTINSt3pmr26synchronized_pool_resourceE@@GLIBCXX_3.4.26
++OBJECT:12:_ZTINSt3pmr28unsynchronized_pool_resourceE@@GLIBCXX_3.4.26
+ OBJECT:12:_ZTINSt7__cxx1114collate_bynameIcEE@@GLIBCXX_3.4.21
+ OBJECT:12:_ZTINSt7__cxx1114collate_bynameIwEE@@GLIBCXX_3.4.21
+ OBJECT:12:_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21
+@@ -4150,7 +4561,9 @@
+ OBJECT:12:_ZTISt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21
+ OBJECT:12:_ZTISt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21
+ OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4
++OBJECT:12:_ZTISt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:12:_ZTISt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21
++OBJECT:12:_ZTISt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:12:_ZTISt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21
+ OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+ OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+@@ -4210,6 +4623,7 @@
+ OBJECT:16:_ZTIPDi@@CXXABI_1.3.3
+ OBJECT:16:_ZTIPDn@@CXXABI_1.3.5
+ OBJECT:16:_ZTIPDs@@CXXABI_1.3.3
++OBJECT:16:_ZTIPDu@@CXXABI_1.3.12
+ OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4
+ OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4
+ OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4
+@@ -4216,6 +4630,7 @@
+ OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3
+ OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5
+ OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3
++OBJECT:16:_ZTIPKDu@@CXXABI_1.3.12
+ OBJECT:16:_ZTIPKa@@CXXABI_1.3
+ OBJECT:16:_ZTIPKb@@CXXABI_1.3
+ OBJECT:16:_ZTIPKc@@CXXABI_1.3
+@@ -4349,6 +4764,19 @@
+ OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11
+ OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11
+ OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11
++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_boundedE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_integerE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE12has_infinityE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE13has_quiet_NaNE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE14is_specializedE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE15has_denorm_lossE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE15tinyness_beforeE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE17has_signaling_NaNE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE5trapsE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE8is_exactE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_iec559E@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_moduloE@@GLIBCXX_3.4.26
++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_signedE@@GLIBCXX_3.4.26
+ OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4
+ OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4
+ OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4
+@@ -4592,6 +5020,8 @@
+ OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4
+ OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4
+ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
++OBJECT:20:_ZTVNSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26
++OBJECT:20:_ZTVNSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26
+ OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+ OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
+ OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+@@ -4720,6 +5150,8 @@
+ OBJECT:2:_ZTSw@@CXXABI_1.3
+ OBJECT:2:_ZTSx@@CXXABI_1.3
+ OBJECT:2:_ZTSy@@CXXABI_1.3
++OBJECT:30:_ZTSSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26
++OBJECT:30:_ZTSSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:32:_ZTINSt7__cxx1110moneypunctIcLb0EEE@@GLIBCXX_3.4.21
+ OBJECT:32:_ZTINSt7__cxx1110moneypunctIcLb1EEE@@GLIBCXX_3.4.21
+ OBJECT:32:_ZTINSt7__cxx1110moneypunctIwLb0EEE@@GLIBCXX_3.4.21
+@@ -4874,7 +5306,9 @@
+ OBJECT:44:_ZTVSt25__codecvt_utf8_utf16_baseIDiE@@GLIBCXX_3.4.21
+ OBJECT:44:_ZTVSt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21
+ OBJECT:44:_ZTVSt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21
++OBJECT:44:_ZTVSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:44:_ZTVSt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21
++OBJECT:44:_ZTVSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26
+ OBJECT:44:_ZTVSt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21
+ OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4
+ OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4
+@@ -4926,6 +5360,15 @@
+ OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11
+ OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11
+ OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11
++OBJECT:4:_ZNSt14numeric_limitsIDuE10has_denormE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE11round_styleE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE12max_exponentE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE12min_exponentE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE14max_exponent10E@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE14min_exponent10E@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE5radixE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE6digitsE@@GLIBCXX_3.4.26
++OBJECT:4:_ZNSt14numeric_limitsIDuE8digits10E@@GLIBCXX_3.4.26
+ OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4
+ OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4
+ OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14
+@@ -5125,7 +5568,9 @@
+ OBJECT:4:_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21
+ OBJECT:4:_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4.21
+ OBJECT:4:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21
++OBJECT:4:_ZNSt7codecvtIDiDu11__mbstate_tE2idE@@GLIBCXX_3.4.26
+ OBJECT:4:_ZNSt7codecvtIDic11__mbstate_tE2idE@@GLIBCXX_3.4.21
++OBJECT:4:_ZNSt7codecvtIDsDu11__mbstate_tE2idE@@GLIBCXX_3.4.26
+ OBJECT:4:_ZNSt7codecvtIDsc11__mbstate_tE2idE@@GLIBCXX_3.4.21
+ OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4
+ OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4
+@@ -5324,6 +5769,7 @@
+ OBJECT:8:_ZTIDi@@CXXABI_1.3.3
+ OBJECT:8:_ZTIDn@@CXXABI_1.3.5
+ OBJECT:8:_ZTIDs@@CXXABI_1.3.3
++OBJECT:8:_ZTIDu@@CXXABI_1.3.12
+ OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2
+ OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2
+ OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+Index: libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1829,6 +1829,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1885,6 +1886,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2060,13 +2062,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4401,6 +4407,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1975,6 +1975,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -2031,6 +2032,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2206,13 +2208,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4635,6 +4641,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1975,6 +1975,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -2031,6 +2032,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2206,13 +2208,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4635,6 +4641,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1829,6 +1829,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1885,6 +1886,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2060,13 +2062,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4402,6 +4408,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
+===================================================================
+--- a/src/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch)
+@@ -1829,6 +1829,7 @@
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26
+@@ -1885,6 +1886,7 @@
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26
++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27
+ FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26
+ FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26
+@@ -2060,13 +2062,17 @@
+ FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26
++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27
+ FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26
+ FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15
+@@ -4402,6 +4408,7 @@
+ OBJECT:0:GLIBCXX_3.4.24
+ OBJECT:0:GLIBCXX_3.4.25
+ OBJECT:0:GLIBCXX_3.4.26
++OBJECT:0:GLIBCXX_3.4.27
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+ OBJECT:0:GLIBCXX_3.4.5
+Index: libstdc++-v3/config/abi/pre/gnu.ver
+===================================================================
+--- a/src/libstdc++-v3/config/abi/pre/gnu.ver (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver (.../branches/gcc-9-branch)
+@@ -2268,11 +2268,11 @@
+
+ GLIBCXX_3.4.27 {
+
+- # __shared_ptr<_Dir>::__shared_ptr()
++ # __shared_ptr<_Dir>::__shared_ptr() (base object ctor)
+ _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev;
+ _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev;
+
+- # __shared_ptr<recursive_directory_iterator::_Dir_stack>::__shared_ptr()
++ # __shared_ptr<recursive_directory_iterator::_Dir_stack>::__shared_ptr() (base object ctor)
+ _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev;
+ _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev;
+
+@@ -2282,6 +2282,18 @@
+
+ } GLIBCXX_3.4.26;
+
++GLIBCXX_3.4.28 {
++
++ # __shared_ptr<_Dir>::__shared_ptr(__shared_ptr&&) (base object ctor)
++ _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS4_;
++ _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS5_;
++
++ # __shared_ptr<recursive_directory_iterator::_Dir_stack>::__shared_ptr(__shared_ptr&&) (base object ctor)
++ _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS5_;
++ _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS6_;
++
++} GLIBCXX_3.4.27;
++
+ # Symbols in the support library (libsupc++) have their own tag.
+ CXXABI_1.3 {
+
Index: libstdc++-v3/acinclude.m4
===================================================================
---- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_6_3_0_release)
-+++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-6-branch)
-@@ -2304,7 +2304,8 @@
- AC_MSG_CHECKING([for obsolete isnan function in <math.h>])
- AC_CACHE_VAL(glibcxx_cv_obsolete_isnan, [
- AC_COMPILE_IFELSE([AC_LANG_SOURCE(
-- [#include <math.h>
-+ [#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
-+ #include <math.h>
- #undef isnan
- namespace std {
- using ::isnan;
-Index: configure.ac
-===================================================================
---- a/src/configure.ac (.../tags/gcc_6_3_0_release)
-+++ b/src/configure.ac (.../branches/gcc-6-branch)
-@@ -819,6 +819,9 @@
- *-*-vxworks*)
- noconfigdirs="$noconfigdirs ${libgcj}"
- ;;
-+ aarch64*-*-freebsd*)
-+ noconfigdirs="$noconfigdirs ${libgcj}"
-+ ;;
- alpha*-*-*vms*)
- noconfigdirs="$noconfigdirs ${libgcj}"
- ;;
-Index: ChangeLog
-===================================================================
---- a/src/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,11 @@
-+2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
-+
-+ Backport from mainline
-+ 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
-+
-+ * configure.ac: Add aarch64-*-freebsd*.
-+ * configure: Regenerate.
-+
- 2016-12-21 Release Manager
+--- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_9_2_0_release)
++++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-9-branch)
+@@ -3820,7 +3820,7 @@
+ fi
+
+ # For libtool versioning info, format is CURRENT:REVISION:AGE
+-libtool_VERSION=6:27:0
++libtool_VERSION=6:28:0
- * GCC 6.3.0 released.
-Index: libatomic/ChangeLog
+ # Everything parsed; figure out what files and settings to use.
+ case $enable_symvers in
+Index: libphobos/ChangeLog
===================================================================
---- a/src/libatomic/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/libatomic/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,11 @@
-+2017-02-07 Szabolcs Nagy <szabolcs.nagy@arm.com>
+--- a/src/libphobos/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libphobos/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,12 @@
++2019-10-30 Thomas Schwinge <thomas@codesourcery.com>
++
++ Backport from trunk:
+
-+ Backport from mainline:
-+ 2017-01-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
++ 2019-09-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ PR target/78945
-+ * config/arm/exch_n.c (libat_exchange): Check __ARM_FEATURE_SIMD32.
++ * testsuite/lib/libphobos.exp (libphobos_init): Add multi-lib libgcc
++ dirs to the ld_library_path var.
+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
-Index: libatomic/config/arm/exch_n.c
+ * GCC 9.2.0 released.
+Index: libphobos/testsuite/lib/libphobos.exp
===================================================================
---- a/src/libatomic/config/arm/exch_n.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libatomic/config/arm/exch_n.c (.../branches/gcc-6-branch)
-@@ -29,7 +29,7 @@
- /* When using STREX to implement sub-word exchange, we can do much better
- than the compiler by using the APSR.GE and APSR.C flags. */
-
--#if !DONE && HAVE_STREX && !HAVE_STREXBH && N == 2
-+#if !DONE && __ARM_FEATURE_SIMD32 && HAVE_STREX && !HAVE_STREXBH && N == 2
- UTYPE
- SIZE(libat_exchange) (UTYPE *mptr, UTYPE newval, int smodel)
- {
-@@ -79,7 +79,7 @@
- #endif /* !HAVE_STREXBH && N == 2 */
+--- a/src/libphobos/testsuite/lib/libphobos.exp (.../tags/gcc_9_2_0_release)
++++ b/src/libphobos/testsuite/lib/libphobos.exp (.../branches/gcc-9-branch)
+@@ -170,6 +170,25 @@
+ append ld_library_path ":${blddir}/src/.libs"
+ }
++ # Compute what needs to be added to the existing LD_LIBRARY_PATH.
++ if {$gccdir != ""} {
++ set compiler ${gccdir}/gdc
++
++ if { [is_remote host] == 0 && [which $compiler] != 0 } {
++ foreach i "[exec $compiler --print-multi-lib]" {
++ set mldir ""
++ regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
++ set mldir [string trimright $mldir "\;@"]
++ if { "$mldir" == "." } {
++ continue
++ }
++ if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
++ append ld_library_path ":${gccdir}/${mldir}"
++ }
++ }
++ }
++ }
++
+ set_ld_library_path_env_vars
--#if !DONE && HAVE_STREX && !HAVE_STREXBH && N == 1
-+#if !DONE && __ARM_FEATURE_SIMD32 && HAVE_STREX && !HAVE_STREXBH && N == 1
- UTYPE
- SIZE(libat_exchange) (UTYPE *mptr, UTYPE newval, int smodel)
- {
-Index: config/ax_check_define.m4
-===================================================================
---- a/src/config/ax_check_define.m4 (.../tags/gcc_6_3_0_release)
-+++ b/src/config/ax_check_define.m4 (.../branches/gcc-6-branch)
-@@ -0,0 +1,92 @@
-+# ===========================================================================
-+# http://www.gnu.org/software/autoconf-archive/ax_check_define.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+# AC_CHECK_DEFINE([symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT])
-+# AX_CHECK_DEFINE([includes],[symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT])
-+#
-+# DESCRIPTION
-+#
-+# Complements AC_CHECK_FUNC but it does not check for a function but for a
-+# define to exist. Consider a usage like:
-+#
-+# AC_CHECK_DEFINE(__STRICT_ANSI__, CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500")
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-+#
-+# This program 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 of the License, or (at your
-+# option) any later version.
-+#
-+# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+# As a special exception, the respective Autoconf Macro's copyright owner
-+# gives unlimited permission to copy, distribute and modify the configure
-+# scripts that are the output of Autoconf when processing the Macro. You
-+# need not follow the terms of the GNU General Public License when using
-+# or distributing such scripts, even though portions of the text of the
-+# Macro appear in them. The GNU General Public License (GPL) does govern
-+# all other use of the material that constitutes the Autoconf Macro.
-+#
-+# This special exception to the GPL applies to versions of the Autoconf
-+# Macro released by the Autoconf Archive. When you make and distribute a
-+# modified version of the Autoconf Macro, you may extend this special
-+# exception to the GPL to apply to your modified version as well.
-+
-+#serial 8
-+
-+AU_ALIAS([AC_CHECK_DEFINED], [AC_CHECK_DEFINE])
-+AC_DEFUN([AC_CHECK_DEFINE],[
-+AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1])dnl
-+AC_CACHE_CHECK([for $1 defined], ac_var,
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
-+ #ifdef $1
-+ int ok;
-+ #else
-+ choke me
-+ #endif
-+]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)]))
-+AS_IF([test AS_VAR_GET(ac_var) != "no"], [$2], [$3])dnl
-+AS_VAR_POPDEF([ac_var])dnl
-+])
-+
-+AU_ALIAS([AX_CHECK_DEFINED], [AX_CHECK_DEFINE])
-+AC_DEFUN([AX_CHECK_DEFINE],[
-+AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$2_$1])dnl
-+AC_CACHE_CHECK([for $2 defined in $1], ac_var,
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$1>]], [[
-+ #ifdef $2
-+ int ok;
-+ #else
-+ choke me
-+ #endif
-+]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)]))
-+AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl
-+AS_VAR_POPDEF([ac_var])dnl
-+])
-+
-+AC_DEFUN([AX_CHECK_FUNC],
-+[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$2])dnl
-+AC_CACHE_CHECK([for $2], ac_var,
-+dnl AC_LANG_FUNC_LINK_TRY
-+[AC_LINK_IFELSE([AC_LANG_PROGRAM([$1
-+ #undef $2
-+ char $2 ();],[
-+ char (*f) () = $2;
-+ return f != $2; ])],
-+ [AS_VAR_SET(ac_var, yes)],
-+ [AS_VAR_SET(ac_var, no)])])
-+AS_IF([test AS_VAR_GET(ac_var) = yes], [$3], [$4])dnl
-+AS_VAR_POPDEF([ac_var])dnl
-+])# AC_CHECK_FUNC
-Index: config/ChangeLog
-===================================================================
---- a/src/config/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/config/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,8 @@
-+2017-01-24 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR target/78478
-+ * ax_check_define.m4: New file.
-+
- 2016-12-21 Release Manager
-
- * GCC 6.3.0 released.
-Index: configure
-===================================================================
---- a/src/configure (.../tags/gcc_6_3_0_release)
-+++ b/src/configure (.../branches/gcc-6-branch)
-@@ -3483,6 +3483,9 @@
- *-*-vxworks*)
- noconfigdirs="$noconfigdirs ${libgcj}"
- ;;
-+ aarch64*-*-freebsd*)
-+ noconfigdirs="$noconfigdirs ${libgcj}"
-+ ;;
- alpha*-*-*vms*)
- noconfigdirs="$noconfigdirs ${libgcj}"
- ;;
-Index: libgcc/config.host
-===================================================================
---- a/src/libgcc/config.host (.../tags/gcc_6_3_0_release)
-+++ b/src/libgcc/config.host (.../branches/gcc-6-branch)
-@@ -333,6 +333,11 @@
- tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
- tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
- ;;
-+aarch64*-*-freebsd*)
-+ extra_parts="$extra_parts crtfastmath.o"
-+ tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
-+ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
-+ ;;
- aarch64*-*-linux*)
- extra_parts="$extra_parts crtfastmath.o"
- md_unwind_header=aarch64/linux-unwind.h
-Index: libgcc/ChangeLog
+ libphobos_maybe_build_wrapper "${objdir}/testglue.o"
+Index: contrib/ChangeLog
===================================================================
---- a/src/libgcc/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/libgcc/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,15 @@
-+2017-04-07 Alan Modra <amodra@gmail.com>
-+
-+ PR target/45053
-+ * config/rs6000/t-crtstuff (CRTSTUFF_T_CFLAGS): Add -O2.
+--- a/src/contrib/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/contrib/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,7 @@
++2019-08-16 Uros Bizjak <ubizjak@gmail.com>
+
-+2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
++ * test_summary: Do not escape "=".
+
-+ Backport from mainline
-+ 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
-+
-+ * config.host: Add support for aarch64-*-freebsd*.
-+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
-Index: libgcc/config/rs6000/t-crtstuff
+ * GCC 9.2.0 released.
+Index: contrib/test_summary
===================================================================
---- a/src/libgcc/config/rs6000/t-crtstuff (.../tags/gcc_6_3_0_release)
-+++ b/src/libgcc/config/rs6000/t-crtstuff (.../branches/gcc-6-branch)
-@@ -1,3 +1,6 @@
- # If .sdata is enabled __CTOR_{LIST,END}__ go into .sdata instead of
- # .ctors.
--CRTSTUFF_T_CFLAGS = -msdata=none
-+# Do not build crtend.o with -Os as that can result in references to
-+# out-of-line register save/restore functions, which may be unresolved
-+# as crtend.o is linked after libgcc.a. See PR45053.
-+CRTSTUFF_T_CFLAGS = -msdata=none -O2
-Index: gcc/tree-vrp.c
+--- a/src/contrib/test_summary (.../tags/gcc_9_2_0_release)
++++ b/src/contrib/test_summary (.../branches/gcc-9-branch)
+@@ -127,7 +127,7 @@
+ if (lang == "") lang = " "$2" "; else lang = " ";
+ }
+ $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; }
+-/\===.*Summary/ { print ""; print; blanks=1; }
++/===.*Summary/ { print ""; print; blanks=1; }
+ /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; }
+ /^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; }
+ /^using:/ { print ""; print; print ""; }
+Index: libgcc/config.host
===================================================================
---- a/src/gcc/tree-vrp.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-vrp.c (.../branches/gcc-6-branch)
-@@ -2481,7 +2481,20 @@
- else if (min_op0)
- wmin = min_op0;
- else if (min_op1)
-- wmin = minus_p ? wi::neg (min_op1) : min_op1;
-+ {
-+ if (minus_p)
-+ {
-+ wmin = wi::neg (min_op1);
-+
-+ /* Check for overflow. */
-+ if (sgn == SIGNED && wi::neg_p (min_op1) && wi::neg_p (wmin))
-+ min_ovf = 1;
-+ else if (sgn == UNSIGNED && wi::ne_p (min_op1, 0))
-+ min_ovf = -1;
-+ }
-+ else
-+ wmin = min_op1;
-+ }
- else
- wmin = wi::shwi (0, prec);
-
-@@ -2509,7 +2522,20 @@
- else if (max_op0)
- wmax = max_op0;
- else if (max_op1)
-- wmax = minus_p ? wi::neg (max_op1) : max_op1;
-+ {
-+ if (minus_p)
-+ {
-+ wmax = wi::neg (max_op1);
-+
-+ /* Check for overflow. */
-+ if (sgn == SIGNED && wi::neg_p (max_op1) && wi::neg_p (wmax))
-+ max_ovf = 1;
-+ else if (sgn == UNSIGNED && wi::ne_p (max_op1, 0))
-+ max_ovf = -1;
-+ }
-+ else
-+ wmax = max_op1;
-+ }
- else
- wmax = wi::shwi (0, prec);
-
-@@ -2651,8 +2677,17 @@
- min = build_symbolic_expr (expr_type, sym_min_op0,
- neg_min_op0, min);
- else if (sym_min_op1)
-- min = build_symbolic_expr (expr_type, sym_min_op1,
-- neg_min_op1 ^ minus_p, min);
-+ {
-+ /* We may not negate if that might introduce
-+ undefined overflow. */
-+ if (! minus_p
-+ || neg_min_op1
-+ || TYPE_OVERFLOW_WRAPS (expr_type))
-+ min = build_symbolic_expr (expr_type, sym_min_op1,
-+ neg_min_op1 ^ minus_p, min);
-+ else
-+ min = NULL_TREE;
-+ }
+--- a/src/libgcc/config.host (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config.host (.../branches/gcc-9-branch)
+@@ -1072,12 +1072,12 @@
+ md_unwind_header=rs6000/darwin-unwind.h
+ ;;
+ esac
+- tmake_file="$tmake_file rs6000/t-ibm-ldouble"
+- extra_parts="$extra_parts crt2.o"
++ tmake_file="$tmake_file rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
++ extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o"
+ ;;
+ powerpc64-*-darwin*)
+ tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble"
+- extra_parts="$extra_parts crt2.o"
++ extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o"
+ ;;
+ powerpc*-*-freebsd*)
+ tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp"
+Index: libgcc/ChangeLog
+===================================================================
+--- a/src/libgcc/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,45 @@
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
++
++ Backport from mainline.
++ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk>
++
++ * config.host (powerpc-*-darwin*,powerpc64-*-darwin*): Revise crt
++ list.
++ * config/rs6000/t-darwin: Build crt3_2 for older systems. Revise
++ mmacosx-version-min for crts to run across all system versions.
++ * config/rs6000/t-darwin64 (LIB2ADD): Remove.
++ * config/t-darwin: Revise mmacosx-version-min for crts to run across
++ system versions >= 10.4.
++
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
++
++ Backport from mainline.
++ 2019-06-25 Iain Sandoe <iain@sandoe.co.uk>
++
++ * config.host: Add libef_ppc.a to the extra files for powerpc-darwin.
++ * config/rs6000/t-darwin: (PPC_ENDFILE_SRC, PPC_ENDFILE_OBJS): New.
++ Build objects for the out of line save/restore register functions
++ so that they can be used for any supported Darwin version.
++ * config/t-darwin: Default the build Darwin version to Darwin8
++ (MacOS 10.4).
++
++2019-10-15 John David Anglin <danglin@gcc.gnu.org>
++
++ * config/pa/fptr.c (_dl_read_access_allowed): Change argument to
++ unsigned int. Adjust callers.
++ (__canonicalize_funcptr_for_compare): Change plabel type to volatile
++ unsigned int *. Load relocation offset before function pointer.
++ Add barrier to ensure ordering.
++
++2019-10-12 John David Anglin <danglin@gcc.gnu.org>
++
++ * config/pa/lib2funcs.S (__gcc_plt_call): Load branch target to %r21.
++ Load PIC register after branch target. Fix white space.
++ * config/pa/milli64.S ($$dyncall): Separate LINUX and non LINUX
++ implementations. Load PIC register after branch target. Don't
++ clobber function pointer when it points to function descriptor.
++ Use nullification instead of branch in LINUX implementation.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+Index: libgcc/config/t-darwin
+===================================================================
+--- a/src/libgcc/config/t-darwin (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config/t-darwin (.../branches/gcc-9-branch)
+@@ -1,22 +1,16 @@
+ # Set this as a minimum (unless overriden by arch t-files) since it's a
+ # reasonable lowest common denominator that works for all our archs.
+-HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.5
++HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.4
+
+ crt3.o: $(srcdir)/config/darwin-crt3.c
+- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $<
++ $(crt_compile) -mmacosx-version-min=10.4 -c $<
+
+ crttms.o: $(srcdir)/config/darwin-crt-tm.c
+- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DSTART -c $<
++ $(crt_compile) -mmacosx-version-min=10.4 -DSTART -c $<
+
+ crttme.o: $(srcdir)/config/darwin-crt-tm.c
+- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DEND -c $<
++ $(crt_compile) -mmacosx-version-min=10.4 -DEND -c $<
+
+-# -pipe because there's an assembler bug, 4077127, which causes
+-# it to not properly process the first # directive, causing temporary
+-# file names to appear in stabs, causing the bootstrap to fail. Using -pipe
+-# works around this by not having any temporary file names.
+-HOST_LIBGCC2_CFLAGS += -pipe
+-
+ # Use unwind-dw2-fde-darwin
+ LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
+ $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+@@ -23,4 +17,4 @@
+
+ # Patch to __Unwind_Find_Enclosing_Function for Darwin10.
+ d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c
+- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -mmacosx-version-min=10.6 -c $<
++ $(crt_compile) -mmacosx-version-min=10.6 -c $<
+Index: libgcc/config/rs6000/t-darwin
+===================================================================
+--- a/src/libgcc/config/rs6000/t-darwin (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config/rs6000/t-darwin (.../branches/gcc-9-branch)
+@@ -1,25 +1,57 @@
+-DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall -mmacosx-version-min=10.4
+
+ crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c
+- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $<
++ $(crt_compile) -mmacosx-version-min=10.1 -c $<
+
++# The sources for this indicate that there are some parts that
++# don't apply >= 10.4
++crt3_2.o: $(srcdir)/config/darwin-crt3.c
++ $(crt_compile) -mmacosx-version-min=10.1 -c $<
++
++# The outlined register save/restore functions need to run anywhere, and
++# they must be leaf functions suitable for use in an endfile.
++
++PPC_ENDFILE_SRC = \
++ $(srcdir)/config/rs6000/darwin-gpsave.S \
++ $(srcdir)/config/rs6000/darwin-fpsave.S \
++ $(srcdir)/config/rs6000/darwin-vecsave.S
++
++PPC_ENDFILE_OBJS = \
++ darwin-gpsave.o \
++ darwin-fpsave.o \
++ darwin-vecsave.o
++
++darwin-gpsave.o: $(srcdir)/config/rs6000/darwin-gpsave.S
++ $(crt_compile) -mmacosx-version-min=10.1 -c $<
++
++darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-fpsave.S
++ $(crt_compile) -mmacosx-version-min=10.1 -c $<
++
++darwin-vecsave.o: $(srcdir)/config/rs6000/darwin-vecsave.S
++ $(crt_compile) -mmacosx-version-min=10.1 -c $<
++
++# We build these into a library, so that they are only linked as needed and not
++# forced into every object.
++
++libef_ppc.a: $(PPC_ENDFILE_OBJS)
++ $(AR_CREATE_FOR_TARGET) $@ $(PPC_ENDFILE_OBJS)
++ $(RANLIB_FOR_TARGET) $@
++
++dw_ppc.o: $(srcdir)/config/rs6000/darwin-world.S
++ $(crt_compile) -mmacosx-version-min=10.1 -c $<
++
+ LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \
+ $(srcdir)/config/darwin-64.c \
+- $(srcdir)/config/rs6000/darwin-fpsave.S \
+- $(srcdir)/config/rs6000/darwin-gpsave.S \
+- $(srcdir)/config/rs6000/darwin-world.S \
+- $(srcdir)/config/rs6000/ppc64-fp.c
++ $(srcdir)/config/rs6000/darwin-world.S
+
+-LIB2ADD_ST = \
+- $(srcdir)/config/rs6000/darwin-vecsave.S
+-
+ # The .S files above are designed to run on all processors, even though
+ # they use AltiVec instructions.
+ # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib.
+-# -mmacosx-version-min=10.4 is used to provide compatibility for code from
+-# earlier OSX versions.
+-HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4
+
++HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL
++
++# Although the default for 10.4 is G3, we need the unwinder to be built
++# with vector support so that the "save/rest_world" outlined functions are
++# correctly invoked.
+ unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -maltivec
+ unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec
+
+Index: libgcc/config/rs6000/t-darwin64
+===================================================================
+--- a/src/libgcc/config/rs6000/t-darwin64 (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config/rs6000/t-darwin64 (.../branches/gcc-9-branch)
+@@ -1,7 +1 @@
+ LIB2_SIDITI_CONV_FUNCS = yes
+-
+-LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \
+- $(srcdir)/config/darwin-64.c \
+- $(srcdir)/config/rs6000/darwin-fpsave.S \
+- $(srcdir)/config/rs6000/darwin-gpsave.S \
+- $(srcdir)/config/rs6000/darwin-world.S
+Index: libgcc/config/pa/milli64.S
+===================================================================
+--- a/src/libgcc/config/pa/milli64.S (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config/pa/milli64.S (.../branches/gcc-9-branch)
+@@ -222,19 +222,26 @@
+ .proc
+ .callinfo millicode
+ .entry
++#ifdef LINUX
++ extru,<> %r22,30,1,%r0 ; nullify if plabel bit set
++ bv,n %r0(%r22) ; branch to target
++ ldw -2(%r22),%r21 ; load address of target
++ bv %r0(%r21) ; branch to the real target
++ ldw 2(%r22),%r19 ; load new LTP value
++#else
+ bb,>=,n %r22,30,LREF(1) ; branch if not plabel address
+- depi 0,31,2,%r22 ; clear the two least significant bits
+- ldw 4(%r22),%r19 ; load new LTP value
+- ldw 0(%r22),%r22 ; load address of target
++ ldw -2(%r22),%r21 ; load address of target to r21
++ ldsid (%sr0,%r21),%r1 ; get the "space ident" selected by r21
++ ldw 2(%r22),%r19 ; load new LTP value
++ mtsp %r1,%sr0 ; move that space identifier into sr0
++ be 0(%sr0,%r21) ; branch to the real target
++ stw %r2,-24(%r30) ; save return address into frame marker
+ LSYM(1)
+-#ifdef LINUX
+- bv %r0(%r22) ; branch to the real target
+-#else
+ ldsid (%sr0,%r22),%r1 ; get the "space ident" selected by r22
+ mtsp %r1,%sr0 ; move that space identifier into sr0
+- be 0(%sr0,%r22) ; branch to the real target
++ be 0(%sr0,%r22) ; branch to the target
++ stw %r2,-24(%r30) ; save return address into frame marker
+ #endif
+- stw %r2,-24(%r30) ; save return address into frame marker
+ .exit
+ .procend
+ #endif
+Index: libgcc/config/pa/lib2funcs.S
+===================================================================
+--- a/src/libgcc/config/pa/lib2funcs.S (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config/pa/lib2funcs.S (.../branches/gcc-9-branch)
+@@ -55,13 +55,13 @@
+ ; An inline version of dyncall so we don't have to worry
+ ; about long calls to millicode, PIC and other complexities.
+ bb,>=,n %r22,30,L$foo
+- depi 0,31,2,%r22
+- ldw 4(%r22),%r19
+- ldw 0(%r22),%r22
++ depi 0,31,2,%r22
++ ldw 0(%r22),%r21
++ ldw 4(%r22),%r19
+ L$foo
+- ldsid (%r22),%r1
+- mtsp %r1,%sr0
+- ble 0(%sr0,%r22)
++ ldsid (%r21),%r1
++ mtsp %r1,%sr0
++ ble 0(%sr0,%r21)
+ copy %r31,%r2
+ ldw -8(%r30),%r2
+
+Index: libgcc/config/pa/fptr.c
+===================================================================
+--- a/src/libgcc/config/pa/fptr.c (.../tags/gcc_9_2_0_release)
++++ b/src/libgcc/config/pa/fptr.c (.../branches/gcc-9-branch)
+@@ -53,7 +53,7 @@
+ extern unsigned int _GLOBAL_OFFSET_TABLE_;
- /* Likewise for the upper bound. */
- if (sym_max_op0 == sym_max_op1)
-@@ -2661,8 +2696,17 @@
- max = build_symbolic_expr (expr_type, sym_max_op0,
- neg_max_op0, max);
- else if (sym_max_op1)
-- max = build_symbolic_expr (expr_type, sym_max_op1,
-- neg_max_op1 ^ minus_p, max);
-+ {
-+ /* We may not negate if that might introduce
-+ undefined overflow. */
-+ if (! minus_p
-+ || neg_max_op1
-+ || TYPE_OVERFLOW_WRAPS (expr_type))
-+ max = build_symbolic_expr (expr_type, sym_max_op1,
-+ neg_max_op1 ^ minus_p, max);
-+ else
-+ max = NULL_TREE;
-+ }
- }
- else
- {
-@@ -7057,8 +7101,7 @@
- static enum ssa_prop_result
- vrp_visit_assignment_or_call (gimple *stmt, tree *output_p)
+ static inline int
+-_dl_read_access_allowed (unsigned int *addr)
++_dl_read_access_allowed (unsigned int addr)
{
-- tree def, lhs;
-- ssa_op_iter iter;
-+ tree lhs;
- enum gimple_code code = gimple_code (stmt);
- lhs = gimple_get_lhs (stmt);
-
-@@ -7175,8 +7218,7 @@
- }
-
- /* Every other statement produces no useful ranges. */
-- FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_DEF)
-- set_value_range_to_varying (get_value_range (def));
-+ set_defs_to_varying (stmt);
-
- return SSA_PROP_VARYING;
- }
-Index: gcc/tree-chkp.c
-===================================================================
---- a/src/gcc/tree-chkp.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-chkp.c (.../branches/gcc-6-branch)
-@@ -2215,6 +2215,7 @@
- gimple *stmt;
- tree fndecl = gimple_call_fndecl (call);
- unsigned int retflags;
-+ tree lhs = gimple_call_lhs (call);
-
- /* To avoid fixing alloca expands in targets we handle
- it separately. */
-@@ -2224,9 +2225,8 @@
- || DECL_FUNCTION_CODE (fndecl) == BUILT_IN_ALLOCA_WITH_ALIGN))
- {
- tree size = gimple_call_arg (call, 0);
-- tree lb = gimple_call_lhs (call);
- gimple_stmt_iterator iter = gsi_for_stmt (call);
-- bounds = chkp_make_bounds (lb, size, &iter, true);
-+ bounds = chkp_make_bounds (lhs, size, &iter, true);
- }
- /* We know bounds returned by set_bounds builtin call. */
- else if (fndecl
-@@ -2279,9 +2279,10 @@
+ int result;
- bounds = chkp_find_bounds (gimple_call_arg (call, argno), &iter);
- }
-- else if (chkp_call_returns_bounds_p (call))
-+ else if (chkp_call_returns_bounds_p (call)
-+ && BOUNDED_P (lhs))
- {
-- gcc_assert (TREE_CODE (gimple_call_lhs (call)) == SSA_NAME);
-+ gcc_assert (TREE_CODE (lhs) == SSA_NAME);
-
- /* In general case build checker builtin call to
- obtain returned bounds. */
-@@ -2308,7 +2309,7 @@
- print_gimple_stmt (dump_file, call, 0, TDF_VOPS|TDF_MEMSYMS);
- }
-
-- bounds = chkp_maybe_copy_and_register_bounds (gimple_call_lhs (call), bounds);
-+ bounds = chkp_maybe_copy_and_register_bounds (lhs, bounds);
-
- return bounds;
- }
-@@ -3599,8 +3600,8 @@
- break;
-
- case PARM_DECL:
-- gcc_unreachable ();
-- bounds = chkp_get_bound_for_parm (ptr_src);
-+ /* Handled above but failed. */
-+ bounds = chkp_get_invalid_op_bounds ();
- break;
-
- case TARGET_MEM_REF:
-@@ -3662,6 +3663,8 @@
- break;
-
- case INTEGER_CST:
-+ case COMPLEX_CST:
-+ case VECTOR_CST:
- if (integer_zerop (ptr_src))
- bounds = chkp_get_none_bounds ();
- else
-@@ -3734,7 +3737,7 @@
-
- FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (rhs), cnt, field, val)
- {
-- if (chkp_type_has_pointer (TREE_TYPE (field)))
-+ if (field && chkp_type_has_pointer (TREE_TYPE (field)))
- {
- tree lhs_field = chkp_build_component_ref (lhs, field);
- chkp_walk_pointer_assignments (lhs_field, val, arg, handler);
-Index: gcc/data-streamer-in.c
-===================================================================
---- a/src/gcc/data-streamer-in.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/data-streamer-in.c (.../branches/gcc-6-branch)
-@@ -181,6 +181,5 @@
- streamer_read_gcov_count (struct lto_input_block *ib)
+@@ -76,7 +76,8 @@
{
- gcov_type ret = streamer_read_hwi (ib);
-- gcc_assert (ret >= 0);
- return ret;
+ static unsigned int fixup_plabel[2] __attribute__((used));
+ fixup_t fixup;
+- unsigned int *got, *iptr, *plabel;
++ volatile unsigned int *plabel;
++ unsigned int *got, *iptr, reloc_offset;
+ int i;
+
+ /* -1 and page 0 are special. -1 is used in crtend to mark the end of
+@@ -91,8 +92,8 @@
+ to the entry of the PLT stub just before the global offset table.
+ The second word in the plabel contains the relocation offset for the
+ function. */
+- plabel = (unsigned int *) ((unsigned int) fptr & ~3);
+- if (!_dl_read_access_allowed (plabel))
++ plabel = (volatile unsigned int *) ((unsigned int) fptr & ~3);
++ if (!_dl_read_access_allowed ((unsigned int)plabel))
+ return (unsigned int) fptr;
+
+ /* Load first word of candidate descriptor. It should be a pointer
+@@ -99,9 +100,12 @@
+ with word alignment and point to memory that can be read. */
+ got = (unsigned int *) plabel[0];
+ if (((unsigned int) got & 3) != 0
+- || !_dl_read_access_allowed (got))
++ || !_dl_read_access_allowed ((unsigned int)got))
+ return (unsigned int) fptr;
+
++ /* We need to load the relocation offset before the function address. */
++ reloc_offset = plabel[1];
++ __sync_synchronize();
+ got = (unsigned int *) (plabel[0] + GOT_FROM_PLT_STUB);
+
+ /* Return the address of the function if the plabel has been resolved. */
+@@ -137,7 +141,7 @@
+
+ /* Call fixup to resolve the function address. got[1] contains the
+ link_map pointer and plabel[1] the relocation offset. */
+- fixup ((struct link_map *) got[1], plabel[1]);
++ fixup ((struct link_map *) got[1], reloc_offset);
+
+ return plabel[0];
}
-Index: gcc/graphite-isl-ast-to-gimple.c
+Index: gcc/tree-vrp.c
===================================================================
---- a/src/gcc/graphite-isl-ast-to-gimple.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/graphite-isl-ast-to-gimple.c (.../branches/gcc-6-branch)
-@@ -1157,6 +1157,9 @@
- is_valid_rename (tree rename, basic_block def_bb, basic_block use_bb,
- phi_node_kind phi_kind, tree old_name, basic_block old_bb) const
- {
-+ if (SSA_NAME_IS_DEFAULT_DEF (rename))
-+ return true;
-+
- /* The def of the rename must either dominate the uses or come from a
- back-edge. Also the def must respect the loop closed ssa form. */
- if (!is_loop_closed_ssa_use (use_bb, rename))
-@@ -1212,6 +1215,7 @@
- basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (rename));
- if (is_valid_rename (rename, bb, new_bb, phi_kind, old_name, old_bb)
- && (phi_kind == close_phi
-+ || ! bb
- || flow_bb_inside_loop_p (bb->loop_father, new_bb)))
- return rename;
- return NULL_TREE;
-@@ -1913,7 +1917,7 @@
- if (is_gimple_reg (res) && scev_analyzable_p (res, region->region))
- continue;
-
-- gphi *new_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
-+ gphi *new_phi = create_phi_node (NULL_TREE, new_bb);
- tree new_res = create_new_def_for (res, new_phi,
- gimple_phi_result_ptr (new_phi));
- set_rename (res, new_res);
-@@ -2013,7 +2017,7 @@
- if (!bb_contains_loop_close_phi_nodes (bb) || !single_succ_p (bb))
- bb = split_edge (e);
-
-- gphi *close_phi = create_phi_node (SSA_NAME_VAR (last_merge_name), bb);
-+ gphi *close_phi = create_phi_node (NULL_TREE, bb);
- tree res = create_new_def_for (last_merge_name, close_phi,
- gimple_phi_result_ptr (close_phi));
- set_rename (old_close_phi_name, res);
-@@ -2058,7 +2062,7 @@
- last_merge_name = add_close_phis_to_outer_loops (last_merge_name, merge_e,
- old_close_phi);
-
-- gphi *merge_phi = create_phi_node (SSA_NAME_VAR (old_close_phi_name), new_merge_bb);
-+ gphi *merge_phi = create_phi_node (NULL_TREE, new_merge_bb);
- tree merge_res = create_new_def_for (old_close_phi_name, merge_phi,
- gimple_phi_result_ptr (merge_phi));
- set_rename (old_close_phi_name, merge_res);
-@@ -2111,7 +2115,7 @@
- /* Loop close phi nodes should not be scev_analyzable_p. */
- gcc_unreachable ();
-
-- gphi *new_close_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
-+ gphi *new_close_phi = create_phi_node (NULL_TREE, new_bb);
- tree new_res = create_new_def_for (res, new_close_phi,
- gimple_phi_result_ptr (new_close_phi));
- set_rename (res, new_res);
-@@ -2494,7 +2498,7 @@
- if (virtual_operand_p (res))
- continue;
-
-- gphi *new_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
-+ gphi *new_phi = create_phi_node (NULL_TREE, new_bb);
- tree new_res = create_new_def_for (res, new_phi,
- gimple_phi_result_ptr (new_phi));
- set_rename (res, new_res);
-Index: gcc/c-family/c-opts.c
-===================================================================
---- a/src/gcc/c-family/c-opts.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c-family/c-opts.c (.../branches/gcc-6-branch)
-@@ -742,8 +742,13 @@
- in_fnames[0] = "";
- }
- else if (strcmp (in_fnames[0], "-") == 0)
-- in_fnames[0] = "";
-+ {
-+ if (pch_file)
-+ error ("cannot use %<-%> as input filename for a precompiled header");
-
-+ in_fnames[0] = "";
-+ }
-+
- if (out_fname == NULL || !strcmp (out_fname, "-"))
- out_fname = "";
+--- a/src/gcc/tree-vrp.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-vrp.c (.../branches/gcc-9-branch)
+@@ -1702,9 +1702,7 @@
+ {
+ /* For pointer types, we are really only interested in asserting
+ whether the expression evaluates to non-NULL. */
+- if (!range_includes_zero_p (&vr0) && !range_includes_zero_p (&vr1))
+- vr->set_nonnull (expr_type);
+- else if (range_is_null (&vr0) || range_is_null (&vr1))
++ if (range_is_null (&vr0) || range_is_null (&vr1))
+ vr->set_null (expr_type);
+ else
+ vr->set_varying ();
+@@ -1772,10 +1770,13 @@
+ combine_bound (code, wmin, min_ovf, expr_type, min_op0, min_op1);
+ combine_bound (code, wmax, max_ovf, expr_type, max_op0, max_op1);
+
+- /* If we have overflow for the constant part and the resulting
+- range will be symbolic, drop to VR_VARYING. */
+- if (((bool)min_ovf && sym_min_op0 != sym_min_op1)
+- || ((bool)max_ovf && sym_max_op0 != sym_max_op1))
++ /* If the resulting range will be symbolic, we need to eliminate any
++ explicit or implicit overflow introduced in the above computation
++ because compare_values could make an incorrect use of it. That's
++ why we require one of the ranges to be a singleton. */
++ if ((sym_min_op0 != sym_min_op1 || sym_max_op0 != sym_max_op1)
++ && ((bool)min_ovf || (bool)max_ovf
++ || (min_op0 != max_op0 && min_op1 != max_op1)))
+ {
+ vr->set_varying ();
+ return;
+@@ -1782,8 +1783,6 @@
+ }
+ /* Adjust the range for possible overflow. */
+- min = NULL_TREE;
+- max = NULL_TREE;
+ set_value_range_with_overflow (type, min, max, expr_type,
+ wmin, wmax, min_ovf, max_ovf);
+ if (type == VR_VARYING)
+Index: gcc/c-family/c-warn.c
+===================================================================
+--- a/src/gcc/c-family/c-warn.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c-family/c-warn.c (.../branches/gcc-9-branch)
+@@ -2784,6 +2784,8 @@
+ /* Check alignment of the data member. */
+ if (TREE_CODE (field) == FIELD_DECL
+ && (DECL_PACKED (field) || TYPE_PACKED (TREE_TYPE (field)))
++ /* Ignore FIELDs not laid out yet. */
++ && DECL_FIELD_OFFSET (field)
+ && (!rvalue || TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE))
+ {
+ /* Check the expected alignment against the field alignment. */
Index: gcc/c-family/ChangeLog
===================================================================
---- a/src/gcc/c-family/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,59 @@
-+2017-05-05 Jakub Jelinek <jakub@redhat.com>
+--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,38 @@
++2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
-+ 2017-03-31 Jakub Jelinek <jakub@redhat.com>
++ 2019-10-01 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79572
-+ * c-ubsan.h (ubsan_maybe_instrument_reference): Change argument to
-+ tree *.
-+ * c-ubsan.c (ubsan_maybe_instrument_reference): Likewise. Handle
-+ not just NOP_EXPR to REFERENCE_TYPE, but also INTEGER_CST with
-+ REFERENCE_TYPE.
++ PR c++/91925
++ * c-warn.c (check_alignment_of_packed_member): Ignore FIELD_DECLs
++ with NULL DECL_FIELD_OFFSET.
+
-+ 2017-02-21 Jakub Jelinek <jakub@redhat.com>
++ 2019-09-27 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79641
-+ * c-common.c (handle_mode_attribute): Use build_qualified_type to
-+ preserve quals.
++ PR c++/88203
++ * c-common.h (c_omp_predefined_variable): Declare.
++ * c-omp.c (c_omp_predefined_variable): New function.
++ (c_omp_predetermined_sharing): Return OMP_CLAUSE_DEFAULT_SHARED
++ for predefined variables.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-09-02 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
++ 2019-09-02 Martin Liska <mliska@suse.cz>
+
-+ * c-ada-spec.c (macro_length): Increment value instead of a pointer.
++ PR c++/91155
++ * c-common.c (fname_as_string): Use cxx_printable_name for
++ __PRETTY_FUNCTION__ same as was used before r265711.
+
-+2017-03-21 Martin Sebor <msebor@redhat.com>
-+
-+ PR c++/79548
-+ * c-common.c (set_underlying_type): Mark type used only when
-+ original del is declared unused.
-+
-+2017-03-14 Marek Polacek <polacek@redhat.com>
-+
-+ PR c++/79962
-+ PR c++/79984
-+ * c-common.c (handle_nonnull_attribute): Save the result of default
-+ conversion to the attribute list.
-+
-+2017-03-14 Richard Biener <rguenther@suse.de>
-+
-+ Backport from mainline
-+ 2017-03-02 Richard Biener <rguenther@suse.de>
-+
-+ PR c/79756
-+ * c-common.c (c_common_mark_addressable_vec): Look through
-+ C_MAYBE_CONST_EXPR.
-+
-+2017-01-10 Martin Liska <mliska@suse.cz>
++2019-08-31 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-01-05 Martin Liska <mliska@suse.cz>
++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR pch/78970
-+ * c-opts.c (c_common_post_options): Reject '-' filename for a precompiled
-+ header.
++ PR pch/61250
++ * c-lex.c (c_lex_with_flags): Don't call
++ c_common_no_more_pch () from here.
+
- 2016-12-21 Release Manager
-
- * GCC 6.3.0 released.
-Index: gcc/c-family/c-common.c
-===================================================================
---- a/src/gcc/c-family/c-common.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c-family/c-common.c (.../branches/gcc-6-branch)
-@@ -7596,7 +7596,7 @@
- return NULL_TREE;
- }
-
-- *node = typefm;
-+ *node = build_qualified_type (typefm, TYPE_QUALS (type));
- }
+ 2019-08-12 Release Manager
- return NULL_TREE;
-@@ -9061,7 +9061,7 @@
- tree arg = TREE_VALUE (args);
- if (arg && TREE_CODE (arg) != IDENTIFIER_NODE
- && TREE_CODE (arg) != FUNCTION_DECL)
-- arg = default_conversion (arg);
-+ TREE_VALUE (args) = arg = default_conversion (arg);
-
- if (!get_nonnull_operand (arg, &arg_num))
- {
-@@ -10677,6 +10677,8 @@
- void
- c_common_mark_addressable_vec (tree t)
- {
-+ if (TREE_CODE (t) == C_MAYBE_CONST_EXPR)
-+ t = C_MAYBE_CONST_EXPR_EXPR (t);
- while (handled_component_p (t))
- t = TREE_OPERAND (t, 0);
- if (!VAR_P (t)
-@@ -12026,7 +12028,12 @@
- tt = build_variant_type_copy (tt);
- TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (DECL_ORIGINAL_TYPE (x));
- TYPE_NAME (tt) = x;
-- TREE_USED (tt) = TREE_USED (x);
-+
-+ /* Mark the type as used only when its type decl is decorated
-+ with attribute unused. */
-+ if (lookup_attribute ("unused", DECL_ATTRIBUTES (x)))
-+ TREE_USED (tt) = 1;
-+
- TREE_TYPE (x) = tt;
- }
- }
-Index: gcc/c-family/c-ubsan.c
+ * GCC 9.2.0 released.
+Index: gcc/c-family/c-lex.c
===================================================================
---- a/src/gcc/c-family/c-ubsan.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c-family/c-ubsan.c (.../branches/gcc-6-branch)
-@@ -425,17 +425,26 @@
- return fold_build2 (COMPOUND_EXPR, TREE_TYPE (op), call, op);
- }
-
--/* Instrument a NOP_EXPR to REFERENCE_TYPE if needed. */
-+/* Instrument a NOP_EXPR to REFERENCE_TYPE or INTEGER_CST with REFERENCE_TYPE
-+ type if needed. */
-
- void
--ubsan_maybe_instrument_reference (tree stmt)
-+ubsan_maybe_instrument_reference (tree *stmt_p)
+--- a/src/gcc/c-family/c-lex.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c-family/c-lex.c (.../branches/gcc-9-branch)
+@@ -394,7 +394,6 @@
+ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags,
+ int lex_flags)
{
-- tree op = TREE_OPERAND (stmt, 0);
-+ tree stmt = *stmt_p;
-+ tree op = stmt;
-+ if (TREE_CODE (stmt) == NOP_EXPR)
-+ op = TREE_OPERAND (stmt, 0);
- op = ubsan_maybe_instrument_reference_or_call (EXPR_LOCATION (stmt), op,
- TREE_TYPE (stmt),
- UBSAN_REF_BINDING);
- if (op)
-- TREE_OPERAND (stmt, 0) = op;
-+ {
-+ if (TREE_CODE (stmt) == NOP_EXPR)
-+ TREE_OPERAND (stmt, 0) = op;
-+ else
-+ *stmt_p = op;
-+ }
- }
+- static bool no_more_pch;
+ const cpp_token *tok;
+ enum cpp_ttype type;
+ unsigned char add_flags = 0;
+@@ -628,12 +627,6 @@
+ if (cpp_flags)
+ *cpp_flags = tok->flags | add_flags;
+
+- if (!no_more_pch)
+- {
+- no_more_pch = true;
+- c_common_no_more_pch ();
+- }
+-
+ timevar_pop (TV_CPP);
- /* Instrument a CALL_EXPR to a method if needed. */
-Index: gcc/c-family/c-ubsan.h
+ return type;
+Index: gcc/c-family/c-omp.c
===================================================================
---- a/src/gcc/c-family/c-ubsan.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c-family/c-ubsan.h (.../branches/gcc-6-branch)
-@@ -28,7 +28,7 @@
- extern tree ubsan_instrument_bounds (location_t, tree, tree *, bool);
- extern bool ubsan_array_ref_instrumented_p (const_tree);
- extern void ubsan_maybe_instrument_array_ref (tree *, bool);
--extern void ubsan_maybe_instrument_reference (tree);
-+extern void ubsan_maybe_instrument_reference (tree *);
- extern void ubsan_maybe_instrument_member_call (tree, bool);
+--- a/src/gcc/c-family/c-omp.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c-family/c-omp.c (.../branches/gcc-9-branch)
+@@ -2023,6 +2023,25 @@
+ }
+ }
- /* Declare this here as well as in ubsan.h. */
-Index: gcc/c-family/c-ada-spec.c
-===================================================================
---- a/src/gcc/c-family/c-ada-spec.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c-family/c-ada-spec.c (.../branches/gcc-6-branch)
-@@ -72,7 +72,7 @@
++/* Return true for __func__ and similar function-local predefined
++ variables (which are in OpenMP predetermined shared, allowed in
++ shared/firstprivate clauses). */
++
++bool
++c_omp_predefined_variable (tree decl)
++{
++ if (VAR_P (decl)
++ && DECL_ARTIFICIAL (decl)
++ && TREE_READONLY (decl)
++ && TREE_STATIC (decl)
++ && DECL_NAME (decl)
++ && (DECL_NAME (decl) == ridpointers[RID_C99_FUNCTION_NAME]
++ || DECL_NAME (decl) == ridpointers[RID_FUNCTION_NAME]
++ || DECL_NAME (decl) == ridpointers[RID_PRETTY_FUNCTION_NAME]))
++ return true;
++ return false;
++}
++
+ /* True if OpenMP sharing attribute of DECL is predetermined. */
- if (macro->fun_like)
- {
-- param_len++;
-+ (*param_len)++;
- for (i = 0; i < macro->paramc; i++)
- {
- cpp_hashnode *param = macro->params[i];
-Index: gcc/ipa-polymorphic-call.c
-===================================================================
---- a/src/gcc/ipa-polymorphic-call.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ipa-polymorphic-call.c (.../branches/gcc-6-branch)
-@@ -463,13 +463,13 @@
- /* Check that type is within range. */
- if (offset < 0)
- return false;
-- if (TYPE_SIZE (outer_type) && TYPE_SIZE (otr_type)
-- && TREE_CODE (TYPE_SIZE (outer_type)) == INTEGER_CST
-- && TREE_CODE (TYPE_SIZE (otr_type)) == INTEGER_CST
-- && wi::ltu_p (wi::to_offset (TYPE_SIZE (outer_type)),
-- (wi::to_offset (TYPE_SIZE (otr_type)) + offset)))
-- return false;
+ enum omp_clause_default_kind
+@@ -2036,5 +2055,8 @@
+ && INTEGRAL_TYPE_P (TREE_TYPE (decl)))
+ return OMP_CLAUSE_DEFAULT_SHARED;
-+ /* PR ipa/71207
-+ As OUTER_TYPE can be a type which has a diamond virtual inheritance,
-+ it's not necessary that INNER_TYPE will fit within OUTER_TYPE with
-+ a given offset. It can happen that INNER_TYPE also contains a base object,
-+ however it would point to the same instance in the OUTER_TYPE. */
++ if (c_omp_predefined_variable (decl))
++ return OMP_CLAUSE_DEFAULT_SHARED;
+
- context.offset = offset;
- context.outer_type = TYPE_MAIN_VARIANT (outer_type);
- context.maybe_derived_type = false;
+ return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
+ }
+Index: gcc/c-family/c-common.h
+===================================================================
+--- a/src/gcc/c-family/c-common.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c-family/c-common.h (.../branches/gcc-9-branch)
+@@ -1184,6 +1184,7 @@
+ tree, tree *);
+ extern tree c_omp_declare_simd_clauses_to_numbers (tree, tree);
+ extern void c_omp_declare_simd_clauses_to_decls (tree, tree);
++extern bool c_omp_predefined_variable (tree);
+ extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree);
+
+ /* Return next tree in the chain for chain_next walking of tree nodes. */
Index: gcc/c/ChangeLog
===================================================================
---- a/src/gcc/c/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c/ChangeLog (.../branches/gcc-6-branch)
+--- a/src/gcc/c/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c/ChangeLog (.../branches/gcc-9-branch)
@@ -1,3 +1,33 @@
-+2017-05-05 Jakub Jelinek <jakub@redhat.com>
++2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
-+ 2017-03-21 Jakub Jelinek <jakub@redhat.com>
++ 2019-09-27 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c/80097
-+ * c-typeck.c (build_binary_op): Add EXCESS_PRECISION_EXPR only around
-+ optional COMPOUND_EXPR with ubsan instrumentation.
++ PR c++/88203
++ * c-parser.c (c_parser_predefined_identifier): New function.
++ (c_parser_postfix_expression): Use it.
++ (c_parser_omp_variable_list): Parse predefined identifiers.
++ * c-typeck.c (c_finish_omp_clauses): Allow predefined variables
++ in shared and firstprivate clauses, even when they are predetermined
++ shared.
+
-+ 2017-02-16 Jakub Jelinek <jakub@redhat.com>
++ 2019-08-09 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79512
-+ * c-parser.c (c_parser_omp_target): For -fopenmp-simd
-+ ignore #pragma omp target even when not followed by identifier.
++ PR c/91401
++ * c-parser.c (c_parser_omp_clause_dist_schedule): Fix up typos in the
++ check_no_duplicate_clause call. Comment it out, instead emit a
++ warning for duplicate dist_schedule clauses.
+
-+2017-02-15 Jakub Jelinek <jakub@redhat.com>
-+
-+ Backported from mainline
-+ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++2019-08-31 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR c/79431
-+ * c-parser.c (c_parser_omp_declare_target): Don't invoke
-+ symtab_node::get on automatic variables.
++ Backport from mainline.
++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
+
-+2016-12-21 Jakub Jelinek <jakub@redhat.com>
++ PR pch/61250
++ * c-parser.c (c_parse_file): Call c_common_no_more_pch ()
++ after determining that the first token is not
++ PRAGMA_GCC_PCH_PREPROCESS.
+
-+ PR c/77767
-+ * c-decl.c (grokdeclarator): If *expr is non-NULL, append expression
-+ to *expr instead of overwriting it.
-+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
+ * GCC 9.2.0 released.
Index: gcc/c/c-parser.c
===================================================================
---- a/src/gcc/c/c-parser.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c/c-parser.c (.../branches/gcc-6-branch)
-@@ -15180,7 +15180,7 @@
- if (context != pragma_stmt && context != pragma_compound)
- {
- c_parser_error (parser, "expected declaration specifiers");
-- c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL);
-+ c_parser_skip_to_pragma_eol (parser, false);
- return false;
- }
+--- a/src/gcc/c/c-parser.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c/c-parser.c (.../branches/gcc-9-branch)
+@@ -8012,6 +8012,41 @@
+ tgmath_fixed, tgmath_real, tgmath_complex
+ };
-@@ -16212,6 +16212,11 @@
- return c_parser_omp_target_update (loc, parser, context);
- }
- }
-+ if (!flag_openmp) /* flag_openmp_simd */
++/* Helper function for c_parser_postfix_expression. Parse predefined
++ identifiers. */
++
++static struct c_expr
++c_parser_predefined_identifier (c_parser *parser)
++{
++ location_t loc = c_parser_peek_token (parser)->location;
++ switch (c_parser_peek_token (parser)->keyword)
+ {
-+ c_parser_skip_to_pragma_eol (parser, false);
-+ return false;
++ case RID_FUNCTION_NAME:
++ pedwarn (loc, OPT_Wpedantic, "ISO C does not support %qs predefined "
++ "identifier", "__FUNCTION__");
++ break;
++ case RID_PRETTY_FUNCTION_NAME:
++ pedwarn (loc, OPT_Wpedantic, "ISO C does not support %qs predefined "
++ "identifier", "__PRETTY_FUNCTION__");
++ break;
++ case RID_C99_FUNCTION_NAME:
++ pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not support "
++ "%<__func__%> predefined identifier");
++ break;
++ default:
++ gcc_unreachable ();
+ }
-
- stmt = make_node (OMP_TARGET);
- TREE_TYPE (stmt) = void_type_node;
-@@ -16560,8 +16565,11 @@
- }
- if (!at1)
- {
-+ DECL_ATTRIBUTES (t) = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (t));
-+ if (TREE_CODE (t) != FUNCTION_DECL && !is_global_var (t))
-+ continue;
+
- symtab_node *node = symtab_node::get (t);
-- DECL_ATTRIBUTES (t) = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (t));
- if (node != NULL)
- {
- node->offloadable = 1;
-Index: gcc/c/c-typeck.c
-===================================================================
---- a/src/gcc/c/c-typeck.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c/c-typeck.c (.../branches/gcc-6-branch)
-@@ -11627,8 +11627,6 @@
- else if (TREE_CODE (ret) != INTEGER_CST && int_operands
- && !in_late_binary_op)
- ret = note_integer_operands (ret);
-- if (semantic_result_type)
-- ret = build1 (EXCESS_PRECISION_EXPR, semantic_result_type, ret);
- protected_set_expr_location (ret, location);
-
- if (instrument_expr != NULL)
-@@ -11635,6 +11633,10 @@
- ret = fold_build2 (COMPOUND_EXPR, TREE_TYPE (ret),
- instrument_expr, ret);
-
-+ if (semantic_result_type)
-+ ret = build1_loc (location, EXCESS_PRECISION_EXPR,
-+ semantic_result_type, ret);
-+
- return ret;
- }
++ struct c_expr expr;
++ expr.original_code = ERROR_MARK;
++ expr.original_type = NULL;
++ expr.value = fname_decl (loc, c_parser_peek_token (parser)->keyword,
++ c_parser_peek_token (parser)->value);
++ set_c_expr_source_range (&expr, loc, loc);
++ c_parser_consume_token (parser);
++ return expr;
++}
++
+ /* Parse a postfix expression (C90 6.3.1-6.3.2, C99 6.5.1-6.5.2,
+ C11 6.5.1-6.5.2). Compound literals aren't handled here; callers have to
+ call c_parser_postfix_expression_after_paren_type on encountering them.
+@@ -8232,31 +8267,9 @@
+ switch (c_parser_peek_token (parser)->keyword)
+ {
+ case RID_FUNCTION_NAME:
+- pedwarn (loc, OPT_Wpedantic, "ISO C does not support "
+- "%<__FUNCTION__%> predefined identifier");
+- expr.value = fname_decl (loc,
+- c_parser_peek_token (parser)->keyword,
+- c_parser_peek_token (parser)->value);
+- set_c_expr_source_range (&expr, loc, loc);
+- c_parser_consume_token (parser);
+- break;
+ case RID_PRETTY_FUNCTION_NAME:
+- pedwarn (loc, OPT_Wpedantic, "ISO C does not support "
+- "%<__PRETTY_FUNCTION__%> predefined identifier");
+- expr.value = fname_decl (loc,
+- c_parser_peek_token (parser)->keyword,
+- c_parser_peek_token (parser)->value);
+- set_c_expr_source_range (&expr, loc, loc);
+- c_parser_consume_token (parser);
+- break;
+ case RID_C99_FUNCTION_NAME:
+- pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not support "
+- "%<__func__%> predefined identifier");
+- expr.value = fname_decl (loc,
+- c_parser_peek_token (parser)->keyword,
+- c_parser_peek_token (parser)->value);
+- set_c_expr_source_range (&expr, loc, loc);
+- c_parser_consume_token (parser);
++ expr = c_parser_predefined_identifier (parser);
+ break;
+ case RID_VA_ARG:
+ {
+@@ -11950,15 +11963,9 @@
+ {
+ auto_vec<c_token> tokens;
+ unsigned int tokens_avail = 0;
++ bool first = true;
+
+- if (kind != OMP_CLAUSE_DEPEND
+- && (c_parser_next_token_is_not (parser, CPP_NAME)
+- || c_parser_peek_token (parser)->id_kind != C_ID_ID))
+- c_parser_error (parser, "expected identifier");
+-
+- while (kind == OMP_CLAUSE_DEPEND
+- || (c_parser_next_token_is (parser, CPP_NAME)
+- && c_parser_peek_token (parser)->id_kind == C_ID_ID))
++ while (1)
+ {
+ bool array_section_p = false;
+ if (kind == OMP_CLAUSE_DEPEND)
+@@ -11979,6 +11986,7 @@
+ break;
+
+ c_parser_consume_token (parser);
++ first = false;
+ continue;
+ }
-Index: gcc/c/c-decl.c
-===================================================================
---- a/src/gcc/c/c-decl.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/c/c-decl.c (.../branches/gcc-6-branch)
-@@ -5400,11 +5400,21 @@
- if (TREE_CODE (type) == ERROR_MARK)
- return error_mark_node;
- if (expr == NULL)
-- expr = &expr_dummy;
-+ {
-+ expr = &expr_dummy;
-+ expr_dummy = NULL_TREE;
-+ }
- if (expr_const_operands == NULL)
- expr_const_operands = &expr_const_operands_dummy;
+@@ -12029,17 +12037,36 @@
+ parser->tokens_avail = tokens.length ();
+ }
-- *expr = declspecs->expr;
-+ if (declspecs->expr)
-+ {
-+ if (*expr)
-+ *expr = build2 (COMPOUND_EXPR, TREE_TYPE (declspecs->expr), *expr,
-+ declspecs->expr);
-+ else
-+ *expr = declspecs->expr;
-+ }
- *expr_const_operands = declspecs->expr_const_operands;
+- tree t = lookup_name (c_parser_peek_token (parser)->value);
++ tree t = NULL_TREE;
- if (decl_context == FUNCDEF)
-Index: gcc/cgraph.c
-===================================================================
---- a/src/gcc/cgraph.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cgraph.c (.../branches/gcc-6-branch)
-@@ -1413,9 +1413,24 @@
- if (skip_bounds)
- new_stmt = chkp_copy_call_skip_bounds (new_stmt);
-
-+ tree old_fntype = gimple_call_fntype (e->call_stmt);
- gimple_call_set_fndecl (new_stmt, e->callee->decl);
-- gimple_call_set_fntype (new_stmt, gimple_call_fntype (e->call_stmt));
-+ cgraph_node *origin = e->callee;
-+ while (origin->clone_of)
-+ origin = origin->clone_of;
-
-+ if ((origin->former_clone_of
-+ && old_fntype == TREE_TYPE (origin->former_clone_of))
-+ || old_fntype == TREE_TYPE (origin->decl))
-+ gimple_call_set_fntype (new_stmt, TREE_TYPE (e->callee->decl));
+- if (t == NULL_TREE)
++ if (c_parser_next_token_is (parser, CPP_NAME)
++ && c_parser_peek_token (parser)->id_kind == C_ID_ID)
+ {
+- undeclared_variable (c_parser_peek_token (parser)->location,
+- c_parser_peek_token (parser)->value);
+- t = error_mark_node;
++ t = lookup_name (c_parser_peek_token (parser)->value);
++
++ if (t == NULL_TREE)
++ {
++ undeclared_variable (c_parser_peek_token (parser)->location,
++ c_parser_peek_token (parser)->value);
++ t = error_mark_node;
++ }
++
++ c_parser_consume_token (parser);
+ }
++ else if (c_parser_next_token_is (parser, CPP_KEYWORD)
++ && (c_parser_peek_token (parser)->keyword == RID_FUNCTION_NAME
++ || (c_parser_peek_token (parser)->keyword
++ == RID_PRETTY_FUNCTION_NAME)
++ || (c_parser_peek_token (parser)->keyword
++ == RID_C99_FUNCTION_NAME)))
++ t = c_parser_predefined_identifier (parser).value;
+ else
+ {
-+ bitmap skip = e->callee->clone.combined_args_to_skip;
-+ tree t = cgraph_build_function_type_skip_args (old_fntype, skip,
-+ false);
-+ gimple_call_set_fntype (new_stmt, t);
++ if (first)
++ c_parser_error (parser, "expected identifier");
++ break;
+ }
-+
- if (gimple_vdef (new_stmt)
- && TREE_CODE (gimple_vdef (new_stmt)) == SSA_NAME)
- SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
-Index: gcc/cgraph.h
-===================================================================
---- a/src/gcc/cgraph.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cgraph.h (.../branches/gcc-6-branch)
-@@ -2272,6 +2272,8 @@
- void tree_function_versioning (tree, tree, vec<ipa_replace_map *, va_gc> *,
- bool, bitmap, bool, bitmap, basic_block);
-+tree cgraph_build_function_type_skip_args (tree orig_type, bitmap args_to_skip,
-+ bool skip_return);
+- c_parser_consume_token (parser);
+-
+ if (t == error_mark_node)
+ ;
+ else if (kind != 0)
+@@ -12176,6 +12203,7 @@
+ break;
- /* In cgraphbuild.c */
- int compute_call_stmt_bb_frequency (tree, basic_block bb);
-Index: gcc/DATESTAMP
+ c_parser_consume_token (parser);
++ first = false;
+ }
+
+ return list;
+@@ -14707,7 +14735,10 @@
+ c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
+ "expected %<,%> or %<)%>");
+
+- check_no_duplicate_clause (list, OMP_CLAUSE_SCHEDULE, "schedule");
++ /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE,
++ "dist_schedule"); */
++ if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE))
++ warning_at (loc, 0, "too many %qs clauses", "dist_schedule");
+ if (t == error_mark_node)
+ return list;
+
+@@ -19859,6 +19890,8 @@
+
+ if (c_parser_peek_token (&tparser)->pragma_kind == PRAGMA_GCC_PCH_PREPROCESS)
+ c_parser_pragma_pch_preprocess (&tparser);
++ else
++ c_common_no_more_pch ();
+
+ the_parser = ggc_alloc<c_parser> ();
+ *the_parser = tparser;
+Index: gcc/c/c-typeck.c
===================================================================
---- a/src/gcc/DATESTAMP (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/DATESTAMP (.../branches/gcc-6-branch)
-@@ -1 +1 @@
--20161221
-+20170510
-Index: gcc/postreload.c
-===================================================================
---- a/src/gcc/postreload.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/postreload.c (.../branches/gcc-6-branch)
-@@ -93,6 +93,11 @@
- basic_block insn_bb = BLOCK_FOR_INSN (insn);
- unsigned insn_bb_succs = EDGE_COUNT (insn_bb->succs);
-
-+ /* If NO_FUNCTION_CSE has been set by the target, then we should not try
-+ to cse function calls. */
-+ if (NO_FUNCTION_CSE && CALL_P (insn))
-+ return false;
-+
- if (GET_CODE (body) == SET)
- {
- int count = 0;
-Index: gcc/value-prof.c
+--- a/src/gcc/c/c-typeck.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/c/c-typeck.c (.../branches/gcc-9-branch)
+@@ -14713,6 +14713,13 @@
+ case OMP_CLAUSE_DEFAULT_UNSPECIFIED:
+ break;
+ case OMP_CLAUSE_DEFAULT_SHARED:
++ if ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED
++ || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE)
++ && c_omp_predefined_variable (t))
++ /* The __func__ variable and similar function-local
++ predefined variables may be listed in a shared or
++ firstprivate clause. */
++ break;
+ share_name = "shared";
+ break;
+ case OMP_CLAUSE_DEFAULT_PRIVATE:
+Index: gcc/cgraph.c
===================================================================
---- a/src/gcc/value-prof.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/value-prof.c (.../branches/gcc-6-branch)
-@@ -384,7 +384,17 @@
- break;
+--- a/src/gcc/cgraph.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cgraph.c (.../branches/gcc-9-branch)
+@@ -1779,8 +1779,6 @@
+ void
+ cgraph_node::remove (void)
+ {
+- cgraph_node *n;
+-
+ if (symtab->ipa_clones_dump_file && symtab->cloned_nodes.contains (this))
+ fprintf (symtab->ipa_clones_dump_file,
+ "Callgraph removal;%s;%d;%s;%d;%d\n", asm_name (), order,
+@@ -1797,8 +1795,13 @@
+ */
+ force_output = false;
+ forced_by_abi = false;
+- for (n = nested; n; n = n->next_nested)
++ cgraph_node *next = nested;
++ for (cgraph_node *n = nested; n; n = next)
++ {
++ next = n->next_nested;
+ n->origin = NULL;
++ n->next_nested = NULL;
++ }
+ nested = NULL;
+ if (origin)
+ {
+@@ -1852,7 +1855,7 @@
+ */
+ if (symtab->state != LTO_STREAMING)
+ {
+- n = cgraph_node::get (decl);
++ cgraph_node *n = cgraph_node::get (decl);
+ if (!n
+ || (!n->clones && !n->clone_of && !n->global.inlined_to
+ && ((symtab->global_info_ready || in_lto_p)
+@@ -3449,6 +3452,30 @@
+ e->aux = 0;
+ }
}
- for (i = 0; i < hist->n_counters; i++)
-- streamer_write_gcov_count (ob, hist->hvalue.counters[i]);
-+ {
-+ /* When user uses an unsigned type with a big value, constant converted
-+ to gcov_type (a signed type) can be negative. */
-+ gcov_type value = hist->hvalue.counters[i];
-+ if (hist->type == HIST_TYPE_SINGLE_VALUE && i == 0)
-+ ;
-+ else
-+ gcc_assert (value >= 0);
+
-+ streamer_write_gcov_count (ob, value);
++ if (nested != NULL)
++ {
++ for (cgraph_node *n = nested; n != NULL; n = n->next_nested)
++ {
++ if (n->origin == NULL)
++ {
++ error ("missing origin for a node in a nested list");
++ error_found = true;
++ }
++ else if (n->origin != this)
++ {
++ error ("origin points to a different parent");
++ error_found = true;
++ break;
++ }
++ }
+ }
- if (hist->hvalue.next)
- stream_out_histogram_value (ob, hist->hvalue.next);
- }
-@@ -1376,7 +1386,13 @@
- gimple_call_set_fndecl (dcall_stmt, direct_call->decl);
- dflags = flags_from_decl_or_type (direct_call->decl);
- if ((dflags & ECF_NORETURN) != 0)
-- gimple_call_set_lhs (dcall_stmt, NULL_TREE);
++ if (next_nested != NULL && origin == NULL)
+ {
-+ tree lhs = gimple_call_lhs (dcall_stmt);
-+ if (lhs
-+ && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST
-+ && !TREE_ADDRESSABLE (TREE_TYPE (lhs)))
-+ gimple_call_set_lhs (dcall_stmt, NULL_TREE);
++ error ("missing origin for a node in a nested list");
++ error_found = true;
+ }
- gsi_insert_before (&gsi, dcall_stmt, GSI_SAME_STMT);
-
- /* Fix CFG. */
-Index: gcc/tree-ssa-strlen.c
-===================================================================
---- a/src/gcc/tree-ssa-strlen.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-ssa-strlen.c (.../branches/gcc-6-branch)
-@@ -1834,6 +1834,9 @@
- {
- gimple *stmt = gsi_stmt (*gsi);
- tree lhs = gimple_call_lhs (stmt);
-+ if (lhs == NULL_TREE)
-+ return;
+
- gcc_assert (get_stridx (lhs) == 0);
- int idx = new_stridx (lhs);
- tree length = NULL_TREE;
-Index: gcc/tree.c
-===================================================================
---- a/src/gcc/tree.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree.c (.../branches/gcc-6-branch)
-@@ -1675,13 +1675,8 @@
- bool
- cst_and_fits_in_hwi (const_tree x)
- {
-- if (TREE_CODE (x) != INTEGER_CST)
-- return false;
--
-- if (TYPE_PRECISION (TREE_TYPE (x)) > HOST_BITS_PER_WIDE_INT)
-- return false;
--
-- return TREE_INT_CST_NUNITS (x) == 1;
-+ return (TREE_CODE (x) == INTEGER_CST
-+ && (tree_fits_shwi_p (x) || tree_fits_uhwi_p (x)));
- }
-
- /* Build a newly constructed VECTOR_CST node of length LEN. */
-Index: gcc/internal-fn.c
-===================================================================
---- a/src/gcc/internal-fn.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/internal-fn.c (.../branches/gcc-6-branch)
-@@ -1271,8 +1271,8 @@
- res = expand_expr_real_2 (&ops, NULL_RTX, wmode, EXPAND_NORMAL);
- rtx hipart = expand_shift (RSHIFT_EXPR, wmode, res, prec,
- NULL_RTX, uns);
-- hipart = gen_lowpart (mode, hipart);
-- res = gen_lowpart (mode, res);
-+ hipart = convert_modes (mode, wmode, hipart, uns);
-+ res = convert_modes (mode, wmode, res, uns);
- if (uns)
- /* For the unsigned multiplication, there was overflow if
- HIPART is non-zero. */
-@@ -1305,8 +1305,8 @@
- unsigned int hprec = GET_MODE_PRECISION (hmode);
- rtx hipart0 = expand_shift (RSHIFT_EXPR, mode, op0, hprec,
- NULL_RTX, uns);
-- hipart0 = gen_lowpart (hmode, hipart0);
-- rtx lopart0 = gen_lowpart (hmode, op0);
-+ hipart0 = convert_modes (hmode, mode, hipart0, uns);
-+ rtx lopart0 = convert_modes (hmode, mode, op0, uns);
- rtx signbit0 = const0_rtx;
- if (!uns)
- signbit0 = expand_shift (RSHIFT_EXPR, hmode, lopart0, hprec - 1,
-@@ -1313,8 +1313,8 @@
- NULL_RTX, 0);
- rtx hipart1 = expand_shift (RSHIFT_EXPR, mode, op1, hprec,
- NULL_RTX, uns);
-- hipart1 = gen_lowpart (hmode, hipart1);
-- rtx lopart1 = gen_lowpart (hmode, op1);
-+ hipart1 = convert_modes (hmode, mode, hipart1, uns);
-+ rtx lopart1 = convert_modes (hmode, mode, op1, uns);
- rtx signbit1 = const0_rtx;
- if (!uns)
- signbit1 = expand_shift (RSHIFT_EXPR, hmode, lopart1, hprec - 1,
-@@ -1505,11 +1505,12 @@
- if (loxhi >> (bitsize / 2) == 0 (if uns). */
- rtx hipartloxhi = expand_shift (RSHIFT_EXPR, mode, loxhi, hprec,
- NULL_RTX, 0);
-- hipartloxhi = gen_lowpart (hmode, hipartloxhi);
-+ hipartloxhi = convert_modes (hmode, mode, hipartloxhi, 0);
- rtx signbitloxhi = const0_rtx;
- if (!uns)
- signbitloxhi = expand_shift (RSHIFT_EXPR, hmode,
-- gen_lowpart (hmode, loxhi),
-+ convert_modes (hmode, mode,
-+ loxhi, 0),
- hprec - 1, NULL_RTX, 0);
-
- do_compare_rtx_and_jump (signbitloxhi, hipartloxhi, NE, true, hmode,
-@@ -1519,7 +1520,8 @@
- /* res = (loxhi << (bitsize / 2)) | (hmode) lo0xlo1; */
- rtx loxhishifted = expand_shift (LSHIFT_EXPR, mode, loxhi, hprec,
- NULL_RTX, 1);
-- tem = convert_modes (mode, hmode, gen_lowpart (hmode, lo0xlo1), 1);
-+ tem = convert_modes (mode, hmode,
-+ convert_modes (hmode, mode, lo0xlo1, 1), 1);
-
- tem = expand_simple_binop (mode, IOR, loxhishifted, tem, res,
- 1, OPTAB_DIRECT);
-Index: gcc/gcc.c
-===================================================================
---- a/src/gcc/gcc.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gcc.c (.../branches/gcc-6-branch)
-@@ -1919,6 +1919,9 @@
- /* Was the option -o passed. */
- static int have_o = 0;
-
-+/* Was the option -E passed. */
-+static int have_E = 0;
-+
- /* Pointer to output file name passed in with -o. */
- static const char *output_file = 0;
-
-@@ -4031,6 +4034,10 @@
- validated = true;
- break;
-
-+ case OPT_E:
-+ have_E = true;
-+ break;
-+
- case OPT_x:
- spec_lang = arg;
- if (!strcmp (spec_lang, "none"))
-@@ -7692,6 +7699,17 @@
- {
- for (int j = 0; sanitizer_opts[j].name != NULL; ++j)
- {
-+ struct cl_option optb;
-+ /* -fsanitize=all is not valid, only -fno-sanitize=all.
-+ So don't register the positive misspelling candidates
-+ for it. */
-+ if (sanitizer_opts[j].flag == ~0U && i == OPT_fsanitize_)
-+ {
-+ optb = *option;
-+ optb.opt_text = opt_text = "-fno-sanitize=";
-+ optb.cl_reject_negative = true;
-+ option = &optb;
-+ }
- /* Get one arg at a time e.g. "-fsanitize=address". */
- char *with_arg = concat (opt_text,
- sanitizer_opts[j].name,
-@@ -8273,8 +8291,18 @@
+ if (error_found)
{
- for (cp = compilers + n_compilers - 1; cp >= compilers; cp--)
- if (cp->suffix[0] == '@' && !strcmp (cp->suffix + 1, language))
-- return cp;
-+ {
-+ if (name != NULL && strcmp (name, "-") == 0
-+ && (strcmp (cp->suffix, "@c-header") == 0
-+ || strcmp (cp->suffix, "@c++-header") == 0)
-+ && !have_E)
-+ fatal_error (input_location,
-+ "cannot use %<-%> as input filename for a "
-+ "precompiled header");
-
-+ return cp;
-+ }
-+
- error ("language %s not recognized", language);
- return 0;
- }
-Index: gcc/generic-match-head.c
+ dump (stderr);
+Index: gcc/lra-int.h
+===================================================================
+--- a/src/gcc/lra-int.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lra-int.h (.../branches/gcc-9-branch)
+@@ -401,6 +401,7 @@
+
+ /* lra-spills.c: */
+
++extern bool lra_need_for_scratch_reg_p (void);
+ extern bool lra_need_for_spills_p (void);
+ extern void lra_spill (void);
+ extern void lra_final_code_change (void);
+Index: gcc/optabs.c
+===================================================================
+--- a/src/gcc/optabs.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/optabs.c (.../branches/gcc-9-branch)
+@@ -5819,6 +5819,25 @@
+ icode = get_vcond_icode (mode, cmp_op_mode, unsignedp);
+ if (icode == CODE_FOR_nothing)
+ {
++ if (tcode == LT_EXPR
++ && op0a == op0
++ && TREE_CODE (op0) == VECTOR_CST)
++ {
++ /* A VEC_COND_EXPR condition could be folded from EQ_EXPR/NE_EXPR
++ into a constant when only get_vcond_eq_icode is supported.
++ Verify < 0 and != 0 behave the same and change it to NE_EXPR. */
++ unsigned HOST_WIDE_INT nelts;
++ if (!VECTOR_CST_NELTS (op0).is_constant (&nelts))
++ {
++ if (VECTOR_CST_STEPPED_P (op0))
++ return 0;
++ nelts = vector_cst_encoded_nelts (op0);
++ }
++ for (unsigned int i = 0; i < nelts; ++i)
++ if (tree_int_cst_sgn (vector_cst_elt (op0, i)) == 1)
++ return 0;
++ tcode = NE_EXPR;
++ }
+ if (tcode == EQ_EXPR || tcode == NE_EXPR)
+ icode = get_vcond_eq_icode (mode, cmp_op_mode);
+ if (icode == CODE_FOR_nothing)
+Index: gcc/DATESTAMP
===================================================================
---- a/src/gcc/generic-match-head.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/generic-match-head.c (.../branches/gcc-6-branch)
-@@ -33,6 +33,7 @@
- #include "builtins.h"
- #include "dumpfile.h"
- #include "case-cfn-macros.h"
-+#include "gimplify.h"
-
-
- /* Routine to determine if the types T1 and T2 are effectively
-Index: gcc/fold-const.c
+--- a/src/gcc/DATESTAMP (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/DATESTAMP (.../branches/gcc-9-branch)
+@@ -1 +1 @@
+-20190812
++20191109
+Index: gcc/gimple-streamer-out.c
===================================================================
---- a/src/gcc/fold-const.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fold-const.c (.../branches/gcc-6-branch)
-@@ -143,6 +143,7 @@
- static tree fold_convert_const (enum tree_code, tree, tree);
- static tree fold_view_convert_expr (tree, tree);
- static bool vec_cst_ctor_to_array (tree, tree *);
-+static tree fold_negate_expr (location_t, tree);
-
-
- /* Return EXPR_LOCATION of T if it is not UNKNOWN_LOCATION.
-@@ -530,7 +531,7 @@
- returned. */
+--- a/src/gcc/gimple-streamer-out.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/gimple-streamer-out.c (.../branches/gcc-9-branch)
+@@ -57,7 +57,7 @@
+ /* Emit statement STMT on the main stream of output block OB. */
- static tree
--fold_negate_expr (location_t loc, tree t)
-+fold_negate_expr_1 (location_t loc, tree t)
+ static void
+-output_gimple_stmt (struct output_block *ob, gimple *stmt)
++output_gimple_stmt (struct output_block *ob, struct function *fn, gimple *stmt)
{
- tree type = TREE_TYPE (t);
- tree tem;
-@@ -541,7 +542,7 @@
- case BIT_NOT_EXPR:
- if (INTEGRAL_TYPE_P (type))
- return fold_build2_loc (loc, PLUS_EXPR, type, TREE_OPERAND (t, 0),
-- build_one_cst (type));
-+ build_one_cst (type));
- break;
-
- case INTEGER_CST:
-@@ -589,14 +590,14 @@
- case COMPLEX_EXPR:
- if (negate_expr_p (t))
- return fold_build2_loc (loc, COMPLEX_EXPR, type,
-- fold_negate_expr (loc, TREE_OPERAND (t, 0)),
-- fold_negate_expr (loc, TREE_OPERAND (t, 1)));
-+ fold_negate_expr (loc, TREE_OPERAND (t, 0)),
-+ fold_negate_expr (loc, TREE_OPERAND (t, 1)));
- break;
-
- case CONJ_EXPR:
- if (negate_expr_p (t))
- return fold_build1_loc (loc, CONJ_EXPR, type,
-- fold_negate_expr (loc, TREE_OPERAND (t, 0)));
-+ fold_negate_expr (loc, TREE_OPERAND (t, 0)));
- break;
-
- case NEGATE_EXPR:
-@@ -615,7 +616,7 @@
+ unsigned i;
+ enum gimple_code code;
+@@ -80,7 +80,7 @@
+ as_a <gassign *> (stmt)),
+ 1);
+ bp_pack_value (&bp, gimple_has_volatile_ops (stmt), 1);
+- hist = gimple_histogram_value (cfun, stmt);
++ hist = gimple_histogram_value (fn, stmt);
+ bp_pack_value (&bp, hist != NULL, 1);
+ bp_pack_var_len_unsigned (&bp, stmt->subcode);
+
+@@ -139,7 +139,7 @@
+ so that we do not have to deal with type mismatches on
+ merged symbols during IL read in. The first operand
+ of GIMPLE_DEBUG must be a decl, not MEM_REF, though. */
+- if (op && (i || !is_gimple_debug (stmt)))
++ if (!flag_wpa && op && (i || !is_gimple_debug (stmt)))
{
- tem = negate_expr (TREE_OPERAND (t, 1));
- return fold_build2_loc (loc, MINUS_EXPR, type,
-- tem, TREE_OPERAND (t, 0));
-+ tem, TREE_OPERAND (t, 0));
+ basep = &op;
+ if (TREE_CODE (*basep) == ADDR_EXPR)
+@@ -147,7 +147,7 @@
+ while (handled_component_p (*basep))
+ basep = &TREE_OPERAND (*basep, 0);
+ if (VAR_P (*basep)
+- && !auto_var_in_fn_p (*basep, current_function_decl)
++ && !auto_var_in_fn_p (*basep, fn->decl)
+ && !DECL_REGISTER (*basep))
+ {
+ bool volatilep = TREE_THIS_VOLATILE (*basep);
+@@ -228,7 +228,7 @@
+ print_gimple_stmt (streamer_dump_file, stmt, 0, TDF_SLIM);
}
- /* -(A + B) -> (-A) - B. */
-@@ -623,7 +624,7 @@
+- output_gimple_stmt (ob, stmt);
++ output_gimple_stmt (ob, fn, stmt);
+
+ /* Emit the EH region holding STMT. */
+ region = lookup_stmt_eh_lp_fn (fn, stmt);
+Index: gcc/lra.c
+===================================================================
+--- a/src/gcc/lra.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lra.c (.../branches/gcc-9-branch)
+@@ -2587,7 +2587,11 @@
+ lra_create_live_ranges (lra_reg_spill_p, true);
+ live_p = true;
+ if (! lra_need_for_spills_p ())
+- break;
++ {
++ if (lra_need_for_scratch_reg_p ())
++ continue;
++ break;
++ }
+ }
+ lra_spill ();
+ /* Assignment of stack slots changes elimination offsets for
+Index: gcc/tree.c
+===================================================================
+--- a/src/gcc/tree.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree.c (.../branches/gcc-9-branch)
+@@ -5514,8 +5514,7 @@
+ free_lang_data_in_binfo (TYPE_BINFO (type));
+ /* We need to preserve link to bases and virtual table for all
+ polymorphic types to make devirtualization machinery working. */
+- if (!BINFO_VTABLE (TYPE_BINFO (type))
+- || !flag_devirtualize)
++ if (!BINFO_VTABLE (TYPE_BINFO (type)))
+ TYPE_BINFO (type) = NULL;
+ }
+ }
+@@ -5778,7 +5777,8 @@
+ while (*nextp)
+ {
+ tree var = *nextp;
+- if (fndecl_built_in_p (var))
++ if (TREE_CODE (var) == FUNCTION_DECL
++ && fndecl_built_in_p (var))
+ *nextp = TREE_CHAIN (var);
+ else
+ nextp = &TREE_CHAIN (var);
+@@ -5937,8 +5937,9 @@
+ {
+ for (tree *tem = &BLOCK_VARS (t); *tem; )
+ {
+- if (TREE_CODE (*tem) != VAR_DECL
+- || !auto_var_in_fn_p (*tem, DECL_CONTEXT (*tem)))
++ if (TREE_CODE (*tem) != LABEL_DECL
++ && (TREE_CODE (*tem) != VAR_DECL
++ || !auto_var_in_fn_p (*tem, DECL_CONTEXT (*tem))))
+ {
+ gcc_assert (TREE_CODE (*tem) != RESULT_DECL
+ && TREE_CODE (*tem) != PARM_DECL);
+@@ -6107,6 +6108,13 @@
{
- tem = negate_expr (TREE_OPERAND (t, 0));
- return fold_build2_loc (loc, MINUS_EXPR, type,
-- tem, TREE_OPERAND (t, 1));
-+ tem, TREE_OPERAND (t, 1));
+ tree arg = gimple_op (stmt, i);
+ find_decls_types (arg, fld);
++ /* find_decls_types doesn't walk TREE_PURPOSE of TREE_LISTs,
++ which we need for asm stmts. */
++ if (arg
++ && TREE_CODE (arg) == TREE_LIST
++ && TREE_PURPOSE (arg)
++ && gimple_code (stmt) == GIMPLE_ASM)
++ find_decls_types (TREE_PURPOSE (arg), fld);
}
}
- break;
-@@ -634,7 +635,7 @@
- && !HONOR_SIGNED_ZEROS (element_mode (type))
- && reorder_operands_p (TREE_OPERAND (t, 0), TREE_OPERAND (t, 1)))
- return fold_build2_loc (loc, MINUS_EXPR, type,
-- TREE_OPERAND (t, 1), TREE_OPERAND (t, 0));
-+ TREE_OPERAND (t, 1), TREE_OPERAND (t, 0));
- break;
+ }
+Index: gcc/tree.h
+===================================================================
+--- a/src/gcc/tree.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree.h (.../branches/gcc-9-branch)
+@@ -5946,12 +5946,12 @@
- case MULT_EXPR:
-@@ -649,11 +650,11 @@
- tem = TREE_OPERAND (t, 1);
- if (negate_expr_p (tem))
- return fold_build2_loc (loc, TREE_CODE (t), type,
-- TREE_OPERAND (t, 0), negate_expr (tem));
-+ TREE_OPERAND (t, 0), negate_expr (tem));
- tem = TREE_OPERAND (t, 0);
- if (negate_expr_p (tem))
- return fold_build2_loc (loc, TREE_CODE (t), type,
-- negate_expr (tem), TREE_OPERAND (t, 1));
-+ negate_expr (tem), TREE_OPERAND (t, 1));
- }
- break;
+ Note that it is different from the DECL_IS_BUILTIN accessor. For
+ instance, user declared prototypes of C library functions are not
+- DECL_IS_BUILTIN but may be DECL_BUILT_IN. */
++ DECL_IS_BUILTIN but may be fndecl_built_in_p. */
-@@ -726,6 +727,19 @@
- return NULL_TREE;
+ inline bool
+ fndecl_built_in_p (const_tree node)
+ {
+- return (DECL_BUILT_IN_CLASS (node) != NOT_BUILT_IN);
++ return DECL_BUILT_IN_CLASS (node) != NOT_BUILT_IN;
}
-+/* A wrapper for fold_negate_expr_1. */
-+
-+static tree
-+fold_negate_expr (location_t loc, tree t)
-+{
-+ tree type = TREE_TYPE (t);
-+ STRIP_SIGN_NOPS (t);
-+ tree tem = fold_negate_expr_1 (loc, t);
-+ if (tem == NULL_TREE)
-+ return NULL_TREE;
-+ return fold_convert_loc (loc, type, tem);
-+}
-+
- /* Like fold_negate_expr, but return a NEGATE_EXPR tree, if T can not be
- negated in a simpler way. Also allow for T to be NULL_TREE, in which case
- return NULL_TREE. */
-@@ -3787,6 +3801,31 @@
+ /* Return true if a FUNCTION_DECL NODE is a GCC built-in function
+@@ -5960,7 +5960,7 @@
+ inline bool
+ fndecl_built_in_p (const_tree node, built_in_class klass)
{
- tree result, bftype;
+- return (fndecl_built_in_p (node) && DECL_BUILT_IN_CLASS (node) == klass);
++ return fndecl_built_in_p (node) && DECL_BUILT_IN_CLASS (node) == klass;
+ }
-+ /* Attempt not to lose the access path if possible. */
-+ if (TREE_CODE (orig_inner) == COMPONENT_REF)
-+ {
-+ tree ninner = TREE_OPERAND (orig_inner, 0);
-+ machine_mode nmode;
-+ HOST_WIDE_INT nbitsize, nbitpos;
-+ tree noffset;
-+ int nunsignedp, nreversep, nvolatilep = 0;
-+ tree base = get_inner_reference (ninner, &nbitsize, &nbitpos,
-+ &noffset, &nmode, &nunsignedp,
-+ &nreversep, &nvolatilep, false);
-+ if (base == inner
-+ && noffset == NULL_TREE
-+ && nbitsize >= bitsize
-+ && nbitpos <= bitpos
-+ && bitpos + bitsize <= nbitpos + nbitsize
-+ && !reversep
-+ && !nreversep
-+ && !nvolatilep)
-+ {
-+ inner = ninner;
-+ bitpos -= nbitpos;
-+ }
-+ }
+ /* Return true if a FUNCTION_DECL NODE is a GCC built-in function
+Index: gcc/tree-pass.h
+===================================================================
+--- a/src/gcc/tree-pass.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-pass.h (.../branches/gcc-9-branch)
+@@ -562,6 +562,7 @@
+ extern rtl_opt_pass *make_pass_initialize_regs (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_combine (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_if_after_combine (gcc::context *ctxt);
++extern rtl_opt_pass *make_pass_jump_after_combine (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_ree (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_partition_blocks (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_match_asm_constraints (gcc::context *ctxt);
+@@ -579,7 +580,6 @@
+ extern rtl_opt_pass *make_pass_branch_prob (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_value_profile_transformations (gcc::context
+ *ctxt);
+-extern rtl_opt_pass *make_pass_postreload_jump (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_postreload_cse (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_gcse2 (gcc::context *ctxt);
+ extern rtl_opt_pass *make_pass_split_after_reload (gcc::context *ctxt);
+Index: gcc/ipa-cp.c
+===================================================================
+--- a/src/gcc/ipa-cp.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ipa-cp.c (.../branches/gcc-9-branch)
+@@ -5190,4 +5190,5 @@
+ max_count = profile_count::uninitialized ();
+ overall_size = 0;
+ max_new_size = 0;
++ ipcp_free_transformation_sum ();
+ }
+Index: gcc/rtlanal.c
+===================================================================
+--- a/src/gcc/rtlanal.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/rtlanal.c (.../branches/gcc-9-branch)
+@@ -4793,7 +4793,7 @@
+ || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
+ ? val_signbit_known_set_p (inner_mode, nonzero)
+ : extend_op != ZERO_EXTEND)
+- || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x))))
++ || !MEM_P (SUBREG_REG (x)))
+ && xmode_width > inner_width)
+ nonzero
+ |= (GET_MODE_MASK (GET_MODE (x)) & ~GET_MODE_MASK (inner_mode));
+Index: gcc/builtins.c
+===================================================================
+--- a/src/gcc/builtins.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/builtins.c (.../branches/gcc-9-branch)
+@@ -11236,3 +11236,90 @@
+ *p = (char)tree_to_uhwi (t);
+ return true;
+ }
+
- alias_set_type iset = get_alias_set (orig_inner);
- if (iset == 0 && get_alias_set (inner) != iset)
- inner = fold_build2 (MEM_REF, TREE_TYPE (inner),
-@@ -3881,9 +3920,19 @@
- return 0;
- }
-
-+ /* Honor the C++ memory model and mimic what RTL expansion does. */
-+ unsigned HOST_WIDE_INT bitstart = 0;
-+ unsigned HOST_WIDE_INT bitend = 0;
-+ if (TREE_CODE (lhs) == COMPONENT_REF)
++/* Return true if the builtin DECL is implemented in a standard library.
++ Otherwise returns false which doesn't guarantee it is not (thus the list of
++ handled builtins below may be incomplete). */
++
++bool
++builtin_with_linkage_p (tree decl)
++{
++ if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
++ switch (DECL_FUNCTION_CODE (decl))
+ {
-+ get_bit_range (&bitstart, &bitend, lhs, &lbitpos, &offset);
-+ if (offset != NULL_TREE)
-+ return 0;
++ CASE_FLT_FN (BUILT_IN_ACOS):
++ CASE_FLT_FN (BUILT_IN_ACOSH):
++ CASE_FLT_FN (BUILT_IN_ASIN):
++ CASE_FLT_FN (BUILT_IN_ASINH):
++ CASE_FLT_FN (BUILT_IN_ATAN):
++ CASE_FLT_FN (BUILT_IN_ATANH):
++ CASE_FLT_FN (BUILT_IN_ATAN2):
++ CASE_FLT_FN (BUILT_IN_CBRT):
++ CASE_FLT_FN (BUILT_IN_CEIL):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_CEIL):
++ CASE_FLT_FN (BUILT_IN_COPYSIGN):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_COPYSIGN):
++ CASE_FLT_FN (BUILT_IN_COS):
++ CASE_FLT_FN (BUILT_IN_COSH):
++ CASE_FLT_FN (BUILT_IN_ERF):
++ CASE_FLT_FN (BUILT_IN_ERFC):
++ CASE_FLT_FN (BUILT_IN_EXP):
++ CASE_FLT_FN (BUILT_IN_EXP2):
++ CASE_FLT_FN (BUILT_IN_EXPM1):
++ CASE_FLT_FN (BUILT_IN_FABS):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FABS):
++ CASE_FLT_FN (BUILT_IN_FDIM):
++ CASE_FLT_FN (BUILT_IN_FLOOR):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FLOOR):
++ CASE_FLT_FN (BUILT_IN_FMA):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMA):
++ CASE_FLT_FN (BUILT_IN_FMAX):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMAX):
++ CASE_FLT_FN (BUILT_IN_FMIN):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMIN):
++ CASE_FLT_FN (BUILT_IN_FMOD):
++ CASE_FLT_FN (BUILT_IN_FREXP):
++ CASE_FLT_FN (BUILT_IN_HYPOT):
++ CASE_FLT_FN (BUILT_IN_ILOGB):
++ CASE_FLT_FN (BUILT_IN_LDEXP):
++ CASE_FLT_FN (BUILT_IN_LGAMMA):
++ CASE_FLT_FN (BUILT_IN_LLRINT):
++ CASE_FLT_FN (BUILT_IN_LLROUND):
++ CASE_FLT_FN (BUILT_IN_LOG):
++ CASE_FLT_FN (BUILT_IN_LOG10):
++ CASE_FLT_FN (BUILT_IN_LOG1P):
++ CASE_FLT_FN (BUILT_IN_LOG2):
++ CASE_FLT_FN (BUILT_IN_LOGB):
++ CASE_FLT_FN (BUILT_IN_LRINT):
++ CASE_FLT_FN (BUILT_IN_LROUND):
++ CASE_FLT_FN (BUILT_IN_MODF):
++ CASE_FLT_FN (BUILT_IN_NAN):
++ CASE_FLT_FN (BUILT_IN_NEARBYINT):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_NEARBYINT):
++ CASE_FLT_FN (BUILT_IN_NEXTAFTER):
++ CASE_FLT_FN (BUILT_IN_NEXTTOWARD):
++ CASE_FLT_FN (BUILT_IN_POW):
++ CASE_FLT_FN (BUILT_IN_REMAINDER):
++ CASE_FLT_FN (BUILT_IN_REMQUO):
++ CASE_FLT_FN (BUILT_IN_RINT):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT):
++ CASE_FLT_FN (BUILT_IN_ROUND):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND):
++ CASE_FLT_FN (BUILT_IN_SCALBLN):
++ CASE_FLT_FN (BUILT_IN_SCALBN):
++ CASE_FLT_FN (BUILT_IN_SIN):
++ CASE_FLT_FN (BUILT_IN_SINH):
++ CASE_FLT_FN (BUILT_IN_SINCOS):
++ CASE_FLT_FN (BUILT_IN_SQRT):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_SQRT):
++ CASE_FLT_FN (BUILT_IN_TAN):
++ CASE_FLT_FN (BUILT_IN_TANH):
++ CASE_FLT_FN (BUILT_IN_TGAMMA):
++ CASE_FLT_FN (BUILT_IN_TRUNC):
++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_TRUNC):
++ return true;
++ default:
++ break;
+ }
-+
- /* See if we can find a mode to refer to this field. We should be able to,
- but fail if we can't. */
-- nmode = get_best_mode (lbitsize, lbitpos, 0, 0,
-+ nmode = get_best_mode (lbitsize, lbitpos, bitstart, bitend,
- const_p ? TYPE_ALIGN (TREE_TYPE (linner))
- : MIN (TYPE_ALIGN (TREE_TYPE (linner)),
- TYPE_ALIGN (TREE_TYPE (rinner))),
-@@ -8864,7 +8913,7 @@
- if (save_p)
- {
- tem = save_expr (build2 (code, type, cval1, cval2));
-- SET_EXPR_LOCATION (tem, loc);
-+ protected_set_expr_location (tem, loc);
- return tem;
- }
- return fold_build2_loc (loc, code, type, cval1, cval2);
-@@ -10107,12 +10156,12 @@
- }
-
- if (c3 != c1)
-- return fold_build2_loc (loc, BIT_IOR_EXPR, type,
-- fold_build2_loc (loc, BIT_AND_EXPR, type,
-- TREE_OPERAND (arg0, 0),
-- wide_int_to_tree (type,
-- c3)),
-- arg1);
-+ {
-+ tem = fold_convert_loc (loc, type, TREE_OPERAND (arg0, 0));
-+ tem = fold_build2_loc (loc, BIT_AND_EXPR, type, tem,
-+ wide_int_to_tree (type, c3));
-+ return fold_build2_loc (loc, BIT_IOR_EXPR, type, tem, arg1);
-+ }
- }
++ return false;
++}
+Index: gcc/builtins.h
+===================================================================
+--- a/src/gcc/builtins.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/builtins.h (.../branches/gcc-9-branch)
+@@ -150,5 +150,6 @@
- /* See if this can be simplified into a rotate first. If that
-@@ -10435,7 +10484,7 @@
- /* Convert -A / -B to A / B when the type is signed and overflow is
- undefined. */
- if ((!INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type))
-- && TREE_CODE (arg0) == NEGATE_EXPR
-+ && TREE_CODE (op0) == NEGATE_EXPR
- && negate_expr_p (op1))
- {
- if (INTEGRAL_TYPE_P (type))
-@@ -14215,7 +14264,8 @@
-
- STRIP_NOPS (sub);
- subtype = TREE_TYPE (sub);
-- if (!POINTER_TYPE_P (subtype))
-+ if (!POINTER_TYPE_P (subtype)
-+ || TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (op0)))
- return NULL_TREE;
+ extern void warn_string_no_nul (location_t, const char *, tree, tree);
+ extern tree unterminated_array (tree, tree * = NULL, bool * = NULL);
++extern bool builtin_with_linkage_p (tree);
- if (TREE_CODE (sub) == ADDR_EXPR)
-@@ -14549,6 +14599,24 @@
- &volatilep, false);
- core = build_fold_addr_expr_loc (loc, core);
- }
-+ else if (TREE_CODE (exp) == POINTER_PLUS_EXPR)
-+ {
-+ core = TREE_OPERAND (exp, 0);
-+ STRIP_NOPS (core);
-+ *pbitpos = 0;
-+ *poffset = TREE_OPERAND (exp, 1);
-+ if (TREE_CODE (*poffset) == INTEGER_CST)
-+ {
-+ offset_int tem = wi::sext (wi::to_offset (*poffset),
-+ TYPE_PRECISION (TREE_TYPE (*poffset)));
-+ tem = wi::lshift (tem, LOG2_BITS_PER_UNIT);
-+ if (wi::fits_shwi_p (tem))
-+ {
-+ *pbitpos = tem.to_shwi ();
-+ *poffset = NULL_TREE;
-+ }
-+ }
-+ }
- else
- {
- core = exp;
-Index: gcc/omp-low.c
-===================================================================
---- a/src/gcc/omp-low.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/omp-low.c (.../branches/gcc-6-branch)
-@@ -2711,9 +2711,11 @@
- tree name, t;
- gomp_task *stmt = as_a <gomp_task *> (gsi_stmt (*gsi));
-
-- /* Ignore task directives with empty bodies. */
-+ /* Ignore task directives with empty bodies, unless they have depend
-+ clause. */
- if (optimize > 0
-- && empty_body_p (gimple_omp_body (stmt)))
-+ && empty_body_p (gimple_omp_body (stmt))
-+ && !find_omp_clause (gimple_omp_task_clauses (stmt), OMP_CLAUSE_DEPEND))
+ #endif /* GCC_BUILTINS_H */
+Index: gcc/generic-match-head.c
+===================================================================
+--- a/src/gcc/generic-match-head.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/generic-match-head.c (.../branches/gcc-9-branch)
+@@ -28,6 +28,7 @@
+ #include "ssa.h"
+ #include "cgraph.h"
+ #include "fold-const.h"
++#include "fold-const-call.h"
+ #include "stor-layout.h"
+ #include "tree-dfa.h"
+ #include "builtins.h"
+Index: gcc/fold-const.c
+===================================================================
+--- a/src/gcc/fold-const.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fold-const.c (.../branches/gcc-9-branch)
+@@ -4935,10 +4935,9 @@
+ /* First make sure that arithmetics in this type is valid, then make sure
+ that it wraps around. */
+ if (TREE_CODE (etype) == ENUMERAL_TYPE || TREE_CODE (etype) == BOOLEAN_TYPE)
+- etype = lang_hooks.types.type_for_size (TYPE_PRECISION (etype),
+- TYPE_UNSIGNED (etype));
++ etype = lang_hooks.types.type_for_size (TYPE_PRECISION (etype), 1);
+
+- if (TREE_CODE (etype) == INTEGER_TYPE && !TYPE_OVERFLOW_WRAPS (etype))
++ if (TREE_CODE (etype) == INTEGER_TYPE && !TYPE_UNSIGNED (etype))
{
- gsi_replace (gsi, gimple_build_nop (), false);
- return;
-@@ -19225,7 +19227,9 @@
- static oacc_loop *
- oacc_loop_discovery ()
- {
-- basic_block bb;
-+ /* Clear basic block flags, in particular BB_VISITED which we're going to use
-+ in the following. */
-+ clear_bb_flags ();
-
- oacc_loop *top = new_oacc_loop_outer (current_function_decl);
- oacc_loop_discover_walk (top, ENTRY_BLOCK_PTR_FOR_FN (cfun));
-@@ -19234,9 +19238,8 @@
- that diagnostics come out in an unsurprising order. */
- top = oacc_loop_sibling_nreverse (top);
-
-- /* Reset the visited flags. */
-- FOR_ALL_BB_FN (bb, cfun)
-- bb->flags &= ~BB_VISITED;
-+ /* Clear basic block flags again. */
-+ clear_bb_flags ();
+ tree utype, minv, maxv;
- return top;
+@@ -4956,6 +4955,8 @@
+ else
+ return NULL_TREE;
+ }
++ else if (POINTER_TYPE_P (etype))
++ etype = unsigned_type_for (etype);
+ return etype;
}
-@@ -19889,7 +19892,9 @@
- {
- tree t = *tp;
-- if (TREE_CODE (t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (t)
-+ if (TREE_CODE (t) == VAR_DECL
-+ && DECL_HAS_VALUE_EXPR_P (t)
-+ && is_global_var (t)
- && lookup_attribute ("omp declare target link", DECL_ATTRIBUTES (t)))
- {
- *walk_subtrees = 0;
-Index: gcc/ipa-inline-transform.c
-===================================================================
---- a/src/gcc/ipa-inline-transform.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ipa-inline-transform.c (.../branches/gcc-6-branch)
-@@ -324,6 +324,8 @@
- if (DECL_FUNCTION_PERSONALITY (callee->decl))
- DECL_FUNCTION_PERSONALITY (to->decl)
- = DECL_FUNCTION_PERSONALITY (callee->decl);
-+
-+ bool reload_optimization_node = false;
- if (!opt_for_fn (callee->decl, flag_strict_aliasing)
- && opt_for_fn (to->decl, flag_strict_aliasing))
- {
-@@ -336,8 +338,13 @@
- to->name (), to->order);
- DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl)
- = build_optimization_node (&opts);
-+ reload_optimization_node = true;
- }
+@@ -5046,9 +5047,6 @@
+ if (etype == NULL_TREE)
+ return NULL_TREE;
-+ /* Reload global optimization flags. */
-+ if (reload_optimization_node && DECL_STRUCT_FUNCTION (to->decl) == cfun)
-+ set_cfun (cfun, true);
-+
- /* If aliases are involved, redirect edge to the actual destination and
- possibly remove the aliases. */
- if (e->callee != callee)
-Index: gcc/toplev.c
+- if (POINTER_TYPE_P (etype))
+- etype = unsigned_type_for (etype);
+-
+ high = fold_convert_loc (loc, etype, high);
+ low = fold_convert_loc (loc, etype, low);
+ exp = fold_convert_loc (loc, etype, exp);
+Index: gcc/lra-spills.c
===================================================================
---- a/src/gcc/toplev.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/toplev.c (.../branches/gcc-6-branch)
-@@ -1263,17 +1263,42 @@
- if (targetm.chkp_bound_mode () == VOIDmode)
- {
- error_at (UNKNOWN_LOCATION,
-- "-fcheck-pointer-bounds is not supported for this target");
-+ "%<-fcheck-pointer-bounds%> is not supported for this "
-+ "target");
- flag_check_pointer_bounds = 0;
- }
+--- a/src/gcc/lra-spills.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lra-spills.c (.../branches/gcc-9-branch)
+@@ -548,6 +548,19 @@
+ }
+ }
-+ if (flag_sanitize & SANITIZE_BOUNDS_STRICT)
-+ {
-+ error_at (UNKNOWN_LOCATION,
-+ "%<-fcheck-pointer-bounds%> is not supported with "
-+ "%<-fsanitize=bounds-strict%>");
-+ flag_check_pointer_bounds = 0;
-+ }
-+ else if (flag_sanitize & SANITIZE_BOUNDS)
-+ {
-+ error_at (UNKNOWN_LOCATION,
-+ "%<-fcheck-pointer-bounds%> is not supported with "
-+ "%<-fsanitize=bounds%>");
-+ flag_check_pointer_bounds = 0;
-+ }
-+
- if (flag_sanitize & SANITIZE_ADDRESS)
- {
- error_at (UNKNOWN_LOCATION,
-- "-fcheck-pointer-bounds is not supported with "
-+ "%<-fcheck-pointer-bounds%> is not supported with "
- "Address Sanitizer");
- flag_check_pointer_bounds = 0;
- }
++/* Return true if we need scratch reg assignments. */
++bool
++lra_need_for_scratch_reg_p (void)
++{
++ int i; max_regno = max_reg_num ();
+
-+ if (flag_sanitize & SANITIZE_THREAD)
-+ {
-+ error_at (UNKNOWN_LOCATION,
-+ "%<-fcheck-pointer-bounds%> is not supported with "
-+ "Thread Sanitizer");
++ for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
++ if (lra_reg_info[i].nrefs != 0 && lra_get_regno_hard_regno (i) < 0
++ && lra_former_scratch_p (i))
++ return true;
++ return false;
++}
+
-+ flag_check_pointer_bounds = 0;
-+ }
- }
-
- /* One region RA really helps to decrease the code size. */
-Index: gcc/tree-chrec.c
+ /* Return true if we need to change some pseudos into memory. */
+ bool
+ lra_need_for_spills_p (void)
+Index: gcc/tree-ssa-dse.c
===================================================================
---- a/src/gcc/tree-chrec.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-chrec.c (.../branches/gcc-6-branch)
-@@ -149,7 +149,12 @@
+--- a/src/gcc/tree-ssa-dse.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-dse.c (.../branches/gcc-9-branch)
+@@ -984,7 +984,7 @@
+ {
+ need_eh_cleanup = BITMAP_ALLOC (NULL);
- /* This function should never be called for chrecs of loops that
- do not belong to the same loop nest. */
-- gcc_assert (loop0 == loop1);
-+ if (loop0 != loop1)
-+ {
-+ /* It still can happen if we are not in loop-closed SSA form. */
-+ gcc_assert (! loops_state_satisfies_p (LOOP_CLOSED_SSA));
-+ return chrec_dont_know;
-+ }
+- renumber_gimple_stmt_uids ();
++ renumber_gimple_stmt_uids (cfun);
+
+ /* We might consider making this a property of each pass so that it
+ can be [re]computed on an as-needed basis. Particularly since
+Index: gcc/gcov.c
+===================================================================
+--- a/src/gcc/gcov.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/gcov.c (.../branches/gcc-9-branch)
+@@ -725,10 +725,10 @@
+ /* Return true when PATH contains a zero cycle arc count. */
- if (code == PLUS_EXPR || code == POINTER_PLUS_EXPR)
+ static bool
+-path_contains_zero_cycle_arc (arc_vector_t &path)
++path_contains_zero_or_negative_cycle_arc (arc_vector_t &path)
+ {
+ for (unsigned i = 0; i < path.size (); i++)
+- if (path[i]->cs_count == 0)
++ if (path[i]->cs_count <= 0)
+ return true;
+ return false;
+ }
+@@ -754,7 +754,7 @@
{
-@@ -211,7 +216,12 @@
- chrec_fold_multiply (type, CHREC_LEFT (poly0), poly1),
- CHREC_RIGHT (poly0));
+ block_info *w = arc->dst;
+ if (w < start
+- || arc->cs_count == 0
++ || arc->cs_count <= 0
+ || !linfo.has_block (w))
+ continue;
-- gcc_assert (loop0 == loop1);
-+ if (loop0 != loop1)
-+ {
-+ /* It still can happen if we are not in loop-closed SSA form. */
-+ gcc_assert (! loops_state_satisfies_p (LOOP_CLOSED_SSA));
-+ return chrec_dont_know;
-+ }
+@@ -765,7 +765,7 @@
+ handle_cycle (path, count);
+ loop_found = true;
+ }
+- else if (!path_contains_zero_cycle_arc (path)
++ else if (!path_contains_zero_or_negative_cycle_arc (path)
+ && find (blocked.begin (), blocked.end (), w) == blocked.end ())
+ loop_found |= circuit (w, path, start, blocked, block_lists, linfo,
+ count);
+@@ -780,7 +780,7 @@
+ {
+ block_info *w = arc->dst;
+ if (w < start
+- || arc->cs_count == 0
++ || arc->cs_count <= 0
+ || !linfo.has_block (w))
+ continue;
- /* poly0 and poly1 are two polynomials in the same variable,
- {a, +, b}_x * {c, +, d}_x -> {a*c, +, a*d + b*c + b*d, +, 2*b*d}_x. */
Index: gcc/tree-ssa-sccvn.c
===================================================================
---- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-6-branch)
-@@ -1224,8 +1224,8 @@
- && tem[tem.length () - 2].opcode == MEM_REF)
+--- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-9-branch)
+@@ -132,8 +132,6 @@
+ /* There's no BB_EXECUTABLE but we can use BB_VISITED. */
+ #define BB_EXECUTABLE BB_VISITED
+
+-static tree *last_vuse_ptr;
+-static vn_lookup_kind vn_walk_kind;
+ static vn_lookup_kind default_vn_walk_kind;
+
+ /* vn_nary_op hashtable helpers. */
+@@ -1678,18 +1676,33 @@
+ return NULL_TREE;
+ }
+
++struct vn_walk_cb_data
++{
++ vn_walk_cb_data (vn_reference_t vr_, tree *last_vuse_ptr_,
++ vn_lookup_kind vn_walk_kind_, bool tbaa_p_)
++ : vr (vr_), last_vuse_ptr (last_vuse_ptr_), vn_walk_kind (vn_walk_kind_),
++ tbaa_p (tbaa_p_)
++ {}
++
++ vn_reference_t vr;
++ tree *last_vuse_ptr;
++ vn_lookup_kind vn_walk_kind;
++ bool tbaa_p;
++};
++
+ /* Callback for walk_non_aliased_vuses. Adjusts the vn_reference_t VR_
+ with the current VUSE and performs the expression lookup. */
+
+ static void *
+-vn_reference_lookup_2 (ao_ref *op ATTRIBUTE_UNUSED, tree vuse, void *vr_)
++vn_reference_lookup_2 (ao_ref *op ATTRIBUTE_UNUSED, tree vuse, void *data_)
+ {
+- vn_reference_t vr = (vn_reference_t)vr_;
++ vn_walk_cb_data *data = (vn_walk_cb_data *)data_;
++ vn_reference_t vr = data->vr;
+ vn_reference_s **slot;
+ hashval_t hash;
+
+- if (last_vuse_ptr)
+- *last_vuse_ptr = vuse;
++ if (data->last_vuse_ptr)
++ *data->last_vuse_ptr = vuse;
+
+ /* Fixup vuse and hash. */
+ if (vr->vuse)
+@@ -1959,10 +1972,11 @@
+ *DISAMBIGUATE_ONLY is set to true. */
+
+ static void *
+-vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_,
++vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_,
+ bool *disambiguate_only)
+ {
+- vn_reference_t vr = (vn_reference_t)vr_;
++ vn_walk_cb_data *data = (vn_walk_cb_data *)data_;
++ vn_reference_t vr = data->vr;
+ gimple *def_stmt = SSA_NAME_DEF_STMT (vuse);
+ tree base = ao_ref_base (ref);
+ HOST_WIDE_INT offseti, maxsizei;
+@@ -1989,7 +2003,7 @@
+ get_alias_set (lhs),
+ TREE_TYPE (lhs), lhs_ops);
+ if (lhs_ref_ok
+- && !refs_may_alias_p_1 (ref, &lhs_ref, true))
++ && !refs_may_alias_p_1 (ref, &lhs_ref, data->tbaa_p))
{
- vn_reference_op_t new_mem_op = &tem[tem.length () - 2];
-- new_mem_op->op0 = fold_convert (TREE_TYPE (mem_op->op0),
-- new_mem_op->op0);
-+ new_mem_op->op0 = wide_int_to_tree (TREE_TYPE (mem_op->op0),
-+ new_mem_op->op0);
- }
- else
- gcc_assert (tem.last ().opcode == STRING_CST);
-@@ -1817,14 +1817,34 @@
- buffer, sizeof (buffer));
- if (len > 0)
+ *disambiguate_only = true;
+ return NULL;
+@@ -2005,21 +2019,21 @@
+ we find a VN result with exactly the same value as the
+ possible clobber. In this case we can ignore the clobber
+ and return the found value. */
+- if (vn_walk_kind == VN_WALKREWRITE
++ if (data->vn_walk_kind == VN_WALKREWRITE
+ && is_gimple_reg_type (TREE_TYPE (lhs))
+ && types_compatible_p (TREE_TYPE (lhs), vr->type)
+ && ref->ref)
+ {
+- tree *saved_last_vuse_ptr = last_vuse_ptr;
++ tree *saved_last_vuse_ptr = data->last_vuse_ptr;
+ /* Do not update last_vuse_ptr in vn_reference_lookup_2. */
+- last_vuse_ptr = NULL;
++ data->last_vuse_ptr = NULL;
+ tree saved_vuse = vr->vuse;
+ hashval_t saved_hashcode = vr->hashcode;
+- void *res = vn_reference_lookup_2 (ref, gimple_vuse (def_stmt), vr);
++ void *res = vn_reference_lookup_2 (ref, gimple_vuse (def_stmt), data);
+ /* Need to restore vr->vuse and vr->hashcode. */
+ vr->vuse = saved_vuse;
+ vr->hashcode = saved_hashcode;
+- last_vuse_ptr = saved_last_vuse_ptr;
++ data->last_vuse_ptr = saved_last_vuse_ptr;
+ if (res && res != (void *)-1)
{
-- tree val = native_interpret_expr (vr->type,
-+ tree type = vr->type;
-+ /* Make sure to interpret in a type that has a range
-+ covering the whole access size. */
-+ if (INTEGRAL_TYPE_P (vr->type)
-+ && ref->size != TYPE_PRECISION (vr->type))
-+ type = build_nonstandard_integer_type (ref->size,
-+ TYPE_UNSIGNED (type));
-+ tree val = native_interpret_expr (type,
- buffer
- + ((offset - offset2)
- / BITS_PER_UNIT),
- ref->size / BITS_PER_UNIT);
-+ /* If we chop off bits because the types precision doesn't
-+ match the memory access size this is ok when optimizing
-+ reads but not when called from the DSE code during
-+ elimination. */
-+ if (val
-+ && type != vr->type)
-+ {
-+ if (! int_fits_type_p (val, vr->type))
-+ val = NULL_TREE;
-+ else
-+ val = fold_convert (vr->type, val);
-+ }
-+
- if (val)
- return vn_reference_lookup_or_insert_for_pieces
-- (vuse, vr->set, vr->type, vr->operands, val);
-+ (vuse, vr->set, vr->type, vr->operands, val);
- }
+ vn_reference_t vnresult = (vn_reference_t) res;
+@@ -2072,7 +2086,9 @@
}
}
-@@ -4735,6 +4755,7 @@
- walker.walk (ENTRY_BLOCK_PTR_FOR_FN (cfun));
- if (walker.fail)
+
+- if (*disambiguate_only)
++ /* If we are looking for redundant stores do not create new hashtable
++ entries from aliasing defs with made up alias-sets. */
++ if (*disambiguate_only || !data->tbaa_p)
+ return (void *)-1;
+
+ /* If we cannot constrain the size of the reference we cannot
+@@ -2342,7 +2358,7 @@
+
+ /* 5) For aggregate copies translate the reference through them if
+ the copy kills ref. */
+- else if (vn_walk_kind == VN_WALKREWRITE
++ else if (data->vn_walk_kind == VN_WALKREWRITE
+ && gimple_assign_single_p (def_stmt)
+ && (DECL_P (gimple_assign_rhs1 (def_stmt))
+ || TREE_CODE (gimple_assign_rhs1 (def_stmt)) == MEM_REF
+@@ -2462,7 +2478,7 @@
+ *ref = r;
+
+ /* Do not update last seen VUSE after translating. */
+- last_vuse_ptr = NULL;
++ data->last_vuse_ptr = NULL;
+
+ /* Keep looking for the adjusted *REF / VR pair. */
+ return NULL;
+@@ -2470,7 +2486,7 @@
+
+ /* 6) For memcpy copies translate the reference through them if
+ the copy kills ref. */
+- else if (vn_walk_kind == VN_WALKREWRITE
++ else if (data->vn_walk_kind == VN_WALKREWRITE
+ && is_gimple_reg_type (vr->type)
+ /* ??? Handle BCOPY as well. */
+ && (gimple_call_builtin_p (def_stmt, BUILT_IN_MEMCPY)
+@@ -2620,7 +2636,7 @@
+ *ref = r;
+
+ /* Do not update last seen VUSE after translating. */
+- last_vuse_ptr = NULL;
++ data->last_vuse_ptr = NULL;
+
+ /* Keep looking for the adjusted *REF / VR pair. */
+ return NULL;
+@@ -2681,13 +2697,13 @@
{
-+ scc_vn_restore_ssa_info ();
- free_scc_vn ();
- return false;
+ ao_ref r;
+ unsigned limit = PARAM_VALUE (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS);
+- vn_walk_kind = kind;
++ vn_walk_cb_data data (&vr1, NULL, kind, true);
+ if (ao_ref_init_from_vn_reference (&r, set, type, vr1.operands))
+ *vnresult =
+- (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
++ (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse, true,
+ vn_reference_lookup_2,
+ vn_reference_lookup_3,
+- vuse_valueize, limit, &vr1);
++ vuse_valueize, limit, &data);
+ gcc_checking_assert (vr1.operands == shared_lookup_references);
}
-Index: gcc/data-streamer-out.c
-===================================================================
---- a/src/gcc/data-streamer-out.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/data-streamer-out.c (.../branches/gcc-6-branch)
-@@ -340,7 +340,6 @@
- void
- streamer_write_gcov_count_stream (struct lto_output_stream *obs, gcov_type work)
- {
-- gcc_assert (work >= 0);
- gcc_assert ((HOST_WIDE_INT) work == work);
- streamer_write_hwi_stream (obs, work);
- }
-Index: gcc/cgraphunit.c
-===================================================================
---- a/src/gcc/cgraphunit.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cgraphunit.c (.../branches/gcc-6-branch)
-@@ -1193,8 +1193,16 @@
- at looking at optimized away DECLs, since
- late_global_decl will subsequently be called from the
- contents of the now pruned symbol table. */
-- if (!decl_function_context (node->decl))
-- (*debug_hooks->late_global_decl) (node->decl);
-+ if (VAR_P (node->decl)
-+ && !decl_function_context (node->decl))
-+ {
-+ /* We are reclaiming totally unreachable code and variables
-+ so they effectively appear as readonly. Show that to
-+ the debug machinery. */
-+ TREE_READONLY (node->decl) = 1;
-+ node->definition = false;
-+ (*debug_hooks->late_global_decl) (node->decl);
-+ }
- node->remove ();
- continue;
+@@ -2702,11 +2718,12 @@
+ not exist in the hash table or if the result field of the structure
+ was NULL.. VNRESULT will be filled in with the vn_reference_t
+ stored in the hashtable if one exists. When TBAA_P is false assume
+- we are looking up a store and treat it as having alias-set zero. */
++ we are looking up a store and treat it as having alias-set zero.
++ *LAST_VUSE_PTR will be updated with the VUSE the value lookup succeeded. */
+
+ tree
+ vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind,
+- vn_reference_t *vnresult, bool tbaa_p)
++ vn_reference_t *vnresult, bool tbaa_p, tree *last_vuse_ptr)
+ {
+ vec<vn_reference_op_s> operands;
+ struct vn_reference_s vr1;
+@@ -2720,7 +2737,7 @@
+ vr1.operands = operands
+ = valueize_shared_reference_ops_from_ref (op, &valuezied_anything);
+ vr1.type = TREE_TYPE (op);
+- vr1.set = tbaa_p ? get_alias_set (op) : 0;
++ vr1.set = get_alias_set (op);
+ vr1.hashcode = vn_reference_compute_hash (&vr1);
+ if ((cst = fully_constant_vn_reference_p (&vr1)))
+ return cst;
+@@ -2737,14 +2754,12 @@
+ || !ao_ref_init_from_vn_reference (&r, vr1.set, vr1.type,
+ vr1.operands))
+ ao_ref_init (&r, op);
+- if (! tbaa_p)
+- r.ref_alias_set = r.base_alias_set = 0;
+- vn_walk_kind = kind;
++ vn_walk_cb_data data (&vr1, last_vuse_ptr, kind, tbaa_p);
+ wvnresult =
+- (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
++ (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse, tbaa_p,
+ vn_reference_lookup_2,
+ vn_reference_lookup_3,
+- vuse_valueize, limit, &vr1);
++ vuse_valueize, limit, &data);
+ gcc_checking_assert (vr1.operands == shared_lookup_references);
+ if (wvnresult)
+ {
+@@ -4099,10 +4114,8 @@
+ tree result;
+
+ last_vuse = gimple_vuse (stmt);
+- last_vuse_ptr = &last_vuse;
+ result = vn_reference_lookup (op, gimple_vuse (stmt),
+- default_vn_walk_kind, NULL, true);
+- last_vuse_ptr = NULL;
++ default_vn_walk_kind, NULL, true, &last_vuse);
+
+ /* We handle type-punning through unions by value-numbering based
+ on offset and size of the access. Be prepared to handle a
+Index: gcc/tree-ssa-sccvn.h
+===================================================================
+--- a/src/gcc/tree-ssa-sccvn.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-sccvn.h (.../branches/gcc-9-branch)
+@@ -234,7 +234,8 @@
+ tree vn_reference_lookup_pieces (tree, alias_set_type, tree,
+ vec<vn_reference_op_s> ,
+ vn_reference_t *, vn_lookup_kind);
+-tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *, bool);
++tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *, bool,
++ tree * = NULL);
+ void vn_reference_lookup_call (gcall *, vn_reference_t *, vn_reference_t);
+ vn_reference_t vn_reference_insert_pieces (tree, alias_set_type, tree,
+ vec<vn_reference_op_s> ,
Index: gcc/ChangeLog
===================================================================
---- a/src/gcc/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,1699 @@
-+2017-05-10 Richard Biener <rguenther@suse.de>
-+
-+ Backport from mainline
-+ 2017-03-17 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80075
-+ * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
-+ Properly verify the LHS before the RHS possibly claims to be
-+ handled.
-+ (stmt_could_throw_p): Hande gimple conds fully here. Clobbers
-+ do not throw.
-+
-+ 2017-03-21 Brad Spengler <spender@grsecurity.net>
-+
-+ PR plugin/80094
-+ * plugin.c (htab_hash_plugin): New function.
-+ (add_new_plugin): Use it and adjust.
-+ (parse_plugin_arg_opt): Adjust.
-+ (init_one_plugin): Likewise.
-+
-+ 2017-03-20 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80113
-+ * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
-+ allocate extra SSA name for PHI def.
-+ (add_close_phis_to_outer_loops): Likewise.
-+ (add_close_phis_to_merge_points): Likewise.
-+ (copy_loop_close_phi_args): Likewise.
-+ (copy_cond_phi_nodes): Likewise.
-+
-+ 2017-03-21 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80122
-+ * tree-inline.c (copy_bb): Do not expans va-arg packs or
-+ va_arg_pack_len when the inlined call stmt requires pack
-+ expansion itself.
-+ * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
-+
-+ 2017-03-24 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80167
-+ * graphite-isl-ast-to-gimple.c
-+ (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
-+ properly.
-+ (translate_isl_ast_to_gimple::get_rename): Likewise.
-+
-+ 2017-03-27 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80170
-+ * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
-+ sure DR/SCEV didnt fold in constants we do not see when looking
-+ at the reference base alignment.
-+
-+ 2017-03-27 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80171
-+ * gimple-fold.c (fold_ctor_reference): Properly guard against
-+ NULL return value from canonicalize_constructor_val.
-+
-+2017-05-09 Richard Biener <rguenther@suse.de>
+--- a/src/gcc/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,1246 @@
++2019-11-09 John David Anglin <danglin@gcc.gnu.org>
+
+ Backport from mainline
-+ 2017-03-28 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80222
-+ * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
-+ TYPE_REF_CAN_ALIAS_ALL references.
-+ * fold-const.c (fold_indirect_ref_1): Likewise.
-+
-+ 2017-04-06 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80262
-+ * tree-sra.c (build_ref_for_offset): Preserve address-space
-+ information.
-+ * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
-+ Drop useless address-space information on MEM_REF offsets.
-+
-+ 2017-04-03 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80275
-+ * fold-const.c (split_address_to_core_and_offset): Handle
-+ POINTER_PLUS_EXPR.
-+
-+ 2017-04-06 Richard Biener <rguenther@suse.de>
++ 2019-11-07 John David Anglin <danglin@gcc.gnu.org>
+
-+ PR tree-optimization/80334
-+ * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
-+ preserve alignment of accesses.
++ * config/pa/pa.md (memory_barrier): Revise to use ldcw barriers.
++ Enhance comment.
++ (memory_barrier_coherent, memory_barrier_64, memory_barrier_32): New
++ insn patterns using ldcw instruction.
++ (memory_barrier): Remove insn pattern using sync instruction.
++ * config/pa/pa.opt (coherent-ldcw): New option.
++ (ordered): New option.
+
-+ 2017-04-10 Richard Biener <rguenther@suse.de>
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
+
-+ PR middle-end/80362
-+ * fold-const.c (fold_binary_loc): Look at unstripped ops when
-+ looking for NEGATE_EXPR in -A / -B to A / B folding.
-+
-+ 2017-04-25 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80492
-+ * alias.c (compare_base_decls): Handle registers with asm
-+ specification conservatively.
-+
-+ 2017-04-27 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80539
-+ * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
-+ being in loop-closed SSA form conservatively.
-+ (chrec_fold_multiply_poly_poly): Likewise.
-+
-+2017-05-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR testsuite/80678
-+ 2016-06-14 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/71310
-+ PR bootstrap/71510
-+ * expr.h (get_bit_range): Declare.
-+ * expr.c (get_bit_range): Export.
-+ * fold-const.c (optimize_bit_field_compare): Use get_bit_range and
-+ word_mode again to constrain the bitfield access.
-+
-+ 2016-06-11 Segher Boessenkool <segher@kernel.crashing.org>
-+
-+ PR middle-end/71310
-+ * fold-const.c (optimize_bit_field_compare): Don't try to use
-+ word_mode unconditionally for reading the bit field, look at
-+ DECL_BIT_FIELD_REPRESENTATIVE instead.
-+
-+2017-05-05 Jakub Jelinek <jakub@redhat.com>
++ PR c++/92384
++ * function.c (assign_parm_setup_block, assign_parm_setup_stack): Don't
++ copy TYPE_EMPTY_P arguments from data->entry_parm to data->stack_parm
++ slot.
++ (assign_parms): For TREE_ADDRESSABLE parms with TYPE_EMPTY_P type
++ force creation of a unique data.stack_parm slot.
+
+ Backported from mainline
-+ 2017-04-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
-+ environment.
-+
-+ PR rtl-optimization/80501
-+ * combine.c (make_compound_operation_int): Set subreg_code to SET
-+ even for AND with mask of the sign bit of mode.
-+
-+ 2017-04-12 Jakub Jelinek <jakub@redhat.com>
++ 2019-10-31 Jakub Jelinek <jakub@redhat.com>
++
++ PR middle-end/92231
++ * tree.h (fndecl_built_in_p): Use fndecl_built_in_p instead of
++ DECL_BUILT_IN in comment. Remove redundant ()s around return
++ argument.
++ * tree.c (free_lang_data_in_decl): Check if var is FUNCTION_DECL
++ before calling fndecl_built_in_p.
++ * gimple-fold.c (gimple_fold_stmt_to_constant_1): Check if
++ TREE_OPERAND (fn, 0) is a FUNCTION_DECL before calling
++ fndecl_built_in_p on it.
++
++ PR c++/90947
++ * tree.h (type_initializer_zero_p): Remove.
++ * tree.c (type_initializer_zero_p): Remove.
++
++ 2019-10-29 Jakub Jelinek <jakub@redhat.com>
++
++ * doc/install.texi (--enable-offload-targets): Fix up a typo in the
++ example, use actual names of supported offload targets.
++
++2019-11-08 Eric Botcazou <ebotcazou@adacore.com>
++
++ PR target/92095
++ * config/sparc/sparc-protos.h (output_load_pcrel_sym): Declare.
++ * config/sparc/sparc.c (sparc_cannot_force_const_mem): Revert latest
++ change.
++ (got_helper_needed): New static variable.
++ (output_load_pcrel_sym): New function.
++ (get_pc_thunk_name): Remove after inlining...
++ (load_got_register): ...here. Rework the initialization of the GOT
++ register and of the GOT helper.
++ (save_local_or_in_reg_p): Test the REGNO of the GOT register.
++ (sparc_file_end): Test got_helper_needed to decide whether the GOT
++ helper must be emitted. Use output_asm_insn instead of fprintf.
++ (sparc_init_pic_reg): In PIC mode, always initialize the PIC register
++ if optimization is enabled.
++ * config/sparc/sparc.md (load_pcrel_sym<P:mode>): Emit the assembly
++ by calling output_load_pcrel_sym.
++
++2019-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
+
-+ PR sanitizer/80349
-+ * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
-+ first argument to type.
-+
-+ 2017-04-11 Jakub Jelinek <jakub@redhat.com>
++ Backport from mainline
++ * config/s390/s390.c (s390_canonicalize_comparison): Use XEXP
++ (*op0, 1) instead of XEXP (*op1, 0).
+
-+ PR rtl-optimization/80385
-+ * simplify-rtx.c (simplify_unary_operation_1): Don't transform
-+ (not (neg X)) into (plus X -1) for complex or non-integral modes.
++2019-11-05 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ PR libgomp/80394
-+ * omp-low.c (scan_omp_task): Don't optimize away empty tasks
-+ if they have any depend clauses.
++ Backport from trunk
++ 2019-10-24 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ 2017-04-04 Jakub Jelinek <jakub@redhat.com>
-+ Richard Biener <rguenther@suse.de>
++ * config/rs6000/altivec.md (altivec_vavgu<VI_char>): Rename to...
++ (uavg<mode>3_ceil): ... This.
++ (altivec_vavgs<VI_char>): Rename to...
++ (avg<mode>3_ceil): ... This.
++ * config/rs6000/rs6000-builtin.def (VAVGUB, VAVGSB, VAVGUH, VAVGSH,
++ VAVGUW, VAVGSW): Adjust.
+
-+ PR c++/80297
-+ * genmatch.c (capture::gen_transform): For GENERIC unshare_expr
-+ captures used multiple times, except for the last use.
-+ * generic-match-head.c: Include gimplify.h.
++2019-11-05 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ 2017-04-04 Jakub Jelinek <jakub@redhat.com>
++ Backport from trunk
++ 2019-10-26 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ PR target/80286
-+ * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
-+ int mode, convert_modes it to mode as unsigned, otherwise use
-+ lowpart_subreg to mode rather than SImode.
-+ * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
-+ ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
-+ Use DImode instead of SImode for the shift count operand.
-+ * config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
-+ Likewise.
++ PR target/91289
++ * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't add an
++ immediate to r0; use r11 instead. Save and restore r11 to r0 around
++ this.
+
-+ 2017-04-13 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR debug/80321
-+ * dwarf2out.c (decls_for_scope): Ignore declarations of
-+ current_function_decl in BLOCK_NONLOCALIZED_VARS.
-+
-+ 2017-03-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR debug/79255
-+ * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
-+ a FUNCTION_DECL, pass it as decl instead of origin to
-+ process_scope_var.
-+
-+ PR debug/80025
-+ * cselib.c (cselib_hasher::equal): Pass 0 to rtx_equal_for_cselib_1.
-+ (rtx_equal_for_cselib_1): Add depth argument. If depth
-+ is 128, don't look up VALUE locs and punt. Increment
-+ depth in recursive calls when walking VALUE locs.
-+
-+ 2017-03-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR sanitizer/80168
-+ * asan.c (instrument_derefs): Copy over last operand from
-+ original COMPONENT_REF to the new COMPONENT_REF with
-+ DECL_BIT_FIELD_REPRESENTATIVE.
-+ * ubsan.c (instrument_object_size): Likewise.
-+
-+ 2017-03-24 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR rtl-optimization/80112
-+ * loop-doloop.c (doloop_condition_get): Don't check condition
-+ if cmp isn't SET with IF_THEN_ELSE src.
-+
-+ 2017-03-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/80129
-+ * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
-+ TREE_READONLY on result if writing it more than once.
-+
-+ 2017-03-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR sanitizer/79944
-+ * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
-+ BUILT_IN_SYNC*, determine the access type from the size suffix and
-+ always build a MEM_REF with that type. Handle forgotten
-+ BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
-+
-+ PR target/79932
-+ * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
-+ _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
-+ _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
-+ _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
-+ _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
-+ _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
-+ _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
-+ _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
-+ _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
-+ _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
-+ _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
-+ _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
-+ _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
-+ _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
-+ _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
-+ _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
-+ _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
-+ _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
-+ _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
-+ _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
-+ _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
-+ _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
-+ _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
-+ _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
-+ _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
-+ _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
-+ _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
-+ _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
-+ _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
-+ _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
-+ definitions outside of __OPTIMIZE__ guarded section.
-+
-+ PR target/79932
-+ * config/i386/avx512bwintrin.h (_mm512_packs_epi32,
-+ _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
-+ _mm512_packus_epi32, _mm512_maskz_packus_epi32,
-+ _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
-+ guarded section.
-+
-+ 2017-03-08 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c/79940
-+ * gimplify.c (gimplify_omp_for): Replace index var in outer
-+ taskloop statement with an artificial variable and add
-+ OMP_CLAUSE_PRIVATE clause for it.
-+
-+ 2017-03-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR rtl-optimization/79901
-+ * config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
-+ ...
-+ (*avx512f_<code><mode>3<mask_name>): ... this.
-+ (<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
-+ iterator instead of VI8_AVX2_AVX512BW.
-+
-+ PR rtl-optimization/79901
-+ * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
-+ min/max expander, expand it using expand_vec_cond_expr.
-+
-+ 2017-03-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79807
-+ * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
-+ is a memory operand, increase num_memory.
-+ (ix86_expand_args_builtin): Likewise.
-+
-+ 2017-03-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/79681
-+ * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
-+ attempt to use its first operand as BIT_FIELD_REF base.
-+
-+ 2017-02-28 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79729
-+ * config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
-+ gcc_unreachable with output_operand_lossage.
-+
-+ 2017-02-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR middle-end/79396
-+ * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
-+ FMA_EXPR like tcc_binary or tcc_unary.
-+
-+ 2017-02-21 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79570
-+ * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
-+ on temporarily removed DEBUG_INSNs.
-+
-+ PR target/79494
-+ * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
-+ make_reg_eh_region_note_nothrow_nononlocal on call_insn.
-+ * config/rs6000/rs6000.c: Include except.h.
-+ (rs6000_expand_split_stack_prologue): Call
-+ make_reg_eh_region_note_nothrow_nononlocal on the call insn.
-+
-+ 2017-02-20 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79568
-+ * config/i386/i386.c (ix86_expand_builtin): Handle
-+ OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
-+ ix86_builtins_isa[fcode].isa as a requirement of those
-+ flags and any other flag in the bitmask.
-+ (ix86_init_mmx_sse_builtins): Use 0 instead of
-+ ~OPTION_MASK_ISA_64BIT as mask.
-+ * config/i386/i386-builtin.def (bdesc_special_args,
-+ bdesc_args): Likewise.
-+
-+ 2017-02-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79559
-+ * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
-+ instead of gcc_assert for K, r and R code checks. Formatting fixes.
-+
-+2017-05-05 Marek Polacek <polacek@redhat.com>
-+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
-+ Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/77728
-+ * config/arm/arm.c: Include gimple.h.
-+ (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
-+ returns negative, increment ncrn if it returned non-zero.
-+ (arm_needs_doubleword_align): Return int instead of bool,
-+ ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
-+ members, but if there is any such non-FIELD_DECL
-+ > PARM_BOUNDARY aligned decl, return -1 instead of false.
-+ (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
-+ returns negative, increment nregs if it returned non-zero.
-+ (arm_setup_incoming_varargs): Likewise.
-+ (arm_function_arg_boundary): Emit -Wpsabi note if
-+ arm_needs_doubleword_align returns negative, return
-+ DOUBLEWORD_ALIGNMENT if it returned non-zero.
-+
-+2017-05-03 Uros Bizjak <ubizjak@gmail.com>
++2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-05-01 Uros Bizjak <ubizjak@gmail.com>
++ 2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
-+ PR target/68491
-+ * config/i386/cpuid.h (__get_cpuid): Always return 0 when
-+ __get_cpuid_max returns 0.
-+ (__get_cpuid_count): Ditto.
++ * config/s390/s390.c (s390_vector_alignment): Check if the value
++ fits into uhwi before using it.
+
-+2017-04-21 Eric Botcazou <ebotcazou@adacore.com>
++2019-11-01 John David Anglin <danglin@gcc.gnu.org>
+
+ Backport from mainline
-+ 2017-04-19 Eric Botcazou <ebotcazou@adacore.com>
-+ Jakub Jelinek <jakub@redhat.com>
-+
-+ PR tree-optimization/80426
-+ * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
-+ operation on symbolic operands, also compute the overflow for the
-+ invariant part when the operation degenerates into a negation.
++ 2019-10-03 John David Anglin <danglin@gcc.gnu.org>
+
-+2017-04-19 Georg-Johann Lay <avr@gjlay.de>
++ * config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence.
++ (pa_attr_length_call): Adjust length for 64-bit plabel sequence.
+
-+ Backport from 2017-04-19 trunk r246997.
++2019-11-01 John David Anglin <danglin@gcc.gnu.org>
+
-+ PR target/80462
-+ * config/avr/avr.c (tree.h): Include it.
-+ (cgraph.h): Include it.
-+ (avr_encode_section_info): Don't warn for uninitialized progmem
-+ variable if it's just an alias.
-+
-+2017-04-18 Georg-Johann Lay <avr@gjlay.de>
-+
-+ Backport from 2017-04-18 trunk r246966.
++ Backport from mainline
++ 2019-10-03 John David Anglin <danglin@gcc.gnu.org>
+
-+ PR target/79453
-+ * config/avr/avr.c (intl.h): Include it.
-+ (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
++ * config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust.
+
-+2017-04-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-04-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ 2019-10-13 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR target/80376
-+ PR target/80315
-+ * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
-+ CONST0_RTX (mode) rather than const0_rtx where appropriate.
-+ (rs6000_expand_binop_builtin): Likewise.
-+ (rs6000_expand_ternop_builtin): Likewise; also add missing
-+ vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
-+ vshasigma built-ins.
-+ * doc/extend.texi: Document that vec_xxpermdi's third argument
-+ must be a constant.
++ * config/darwin.c (machopic_indirection_name): Rework the
++ function to emit linker-visible symbols only for indirections
++ in the data section. Clean up the code and update comments.
+
-+2017-04-11 Pat Haugen <pthaugen@us.ibm.com>
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-04-07 Pat Haugen <pthaugen@us.ibm.com>
++ 2019-10-09 Iain Sandoe <iain@sandoe.co.uk>
+
-+ * rs6000/rs6000.c (vec_load_pendulum): Rename...
-+ (vec_pairing): ...to this.
-+ (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
-+ (rs6000_sched_init): Adjust for name change.
-+ (struct rs6000_sched_context): Likewise.
-+ (rs6000_init_sched_context): Likewise.
-+ (rs6000_set_sched_context): Likewise.
-+
-+2017-04-11 Martin Jambor <mjambor@suse.cz>
++ * config/darwin.c (darwin_override_options): Make the check for
++ Objective-C ABI version more specific for 64bit code.
+
+ Backport from mainline
-+ 2017-03-30 Martin Jambor <mjambor@suse.cz>
++ 2019-10-06 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR ipa/77333
-+ * cgraph.h (cgraph_build_function_type_skip_args): Declare.
-+ * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
-+ it reflects the signature changes performed at the callee side.
-+ * cgraphclones.c (build_function_type_skip_args): Make public, renamed
-+ to cgraph_build_function_type_skip_args.
-+ (build_function_decl_skip_args): Adjust call to the above function.
++ * config/darwin.c (darwin_override_options): Adjust objective-c
++ ABI version error messages to avoid punctuation and contracted
++ negations.
+
-+2017-04-08 Andreas Tobler <andreast@gcc.gnu.org>
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-04-08 Andreas Tobler <andreast@gcc.gnu.org>
++ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk>
+
-+ * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
-+ Add comment for WCHAR_T.
++ * config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin.
++ (STARTFILE_SPEC): Split crt3 into a separate spec.
++ (DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec.
++ (DARWIN_CRT2_SPEC): New.
++ (DARWIN_CRT3_SPEC): New.
++ (MIN_LD64_OMIT_STUBS): Revise to 62.1.
++ * config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions.
++ (DARWIN_CRT3_SPEC): New.
+
-+2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
-+
-+ * config/aarch64/aarch64-freebsd.h: Define WCHAR_T.
++ 2019-06-27 Iain Sandoe <iain@sandoe.co.uk>
+
-+2017-04-07 Eric Botcazou <ebotcazou@adacore.com>
++ * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the
++ spec.
+
+ Backport from mainline
-+ 2017-04-05 Eric Botcazou <ebotcazou@adacore.com>
++ 2019-06-25 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR target/78002
-+ * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
-+ ptr_mode with Pmode throughout.
-+ * config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
-+ into probe_stack_range and use DImode.
++ * config/rs6000/darwin.h (ENDFILE_SPEC): New.
+
-+2017-04-07 Sebastian Huber <sebastian.huber@embedded-brains.de>
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-04-07 Sebastian Huber <sebastian.huber@embedded-brains.de>
++ 2019-06-18 Iain Sandoe <iain@sandoe.co.uk>
+
-+ * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
-+ definition.
-+ * config/arm/arm.c (arm_default_short_enums): Use
-+ ARM_DEFAULT_SHORT_ENUMS.
-+ * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
++ * config/darwin.c (darwin_emit_unwind_label): New.
++ (darwin_override_options): Set darwin_emit_unwind_label as needed.
+
-+2017-04-06 Uros Bizjak <ubizjak@gmail.com>
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-04-06 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR target/79733
-+ * config/i386/i386.c (ix86_expand_builtin)
-+ <case IX86_BUILTIN_KORTEST{C,Z}16>: Determine insn operand
-+ mode from insn data. Convert operands to insn operand mode.
-+ Copy operands that don't satisfy insn predicate to a register.
++ 2019-08-13 Iain Sandoe <iain@sandoe.co.uk>
++
++ * config/darwin.c (machopic_indirect_call_target): Rename symbol stub
++ flag.
++ (darwin_override_options): Likewise.
++ * config/darwin.h: Likewise.
++ * config/darwin.opt: Likewise.
++ * config/i386/i386.c (output_pic_addr_const): Likewise.
++ * config/rs6000/darwin.h: Likewise.
++ * config/rs6000/rs6000.c (rs6000_call_darwin_1): Likewise.
++ * config/i386/darwin.h (TARGET_MACHO_PICSYM_STUBS): Rename to ...
++ ... this TARGET_MACHO_SYMBOL_STUBS.
++ (FUNCTION_PROFILER):Likewise.
++ * config/i386/i386.h: Likewise.
+
-+ 2017-04-05 Uros Bizjak <ubizjak@gmail.com>
++ Backport from mainline
++ 2019-06-16 Iain Sandoe <iain@sandoe.co.uk>
++
++ * config/darwin.c (machopic_indirect_call_target): Use renamed
++ darwin_picsymbol_stubs to decide on output.
++ (darwin_override_options): Handle darwin_picsymbol_stubs.
++ * config/darwin.h (MIN_LD64_OMIT_STUBS): New.
++ (LD64_VERSION): Revise default.
++ * config/darwin.opt: (mpic-symbol-stubs): New option.
++ (darwin_picsymbol_stubs): New variable.
++ * config/i386/darwin.h (TARGET_MACHO_BRANCH_ISLANDS):
++ rename to TARGET_MACHO_PICSYM_STUBS.
++ * config/i386/i386.c (output_pic_addr_const): Likewise.
++ * config/i386/i386.h Likewise.
++ * config/rs6000/darwin.h: Likewise.
++ * config/rs6000/rs6000.c (rs6000_call_darwin_1): Use renamed
++ darwin_picsymbol_stubs.
++
++2019-10-30 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ PR target/80298
-+ * config/i386/mmintrin.h: Add -msse target option when __SSE__ is
-+ not defined for x86_64 target. Add -mmmx target option when __SSE2__
-+ is not defined.
-+ * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
-+ for x86_64 target.
++ Backport from mainline
++ 2019-07-09 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+2017-04-06 Thomas Preud'homme <thomas.preudhomme@arm.com>
++ * cfgcleanup.c (old_insns_match_p): Check if used hard regs set is equal
++ for both call instructions.
+
-+ PR target/80082
-+ * config/arm/arm-protos.h (FL_LPAE): Define macro.
-+ (FL_FOR_ARCH7VE): Add FL_LPAE.
-+ (arm_arch_lpae): Declare extern.
-+ * config/arm/arm.c (arm_arch_lpae): Declare.
-+ (arm_option_override): Define arm_arch_lpae.
-+ * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
-+ arm_arch_lpae.
++2019-10-30 Thomas Schwinge <thomas@codesourcery.com>
+
-+2017-04-03 Michael Meissner <meissner@linux.vnet.ibm.com>
++ Backport from trunk:
+
-+ Back port from the trunk
-+ 2017-03-14 Michael Meissner <meissner@linux.vnet.ibm.com>
++ 2019-05-06 Richard Biener <rguenther@suse.de>
+
-+ PR target/79947
-+ * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
-+ -mpowerpc-gfxopt.
++ * dwarf2out.c (mem_loc_descriptor): Initialize int_mode.
+
-+2017-03-31 Richard Sandiford <richard.sandiford@arm.com>
++2019-10-28 Uroš Bizjak <ubizjak@gmail.com>
+
-+ PR tree-optimization/80218
-+ * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
-+ Update block frequencies and counts.
++ PR target/92225
++ * config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE4_2
++ condition for V2DImode.
+
-+2017-03-30 Peter Bergner <bergner@vnet.ibm.com>
++2019-10-28 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-03-30 Peter Bergner <bergner@vnet.ibm.com>
-+
-+ PR target/80246
-+ * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
-+ (dfp_diex_<mode>): Update mode of operand 1.
-+ * doc/extend.texi (dxex, dxexq): Document change to return type.
-+ (diex, diexq): Document change to argument type.
-+
-+2017-03-29 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ Back port from trunk
-+ 2017-03-21 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
-+
-+ PR target/80123
-+ * doc/md.texi (Constraints): Document wA constraint.
-+ * config/rs6000/constraints.md (wA): New.
-+ * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
-+ (rs6000_init_hard_regno_mode_ok): Init wA constraint.
-+ * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
-+ * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
-+
-+ 2017-03-16 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ PR target/71294
-+ * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
-+ SPLAT operation on ISA 2.07 64-bit systems that have direct move,
-+ but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
-+
-+2017-03-29 Richard Biener <rguenther@suse.de>
++ PR rtl-optimization/92007
++ * cfgcleanup.c (thread_jump): Add an assertion that we don't
++ call it after reload if hot/cold partitioning has been done.
++ (class pass_postreload_jump): Rename to
++ pass_jump_after_combine.
++ (make_pass_postreload_jump): Rename to
++ make_pass_jump_after_combine.
++ * passes.def(pass_postreload_jump): Move before reload, rename
++ to pass_jump_after_combine.
++ * tree-pass.h (make_pass_postreload_jump): Rename to
++ make_pass_jump_after_combine.
++
++2019-10-28 Peter Bergner <bergner@linux.ibm.com>
++ Jiufu Guo <guojiufu@linux.ibm.com>
++
++ PR target/70010
++ * config/rs6000/rs6000.c (rs6000_can_inline_p): Prohibit inlining if
++ the callee explicitly disables some isa_flags the caller is using.
++
++2019-10-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-03-28 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/78644
-+ * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
-+ of a simplification result we may not use it at all.
++ 2019-10-17 Iain Sandoe <iain@sandoe.co.uk>
+
-+ 2017-03-27 Richard Biener <rguenther@suse.de>
++ PR target/65342
++ * config/rs6000/darwin.md (movdi_low, movsi_low_st): Delete.
++ (movdi_low_st): Delete.
++ * config/rs6000/rs6000.c
++ (darwin_rs6000_legitimate_lo_sum_const_p): New.
++ (mem_operand_gpr): Validate Mach-O LO_SUM cases separately.
++ * config/rs6000/rs6000.md (movsi_low): Delete.
+
-+ PR tree-optimization/80181
-+ * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
-+
-+2017-03-28 Marek Polacek <polacek@redhat.com>
++2019-10-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-03-28 Marek Polacek <polacek@redhat.com>
-+
-+ PR sanitizer/80067
-+ * fold-const.c (fold_comparison): Use protected_set_expr_location
-+ instead of SET_EXPR_LOCATION.
-+
-+2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ Back port from trunk
-+ 2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ PR target/78543
-+ * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
-+ HImode and SImode with zero extend to DImode to one insn.
-+ (bswap<mode>2_extenddi): Likewise.
-+ (bswapsi2_extenddi): Likewise.
-+ (bswaphi2_extendsi): Likewise.
-+ (bswaphi2): Combine bswap HImode and SImode into one insn.
-+ Separate memory insns from swapping register.
-+ (bswapsi2): Likewise.
-+ (bswap<mode>2): Likewise.
-+ (bswaphi2_internal): Delete, no longer used.
-+ (bswapsi2_internal): Likewise.
-+ (bswap<mode>2_load): Split bswap HImode/SImode into separate load,
-+ store, and gpr<-gpr swap insns.
-+ (bswap<mode>2_store): Likewise.
-+ (bswaphi2_reg): Register only splitter, combine with the splitter.
-+ (bswaphi2 splitter): Likewise.
-+ (bswapsi2_reg): Likewise.
-+ (bswapsi2 splitter): Likewise.
-+ (bswapdi2): If we have the LDBRX and STDBRX instructions, split
-+ the insns into load, store, and register/register insns.
-+ (bswapdi2_ldbrx): Likewise.
-+ (bswapdi2_load): Likewise.
-+ (bswapdi2_store): Likewise.
-+ (bswapdi2_reg): Likewise.
-+
-+2017-03-25 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR target/80180
-+ * config/i386/i386.c (ix86_expand_builtin)
-+ <IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
-+ flags reg setting and flags reg using instructions.
-+ <IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto. Use non-flags reg
-+ clobbering instructions to zero extend op2.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-12 Iain Sandoe <iain@sandoe.co.uk>
++
++ PR target/67183
++ * config/darwin.c (machopic_indirection): New field to flag
++ non-lazy-symbol-pointers in the data section.
++ (machopic_indirection_name): Compute if an indirection should
++ appear in the data section.
++ (machopic_output_data_section_indirection): New callback split
++ from machopic_output_indirection.
++ (machopic_output_stub_indirection): Likewise.
++ (machopic_output_indirection): Retain the code for non-lazy
++ symbol pointers in their regular section.
++ (machopic_finish): Use the new callbacks to order the indirection
++ output.
++
++2019-10-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-03-14 Martin Liska <mliska@suse.cz>
-+
-+ PR lto/66295
-+ * multiple_target.c (expand_target_clones): Drop local.local
-+ flag for default implementation.
++ 2019-10-12 Iain Sandoe <iain@sandoe.co.uk>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ * config/darwin-protos.h (machopic_finish): Delete.
++ * config/darwin.c (machopic_finish): Make static.
+
+ Backport from mainline
-+ 2017-02-22 Martin Liska <mliska@suse.cz>
-+
-+ PR lto/79587
-+ * data-streamer-in.c (streamer_read_gcov_count): Remove assert.
-+ * data-streamer-out.c (streamer_write_gcov_count_stream):
-+ Likewise.
-+ * value-prof.c (stream_out_histogram_value): Make assert more
-+ precise based on type of counter.
++ 2019-10-09 Iain Sandoe <iain@sandoe.co.uk>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ * config/darwin.c (machopic_indirect_data_reference): Set flag to
++ indicate that the new symbol is an indirection.
++ (machopic_indirect_call_target): Likewise.
++ * config/darwin.h (MACHO_SYMBOL_FLAG_INDIRECTION): New.
++ (MACHO_SYMBOL_INDIRECTION_P): New.
++ (MACHO_SYMBOL_FLAG_STATIC): Adjust bit number.
+
+ Backport from mainline
-+ 2017-02-03 Martin Liska <mliska@suse.cz>
-+
-+ PR lto/66295
-+ * multiple_target.c (create_dispatcher_calls): Redirect edge
-+ from a caller of a dispatcher.
-+ (expand_target_clones): Make the clones local.
-+ (ipa_target_clone): Do both target clones and resolvers.
-+ (ipa_dispatcher_calls): Remove the pass.
-+ (pass_dispatcher_calls::gate): Likewise.
-+ (make_pass_dispatcher_calls): Likewise.
-+ * passes.def (pass_target_clone): Put as very first IPA early
-+ pass.
++ 2019-10-08 Iain Sandoe <iain@sandoe.co.uk>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ * config/darwin.c (machopic_indirect_data_reference): Check for
++ required indirections before making direct access to defined
++ values.
++ (machopic_output_indirection): Place the indirected pointes for
++ required indirections into the non-lazy symbol pointers section.
++ (darwin_encode_section_info):
++ * config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New.
++ (MACHO_SYMBOL_MUST_INDIRECT_P): New.
+
+ Backport from mainline
-+ 2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR target/79906
-+ * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
-+ error message instead of an ICE.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ * config/darwin.c (machopic_output_indirection): Don't put
++ hidden symbol indirections into the .data section, use the
++ non-lazy symbol pointers section as normal.
++ (darwin_encode_section_info): Record if a symbol is hidden.
++ * config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
++ (MACHO_SYMBOL_HIDDEN_VIS_P): New.
+
+ Backport from mainline
-+ 2017-03-21 Martin Liska <mliska@suse.cz>
-+
-+ PR gcov-profile/80081
-+ * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
-+ * doc/gcc.texi: Include gcov-dump stuff.
-+ * doc/gcov-dump.texi: New file.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
++
++ * config/darwin.c (machopic_symbol_defined_p): Use symbol flag
++ predicates instead of accessing bits directly.
++ (machopic_indirect_call_target): Likewise.
++ (machopic_output_indirection): Likewise.
++ (darwin_encode_section_info): Improve description. Use renamed
++ symbol flags. Use predicate macros for variables and functions.
++ * config/darwin.h:
++ Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
++ Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
++ Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
++ (MACHO_SYMBOL_VARIABLE_P): New.
++ (MACHO_SYMBOL_DEFINED_P):New.
++ (MACHO_SYMBOL_STATIC_P): New.
++ * config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
++ (SYMBOL_FLAG_SUBT_DEP): New.
++ * config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
++
++2019-10-25 Jan Hubicka <hubicka@ucw.cz>
+
+ Backport from mainline
-+ 2017-03-20 Martin Liska <mliska@suse.cz>
-+
-+ PR middle-end/79753
-+ * tree-chkp.c (chkp_build_returned_bound): Do not build
-+ returned bounds for a LHS that's not a BOUNDED_P type.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-11 Jan Hubicka <hubicka@ucw.cz>
++ * gimple-streamer-out.c (output_gimple_stmt): Add explicit function
++ parameter.
++ * lto-streamer-out.c: Include tree-dfa.h.
++ (output_cfg): Do not use cfun.
++ (lto_prepare_function_for_streaming): New.
++ (output_function): Do not push cfun; do not initialize loop optimizer.
++ * lto-streamer.h (lto_prepare_function_for_streaming): Declare.
++ * passes.c (ipa_write_summaries): Use it.
++ (ipa_write_optimization_summaries): Do not modify bodies.
++ * tree-dfa.c (renumber_gimple_stmt_uids): Add function parameter.
++ * tree.dfa.h (renumber_gimple_stmt_uids): Update prototype.
++ * tree-ssa-dse.c (pass_dse::execute): Update use of
++ renumber_gimple_stmt_uids.
++ * tree-ssa-math-opts.c (pass_optimize_widening_mul::execute): Likewise.
++
++ 2019-10-12 Jan Hubicka <hubicka@ucw.cz>
++ * lto-streamer-out.c (collect_block_tree_leafs): Renumber statements
++ so non-virutal are before virutals.
++ (output_function): Avoid body modifications.
++
++2019-10-25 Richard Earnshaw <rearnsha@arm.com>
+
+ Backport from mainline
-+ 2017-03-20 Martin Liska <mliska@suse.cz>
++ 2019-05-08 Mihail Ionescu <mihail.ionescu@arm.com>
++ Richard Earnshaw <rearnsha@arm.com>
++ PR target/88167
++ * config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New
++ function.
++ (thumb1_epilogue_unused_call_clobbered_lo_regs): New function.
++ (thumb1_compute_save_core_reg_mask): Don't force a spare work
++ register if both the epilogue and prologue can use call-clobbered
++ regs.
++ (thumb1_unexpanded_epilogue): Use
++ thumb1_epilogue_unused_call_clobbered_lo_regs. Reverse the logic for
++ picking temporaries for restoring high regs to match that of the
++ prologue where possible.
++ (thumb1_expand_prologue): Add any usable call-clobbered low registers to
++ the list of work registers. Detect if the return address is still live
++ at the end of the prologue and avoid using it for a work register if so.
++ If the return address is not live, add LR to the list of pushable regs
++ after the first pass.
++
++2019-10-25 Jan Hubicka <hubicka@ucw.cz>
+
-+ PR target/79769
-+ PR target/79770
-+ * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
-+ COMPLEX_CST and VECTOR_CST.
++ Backport from mainline
++ 2019-10-24 Jan Hubicka <hubicka@ucw.cz>
++ * symbols-summary.h (fast_function_summary<T *, V>::release,
++ fast_call_summary<T *, V>::release): Free m_vector.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-25 Jan Hubicka <hubicka@ucw.cz>
+
+ Backport from mainline
-+ 2017-03-14 Martin Liska <mliska@suse.cz>
+
-+ PR middle-end/79831
-+ * doc/invoke.texi (-Wchkp): Document the option.
++ 2019-10-18 Jakub Jelinek <jakub@redhat.com>
++ PR middle-end/92153
++ * ggc-page.c (release_pages): Read g->alloc_size before free rather
++ than after it.
++
++ 2019-10-11 Jan Hubicka <hubicka@ucw.cz>
++ * ggc-page.c (release_pages): Output statistics when !quiet_flag.
++ (ggc_collect): Dump later to not interfere with release_page dump.
++ (ggc_trim): New function.
++ * ggc-none.c (ggc_trim): New.
++ * ggc.h (ggc_trim): Declare.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-24 Mihail Ionescu <mihail.ionescu@arm.com>
+
+ Backport from mainline
-+ 2017-03-14 Martin Liska <mliska@suse.cz>
++ 2019-10-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
-+ PR target/79892
-+ * multiple_target.c (create_dispatcher_calls): Check that
-+ a target can create a function dispatcher.
++ * config/arm/t-multilib: Add new multilib variants and new
++ mappings.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-24 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-03-13 Martin Liska <mliska@suse.cz>
++ 2019-10-23 Iain Sandoe <iain@sandoe.co.uk>
++ * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard
++ against out of range max skip or log values.
+
-+ PR middle-end/78339
-+ * ipa-pure-const.c (warn_function_noreturn): If the declarations
-+ is a CHKP clone, use original declaration.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Peter Bergner <bergner@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-03-10 Martin Liska <mliska@suse.cz>
++ 2019-10-08 Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
+
-+ PR target/65705
-+ PR target/69804
-+ * toplev.c (process_options): Enable MPX with LSAN and UBSAN.
-+ * tree-chkp.c (chkp_walk_pointer_assignments): Verify that
-+ FIELD != NULL.
++ * config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
++ LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
++ MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
-+
-+ PR tree-optimization/79631
-+ * tree-chkp-opt.c (chkp_is_constant_addr): Call
-+ tree_int_cst_sign_bit just for INTEGER constants.
++ 2019-09-26 Martin Liska <mliska@suse.cz>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ PR tree-optimization/91885
++ * tree-vectorizer.c (try_vectorize_loop_1):
++ Add TODO_update_ssa_only_virtuals similarly to what slp
++ pass does.
+
-+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
++2019-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
-+ PR target/65705
-+ PR target/69804
-+ * toplev.c (process_options): Disable -fcheck-pointer-bounds with
-+ sanitizers.
++ PR tree-optimization/92131
++ * tree-vrp.c (extract_range_from_plus_minus_expr): If the resulting
++ range would be symbolic, drop to varying for any explicit overflow
++ in the constant part or if neither range is a singleton.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
++ 2019-10-17 Richard Biener <rguenther@suse.de>
+
-+ PR ipa/79761
-+ * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
-+ (chkp_find_bounds_1): Remove gcc_unreachable.
++ PR debug/91887
++ * dwarf2out.c (gen_formal_parameter_die): Also try to match
++ context_die against a DW_TAG_GNU_formal_parameter_pack parent.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2017-03-03 Jan Hubicka <jh@suse.cz>
++ Backported from mainline
++ 2019-10-17 Jakub Jelinek <jakub@redhat.com>
+
-+ PR lto/79760
-+ * ipa-devirt.c (maybe_record_node): Properly handle
-+ __cxa_pure_virtual visibility.
++ PR tree-optimization/92056
++ * tree-object-size.c (cond_expr_object_size): Return early if then_
++ processing resulted in unknown size.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-05 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2017-03-03 Martin Liska <mliska@suse.cz>
++ PR tree-optimization/91734
++ * generic-match-head.c: Include fold-const-call.h.
++ * match.pd (sqrt(x) cmp c): Check the boundary value and
++ in case inexact computation of c*c affects comparison of the boundary,
++ turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR
++ or GT_EXPR into GE_EXPR. Punt for sqrt comparisons against NaN and
++ for -frounding-math. For c2, try the next smaller or larger floating
++ point constant depending on comparison code and if it has the same
++ sqrt as c2, use it instead of c2.
+
-+ PR tree-optimization/79803
-+ * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
-+ assert.
-+ (pass_loop_prefetch::execute): Disabled optimization if an
-+ assumption about L1 cache size is not met.
++ 2019-09-29 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ PR bootstrap/90543
++ * optc-save-gen.awk: Fix up printing string option differences.
+
-+ Backport from mainline
-+ 2017-03-03 Martin Liska <mliska@suse.cz>
++ 2019-09-27 Jakub Jelinek <jakub@redhat.com>
+
-+ PR rtl-optimization/79574
-+ * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
-+ (hash_scan_set): Likewise.
-+ (dump_hash_table): Likewise.
-+ (hoist_code): Likewise.
++ PR middle-end/91920
++ * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL
++ variables as shared.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-09-11 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2017-02-17 Martin Liska <mliska@suse.cz>
-+
-+ PR rtl-optimization/79574
-+ * gcse.c (want_to_gcse_p): Prevent integer overflow.
++ PR tree-optimization/91723
++ * tree-vect-stmts.c (vectorizable_call): Use types_compatible_p check
++ instead of pointer equality when checking if argument vectypes are
++ the same.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-09-07 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2017-02-17 Martin Liska <mliska@suse.cz>
++ PR tree-optimization/91665
++ * tree-vect-loop.c (vectorizable_reduction): Punt if base has type
++ incompatible with the type of PHI result.
+
-+ PR rtl-optimization/79577
-+ * params.def (selsched-max-sched-times): Increase minimum to 1.
++ 2019-09-06 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ * function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P
++ before testing TYPE_TRANSPARENT_AGGR.
++ * calls.c (initialize_argument_information, load_register_parameters):
++ Likewise.
+
-+ Backport from mainline
-+ 2016-06-13 Martin Liska <mliska@suse.cz>
++ 2019-09-05 Jakub Jelinek <jakub@redhat.com>
+
-+ PR sanitizer/71458
-+ * toplev.c (process_options): Do not enable -fcheck-pointer-bounds
-+ w/ -fsanitize=bounds.
++ PR middle-end/91001
++ PR middle-end/91105
++ PR middle-end/91106
++ * calls.c (load_register_parameters): For TYPE_TRANSPARENT_AGGR
++ types, use type of their first field instead of type of
++ args[i].tree_value.
+
-+2017-03-21 Pat Haugen <pthaugen@us.ibm.com>
++ 2019-09-02 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline:
-+ 2017-03-17 Pat Haugen <pthaugen@us.ibm.com>
++ PR go/91617
++ * fold-const.c (range_check_type): For enumeral and boolean
++ type, pass 1 to type_for_size langhook instead of
++ TYPE_UNSIGNED (etype). Return unsigned_type_for result whenever
++ etype isn't TYPE_UNSIGNED INTEGER_TYPE.
++ (build_range_check): Don't call unsigned_type_for for pointer types.
++ * match.pd (X / C1 op C2): Don't call unsigned_type_for on
++ range_check_type result.
+
-+ PR target/79951
-+ * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
-+ for VECTOR_UNIT_VSX_P (<MODE>mode) too.
++ 2019-09-01 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-21 Tamar Christina <tamar.christina@arm.com>
++ PR middle-end/91623
++ * optabs.c (expand_vec_cond_expr): If op0 is a VECTOR_CST and only
++ EQ_EXPR/NE_EXPR is supported, verify that op0 only contains
++ zeros or negative elements and use NE_EXPR instead of LT_EXPR against
++ zero vector.
+
-+ * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
-+ Change ins into fmov.
++ PR lto/91572
++ * tree.c (find_decls_types_in_node): Also walk TREE_PURPOSE of
++ GIMPLE_ASM TREE_LIST operands.
+
-+2017-03-19 Dominique d'Humieres <dominiq@lps.ens.fr>
++ 2019-08-29 Jakub Jelinek <jakub@redhat.com>
+
-+ PR target/71017
-+ * config/i386/cpuid.h: Fix another undefined behavior.
++ PR tree-optimization/91351
++ * tree-cfg.c (generate_range_test): Use range_check_type instead of
++ unsigned_type_for.
++ * tree-cfgcleanup.c (convert_single_case_switch): Punt if
++ range_check_type returns NULL.
++ * tree-switch-conversion.c (switch_conversion::build_one_array):
++ Use range_check_type instead of unsigned_type_for, don't perform
++ linear opt if it returns NULL.
++ (bit_test_cluster::find_bit_tests): Formatting fix.
++ (bit_test_cluster::emit): Use range_check_type instead of
++ unsigned_type_for.
++ (switch_decision_tree::try_switch_expansion): Punt if range_check_type
++ returns NULL.
+
-+2017-03-17 Tom de Vries <tom@codesourcery.com>
++2019-10-18 Georg-Johann Lay <avr@gjlay.de>
+
-+ backport from trunk:
-+ 2017-03-17 Tom de Vries <tom@codesourcery.com>
++ Backport from 2019-10-18 trunk r277143.
+
-+ * gcov-dump.c (print_usage): Print bug_report_url.
++ PR target/86040
++ * config/avr/avr.c (avr_out_lpm): Do not shortcut-return.
+
-+2017-03-16 Richard Biener <rguenther@suse.de>
++2019-10-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-02-28 Richard Biener <rguenther@suse.de>
++ 2019-10-05 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR tree-optimization/79732
-+ * tree-inline.c (expand_call_inline): Handle anonymous
-+ SSA lhs properly when inlining a function without return
-+ value.
++ PR target/59888
++ * config/darwin.c (darwin_rodata_section): Add relocation flag,
++ choose const_data section for constants with relocations.
++ (machopic_select_section): Pass relocation flag to
++ darwin_rodata_section ().
+
-+2017-03-15 Matthias Klose <doko@ubuntu.com>
++2019-10-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-03-14 Martin Liska <mliska@suse.cz>
++ 2019-09-21 Iain Sandoe <iain@sandoe.co.uk>
+
-+ * Makefile.in: Install gcov-dump.
++ * config/darwin.c (machopic_legitimize_pic_address): Check
++ for lra, rather than reload.
+
-+2017-03-15 Uros Bizjak <ubizjak@gmail.com>
++2019-10-17 John David Anglin <danglin@gcc.gnu.org>
+
-+ PR target/80019
-+ * config/i386/i386.c (ix86_vector_duplicate_value): Create
-+ subreg of inner mode for values already in registers.
++ * config/pa/pa.c (pa_output_indirect_call): Fix typos in last change.
+
-+2017-03-14 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
++2019-10-17 Richard Earnshaw <rearnsha@arm.com>
+
+ Backport from mainline
-+ 2017-02-28 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
++ 2019-05-03 Richard Earnshaw <rearnsha@arm.com>
+
-+ PR target/79752
-+ * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
-+ udiv rather than div since input pattern is unsigned.
++ PR target/89400
++ * config/arm/arm.md (unaligned_loadsi): Add variant for thumb1.
++ Restrict 'all' variant to 32-bit configurations.
++ (unaligned_loadhiu): Likewise.
++ (unaligned_storehi): Likewise.
++ (unaligned_storesi): Likewise.
++ (unaligned_loadhis): Disable when compiling for thumb1.
+
-+2017-03-14 Richard Biener <rguenther@suse.de>
++2019-10-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2016-05-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR middle-end/80004
-+ PR target/49244
-+ * gimple.c (gimple_builtin_call_types_compatible_p): Allow
-+ char/short arguments promoted to int because of promote_prototypes.
-+
-+ 2017-03-09 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/79977
-+ * graphite-scop-detection.c (scop_detection::merge_sese):
-+ Handle the case of extra exits to blocks dominating the entry.
-+
-+ 2017-03-09 Richard Biener <rguenther@suse.de>
++ 2019-10-03 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR middle-end/79971
-+ * gimple-expr.c (useless_type_conversion_p): Preserve
-+ TYPE_SATURATING for fixed-point types.
++ PR target/87243
++ * config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New.
++ (darwin_driver_init): Use the sysroot provided by SDKROOT when that
++ is available and the user has not set one on the command line.
+
-+ 2017-02-22 Richard Biener <rguenther@suse.de>
++2019-10-16 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR tree-optimization/79666
-+ * tree-vrp.c (extract_range_from_binary_expr_1): Make sure
-+ to not symbolically negate if that may introduce undefined
-+ overflow.
-+
-+ 2017-02-17 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/79576
-+ * params.def (max-ssa-name-query-depth): Limit to 10.
++ Backport from mainline
++ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk>
+
-+2017-03-07 Uros Bizjak <ubizjak@gmail.com>
++ * config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases.
++ (RDYNAMIC): Rename to, DARWIN_RDYNAMIC.
++ (DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker
++ clauses.
++ (LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and
++ DARWIN_NOPIE_SPEC.
+
+ Backport from mainline
-+ 2017-03-07 Segher Boessenkool <segher@kernel.crashing.org>
++ 2019-06-19 Iain Sandoe <iain@sandoe.co.uk>
+
-+ * config/i386/i386.c (ix86_local_alignment): Align most aggregates
-+ of 16 bytes and more to 16 bytes, not those of 16 bits and more.
++ * config/darwin.h (DRIVER_SELF_SPECS): Add RDYNAMIC, DARWIN_PIE_SPEC
++ and DARWIN_NOPIE_SPEC.
++ (RDYNAMIC): New, modified from DARWIN_EXPORT_DYNAMIC.
++ (DARWIN_PIE_SPEC): Collate from darwin.h and darwin9.h.
++ (DARWIN_NOPIE_SPEC): Collate from darwin10.h.
++ (DARWIN_NOCOMPACT_UNWIND): New from darwin10.h
++ (DARWIN_EXPORT_DYNAMIC): Delete.
++ * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move no_compact_unwind
++ and pie options processing to darwin.h.
++ * config/darwin9.h (DARWIN_PIE_SPEC): Move pie processing to darwin.h
+
-+2017-03-06 John David Anglin <danglin@gcc.gnu.org>
++2019-10-16 Richard Biener <rguenther@suse.de>
+
-+ PR target/77850
-+ * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
-+ vector types.
-+
-+2017-03-06 Michael Meissner <meissner@linux.vnet.ibm.com>
++ Backport from mainline
++ 2019-10-04 Richard Biener <rguenther@suse.de>
+
-+ Back port from trunk
-+ 2017-03-01 Michael Meissner <meissner@linux.vnet.ibm.com>
++ PR lto/91968
++ * tree.c (find_decls_types_r): Do not remove LABEL_DECLs from
++ BLOCK_VARS.
+
-+ PR target/79439
-+ * config/rs6000/predicates.md (current_file_function_operand): Do
-+ not allow self calls to be local if the function is replaceable.
++ 2019-09-19 Richard Biener <rguenther@suse.de>
+
-+2017-03-02 Uros Bizjak <ubizjak@gmail.com>
++ PR tree-optimization/91812
++ * tree-ssa-phiprop.c (propagate_with_phi): Do not replace
++ volatile loads.
+
-+ PR target/79514
-+ * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
++ 2019-09-17 Richard Biener <rguenther@suse.de>
+
-+2017-03-01 Pat Haugen <pthaugen@us.ibm.com>
++ PR debug/91772
++ * dwarf2out.c (dwarf2out_late_global_decl): If early dwarf
++ was missing generate locations only once.
+
-+ Backport from mainline:
-+ 2017-02-27 Pat Haugen <pthaugen@us.ibm.com>
++ 2019-09-17 Richard Biener <rguenther@suse.de>
+
-+ PR target/79544
-+ * rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD for
-+ arithmetic shift of unsigned V2DI.
++ PR tree-optimization/91790
++ * tree-vect-stmts.c (vectorizable_load): For BB vectorization
++ use the correct DR for setting up realignment.
+
-+2017-03-01 Martin Jambor <mjambor@suse.cz>
++2019-10-14 Will Schmidt <will_schmidt@vnet.ibm.com>
+
-+ Backport from mainline
-+ 2017-02-21 Martin Jambor <mjambor@suse.cz>
++ Backport from trunk
++ 2019-09-26 Will Schmidt <will_schmidt@vnet.ibm.com>
+
-+ PR lto/79579
-+ * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
-+ have been analyzed.
++ * config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
++ LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
++ LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
++ LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
++ LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
++ LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
++ LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
++ LD_ELEMREV_V16QI): Use the PURE attribute.
+
-+2017-02-28 Eric Botcazou <ebotcazou@adacore.com>
++2019-10-10 Uroš Bizjak <ubizjak@gmail.com>
+
-+ PR target/79749
-+ * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
-+ condition on optimize for the leaf function test.
++ PR target/92022
++ * config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN.
+
-+2017-02-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-10-10 Oleg Endo <olegendo@gcc.gnu.org>
+
+ Backport from mainline
-+ 2017-02-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
-+
-+ PR target/79261
-+ * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
-+ support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
-+ * config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
-+ generator for vsx_xxpermdi_<mode>_be.
-+ * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
-+ force big-endian semantics.
-+ (vsx_xxpermdi_<mode>_be): New define_expand with same
-+ implementation as previous version of vsx_xxpermdi_<mode>.
-+
-+2017-02-20 Marek Polacek <polacek@redhat.com>
++ 2019-10-10 Oleg Endo <olegendo@gcc.gnu.org>
++
++ PR target/88630
++ * config/sh/sh.h (TARGET_FPU_SH4_300): New macro.
++ * config/sh/sh.c (sh_option_override): Enable fsca and fsrra insns
++ also for TARGET_FPU_SH4_300.
++ (sh_emit_mode_set): Check for TARGET_FPU_SH4_300 instead of
++ TARGET_SH4_300.
++ * config/sh/sh.md (toggle_pr): Add TARGET_FPU_SH4_300 condition.
++ (negsf2): Expand to either negsf2_fpscr or negsf2_no_fpscr.
++ (*negsf2_i): Split into ...
++ (negsf2_fpscr, negsf2_no_fpscr): ... these new patterns.
++ (abssf2): Expand to either abssf2_fpsc or abssf2_no_fpsc.
++ (**abssf2_i): Split into ...
++ (abssf2_fpscr, abssf2_no_fpscr): ... these new patterns.
++ (negdf2): Expand to either negdf2_fpscr or negdf2_no_fpscr.
++ (*negdf2_i): Split into ...
++ (negdf2_fpscr, negdf2_no_fpscr): ... these new patterns.
++ (absdf2): Expand to either absdf2_fpscr or absdf2_no_fpsc.
++ (**abssf2_i): Split into ...
++ (absdf2_fpscr, absdf2_no_fpscr): ... these new patterns.
++
++2019-10-10 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-02-20 Marek Polacek <polacek@redhat.com>
-+
-+ PR middle-end/79537
-+ * gimplify.c (gimplify_expr): Handle unused *&&L;.
-+
-+ PR sanitizer/79558
-+ * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
-+
-+2017-02-20 Marek Polacek <polacek@redhat.com>
++ 2019-10-10 Andreas Krebbel <krebbel@linux.ibm.com>
++
++ * common/config/s390/s390-common.c (PF_ARCH13): Rename to...
++ (PF_Z15): ... this.
++ * config.gcc: Add z15 as option for --with-arch and --with-tune
++ configure switches.
++ * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Add
++ error reporting for unsupported builtins.
++ * config/s390/s390-opts.h (enum processor_type): Rename
++ PROCESSOR_8561_ARCH13 to PROCESSOR_8561_Z15.
++ * config/s390/8561.md: Rename arch13 to z15 throughout the file.
++ * config/s390/driver-native.c (s390_host_detect_local_cpu):
++ Likewise.
++ * config/s390/s390-builtins.def: Likewise.
++ * config/s390/s390.c (processor_table): Add z15 as option and keep arch13 as alternative.
++ (s390_expand_builtin): Add missing check for unsupported builtins.
++ (s390_canonicalize_comparison): Rename TARGET_ARCH13 to TARGET_Z15.
++ (s390_rtx_costs): Likewise.
++ (s390_get_sched_attrmask): Rename arch13 to z15.
++ (s390_get_unit_mask): Likewise.
++ (s390_is_fpd): Likewise.
++ (s390_is_fxd): Likewise.
++ * config/s390/s390.h (enum processor_flags): Likewise.
++ * config/s390/s390.md: Likewise.
++ * config/s390/vector.md: Likewise.
++ * config/s390/vx-builtins.md: Likewise.
++ * config/s390/s390.opt: Add z15 to processor_type value.
++
++2019-10-07 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-02-17 Marek Polacek <polacek@redhat.com>
-+
-+ PR middle-end/79536
-+ * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
-+ (fold_negate_expr): New wrapper.
-+
-+2017-02-17 Carl Love <cel@us.ibm.com>
-+
-+ Backport from mainline commit r245460 on 2017-02-14
-+
-+ PR 79545
-+ * config/rs6000/rs6000.c: Add case statement entry to make the xvcvuxdsp
-+ built-in argument unsigned.
-+ * config/rs6000/vsx.md: Fix the source and return operand types so they
-+ match the instruction definitions from the ISA document. Fix typo
-+ in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
-+ statement.
-+
-+2017-01-17 Julia Koval <julia.koval@intel.com>
-+
-+ PR target/76731
-+ * config/i386/avx512fintrin.h
-+ (_mm512_i32gather_ps): Change __addr type to void const*.
-+ (_mm512_mask_i32gather_ps): Ditto.
-+ (_mm512_i32gather_pd): Ditto.
-+ (_mm512_mask_i32gather_pd): Ditto.
-+ (_mm512_i64gather_ps): Ditto.
-+ (_mm512_mask_i64gather_ps): Ditto.
-+ (_mm512_i64gather_pd): Ditto.
-+ (_mm512_mask_i64gather_pd): Ditto.
-+ (_mm512_i32gather_epi32): Ditto.
-+ (_mm512_mask_i32gather_epi32): Ditto.
-+ (_mm512_i32gather_epi64): Ditto.
-+ (_mm512_mask_i32gather_epi64): Ditto.
-+ (_mm512_i64gather_epi32): Ditto.
-+ (_mm512_mask_i64gather_epi32): Ditto.
-+ (_mm512_i64gather_epi64): Ditto.
-+ (_mm512_mask_i64gather_epi64): Ditto.
-+ (_mm512_i32scatter_ps): Change __addr type to void*.
-+ (_mm512_mask_i32scatter_ps): Ditto.
-+ (_mm512_i32scatter_pd): Ditto.
-+ (_mm512_mask_i32scatter_pd): Ditto.
-+ (_mm512_i64scatter_ps): Ditto.
-+ (_mm512_mask_i64scatter_ps): Ditto.
-+ (_mm512_i64scatter_pd): Ditto.
-+ (_mm512_mask_i64scatter_pd): Ditto.
-+ (_mm512_i32scatter_epi32): Ditto.
-+ (_mm512_mask_i32scatter_epi32): Ditto.
-+ (_mm512_i32scatter_epi64): Ditto.
-+ (_mm512_mask_i32scatter_epi64): Ditto.
-+ (_mm512_i64scatter_epi32): Ditto.
-+ (_mm512_mask_i64scatter_epi32): Ditto.
-+ (_mm512_i64scatter_epi64): Ditto.
-+ (_mm512_mask_i64scatter_epi64): Ditto.
-+ * config/i386/avx512pfintrin.h
-+ (_mm512_mask_prefetch_i32gather_pd): Change addr type to void const*.
-+ (_mm512_mask_prefetch_i32gather_ps): Ditto.
-+ (_mm512_mask_prefetch_i64gather_pd): Ditto.
-+ (_mm512_mask_prefetch_i64gather_ps): Ditto.
-+ (_mm512_prefetch_i32scatter_pd): Change addr type to void*.
-+ (_mm512_prefetch_i32scatter_ps): Ditto.
-+ (_mm512_mask_prefetch_i32scatter_pd): Ditto.
-+ (_mm512_mask_prefetch_i32scatter_ps): Ditto.
-+ (_mm512_prefetch_i64scatter_pd): Ditto.
-+ (_mm512_prefetch_i64scatter_ps): Ditto.
-+ (_mm512_mask_prefetch_i64scatter_pd): Ditto.
-+ (_mm512_mask_prefetch_i64scatter_ps): Ditto.
-+ * config/i386/avx512vlintrin.h
-+ (_mm256_mmask_i32gather_ps): Change __addr type to void const*.
-+ (_mm_mmask_i32gather_ps): Ditto.
-+ (_mm256_mmask_i32gather_pd): Ditto.
-+ (_mm_mmask_i32gather_pd): Ditto.
-+ (_mm256_mmask_i64gather_ps): Ditto.
-+ (_mm_mmask_i64gather_ps): Ditto.
-+ (_mm256_mmask_i64gather_pd): Ditto.
-+ (_mm_mmask_i64gather_pd): Ditto.
-+ (_mm256_mmask_i32gather_epi32): Ditto.
-+ (_mm_mmask_i32gather_epi32): Ditto.
-+ (_mm256_mmask_i32gather_epi64): Ditto.
-+ (_mm_mmask_i32gather_epi64): Ditto.
-+ (_mm256_mmask_i64gather_epi32): Ditto.
-+ (_mm_mmask_i64gather_epi32): Ditto.
-+ (_mm256_mmask_i64gather_epi64): Ditto.
-+ (_mm_mmask_i64gather_epi64): Ditto.
-+ (_mm256_i32scatter_ps): Change __addr type to void*.
-+ (_mm256_mask_i32scatter_ps): Ditto.
-+ (_mm_i32scatter_ps): Ditto.
-+ (_mm_mask_i32scatter_ps): Ditto.
-+ (_mm256_i32scatter_pd): Ditto.
-+ (_mm256_mask_i32scatter_pd): Ditto.
-+ (_mm_i32scatter_pd): Ditto.
-+ (_mm_mask_i32scatter_pd): Ditto.
-+ (_mm256_i64scatter_ps): Ditto.
-+ (_mm256_mask_i64scatter_ps): Ditto.
-+ (_mm_i64scatter_ps): Ditto.
-+ (_mm_mask_i64scatter_ps): Ditto.
-+ (_mm256_i64scatter_pd): Ditto.
-+ (_mm256_mask_i64scatter_pd): Ditto.
-+ (_mm_i64scatter_pd): Ditto.
-+ (_mm_mask_i64scatter_pd): Ditto.
-+ (_mm256_i32scatter_epi32): Ditto.
-+ (_mm256_mask_i32scatter_epi32): Ditto.
-+ (_mm_i32scatter_epi32): Ditto.
-+ (_mm_mask_i32scatter_epi32): Ditto.
-+ (_mm256_i32scatter_epi64): Ditto.
-+ (_mm256_mask_i32scatter_epi64): Ditto.
-+ (_mm_i32scatter_epi64): Ditto.
-+ (_mm_mask_i32scatter_epi64): Ditto.
-+ (_mm256_i64scatter_epi32): Ditto.
-+ (_mm256_mask_i64scatter_epi32): Ditto.
-+ (_mm_i64scatter_epi32): Ditto.
-+ (_mm_mask_i64scatter_epi32): Ditto.
-+ (_mm256_i64scatter_epi64): Ditto.
-+ (_mm256_mask_i64scatter_epi64): Ditto.
-+ (_mm_i64scatter_epi64): Ditto.
-+ (_mm_mask_i64scatter_epi64): Ditto.
-+ * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
-+ (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
-+ (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
-+ (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
-+ (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
-+ (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
-+ (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
-+ (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
-+ (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
-+ (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
-+ (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
-+ (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
-+ (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
-+ (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
-+ (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
-+ (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
-+ (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
-+ (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
-+ (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
-+ (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
-+ (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
-+ (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
-+ (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
-+ (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
-+ (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
-+ (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
-+ (VOID_QI_V8DI_PCINT_INT_INT): Remove.
-+ (V16SF_V16SF_PCVOID_V16SI_HI_INT, V8DF_V8DF_PCVOID_V8SI_QI_INT)
-+ (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
-+ (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
-+ (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
-+ (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
-+ (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
-+ (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
-+ (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
-+ (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
-+ (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
-+ (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
-+ (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
-+ (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
-+ (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
-+ (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
-+ (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
-+ (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
-+ (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
-+ (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
-+ (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
-+ (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
-+ (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
-+ (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
-+ (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
-+ (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
-+ (VOID_QI_V8DI_PCVOID_INT_INT): Add.
-+ * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
-+ definitions accordingly.
-+
-+2017-02-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ Backported from mainline
-+ 2017-02-09 Marek Polacek <polacek@redhat.com>
++ 2019-10-01 Bill Schmidt <wschmidt@linux.ibm.com>
+
-+ PR c/79428
-+ * c-parser.c (c_parser_omp_ordered): Call c_parser_skip_to_pragma_eol
-+ instead of c_parser_skip_until_found.
++ PR target/91275
++ * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap
++ vpmsumd.
+
-+2017-02-15 Jakub Jelinek <jakub@redhat.com>
++2019-10-05 Andrea Corallo <andrea.corallo@arm.com>
+
-+ Backported from mainline
-+ 2017-02-10 Jakub Jelinek <jakub@redhat.com>
++ Backport from mainline
++ 2019-10-03 Andrea Corallo <andrea.corallo@arm.com>
++ * gcc/ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum
++ when finished.
++ * ipa-prop.c (ipcp_free_transformation_sum): New function.
++ * ipa-prop.h (ipcp_free_transformation_sum): Add declaration.
+
-+ PR tree-optimization/79411
-+ * tree-ssa-reassoc.c (is_reassociable_op): Return false if
-+ stmt operands are SSA_NAMEs used in abnormal phis.
-+ (can_reassociate_p): Return false if op is SSA_NAME used in abnormal
-+ phis.
++2019-10-04 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++ Backport from mainline
++ 2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ PR c/79431
-+ * gimplify.c (gimplify_adjust_omp_clauses): Ignore
-+ "omp declare target link" attribute unless is_global_var.
-+ * omp-low.c (find_link_var_op): Likewise.
++ PR target/91769
++ * config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p
++ instead of REGNO equality check on addr.reg.
+
-+ 2017-02-07 Jakub Jelinek <jakub@redhat.com>
-+ Richard Biener <rguenther@suse.de>
++2019-10-04 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ PR middle-end/79399
-+ * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
-+ type from int to size_t.
-+ * ira-costs.c (struct_costs_size): Change type from int to size_t.
++ Backport from mainline
++ 2019-07-07 Richard Sandiford <richard.sandiford@arm.com>
+
-+ 2017-02-04 Jakub Jelinek <jakub@redhat.com>
++ * config/mips/mips.c (mips_split_move): Zero-initialize addr
++ and check whether addr.reg is nonnull before using it.
+
-+ PR tree-optimization/79338
-+ * tree-parloops.c (gather_scalar_reductions): Don't call
-+ vect_analyze_loop_form for loop->inner before destroying loop's
-+ loop_vinfo.
++2019-10-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ 2017-02-02 Jakub Jelinek <jakub@redhat.com>
++ Backport from mainline
+
-+ PR target/79197
-+ * config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
-+ (fixuns_trunc<mode>di2): ... this, remove previous expander. Put all
-+ conditions on a single line.
++ 2019-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ 2017-01-31 Jakub Jelinek <jakub@redhat.com>
++ PR fortran/91716
++ * trans-array.c (gfc_conv_array_initializer): Always assign the
++ array type of the field to the string constant.
+
-+ PR tree-optimization/79267
-+ * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
-+ if should_remove_lhs_p is true.
++2019-10-01 Oleg Endo <olegendo@gcc.gnu.org>
+
-+ 2017-01-17 Kito Cheng <kito.cheng@gmail.com>
-+ Kuan-Lin Chen <kuanlinchentw@gmail.com>
++ Backport from mainline
+
-+ PR target/79079
-+ * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
-+ gen_lowpart.
++ 2019-10-01 Oleg Endo <olegendo@gcc.gnu.org>
+
-+2017-02-14 Uros Bizjak <ubizjak@gmail.com>
++ PR target/88562
++ * config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Use
++ sh_check_add_incdec_notes to preserve REG_INC notes when replacing
++ a memory access insn.
+
-+ PR target/79495
-+ * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
+
-+2017-02-14 Martin Liska <mliska@suse.cz>
++2019-10-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline
-+ 2017-02-13 Martin Liska <mliska@suse.cz>
++ 2019-09-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
-+ PR c/79471
-+ * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
++ * config/aarch64/aarch64.md (mov<mode>): Don't call
++ aarch64_split_dimode_const_store on volatile MEM.
+
-+2017-02-13 Gerald Pfeifer <gerald@pfeifer.com>
++2019-10-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline
-+ 2016-12-11 Roger Pau Monné <roger.pau@citrix.com>
-+
-+ * config/i386/x86-64.h: Append --32 to the assembler options when
-+ -m16 is used on non-glibc systems as well.
++ 2019-09-26 Matt Turner <mattst88@gmail.com>
+
-+2017-02-08 Segher Boessenkool <segher@kernel.crashing.org>
++ PR driver/69471
++ * config/aarch64/aarch64.opt (march=): Add Negative(march=).
++ (mtune=): Add Negative(mtune=).
++ (mcpu=): Add Negative(mcpu=).
++ * config/arm/arm.opt: Likewise.
+
-+ PR translation/79397
-+ * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
-+ of AltiVec.
-+
-+2017-02-08 Richard Biener <rguenther@suse.de>
++2019-09-28 Oleg Endo <olegendo@gcc.gnu.org>
+
+ Backport from mainline
-+ 2017-02-08 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/71824
-+ * graphite-scop-detection.c (scop_detection::build_scop_breadth):
-+ Check all loops contained in the merged region.
-+
-+ 2017-02-01 Richard Biener <rguenther@suse.de>
++ 2019-09-28 Oleg Endo <olegendo@gcc.gnu.org>
+
-+ PR tree-optimization/71824
-+ * graphite-scop-detection.c (scop_detection::build_scop_breadth):
-+ Verify the loops are valid in the merged SESE region.
-+ (scop_detection::can_represent_loop_1): Check analyzing the
-+ evolution of the number of iterations in the region succeeds.
++ PR target/86805
++ * config/sh/sh.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.
+
-+ 2017-01-31 Richard Biener <rguenther@suse.de>
++2019-09-28 Oleg Endo <olegendo@gcc.gnu.org>
+
-+ PR tree-optimization/77318
-+ * graphite-sese-to-poly.c (extract_affine): Fix assert.
-+ (create_pw_aff_from_tree): Take loop parameter.
-+ (add_condition_to_pbb): Pass loop of the condition to
-+ create_pw_aff_from_tree.
-+
-+2017-02-06 Dominique d'Humieres <dominiq@lps.ens.fr>
++ Backport from mainline
++ 2019-09-28 Oleg Endo <olegendo@gcc.gnu.org>
+
-+ PR target/71017
-+ * config/i386/cpuid.h: Fix undefined behavior.
++ PR target/80672
++ * config/sh/sh.c (parse_validate_atomic_model_option): Use
++ std::string::compare instead of std::string::find.
+
-+2017-02-03 Carl Love <cel@us.ibm.com>
++2019-09-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
-+ Backport of two commits from mainline, r244943 and r244904,
-+ dated 017-01-26 and 2017-01-25 respectively
++ Backport from mainline
++ 2019-08-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
-+ * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
-+ of entries for ALTIVEC_BUILTIN_VEC_PACKS. Remove bogus entries
-+ for P8V_BUILTIN_VEC_VGBBD.
++ * config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32
++ intrinsics if __ARM_FP.
++ Use __ARM_FEATURE_CRC32 ifdef guard.
+
-+2017-02-03 Walter Lee <walt@tilera.com>
++2019-09-23 Max Filippov <jcmvbkbc@gmail.com>
+
+ Backport from mainline
-+ 2017-02-03 Walter Lee <walt@tilera.com>
-+
-+ PR target/78862
-+ * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
-+ after initial stackframe link reg save.
-+ * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
++ 2019-06-18 Max Filippov <jcmvbkbc@gmail.com>
+
-+2017-02-03 Maxim Ostapenko <m.ostapenko@samsung.com>
++ * config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
++ pointer adjustment for the case of no callee-saved registers and
++ stack frame bigger than 128 bytes.
+
-+ PR lto/79061
-+ * asan.c (asan_add_global): Force has_dynamic_init to zero in LTO mode.
-+
-+2017-01-31 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-09-22 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-01-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
-+
-+ PR target/79268
-+ * config/rs6000/altivec.h (vec_xl): Revise #define.
-+ (vec_xst): Likewise.
++ 2019-06-16 Iain Sandoe <iain@sandoe.co.uk>
+
-+2017-01-26 Eric Botcazou <ebotcazou@adacore.com>
++ * config/darwin.opt (prebind, noprebind, seglinkedit,
++ noseglinkedit): Add RejectNegative.
+
+ Backport from mainline
-+ 2017-01-10 Eric Botcazou <ebotcazou@adacore.com>
-+
-+ * expr.c (store_field): In the bitfield case, fetch the return value
-+ from the registers before applying a single big-endian adjustment.
-+ Always do a final load for a BLKmode value not larger than a word.
++ 2019-06-14 Iain Sandoe <iain@sandoe.co.uk>
+
-+ 2017-01-09 Eric Botcazou <ebotcazou@adacore.com>
++ * config/darwin.opt: Add RejectNegative where needed, reorder
++ and add minimal functional descriptions.
+
-+ * expr.c (store_field): In the bitfield case, if the value comes from
-+ a function call and is of an aggregate type returned in registers, do
-+ not modify the field mode; extract the value in all cases if the mode
-+ is BLKmode and the size is not larger than a word.
++2019-09-20 John David Anglin <danglin@gcc.gnu.org>
+
-+2017-01-26 Richard Biener <rguenther@suse.de>
++ * config/pa/pa.c (pa_trampoline_init): Remove spurious extended
++ character.
+
-+ * tree-vrp.c (vrp_visit_assignment_or_call): Use set_defs_to_varying.
++2019-09-20 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ Backport from mainline
-+ 2016-01-10 Richard Biener <rguenther@suse.de>
++ 2019-06-06 Andreas Krebbel <krebbel@linux.ibm.com>
+
-+ PR tree-optimization/79034
-+ * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
-+ Propagate out degenerate PHIs in the joiner.
++ PR rtl-optimization/88751
++ * ira.c (ira): Use the number of the actually referenced registers
++ when calculating the threshold.
+
-+ 2016-12-13 Richard Biener <rguenther@suse.de>
++2019-09-20 Kito Cheng <kito.cheng@sifive.com>
+
-+ PR middle-end/78742
-+ * tree.c (cst_and_fits_in_hwi): Look if the actual value fits.
-+ * tree-object-size.c (compute_builtin_object_size): Use
-+ tree_fits_shwi_p.
-+ * tree-data-ref.c (initialize_matrix_A): Remove excess assert.
-+
-+2017-01-26 Richard Biener <rguenther@suse.de>
++ Backport from mainline
++ 2019-09-18 Jim Wilson <jimw@sifive.com>
++
++ PR target/91683
++ * config/riscv/riscv-protos.h (riscv_split_symbol): New bool parameter.
++ (riscv_move_integer): Likewise.
++ * config/riscv/riscv.c (riscv_split_integer): Pass FALSE for new
++ riscv_move_integer arg.
++ (riscv_legitimize_move): Likewise.
++ (riscv_force_temporary): New parameter in_splitter. Don't call
++ force_reg if true.
++ (riscv_unspec_offset_high): Pass FALSE for new riscv_force_temporary
++ arg.
++ (riscv_add_offset): Likewise.
++ (riscv_split_symbol): New parameter in_splitter. Pass to
++ riscv_force_temporary.
++ (riscv_legitimize_address): Pass FALSE for new riscv_split_symbol
++ arg.
++ (riscv_move_integer): New parameter in_splitter. New local
++ can_create_psuedo. Don't call riscv_split_integer or force_reg when
++ in_splitter TRUE.
++ (riscv_legitimize_const_move): Pass FALSE for new riscv_move_integer,
++ riscv_split_symbol, and riscv_force_temporary args.
++ * config/riscv/riscv.md (low<mode>+1): Pass TRUE for new
++ riscv_move_integer arg.
++ (low<mode>+2): Pass TRUE for new riscv_split_symbol arg.
++
++2019-09-20 Eric Botcazou <ebotcazou@adacore.com>
++
++ PR target/91269
++ * config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
++
++2019-09-19 Kito Cheng <kito.cheng@sifive.com>
+
+ Backport from mainline
-+ 2016-09-03 Kirill Yukhin <kirill.yukhin@intel.com>
++ 2019-09-05 Jakub Jelinek <jakub@redhat.com>
++ Jim Wilson <jimw@sifive.com>
+
-+ * ubsan.c (ubsan_use_new_style_p): Fix check for empty string.
++ PR target/91635
++ * config/riscv/riscv.md (zero_extendsidi2, zero_extendhi<GPR:mode>2,
++ extend<SHORT:mode><SUPERQI:mode>2): Don't split if
++ paradoxical_subreg_p (operands[0]).
++ (*lshrsi3_zero_extend_3+1, *lshrsi3_zero_extend_3+2): Add clobber and
++ use as intermediate value.
+
-+2017-01-24 Eric Botcazou <ebotcazou@adacore.com>
++2019-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
-+ PR target/77439
-+ * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
-+ for long calls with APCS frame and VFP.
++ PR rtl-optimization/89795
++ * rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from
++ inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set.
+
-+2017-01-24 Uros Bizjak <ubizjak@gmail.com>
++2019-09-09 Jakub Jelinek <jakub@redhat.com>
+
-+ PR target/78478
-+ Revert:
-+ 2013-11-05 Uros Bizjak <ubizjak@gmail.com>
++ PR target/87853
++ * config/i386/emmintrin.h (_mm_cmpeq_epi8): Use casts to __v16qi
++ instead of __v16qs.
+
-+ * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
++ PR target/91704
++ * config/i386/avxintrin.h (__v32qs): New typedef.
++ * config/i386/avx2intrin.h (_mm256_cmpgt_epi8): Use casts to __v32qs
++ instead of __v32qi.
+
-+2017-01-23 Martin Liska <mliska@suse.cz>
++2019-09-04 Wilco Dijkstra <wdijkstr@arm.com>
+
+ Backport from mainline
-+ 2017-01-20 Martin Liska <mliska@suse.cz>
-+
-+ PR lto/69188
-+ * tree-profile.c (init_ic_make_global_vars): Do not call
-+ finalize_decl.
-+ (gimple_init_gcov_profiler): Likewise.
++ 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
+
-+2017-01-21 Gerald Pfeifer <gerald@pfeifer.com>
++ PR target/81800
++ * gcc/config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF
++ operand is larger than a long int.
+
-+ Backport from mainline
-+ 2016-12-29 Gerald Pfeifer <gerald@pfeifer.com>
++2019-09-03 Jakub Jelinek <jakub@redhat.com>
+
-+ * doc/extend.texi (Cilk Plus Builtins): cilkplus.org now uses
-+ https by default.
-+ * doc/passes.texi (Cilk Plus Transformation): Ditto.
-+ * doc/generic.texi (Statements for C++): Ditto, and use @uref.
++ PR tree-optimization/91597
++ * tree-vrp.c (extract_range_from_binary_expr): Remove unsafe
++ BIT_AND_EXPR optimization for pointers, even if both operand
++ ranges don't include NULL, the result can be NULL.
+
-+2017-01-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-09-02 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2017-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
-+
-+ * config/rs6000/rs6000.c (rtx_is_swappable_p): Change
-+ UNSPEC_VSX__XXSPLTD to require special splat handling.
-+
-+2017-01-20 Wilco Dijkstra <wdijkstr@arm.com>
++ 2019-09-02 Martin Liska <mliska@suse.cz>
+
-+ Backport from mainline
-+ PR target/77455
-+ * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
-+ * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
-+ (EH_RETURN_HANDLER_RTX): New define.
-+ * config/aarch64/aarch64.c (aarch64_frame_pointer_required):
-+ Force frame pointer in EH return functions.
-+ (aarch64_expand_epilogue): Add barrier for eh_return.
-+ (aarch64_final_eh_return_addr): Remove.
-+ (aarch64_eh_return_handler_rtx): New function.
-+ * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
-+ Remove.
-+ (aarch64_eh_return_handler_rtx): New prototype.
-+
-+2017-01-20 Richard Earnshaw <rearnsha@arm.com>
++ PR gcov-profile/91601
++ * gcov.c (path_contains_zero_cycle_arc): Rename to ...
++ (path_contains_zero_or_negative_cycle_arc): ... this and handle
++ also negative edges.
++ (circuit): Handle also negative edges as they can happen
++ in some situations.
+
-+ Backported from mainline
-+ 2017-01-19 Richard Earnshaw <rearnsha@arm.com>
++2019-09-01 Eric Botcazou <ebotcazou@adacore.com>
+
-+ PR rtl-optimization/79121
-+ * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
-+ of the inner type when shifting an extended value.
++ PR target/91472
++ * config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true
++ during LRA/reload in PIC mode if the PIC register hasn't been used yet.
++ (sparc_pic_register_p): Test reload_in_progress for consistency's sake.
+
-+2017-01-20 Martin Liska <mliska@suse.cz>
++2019-08-31 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2017-01-13 Martin Liska <mliska@suse.cz>
++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR ipa/79043
-+ * function.c (set_cfun): Add new argument force.
-+ * function.h (set_cfun): Likewise.
-+ * ipa-inline-transform.c (inline_call): Use the function when
-+ strict alising from is dropped for function we inline to.
++ PR pch/61250
++ * ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure
++ and issue any diagnostics needed before collecting the pre-PCH
++ state.
+
-+2017-01-20 Martin Liska <mliska@suse.cz>
-+
-+ Backport from mainline
-+ 2017-01-17 Martin Liska <mliska@suse.cz>
++2019-08-30 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ PR ipa/71207
-+ * ipa-polymorphic-call.c (contains_type_p): Fix wrong
-+ assumption and add comment.
++ Backport from trunk
++ 2019-08-22 Segher Boessenkool <segher@kernel.crashing.org>
+
-+2017-01-19 Richard Biener <rguenther@suse.de>
++ PR target/91481
++ * config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
++ and UNSPEC_DARN_RAW.
++ (unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and
++ UNSPECV_DARN_RAW.
++ (darn_32): Use an unspec_volatile, and UNSPECV_DARN_32.
++ (darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW.
++ (darn): Use an unspec_volatile, and UNSPECV_DARN.
+
-+ PR tree-optimization/72488
-+ * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
-+ sure to restore SSA info.
++2019-08-30 Segher Boessenkool <segher@kernel.crashing.org>
+
-+2017-01-17 Jakub Jelinek <jakub@redhat.com>
++ Backport from trunk
++ 2019-08-22 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ PR debug/78839
-+ * dwarf2out.c (field_byte_offset): Restore the
-+ PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
-+ and DECL_FIELD_BIT_OFFSET. Use fold_build2 instead of build2 + fold.
-+ (analyze_variants_discr, gen_variant_part): Use fold_build2 instead
-+ of build2 + fold.
++ * config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32,
++ UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to...
++ * config/rs6000/rs6000.md (unspec): ... here.
++ * config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb,
++ *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
++ cmpeqb, *cmpeqb_internal): Delete, move to...
++ * config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb,
++ *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal,
++ cmpeqb, *cmpeqb_internal): ... here.
+
-+2017-01-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
++2019-08-30 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
-+ 2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
-+
-+ PR rtl-optimization/78617
-+ * lra-remat.c (do_remat): Initialize live_hard_regs from live in
-+ registers, also setting hard registers mapped to pseudo registers.
++ 2019-04-29 Richard Biener <rguenther@suse.de>
+
-+2017-01-13 Christophe Lyon <christophe.lyon@linaro.org>
++ PR tree-optimization/90278
++ * tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean
++ EH on comparison simplification.
+
-+ Backport from mainline r244320.
-+ 2017-01-11 Christophe Lyon <christophe.lyon@linaro.org>
++2019-08-29 Richard Biener <rguenther@suse.de>
+
-+ PR target/78253
-+ * config/arm/arm.c (legitimize_pic_address): Handle reference to
-+ weak symbol.
-+ (arm_assemble_integer): Likewise.
++ PR tree-optimization/91568
++ * tree-vectorizer.h (_slp_tree::max_nunits): Add.
++ (vect_update_max_nunits): Add overload for poly_uint64.
++ * tree-vect-slp.c (vect_create_new_slp_node): Initialize it.
++ (vect_build_slp_tree): Record max_nunits into the subtree
++ and merge it upwards.
++ (vect_print_slp_tree): Print max_nunits.
+
-+2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-08-28 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
-+ 2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ 2019-05-27 Richard Biener <rguenther@suse.de>
+
-+ PR target/79044
-+ * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
-+ element-reversing loads and stores as not swappable.
++ PR tree-optimization/90637
++ * tree-ssa-sink.c (statement_sink_location): Honor the
++ computed sink location for single-uses.
+
-+2017-01-11 Uros Bizjak <ubizjak@gmail.com>
++2019-08-26 Xiong Hu Luo <luoxhu@linux.ibm.com>
+
-+ * config/i386/i386.c (memory_address_length): Increase len
-+ only when rip_relative_addr_p returns false.
++ Backport r274411 from trunk to gcc-9-branch.
++ 2019-08-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
+
-+2017-01-11 Maxim Ostapenko <m.ostapenko@samsung.com>
++ PR lto/91287
++ * builtins.c (builtin_with_linkage_p): New function.
++ * builtins.h (builtin_with_linkage_p): New function.
++ * symtab.c (write_symbol): Remove redundant assert.
++ * lto-streamer-out.c (symtab_node::output_to_lto_symbol_table_p):
++ Remove FIXME and use builtin_with_linkage_p.
+
-+ Backport from mainline
-+ 2017-01-11 Maxim Ostapenko <m.ostapenko@samsung.com>
-+
-+ PR lto/79042
-+ * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
-+ bit.
-+ (input_varpool_node): Unpack dynamically_initialized bit.
-+ * lto-streamer.h (LTO_minor_version): Bump version.
-+
-+2017-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
++2019-08-25 Uroš Bizjak <ubizjak@gmail.com>
+
++ PR target/91533
+ Backport from mainline
-+ 2016-12-30 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ PR target/78900
-+ * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
-+ assertions. Add support for doing the signbit if the IEEE 128-bit
-+ floating point value is in a GPR.
-+ * config/rs6000/rs6000.md (Fsignbit): Delete.
-+ (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
-+ Update the length attribute if the value is in a GPR.
-+ (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
-+ the sign or zero extension instruction, since the value is always
-+ 0/1.
-+ (signbit<mode>2_dm2): Delete using <Fsignbit>.
-+
-+2017-01-10 Martin Liska <mliska@suse.cz>
++ 2019-06-30 Uroš Bizjak <ubizjak@gmail.com>
+
-+ Backport from mainline
-+ 2017-01-09 Martin Liska <mliska@suse.cz>
-+
-+ PR pch/78970
-+ * gcc.c (driver_handle_option): Handle OPT_E and set
-+ have_E.
-+ (lookup_compiler): Do not show error message with have_E.
++ * config/i386/sse.md (ssse3_abs<mode>2): Rename from abs<mode>2.
++ * config/i386/i386-builtin.def (__builtin_ia32_pabsb):
++ Use CODE_FOR_ssse3_absv8qi2.
++ (__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2.
++ (__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2.
+
-+2017-01-10 Martin Liska <mliska@suse.cz>
++2019-08-23 Mihailo Stojanovic <mistojanovic@wavecomp.com>
+
+ Backport from mainline
-+ 2017-01-05 Martin Liska <mliska@suse.cz>
-+
-+ PR pch/78970
-+ * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
-+ header.
++ 2019-08-23 Mihailo Stojanovic <mistojanovic@wavecomp.com>
+
-+2017-01-10 Thomas Schwinge <thomas@codesourcery.com>
++ * config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI
++ machine mode for unspec_volatile operand.
+
-+ PR tree-optimization/78024
-+ * omp-low.c (oacc_loop_discovery): Call clear_bb_flags.
-+
-+ Backport trunk r239086:
-+ 2016-08-03 Nathan Sidwell <nathan@codesourcery.com>
-+
-+ * config/nvptx/nvptx.c (nvptx_declare_function_name): Round frame
-+ size to DImode boundary.
-+ (nvptx_propagate): Likewise.
-+
-+2017-01-10 Chung-Ju Wu <jasonwucj@gmail.com>
++2019-08-23 Martin Liska <mliska@suse.cz>
+
++ PR ipa/91508
+ Backport from mainline
-+ 2016-04-28 Segher Boessenkool <segher@kernel.crashing.org>
++ 2019-08-15 Martin Liska <mliska@suse.cz>
+
-+ PR target/70668
-+ * config/nds32/nds32.md (casesi): Don't access the operands array
-+ out of bounds.
++ PR ipa/91438
++ * cgraph.c (cgraph_node::remove): When setting
++ n->origin = NULL for all nested functions, reset
++ also next_nested.
+
-+2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
++2019-08-23 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
++ 2019-08-15 Martin Liska <mliska@suse.cz>
+
-+ * config.gcc: Add aarch64-*-freebsd* support.
-+ * config.host: Likewise.
-+ * config/aarch64/aarch64-freebsd.h: New file.
-+ * config/aarch64/t-aarch64-freebsd: Ditto.
++ * cgraph.c (cgraph_node::verify_node): Verify origin, nested
++ and next_nested.
+
-+2017-01-09 Bill Seurer <seurer@linux.vnet.ibm.com>
++2019-08-23 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2016-12-21 Bill Seurer <seurer@linux.vnet.ibm.com>
++ 2019-08-15 Martin Liska <mliska@suse.cz>
+
-+ PR sanitizer/65479
-+ * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
-+ -fasynchronous-unwind-tables option when -fsanitize=address is
-+ specified.
++ PR ipa/91404
++ * passes.c (order): Remove.
++ (uid_hash_t): Likewise).
++ (remove_cgraph_node_from_order): Remove from set
++ of pointers (cgraph_node *).
++ (insert_cgraph_node_to_order): New.
++ (duplicate_cgraph_node_to_order): New.
++ (do_per_function_toporder): Register all 3 cgraph hooks.
++ Skip removed_nodes now as we know about all of them.
+
-+2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
++2019-08-21 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backport from mainline
-+ 2016-09-19 Richard Biener <rguenther@suse.de>
++ 2019-08-18 Iain Sandoe <iain@sandoe.co.uk>
+
-+ * dwarf2out.c (dwarf2out_late_global_decl): When being during the
-+ early debug phase do not add locations but only const value
-+ attributes.
++ * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts
++ for cpu and machine. Factor 64/32b builtins.
+
-+ Backport from mainline
-+ 2016-10-20 Richard Biener <rguenther@suse.de>
++2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
+
-+ * cgraphunit.c (analyze_functions): Set node->definition to
-+ false to signal symbol removal to debug_hooks->late_global_decl.
++ PR rtl-optimization/91347
++ * dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls
++ before reload if HARD_FRAME_POINTER_IS_ARG_POINTER.
+
-+2017-01-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++2019-08-19 Richard Earnshaw <rearnsha@arm.com>
+
+ Backport from mainline
-+ 2016-12-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++ 2019-09-09 Richard Earnshaw <rearnsha@arm.com>
+
-+ PR rtl-optimization/78255
-+ * gcc/postreload.c (reload_cse_simplify): Do not CSE a function if
-+ NO_FUNCTION_CSE is true.
++ PR target/91386
++ * config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Use copy_rtx
++ to preserve the contents of the original insns.
+
-+2017-01-06 Wilco Dijkstra <wdijkstr@arm.com>
++2019-08-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ Backport from mainline
-+ 2016-10-25 Wilco Dijkstra <wdijkstr@arm.com>
++ 2019-08-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ PR target/78041
-+ * config/arm/neon.md (ashldi3_neon): Add "r 0 i" and "&r r i" variants.
-+ Remove partial overlap check for shift by 1.
-+ (ashldi3_neon): Likewise.
++ PR tree-optimization/91109
++ * lra-int.h (lra_need_for_scratch_reg_p): Declare.
++ * lra.c (lra): Use lra_need_for_scratch_reg_p.
++ * lra-spills.c (lra_need_for_scratch_reg_p): New function.
+
-+2017-01-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
++ 2019-08-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ Backport from mainline
-+ 2016-07-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
-+
-+ * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
-+ comments to explain why certain error messages make mention of
-+ undocumented options.
-+ (rs6000_invalid_builtin): Change error messages to replace mention
-+ of undocumented options with mention of the -mcpu=power9 option
-+ that enables those undocumented options.
-+ * config/rs6000/rs6000.h: Add macro definition of MASK_FLOAT128
-+ and change the macro definition of RS6000_BTM_FLOAT128 to correct
-+ an error that was discovered during the development of this patch.
-+ * config/rs6000/rs6000.opt: Add the Undocumented qualifier to the
-+ mpower9-fusion, mpower9-vector, mpower9-dform, and mmodulo entries.
-+ * doc/extend.texi (PowerPC AltiVec Built-in Functions): Modify
-+ descriptions of built-in functions so that they depend on
-+ -mcpu=power9 instead of on the corresponding undocumented flags.
-+ * doc/invoke.texi (Option Summary): Remove all mention of newly
-+ undocumented flags.
-+ (IBM RS/6000 and PowerPC Options): Likewise.
-+ * doc/md.texi (Constraints for Particuliar Machines): Remove all
-+ mention of newly undocumented flags.
-+
-+2017-01-05 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++ PR tree-optimization/91109
++ * lra-remat.c (update_scratch_ops): Remove assignment of the
++ hard register.
++
++2019-08-15 Steve Ellcey <sellcey@marvell.com>
+
+ Backport from mainline
-+ 2016-12-22 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++ 2019-08-02 Steve Ellcey <sellcey@marvell.com>
+
-+ * varasm.c (build_constant_desc): Use the alignment of the var
-+ decl instead of the original expression.
++ * omp-simd-clone.c (simd_clone_adjust_return_type): Remove call to
++ build_distinct_type_copy.
++ (simd_clone_adjust_argument_types): Ditto.
++ (simd_clone_adjust): Call build_distinct_type_copy here.
++ (expand_simd_clones): Ditto.
+
-+2017-01-04 Richard Biener <rguenther@suse.de>
++2019-08-15 Richard Biener <rguenther@suse.de>
+
++ PR tree-optimization/91445
+ Backport from mainline
-+ 2016-05-11 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/71055
-+ * tree-ssa-sccvn.c (vn_reference_lookup_3): When native-interpreting
-+ sth with precision not equal to access size verify we don't chop
-+ off bits.
-+
-+2017-01-03 Martin Liska <mliska@suse.cz>
++ 2019-07-05 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/91091
++ * tree-ssa-alias.h (get_continuation_for_phi): Add tbaa_p parameter.
++ (walk_non_aliased_vuses): Likewise.
++ * tree-ssa-alias.c (maybe_skip_until): Pass down tbaa_p.
++ (get_continuation_for_phi): New tbaa_p parameter and pass
++ it down.
++ (walk_non_aliased_vuses): Likewise.
++ * tree-ssa-pre.c (translate_vuse_through_block): Likewise.
++ * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
++ Likewise.
++ * tree-ssa-sccvn.c (struct vn_walk_cb_data): Add tbaa_p flag.
++ (vn_reference_lookup_3): Handle and pass down tbaa_p flag.
++ (vn_reference_lookup_pieces): Adjust.
++ (vn_reference_lookup): Remove alias-set altering, instead pass
++ down false as tbaa_p.
++
++ 2019-07-04 Richard Biener <rguenther@suse.de>
++
++ * tree-ssa-sccvn.h (vn_reference_lookup): Add last_vuse_ptr
++ argument.
++ * tree-ssa-sccvn.c (last_vuse_ptr, vn_walk_kind): Move
++ globals into...
++ (struct vn_walk_cb_data): New callback data struct.
++ (vn_reference_lookup_2): Adjust.
++ (vn_reference_lookup_3): Likewise.
++ (vn_reference_lookup_pieces): Likewise.
++ (vn_reference_lookup): Likewise, get last_vuse_ptr argument.
++ (visit_reference_op_load): Adjust.
++
++2019-08-14 Martin Sebor <msebor@redhat.com>
+
+ Backport from mainline
-+ 2016-12-21 Jakub Jelinek <jakub@redhat.com>
-+ Martin Liska <mliska@suse.cz>
+
-+ PR driver/78863
-+ * gcc.c (driver::build_option_suggestions): Do not add
-+ -fsanitize=all as a suggestion candidate.
++ 2019-08-01 Martin Sebor <msebor@redhat.com>
+
-+2017-01-03 Martin Liska <mliska@suse.cz>
++ PR c++/90947
++ * tree.c (type_initializer_zero_p): Define.
++ * tree.h (type_initializer_zero_p): New function.
+
-+ Backport from mainline
-+ 2016-12-22 Martin Liska <mliska@suse.cz>
++ 2019-08-05 Martin Sebor <msebor@redhat.com>
+
-+ PR tree-optimization/78886
-+ * tree-ssa-strlen.c (handle_builtin_malloc): Return when LHS
-+ is equal to NULL.
++ * doc/extend.texi (Common Variable Attributes): Document alias
++ attribute.
+
-+2017-01-03 Martin Liska <mliska@suse.cz>
++2019-08-12 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
-+ 2016-12-13 Martin Liska <mliska@suse.cz>
++ 2019-08-12 Richard Biener <rguenther@suse.de>
+
-+ PR tree-optimization/78428
-+ * expr.c (store_constructor_field): Add new arguments to the
-+ function.
-+ (store_constructor): Set up bitregion_end and add
-+ gcc_unreachable to fields that have either non-constant size
-+ or (and) offset.
++ PR lto/91375
++ * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on
++ flag_devirtualize.
+
-+2016-12-27 Jakub Jelinek <jakub@redhat.com>
++ 2019-08-12 Richard Biener <rguenther@suse.de>
+
-+ PR translation/78922
-+ * config/i386/stringop.opt: Remove.
++ PR driver/91130
++ * lto-wrapper.c (get_options_from_collect_gcc_options): Remove
++ lang_mask option, always use CL_DRIVER.
++ (find_and_merge_options): Adjust.
++ (run_gcc): Likewise.
+
-+2016-12-21 Jakub Jelinek <jakub@redhat.com>
++ 2019-08-07 Richard Earnshaw <rearnsha@arm.com>
+
-+ Backported from mainline
-+ 2016-12-13 Jakub Jelinek <jakub@redhat.com>
++ PR driver/91130
++ * lto-wrapper.c (find_and_merge_options): Use CL_DRIVER when
++ processing COLLECT_GCC_OPTIONS.
++ (run_gcc): Likewise.
++
++2019-08-12 Jakub Jelinek <jakub@redhat.com>
+
-+ PR ipa/77905
-+ * ipa-pure-const.c (cdtor_p): Return true for
-+ DECL_STATIC_{CON,DE}STRUCTOR even when it is
-+ DECL_LOOPING_CONST_OR_PURE_P.
++ * BASE-VER: Set to 9.2.1.
+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
-@@ -68,11 +1768,11 @@
- Backport from mainline
- 2016-11-07 Bernd Schmidt <bschmidt@redhat.com>
-
-- PR rtl-optimization/77309
-- * combine.c (make_compound_operation): Allow EQ for IN_CODE, and
-- don't assume an equality comparison for plain COMPARE.
-- (simplify_comparison): Pass a more accurate code to
-- make_compound_operation.
-+ PR rtl-optimization/77309
-+ * combine.c (make_compound_operation): Allow EQ for IN_CODE, and
-+ don't assume an equality comparison for plain COMPARE.
-+ (simplify_comparison): Pass a more accurate code to
-+ make_compound_operation.
-
- 2016-12-12 Thomas Preud'homme <thomas.preudhomme@arm.com>
-
-Index: gcc/testsuite/gcc.target/powerpc/vsx-elemrev-4.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-4.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-4.c (.../branches/gcc-6-branch)
-@@ -1,230 +0,0 @@
--/* { dg-do compile { target { powerpc64-*-* } } } */
--/* { dg-skip-if "do not override mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
--/* { dg-options "-mcpu=power9 -O0" } */
--/* { dg-require-effective-target powerpc_p9vector_ok } */
--/* { dg-skip-if "" { powerpc*-*-aix* } { "*" } { "" } } */
--/* { dg-final { scan-assembler-times "lxvx" 40 } } */
--/* { dg-final { scan-assembler-times "stxvx" 40 } } */
--
--#include <altivec.h>
--
--extern vector double vd, *vdp;
--extern vector signed long long vsll, *vsllp;
--extern vector unsigned long long vull, *vullp;
--extern vector float vf, *vfp;
--extern vector signed int vsi, *vsip;
--extern vector unsigned int vui, *vuip;
--extern vector signed short vss, *vssp;
--extern vector unsigned short vus, *vusp;
--extern vector signed char vsc, *vscp;
--extern vector unsigned char vuc, *vucp;
--extern double *dp;
--extern signed long long *sllp;
--extern unsigned long long *ullp;
--extern float *fp;
--extern signed int *sip;
--extern unsigned int *uip;
--extern signed short *ssp;
--extern unsigned short *usp;
--extern signed char *scp;
--extern unsigned char *ucp;
--
--void foo0 (void)
--{
-- vd = vec_xl (0, vdp);
--}
--
--void foo1 (void)
--{
-- vsll = vec_xl (0, vsllp);
--}
--
--void foo2 (void)
--{
-- vull = vec_xl (0, vullp);
--}
--
--void foo3 (void)
--{
-- vf = vec_xl (0, vfp);
--}
--
--void foo4 (void)
--{
-- vsi = vec_xl (0, vsip);
--}
--
--void foo5 (void)
--{
-- vui = vec_xl (0, vuip);
--}
--
--void foo6 (void)
--{
-- vss = vec_xl (0, vssp);
--}
--
--void foo7 (void)
--{
-- vus = vec_xl (0, vusp);
--}
--
--void foo8 (void)
--{
-- vsc = vec_xl (0, vscp);
--}
--
--void foo9 (void)
--{
-- vuc = vec_xl (0, vucp);
--}
--
--void foo10 (void)
--{
-- vec_xst (vd, 0, vdp);
--}
--
--void foo11 (void)
--{
-- vec_xst (vsll, 0, vsllp);
--}
--
--void foo12 (void)
--{
-- vec_xst (vull, 0, vullp);
--}
--
--void foo13 (void)
--{
-- vec_xst (vf, 0, vfp);
--}
--
--void foo14 (void)
--{
-- vec_xst (vsi, 0, vsip);
--}
--
--void foo15 (void)
--{
-- vec_xst (vui, 0, vuip);
--}
--
--void foo16 (void)
--{
-- vec_xst (vss, 0, vssp);
--}
--
--void foo17 (void)
--{
-- vec_xst (vus, 0, vusp);
--}
--
--void foo18 (void)
--{
-- vec_xst (vsc, 0, vscp);
--}
--
--void foo19 (void)
--{
-- vec_xst (vuc, 0, vucp);
--}
--
--void foo20 (void)
--{
-- vd = vec_xl (0, dp);
--}
--
--void foo21 (void)
--{
-- vsll = vec_xl (0, sllp);
--}
--
--void foo22 (void)
--{
-- vull = vec_xl (0, ullp);
--}
--
--void foo23 (void)
--{
-- vf = vec_xl (0, fp);
--}
--
--void foo24 (void)
--{
-- vsi = vec_xl (0, sip);
--}
--
--void foo25 (void)
--{
-- vui = vec_xl (0, uip);
--}
--
--void foo26 (void)
--{
-- vss = vec_xl (0, ssp);
--}
--
--void foo27 (void)
--{
-- vus = vec_xl (0, usp);
--}
--
--void foo28 (void)
--{
-- vsc = vec_xl (0, scp);
--}
--
--void foo29 (void)
--{
-- vuc = vec_xl (0, ucp);
--}
--
--void foo30 (void)
--{
-- vec_xst (vd, 0, dp);
--}
--
--void foo31 (void)
--{
-- vec_xst (vsll, 0, sllp);
--}
--
--void foo32 (void)
--{
-- vec_xst (vull, 0, ullp);
--}
--
--void foo33 (void)
--{
-- vec_xst (vf, 0, fp);
--}
--
--void foo34 (void)
--{
-- vec_xst (vsi, 0, sip);
--}
--
--void foo35 (void)
--{
-- vec_xst (vui, 0, uip);
--}
--
--void foo36 (void)
--{
-- vec_xst (vss, 0, ssp);
--}
--
--void foo37 (void)
--{
-- vec_xst (vus, 0, usp);
--}
--
--void foo38 (void)
--{
-- vec_xst (vsc, 0, scp);
--}
--
--void foo39 (void)
--{
-- vec_xst (vuc, 0, ucp);
--}
-Index: gcc/testsuite/gcc.target/powerpc/vsx-elemrev-1.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-1.c (.../branches/gcc-6-branch)
-@@ -1,143 +0,0 @@
--/* { dg-do compile { target { powerpc64le*-*-* } } } */
--/* { dg-skip-if "do not override mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
--/* { dg-options "-mcpu=power8 -O0" } */
--/* { dg-final { scan-assembler-times "lxvd2x" 18 } } */
--/* { dg-final { scan-assembler-times "lxvw4x" 6 } } */
--/* { dg-final { scan-assembler-times "stxvd2x" 18 } } */
--/* { dg-final { scan-assembler-times "stxvw4x" 6 } } */
--/* { dg-final { scan-assembler-times "xxpermdi" 24 } } */
--
--#include <altivec.h>
--
--extern vector double vd, *vdp;
--extern vector signed long long vsll, *vsllp;
--extern vector unsigned long long vull, *vullp;
--extern vector float vf, *vfp;
--extern vector signed int vsi, *vsip;
--extern vector unsigned int vui, *vuip;
--extern double *dp;
--extern signed long long *sllp;
--extern unsigned long long *ullp;
--extern float *fp;
--extern signed int *sip;
--extern unsigned int *uip;
--
--void foo0 (void)
--{
-- vd = vec_xl (0, vdp);
--}
--
--void foo1 (void)
--{
-- vsll = vec_xl (0, vsllp);
--}
--
--void foo2 (void)
--{
-- vull = vec_xl (0, vullp);
--}
--
--void foo3 (void)
--{
-- vf = vec_xl (0, vfp);
--}
--
--void foo4 (void)
--{
-- vsi = vec_xl (0, vsip);
--}
--
--void foo5 (void)
--{
-- vui = vec_xl (0, vuip);
--}
--
--void foo6 (void)
--{
-- vec_xst (vd, 0, vdp);
--}
--
--void foo7 (void)
--{
-- vec_xst (vsll, 0, vsllp);
--}
--
--void foo8 (void)
--{
-- vec_xst (vull, 0, vullp);
--}
--
--void foo9 (void)
--{
-- vec_xst (vf, 0, vfp);
--}
--
--void foo10 (void)
--{
-- vec_xst (vsi, 0, vsip);
--}
--
--void foo11 (void)
--{
-- vec_xst (vui, 0, vuip);
--}
--
--void foo20 (void)
--{
-- vd = vec_xl (0, dp);
--}
--
--void foo21 (void)
--{
-- vsll = vec_xl (0, sllp);
--}
--
--void foo22 (void)
--{
-- vull = vec_xl (0, ullp);
--}
--
--void foo23 (void)
--{
-- vf = vec_xl (0, fp);
--}
--
--void foo24 (void)
--{
-- vsi = vec_xl (0, sip);
--}
--
--void foo25 (void)
--{
-- vui = vec_xl (0, uip);
--}
--
--void foo26 (void)
--{
-- vec_xst (vd, 0, dp);
--}
--
--void foo27 (void)
--{
-- vec_xst (vsll, 0, sllp);
--}
--
--void foo28 (void)
--{
-- vec_xst (vull, 0, ullp);
--}
--
--void foo29 (void)
--{
-- vec_xst (vf, 0, fp);
--}
--
--void foo30 (void)
--{
-- vec_xst (vsi, 0, sip);
--}
--
--void foo31 (void)
--{
-- vec_xst (vui, 0, uip);
--}
-Index: gcc/testsuite/gcc.target/powerpc/vsx-elemrev-2.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-2.c (.../branches/gcc-6-branch)
-@@ -1,236 +0,0 @@
--/* { dg-do compile { target { powerpc64le*-*-* } } } */
--/* { dg-skip-if "do not override mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
--/* { dg-options "-mcpu=power9 -O0" } */
--/* { dg-require-effective-target powerpc_p9vector_ok } */
--/* { dg-skip-if "" { powerpc*-*-aix* } { "*" } { "" } } */
--/* { dg-final { scan-assembler-times "lxvd2x" 6 } } */
--/* { dg-final { scan-assembler-times "lxvw4x" 6 } } */
--/* { dg-final { scan-assembler-times "lxvh8x" 4 } } */
--/* { dg-final { scan-assembler-times "lxvb16x" 4 } } */
--/* { dg-final { scan-assembler-times "stxvd2x" 6 } } */
--/* { dg-final { scan-assembler-times "stxvw4x" 6 } } */
--/* { dg-final { scan-assembler-times "stxvh8x" 4 } } */
--/* { dg-final { scan-assembler-times "stxvb16x" 4 } } */
--
--#include <altivec.h>
--
--extern vector double vd, *vdp;
--extern vector signed long long vsll, *vsllp;
--extern vector unsigned long long vull, *vullp;
--extern vector float vf, *vfp;
--extern vector signed int vsi, *vsip;
--extern vector unsigned int vui, *vuip;
--extern vector signed short vss, *vssp;
--extern vector unsigned short vus, *vusp;
--extern vector signed char vsc, *vscp;
--extern vector unsigned char vuc, *vucp;
--extern double *dp;
--extern signed long long *sllp;
--extern unsigned long long *ullp;
--extern float *fp;
--extern signed int *sip;
--extern unsigned int *uip;
--extern signed short *ssp;
--extern unsigned short *usp;
--extern signed char *scp;
--extern unsigned char *ucp;
--
--void foo0 (void)
--{
-- vd = vec_xl (0, vdp);
--}
--
--void foo1 (void)
--{
-- vsll = vec_xl (0, vsllp);
--}
--
--void foo2 (void)
--{
-- vull = vec_xl (0, vullp);
--}
--
--void foo3 (void)
--{
-- vf = vec_xl (0, vfp);
--}
--
--void foo4 (void)
--{
-- vsi = vec_xl (0, vsip);
--}
--
--void foo5 (void)
--{
-- vui = vec_xl (0, vuip);
--}
--
--void foo6 (void)
--{
-- vss = vec_xl (0, vssp);
--}
--
--void foo7 (void)
--{
-- vus = vec_xl (0, vusp);
--}
--
--void foo8 (void)
--{
-- vsc = vec_xl (0, vscp);
--}
--
--void foo9 (void)
--{
-- vuc = vec_xl (0, vucp);
--}
--
--void foo10 (void)
--{
-- vec_xst (vd, 0, vdp);
--}
--
--void foo11 (void)
--{
-- vec_xst (vsll, 0, vsllp);
--}
--
--void foo12 (void)
--{
-- vec_xst (vull, 0, vullp);
--}
--
--void foo13 (void)
--{
-- vec_xst (vf, 0, vfp);
--}
--
--void foo14 (void)
--{
-- vec_xst (vsi, 0, vsip);
--}
--
--void foo15 (void)
--{
-- vec_xst (vui, 0, vuip);
--}
--
--void foo16 (void)
--{
-- vec_xst (vss, 0, vssp);
--}
--
--void foo17 (void)
--{
-- vec_xst (vus, 0, vusp);
--}
--
--void foo18 (void)
--{
-- vec_xst (vsc, 0, vscp);
--}
--
--void foo19 (void)
--{
-- vec_xst (vuc, 0, vucp);
--}
--
--void foo20 (void)
--{
-- vd = vec_xl (0, dp);
--}
--
--void foo21 (void)
--{
-- vsll = vec_xl (0, sllp);
--}
--
--void foo22 (void)
--{
-- vull = vec_xl (0, ullp);
--}
--
--void foo23 (void)
--{
-- vf = vec_xl (0, fp);
--}
--
--void foo24 (void)
--{
-- vsi = vec_xl (0, sip);
--}
--
--void foo25 (void)
--{
-- vui = vec_xl (0, uip);
--}
--
--void foo26 (void)
--{
-- vss = vec_xl (0, ssp);
--}
--
--void foo27 (void)
--{
-- vus = vec_xl (0, usp);
--}
--
--void foo28 (void)
--{
-- vsc = vec_xl (0, scp);
--}
--
--void foo29 (void)
--{
-- vuc = vec_xl (0, ucp);
--}
--
--void foo30 (void)
--{
-- vec_xst (vd, 0, dp);
--}
--
--void foo31 (void)
--{
-- vec_xst (vsll, 0, sllp);
--}
--
--void foo32 (void)
--{
-- vec_xst (vull, 0, ullp);
--}
--
--void foo33 (void)
--{
-- vec_xst (vf, 0, fp);
--}
--
--void foo34 (void)
--{
-- vec_xst (vsi, 0, sip);
--}
--
--void foo35 (void)
--{
-- vec_xst (vui, 0, uip);
--}
--
--void foo36 (void)
--{
-- vec_xst (vss, 0, ssp);
--}
--
--void foo37 (void)
--{
-- vec_xst (vus, 0, usp);
--}
--
--void foo38 (void)
--{
-- vec_xst (vsc, 0, scp);
--}
--
--void foo39 (void)
--{
-- vec_xst (vuc, 0, ucp);
--}
-Index: gcc/testsuite/gcc.target/powerpc/vsx-elemrev-3.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-3.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-3.c (.../branches/gcc-6-branch)
-@@ -1,142 +0,0 @@
--/* { dg-do compile { target { powerpc64-*-* } } } */
--/* { dg-skip-if "do not override mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
--/* { dg-options "-mcpu=power8 -O0" } */
--/* { dg-final { scan-assembler-times "lxvd2x" 16 } } */
--/* { dg-final { scan-assembler-times "lxvw4x" 8 } } */
--/* { dg-final { scan-assembler-times "stxvd2x" 16 } } */
--/* { dg-final { scan-assembler-times "stxvw4x" 8 } } */
--
--#include <altivec.h>
--
--extern vector double vd, *vdp;
--extern vector signed long long vsll, *vsllp;
--extern vector unsigned long long vull, *vullp;
--extern vector float vf, *vfp;
--extern vector signed int vsi, *vsip;
--extern vector unsigned int vui, *vuip;
--extern double *dp;
--extern signed long long *sllp;
--extern unsigned long long *ullp;
--extern float *fp;
--extern signed int *sip;
--extern unsigned int *uip;
--
--void foo0 (void)
--{
-- vd = vec_xl (0, vdp);
--}
--
--void foo1 (void)
--{
-- vsll = vec_xl (0, vsllp);
--}
--
--void foo2 (void)
--{
-- vull = vec_xl (0, vullp);
--}
--
--void foo3 (void)
--{
-- vf = vec_xl (0, vfp);
--}
--
--void foo4 (void)
--{
-- vsi = vec_xl (0, vsip);
--}
--
--void foo5 (void)
--{
-- vui = vec_xl (0, vuip);
--}
--
--void foo6 (void)
--{
-- vec_xst (vd, 0, vdp);
--}
--
--void foo7 (void)
--{
-- vec_xst (vsll, 0, vsllp);
--}
--
--void foo8 (void)
--{
-- vec_xst (vull, 0, vullp);
--}
--
--void foo9 (void)
--{
-- vec_xst (vf, 0, vfp);
--}
--
--void foo10 (void)
--{
-- vec_xst (vsi, 0, vsip);
--}
--
--void foo11 (void)
--{
-- vec_xst (vui, 0, vuip);
--}
--
--void foo20 (void)
--{
-- vd = vec_xl (0, dp);
--}
--
--void foo21 (void)
--{
-- vsll = vec_xl (0, sllp);
--}
--
--void foo22 (void)
--{
-- vull = vec_xl (0, ullp);
--}
--
--void foo23 (void)
--{
-- vf = vec_xl (0, fp);
--}
--
--void foo24 (void)
--{
-- vsi = vec_xl (0, sip);
--}
--
--void foo25 (void)
--{
-- vui = vec_xl (0, uip);
--}
--
--void foo26 (void)
--{
-- vec_xst (vd, 0, dp);
--}
--
--void foo27 (void)
--{
-- vec_xst (vsll, 0, sllp);
--}
--
--void foo28 (void)
--{
-- vec_xst (vull, 0, ullp);
--}
--
--void foo29 (void)
--{
-- vec_xst (vf, 0, fp);
--}
--
--void foo30 (void)
--{
-- vec_xst (vsi, 0, sip);
--}
--
--void foo31 (void)
--{
-- vec_xst (vui, 0, uip);
--}
-Index: gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c (.../branches/gcc-6-branch)
-@@ -1,7 +1,5 @@
- /* { dg-do compile { target { powerpc*-*-linux* } } } */
--/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
--/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
--/* { dg-require-effective-target powerpc_vsx_ok } */
-+/* { dg-require-effective-target hard_dfp } */
- /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
- /* { dg-options "-mcpu=power7 -O2" } */
- /* { dg-final { scan-assembler-times "ddedpd " 4 } } */
-@@ -10,11 +8,17 @@
- /* { dg-final { scan-assembler-times "diex " 1 } } */
- /* { dg-final { scan-assembler-times "dscli " 2 } } */
- /* { dg-final { scan-assembler-times "dscri " 2 } } */
-+/* { dg-final { scan-assembler-times "std " 1 { target lp64 } } } */
-+/* { dg-final { scan-assembler-times "ld " 1 { target lp64 } } } */
-+/* 32-bit needs a stack frame, and needs two GPR mem insns per _Decimal64. */
-+/* { dg-final { scan-assembler-times "stwu " 2 { target ilp32 } } } */
-+/* { dg-final { scan-assembler-times "stw " 2 { target ilp32 } } } */
-+/* { dg-final { scan-assembler-times "lwz " 2 { target ilp32 } } } */
-+/* { dg-final { scan-assembler-times "stfd " 1 } } */
-+/* { dg-final { scan-assembler-times "lfd " 1 } } */
- /* { dg-final { scan-assembler-not "bl __builtin" } } */
- /* { dg-final { scan-assembler-not "dctqpq" } } */
- /* { dg-final { scan-assembler-not "drdpq" } } */
--/* { dg-final { scan-assembler-not "stfd" } } */
--/* { dg-final { scan-assembler-not "lfd" } } */
-
- _Decimal64
- do_dedpd_0 (_Decimal64 a)
-@@ -52,7 +56,7 @@
- return __builtin_denbcd (1, a);
- }
+ * GCC 9.2.0 released.
+@@ -513,7 +1756,7 @@
--_Decimal64
-+long long
- do_xex (_Decimal64 a)
- {
- return __builtin_dxex (a);
-@@ -59,7 +63,7 @@
- }
+ 2019-07-11 Uroš Bizjak <ubizjak@gmail.com>
- _Decimal64
--do_iex (_Decimal64 a, _Decimal64 b)
-+do_iex (long long a, _Decimal64 b)
- {
- return __builtin_diex (a, b);
- }
-Index: gcc/testsuite/gcc.target/powerpc/pr79268.c
+- Backported from mainline
++ Backport from mainline
+ 2019-07-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/i386/sse.md (*andnot<mode>3_bcst): Fix VI/VI48_AVX512VL typo.
+Index: gcc/testsuite/gcc.target/powerpc/darn-3.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr79268.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr79268.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */
-+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* powerpc-*-aix* } } */
-+/* { dg-options "-mcpu=power8 -O3 " } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/darn-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/darn-3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,16 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-aix* } } */
++/* { dg-options "-O2 -mdejagnu-cpu=power9" } */
+
-+/* Verify that vec_xl and vec_xst accept vector pixel parameters. */
++static int darn32(void) { return __builtin_darn_32(); }
+
-+/* Test case to resolve PR79268. */
++int four(void)
++{
++ int sum = 0;
++ int i;
++ for (i = 0; i < 4; i++)
++ sum += darn32();
++ return sum;
++}
++
++/* { dg-final { scan-assembler-times {(?n)\mdarn .*,0\M} 4 } } */
+Index: gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,47 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target powerpc_vsx_ok } */
++/* { dg-options "-O2 -fdump-tree-fre-all -mvsx" } */
++
++/* Verify we remove a redundant load that occurs both before and after
++we call a vector load builtin.
++This testcase is introduced as we updated a number of our vector load
++built-ins with the attribute of PURE instead of MEM, to indicate that
++those builtins only read from memory, versus reading from and writing
++to the same.
++This means we can identify the redundant load instructions in an earlier
++pass, and optimize them away. */
+
+#include <altivec.h>
+
-+vector pixel a;
++vector signed short load_data;
+
-+vector pixel
-+pr79268 (vector pixel *x)
++vector signed short foo()
+{
-+ vec_xst (a, 0, x);
-+ return vec_xl (0, x);
++ vector signed short r11,r12,r13;
++ r11 = load_data;
++ r12 = vec_xl (0, &load_data[0]);
++ r13 = load_data;
++ return (r11 + r12 + r13);
+}
-Index: gcc/testsuite/gcc.target/powerpc/pr79439.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr79439.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr79439.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,29 @@
-+/* { dg-do compile { target { powerpc64*-*-linux* && lp64 } } } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+/* On the Linux 64-bit ABIs, we should not eliminate NOP in the 'rec' call if
-+ -fpic is used because rec can be interposed at link time (since it is
-+ external), and the recursive call should call the interposed function. The
-+ Linux 32-bit ABIs do not require NOPs after the BL instruction. */
+
-+int f (void);
-+
-+void
-+g (void)
++vector signed short biz()
+{
++ vector signed short r21,r22,r23;
++ r21 = load_data;
++ r22 = vec_lvehx (0, &load_data[0]);
++ r23 = load_data;
++ return (r21 + r22 + r23);
+}
+
-+int
-+rec (int a)
++vector signed short bar()
+{
-+ int ret = 0;
-+ if (a > 10 && f ())
-+ ret += rec (a - 1);
-+ g ();
-+ return a + ret;
++ vector signed short r31,r32,r33;
++ r31 = load_data;
++ r32 = vec_lvx (0, &load_data[0]);
++ r33 = load_data;
++ return (r31 + r32 + r33);
+}
+
-+/* { dg-final { scan-assembler-times {\mbl f\M} 1 } } */
-+/* { dg-final { scan-assembler-times {\mbl g\M} 2 } } */
-+/* { dg-final { scan-assembler-times {\mbl rec\M} 1 } } */
-+/* { dg-final { scan-assembler-times {\mnop\M} 4 } } */
-Index: gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c (.../branches/gcc-6-branch)
-@@ -1,7 +1,5 @@
- /* { dg-do compile { target { powerpc*-*-linux* } } } */
--/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
--/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
--/* { dg-require-effective-target powerpc_vsx_ok } */
-+/* { dg-require-effective-target hard_dfp } */
- /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
- /* { dg-options "-mcpu=power7 -O2" } */
- /* { dg-final { scan-assembler-times "ddedpdq " 4 } } */
-Index: gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,26 @@
++/* { dg-final { scan-tree-dump-times "Removing dead stmt r13_. = load_data;" 1 "fre1" } } */
++/* { dg-final { scan-tree-dump-times "Removing dead stmt r23_. = load_data;" 1 "fre1" } } */
++/* { dg-final { scan-tree-dump-times "Removing dead stmt r33_. = load_data;" 1 "fre1" } } */
+Index: gcc/testsuite/gcc.target/powerpc/pr70010.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
+/* { dg-do compile } */
-+/* { dg-require-effective-target powerpc_p8vector_ok } */
-+/* { dg-options "-mcpu=power8" } */
++/* { dg-options "-O2 -finline-functions -Wno-psabi -mvsx" } */
++/* { dg-final { scan-assembler {\mbl \.?vadd_no_vsx\M} } } */
+
-+#include <altivec.h>
++typedef int vec_t __attribute__((vector_size(16)));
+
-+vector signed int
-+test_vsi_packs_vsll_vsll (vector signed long long x,
-+ vector signed long long y)
++static vec_t
++__attribute__((__target__("no-vsx")))
++vadd_no_vsx (vec_t a, vec_t b)
+{
-+ return vec_packs (x, y);
++ return a + b;
+}
+
-+vector unsigned int
-+test_vui_packs_vull_vull (vector unsigned long long x,
-+ vector unsigned long long y)
++vec_t
++__attribute__((__target__("vsx")))
++call_vadd_no_vsx (vec_t x, vec_t y, vec_t z)
+{
-+ return vec_packs (x, y);
++ return vadd_no_vsx (x, y) - z;
+}
-+
-+/* Expected test results:
-+ test_vsi_packs_vsll_vsll 1 vpksdss
-+ test_vui_packs_vull_vull 1 vpkudus */
-+
-+/* { dg-final { scan-assembler-times "vpksdss" 1 } } */
-+/* { dg-final { scan-assembler-times "vpkudus" 1 } } */
-Index: gcc/testsuite/gcc.target/powerpc/pr79197.c
+Index: gcc/testsuite/gcc.target/powerpc/pr70010-2.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr79197.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr79197.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,11 @@
-+/* PR target/79197 */
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-2.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
+/* { dg-do compile } */
-+/* { dg-options "-O0 -mno-popcntd" } */
++/* { dg-options "-O2 -flto -mno-vsx" } */
++/* { dg-require-effective-target lto } */
+
-+unsigned a;
++vector int c, a, b;
+
-+void
-+foo (void)
++static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
++foo ()
+{
-+ a = *(double *) (__UINTPTR_TYPE__) 0x400000;
++ c = a + b;
+}
-Index: gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/vec-xxpermdi.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,68 @@
-+/* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */
-+/* { dg-options "-O2 -mvsx" } */
-+
-+/* Added for PR79261 to test that vec_xxpermdi works correctly for
-+ both BE and LE targets. */
-+
-+#include <altivec.h>
-+void abort (void);
-+
-+vector double vdx = { 0.0, 1.0 };
-+vector double vdy = { 2.0, 3.0 };
-+vector double vdz;
-+
-+vector signed long long vsllx = { 0, 1 };
-+vector signed long long vslly = { 2, 3 };
-+vector signed long long vsllz;
-+
-+vector float vfx = { 0.0, 1.0, 2.0, 3.0 };
-+vector float vfy = { 4.0, 5.0, 6.0, 7.0 };
-+vector float vfz;
-+
-+vector signed int vsix = { 0, 1, 2, 3 };
-+vector signed int vsiy = { 4, 5, 6, 7 };
-+vector signed int vsiz;
-+
-+vector signed short vssx = { 0, 1, 2, 3, 4, 5, 6, 7 };
-+vector signed short vssy = { 8, 9, 10, 11, 12, 13, 14, 15 };
-+vector signed short vssz;
-+
-+vector signed char vscx = { 0, 1, 2, 3, 4, 5, 6, 7,
-+ 8, 9, 10, 11, 12, 13, 14, 15 };
-+vector signed char vscy = { 16, 17, 18, 19, 20, 21, 22, 23,
-+ 24, 25, 26, 27, 28, 29, 30, 31 };
-+vector signed char vscz;
+
+int
+main ()
+{
-+ vdz = vec_xxpermdi (vdx, vdy, 0b01);
-+ if (vdz[0] != 0.0 || vdz[1] != 3.0)
-+ abort ();
-+
-+ vsllz = vec_xxpermdi (vsllx, vslly, 0b10);
-+ if (vsllz[0] != 1 || vsllz[1] != 2)
-+ abort ();
-+
-+ vfz = vec_xxpermdi (vfx, vfy, 0b01);
-+ if (vfz[0] != 0.0 || vfz[1] != 1.0 || vfz[2] != 6.0 || vfz[3] != 7.0)
-+ abort ();
-+
-+ vsiz = vec_xxpermdi (vsix, vsiy, 0b10);
-+ if (vsiz[0] != 2 || vsiz[1] != 3 || vsiz[2] != 4 || vsiz[3] != 5)
-+ abort ();
-+
-+ vssz = vec_xxpermdi (vssx, vssy, 0b00);
-+ if (vssz[0] != 0 || vssz[1] != 1 || vssz[2] != 2 || vssz[3] != 3
-+ || vssz[4] != 8 || vssz[5] != 9 || vssz[6] != 10 || vssz[7] != 11)
-+ abort ();
-+
-+ vscz = vec_xxpermdi (vscx, vscy, 0b11);
-+ if (vscz[0] != 8 || vscz[1] != 9 || vscz[2] != 10 || vscz[3] != 11
-+ || vscz[4] != 12 || vscz[5] != 13 || vscz[6] != 14 || vscz[7] != 15
-+ || vscz[8] != 24 || vscz[9] != 25 || vscz[10] != 26 || vscz[11] != 27
-+ || vscz[12] != 28 || vscz[13] != 29 || vscz[14] != 30 || vscz[15] != 31)
-+ abort ();
-+
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c (.../branches/gcc-6-branch)
-@@ -35,6 +35,8 @@
- /* { dg-final { scan-assembler "xvcmpgesp" } } */
- /* { dg-final { scan-assembler "xxsldwi" } } */
- /* { dg-final { scan-assembler-not "call" } } */
-+/* { dg-final { scan-assembler "xvcvsxdsp" } } */
-+/* { dg-final { scan-assembler "xvcvuxdsp" } } */
-
- extern __vector int si[][4];
- extern __vector short ss[][4];
-@@ -50,7 +52,9 @@
- #ifdef __VSX__
- extern __vector double d[][4];
- extern __vector long sl[][4];
-+extern __vector long long sll[][4];
- extern __vector unsigned long ul[][4];
-+extern __vector unsigned long long ull[][4];
- extern __vector __bool long bl[][4];
- #endif
-
-@@ -211,3 +215,22 @@
- d[i][0] = __builtin_vsx_xxsldwi (d[i][1], d[i][2], 3); i++;
- return i;
- }
-+
-+int do_xvcvsxdsp (void)
-+{
-+ int i = 0;
-+
-+ f[i][0] = __builtin_vsx_xvcvsxdsp (sll[i][1]); i++;
-+
-+ return i;
++ foo ();
++ c = a + b;
+}
-+
-+int do_xvcvuxdsp (void)
-+{
-+ int i = 0;
-+
-+ f[i][0] = __builtin_vsx_xvcvuxdsp (ull[i][1]); i++;
-+
-+ return i;
-+}
-+
-Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c
+Index: gcc/testsuite/gcc.target/powerpc/pr70010-4.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-26.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* { dg-do compile { target { powerpc64le-*-* } } } */
-+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
-+/* { dg-options "-mcpu=power8 -O3 " } */
-+/* { dg-final { scan-assembler-times "lxvw4x" 2 } } */
-+/* { dg-final { scan-assembler "stxvw4x" } } */
-+/* { dg-final { scan-assembler-not "xxpermdi" } } */
-+
-+/* Verify that swap optimization does not interfere with element-reversing
-+ loads and stores. */
-+
-+/* Test case to resolve PR79044. */
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-4.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mvsx" } */
+
-+#include <altivec.h>
++vector int c, a, b;
+
-+void pr79044 (float *x, float *y, float *z)
++static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
++foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */
+{
-+ vector float a = __builtin_vec_xl (0, x);
-+ vector float b = __builtin_vec_xl (0, y);
-+ vector float c = __builtin_vec_mul (a, b);
-+ __builtin_vec_xst (c, 0, z);
++ c = a + b;
+}
-Index: gcc/testsuite/gcc.target/powerpc/pr79951.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr79951.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr79951.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-require-effective-target powerpc_p8vector_ok } */
-+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
-+/* { dg-options "-mcpu=power8 -S -mno-cmpb" } */
+
-+float testf (float x, float y)
++int
++main ()
+{
-+ return __builtin_copysignf (x, y);
++ foo (); /* { dg-message "called from here" } */
++ c = a + b;
+}
-+
-Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c
+Index: gcc/testsuite/gcc.target/powerpc/pr91275.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,36 @@
-+/* { dg-do compile { target { powerpc64le-*-* } } } */
-+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
-+/* { dg-options "-mcpu=power8 -O3 " } */
-+/* { dg-final { scan-assembler-times "lxvd2x" 2 } } */
-+/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */
-+/* { dg-final { scan-assembler-times "xxpermdi" 3 } } */
-+
-+/* Verify that swap optimization works correctly for a VSX direct splat.
-+ The three xxpermdi's that are generated correspond to two splats
-+ and the __builtin_vsx_xxpermdi. */
-+
-+int printf (const char *__restrict __format, ...);
-+typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr91275.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr91275.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,26 @@
++/* Test that we generate vpmsumd correctly without a swap error. */
+
-+double s1[] = {2134.3343, 6678.346};
-+double s2[] = {41124.234, 6678.346};
-+long long dd[] = {1, 2}, d[2];
-+union{long long l[2]; double d[2];} e;
++/* { dg-do run { target { p8vector_hw } } } */
++/* { dg-options "-O2 -std=gnu11" } */
+
-+void
-+foo ()
-+{
-+ __m128d source1, source2, dest;
-+ __m128d a, b, c;
-+
-+ e.d[1] = s1[1];
-+ e.l[0] = !__builtin_isunordered(s1[0], s2[0])
-+ && s1[0] == s2[0] ? -1 : 0;
-+ source1 = __builtin_vec_vsx_ld (0, s1);
-+ source2 = __builtin_vec_vsx_ld (0, s2);
-+ a = __builtin_vec_splat (source1, 0);
-+ b = __builtin_vec_splat (source2, 0);
-+ c = (__m128d)__builtin_vec_cmpeq (a, b);
-+ dest = __builtin_vsx_xxpermdi (source1, c, 1);
-+ *(__m128d *)d = dest;
-+}
-Index: gcc/testsuite/gcc.target/powerpc/pr80246.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr80246.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr80246.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,37 @@
-+/* { dg-do compile { target { powerpc*-*-linux* } } } */
-+/* { dg-require-effective-target hard_dfp } */
-+/* { dg-options "-O2" } */
-+/* { dg-final { scan-assembler-times "dxex " 1 } } */
-+/* { dg-final { scan-assembler-times "dxexq " 1 } } */
-+/* { dg-final { scan-assembler-times "diex " 1 } } */
-+/* { dg-final { scan-assembler-times "diexq " 1 } } */
-+/* { dg-final { scan-assembler-not "bl __builtin" } } */
-+/* Verify we don't generate any drintn., drintnq., dctfix, dctfixq, dcffix
-+ or dcffixq instructions, as they imply we are getting unwanted casting. */
-+/* { dg-final { scan-assembler-not "drintn\[q\]\." } } */
-+/* { dg-final { scan-assembler-not "dctfix\[q\]" } } */
-+/* { dg-final { scan-assembler-not "dcffix\[q\]" } } */
-+
-+long long
-+do_xex (_Decimal64 arg)
-+{
-+ return __builtin_dxex (arg);
-+}
++#include <altivec.h>
+
-+long long
-+do_xexq (_Decimal128 arg)
-+{
-+ return __builtin_dxexq (arg);
-+}
++int main() {
+
-+_Decimal64
-+do_iex (long long exp, _Decimal64 arg)
-+{
-+ return __builtin_diex (exp, arg);
-+}
++ const unsigned long long r0l = 0x8e7dfceac070e3a0;
++ vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v;
++ const vector unsigned long long pd
++ = (vector unsigned long long) {0xc2LLU << 56, 0};
+
-+_Decimal128
-+do_iexq (long long exp, _Decimal128 arg)
-+{
-+ return __builtin_diexq (exp, arg);
-+}
-Index: gcc/testsuite/gcc.target/powerpc/pr79947.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr79947.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr79947.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-options "-Ofast -mno-powerpc-gfxopt -mcmpb -mno-vsx" } */
++ v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd);
+
-+/* PR 79949: Compiler segmentation fault due to not having conditional move
-+ support for the target if the -mno-powerpc-gfxopt option is used. */
++#if __LITTLE_ENDIAN__
++ if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff)
++ __builtin_abort ();
++#else
++ if (v[1] != 0x4000000000000000 || v[0] != 0x65bd7ab605a4a8ff)
++ __builtin_abort ();
++#endif
+
-+float a, b;
-+void
-+c ()
-+{
-+ a = __builtin_sqrtf (b);
-+}
-Index: gcc/testsuite/gcc.target/powerpc/pr78543.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr78543.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr78543.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,60 @@
-+/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */
-+/* { dg-require-effective-target powerpc_p8vector_ok } */
-+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
-+/* { dg-options "-mcpu=power8 -O1 -mno-lra" } */
-+
-+typedef long a;
-+enum c { e, f, g, h, i, ab } j();
-+int l, n, o, p;
-+a q, r;
-+void *memcpy();
-+void b();
-+static int k(int *s) {
-+ int m;
-+ if (j(&m))
-+ *s = m;
-+ return !0;
-+}
-+void d(char s) {
-+ int af[4];
-+ int ag;
-+ enum c ah;
-+ char ai[24 << 11];
-+ unsigned aj;
-+ if (!k(&aj))
-+ goto ak;
-+ for (;;) {
-+ if (!k(&ag))
-+ goto ak;
-+ switch (ah) {
-+ case e:
-+ b("");
-+ b("bad length %d for GUID in fileinfo v%u for \"%s\"");
-+ case i:
-+ b("bad length %d for TTH in fileinfo v%u for \"%s\"", aj);
-+ case ab:
-+ if (ag % 24)
-+ b("for \"%s\"", s);
-+ case f:
-+ if (20 == ag)
-+ case h:
-+ if (20 == ag)
-+ o = 0;
-+ break;
-+ case g:
-+ memcpy(af, ai, sizeof af);
-+ b();
-+ if (p) {
-+ a al, am;
-+ r = al << 2 | am;
-+ n = af[2];
-+ al = n;
-+ l = __builtin_bswap32(af[3]);
-+ am = q = n | l;
-+ }
-+ default:
-+ b("%s0 unhandled field ID %u 0", __func__);
-+ }
-+ }
-+ak:;
++ return 0;
+}
-Index: gcc/testsuite/gcc.target/powerpc/pr71310.c
+Index: gcc/testsuite/gcc.target/powerpc/pr70010-1.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr71310.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr71310.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,23 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-options "-O2" } */
-+
-+/* { dg-final { scan-assembler-not {\mld} } } */
-+/* { dg-final { scan-assembler-not {\mlwz} } } */
-+/* { dg-final { scan-assembler-times {\mlbz} 2 } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -flto -mvsx" } */
++/* { dg-require-effective-target lto } */
+
-+struct mmu_gather {
-+ long end;
-+ int fullmm : 1;
-+};
++vector int c, a, b;
+
-+void __tlb_reset_range(struct mmu_gather *p1)
++static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
++foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */
+{
-+ if (p1->fullmm)
-+ p1->end = 0;
++ c = a + b;
+}
+
-+void tlb_gather_mmu(struct mmu_gather *p1)
++int
++main ()
+{
-+ p1->fullmm = 1;
-+ __tlb_reset_range(p1);
++ foo (); /* { dg-message "called from here" } */
++ c = a + b;
+}
-Index: gcc/testsuite/gcc.target/powerpc/pr79544.c
+Index: gcc/testsuite/gcc.target/powerpc/pr70010-3.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/powerpc/pr79544.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/powerpc/pr79544.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-require-effective-target powerpc_p8vector_ok } */
-+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
-+/* { dg-options "-mcpu=power8 -O2" } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mno-vsx" } */
+
-+#include <altivec.h>
++vector int c, a, b;
+
-+vector unsigned long long
-+test_sra (vector unsigned long long x, vector unsigned long long y)
++static inline void __attribute__ ((__always_inline__, target ("no-vsx")))
++foo ()
+{
-+ return vec_sra (x, y);
++ c = a + b;
+}
+
-+vector unsigned long long
-+test_vsrad (vector unsigned long long x, vector unsigned long long y)
++int
++main ()
+{
-+ return vec_vsrad (x, y);
++ foo ();
++ c = a + b;
+}
-+
-+/* { dg-final { scan-assembler-times {\mvsrad\M} 2 } } */
-+
-Index: gcc/testsuite/gcc.target/arm/atomic_loaddi_10.c
+Index: gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/arm/atomic_loaddi_10.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/arm/atomic_loaddi_10.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+/* { dg-do compile } */
-+/* { dg-require-effective-target arm_arch_v7ve_ok } */
-+/* { dg-options "-O2" } */
-+/* { dg-add-options arm_arch_v7ve } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++/* Test that using an Armv8-a hard-float target doesn't
++ break CRC intrinsics. */
+
-+#include <stdatomic.h>
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-options "-mfloat-abi=hard -march=armv8-a+simd+crc" } */
+
-+atomic_llong x = 0;
++#include <arm_acle.h>
+
-+atomic_llong get_x()
++uint32_t
++foo (uint32_t a, uint32_t b)
+{
-+ return atomic_load(&x);
++ return __crc32cw (a, b);
+}
-+
-+/* { dg-final { scan-assembler "ldrd" } } */
-Index: gcc/testsuite/gcc.target/arm/atomic_loaddi_11.c
+Index: gcc/testsuite/gcc.target/arm/pr88167-1.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/arm/atomic_loaddi_11.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/arm/atomic_loaddi_11.c (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/gcc.target/arm/pr88167-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/pr88167-1.c (.../branches/gcc-9-branch)
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
-+/* { dg-require-effective-target arm_arch_v7r_ok } */
-+/* { dg-skip-if "do not override -mcpu" { *-*-* } { "-mcpu=*" "-march=*" } { "-mcpu=cortex-r5" } } */
-+/* { dg-options "-O2 -mcpu=cortex-r5" } */
++/* { dg-require-effective-target arm_thumb1_ok } */
++/* { dg-options "-O2 -mthumb" } */
+
-+#include <stdatomic.h>
++void *retaddr;
+
-+atomic_llong x = 0;
++void foo (void) {
++ retaddr = __builtin_return_address (0);
+
-+atomic_llong get_x()
-+{
-+ return atomic_load(&x);
++ /* Used for enforcing registers stacking. */
++ asm volatile ("" : : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
++ "r8", "r9", "r10", "r11", "r12");
+}
+
-+/* { dg-final { scan-assembler-not "ldrd" } } */
-Index: gcc/testsuite/gcc.target/arm/pr78255-1.c
++/* { dg-final { scan-assembler-not "mov\tlr," } } */
+Index: gcc/testsuite/gcc.target/arm/pr88167-2.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/arm/pr78255-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/arm/pr78255-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,57 @@
+--- a/src/gcc/testsuite/gcc.target/arm/pr88167-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/pr88167-2.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
++/* { dg-skip-if "" { ! { arm_thumb1 } } } */
+
-+#include <string.h>
-+
-+struct table_s
-+ {
-+ void (*fun0)
-+ ( void );
-+ void (*fun1)
-+ ( void );
-+ void (*fun2)
-+ ( void );
-+ void (*fun3)
-+ ( void );
-+ void (*fun4)
-+ ( void );
-+ void (*fun5)
-+ ( void );
-+ void (*fun6)
-+ ( void );
-+ void (*fun7)
-+ ( void );
-+ } table;
-+
-+void callback0(){__asm("mov r0, r0 \n\t");}
-+void callback1(){__asm("mov r0, r0 \n\t");}
-+void callback2(){__asm("mov r0, r0 \n\t");}
-+void callback3(){__asm("mov r0, r0 \n\t");}
-+void callback4(){__asm("mov r0, r0 \n\t");}
-+
-+void test (void) {
-+ memset(&table, 0, sizeof table);
-+
-+ asm volatile ("" : : : "r3");
-+
-+ table.fun0 = callback0;
-+ table.fun1 = callback1;
-+ table.fun2 = callback2;
-+ table.fun3 = callback3;
-+ table.fun4 = callback4;
-+ table.fun0();
++int __attribute__((noclone, noinline))
++foo (int a, long long b) {
++ /* Used for enforcing registers stacking. */
++ asm volatile ("" : : : "r0", "r1", "r2", "r3",
++ "r8", "r9", "r10", "r11", "r12");
++ return (int) b;
+}
+
-+void foo (void)
-+{
-+ __builtin_abort ();
-+}
-+
-+int main (void)
++int main ()
+{
-+ unsigned long p = (unsigned long) &foo;
-+ asm volatile ("mov r3, %0" : : "r" (p));
-+ test ();
-+
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.target/arm/vfp-longcall-apcs.c
++ if (foo (1, 0x1000000000000003LL) != 3)
++ __builtin_abort ();
++ __builtin_exit (0);
++}
+Index: gcc/testsuite/gcc.target/arm/multilib.exp
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/multilib.exp (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/multilib.exp (.../branches/gcc-9-branch)
+@@ -753,6 +753,28 @@
+ {-march=armv8-m.main+fp.dp -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ {-march=armv8-m.main+fp+dsp -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ {-march=armv8-m.main+fp.dp+dsp -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
++ {-march=armv7-r+fp -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
++ {-march=armv7-r+fp -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
++ {-march=armv7-r+fp+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
++ {-march=armv7-r+fp+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
++ {-march=armv7-r+vfpv3-d16-fp16 -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
++ {-march=armv7-r+vfpv3-d16-fp16 -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
++ {-march=armv7-r+vfpv3-d16-fp16+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp"
++ {-march=armv7-r+vfpv3-d16-fp16+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard"
++ {-march=armv7-r+fp.sp -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv7-r+fp.sp -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
++ {-march=armv7-r+fp.sp+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv7-r+fp.sp+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
++ {-march=armv7-r+vfpv3xd -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv7-r+vfpv3xd -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
++ {-march=armv7-r+vfpv3xd+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv7-r+vfpv3xd+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
++ {-march=armv7-r+vfpv3xd-fp16+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv7-r+vfpv3xd-fp16+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
++ {-march=armv8-r+fp.sp -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv8-r+fp.sp -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
++ {-march=armv8-r+crc+fp.sp -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp"
++ {-march=armv8-r+crc+fp.sp -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard"
+ } {
+ check_multi_dir $opts $dir
+ }
+Index: gcc/testsuite/gcc.target/s390/sigfpe-eh.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/arm/vfp-longcall-apcs.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/arm/vfp-longcall-apcs.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,32 @@
-+/* { dg-do run } */
-+/* { dg-options "-mapcs-frame -O -foptimize-sibling-calls -ffunction-sections" } */
-+
-+extern void abort (void);
+--- a/src/gcc/testsuite/gcc.target/s390/sigfpe-eh.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/s390/sigfpe-eh.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-march=z196 -O2 -fexceptions -fnon-call-exceptions" } */
+
-+static __attribute__((noclone, noinline, long_call))
-+int foo (int a, int b, int c, int d, double i)
-+{
-+ return a;
-+}
++extern float f (void);
++extern float g (void);
+
-+static __attribute__((noclone, noinline))
-+double baz (double i)
++float h (float x, float y)
+{
-+ return i;
++ return x < y ? f () : g ();
+}
+Index: gcc/testsuite/gcc.target/s390/s390.exp
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/s390/s390.exp (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/s390/s390.exp (.../branches/gcc-9-branch)
+@@ -86,18 +86,22 @@
+ int main (void)
+ {
+ asm (".machinemode zarch" : : );
+- #if __ARCH__ >= 11
+- asm ("lcbb %%r2,0(%%r15),0" : : );
++ #if __ARCH__ >= 13
++ asm ("ncrk %%r2,%%r2,%%r2" : : : "r2");
++ #elif __ARCH__ >= 12
++ asm ("agh %%r2,0(%%r15)" : : : "r2");
++ #elif __ARCH__ >= 11
++ asm ("lochiz %%r2,42" : : : "r2");
+ #elif __ARCH__ >= 10
+- asm ("risbgn %%r2,%%r2,0,0,0" : : );
++ asm ("risbgn %%r2,%%r2,0,0,0" : : : "r2");
+ #elif __ARCH__ >= 9
+- asm ("sgrk %%r2,%%r2,%%r2" : : );
++ asm ("sgrk %%r2,%%r2,%%r2" : : : "r2");
+ #elif __ARCH__ >= 8
+- asm ("rosbg %%r2,%%r2,0,0,0" : : );
++ asm ("rosbg %%r2,%%r2,0,0,0" : : : "r2");
+ #elif __ARCH__ >= 7
+- asm ("nilf %%r2,0" : : );
++ asm ("nilf %%r2,0" : : : "r2");
+ #elif __ARCH__ >= 6
+- asm ("lay %%r2,0(%%r15)" : : );
++ asm ("lay %%r2,0(%%r15)" : : : "r2");
+ #elif __ARCH__ >= 5
+ asm ("tam" : : );
+ #endif
+@@ -107,8 +111,8 @@
+ asm ("etnd %0" : "=d" (nd));
+ }
+ #endif
+- #ifdef __VX__
+- asm ("vzero %%v0" : : );
++ #if defined (__VX__) && defined (__zarch__)
++ asm ("vzero %%v0" : : : "v0");
+ #endif
+ return 0;
+ }
+Index: gcc/testsuite/gcc.target/sparc/overflow-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/sparc/overflow-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-1.c (.../branches/gcc-9-branch)
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O -mcpu=v8" } */
++/* { dg-options "-O -fno-pie -mcpu=v8" } */
+ /* { dg-require-effective-target ilp32 } */
+
+ #include <stdbool.h>
+Index: gcc/testsuite/gcc.target/sparc/overflow-5.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/sparc/overflow-5.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-5.c (.../branches/gcc-9-branch)
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -mvis3" } */
++/* { dg-options "-O -fno-pie -mvis3" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+Index: gcc/testsuite/gcc.target/sparc/overflow-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/sparc/overflow-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-2.c (.../branches/gcc-9-branch)
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O -mcpu=v8" } */
++/* { dg-options "-O -fno-pie -mcpu=v8" } */
+ /* { dg-require-effective-target ilp32 } */
+
+ #include <stdbool.h>
+Index: gcc/testsuite/gcc.target/sparc/overflow-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/sparc/overflow-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-3.c (.../branches/gcc-9-branch)
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O" } */
++/* { dg-options "-O -fno-pie" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+Index: gcc/testsuite/gcc.target/sparc/overflow-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/sparc/overflow-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-4.c (.../branches/gcc-9-branch)
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -mno-vis3 -mno-vis4" } */
++/* { dg-options "-O -fno-pie -mno-vis3 -mno-vis4" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+Index: gcc/testsuite/gcc.target/sparc/20161111-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/sparc/20161111-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/sparc/20161111-1.c (.../branches/gcc-9-branch)
+@@ -14,4 +14,4 @@
+ return retval;
+ }
+
+-/* { dg-final { scan-assembler-not "and\t%" } } */
++/* { dg-final { scan-assembler-not "and\t%" { xfail *-*-* } } } */
+Index: gcc/testsuite/gcc.target/mips/get-fcsr-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/mips/get-fcsr-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/mips/get-fcsr-3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,9 @@
++/* { dg-options "-mabi=64 -mhard-float" } */
+
-+static __attribute__((noclone, noinline))
-+int bar (int a, int b, int c, int d, double i, double j)
++NOMIPS16 unsigned int
++foo (void)
+{
-+ double l = baz (i) * j;
-+ return foo (a, b, c, d, l);
++ return __builtin_mips_get_fcsr () & 0x1;
+}
+
-+int
-+main (void)
-+{
-+ if (bar (0, 0, 0, 0, 0.0, 0.0) != 0)
-+ abort ();
-+
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.target/arm/pr78255-2.c
++/* { dg-final { scan-assembler "cfc1" } } */
+Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/arm/pr78255-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/arm/pr78255-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
+--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
++/* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */
++/* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */
+
-+extern int bar (void *);
++extern void foo (void*);
+
-+int
-+foo (void)
++extern void bar (void*);
++
++void
++test (void* p)
+{
-+ return bar ((void*)bar);
++ if (!p)
++ foo(p);
++ else
++ bar(p);
+}
+
-+/* { dg-final { scan-assembler "bl?\\s+bar" } } */
-Index: gcc/testsuite/gcc.target/arm/pr78041.c
++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */
++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */
+Index: gcc/testsuite/gcc.target/mips/pr91769.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/arm/pr78041.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/arm/pr78041.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
-+/* { dg-require-effective-target arm_thumb2_ok } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-options "-fno-inline -mthumb -O1 -mfpu=neon -w" } */
-+
-+extern void abort (void);
-+
-+register long long x asm ("r1");
+--- a/src/gcc/testsuite/gcc.target/mips/pr91769.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/mips/pr91769.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
++/* PR target/91769 */
++/* { dg-do compile } */
++/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" "-g" } { "" } } */
++/* { dg-options "-EL -mgp32 -mhard-float" } */
+
-+long long f (void)
++NOCOMPRESSION double
++foo (void)
+{
-+ return x << 5;
-+}
++ register double* pf __asm__ ("$a1");
++ __asm__ __volatile__ ("":"=r"(pf));
++ double f = *pf;
+
-+int main ()
-+{
-+ x = 0x0100000001;
-+ if (f () != 0x2000000020)
-+ abort ();
-+ return 0;
++ if (f != f)
++ f = -f;
++ return f;
+}
-Index: gcc/testsuite/gcc.target/s390/litpool-str-1.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/s390/litpool-str-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/s390/litpool-str-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+/* Make sure strings are recognized as being accessible through larl.
-+ This requires the symbol ref alignment properly propagated to
-+ encode_section_info. */
+
++/* { dg-final { scan-assembler-not "lw\t\\\$4,0\\(\\\$5\\)\n\tlw\t\\\$5,4\\(\\\$5\\)\n\tldc1\t\\\$.*,0\\(\\\$5\\)" } } */
++/* { dg-final { scan-assembler "lw\t\\\$4,0\\(\\\$5\\)\n\tlw\t\\\$5,4\\(\\\$5\\)\n\tmtc1\t\\\$4,\\\$.*\n\tmthc1\t\\\$5,\\\$.*" } } */
+Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,23 @@
+/* { dg-do compile } */
-+/* { dg-options "-march=z900 -O2 -fpic" } */
++/* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */
++/* { dg-additional-options "-fno-inline -fipa-ra -mcompact-branches=never" } */
++/* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */
+
++static int foo (void* p) { __asm__ (""::"r"(p):"$t0"); return 0; }
+
-+extern void foo(const char*, const char*, const char*);
++static int bar (void* p) { return 1; }
+
-+void bar(int i)
++int
++test (void* p)
+{
-+ const char t1[10] = "test";
-+ const char t2[10] = "test2";
-+ const char t3[2][10] = {
-+ "foofoofoo",
-+ "barbarbar",
-+ };
-+ foo(t1, t2, t3[i]);
++ int res = !p ? foo(p) : bar(p);
++
++ register int tmp __asm__("$t0") = -1;
++ __asm__ (""::"r"(tmp));
++
++ return res;
+}
+
-+/* { dg-final { scan-assembler-not "GOTOFF" } } */
-Index: gcc/testsuite/gcc.target/sparc/20170228-1.c
++/* { dg-final { scan-assembler "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */
++/* { dg-final { scan-assembler "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */
++/* { dg-final { scan-assembler-not "\\.set\tnomacro\n\tjalr\t\\\$25" } } */
+Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/sparc/20170228-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/sparc/20170228-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
-+/* PR target/79749 */
-+/* Reported by Rainer Orth <ro@gcc.gnu.org> */
+--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,23 @@
++/* { dg-do compile } */
++/* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */
++/* { dg-additional-options "-fno-inline -fipa-ra -mcompact-branches=never" } */
++/* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */
+
-+/* { dg-do run } */
-+/* { dg-options "-fomit-frame-pointer" } */
++static int foo (void* p) { return 0; }
+
-+extern void abort (void);
++static int bar (void* p) { return 1; }
+
-+int foo (int x1, int x2, int x3, int x4, int x5, int x6, int x7)
++int
++test (void* p)
+{
-+ return x7;
-+}
++ int res = !p ? foo(p) : bar(p);
+
-+int main (void)
-+{
-+ if (foo (100, 200, 300, 400, 500, 600, 700) != 700)
-+ abort ();
++ register int tmp __asm__("$t0") = -1;
++ __asm__ (""::"r"(tmp));
+
-+ return 0;
++ return res;
+}
-Index: gcc/testsuite/gcc.target/aarch64/pr78255.c
++
++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */
++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */
++/* { dg-final { scan-assembler "\\.set\tnomacro\n\tjalr\t\\\$25" } } */
+Index: gcc/testsuite/gcc.target/riscv/shift-shift-4.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/aarch64/pr78255.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/aarch64/pr78255.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
+--- a/src/gcc/testsuite/gcc.target/riscv/shift-shift-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/riscv/shift-shift-4.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
+/* { dg-do compile } */
-+/* { dg-options "-O2 -mcmodel=tiny" } */
-+
-+extern int bar (void *);
++/* { dg-options "-march=rv32i -mabi=ilp32 -O2" } */
+
++/* One zero-extend shift can be eliminated by modifying the constant in the
++ greater than test. Started working after modifying the splitter
++ lshrsi3_zero_extend_3+1 to use a temporary reg for the first split dest. */
+int
-+foo (void)
++sub (int i)
+{
-+ return bar ((void *)bar);
++ i &= 0x7fffffff;
++ return i > 0x7f800000;
+}
-+
-+/* { dg-final { scan-assembler "b\\s+bar" } } */
-Index: gcc/testsuite/gcc.target/aarch64/eh_return.c
++/* { dg-final { scan-assembler-not "srli" } } */
+Index: gcc/testsuite/gcc.target/riscv/shift-shift-5.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/aarch64/eh_return.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/aarch64/eh_return.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,82 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fno-inline" } */
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+int val, test, failed;
-+
-+int main (void);
+--- a/src/gcc/testsuite/gcc.target/riscv/shift-shift-5.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/riscv/shift-shift-5.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-march=rv64gc -mabi=lp64d -O2" } */
+
-+void
-+eh0 (void *p)
++/* Fails if lshrsi3_zero_extend_3+1 uses a temp reg which has no REG_DEST
++ note. */
++unsigned long
++sub (long l)
+{
-+ val = (int)(long)p & 7;
-+ if (val)
-+ abort ();
++ union u {
++ struct s { int a : 19; unsigned int b : 13; int x; } s;
++ long l;
++ } u;
++ u.l = l;
++ return u.s.b;
+}
++/* { dg-final { scan-assembler "srliw" } } */
+Index: gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
++/* Check that storing the 64-bit immediate to a volatile location is done
++ with a single store. */
+
-+void
-+eh1 (void *p, int x)
-+{
-+ void *q = __builtin_alloca (x);
-+ eh0 (q);
-+ __builtin_eh_return (0, p);
-+}
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
+
-+void
-+eh2a (int a,int b,int c,int d,int e,int f,int g,int h, void *p)
-+{
-+ val = a + b + c + d + e + f + g + h + (int)(long)p & 7;
-+}
++typedef unsigned long long u64;
+
-+void
-+eh2 (void *p)
++void bar (u64 *x)
+{
-+ eh2a (val, val, val, val, val, val, val, val, p);
-+ __builtin_eh_return (0, p);
++ *(volatile u64 *)x = 0xabcdef10abcdef10ULL;
+}
+
++/* { dg-final { scan-assembler-times "str\tx..?, .*" 1 } } */
++/* { dg-final { scan-assembler-not "str\tw..?, .*" } } */
+Index: gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target ilp32 } */
++/* { dg-options "-O3 -fno-math-errno -fno-fp-int-builtin-inexact" } */
+
-+void
-+continuation (void)
-+{
-+ test++;
-+ main ();
-+}
-+
-+void
-+fail (void)
-+{
-+ failed = 1;
-+ printf ("failed\n");
-+ continuation ();
++#define TEST(name, float_type, int_type, fn) void f_##name (float_type x) \
++{ \
++ volatile int_type b = __builtin_##fn (x); \
+}
+
-+void
-+do_test1 (void)
-+{
-+ if (!val)
-+ eh1 (continuation, 100);
-+ fail ();
-+}
++TEST (dld, double, long, lrint)
++TEST (flf, float , long, lrintf)
+
-+void
-+do_test2 (void)
-+{
-+ if (!val)
-+ eh2 (continuation);
-+ fail ();
-+}
++TEST (did, double, int, lrint)
++TEST (fif, float , int, lrintf)
+
-+int
-+main (void)
-+{
-+ if (test == 0)
-+ do_test1 ();
-+ if (test == 1)
-+ do_test2 ();
-+ if (failed || test != 2)
-+ exit (1);
-+ exit (0);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79568-1.c
++/* { dg-final { scan-assembler-times "fcvtzs\tw\[0-9\]+, \[d,s\]\[0-9\]+" 2 } } */
++/* { dg-final { scan-assembler-times "bl\tlrint" 2 } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79568-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79568-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+/* PR target/79568 */
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler-times {\tpause} 1 } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../branches/gcc-9-branch)
+@@ -14,7 +14,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/pr91704.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr91704.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr91704.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++/* PR target/91704 */
+/* { dg-do compile } */
-+/* { dg-options "-mno-avx512vl -mavx512bw -O2" } */
++/* { dg-options "-O2 -funsigned-char -mavx2 -mavx512f -masm=att" } */
++/* { dg-final { scan-assembler-times "\tvpcmpgtb\t%ymm" 1 } } */
++/* { dg-final { scan-assembler-not "\tvpsubusb\t" } } */
++/* { dg-final { scan-assembler-not "\tvpcmpeqb\t" } } */
+
-+#pragma GCC push_options
-+#pragma GCC target ("avx512vl,avx512bw")
-+void
-+foo (char __attribute__ ((__vector_size__(32))) *x, char __attribute__ ((__vector_size__(32))) *y, int z)
-+{
-+ __builtin_ia32_storedquqi256_mask (x, *y, z);
-+}
-+#pragma GCC pop_options
++#include <x86intrin.h>
+
-+void
-+bar (char __attribute__ ((__vector_size__(32))) *x, char __attribute__ ((__vector_size__(32))) *y, int z)
++__m256i
++foo (__m256i x, __m256i y)
+{
-+ __builtin_ia32_storedquqi256_mask (x, *y, z); /* { dg-error "needs isa option" } */
++ return _mm256_cmpgt_epi8 (x, y);
+}
-Index: gcc/testsuite/gcc.target/i386/pr49095.c
+Index: gcc/testsuite/gcc.target/i386/ret-thunk-9.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr49095.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr49095.c (.../branches/gcc-6-branch)
-@@ -1,7 +1,7 @@
- /* PR rtl-optimization/49095 */
- /* { dg-do compile } */
--/* { dg-options "-Os" } */
--/* { dg-options "-Os -mregparm=2" { target ia32 } } */
-+/* { dg-options "-Os -fno-shrink-wrap" } */
-+/* { dg-additional-options "-mregparm=2" { target ia32 } } */
+--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../branches/gcc-9-branch)
+@@ -17,7 +17,7 @@
+ /* { dg-final { scan-assembler "_?__x86_return_thunk:" } } */
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler-times {\tpause} 2 } } */
+ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
- void foo (void *);
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler-times {\tpause} 1 } } */
+Index: gcc/testsuite/gcc.target/i386/pr32219-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr32219-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-2.c (.../branches/gcc-9-branch)
+@@ -20,5 +20,5 @@
+ /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
+
+ /* Darwin m32 defaults to PIC but common symbols need to be indirected. */
+-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
+
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../branches/gcc-9-branch)
+@@ -14,7 +14,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../branches/gcc-9-branch)
+@@ -17,7 +17,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler {\tpause} } } */
+Index: gcc/testsuite/gcc.target/i386/pr32219-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr32219-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-3.c (.../branches/gcc-9-branch)
+@@ -24,4 +24,4 @@
+
+ /* For Darwin, we need PIC to allow PIE, but also we must indirect weak symbols so that
+ they can be indirected. Again, dyld knows how to deal with this. */
+-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
-@@ -70,5 +70,4 @@
- G (int)
- G (long)
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../branches/gcc-9-branch)
+@@ -16,7 +16,7 @@
--/* See PR61225 for the XFAIL. */
--/* { dg-final { scan-assembler-not "test\[lq\]" { xfail { ia32 } } } } */
-+/* { dg-final { scan-assembler-not "test\[lq\]" } } */
-Index: gcc/testsuite/gcc.target/i386/pr79568-2.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79568-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79568-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+/* PR target/79568 */
-+/* { dg-do compile { target lp64 } } */
-+/* { dg-options "-mno-lwp" } */
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */
+ /* { dg-final { scan-assembler {\tpause} } } */
+Index: gcc/testsuite/gcc.target/i386/pr87853.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr87853.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr87853.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,20 @@
++/* PR target/87853 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -funsigned-char -msse2 -mno-sse3 -masm=att" } */
++/* { dg-final { scan-assembler-times "\tpcmpgtb\t%xmm" 2 } } */
++/* { dg-final { scan-assembler-not "\tpsubusb\t" } } */
++/* { dg-final { scan-assembler-not "\tpcmpeqb\t" } } */
+
-+#pragma GCC push_options
-+#pragma GCC target ("lwp")
-+void
-+foo (unsigned long x, unsigned int y)
++#include <x86intrin.h>
++
++__m128i
++foo (__m128i x, __m128i y)
+{
-+ __builtin_ia32_lwpval64 (x, y, 1);
++ return _mm_cmpgt_epi8 (x, y);
+}
-+#pragma GCC pop_options
+
-+void
-+bar (unsigned long x, unsigned int y)
++__m128i
++bar (__m128i x, __m128i y)
+{
-+ __builtin_ia32_lwpval64 (x, y, 1); /* { dg-error "needs isa option" } */
++ return _mm_cmplt_epi8 (x, y);
+}
-Index: gcc/testsuite/gcc.target/i386/pr80262.c
+Index: gcc/testsuite/gcc.target/i386/pr32219-4.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr80262.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr80262.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,26 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+typedef struct {
-+ int v;
-+} S1;
-+S1 clearS1 () { S1 s1 = { 0 }; return s1; }
-+
-+typedef struct {
-+ S1 s1[4];
-+} S2;
-+void clearS2 (__seg_gs S2* p, int n) {
-+ for (int i = 0; i < n; ++i)
-+ p->s1[i] = clearS1 ();
-+}
-+
-+typedef struct {
-+ int pad;
-+ S2 s2;
-+} S3;
-+
-+long int BASE;
-+
-+void fn1(int n) {
-+ clearS2 (&(((__seg_gs S3*)(BASE))->s2), n);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79932-1.c
+--- a/src/gcc/testsuite/gcc.target/i386/pr32219-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-4.c (.../branches/gcc-9-branch)
+@@ -21,4 +21,4 @@
+ /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
+
+ /* Darwin m32 equivalent (indirect and PIC). */
+-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79932-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79932-1.c (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/pr92225.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr92225.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr92225.c (.../branches/gcc-9-branch)
@@ -0,0 +1,19 @@
-+/* PR target/79932 */
++/* PR target/92225 */
+/* { dg-do compile } */
-+/* { dg-options "-O0 -mavx512bw" } */
++/* { dg-options "-O2 -ftree-vectorize -msse2 -mno-sse4" } */
+
-+#include <x86intrin.h>
++void a (long);
+
-+__m512i a, b, c, d, e, f, g, h, i;
-+__mmask32 m;
++unsigned *b;
+
+void
-+foo (void)
++c ()
+{
-+ d = _mm512_packs_epi32 (a, b);
-+ e = _mm512_maskz_packs_epi32 (m, a, b);
-+ f = _mm512_mask_packs_epi32 (c, m, a, b);
-+ g = _mm512_packus_epi32 (a, b);
-+ h = _mm512_maskz_packus_epi32 (m, a, b);
-+ i = _mm512_mask_packus_epi32 (c, m, a, b);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79568-3.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79568-3.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79568-3.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+/* PR target/79568 */
++ long d = 2;
++ int e = 0;
++
++ for (; e < 1024; e++)
++ if (b[e] > d)
++ d = b[e];
++ a (d);
++}
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../branches/gcc-9-branch)
+@@ -17,7 +17,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+ /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../branches/gcc-9-branch)
+@@ -14,7 +14,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+ /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/ret-thunk-14.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../branches/gcc-9-branch)
+@@ -19,6 +19,6 @@
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../branches/gcc-9-branch)
+@@ -16,7 +16,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+ /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../branches/gcc-9-branch)
+@@ -14,7 +14,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+ /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/ret-thunk-15.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../branches/gcc-9-branch)
+@@ -19,6 +19,6 @@
+ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../branches/gcc-9-branch)
+@@ -14,7 +14,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {\tpause} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../branches/gcc-9-branch)
+@@ -15,7 +15,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+ /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/pr32219-7.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr32219-7.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-7.c (.../branches/gcc-9-branch)
+@@ -23,4 +23,4 @@
+ /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */
+
+ /* Darwin m32 equivalent (indirect and PIC). */
+-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../branches/gcc-9-branch)
+@@ -14,7 +14,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {\tpause} } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../branches/gcc-9-branch)
+@@ -15,6 +15,6 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+Index: gcc/testsuite/gcc.target/i386/pr32219-8.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr32219-8.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-8.c (.../branches/gcc-9-branch)
+@@ -21,4 +21,4 @@
+ /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */
+
+ /* Darwin m32 default to PIC but needs indirection for the weak symbol. */
+-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */
+Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../branches/gcc-9-branch)
+@@ -17,7 +17,7 @@
+
+ /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */
+ /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */
+-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */
+ /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */
+ /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */
+ /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */
+Index: gcc/testsuite/gcc.target/i386/pr91623.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr91623.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr91623.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,32 @@
++/* PR middle-end/91623 */
+/* { dg-do compile } */
-+/* { dg-options "-mno-sahf -mno-mmx -mno-sse" } */
-+/* { dg-additional-options "-march=i386" { target ia32 } } */
++/* { dg-options "-O3 -msse4.1 -mno-sse4.2" } */
++
++typedef long long V __attribute__((__vector_size__(16)));
++V e, h;
++int d;
++const int i;
++
++void foo (void);
+
-+#pragma GCC push_options
-+#pragma GCC target ("sse")
+void
-+foo (void)
++bar (int k, int l)
+{
-+ __builtin_ia32_pause ();
++ if (d && 0 <= k - 1 && l)
++ foo ();
+}
-+#pragma GCC pop_options
+
+void
-+bar (void)
++baz (void)
+{
-+ __builtin_ia32_pause ();
++ V n = (V) { 1 };
++ V g = (V) {};
++ V o = g;
++ for (int f = 0; f < i; ++f)
++ {
++ V a = o == n;
++ h = a;
++ bar (f, i);
++ o = e;
++ }
+}
-Index: gcc/testsuite/gcc.target/i386/pr79514.c
+Index: gcc/testsuite/gfortran.dg/do_subscript_3.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79514.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79514.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+/* PR target/79514 */
-+/* { dg-do compile } */
-+/* { dg-options "-m96bit-long-double" } */
+--- a/src/gcc/testsuite/gfortran.dg/do_subscript_3.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_3.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,22 @@
++! { dg-do compile }
++! PR fortran/91424
++! Check that only one warning is issued inside blocks, and that
++! warnings are also issued for contained subroutines.
+
-+extern void bar (long double);
++program main
++ real :: a(5)
++ block
++ integer :: j
++ do j=0, 5 ! { dg-warning "out of bounds" }
++ a(j) = 2. ! { dg-warning "out of bounds" }
++ end do
++ end block
++ call x
++contains
++ subroutine x
++ integer :: i
++ do i=1,6 ! { dg-warning "out of bounds" }
++ a(i) = 2. ! { dg-warning "out of bounds" }
++ end do
++ end subroutine x
++end program main
+Index: gcc/testsuite/gfortran.dg/pr91565.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91565.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91565.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++! { dg-do compile }
++! PR fortran/91565
++! Contributed by Gerhard Steinmetz
++program p
++ integer, parameter :: a(2) = [2,2] ! { dg-error "\(1\)" }
++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "not a permutation" }
++end
+
-+extern long double x;
++subroutine foo
++ integer, parameter :: a(1) = 1 ! { dg-error "\(1\)" }
++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "are different" }
++end
+
-+void foo (void)
-+{
-+ bar (x);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79932-2.c
++subroutine bar
++ integer, parameter :: a(1,2) = 1 ! { dg-error "\(1\)" }
++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "are different" }
++end
+Index: gcc/testsuite/gfortran.dg/pr91359_2.f
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79932-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79932-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,78 @@
-+/* PR target/79932 */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -mavx512vl" } */
-+
-+#include <x86intrin.h>
+--- a/src/gcc/testsuite/gfortran.dg/pr91359_2.f (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91359_2.f (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++! { dg-do run }
++! PR fortran/91359
++! Orginal code contributed by Brian T. Carcich <briantcarcich at gmail dot com>
++!
++ logical function zero() result(a)
++ goto 2
++1 return
++2 a = .false.
++ if (.not.a) goto 1
++ return
++ end
++
++ program test_zero
++ logical zero
++ if (zero()) stop 'FAIL: zero() returned .TRUE.'
++ stop 'OKAY: zero() returned .FALSE.'
++ end
+Index: gcc/testsuite/gfortran.dg/associate_49.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/associate_49.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/associate_49.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,34 @@
++! { dg-do run }
++!
++! Test the fix for PR91588, in which the declaration of 'a' caused
++! an ICE.
++!
++! Contributed by Gerhardt Steinmetz <gscfq@t-online.de>
++!
++program p
++ character(4), parameter :: parm = '7890'
++ associate (z => '1234')
++ block
++ integer(len(z)) :: a
++ if (kind(a) .ne. 4) stop 1
++ end block
++ end associate
++ associate (z => '123')
++ block
++ integer(len(z)+1) :: a
++ if (kind(a) .ne. 4) stop 2
++ end block
++ end associate
++ associate (z => 1_8)
++ block
++ integer(kind(z)) :: a
++ if (kind(a) .ne. 8) stop 3
++ end block
++ end associate
++ associate (z => parm)
++ block
++ integer(len(z)) :: a
++ if (kind(a) .ne. 4) stop 4
++ end block
++ end associate
++end
+Index: gcc/testsuite/gfortran.dg/pr85543.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../branches/gcc-9-branch)
+@@ -6,3 +6,4 @@
+ real(z()) function f() ! { dg-error "in initialization expression at" }
+ end
+ end
++! { dg-prune-output "Bad kind expression for function" }
+Index: gcc/testsuite/gfortran.dg/pr91801.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91801.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91801.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,7 @@
++! { dg-do compile }
++! PR fortran/91801
++! Code contributed by Gerhard Steinmetz
++program p
++ integer, parameter :: a(2) = [2,0] ! { dg-error "Element with a value of" }
++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "for the RESHAPE intrinsic near" }
++end
+Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90 (.../branches/gcc-9-branch)
+@@ -21,7 +21,7 @@
+
+ type,abstract,extends(c_base) :: c_derived
+ contains
+- procedure :: f_base => f_derived ! { dg-error "Type mismatch in function result \\(CLASS\\(\\*\\)/CLASS\\(c_base\\)\\)" }
++ procedure :: f_base => f_derived ! { dg-error "Type mismatch in function result" }
+ end type c_derived
+
+ contains
+Index: gcc/testsuite/gfortran.dg/gomp/pr87752.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/gomp/pr87752.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr87752.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,12 @@
++! PR fortran/87752
++! { dg-do compile }
++! { dg-additional-options "-Ofast" }
++
++subroutine foo (n, u, v)
++ integer :: n
++ real, pointer :: u(:), v(:)
++ !$omp parallel do simd
++ do i = 1, n
++ u(:) = v(:)
++ end do
++end
+Index: gcc/testsuite/gfortran.dg/deferred_character_34.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/deferred_character_34.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/deferred_character_34.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,10 @@
++! { dg-do run }
++! PR fortran/90561
++! This used to ICE.
++! Original test case by Gerhard Steinmetz.
++program p
++ character(:), allocatable :: z(:)
++ z = [character(2):: 'ab', 'xy']
++ z = z(2)
++ if (any(z /= 'xy')) stop 1
++end
+Index: gcc/testsuite/gfortran.dg/pr70754.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr70754.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr70754.f90 (.../branches/gcc-9-branch)
+@@ -18,12 +18,13 @@
+ integer (ii4), dimension(40,40) :: c
+ integer i, j
+
+- do i=1,20
+- b(i,j) = 123 * a(i,j) + 34 * a(i,j+1) &
+- + 34 * a(i,j-1) + a(i+1,j+1) &
+- + a(i+1,j-1) + a(i-1,j+1) &
+- + a(i-1,j-1)
+- c(i,j) = 123
++ j = 10
++ do i=11,30
++ b(i,j) = 123 * a(i,j) + 34 * a(i,j+1) &
++ + 34 * a(i,j-1) + a(i+1,j+1) &
++ + a(i+1,j-1) + a(i-1,j+1) &
++ + a(i-1,j-1)
++ c(i,j) = 123
+ end do
+
+ where ((xyz(:,:,2) /= 0) .and. (c /= 0))
+Index: gcc/testsuite/gfortran.dg/pr91642.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91642.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91642.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
++! { dg-do compile }
++! PR fortran/91642
++! Code contributed by Gerhard Steinmetz
++program p
++ integer i
++ integer :: iol
++ integer, external :: null
++ i = 0
++ inquire (iolength=iol) i, null()
++ if (iol == 4) stop 1
++end
+
-+__m256i a, b;
-+__m128i c, d;
-+__mmask32 e, f[64];
++subroutine q
++ integer i
++ integer :: iol
++ i = 0
++ inquire (iolength=iol) i, null() ! { dg-error "cannot appear in INQUIRE" }
++ if (iol == 4) stop 1
++end
+Index: gcc/testsuite/gfortran.dg/char_result_mod_19.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
++! { dg-do run }
++! { dg-additional-sources char_result_19.f90 }
++!
++! Module for char_result_19.f90
++! Tests fix for PR86248
++!
++module test_module
++ implicit none
++ public :: func_1
++ private
++ character(len=*),dimension(0:2),parameter :: darray = (/"el0 ","el11","el2 "/)
++contains
++ function func_1 (func_1_input) result(f)
++ integer, intent(in) :: func_1_input
++ character(len = len_trim (darray(func_1_input))) :: f
++ f = darray(func_1_input)
++ end function func_1
++end module test_module
+Index: gcc/testsuite/gfortran.dg/pr91587.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91587.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91587.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,12 @@
++! { dg-do compile }
++! PR fortran/91587
++! Code contributed by Gerhard Steinmetz
++program p
++ backspace(err=!) ! { dg-error "Invalid value for" }
++ flush(err=!) ! { dg-error "Invalid value for" }
++ rewind(err=!) ! { dg-error "Invalid value for" }
++end
+
-+void
-+foo (void)
-+{
-+ f[0] = _mm256_cmpge_epi32_mask (a, b);
-+ f[1] = _mm256_cmpge_epi64_mask (a, b);
-+ f[2] = _mm256_cmpge_epu32_mask (a, b);
-+ f[3] = _mm256_cmpge_epu64_mask (a, b);
-+ f[4] = _mm256_cmple_epi32_mask (a, b);
-+ f[5] = _mm256_cmple_epi64_mask (a, b);
-+ f[6] = _mm256_cmple_epu32_mask (a, b);
-+ f[7] = _mm256_cmple_epu64_mask (a, b);
-+ f[8] = _mm256_cmplt_epi32_mask (a, b);
-+ f[9] = _mm256_cmplt_epi64_mask (a, b);
-+ f[10] = _mm256_cmplt_epu32_mask (a, b);
-+ f[11] = _mm256_cmplt_epu64_mask (a, b);
-+ f[12] = _mm256_cmpneq_epi32_mask (a, b);
-+ f[13] = _mm256_cmpneq_epi64_mask (a, b);
-+ f[14] = _mm256_cmpneq_epu32_mask (a, b);
-+ f[15] = _mm256_cmpneq_epu64_mask (a, b);
-+ f[16] = _mm256_mask_cmpge_epi32_mask (e, a, b);
-+ f[17] = _mm256_mask_cmpge_epi64_mask (e, a, b);
-+ f[18] = _mm256_mask_cmpge_epu32_mask (e, a, b);
-+ f[19] = _mm256_mask_cmpge_epu64_mask (e, a, b);
-+ f[20] = _mm256_mask_cmple_epi32_mask (e, a, b);
-+ f[21] = _mm256_mask_cmple_epi64_mask (e, a, b);
-+ f[22] = _mm256_mask_cmple_epu32_mask (e, a, b);
-+ f[23] = _mm256_mask_cmple_epu64_mask (e, a, b);
-+ f[24] = _mm256_mask_cmplt_epi32_mask (e, a, b);
-+ f[25] = _mm256_mask_cmplt_epi64_mask (e, a, b);
-+ f[26] = _mm256_mask_cmplt_epu32_mask (e, a, b);
-+ f[27] = _mm256_mask_cmplt_epu64_mask (e, a, b);
-+ f[28] = _mm256_mask_cmpneq_epi32_mask (e, a, b);
-+ f[29] = _mm256_mask_cmpneq_epi64_mask (e, a, b);
-+ f[30] = _mm256_mask_cmpneq_epu32_mask (e, a, b);
-+ f[31] = _mm256_mask_cmpneq_epu64_mask (e, a, b);
-+ f[32] = _mm_cmpge_epi32_mask (c, d);
-+ f[33] = _mm_cmpge_epi64_mask (c, d);
-+ f[34] = _mm_cmpge_epu32_mask (c, d);
-+ f[35] = _mm_cmpge_epu64_mask (c, d);
-+ f[36] = _mm_cmple_epi32_mask (c, d);
-+ f[37] = _mm_cmple_epi64_mask (c, d);
-+ f[38] = _mm_cmple_epu32_mask (c, d);
-+ f[39] = _mm_cmple_epu64_mask (c, d);
-+ f[40] = _mm_cmplt_epi32_mask (c, d);
-+ f[41] = _mm_cmplt_epi64_mask (c, d);
-+ f[42] = _mm_cmplt_epu32_mask (c, d);
-+ f[43] = _mm_cmplt_epu64_mask (c, d);
-+ f[44] = _mm_cmpneq_epi32_mask (c, d);
-+ f[45] = _mm_cmpneq_epi64_mask (c, d);
-+ f[46] = _mm_cmpneq_epu32_mask (c, d);
-+ f[47] = _mm_cmpneq_epu64_mask (c, d);
-+ f[48] = _mm_mask_cmpge_epi32_mask (e, c, d);
-+ f[49] = _mm_mask_cmpge_epi64_mask (e, c, d);
-+ f[50] = _mm_mask_cmpge_epu32_mask (e, c, d);
-+ f[51] = _mm_mask_cmpge_epu64_mask (e, c, d);
-+ f[52] = _mm_mask_cmple_epi32_mask (e, c, d);
-+ f[53] = _mm_mask_cmple_epi64_mask (e, c, d);
-+ f[54] = _mm_mask_cmple_epu32_mask (e, c, d);
-+ f[55] = _mm_mask_cmple_epu64_mask (e, c, d);
-+ f[56] = _mm_mask_cmplt_epi32_mask (e, c, d);
-+ f[57] = _mm_mask_cmplt_epi64_mask (e, c, d);
-+ f[58] = _mm_mask_cmplt_epu32_mask (e, c, d);
-+ f[59] = _mm_mask_cmplt_epu64_mask (e, c, d);
-+ f[60] = _mm_mask_cmpneq_epi32_mask (e, c, d);
-+ f[61] = _mm_mask_cmpneq_epi64_mask (e, c, d);
-+ f[62] = _mm_mask_cmpneq_epu32_mask (e, c, d);
-+ f[63] = _mm_mask_cmpneq_epu64_mask (e, c, d);
-+}
-Index: gcc/testsuite/gcc.target/i386/avx-pr80286.c
++subroutine bar ! An other matcher runs, and gives a different error.
++ endfile(err=!) ! { dg-error "Expecting END" }
++end
+Index: gcc/testsuite/gfortran.dg/pr78719_3.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/avx-pr80286.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/avx-pr80286.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,26 @@
-+/* PR target/80286 */
-+/* { dg-do run { target avx } } */
-+/* { dg-options "-O2 -mavx" } */
+--- a/src/gcc/testsuite/gfortran.dg/pr78719_3.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr78719_3.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,32 @@
++! { dg-do compile }
++! PR fortran/78719
++! Code contributed by Gerhard Steinmetz
++program p
+
-+#include "avx-check.h"
-+#include <immintrin.h>
++ type t
++ integer :: n
++ end type
+
-+__m256i m;
++ class(t) :: g ! { dg-error "must be dummy, allocatable or pointer" }
+
-+__attribute__((noinline, noclone)) __m128i
-+foo (__m128i x)
-+{
-+ int s = _mm_cvtsi128_si32 (_mm256_castsi256_si128 (m));
-+ return _mm_srli_epi16 (x, s);
-+}
++ abstract interface
++ subroutine h
++ end
++ end interface
+
-+static void
-+avx_test (void)
-+{
-+ __m128i a = (__m128i) (__v8hi) { 1 << 7, 2 << 8, 3 << 9, 4 << 10, 5 << 11, 6 << 12, 7 << 13, 8 << 12 };
-+ m = (__m256i) (__v8si) { 7, 8, 9, 10, 11, 12, 13, 14 };
-+ __m128i c = foo (a);
-+ __m128i b = (__m128i) (__v8hi) { 1, 2 << 1, 3 << 2, 4 << 3, 5 << 4, 6 << 5, 7 << 6, 8 << 5 };
-+ if (__builtin_memcmp (&c, &b, sizeof (__m128i)))
-+ __builtin_abort ();
-+}
-Index: gcc/testsuite/gcc.target/i386/pr71458.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr71458.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr71458.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,7 @@
-+/* { dg-do compile { target { ! x32 } } } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -fsanitize=bounds" } */
-+/* { dg-error "'-fcheck-pointer-bounds' is not supported with '-fsanitize=bounds'" "" { target *-*-* } 0 } */
++ procedure(h), pointer :: s
+
-+enum {} a[0];
-+void fn1(int);
-+void fn2() { fn1(a[-1]); }
-Index: gcc/testsuite/gcc.target/i386/pr79733.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79733.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79733.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,23 @@
-+/* PR target/79733 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -mavx512f" } */
++ s => f
++ call s
++ s => g ! { dg-error "Invalid procedure pointer" }
++ call s
+
-+typedef unsigned short __mmask16;
++ contains
+
-+extern __inline int
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_kortestc (__mmask16 __A, __mmask16 __B)
-+{
-+ return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
-+ (__mmask16) __B);
-+}
++ subroutine f
++ end
+
-+void
-+avx512f_test ()
-+{
-+ volatile __mmask16 k1 = 0;
-+ __mmask16 k2 = 0;
-+ volatile short r;
++ subroutine g ! { dg-error "has an explicit interface" }
++ end
+
-+ r = _mm512_kortestc (k1, k2);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79559.c
++end program p ! { dg-error "Syntax error" }
+Index: gcc/testsuite/gfortran.dg/typebound_call_22.f03
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79559.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79559.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,11 @@
-+/* PR target/79559 */
-+/* { dg-do compile } */
-+
-+void
-+foo (int x)
-+{
-+ __asm__ volatile ("# %K0" : : "r" (x)); /* { dg-error "invalid operand code" } */
-+ __asm__ volatile ("# %r0" : : "r" (x)); /* { dg-error "invalid operand code" } */
-+ __asm__ volatile ("# %r0" : : "n" (129)); /* { dg-error "invalid operand code" } */
-+ __asm__ volatile ("# %R0" : : "r" (x)); /* { dg-error "invalid operand code" } */
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79901.c
+--- a/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03 (.../branches/gcc-9-branch)
+@@ -26,4 +26,4 @@
+ call x%bar ()
+ end program
+
+-! { dg-final { scan-tree-dump-times "base \\(\\);" 1 "optimized" } }
++! { dg-final { scan-tree-dump-times "base \\(\\);" 1 "optimized" { xfail *-*-* } } }
+Index: gcc/testsuite/gfortran.dg/use_rename_8.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79901.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79901.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+/* PR rtl-optimization/79901 */
-+/* { dg-do compile } */
-+/* { dg-options "-O3 -mavx512f -fno-ssa-phiopt" } */
+--- a/src/gcc/testsuite/gfortran.dg/use_rename_8.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/use_rename_8.f90 (.../branches/gcc-9-branch)
+@@ -19,8 +19,8 @@
+ USE MOO, ONLY: X => B
+ END SUBROUTINE T
+
+-SUBROUTINE C
+- USE MOO, ONLY: C ! { dg-error "is also the name of the current program unit" }
++SUBROUTINE C ! { dg-error "\(1\)" }
++ USE MOO, ONLY: C ! { dg-error "conflicts with the" }
+ END SUBROUTINE C
+
+ SUBROUTINE D
+@@ -36,15 +36,15 @@
+ USE MOO, ONLY: X => F
+ END SUBROUTINE F
+
+-SUBROUTINE X
+- USE MOO, ONLY: X => G ! { dg-error "is also the name of the current program unit" }
++SUBROUTINE X ! { dg-error "\(1\)" }
++ USE MOO, ONLY: X => G ! { dg-error "conflicts with the rename" }
+ END SUBROUTINE X
+
+-SUBROUTINE Y
+- USE MOO, ONLY: Y => H ! { dg-error "is also the name of the current program unit" }
++SUBROUTINE Y ! { dg-error "\(1\)" }
++ USE MOO, ONLY: Y => H ! { dg-error "conflicts with the rename" }
+ END SUBROUTINE Y
+
+-SUBROUTINE Z
+- USE MOO, ONLY: Z => I, Z => I ! { dg-error "is also the name of the current program unit" }
++SUBROUTINE Z ! { dg-error "\(1\)" }
++ USE MOO, ONLY: Z => I, Z => I ! { dg-error "conflicts with the rename" }
+ END SUBROUTINE Z
+
+Index: gcc/testsuite/gfortran.dg/pr89943_2.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr89943_2.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr89943_2.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,33 @@
++! { dg-do compile }
++! PR fortran/89943
++! Code contributed by Alberto Luaces <aluaces at udc dot se>
++module Foo_mod
+
-+unsigned int
-+foo (const unsigned long long x)
-+{
-+ if (x < 0)
-+ return 0;
-+ else if ( x > ~0U)
-+ return ~0U;
-+ else
-+ return (unsigned int) x;
-+}
++ implicit none
+
-+void
-+bar (unsigned x, unsigned int *y, unsigned int z)
-+{
-+ unsigned i;
-+ for (i = 0; i < x; i++)
-+ y[i] = foo (y[i] * (unsigned long long) z);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr80019.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr80019.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr80019.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,13 @@
-+/* PR target/80019 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -mxop -mavx2" } */
++ interface
++ module function runFoo4C(ndim) bind(C, name="runFoo")
++ use, intrinsic :: iso_c_binding
++ implicit none
++ integer runFoo4c
++ integer(c_int32_t) , intent(in) :: ndim
++ end function runFoo4C
++ end interface
+
-+typedef char v16qi __attribute__ ((vector_size (16)));
++ contains
+
-+extern v16qi b, c;
++end module Foo_mod
+
-+void
-+foo (int e)
-+{
-+ b = c << e;
-+}
-Index: gcc/testsuite/gcc.target/i386/pr79807.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79807.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79807.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+/* PR target/79807 */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -mavx -ffloat-store" } */
++submodule(Foo_mod) Foo_smod
+
-+typedef double __v2df __attribute__ ((__vector_size__ (16)));
-+typedef double __v4df __attribute__ ((__vector_size__ (32)));
++ contains
+
-+__v2df
-+foo (__v4df x)
-+{
-+ return __builtin_ia32_pd_pd256 (x);
-+}
-Index: gcc/testsuite/gcc.target/i386/pr65044.c
++ module function runFoo4C(ndim) bind(C, name="runFoo")
++ use, intrinsic :: iso_c_binding
++ implicit none
++ integer runFoo4c
++ integer(c_int32_t) , intent(in) :: ndim
++ end function runFoo4C
++
++end submodule Foo_smod
++
+Index: gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr65044.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr65044.c (.../branches/gcc-6-branch)
-@@ -1,6 +1,6 @@
- /* { dg-do compile { target { ! x32 } } } */
- /* { dg-options "-fcheck-pointer-bounds -mmpx -fsanitize=address" } */
--/* { dg-error "-fcheck-pointer-bounds is not supported with Address Sanitizer" "" { target *-*-* } 0 } */
-+/* { dg-error ".-fcheck-pointer-bounds. is not supported with Address Sanitizer" "" { target *-*-* } 0 } */
-
- extern int x[];
-
-Index: gcc/testsuite/gcc.target/i386/pr80298-1.c
+--- a/src/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++! { dg-additional-options "-Wunused-dummy-argument" }
++! PR 91557 - this used to generate a bogus warning
++! Test case by Gerhard Steinmetz
++program p
++ integer :: a, b
++ a = 1
++ call g
++contains
++ subroutine g
++ integer :: x, y
++ call h (x, y)
++ if ( a > 0 ) y = y - 1
++ b = y - x + 1
++ end
++end
+Index: gcc/testsuite/gfortran.dg/pr47054_2.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr80298-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr80298-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,7 @@
-+/* PR target/80298 */
-+/* { dg-do compile } */
-+/* { dg-options "-mno-sse -mmmx" } */
-+
-+#include <mm3dnow.h>
+--- a/src/gcc/testsuite/gfortran.dg/pr47054_2.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr47054_2.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,41 @@
++! { dg-do compile }
++! { dg-options "-fcray-pointer" }
++! PR fortran/47054
++! Code contributed by Deji Akingunola <deji_aking at yahoo dot ca>
++subroutine host_sub(F_su,F_nk)
++ implicit none
++
++ integer :: F_nk
++ real,dimension(F_nk) :: F_su
++ integer G_ni, G_nj
++ real*8 G_xg_8, G_yg_8
++ pointer (paxg_8, G_xg_8(G_ni))
++ pointer (payg_8, G_yg_8(G_nj))
++ common / G_p / paxg_8,payg_8
++ common / G / G_ni, G_nj
++
++ call internal_sub(F_su,F_nk)
++ return
++contains
++
++ subroutine internal_sub(F_su,F_nk)
++ implicit none
++ integer G_ni, G_nj
++ real*8 G_xg_8, G_yg_8
++ pointer (paxg_8, G_xg_8(G_ni))
++ pointer (payg_8, G_yg_8(G_nj))
++ common / G_p / paxg_8,payg_8
++ common / G / G_ni, G_nj
++
++ integer :: F_nk
++ real,dimension(F_nk) :: F_su
++ integer k,k2
++
++ k2 = 0
++ do k = 1, F_nk, 2
++ k2 = k2+1
++ F_su(k) = F_su(k) + 1.0
++ enddo
++ return
++ end subroutine internal_sub
++end subroutine host_sub
+Index: gcc/testsuite/gfortran.dg/pr91553.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91553.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91553.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,8 @@
++! { dg-do run }
++! Code contributed by Gerhard Steinmetz
++program p
++ complex z(1)
++ z = (1.0, 2.0) * [real :: (3.0 + 4.0)]
++ if (real(z(1)) /= 7.) stop 1
++ if (aimag(z(1)) /= 14.) stop 2
++end
+Index: gcc/testsuite/gfortran.dg/pr91564.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91564.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91564.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++! PR fortran/91564
++! Contributed by Gerhard Steinmetz.
++program p
++ integer i, j
++ call kill (1, 2, 3) ! { dg-error "shall be an INTENT" }
++ i = 42
++ call bar(i, j)
++end
+
-+int i;
-Index: gcc/testsuite/gcc.target/i386/pr79495.c
++subroutine bar(n, m)
++ integer, intent(in) :: n
++ integer, intent(inout) :: m
++ call kill (1, 3, n) ! { dg-error "shall be an INTENT" }
++ call kill (1, 3, m)
++end subroutine bar
+Index: gcc/testsuite/gfortran.dg/pr91727.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79495.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79495.c (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/gfortran.dg/pr91727.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91727.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,9 @@
++! { dg-do compile }
++! Code contributed by Gerhard Steinmetz.
++program p
++ type t
++ class(*), allocatable :: a
++ end type
++ type(t) :: x
++ allocate (x%a, source=[1]) ! { dg-error "have the same rank as" }
++end
+Index: gcc/testsuite/gfortran.dg/pr87993.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr87993.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr87993.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,8 @@
++! { dg-do run }
++! Code contributed by Gerhard Steinmetz <gscfq at t-online dot de>
++program p
++ integer, parameter :: a(2) = 1
++ integer, parameter :: b = a%kind
++ if (any(a /= 1)) stop 1
++ if (b /= kind(a)) stop 2
++end
+Index: gcc/testsuite/gfortran.dg/do_subscript_6.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/do_subscript_6.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_6.f90 (.../branches/gcc-9-branch)
@@ -0,0 +1,11 @@
-+/* PR target/79495 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -msoft-float" } */
-+
-+long double dnan = 1.0l/0.0l - 1.0l/0.0l;
-+long double x = 1.0l;
-+void fn1 (void)
-+{
-+ if (dnan != x)
-+ x = 1.0;
-+}
-Index: gcc/testsuite/gcc.target/i386/mvc9.c
++! { dg-do compile }
++! { dg-options "-std=legacy" }
++! PR 91550 - this used to cause an ICE
++! Test case by Gerhard Steinmetz
++program p
++ real :: a(3)
++ integer :: i
++ do i = 1, 3, .1 ! { dg-error "cannot be zero" }
++ a(i) = i
++ end do
++end
+Index: gcc/testsuite/gfortran.dg/pr91641.f90
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/mvc9.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/mvc9.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,28 @@
-+/* { dg-do run } */
-+/* { dg-require-ifunc "" } */
-+/* { dg-options "-flto -O2" { target lto } } */
+--- a/src/gcc/testsuite/gfortran.dg/pr91641.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91641.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,7 @@
++! { dg-do compile }
++! PR fortran/91641
++! Code conyributed by Gerhard Steinmetz
++program p
++ real, pointer :: z(:)
++ print *, is_contiguous (null(z)) ! { dg-error "shall be an associated" }
++end
+Index: gcc/testsuite/gfortran.dg/pr91471.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91471.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91471.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++! { dg-do compile }
++! PR fortran/91471
++! Code contributed by Sameeran Joshi <SameeranJayant dot Joshi at amd dot com>
++!
++! This invalid code (x(1) is referenced, but never set) caused an ICE due
++! to hitting a gfc_internal_error() in primary.c (gfc_variable_attr). The
++! fix is to remove that gfc_internal_error().
++!
++program dynamic
++ implicit none
++ integer, dimension(:), allocatable :: x
++ allocate(x(1))
++ stop x(1)
++end program dynamic
+Index: gcc/testsuite/gfortran.dg/pr78719_2.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr78719_2.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr78719_2.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,32 @@
++! { dg-do compile }
++! PR fortran/78719
++! Code contributed by Gerhard Steinmetz
++program p
+
-+__attribute__((target_clones("avx","arch=slm","arch=core-avx2","default")))
-+int
-+foo ()
-+{
-+ return -2;
-+}
++ type t
++ integer :: n
++ end type
+
-+int
-+bar ()
-+{
-+ return 2;
-+}
++ real :: g
+
-+int
-+main ()
-+{
-+ int r = 0;
-+ r += bar ();
-+ r += foo ();
-+ r += bar ();
-+ r += foo ();
-+ r += bar ();
-+ return r - 2;
-+}
-Index: gcc/testsuite/gcc.target/i386/pr80298-2.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr80298-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr80298-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,7 @@
-+/* PR target/80298 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -mno-sse -mmmx" } */
++ abstract interface
++ subroutine h
++ end
++ end interface
+
-+#include <mm3dnow.h>
++ procedure(h), pointer :: s
+
-+int i;
-Index: gcc/testsuite/gcc.target/i386/pr79729.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/pr79729.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/pr79729.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+/* PR target/79729 */
-+/* { dg-do compile } */
++ s => f
++ call s
++ s => g ! { dg-error "Invalid procedure pointer" }
++ call s
+
-+void
-+foo (int x)
-+{
-+ __asm__ volatile ("# %R0" : : "n" (129)); /* { dg-error "invalid operand code" } */
-+}
-Index: gcc/testsuite/gcc.target/i386/mpx/pr79770.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/mpx/pr79770.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/mpx/pr79770.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+/* { dg-do compile { target lp64 } } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -mabi=ms -Wno-psabi" } */
++ contains
+
-+typedef unsigned U __attribute__ ((vector_size (64)));
-+typedef unsigned __int128 V __attribute__ ((vector_size (64)));
++ subroutine f
++ end
+
-+static inline V
-+bar (U u, U x, V v)
-+{
-+ v = (V)(U) { 0, ~0 };
-+ v[x[0]] <<= u[-63];
-+ return v;
-+}
++ subroutine g ! { dg-error "has an explicit interface" }
++ end
+
-+V
-+foo (U u)
-+{
-+ return bar (u, (U) {}, (V) {});
-+}
-Index: gcc/testsuite/gcc.target/i386/mpx/pr79753.c
++end program p ! { dg-error "Syntax error" }
+Index: gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c
===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/mpx/pr79753.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/mpx/pr79753.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
-+/* { dg-do compile } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -O2" } */
+--- a/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,12 @@
++/* Test the fix for PR91926. */
+
-+int
-+foo (void)
-+{
-+ return 0;
-+}
++/* Contributed by José Rui Faustino de Sousa <jrfsousa@hotmail.com> */
+
-+void
-+bar (int **p)
-+{
-+ *p = (int *) (__UINTPTR_TYPE__) foo ();
-+}
-Index: gcc/testsuite/gcc.target/i386/mpx/pr78339.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/mpx/pr78339.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/mpx/pr78339.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,5 @@
-+/* { dg-do compile } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -Wsuggest-attribute=noreturn" } */
++#include <stdlib.h>
+
-+extern _Noreturn void exit (int);
-+int main (void) { exit (1); }
-Index: gcc/testsuite/gcc.target/i386/mpx/pr79631.c
-===================================================================
---- a/src/gcc/testsuite/gcc.target/i386/mpx/pr79631.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.target/i386/mpx/pr79631.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+/* { dg-do compile { target { ! x32 } } } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -O2" } */
++int ifb_echo(void*);
+
-+typedef struct { int _mp_size; } mpz_t[1];
-+int a, b;
-+void fn1()
++int ifb_echo(void *this)
+{
-+ mpz_t c[1][b];
-+ for (;;) {
-+ int d = 0 >= 0 ? 0 == 0 ? c[0][0]->_mp_size ? -1 : 0 : 0 : 0,
-+ e = 0 >= 0 ? 0 == 0 ? c[1][1]->_mp_size ? -1 : 0 : 0 : 0;
-+ if (d != e)
-+ a++;
-+ }
++ return this == NULL ? 1 : 2;
+}
-Index: gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
+Index: gcc/testsuite/gfortran.dg/pr91785.f90
===================================================================
---- a/src/gcc/testsuite/g++.old-deja/g++.abi/vtable2.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vtable2.C (.../branches/gcc-6-branch)
-@@ -142,10 +142,24 @@
- #define INC_VDATA(A,N) ((A) += 2*(N))
- #endif
- #else
-+// HPPA uses function pointers but they point to function descriptors.
-+#if defined __hppa__
-+#ifdef __hpux__
-+#ifdef _LP64
-+#define CMP_VPTR(A, B) (*(unsigned long *)(*(A)+16) == *(unsigned long *)((unsigned long)(B)+16))
-+#else
- #define CMP_VPTR(A, B) (*(A) == (ptrdiff_t)(B))
-+#endif /* _LP64 */
-+#else
-+extern "C" { unsigned int __canonicalize_funcptr_for_compare (void*); }
-+#define CMP_VPTR(A, B) (__canonicalize_funcptr_for_compare(*(void **)A) == __canonicalize_funcptr_for_compare((void *)B))
-+#endif /* __hpux__ */
-+#else
-+#define CMP_VPTR(A, B) (*(A) == (ptrdiff_t)(B))
-+#endif /* __hppa__ */
- #define INC_VPTR(A) ((A) += 1)
- #define INC_VDATA(A,N) ((A) += (N))
--#endif
-+#endif /* __ia64__ */
-
- int main ()
- {
-Index: gcc/testsuite/gfortran.dg/submodule_27.f08
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/submodule_27.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/submodule_27.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,44 @@
-+! { dg-do run }
-+!
-+! Tests the fix for PR71838 in which the PROCEDURE dummy argument caused
-+! an ICE in the submodule. This an executable version of the reduced test
-+! in comment #11.
-+!
-+! Contributed by Anton Shterenlikht <mexas@bristol.ac.uk>
-+! Test reduced by Dominique d'Humieres <dominiq@lps.ens.fr>
-+!
-+subroutine hello (message)
-+ character (7), intent(inout) :: message
-+ message = "hello "
+--- a/src/gcc/testsuite/gfortran.dg/pr91785.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91785.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,8 @@
++! { dg-do compile }
++! PR fortran/91785
++! Code contributed by Gerhard Steinmetz
++program p
++ complex :: a(*) ! { dg-error "Assumed size array at" }
++ real :: b(2)
++ b = a%im ! { dg-error "upper bound in the last dimension" }
+end
+Index: gcc/testsuite/gfortran.dg/use_15.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/use_15.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/use_15.f90 (.../branches/gcc-9-branch)
+@@ -28,8 +28,8 @@
+ end subroutine
+
+
+-subroutine my_sub3 (a)
+- use test_mod2, my_sub3 => my_sub2 ! { dg-error "is also the name of the current program unit" }
++subroutine my_sub3 (a) ! { dg-error "\(1\)" }
++ use test_mod2, my_sub3 => my_sub2 ! { dg-error "conflicts with the rename" }
+ real a
+ print *, a
+ end subroutine
+Index: gcc/testsuite/gfortran.dg/pr71649.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr71649.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr71649.f90 (.../branches/gcc-9-branch)
+@@ -1,13 +1,13 @@
+ ! { dg-do compile }
+ ! PR71649 Internal Compiler Error
+-SUBROUTINE Compiler_Options ( Options, Version, WriteOpt )
+- USE ISO_FORTRAN_ENV, ONLY : Compiler_Version, Compiler_Options ! { dg-error "already declared" }
++SUBROUTINE Compiler_Options ( Options, Version, WriteOpt ) ! { dg-error "\(1\)" }
++ USE ISO_FORTRAN_ENV, ONLY : Compiler_Version, Compiler_Options ! { dg-error "conflicts with the" }
+ IMPLICIT NONE
+ CHARACTER (LEN=*), INTENT(OUT) :: Options
+ CHARACTER (LEN=*), INTENT(OUT) :: Version
+ LOGICAL, INTENT(IN), OPTIONAL :: WriteOpt
+- Version = Compiler_Version()
+- Options = Compiler_Options() ! { dg-error "Unexpected use of subroutine name" }
++ Version = Compiler_Version() ! { dg-error "has no IMPLICIT type" }
++ Options = Compiler_Options() ! { dg-error "Unexpected use of subroutine name" }
+ RETURN
+ END SUBROUTINE Compiler_Options
+
+Index: gcc/testsuite/gfortran.dg/pr89943_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr89943_1.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr89943_1.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,31 @@
++! { dg-do compile }
++! PR fortran/89943
++! Code contributed by Alberto Luaces <aluaces at udc dot se>
++module Foo_mod
+
-+module cgca_m3clvg
-+ interface
-+ subroutine cgca_clvgs_abstract(message)
-+ character (7), intent(inout) :: message
-+ end subroutine cgca_clvgs_abstract
-+ end interface
++ implicit none
+
-+ interface
-+ module subroutine cgca_clvgp(sub)
-+ procedure( cgca_clvgs_abstract ) :: sub
-+ end subroutine cgca_clvgp
-+ end interface
++ interface
++ module subroutine runFoo4C(ndim) bind(C, name="runFoo")
++ use, intrinsic :: iso_c_binding
++ implicit none
++ integer(c_int32_t) , intent(in) :: ndim
++ end subroutine runFoo4C
++ end interface
+
-+ character (7) :: greeting
-+end module cgca_m3clvg
++ contains
+
-+submodule ( cgca_m3clvg ) m3clvg_sm3
-+ implicit none
-+contains
-+ module procedure cgca_clvgp
-+ call sub (greeting)
-+ end procedure cgca_clvgp
-+end submodule m3clvg_sm3
-+
-+ use cgca_m3clvg
-+ external hello
-+ greeting = "goodbye"
-+ call cgca_clvgp (hello)
-+ if (trim (greeting) .ne. "hello") call abort
-+end
-Index: gcc/testsuite/gfortran.dg/gomp/pr78866-1.f90
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/gomp/pr78866-1.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/gomp/pr78866-1.f90 (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+! PR fortran/78866
-+! { dg-do compile }
++end module Foo_mod
+
-+subroutine pr78866(x)
-+ integer :: x(*)
-+!$omp target map(x) ! { dg-error "Assumed size array" }
-+ x(1) = 1
-+!$omp end target
-+!$omp target data map(tofrom: x) ! { dg-error "Assumed size array" }
-+!$omp target update to(x) ! { dg-error "Assumed size array" }
-+!$omp target update from(x) ! { dg-error "Assumed size array" }
-+!$omp end target data
-+!$omp target map(x(:23)) ! { dg-bogus "Assumed size array" }
-+ x(1) = 1
-+!$omp end target
-+!$omp target map(x(:)) ! { dg-error "upper bound of assumed size array section" }
-+ x(1) = 1 ! { dg-error "not a proper array section" "" { target *-*-* } .-1 }
-+!$omp end target
-+end
-Index: gcc/testsuite/gfortran.dg/gomp/pr78866-2.f90
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/gomp/pr78866-2.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/gomp/pr78866-2.f90 (.../branches/gcc-6-branch)
-@@ -0,0 +1,9 @@
-+! PR fortran/78866
-+! { dg-do compile }
++submodule(Foo_mod) Foo_smod
+
-+subroutine pr78866(x)
-+ integer :: x(*)
-+!$omp target ! { dg-error "implicit mapping of assumed size array" }
-+ x(1) = 1
-+!$omp end target
-+end
-Index: gcc/testsuite/gfortran.dg/gomp/map-1.f90
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/gomp/map-1.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/gomp/map-1.f90 (.../branches/gcc-6-branch)
-@@ -70,7 +70,7 @@
- ! { dg-error "Rightmost upper bound of assumed size array section not specified" "" { target *-*-* } 68 }
- ! { dg-error "'aas' in MAP clause at \\\(1\\\) is not a proper array section" "" { target *-*-* } 68 }
-
-- !$omp target map(aas) ! { dg-error "The upper bound in the last dimension must appear" "" { xfail *-*-* } }
-+ !$omp target map(aas) ! { dg-error "Assumed size array" }
- !$omp end target
-
- !$omp target map(aas(5:7))
-Index: gcc/testsuite/gfortran.dg/coarray_event_1.f08
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/coarray_event_1.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/coarray_event_1.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+! { dg-do compile }
-+! { dg-options "-fcoarray=lib -lcaf_single" }
++ contains
+
-+! Check that pr70696 is really fixed.
++ module subroutine runFoo4C(ndim) bind(C, name="runFoo")
++ use, intrinsic :: iso_c_binding
++ implicit none
++ integer(c_int32_t) , intent(in) :: ndim
++ end subroutine runFoo4C
+
-+ use iso_fortran_env
-+ type(event_type) :: x[*]
++end submodule Foo_smod
+
-+ ! exchange must not be called or the link problem before the patch
-+ ! does not occur.
-+contains
-+ subroutine exchange
-+ event post (x[1])
-+ end subroutine
-+end
-Index: gcc/testsuite/gfortran.dg/submodule_22.f08
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/submodule_22.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/submodule_22.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,47 @@
-+! { dg-do compile }
+Index: gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,41 @@
++! { dg-do run }
+!
-+! Test the fix for PR78474.
++! Correct an error in the eveluation of the CFI descriptor attribute for
++! the case where the bind_C formal argument is not an assumed shape array
++! and not allocatable or pointer.
+!
-+! Contributed by Nicholas Brearly <nick.brealey@cobham.com>
++! Contributed by Gilles Gouaillardet <gilles@rist.or.jp>
+!
-+module mtop
-+ implicit none
-+ real :: r
-+ interface
-+ module subroutine sub1()
-+ end subroutine
-+ end interface
-+ interface
-+ module subroutine sub2()
-+ end subroutine
-+ end interface
-+ interface
-+ module subroutine sub3()
-+ end subroutine
-+ end interface
-+end module mtop
++MODULE FOO
++INTERFACE
++SUBROUTINE dummy(buf) BIND(C, name="sync")
++type(*), dimension(..) :: buf
++END SUBROUTINE
++END INTERFACE
++END MODULE
+
-+submodule (mtop) submod
-+ implicit none
-+ real :: s
-+contains
-+ module subroutine sub1
-+ r = 0.0
-+ end subroutine sub1
-+end
++PROGRAM main
++ USE FOO
++ IMPLICIT NONE
++ integer(8) :: before, after
+
-+submodule (mtop:submod) subsubmod
-+contains
-+ module subroutine sub2
-+ r = 1.0
-+ s = 1.0
-+ end subroutine sub2
-+end
++ INTEGER, parameter :: n = 1
+
-+submodule (mtop:submod:subsubmod) subsubsubmod ! { dg-error "Syntax error in SUBMODULE statement" }
-+contains
-+ module subroutine sub3
-+ r = 2.0
-+ s = 2.0
-+ end subroutine sub3
-+end
-Index: gcc/testsuite/gfortran.dg/submodule_26.f08
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/submodule_26.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/submodule_26.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,46 @@
-+! { dg-do compile }
-+! { dg-options "-fcoarray=single" }
-+!
-+! Tests the fix for PR71838 in which the PROCEDURE dummy argument caused
-+! an ICE in the submodule. This is the reduced test in comment #9.
-+!
-+! Contributed by Anton Shterenlikht <mexas@bristol.ac.uk>
-+! Test reduced by Dominique d'Humieres <dominiq@lps.ens.fr>
-+!
-+module cgca_m3clvg
-+ abstract interface
-+ subroutine cgca_clvgs_abstract( farr, marr, n, cstate, debug, &
-+ newstate )
-+ integer, parameter :: iarr = 4, idef = 4, rdef = 4, ldef = 4
-+ integer, parameter :: l=-1, centre=l+1, u=centre+1
-+ integer( kind=iarr ), intent(in) :: farr(l:u,l:u,l:u), &
-+ marr(l:u,l:u,l:u), cstate
-+ real( kind=rdef ), intent(in) :: n(3)
-+ logical( kind=ldef ), intent(in) :: debug
-+ integer( kind=iarr ), intent(out) :: newstate
-+ end subroutine cgca_clvgs_abstract
-+ end interface
++ INTEGER, ALLOCATABLE :: buf(:)
++ INTEGER :: buf2(n)
++ INTEGER :: i
+
-+ interface
-+ module subroutine cgca_clvgp( coarray, rt, t, scrit, sub, gcus, &
-+ periodicbc, iter, heartbeat, debug )
-+ integer, parameter :: iarr = 4, idef = 4, rdef = 4, ldef = 4
-+ integer( kind=iarr ), allocatable, intent(inout) :: &
-+ coarray(:,:,:,:)[:,:,:]
-+ real( kind=rdef ), allocatable, intent(inout) :: rt(:,:,:)[:,:,:]
-+ real( kind=rdef ), intent(in) :: t(3,3), scrit(3)
-+ procedure( cgca_clvgs_abstract ) :: sub
-+ logical( kind=ldef ), intent(in) :: periodicbc
-+ integer( kind=idef ), intent(in) :: iter, heartbeat
-+ logical( kind=ldef ), intent(in) :: debug
-+ end subroutine cgca_clvgp
-+ end interface
-+end module cgca_m3clvg
++ ALLOCATE(buf(n))
++ before = LOC(buf(1))
++ CALL dummy (buf)
++ after = LOC(buf(1))
+
++ if (before .NE. after) stop 1
+
-+submodule ( cgca_m3clvg ) m3clvg_sm3
-+ implicit none
-+contains
-+ module procedure cgca_clvgp
-+ end procedure cgca_clvgp
-+end submodule m3clvg_sm3
-Index: gcc/testsuite/gfortran.dg/submodule_21.f08
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/submodule_21.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/submodule_21.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+! { dg-do compile }
-+!
-+! Test the fix for PR78331.
-+!
-+! Reported on https://groups.google.com/forum/#!topic/comp.lang.fortran/NFCF9brKksg
-+!
-+MODULE MainModule
-+END MODULE MainModule
-+
-+SUBMODULE (MainModule) MySub1
-+ IMPLICIT NONE
-+ INTEGER, PARAMETER :: a = 17
-+END SUBMODULE MySub1
-+
-+PROGRAM MyProg
-+ USE MainModule
-+ WRITE(*,*) a
-+END PROGRAM MyProg
-+! { dg-excess-errors "does not contain a MODULE PROCEDURE" }
-Index: gcc/testsuite/gfortran.dg/class_62.f90
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/class_62.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/class_62.f90 (.../branches/gcc-6-branch)
-@@ -0,0 +1,29 @@
-+! { dg-do run }
-+! { dg-options "-fcheck=recursion" }
-+!
-+! PR 80361: [5/6/7 Regression] bogus recursive call to nonrecursive procedure with -fcheck=recursion
-+!
-+! Contributed by Jürgen Reuter <juergen.reuter@desy.de>
++ before = LOC(buf2(1))
++ CALL dummy (buf)
++ after = LOC(buf2(1))
+
-+program main_ut
++ if (before .NE. after) stop 2
+
-+ implicit none
++END PROGRAM
+Index: gcc/testsuite/gfortran.dg/bind_c_array_params_3_aux.c
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/bind_c_array_params_3_aux.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/bind_c_array_params_3_aux.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,26 @@
++/* Used by bind_c_array_params_3.f90. */
++/* PR fortran/92284. */
+
-+ type :: prt_spec_expr_t
-+ end type
++#include <assert.h>
++#include <errno.h>
++#include <stdio.h>
+
-+ type :: prt_expr_t
-+ class(prt_spec_expr_t), allocatable :: x
-+ end type
++#include "../../../libgfortran/ISO_Fortran_binding.h"
+
-+ type, extends (prt_spec_expr_t) :: prt_spec_list_t
-+ type(prt_expr_t) :: e
-+ end type
++void arr_set_c(CFI_cdesc_t*);
+
-+ class(prt_spec_list_t), allocatable :: y
++void arr_set_c(CFI_cdesc_t *arr){
++ int i, stat, *auxp = NULL;
++ CFI_index_t lb[] = {1};
++ CFI_index_t ub[] = {9};
++
++ assert(arr);
++ assert(arr->rank==1);
++ assert(!arr->base_addr);
++ stat = CFI_allocate(arr, lb, ub, sizeof(int));
++ assert(stat==CFI_SUCCESS);
++ auxp = (int*)arr->base_addr;
++ assert(auxp);
++ for(i=0; i<ub[0]-lb[0]+1; i++) auxp[i]=i;
++ return;
++}
+Index: gcc/testsuite/gfortran.dg/pr91568.f
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91568.f (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91568.f (.../branches/gcc-9-branch)
+@@ -0,0 +1,11 @@
++! { dg-do compile }
++! { dg-options "-Ofast" }
++ subroutine h3dall(z,hvec,hder,nterms)
++ complex *16 hvec(0:1),hder(0:1)
++ complex *16 z,zinv,ztmp/1.0/
++ zinv=1.0/z
++ do i=1,nterms
++ ztmp=zinv*i
++ hder(i)=hvec(i-1)-ztmp*hvec(i)
++ enddo
++ end
+Index: gcc/testsuite/gfortran.dg/pr47054_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr47054_1.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr47054_1.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
++! { dg-do compile }
++! { dg-options "-fcray-pointer" }
++! PR fortran/47054
++subroutine host_sub
++ implicit none
++ real xg
++ pointer (paxg, xg)
++ call internal_sub
++ contains
++ subroutine internal_sub
++ implicit none
++ real xg
++ pointer (paxg, xg)
++ end subroutine internal_sub
++end subroutine host_sub
+Index: gcc/testsuite/gfortran.dg/pr91649.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91649.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91649.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++! PR fortran/91649
++! Code originally contributed by Gerhard Steinmetz
++subroutine p
++ logical :: back = .true.
++ integer :: x(1) = findloc([1, 2, 1], '1', back=back) ! { dg-error "must be in type conformance" }
++ print *, x
++end
+
-+ allocate (y)
-+ allocate (prt_spec_list_t :: y%e%x)
-+ deallocate(y)
++subroutine q
++ type t
++ end type
++ logical :: back = .false.
++ integer :: x(1) = findloc([1, 2, 1], t(), back=back) ! { dg-error "must be of intrinsic type" }
++ print *, x
++end
+
-+end program
-Index: gcc/testsuite/gfortran.dg/submodule_25.f08
++subroutine s
++ character(4) :: c = '1234'
++ integer :: x(1) = findloc([1, 2, 1], c, back=.true.) ! { dg-error "must be in type conformance" }
++ print *, x
++end
++
+Index: gcc/testsuite/gfortran.dg/pr91552.f90
===================================================================
---- a/src/gcc/testsuite/gfortran.dg/submodule_25.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/submodule_25.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,43 @@
+--- a/src/gcc/testsuite/gfortran.dg/pr91552.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91552.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,10 @@
++! { dg-do run }
++! PR fortran/91552
++! Code contributed by Gerhard Steinmetz.
++program p
++ real :: y(3), z(4)
++ y = 2.0 * [real :: 1, [2], 3]
++ z = 2.0 * [real :: 1, [2, [4]], 3]
++ if (any(y /= [2., 4., 6.])) stop 1
++ if (any(z /= [2., 4., 8., 6.])) stop 2
++end
+Index: gcc/testsuite/gfortran.dg/pr91715.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91715.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91715.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,5 @@
+! { dg-do compile }
-+! Test the fix for PR79434 in which the PRIVATE attribute of the
-+! component 'i' of the derived type 't' was not respected in the
-+! submodule 's_u'.
++! PR fortran/91715
++! Code contributed Gerhard Steinmetz
++character(1function f() ! { dg-error "Syntax error in CHARACTER" }
++end
+Index: gcc/testsuite/gfortran.dg/char_result_19.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/char_result_19.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/char_result_19.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,24 @@
++! { dg-do preprocess }
++! { dg-additional-options "-cpp" }
+!
-+! Contributed by Reinhold Bader <Bader@lrz.de>
++! Test the fix for PR86248
+!
-+module mod_encap_t
-+ implicit none
-+ type, public :: t
-+ private
-+ integer :: i
-+ end type
-+end module
-+module mod_encap_u
-+ use mod_encap_t
-+ type, public, extends(t) :: u
-+ private
-+ integer :: j
-+ end type
-+ interface
-+ module subroutine fu(this)
-+ type(u), intent(inout) :: this
-+ end subroutine
-+ end interface
-+end module
-+submodule (mod_encap_u) s_u
-+contains
-+ module procedure fu
-+! the following statement should cause the compiler to
-+! abort, pointing out a private component defined in
-+! a USED module is being accessed
-+ this%i = 2 ! { dg-error "is a PRIVATE component" }
-+ this%j = 1
-+ write(*, *) 'FAIL'
-+ end procedure
-+end submodule
-+program p
-+ use mod_encap_u
++! Contributed by Bill Long <longb@cray.com>
++!
++program test
++ use test_module
+ implicit none
-+ type(u) :: x
-+ call fu(x)
-+end program
-Index: gcc/testsuite/gfortran.dg/fimplicit_none_2.f90
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/fimplicit_none_2.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/fimplicit_none_2.f90 (.../branches/gcc-6-branch)
++ integer :: i
++ character(:), allocatable :: chr
++ do i = 0, 2
++ chr = func_1 (i)
++ select case (i)
++ case (0)
++ if (chr .ne. 'el0') stop i
++ case (1)
++ if (chr .ne. 'el11') stop i
++ case (2)
++ if (chr .ne. 'el2') stop i
++ end select
++ end do
++end program test
+Index: gcc/testsuite/gfortran.dg/allocated_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/allocated_3.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/allocated_3.f90 (.../branches/gcc-9-branch)
@@ -0,0 +1,6 @@
+! { dg-do compile }
-+! { dg-options "-fimplicit-none" }
-+! PR fortran/78239 - used to ICE
++! PR fortran/91551
++! Contributed by Gerhard Steinmetz
+program p
-+ character(*), parameter :: z(2) = [character(n) :: 'x', 'y'] ! { dg-error "Scalar INTEGER expression expected" }
++ if (allocated()) stop 1 ! { dg-error "requires an array or scalar allocatable" }
+end
-Index: gcc/testsuite/gfortran.dg/proc_ptr_comp_49.f90
+Index: gcc/testsuite/gfortran.dg/function_kinds_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/function_kinds_5.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/function_kinds_5.f90 (.../branches/gcc-9-branch)
+@@ -8,3 +8,4 @@
+ real (bad_kind(0d0)) function foo () ! { dg-error "must be an intrinsic function" }
+ foo = real (kind (foo))
+ end function
++! { dg-prune-output "Bad kind expression for function" }
+Index: gcc/testsuite/gfortran.dg/pr88072.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr88072.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr88072.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,30 @@
++! { dg-do compile }
++! PR fortran/88072
++! Original code contributed by Andrew Wood <andrew at fluidgravity dot co.uk>
++module m1
++
++ implicit none
++
++ type, abstract, public :: t1
++ integer, dimension(:), allocatable :: i
++ contains
++ procedure(f1), deferred :: f
++ end type t1
++
++ type, extends(t1), public :: t2 ! { dg-error "must be ABSTRACT because" }
++ contains
++ procedure :: f => f2 ! { dg-error "mismatch for the overriding" }
++ end type t2
++
++ abstract interface
++ function f1(this) ! { dg-error "must be dummy, allocatable or" }
++ import
++ class(t1) :: this
++ class(t1) :: f1
++ end function f1
++ end interface
++ contains
++ type(t2) function f2(this)
++ class(t2) :: this
++ end function f2
++end module m1
+Index: gcc/testsuite/gfortran.dg/do_subscript_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/do_subscript_5.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_5.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,20 @@
++! { dg-do compile }
++! { dg-additional-options "-Wdo-subscript" }
++! PR 90563 - this used to be rejected, wrongly
++! Original test case by Tobias Neumann
++program test
++ implicit none
++ integer, parameter :: swap(4) = [2,1,3,4]
++ real :: p(20)
++ integer :: j
++
++ p = 0.0
++
++ ! The following warnings are actually bogus, but we are not yet
++ ! clever enough to suppress them.
++ do j=1,6 ! { dg-warning "out of bounds" }
++ if (j<5) then
++ p(j) = p(swap(j)) ! { dg-warning "out of bounds" }
++ endif
++ enddo
++end program
+Index: gcc/testsuite/gfortran.dg/pr91660_2.f90
===================================================================
---- a/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_49.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_comp_49.f90 (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
+--- a/src/gcc/testsuite/gfortran.dg/pr91660_2.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91660_2.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,9 @@
+! { dg-do compile }
-+!
-+! PR 80392: [5/6/7 Regression] [OOP] ICE with allocatable polymorphic function result in a procedure pointer component
-+!
-+! Contributed by <zed.three@gmail.com>
++! PR fortran/91660
++program foo
++ type(doubleprecision :: x ! { dg-error "Malformed type-spec" }
++ type(double precision :: y ! { dg-error "Malformed type-spec" }
++ type(character(len=3) :: a ! { dg-error "Malformed type-spec" }
++ type(doublecomplex :: b ! { dg-error "Malformed type-spec" }
++ type(double complex :: c ! { dg-error "Malformed type-spec" }
++end program foo
+Index: gcc/testsuite/gfortran.dg/pr78719_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr78719_1.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr78719_1.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,29 @@
++! { dg-do run }
++! PR fortran/78719
++! Code contributed by Gerhard Steinmetz
++program p
+
-+module mwe
++ type t
++ integer :: n
++ end type
+
-+ implicit none
++ abstract interface
++ subroutine h
++ end
++ end interface
+
-+ type :: MyType
-+ procedure(my_op), nopass, pointer :: op
-+ end type
++ procedure(h), pointer :: s
+
-+contains
++ s => f
++ call s
++ s => g
++ call s
+
-+ function my_op() result(foo)
-+ class(MyType), allocatable :: foo
-+ end function
++ contains
+
-+end module
-Index: gcc/testsuite/gfortran.dg/coarray_43.f90
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/coarray_43.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/coarray_43.f90 (.../branches/gcc-6-branch)
-@@ -0,0 +1,13 @@
-+! { dg-do link }
-+! { dg-options "-fcoarray=lib -lcaf_single" }
++ subroutine f
++ end
+
-+program coarray_43
-+ implicit none
-+ integer, parameter :: STR_LEN = 50
-+ character(len=STR_LEN) :: str[*]
-+ integer :: pos
-+ write(str,"(2(a,i2))") "Greetings from image ",this_image()," of ",num_images()
-+ block
-+ pos = scan(str[5], set="123456789")
-+ end block
-+end program
-Index: gcc/testsuite/gfortran.dg/fimplicit_none_1.f90
++ subroutine g
++ end
++end program p
+Index: gcc/testsuite/gfortran.dg/pr78739.f90
===================================================================
---- a/src/gcc/testsuite/gfortran.dg/fimplicit_none_1.f90 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/fimplicit_none_1.f90 (.../branches/gcc-6-branch)
-@@ -0,0 +1,6 @@
+--- a/src/gcc/testsuite/gfortran.dg/pr78739.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr78739.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
+! { dg-do compile }
-+! { dg-options "-fimplicit-none" }
-+subroutine s(n) ! { dg-error "has no IMPLICIT type" }
-+ character(n) :: c ! { dg-error "Scalar INTEGER expression expected" }
-+ c = 'c' ! { dg-error "has no IMPLICIT type" }
++! { dg-options "-w" }
++! PR fortran/78739
++! Code contributed Gerhard Steinmetz
++function f(n)
++ f() = n ! { dg-error "conflicts with function name" }
+end
-Index: gcc/testsuite/gfortran.dg/submodule_28.f08
++
++function g()
++ g(x) = x ! { dg-error "conflicts with function name" }
++end
++
++function a() ! This should cause an error, but cannot be easily detected!
++ a() = x
++end
+Index: gcc/testsuite/gfortran.dg/pr89647.f90
===================================================================
---- a/src/gcc/testsuite/gfortran.dg/submodule_28.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/submodule_28.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,52 @@
-+! { dg-do run }
+--- a/src/gcc/testsuite/gfortran.dg/pr89647.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr89647.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,33 @@
++! { dg-do compile }
++! Code contributed by Ian Harvey <ian_harvey at bigpond dot com>
++ MODULE m1
++ IMPLICIT NONE
++ PUBLIC :: False
++ PUBLIC :: True
++ CONTAINS
++ FUNCTION False() RESULT(b)
++ LOGICAL :: b
++ b = .FALSE.
++ END FUNCTION False
++
++ FUNCTION True() RESULT(b)
++ LOGICAL :: b
++ b = .TRUE.
++ END FUNCTION True
++ END MODULE m1
++
++ MODULE m2
++ USE m1
++ IMPLICIT NONE
++ TYPE, ABSTRACT :: t_parent
++ CONTAINS
++ PROCEDURE(False), DEFERRED, NOPASS :: Binding
++ END TYPE t_parent
++ CONTAINS
++ SUBROUTINE s
++ TYPE, EXTENDS(t_parent) :: t_extension
++ CONTAINS
++ PROCEDURE, NOPASS :: Binding => True
++ END TYPE t_extension
++ END SUBROUTINE s
++ END MODULE m2
+Index: gcc/testsuite/gfortran.dg/pr91589.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91589.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91589.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
++! { dg-do compile }
+!
-+! Tests the fix for PR79676 in which submod_test was private even to the
-+! submodule 'my_submod'.
++! Check the fix for PR91589, in which the invalid expression caused an ICE.
++! Other statements using this invalid expression cause "Unclassifiable statement at..."
+!
-+! Contributed by Adam Hirst <adam@aphirst.karoo.co.uk>
++! Contributed by Gerhardt Steinmetz <gscfq@t-online.de>
+!
-+module my_mod
-+ private ! This hid 'submod_test'.
-+ interface
-+ module subroutine submod_test(x)
-+ integer :: x
-+ end subroutine
-+ end interface
-+ integer answer
-+ public routine1, print_two, answer
-+contains
-+ subroutine routine1(x)
-+ integer :: x
-+ call submod_test(x)
-+ end subroutine
-+ subroutine print_two()
-+ integer, parameter :: two = 2
-+ answer = answer * two
-+ end subroutine
-+end module
-+
-+module my_mod_2
-+ use my_mod
-+contains
-+ subroutine circular_dependency()
-+ call print_two()
-+ end subroutine
-+end module
-+
-+submodule (my_mod) my_submod
-+ use my_mod_2
-+contains
-+module subroutine submod_test(x)
-+ integer :: x
-+ answer = x
-+ call circular_dependency()
-+end subroutine
-+
-+end submodule
++program p
++ type t
++ integer :: a
++ end type
++ type(t) :: x = t(1)
++ call sub (x%a%a) ! { dg-error "Syntax error in argument list" }
++end
+
-+program hello
-+ use my_mod
-+ implicit none
-+ call routine1(2)
-+ if (answer .ne. 4) call abort
-+end program
-Index: gcc/testsuite/gfortran.dg/coarray/event_3.f08
+Index: gcc/testsuite/gfortran.dg/pr69455_2.f90
===================================================================
---- a/src/gcc/testsuite/gfortran.dg/coarray/event_3.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/coarray/event_3.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
+--- a/src/gcc/testsuite/gfortran.dg/pr69455_2.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr69455_2.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
+! { dg-do run }
++program foo
++ block
++ use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL32, ik => INT32
++ if (ik /= 4) stop 1
++ if (wp /= 4) stop 2
++ end block
++ block
++ use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL64, ik => INT64
++ if (ik /= 8) stop 3
++ if (wp /= 8) stop 4
++ end block
++end program foo
+Index: gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,39 @@
++! { dg-do run { target c99_runtime } }
++! { dg-additional-sources ISO_Fortran_binding_13.c }
+!
-+! Check PR fortran/70696 is fixed.
-+
-+program global_event
-+ use iso_fortran_env , only : event_type
-+ implicit none
-+ type(event_type) :: x[*]
-+
-+ call exchange
-+ contains
-+ subroutine exchange
-+ integer :: cnt
-+ event post(x[1])
-+ event post(x[1])
-+ call event_query(x, cnt)
-+ if (cnt /= 2) error stop 1
-+ event wait(x, until_count=2)
-+ end subroutine
-+end
-Index: gcc/testsuite/gfortran.dg/coarray/event_4.f08
-===================================================================
---- a/src/gcc/testsuite/gfortran.dg/coarray/event_4.f08 (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gfortran.dg/coarray/event_4.f08 (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+! { dg-do run }
++! Test the fix for PR91926. The additional source is the main program.
+!
-+! Check that pr 70697 is fixed.
-+
-+program event_4
-+ use iso_fortran_env
-+ integer :: nc(1)
-+ type(event_type) done[*]
-+ nc(1) = 1
-+ event post(done[1])
-+ event wait(done,until_count=nc(1))
-+end
-Index: gcc/testsuite/gcc.c-torture/execute/pr79121.c
-===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/execute/pr79121.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr79121.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,34 @@
-+extern void abort (void);
-+
-+__attribute__ ((noinline, noclone)) unsigned long long f1 (int x)
-+{
-+ return ((unsigned long long) x) << 4;
-+}
-+
-+__attribute__ ((noinline, noclone)) long long f2 (unsigned x)
-+{
-+ return ((long long) x) << 4;
-+}
-+
-+__attribute__ ((noinline, noclone)) unsigned long long f3 (unsigned x)
-+{
-+ return ((unsigned long long) x) << 4;
-+}
++! Contributed by José Rui Faustino de Sousa <jrfsousa@hotmail.com>
++!
++program ifb_p
+
-+__attribute__ ((noinline, noclone)) long long f4 (int x)
-+{
-+ return ((long long) x) << 4;
-+}
++ implicit none
+
-+int main ()
-+{
-+ if (f1 (0xf0000000) != 0xffffffff00000000)
-+ abort ();
-+ if (f2 (0xf0000000) != 0xf00000000)
-+ abort ();
-+ if (f3 (0xf0000000) != 0xf00000000)
-+ abort ();
-+ if (f4 (0xf0000000) != 0xffffffff00000000)
-+ abort ();
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.c-torture/execute/20170419-1.c
-===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/execute/20170419-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/20170419-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,24 @@
-+/* PR tree-optimization/80426 */
-+/* Testcase by <ishiura-compiler@ml.kwansei.ac.jp> */
++ integer :: i = 42
+
-+#define INT_MAX 0x7fffffff
-+#define INT_MIN (-INT_MAX-1)
++ interface
++ integer function ifb_echo_aux(this) bind(c, name="ifb_echo")
++ implicit none
++ type(*), dimension(..), & ! removing assumed rank solves segmentation fault
++ optional, intent(in) :: this
++ end function ifb_echo_aux
++ end interface
+
-+int x;
++ if (ifb_echo_aux() .ne. 1) STOP 1 ! worked
++ if (ifb_echo() .ne. 1) stop 2 ! segmentation fault
++ if (ifb_echo_aux(i) .ne. 2) stop 3 ! worked
++ if (ifb_echo(i) .ne. 2) stop 4 ! worked
+
-+int main (void)
-+{
-+ volatile int a = 0;
-+ volatile int b = -INT_MAX;
-+ int j;
++ stop
+
-+ for(j = 0; j < 18; j += 1) {
-+ x = ( (a == 0) != (b - (int)(INT_MIN) ) );
-+ }
++contains
+
-+ if (x != 0)
-+ __builtin_abort ();
++ integer function ifb_echo(this)
++ type(*), dimension(..), &
++ optional, intent(in) :: this
+
-+ return 0;
-+}
++ ifb_echo = ifb_echo_aux(this)
++ return
++ end function ifb_echo
+
-Index: gcc/testsuite/gcc.c-torture/execute/pr80501.c
++end program ifb_p
+Index: gcc/testsuite/gfortran.dg/pr92208.f90
===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/execute/pr80501.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr80501.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,23 @@
-+/* PR rtl-optimization/80501 */
-+
-+signed char v = 0;
-+
-+static signed char
-+foo (int x, int y)
-+{
-+ return x << y;
-+}
-+
-+__attribute__((noinline, noclone)) int
-+bar (void)
-+{
-+ return foo (v >= 0, __CHAR_BIT__ - 1) >= 1;
-+}
+--- a/src/gcc/testsuite/gfortran.dg/pr92208.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr92208.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,39 @@
++! { dg-do run }
++!
++! PR fortran/92208
++!
++! Contributed by Nils Reiche
++!
++program stringtest
++ implicit none
++ integer, parameter :: noVars = 2
+
-+int
-+main ()
-+{
-+ if (sizeof (int) > sizeof (char) && bar () != 0)
-+ __builtin_abort ();
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.c-torture/execute/pr79043.c
-===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/execute/pr79043.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr79043.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* PR ipa/78791 */
++! print*, "varNames: ", createVarnames("var",noVars)
++ call function1(noVars,createVarnames("var",noVars),"path")
+
-+int val;
++contains
+
-+int *ptr = &val;
-+float *ptr2 = &val;
++function createVarnames(string,noVars) result(stringArray)
++ implicit none
++ character(len=*), intent(in) :: string
++ integer, intent(in) :: noVars
++ character(len=len_trim(string)+6), dimension(noVars) :: stringArray
++ integer :: i
++ do i=1,noVars
++ write(stringArray(i),'(a,i0)') string, i
++ enddo
++end function createVarnames
++
++subroutine function1(noVars,varNames,path)
++ implicit none
++ integer, intent(in) :: noVars
++ character(len=*), intent(in) :: path
++ character(len=*), dimension(noVars) :: varNames
+
-+static
-+__attribute__((always_inline, optimize ("-fno-strict-aliasing")))
-+typepun ()
-+{
-+ *ptr2=0;
-+}
++ if (path /= 'path') stop 1
++ if (any(varNames /= ['var1', 'var2'])) stop 2
++ !print*, "function1-path : ", trim(path)
++ !print*, "function1-varNames: ", varNames
++end subroutine function1
+
-+main()
-+{
-+ *ptr=1;
-+ typepun ();
-+ if (*ptr)
-+ __builtin_abort ();
-+}
-Index: gcc/testsuite/gcc.c-torture/execute/pr77767.c
++end program stringtest
+Index: gcc/testsuite/gfortran.dg/pr91485.f90
===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/execute/pr77767.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr77767.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,16 @@
-+/* PR c/77767 */
-+
-+void
-+foo (int a, int b[a++], int c, int d[c++])
-+{
-+ if (a != 2 || c != 2)
-+ __builtin_abort ();
-+}
+--- a/src/gcc/testsuite/gfortran.dg/pr91485.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91485.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,24 @@
++! { dg-do compile }
++module foo
++ implicit none
++ interface operator(.x.)
++ module procedure product
++ end interface operator(.x.)
++ contains
++ function product(x, y)
++ real, intent(in) :: x, y
++ real :: product
++ product = x * y
++ end function product
++end module foo
++
++module gfcbug155
++ implicit none
++ contains
++ subroutine print_prod (x, y)
++ use foo, only : operator(.x.)
++ implicit none
++ real :: x, y
++ print *, x .x. y
++ end subroutine print_prod
++end module gfcbug155
+Index: gcc/testsuite/gfortran.dg/pr89943_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr89943_4.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr89943_4.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,29 @@
++! { dg-do compile }
++module Foo_mod
+
-+int
-+main ()
-+{
-+ int e[10];
-+ foo (1, e, 1, e);
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.c-torture/execute/pr78617.c
-===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/execute/pr78617.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr78617.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,25 @@
-+int a = 0;
-+int d = 1;
-+int f = 1;
++ implicit none
+
-+int fn1() {
-+ return a || 1 >> a;
-+}
++ interface
++ module function runFoo4C(ndim) bind(C, name="runFoo")
++ use, intrinsic :: iso_c_binding
++ implicit none
++ integer runFoo4c
++ integer(c_int32_t) , intent(in) :: ndim
++ end function runFoo4C
++ end interface
+
-+int fn2(int p1, int p2) {
-+ return p2 >= 2 ? p1 : p1 >> 1;
-+}
++ contains
+
-+int fn3(int p1) {
-+ return d ^ p1;
-+}
++end module Foo_mod
+
-+int fn4(int p1, int p2) {
-+ return fn3(!d > fn2((f = fn1() - 1000) || p2, p1));
-+}
++submodule(Foo_mod) Foo_smod
+
-+int main() {
-+ if (fn4(0, 0) != 1)
-+ __builtin_abort ();
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.c-torture/compile/pr79197.c
-===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/compile/pr79197.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr79197.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* PR target/79197 */
++ contains
+
-+unsigned long b;
++ module function runFoo4C(ndim) bind(C, name="runFu") ! { dg-error "Mismatch in BIND" }
++ use, intrinsic :: iso_c_binding ! { dg-error "Unexpected USE statement in" }
++ implicit none ! { dg-error "Unexpected IMPLICIT NONE statement" }
++ integer(c_int32_t) , intent(in) :: ndim ! { dg-error "Unexpected data declaration" }
++ end function runFoo4C ! { dg-error "Expecting END SUBMODULE" }
+
-+unsigned long
-+foo (float *a, float *x)
-+{
-+ __builtin_memcpy (a, x, sizeof (float));
-+ return *a;
-+}
-Index: gcc/testsuite/gcc.c-torture/compile/pr79411.c
++end submodule Foo_smod
+Index: gcc/testsuite/gfortran.dg/pr91496.f90
===================================================================
---- a/src/gcc/testsuite/gcc.c-torture/compile/pr79411.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr79411.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+/* PR tree-optimization/79411 */
-+
-+typedef struct __jmp_buf_tag { char buf[1024]; } jmp_buf[1];
-+extern int setjmp (jmp_buf);
-+extern int bar (unsigned int *);
-+extern jmp_buf *baz (void);
-+struct C { int c1; unsigned int c2, c3, c4; };
-+
-+void
-+foo (struct C *x, const int *y, unsigned int *z, unsigned int e, unsigned int g)
-+{
-+ unsigned int d = 0;
-+ unsigned long f;
-+ setjmp (*baz ());
-+ f = 1 + d;
-+ if ((x->c1 || x->c2) && g && (!e || d >= 8))
-+ d = 16;
-+ else
-+ d = 8;
-+ if ((!x->c3 && !x->c4 || *y == 0) && !e && bar (z))
-+ *z = 1 + f;
-+}
-Index: gcc/testsuite/gnat.dg/array28.adb
+--- a/src/gcc/testsuite/gfortran.dg/pr91496.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91496.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,38 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++subroutine foo (a, b, c, n)
++ implicit none
++ real a(*), b(*), c(*)
++ integer :: i, n
++ external bar
++!DIR$ unroll (4)
++!GCC$ unroll 4
++ do i = 1, n
++ a(i) = b(i) + c(i)
++ end do
++!DIR$ ivdep
++!GCC$ ivdep
++ do i = 1, n
++ a(i) = b(i) + c(i)
++ end do
++!DIR$ vector
++!GCC$ vector
++ do i = 1, n
++ a(i) = b(i) + c(i)
++ end do
++!DIR$ novector
++!GCC$ novector
++ do i = 1, n
++ a(i) = b(i) + c(i)
++ end do
++!GCC$ ivdep
++!GCC$ vector
++ do i = 1, n
++ a(i) = b(i) + c(i)
++ end do
++!DIR$ noinline
++!GCC$ noinline ! { dg-warning "Unclassifiable GCC directive" }
++ call bar (a)
++end subroutine foo
++! { dg-final { scan-tree-dump-times "ANNOTATE_EXPR" 6 "original" } }
+Index: gcc/testsuite/gfortran.dg/pr91714.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91714.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91714.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,10 @@
++! { dg-do compile }
++! Contributed by Gerhard Steinmetz
++program p
++ typea ! { dg-error "Mangled derived type" }
++ integer b
++ end type ! { dg-error "Expecting END PROGRAM" }
++ type(a) :: c ! { dg-error "is being used before it" }
++ c = a(1)
++ print *, c
++end
+Index: gcc/testsuite/gfortran.dg/allocated_2.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array28.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array28.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+-- { dg-do run }
-+-- { dg-options "-O" }
+--- a/src/gcc/testsuite/gfortran.dg/allocated_2.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/allocated_2.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++program foo
+
-+with Array28_Pkg; use Array28_Pkg;
++ implicit none
+
-+procedure Array28 is
++ integer, allocatable :: x
++ integer, allocatable :: a(:)
+
-+ function Get return Outer_type is
-+ Ret : Outer_Type;
-+ begin
-+ Ret (Inner_Type'Range) := F;
-+ return Ret;
-+ end;
++ logical a1, a2
+
-+ A : Outer_Type := Get;
-+ B : Inner_Type := A (Inner_Type'Range);
++ a1 = allocated(scalar=a) ! { dg-error "Scalar entity required" }
++ a2 = allocated(array=x) ! { dg-error "Array entity required" }
++ a1 = allocated(scalar=x, array=a) ! { dg-error "Too many arguments" }
++ a1 = allocated(array=a, scalar=x) ! { dg-error "Too many arguments" }
+
-+begin
-+ if B /= "12345" then
-+ raise Program_Error;
-+ end if;
-+end;
-Index: gcc/testsuite/gnat.dg/opt63.adb
++end program foo
+Index: gcc/testsuite/gfortran.dg/pr87991.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/opt63.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/opt63.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+-- { dg-do compile }
-+-- { dg-options "-O -gnatws" }
+--- a/src/gcc/testsuite/gfortran.dg/pr87991.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr87991.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,11 @@
++! { dg-do compile }
++! { dg-options "-w" }
++! PR fortran/87991
++program p
++ type t
++ character(:), pointer :: c
++ end type
++ type(t) :: x
++ allocate (character(3) :: x%c)
++ data x%c /'abc'/ ! { dg-error "has the pointer attribute" }
++end
+Index: gcc/testsuite/gfortran.dg/bind-c-intent-out.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/bind-c-intent-out.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/bind-c-intent-out.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,42 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++! PR fortran/91863
++!
++! Contributed by G. Steinmetz
++!
+
-+procedure Opt63 is
++subroutine sub(x) bind(c)
++ implicit none (type, external)
++ integer, allocatable, intent(out) :: x(:)
+
-+ type T_MOD is mod 2**32;
-+ subtype T_INDEX is T_MOD range 3_000_000_000 .. 4_000_000_000;
-+ type T_ARRAY is array(T_INDEX range <>) of INTEGER;
++ allocate(x(3:5))
++ x(:) = [1, 2, 3]
++end subroutine sub
+
-+ function Build_Crash(First : T_INDEX; Length : NATURAL) return T_ARRAY is
-+ R : T_ARRAY(First .. T_Index'Val (T_Index'Pos (First) + Length))
-+ := (others => -1); -- Crash here
-+ begin
-+ return R;
-+ end;
+
-+begin
-+ null;
-+end;
-Index: gcc/testsuite/gnat.dg/array26_pkg.adb
++program p
++ implicit none (type, external)
++ interface
++ subroutine sub(x) bind(c)
++ integer, allocatable, intent(out) :: x(:)
++ end
++ end interface
++ integer, allocatable :: a(:)
++
++ call sub(a)
++ if (.not.allocated(a)) stop 1
++ if (any(shape(a) /= [3])) stop 2
++ if (lbound(a,1) /= 3 .or. ubound(a,1) /= 5) stop 3
++ if (any(a /= [1, 2, 3])) stop 4
++end program p
++
++! "cfi" only appears in context of "a" -> bind-C descriptor
++! the intent(out) implies freeing in the callee (!), hence the "free"
++! It is the only 'free' as 'a' is part of the main program and, hence, implicitly has the SAVE attribute.
++! The 'cfi = 0' appears before the call due to the deallocate and when preparing the C descriptor
++! As cfi (i.e. the descriptor itself) is allocated in libgomp, it has to be freed after the call.
++
++! { dg-final { scan-tree-dump-times "__builtin_free" 2 "original" } }
++! { dg-final { scan-tree-dump-times "__builtin_free \\(cfi\\.\[0-9\]+\\);" 2 "original" } }
++! { dg-final { scan-tree-dump-times "cfi\\.\[0-9\]+ = 0B;" 2 "original" } }
+Index: gcc/testsuite/gfortran.dg/do_subscript_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/do_subscript_4.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_4.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,11 @@
++! { dg-do compile }
++! PR 91424 - this used to warn although the DO loop is zero trip.
++program main
++ implicit none
++ integer :: i
++ real :: a(2)
++ do i=1,3,-1
++ a(i) = 2.
++ end do
++ print *,a
++end program main
+Index: gcc/testsuite/gfortran.dg/pr91942.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91942.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91942.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,10 @@
++! { dg-do compile }
++! PR fortran/91942
++! Code contributed by Gerhard Steinmetz
++program p
++ integer :: i
++ backspace (iostat=i%kind) ! { dg-error "Expecting a variable at" }
++ endfile (iostat=i%kind) ! { dg-error "Expecting END PROGRAM" }
++ flush (iostat=i%kind) ! { dg-error "Expecting a variable at" }
++ rewind (iostat=i%kind) ! { dg-error "Expecting a variable at" }
++end
+Index: gcc/testsuite/gfortran.dg/pr92277.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array26_pkg.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array26_pkg.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+package body Array26_Pkg is
+--- a/src/gcc/testsuite/gfortran.dg/pr92277.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr92277.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,32 @@
++! { dg-do compile }
++!
++! PR fortran/92277
++!
++! Contributed by José Rui Faustino de Sousa
++!
++module arr_m
++ implicit none
++contains
++ subroutine arr_set(this, that)
++ integer, intent(out) :: this(..)
++ integer, optional, intent(out) :: that(..)
++
++ interface
++ subroutine arr_set_c(this) bind(c)
++ use, intrinsic :: iso_c_binding, only: c_int
++ implicit none
++ integer(kind=c_int), intent(out) :: this(..)
++ end subroutine arr_set_c
++ subroutine arr_set_c_opt(this) bind(c)
++ use, intrinsic :: iso_c_binding, only: c_int
++ implicit none
++ integer(kind=c_int), optional, intent(out) :: this(..)
++ end subroutine arr_set_c_opt
++ end interface
++
++ call arr_set_c(this)
++ call arr_set_c(that)
++ call arr_set_c_opt(this)
++ call arr_set_c_opt(that)
++ end subroutine arr_set
++end module arr_m
+Index: gcc/testsuite/gfortran.dg/pr91566.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91566.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91566.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++! { dg-do compile }
++! Code contributed by Gerhard Steinmetz
++program p
++ call q
++ call r
++end program p
+
-+ function F return Inner_Type is
-+ begin
-+ return "123";
-+ end;
++subroutine q
++ print *, -merge([3,4], 0, [.false.,.true.])
++end
+
-+end Array26_Pkg;
-Index: gcc/testsuite/gnat.dg/array26_pkg.ads
++subroutine r
++ print *, 2 + merge([3,4], 0, [.false.,.true.])
++end
+Index: gcc/testsuite/gfortran.dg/pr91660_1.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array26_pkg.ads (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array26_pkg.ads (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+package Array26_Pkg is
-+
-+ subtype Outer_Type is String (1 .. 4);
-+ subtype Inner_Type is String (1 .. 3);
-+
-+ function F return Inner_Type;
-+
-+end Array26_Pkg;
-Index: gcc/testsuite/gnat.dg/array27_pkg.adb
+--- a/src/gcc/testsuite/gfortran.dg/pr91660_1.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91660_1.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,9 @@
++! { dg-do compile }
++! PR fortran/91660
++! Code contributed by Gerhard Steinmetz
++program p
++ type t
++ end type
++ type (t x ! { dg-error "Malformed type-spec" }
++ x = t() ! { dg-error "Cannot convert" }
++end
+Index: gcc/testsuite/gfortran.dg/pr91802.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array27_pkg.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array27_pkg.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+package body Array27_Pkg is
-+
-+ function F return Inner_Type is
-+ begin
-+ return "123";
-+ end;
-+
-+end Array27_Pkg;
-Index: gcc/testsuite/gnat.dg/array27_pkg.ads
+--- a/src/gcc/testsuite/gfortran.dg/pr91802.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91802.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,9 @@
++! { dg-do compile }
++! { dg-options "-fcoarray=single" }
++! Code contributed by Gerhard Steinmetz
++! PR fortran/91802
++module m
++ real :: x
++ dimension :: x(1,2,1,2,1,2,1,2)
++ codimension :: x[1,2,1,2,1,2,1,*] ! { dg-error "exceeds 15" }
++end
+Index: gcc/testsuite/gfortran.dg/bind_c_array_params_3.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array27_pkg.ads (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array27_pkg.ads (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+package Array27_Pkg is
-+
-+ subtype Outer_Type is String (1 .. 8);
-+ subtype Inner_Type is String (1 .. 3);
+--- a/src/gcc/testsuite/gfortran.dg/bind_c_array_params_3.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/bind_c_array_params_3.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,39 @@
++! { dg-do run }
++! { dg-additional-sources bind_c_array_params_3_aux.c }
++!
++! PR fortran/92284
++!
++! Contributed by José Rui Faustino de Sousa
++!
++program arr_p
++ use, intrinsic :: iso_c_binding, only: c_int
++ implicit none (type, external)
+
-+ function F return Inner_Type;
++ integer(kind=c_int), pointer :: arr(:)
++ integer :: i
+
-+end Array27_Pkg;
-Index: gcc/testsuite/gnat.dg/array26.adb
-===================================================================
---- a/src/gcc/testsuite/gnat.dg/array26.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array26.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+-- { dg-do run }
-+-- { dg-options "-O" }
++ nullify(arr)
++ call arr_set(arr)
+
-+with Array26_Pkg; use Array26_Pkg;
++ if (.not.associated(arr)) stop 1
++ if (lbound(arr,dim=1) /= 1) stop 2
++ if (ubound(arr,dim=1) /= 9) stop 3
++ if (any (arr /= [(i, i=0,8)])) stop 4
++ deallocate(arr)
+
-+procedure Array26 is
++contains
+
-+ function Get return Outer_type is
-+ Ret : Outer_Type;
-+ begin
-+ Ret (Inner_Type'Range) := F;
-+ return Ret;
-+ end;
++ subroutine arr_set(this) !bind(c)
++ integer(kind=c_int), pointer, intent(out) :: this(:)
+
-+ A : Outer_Type := Get;
-+ B : Inner_Type := A (Inner_Type'Range);
++ interface
++ subroutine arr_set_c(this) bind(c)
++ use, intrinsic :: iso_c_binding, only: c_int
++ implicit none
++ integer(kind=c_int), pointer, intent(out) :: this(:)
++ end subroutine arr_set_c
++ end interface
+
-+begin
-+ if B /= "123" then
-+ raise Program_Error;
-+ end if;
-+end;
-Index: gcc/testsuite/gnat.dg/array27.adb
++ call arr_set_c(this)
++ end subroutine arr_set
++end program arr_p
+Index: gcc/testsuite/gfortran.dg/pr69455_1.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array27.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array27.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+-- { dg-do run }
-+-- { dg-options "-O" }
+--- a/src/gcc/testsuite/gfortran.dg/pr69455_1.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr69455_1.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++! { dg-do run }
++program foo
++ block
++ use, intrinsic :: iso_c_binding, only: wp => c_float, ik => c_int
++ if (ik /= 4) stop 1
++ if (wp /= 4) stop 2
++ end block
++ block
++ use, intrinsic :: iso_c_binding, only: wp => c_double, ik => c_int64_t
++ if (ik /= 8) stop 3
++ if (wp /= 8) stop 4
++ end block
++end program foo
++
+Index: gcc/testsuite/gfortran.dg/directive_unroll_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/directive_unroll_5.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/directive_unroll_5.f90 (.../branches/gcc-9-branch)
+@@ -31,7 +31,7 @@
+ integer :: a(n), b(n)
+ integer (kind=4) :: i
+ !GCC$ unroll 8
+- write (*,*) "wrong"! { dg-error "directive does not commence a loop" }
++ write (*,*) "wrong"! { dg-error "directive not at the start of a loop" }
+ DO i=n, 1, -1
+ call dummy2(a(i), b(i), i)
+ ENDDO
+Index: gcc/testsuite/gfortran.dg/pr91359_1.f
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr91359_1.f (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91359_1.f (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++! { dg-do run }
++! PR fortran/91359
++! Orginal code contributed by Brian T. Carcich <briantcarcich at gmail dot com>
++!
++ logical function zero()
++ goto 2
++1 return
++2 zero = .false.
++ if (.not.zero) goto 1
++ return
++ end
++
++ program test_zero
++ logical zero
++ if (zero()) stop 'FAIL: zero() returned .TRUE.'
++ stop 'OKAY: zero() returned .FALSE.'
++ end
+Index: gcc/testsuite/gfortran.dg/dec_type_print_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_type_print_3.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_type_print_3.f90 (.../branches/gcc-9-branch)
+@@ -8,9 +8,9 @@
+
+ include 'dec_type_print.f90'
+
+-! { dg-error "Invalid character in name" "" { target *-*-* } 52 }
++! { dg-error "Mangled derived type definition" "" { target *-*-* } 52 }
+ ! { dg-error "Invalid character in name" "" { target *-*-* } 53 }
+-! { dg-error "Invalid character in name" "" { target *-*-* } 54 }
++! { dg-error "Mangled derived type definition" "" { target *-*-* } 54 }
+ ! { dg-error "Invalid character in name" "" { target *-*-* } 55 }
+ ! { dg-error "Invalid character in name" "" { target *-*-* } 56 }
+ ! { dg-error "Invalid character in name" "" { target *-*-* } 57 }
+Index: gcc/testsuite/gfortran.dg/pr89943_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr89943_3.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr89943_3.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,28 @@
++! { dg-do compile }
++module Foo_mod
+
-+with Array27_Pkg; use Array27_Pkg;
++ implicit none
+
-+procedure Array27 is
++ interface
++ module subroutine runFoo4C(ndim) bind(C, name="runFoo")
++ use, intrinsic :: iso_c_binding
++ implicit none
++ integer(c_int32_t) , intent(in) :: ndim
++ end subroutine runFoo4C
++ end interface
+
-+ function Get return Outer_type is
-+ Ret : Outer_Type;
-+ begin
-+ Ret (Inner_Type'Range) := F;
-+ return Ret;
-+ end;
++ contains
+
-+ A : Outer_Type := Get;
-+ B : Inner_Type := A (Inner_Type'Range);
++end module Foo_mod
+
-+begin
-+ if B /= "123" then
-+ raise Program_Error;
-+ end if;
-+end;
-Index: gcc/testsuite/gnat.dg/array28_pkg.adb
-===================================================================
---- a/src/gcc/testsuite/gnat.dg/array28_pkg.adb (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array28_pkg.adb (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+package body Array28_Pkg is
++submodule(Foo_mod) Foo_smod
++
++ contains
+
-+ function F return Inner_Type is
-+ begin
-+ return "12345";
-+ end;
++ module subroutine runFoo4C(ndim) bind(C, name="runFu") ! { dg-error "Mismatch in BIND" }
++ use, intrinsic :: iso_c_binding ! { dg-error "Unexpected USE statement" }
++ implicit none ! { dg-error "Unexpected IMPLICIT NONE statement" }
++ integer(c_int32_t) , intent(in) :: ndim ! { dg-error "Unexpected data declaration" }
++ end subroutine runFoo4C ! { dg-error " Expecting END SUBMODULE" }
+
-+end Array28_Pkg;
-Index: gcc/testsuite/gnat.dg/array28_pkg.ads
++end submodule Foo_smod
+Index: gcc/testsuite/gfortran.dg/pr91864.f90
===================================================================
---- a/src/gcc/testsuite/gnat.dg/array28_pkg.ads (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gnat.dg/array28_pkg.ads (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+package Array28_Pkg is
+--- a/src/gcc/testsuite/gfortran.dg/pr91864.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr91864.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,22 @@
++program p
++ integer :: i
++ read (*,*) i%kind ! { dg-error "Expecting variable or io-implied-do" }
++end
+
-+ subtype Outer_Type is String (1 .. 8);
-+ subtype Inner_Type is String (1 .. 5);
++subroutine t
++ integer, allocatable :: x(:)
++ integer :: stat
++ allocate (x(3), stat=stat%kind) ! { dg-error "cannot be a constant" }
++end
+
-+ function F return Inner_Type;
++subroutine u
++ integer, allocatable :: x(:)
++ integer :: stat
++ allocate (x(3), stat%kind=stat) ! { dg-error "Unexpected constant" }
++end
+
-+end Array28_Pkg;
-Index: gcc/testsuite/gcc.dg/vector-1.c
++subroutine v
++ integer, allocatable :: x(:)
++ integer :: stat
++ deallocate (x, stat%kind=stat) ! { dg-error "Unexpected constant" }
++end
+Index: gcc/testsuite/gfortran.dg/allocated_1.f90
===================================================================
---- a/src/gcc/testsuite/gcc.dg/vector-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/vector-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+/* { dg-do compile } */
-+/* { dg-options "-std=gnu90" } */
+--- a/src/gcc/testsuite/gfortran.dg/allocated_1.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/allocated_1.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,24 @@
++! { dg-do run }
++program foo
++
++ implicit none
++
++ integer, allocatable :: x
++ integer, allocatable :: a(:)
++
++ logical a1, a2
++
++ a1 = allocated(scalar=x)
++ if (a1 .neqv. .false.) stop 1
++ a2 = allocated(array=a)
++ if (a2 .neqv. .false.) stop 2
++
++ allocate(x)
++ allocate(a(2))
++
++ a1 = allocated(scalar=x)
++ if (a1 .neqv. .true.) stop 3
++ a2 = allocated(array=a)
++ if (a2 .neqv. .true.) stop 4
++
++end program foo
+Index: gcc/testsuite/gfortran.dg/pdt_4.f03
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pdt_4.f03 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pdt_4.f03 (.../branches/gcc-9-branch)
+@@ -97,9 +97,9 @@
+ type (mytype(4, *)) :: arg ! OK
+ end subroutine
+ subroutine bar(arg) ! { dg-error "is neither allocatable nor a pointer" }
+- type (thytype(8, :, 4) :: arg
++ type (thytype(8, :, 4)) :: arg
+ end subroutine
+ subroutine foobar(arg) ! OK
+- type (thytype(8, *, 4) :: arg
++ type (thytype(8, *, 4)) :: arg
+ end subroutine
+ end
+Index: gcc/testsuite/gfortran.dg/class_71.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/class_71.f90 (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/class_71.f90 (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++! { dg-do compile }
++!
++! PR fortran/91586
++!
++! Contributed by G. Steinmetz
++!
++program p
++ type t
++ class(*), allocatable :: a
++ end type
++ class(t) :: x, y ! { dg-error "must be dummy, allocatable or pointer" }
++ y = x ! { dg-error "Nonallocatable variable must not be polymorphic in intrinsic assignment" }
++end
+Index: gcc/testsuite/gcc.c-torture/execute/20190820-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20190820-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190820-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,111 @@
++/* PR rtl-optimization/91347 */
++/* Reported by John David Anglin <danglin@gcc.gnu.org> */
++
++typedef unsigned short __u16;
++typedef __signed__ int __s32;
++typedef unsigned int __u32;
++typedef __signed__ long long __s64;
++typedef unsigned long long __u64;
++typedef __u16 u16;
++typedef __s32 s32;
++typedef __u32 u32;
++typedef __u64 u64;
++typedef _Bool bool;
++typedef s32 int32_t;
++typedef u32 uint32_t;
++typedef u64 uint64_t;
++
++char hex_asc_upper[16];
++u16 decpair[100];
++
++static __attribute__ ((noipa)) void
++put_dec_full4 (char *buf, unsigned r)
++{
++ unsigned q;
++ q = (r * 0x147b) >> 19;
++ *((u16 *)buf) = decpair[r - 100*q];
++ buf += 2;
++ *((u16 *)buf) = decpair[q];
++}
++
++static __attribute__ ((noipa)) unsigned
++put_dec_helper4 (char *buf, unsigned x)
++{
++ uint32_t q = (x * (uint64_t)0x346DC5D7) >> 43;
++ put_dec_full4(buf, x - q * 10000);
++ return q;
++}
++
++static __attribute__ ((noipa)) char *
++put_dec (char *buf, unsigned long long n)
++{
++ uint32_t d3, d2, d1, q, h;
++ d1 = ((uint32_t)n >> 16);
++ h = (n >> 32);
++ d2 = (h ) & 0xffff;
++ d3 = (h >> 16);
++ q = 656 * d3 + 7296 * d2 + 5536 * d1 + ((uint32_t)n & 0xffff);
++ q = put_dec_helper4(buf, q);
++ q += 7671 * d3 + 9496 * d2 + 6 * d1;
++ q = put_dec_helper4(buf+4, q);
++ q += 4749 * d3 + 42 * d2;
++ q = put_dec_helper4(buf+8, q);
++ return buf;
++}
++
++struct printf_spec {
++ unsigned int type:8;
++ signed int field_width:24;
++ unsigned int flags:8;
++ unsigned int base:8;
++ signed int precision:16;
++} __attribute__((__packed__));
++
++static __attribute__ ((noipa)) char *
++number (char *buf, char *end, unsigned long long num, struct printf_spec spec)
++{
++
++ char tmp[3 * sizeof(num)] __attribute__((__aligned__(2)));
++ char sign;
++ char locase;
++ int need_pfx = ((spec.flags & 64) && spec.base != 10);
++ int i;
++ bool is_zero = num == 0LL;
++ int field_width = spec.field_width;
++ int precision = spec.precision;
++
++ i = 0;
++ if (num < spec.base)
++ tmp[i++] = hex_asc_upper[num] | locase;
++ else if (spec.base != 10) {
++ int mask = spec.base - 1;
++ int shift = 3;
++ if (spec.base == 16)
++ shift = 4;
++ else
++ __builtin_abort ();
++ do {
++ tmp[i++] = (hex_asc_upper[((unsigned char)num) & mask] | locase);
++ num >>= shift;
++ } while (num);
++ } else {
++ i = put_dec(tmp, num) - tmp;
++ }
++ return buf;
++}
++
++static __attribute__ ((noipa)) char *
++pointer_string (char *buf, char *end, const void *ptr, struct printf_spec spec)
++{
++ spec.base = 16;
++ spec.flags = 0;
++ return number(buf, end, 100, spec);
++}
++
++int
++main (void)
++{
++ struct printf_spec spec;
++ char *s = pointer_string (0, 0, 0, spec);
++ return 0;
++}
+Index: gcc/testsuite/gcc.c-torture/execute/20191023-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20191023-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20191023-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,73 @@
++/* PR tree-optimization/92131 */
++/* Testcase by Armin Rigo <arigo@tunes.org> */
++
++long b, c, d, e, f, i;
++char g, h, j, k;
++int *aa;
++
++static void error (void) __attribute__((noipa));
++static void error (void) { __builtin_abort(); }
++
++static void see_me_here (void) __attribute__((noipa));
++static void see_me_here (void) {}
++
++static void aaa (void) __attribute__((noipa));
++static void aaa (void) {}
++
++static void a (void) __attribute__((noipa));
++static void a (void) {
++ long am, ao;
++ if (aa == 0) {
++ aaa();
++ if (j)
++ goto ay;
++ }
++ return;
++ay:
++ aaa();
++ if (k) {
++ aaa();
++ goto az;
++ }
++ return;
++az:
++ if (i)
++ if (g)
++ if (h)
++ if (e)
++ goto bd;
++ return;
++bd:
++ am = 0;
++ while (am < e) {
++ switch (c) {
++ case 8:
++ goto bh;
++ case 4:
++ return;
++ }
++ bh:
++ if (am >= 0)
++ b = -am;
++ ao = am + b;
++ f = ao & 7;
++ if (f == 0)
++ see_me_here();
++ if (ao >= 0)
++ am++;
++ else
++ error();
++ }
++}
+
-+typedef int V __attribute__ ((vector_size(4)));
-+void fn1 ()
++int main (void)
+{
-+ (V){(1,0)}[0] = 0;
++ j++;
++ k++;
++ i++;
++ g++;
++ h++;
++ e = 1;
++ a();
++ return 0;
+}
-Index: gcc/testsuite/gcc.dg/pr80218.c
+Index: gcc/testsuite/gcc.c-torture/execute/pr91635.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr80218.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr80218.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,28 @@
-+/* { dg-options "-O2 -fdump-rtl-ira-details-blocks" } */
-+/* { dg-require-effective-target c99_runtime } */
-+
-+#include <math.h>
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91635.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91635.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,57 @@
++/* PR target/91635 */
+
-+void foo (float *);
++#if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 \
++ && __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8
++unsigned short b, c;
++int u, v, w, x;
+
-+void
-+f1 (float *x)
++__attribute__ ((noipa)) int
++foo (unsigned short c)
+{
-+ x[0] = sqrtf (x[0]);
++ c <<= __builtin_add_overflow (-c, -1, &b);
++ c >>= 1;
++ return c;
+}
+
-+void
-+f2 (float *x)
++__attribute__ ((noipa)) int
++bar (unsigned short b)
+{
-+ sqrtf (x[0]);
-+ foo (x);
++ b <<= -14 & 15;
++ b = b >> -~1;
++ return b;
+}
+
-+void
-+f3 (float *x)
++__attribute__ ((noipa)) int
++baz (unsigned short e)
+{
-+ acosf (x[0]);
-+ foo (x);
++ e <<= 1;
++ e >>= __builtin_add_overflow (8719476735, u, &v);
++ return e;
+}
+
-+/* { dg-final { scan-rtl-dump-not "Invalid sum" "ira" } } */
-Index: gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/goacc/loop-processing-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/goacc/loop-processing-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+/* Make sure that OpenACC loop processing happens. */
-+/* { dg-additional-options "-O2 -fdump-tree-oaccdevlow" } */
-+
-+extern int place ();
-+
-+void vector_1 (int *ary, int size)
++__attribute__ ((noipa)) int
++qux (unsigned int e)
+{
-+#pragma acc parallel num_workers (32) vector_length(32) copy(ary[0:size]) firstprivate (size)
-+ {
-+#pragma acc loop gang
-+ for (int jx = 0; jx < 1; jx++)
-+#pragma acc loop auto
-+ for (int ix = 0; ix < size; ix++)
-+ ary[ix] = place ();
-+ }
++ c = ~1;
++ c *= e;
++ c = c >> (-15 & 5);
++ return c + w + x;
+}
++#endif
+
-+/* { dg-final { scan-tree-dump "OpenACC loops.*Loop 0\\\(0\\\).*Loop 14\\\(1\\\).*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, 0, 1, 20\\\);.*Head-0:.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, 0, 1, 20\\\);.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, \\\.data_dep\\\.\[0-9_\]+, 0\\\);.*Tail-0:.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, \\\.data_dep\\\.\[0-9_\]+, 1\\\);.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, \\\.data_dep\\\.\[0-9_\]+, 0\\\);.*Loop 6\\\(4\\\).*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, 0, 1, 6\\\);.*Head-0:.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, 0, 1, 6\\\);.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, \\\.data_dep\\\.\[0-9_\]+, 2\\\);.*Tail-0:.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, \\\.data_dep\\\.\[0-9_\]+, 1\\\);.*\\\.data_dep\\\.\[0-9_\]+ = UNIQUE \\\(\[0-9\]+, \\\.data_dep\\\.\[0-9_\]+, 2\\\);" "oaccdevlow" } } */
-Index: gcc/testsuite/gcc.dg/pr79570.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr79570.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr79570.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,6 @@
-+/* PR target/79570 */
-+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
-+/* { dg-options "-O2 -fselective-scheduling2 -fvar-tracking-assignments" } */
-+/* { dg-warning "changes selective scheduling" "" { target *-*-* } 0 } */
-+
-+#include "pr69956.c"
-Index: gcc/testsuite/gcc.dg/spellcheck-options-13.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/spellcheck-options-13.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/spellcheck-options-13.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,5 @@
-+/* PR driver/78863. */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-fsanitize" } */
-+/* { dg-error "unrecognized command line option .-fsanitize..$" "" { target *-*-* } 0 } */
-Index: gcc/testsuite/gcc.dg/pr78644-1.c
++int
++main ()
++{
++#if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 \
++ && __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8
++ if (foo (0xffff) != 0x7fff)
++ __builtin_abort ();
++ if (bar (5) != 5)
++ __builtin_abort ();
++ if (baz (~0) != 0x7fff)
++ __builtin_abort ();
++ if (qux (2) != 0x7ffe)
++ __builtin_abort ();
++#endif
++ return 0;
++}
+Index: gcc/testsuite/gcc.c-torture/execute/20190901-1.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr78644-1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr78644-1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* { dg-do compile { target int128 } } */
-+/* { dg-options "-Og -fipa-cp -w -Wno-psabi" } */
-+
-+typedef unsigned __int128 u128;
-+typedef unsigned __int128 V __attribute__ ((vector_size (64)));
+--- a/src/gcc/testsuite/gcc.c-torture/execute/20190901-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190901-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,36 @@
++/* PR target/91472 */
++/* Reported by John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> */
+
-+V x4;
++typedef unsigned int gmp_uint_least32_t;
+
-+static V
-+bar (u128 x2, u128 x3)
++union ieee_double_extract
+{
-+ while (x4[0]--)
-+ x2 /= x3 >>= 1;
-+ return x2 + x3 + x4;
-+}
++ struct
++ {
++ gmp_uint_least32_t sig:1;
++ gmp_uint_least32_t exp:11;
++ gmp_uint_least32_t manh:20;
++ gmp_uint_least32_t manl:32;
++ } s;
++ double d;
++};
+
-+void
-+foo (void)
++double __attribute__((noipa))
++tests_infinity_d (void)
+{
-+ bar (0, 0);
++ union ieee_double_extract x;
++ x.s.exp = 2047;
++ x.s.manl = 0;
++ x.s.manh = 0;
++ x.s.sig = 0;
++ return x.d;
+}
-Index: gcc/testsuite/gcc.dg/pr79574.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr79574.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr79574.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* PR rtl-optimization/79574 */
-+/* { dg-do compile } */
-+/* { dg-options "-Os --param gcse-cost-distance-ratio=2147483647" } */
+
-+void a (void)
++int
++main (void)
+{
-+ volatile int b;
-+ for (;; b)
-+ ;
++ double x = tests_infinity_d ();
++ if (x == 0.0)
++ __builtin_abort ();
++ return 0;
+}
-Index: gcc/testsuite/gcc.dg/debug/pr80321.c
+Index: gcc/testsuite/gcc.c-torture/execute/pr91597.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/debug/pr80321.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/debug/pr80321.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,26 @@
-+/* PR debug/80321 */
-+/* { dg-do compile } */
-+/* { dg-options "-fkeep-inline-functions" } */
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91597.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91597.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,48 @@
++/* PR tree-optimization/91597 */
+
-+void bar (void);
++enum E { A, B, C };
++struct __attribute__((aligned (4))) S { enum E e; };
+
-+static inline void
-+test (int x)
++enum E
++foo (struct S *o)
+{
-+ inline void
-+ foo (int x)
-+ {
-+ test (0);
-+ asm volatile ("" : : : "memory");
-+ }
-+ if (x != 0)
-+ foo (x);
++ if (((__UINTPTR_TYPE__) (o) & 1) == 0)
++ return o->e;
+ else
-+ bar ();
++ return A;
+}
+
-+void
-+baz (int x)
++int
++bar (struct S *o)
+{
-+ test (x);
++ return foo (o) == B || foo (o) == C;
+}
-Index: gcc/testsuite/gcc.dg/pr79494.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr79494.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr79494.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+/* PR target/79494 */
-+/* { dg-do compile } */
-+/* { dg-require-effective-target split_stack } */
-+/* { dg-options "-O2 -fsplit-stack -g" } */
+
-+void
-+foo (int a)
++static inline void
++baz (struct S *o, int d)
+{
-+ __label__ lab;
-+ __attribute__((noinline, noclone)) void bar (int b)
-+ {
-+ switch (b)
-+ {
-+ case 1:
-+ goto lab;
-+ case 2:
-+ goto lab;
-+ }
-+ }
-+ bar (a);
-+lab:;
++ if (__builtin_expect (!bar (o), 0))
++ __builtin_abort ();
++ if (d > 2) return;
++ baz (o, d + 1);
+}
-Index: gcc/testsuite/gcc.dg/ubsan/pr80097.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/ubsan/pr80097.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/ubsan/pr80097.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* PR c/80097 */
-+/* { dg-do compile } */
-+/* { dg-options "-std=c89 -fsanitize=float-divide-by-zero" } */
+
-+int
-+foo (double a)
++void
++qux (struct S *o)
+{
-+ int b = (1 / a >= 1);
-+ return b;
++ switch (o->e)
++ {
++ case A: return;
++ case B: baz (o, 0); break;
++ case C: baz (o, 0); break;
++ }
+}
-Index: gcc/testsuite/gcc.dg/asan/pr80168.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/asan/pr80168.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/asan/pr80168.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+/* PR sanitizer/80168 */
-+/* { dg-do compile } */
+
-+int a;
++struct S s = { C };
+
+int
-+foo (void)
++main ()
+{
-+ struct S { int c[a]; int q : 8; int e : 4; } f;
-+ f.e = 4;
-+ return f.e;
++ qux (&s);
++ return 0;
+}
-Index: gcc/testsuite/gcc.dg/pr79255.c
+Index: gcc/testsuite/gcc.c-torture/execute/pr91632.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr79255.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr79255.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* PR bootstrap/79255 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -g -fno-toplevel-reorder -Wno-attributes" } */
-+
-+static inline __attribute__((always_inline)) int foo (int x);
+--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91632.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91632.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,30 @@
++/* PR tree-optimization/91632 */
++/* { dg-additional-options "-fwrapv" } */
+
-+int
-+baz (void)
++static int
++__attribute__((noipa))
++foo (char x)
+{
-+ return foo (3) + foo (6) + foo (9);
++ switch (x)
++ {
++ case '"':
++ case '<':
++ case '>':
++ case '\\':
++ case '^':
++ case '`':
++ case '{':
++ case '|':
++ case '}':
++ return 0;
++ }
++ return 1;
+}
+
-+static inline __attribute__((always_inline)) int
-+foo (int x)
++int
++main ()
+{
-+ auto inline int __attribute__((noinline)) bar (int x)
-+ {
-+ return x + 3;
-+ }
-+ return bar (x) + bar (x + 2);
++ if (foo ('h') == 0)
++ __builtin_abort ();
++ return 0;
+}
-Index: gcc/testsuite/gcc.dg/fixed-point/pr79971.c
+Index: gcc/testsuite/gcc.c-torture/compile/pr92231.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/fixed-point/pr79971.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/fixed-point/pr79971.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O3" } */
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr92231.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr92231.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,9 @@
++/* PR middle-end/92231 */
+
-+void
-+a ()
++extern int bar (void);
++
++int
++foo (void)
+{
-+ unsigned _Accum b;
-+ for (b = 0.1; b; b += 0.1uk)
-+ {
-+ _Sat unsigned _Accum b;
-+ for (b = 0; b <= 0.8; b = 0.1)
-+ ;
-+ }
-+}
-Index: gcc/testsuite/gcc.dg/graphite/pr71824-2.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/graphite/pr71824-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/graphite/pr71824-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,34 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -floop-nest-optimize" } */
-+
-+typedef struct { float x1; } bx;
-+typedef struct {
-+ int w;
-+ short o;
-+} T2P;
-+T2P a;
-+int b;
-+void fn2();
-+void fn3(bx*,short);
-+void fn1() {
-+ unsigned i = 0;
-+ int c;
-+ bx *d;
-+ bx **h;
-+ if (b == 0) {
-+ fn2();
-+ return;
-+ }
-+ for (; c; c++)
-+ for (; i < 100; i++) {
-+ d = h[i];
-+ d->x1 = a.w;
-+ }
-+ for (; i < 100; i++) {
-+ d = h[i];
-+ d->x1 = a.w;
-+ }
-+ if (a.o)
-+ for (; b;)
-+ fn3(d, a.o);
++ return (&bar + 4096) ();
+}
-Index: gcc/testsuite/gcc.dg/graphite/pr80167.c
+Index: gcc/testsuite/gcc.c-torture/compile/pr91001.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/graphite/pr80167.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/graphite/pr80167.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,24 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -floop-nest-optimize" } */
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr91001.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr91001.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,31 @@
++/* PR middle-end/91001 */
++/* PR middle-end/91105 */
++/* PR middle-end/91106 */
++
++struct __attribute__((packed)) S { short b; char c; };
++struct T { short b, c, d; };
++struct __attribute__((packed)) R { int b; char c; };
++union __attribute__((aligned(128), transparent_union)) U { struct S c; } u;
++union __attribute__((aligned(32), transparent_union)) V { struct T c; } v;
++union __attribute__((aligned(32), transparent_union)) W { struct R c; } w;
++void foo (union U);
++void bar (union V);
++void baz (union W);
+
-+typedef struct
-+{
-+ short a;
-+ short b;
-+ short c;
-+} d;
-+extern d e[];
-+int f[8];
+void
-+g (d *i)
++qux (void)
+{
-+ int h = 0;
-+ for (; h < 28; h++)
-+ e[h].a = e[h].b = i[h].a;
-+ h = 0;
-+ for (; h < 8; h++)
-+ f[h] = i[h].b + i[h].c;
-+ h = 0;
-+ for (; h < 8; h++)
-+ f[h] = i[h].b;
++ foo (u);
+}
-Index: gcc/testsuite/gcc.dg/graphite/pr71824-3.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/graphite/pr71824-3.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/graphite/pr71824-3.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -ftree-loop-distribution -floop-nest-optimize" } */
+
-+struct
++void
++quux (void)
+{
-+ int bz;
-+} od, ka[2];
-+
-+int fw;
++ bar (v);
++}
+
+void
-+pc (void)
++corge (void)
+{
-+ for (od.bz = 0; od.bz < 2; ++od.bz)
-+ {
-+ ++fw;
-+ ka[0] = ka[1];
-+ }
++ baz (w);
+}
-Index: gcc/testsuite/gcc.dg/graphite/pr71824.c
+Index: gcc/testsuite/gcc.c-torture/compile/pr92056.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/graphite/pr71824.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/graphite/pr71824.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,17 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -floop-nest-optimize" } */
-+
-+int a, b, d;
-+int **c;
-+int fn1() {
-+ while (a)
-+ if (d) {
-+ int e = -d;
-+ for (; b < e; b++)
-+ c[b] = &a;
-+ } else {
-+ for (; b; b++)
-+ c[b] = &b;
-+ d = 0;
-+ }
-+}
-Index: gcc/testsuite/gcc.dg/graphite/pr79977.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/graphite/pr79977.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/graphite/pr79977.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,27 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -floop-nest-optimize" } */
+--- a/src/gcc/testsuite/gcc.c-torture/compile/pr92056.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr92056.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
++/* PR tree-optimization/92056 */
+
-+int uo[3];
-+int di;
++const char *d;
+
+void
-+i7 (int mp)
++foo (int c, char *e, const char *a, const char *b)
+{
-+ int l4;
-+
-+wh:
-+ while (l4 > 1)
++ switch (c)
+ {
-+ for (di = 0; di < 2; ++di)
-+ uo[di] = 0;
-+
-+ for (di = 0; di < 3; ++di)
-+ {
-+ uo[di] = 0;
-+ if (mp != 0)
-+ goto wh;
-+ }
-+
-+ --l4;
++ case 33:
++ for (;; d++)
++ if (__builtin_strcmp (b ? : "", d))
++ return;
++ break;
++ case 4:
++ __builtin_sprintf (e, a);
+ }
+}
-Index: gcc/testsuite/gcc.dg/pr78644-2.c
+Index: gcc/testsuite/gcc.c-torture/compile/20191108-1.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr78644-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr78644-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
-+/* { dg-do compile { target int128 } } */
-+/* { dg-options "-Og -finline-functions-called-once -w -Wno-psabi" } */
-+
-+typedef unsigned V __attribute__ ((vector_size (64)));
-+typedef unsigned __int128 U __attribute__ ((vector_size (64)));
+--- a/src/gcc/testsuite/gcc.c-torture/compile/20191108-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/20191108-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++/* PR target/92095 */
++/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
+
-+U
-+bar4 (U u0, U u1)
-+{
-+ if (u1[0])
-+ u1 <<= 1;
-+ return u0 + u1;
-+}
++typedef union {
++ double a;
++ int b[2];
++} c;
+
-+V
-+foo (U u, V v)
++double d(int e)
+{
-+ v |= (unsigned)bar4(u, (U){})[0];
-+ return v;
++ c f;
++ (&f)->b[0] = 15728640;
++ return e ? -(&f)->a : (&f)->a;
+}
-Index: gcc/testsuite/gcc.dg/comp-goto-4.c
+Index: gcc/testsuite/gcc.dg/gomp/pr90637.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/comp-goto-4.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/comp-goto-4.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* PR middle-end/79537 */
+--- a/src/gcc/testsuite/gcc.dg/gomp/pr90637.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/gomp/pr90637.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++/* PR tree-optimization/90637 */
+/* { dg-do compile } */
-+/* { dg-options "" } */
-+/* { dg-require-effective-target indirect_jumps } */
-+/* { dg-require-effective-target label_values } */
++/* { dg-options "-fopenmp -O1 --param sink-frequency-threshold=90" } */
+
-+void
-+f (void)
-+{
-+L:
-+ *&&L;
-+}
++int v;
+
+void
-+f2 (void)
++foo (int c)
+{
-+ void *p;
-+L:
-+ p = &&L;
-+ *p; /* { dg-warning "dereferencing 'void \\*' pointer" } */
++ int i;
++#pragma omp for simd if (c) lastprivate (v) schedule (static, 16)
++ for (i = 0; i < 64; ++i)
++ v = i;
+}
-Index: gcc/testsuite/gcc.dg/lto/pr69188_0.c
+Index: gcc/testsuite/gcc.dg/pr91885.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/lto/pr69188_0.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/lto/pr69188_0.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+/* PR ipa/69188 */
-+/* { dg-lto-do link } */
-+/* { dg-lto-options { { -flto -O0 -fprofile-generate } } } */
+--- a/src/gcc/testsuite/gcc.dg/pr91885.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr91885.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,47 @@
++/* { dg-do compile } */
++/* { dg-options "-O3 -fprofile-generate" } */
+/* { dg-require-profiling "-fprofile-generate" } */
+
-+void fn1(void)
++typedef signed long long int __int64_t;
++typedef unsigned long long int __uint64_t;
++typedef __int64_t int64_t;
++typedef __uint64_t uint64_t;
++inline void
++BLI_endian_switch_int64 (int64_t *val)
++{
++ uint64_t tval = *val;
++ *val = ((tval >> 56)) | ((tval << 40) & 0x00ff000000000000ll)
++ | ((tval << 24) & 0x0000ff0000000000ll)
++ | ((tval << 8) & 0x000000ff00000000ll)
++ | ((tval >> 8) & 0x00000000ff000000ll)
++ | ((tval >> 24) & 0x0000000000ff0000ll)
++ | ((tval >> 40) & 0x000000000000ff00ll) | ((tval << 56));
++}
++typedef struct anim_index_entry
++{
++ unsigned long long seek_pos_dts;
++ unsigned long long pts;
++} anim_index_entry;
++extern struct anim_index_entry *
++MEM_callocN (int);
++struct anim_index
++{
++ int num_entries;
++ struct anim_index_entry *entries;
++};
++struct anim_index *
++IMB_indexer_open (const char *name)
+{
++ char header[13];
++ struct anim_index *idx;
++ int i;
++ idx->entries = MEM_callocN (8);
++ if (((1 == 0) != (header[8] == 'V')))
++ {
++ for (i = 0; i < idx->num_entries; i++)
++ {
++ BLI_endian_switch_int64 ((int64_t *) &idx->entries[i].seek_pos_dts);
++ BLI_endian_switch_int64 ((int64_t *) &idx->entries[i].pts);
++ }
++ }
+}
-Index: gcc/testsuite/gcc.dg/lto/pr50199_0.c
+Index: gcc/testsuite/gcc.dg/pr91269.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/lto/pr50199_0.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/lto/pr50199_0.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,17 @@
-+/* PR middle-end/50199 */
-+/* { dg-lto-options {{-O2 -flto -fno-merge-constants --param=lto-min-partition=1}} } */
-+
-+__attribute__ ((noinline)) const char *
-+foo (const char *x)
-+{
-+ return x;
+--- a/src/gcc/testsuite/gcc.dg/pr91269.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr91269.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,70 @@
++/* PR target/91269 */
++/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
++
++/* { dg-do assemble } */
++/* { dg-options "-O2 -Wno-int-conversion" } */
++/* { dg-additional-options "-fcall-used-g6 -fPIE -mcpu=niagara4" { target sparc*-*-* } } */
++
++struct m;
++
++enum { a = 2 };
++int b[1];
++int d[2715];
++int e, f, h;
++enum { i = 2 } j;
++inline int c(int k) {
++ char *cp;
++ if (k >= 62 && k <= 247)
++ cp = b[k];
++ if (cp)
++ return 65533;
++ return 2;
+}
-+
-+int
-+main ()
-+{
-+ const char *a = "ab";
-+ if (a != foo (a))
-+ __builtin_abort ();
++inline int g(int k) {
++ if (k < sizeof(d))
++ return e;
+ return 0;
+}
-Index: gcc/testsuite/gcc.dg/lto/pr69188_1.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/lto/pr69188_1.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/lto/pr69188_1.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* PR ipa/69188 */
-+/* { dg-options "-flto -O1 -fprofile-generate" } */
+
-+extern void fn1(void);
++int u(struct m*, char*, char*);
+
-+int main() {
-+ fn1();
-+ return 0;
++int l(struct m *k, char n, long o, int *p) {
++ int q, flags = j, r, s, lasttwo = *p;
++ char inptr, outptr;
++ while (inptr) {
++ if (__builtin_expect(h, 0))
++ break;
++ unsigned ch = inptr;
++ if (lasttwo) {
++ long need = lasttwo >> 3;
++ if (__builtin_expect(need > n, 0))
++ break;
++ } else if (s == i) {
++ long t = c(ch);
++ if (t != 65533) {
++ int jch = g(ch);
++ if (jch & 8)
++ continue;
++ }
++ }
++ if (ch <= 5)
++ ;
++ else {
++ long t = c(ch);
++ if (t != 65533)
++ ;
++ else {
++ switch (f >> 8)
++ case 79:
++ q = f == 20308 || f == 20350;
++ if (q)
++ if (j)
++ r = u(k, &inptr, &outptr);
++ s = *p;
++ if (r)
++ if (o && flags & a)
++ break;
++ }
++ }
++ }
+}
-+
-Index: gcc/testsuite/gcc.dg/pr79574-2.c
+Index: gcc/testsuite/gcc.dg/pr91734.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr79574-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr79574-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,33 @@
-+/* PR rtl-optimization/79574 */
-+/* { dg-do compile } */
-+/* { dg-options "-Os --param gcse-cost-distance-ratio=2147483647" } */
-+
-+#include "stdarg.h"
-+
-+int buf[100];
-+int buf1[10];
+--- a/src/gcc/testsuite/gcc.dg/pr91734.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr91734.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,97 @@
++/* PR tree-optimization/91734 */
++/* { dg-do run } */
++/* { dg-add-options ieee } */
++/* { dg-additional-options "-O2 -std=gnu99" } */
+
-+int rd (int *pppp, int n, ...)
++__attribute__((noipa, optimize ("Ofast"))) int
++f1 (float x)
+{
-+ va_list argp;
-+ int *p;
-+ int i;
-+ int res;
-+
-+ va_start (argp, n);
-+ for (; n > 0; n--)
-+ va_arg (argp, double);
-+ p = va_arg (argp, int *);
-+ i = va_arg (argp, int);
-+
-+ res = p[i];
-+ __builtin_printf ("%d\n", res);
-+
-+ return res;
++ return __builtin_sqrtf (x) < __FLT_MIN__;
+}
+
-+int mpx_test (int argc, const char **argv)
++__attribute__((noipa, optimize ("Ofast"))) int
++f2 (float x)
+{
-+ rd (buf1, 2, 10.0d, 10.0d, buf, 100, buf1);
-+ return 0;
++ return __builtin_sqrtf (x) < 0x1.2dd3d0p-65f;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr79536.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr79536.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr79536.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
+
-+typedef int A;
-+int
-+fn1 (A x, A y)
++__attribute__((noipa, optimize ("Ofast"))) int
++f3 (float x)
+{
-+ if ((x + (x - y) * 1i) != -(-x + (y - x) * 1i))
-+ return 1;
-+ return 0;
++ return __builtin_sqrtf (x) >= 0x1.2dd3d0p-65f;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr71055.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr71055.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr71055.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+/* { dg-do run } */
+
-+extern void abort (void);
-+union U { int i; _Bool b; char c; };
-+void __attribute__((noinline,noclone))
-+foo (union U *u)
-+{
-+ if (u->c != 0)
-+ abort ();
-+}
-+int main()
++__attribute__((noipa, optimize ("Ofast"))) int
++f4 (float x)
+{
-+ union U u;
-+ u.i = 10;
-+ u.b = 0;
-+ foo (&u);
-+ return 0;
++ return __builtin_sqrtf (x) >= 0x1.5642e6p+54f;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr71881.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr71881.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr71881.c (.../branches/gcc-6-branch)
-@@ -1,4 +1,5 @@
- /* { dg-do compile } */
-+/* { dg-require-effective-target alloca } */
- /* { dg-additional-options "-g" } */
-
- int a, b, c, d, *e, f, g;
-Index: gcc/testsuite/gcc.dg/torture/pr79666.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr79666.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr79666.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,30 @@
-+/* { dg-do run } */
+
-+struct
++__attribute__((noipa, optimize ("Ofast"))) int
++f5 (float x)
+{
-+ unsigned a:6;
-+} b;
-+
-+int c, e, g = 7;
-+signed char d, f = 6, h = -10;
++ return __builtin_sqrtf (x) > 0x1.5642e6p+54f;
++}
+
-+void fn1 ()
++__attribute__((noipa, optimize ("Ofast"))) int
++f6 (float x)
+{
-+ for (; c < 9; c++)
-+ {
-+ if (f)
-+ g = ~(~0 / (g ^ e));
-+ b.a = ~0;
-+ d = ~((h ^ b.a) & 132 & (~(f && g) | (d && 1)));
-+ e = ~0;
-+ if (d < 127 || f < 1)
-+ continue;
-+ g = 0;
-+ }
++ return __builtin_sqrtf (x) < 0x1.4da1cp-19f;
+}
+
-+int main ()
++__attribute__((noipa, optimize ("Ofast"))) int
++f7 (float x)
+{
-+ fn1 ();
-+ return 0;
++ return __builtin_sqrtf (x) <= 0x1.4da1cp-19f;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr80181.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr80181.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr80181.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+/* { dg-do compile } */
+
-+int
-+nr (void)
++__attribute__((noipa, optimize ("Ofast"))) int
++f8 (float x)
+{
++ return __builtin_sqrtf (x) < 0x1.50cb62p-65f;
+}
+
-+void
-+it (int dl)
++__attribute__((noipa, optimize ("Ofast"))) int
++f9 (float x)
+{
-+ int vp = 0;
-+
-+ for (;;)
-+ {
-+ dl = vp ^ nr ();
-+ dl ^= vp;
-+ vp = 1;
-+ }
++ return __builtin_sqrtf (x) <= 0x1.4fc00cp-73f;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr80362.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr80362.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr80362.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+/* { dg-do run } */
-+/* { dg-additional-options "-fstrict-overflow" } */
+
-+int main()
++__attribute__((noipa, optimize ("Ofast"))) int
++f10 (float x)
+{
-+ signed char var_0, var_1 = -128;
-+ var_0 = (signed char)(-var_1) / 3;
-+ if (var_0 > 0)
-+ __builtin_abort();
++ return __builtin_sqrtf (x) < 0x1.001002p+0f;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr80122.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr80122.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr80122.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,52 @@
-+/* { dg-do run } */
-+
-+#define __GNU_ALWAYS_INLINE inline __attribute__(( __always_inline__))
-+
-+#define DEVT_ALL 0
+
-+#define CMD_ABI_DEVICES 100
-+
-+static __GNU_ALWAYS_INLINE int
-+send_msg_to_gm_w_dev_t(int msg_type, unsigned int dev_msg_type,
-+ int devt, ...)
++int
++main ()
+{
-+ char s[256];
-+ int nArgs = __builtin_va_arg_pack_len();
-+ if (nArgs != 2)
++ if (__FLT_RADIX__ != 2
++ || __FLT_MANT_DIG__ != 24
++ || __FLT_MIN_EXP__ != -125
++ || __FLT_MAX_EXP__ != 128
++ || __FLT_HAS_DENORM__ != 1
++ || __FLT_HAS_INFINITY__ != 1)
++ return 0;
++ if (!f1 (0.0f) || f1 (0x1.0p-149f))
+ __builtin_abort ();
-+ __builtin_sprintf (s, "%d", __builtin_va_arg_pack ());
-+ if (__builtin_strcmp (s, "99") != 0)
++ if (!f2 (0x1.63dbc0p-130f))
+ __builtin_abort ();
-+ /* do something with nArgs and ... */
-+ return 0;
-+}
-+
-+static __GNU_ALWAYS_INLINE int
-+send_msg_to_gm(int msg_type, unsigned int dev_msg_type,
-+ ...)
-+{
-+ int nArgs = __builtin_va_arg_pack_len();
-+ if (nArgs != 2)
++ if (f3 (0x1.63dbc0p-130f))
+ __builtin_abort ();
-+ return send_msg_to_gm_w_dev_t(msg_type, dev_msg_type,
-+ DEVT_ALL, __builtin_va_arg_pack());
-+}
-+
-+static __GNU_ALWAYS_INLINE int
-+send_enable(unsigned int dev_msg_type, ...)
-+{
-+ int nArgs = __builtin_va_arg_pack_len();
-+ if (nArgs != 2)
++ if (!f4 (0x1.c996d0p+108f) || !f4 (0x1.c996cep+108f) || f4 (0x1.c996ccp+108f))
++ __builtin_abort ();
++ if (f5 (0x1.c996d0p+108f) || f5 (0x1.c996d2p+108f) || !f5 (0x1.c996d4p+108f))
++ __builtin_abort ();
++ if (!f6 (0x1.b2ce3p-38f) || f6 (0x1.b2ce32p-38f) || f6 (0x1.b2ce34p-38f))
++ __builtin_abort ();
++ if (!f7 (0x1.b2ce3p-38f) || !f7 (0x1.b2ce34p-38f) || !f7 (0x1.b2ce36p-38f) || f7 (0x1.b2ce38p-38f))
++ __builtin_abort ();
++ if (!f8 (0x1.bb166p-130f) || !f8 (0x1.bb168p-130f) || f8 (0x1.bb16ap-130f) || f8 (0x1.bb16cp-130f))
++ __builtin_abort ();
++ if (!f9 (0x1.8p-146f) || !f9 (0x1.ap-146f) || f9 (0x1.cp-146f) || f9 (0x1.ep-146f))
++ __builtin_abort ();
++ if (f10 (0x1.002004p+0f))
+ __builtin_abort ();
-+ return send_msg_to_gm(CMD_ABI_DEVICES, dev_msg_type, __builtin_va_arg_pack());
-+}
-+
-+int
-+main(void)
-+{
-+ int mode = 99;
-+
-+ send_enable(1, mode, sizeof(mode));
-+
+ return 0;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr78742.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr78742.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr78742.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* { dg-do compile } */
-+/* { dg-require-effective-target int128 } */
-+/* { dg-require-effective-target alloca } */
-+
-+void foo();
-+
-+void func()
-+{
-+ int m;
-+
-+ int tab[m];
-+
-+ __int128 j;
-+ for(; j; j++)
-+ {
-+ tab[j] = 0;
-+ tab[j+1] = 0;
-+ }
-+
-+ foo();
-+}
-Index: gcc/testsuite/gcc.dg/torture/pr80539.c
+Index: gcc/testsuite/gcc.dg/torture/pr91445.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr80539.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr80539.c (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/gcc.dg/torture/pr91445.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr91445.c (.../branches/gcc-9-branch)
@@ -0,0 +1,22 @@
-+/* { dg-do compile } */
-+
-+signed char a, b;
-+void fn1()
-+{
-+ signed char c, e;
-+ short d;
-+ if (0) {
-+ for (; d;) {
-+l1:
-+ for (c = 7; a; c++)
-+ ;
-+ e = 6;
-+ for (; b; e++)
-+ ;
-+ }
-+ c -= e;
-+ }
-+ if (d == 7)
-+ goto l1;
-+ a = c;
-+}
-Index: gcc/testsuite/gcc.dg/torture/pr80025.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr80025.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr80025.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,24 @@
-+/* PR debug/80025 */
-+/* { dg-do compile } */
-+/* { dg-options "-g -ftracer -w" } */
-+
-+int a;
-+long int b, c;
++/* { dg-do run } */
+
-+long int
-+foo (void)
-+{
-+}
++struct S { _Bool x; };
+
+void
-+bar (int x, short int y, unsigned short int z)
++foo (struct S *s)
+{
++ __builtin_memset (s, 0x11, sizeof (struct S));
++ s->x = 1;
+}
+
+int
-+baz (void)
++main ()
+{
-+ a -= b;
-+ b = !foo ();
-+ bar (b ^= (c ^ 1) ? (c ^ 1) : foo (), (__INTPTR_TYPE__) &bar, a);
++ struct S s;
++ foo (&s);
++ char c;
++ __builtin_memcpy (&c, &s.x, 1);
++ if (c != 1)
++ __builtin_abort ();
++ return 0;
+}
-Index: gcc/testsuite/gcc.dg/torture/pr79732.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/torture/pr79732.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/torture/pr79732.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,5 @@
-+/* { dg-do link } */
-+
-+int bar () __attribute__ ((alias ("foo")));
-+void foo () { }
-+int main () { return bar(); }
-Index: gcc/testsuite/gcc.dg/tree-ssa/pr78886.c
+Index: gcc/testsuite/gcc.dg/torture/pr91812.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr78886.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr78886.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
+--- a/src/gcc/testsuite/gcc.dg/torture/pr91812.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr91812.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,26 @@
+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+void *malloc(unsigned long x);
-+
-+void foo(void)
-+{
-+ volatile int i;
-+ malloc(1);
-+ i;
-+}
-Index: gcc/testsuite/gcc.dg/tree-ssa/pr79803.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr79803.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr79803.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,60 @@
-+/* { dg-do compile { target { x86_64-*-* } } } */
-+/* { dg-options "-march=opteron-sse3 -Ofast --param l1-cache-line-size=3 -Wdisabled-optimization" } */
-+/* { dg-require-effective-target indirect_jumps } */
-+
-+#include <setjmp.h>
-+
-+extern void abort (void);
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
++/* { dg-options "-fdump-tree-optimized-blocks" } */
+
-+jmp_buf buf;
++unsigned register1;
++unsigned register2;
+
-+void raise0(void)
++void busy_wait_for_register (int x)
+{
-+ __builtin_longjmp (buf, 1);
-+}
-+
-+int execute(int cmd) /* { dg-warning "'l1-cache-size' parameter is not a power of two 3" } */
-+{
-+ int last = 0;
++ volatile unsigned* ptr;
++ switch(x) {
++ case 0x1111:
++ ptr = &register1;
++ break;
+
-+ if (__builtin_setjmp (buf) == 0)
-+ while (1)
-+ {
-+ last = 1;
-+ raise0 ();
-+ }
++ case 0x2222:
++ ptr = &register2;
++ break;
+
-+ if (last == 0)
-+ return 0;
-+ else
-+ return cmd;
++ default:
++ return;
++ }
++ while (*ptr) {}
+}
+
-+int execute2(int cmd, int cmd2)
++/* { dg-final { scan-tree-dump "loop depth 1" "optimized" } } */
+Index: gcc/testsuite/gcc.dg/torture/pr90278.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr90278.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr90278.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-additional-options "-fexceptions -fnon-call-exceptions" } */
++
++double
++hc (void)
+{
-+ int last = 0;
++ double dp = 0.0;
++ double ek[1];
+
-+ if (__builtin_setjmp (buf) == 0)
-+ while (1)
-+ {
-+ last = 1;
-+ raise0 ();
-+ }
++ ek[0] = 1.0 / dp < 0.0;
+
-+ if (last == 0)
-+ return 0;
-+ else
-+ return cmd;
++ return ek[0];
+}
+Index: gcc/testsuite/gcc.dg/pr91720.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr91720.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr91720.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,22 @@
++/* PR rtl-optimization/91720 */
++/* { dg-do run } */
++/* { dg-options "-Og -fno-forward-propagate -frerun-cse-after-loop -fno-tree-fre" } */
+
++unsigned a, b;
+
-+int main(void)
++int
++main ()
+{
-+ if (execute (1) == 0)
-+ abort ();
-+
-+ if (execute2 (1, 2) == 0)
-+ abort ();
-+
++#if __CHAR_BIT__ == 8
++ unsigned c = 1;
++ unsigned long long d = 0;
++ unsigned char e = 0;
++ e = __builtin_sub_overflow (d, e, &a) ? 0 : 0x80;
++ e = e << 7 | e >> c;
++ __builtin_memmove (&d, &a, 2);
++ b = e;
++ if (b != 0x40)
++ __builtin_abort ();
++#endif
+ return 0;
+}
-Index: gcc/testsuite/gcc.dg/tree-ssa/pr78428.c
+Index: gcc/testsuite/gcc.dg/pr89435.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr78428.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr78428.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,27 @@
-+/* PR tree-optimization/78428. */
-+/* { dg-options "-O2" } */
+--- a/src/gcc/testsuite/gcc.dg/pr89435.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr89435.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,21 @@
++/* PR rtl-optimization/89435 */
+/* { dg-do run } */
++/* { dg-options "-O1 -fno-forward-propagate -fno-tree-forwprop -fno-tree-ccp" } */
+
-+struct S0
-+{
-+ int f2;
-+ int f3:16;
-+ int f4:18;
-+} ;
-+
-+int a = 5;
-+struct S0 b = { 3, 0, 0 };
-+static struct S0 global[2] = { { 77, 0, 78 }, { 77, 0, 78 } };
++unsigned short a;
++unsigned int b, c, d, e, f;
+
-+int main ()
++int
++main ()
+{
-+ volatile struct S0 *j;
-+ for (; a;)
-+ {
-+ __builtin_printf ("", b.f2);
-+ j = &b;
-+ *j = global[1];
-+ a--;
-+ }
++#if __CHAR_BIT__ == 8 && __SIZEOF_INT__ == 4
++ unsigned char g = e = __builtin_mul_overflow_p (5, 542624702, 0);
++ d = __builtin_bswap64 (a);
++ b = __builtin_sub_overflow ((unsigned char) -e, (unsigned int) d, &g);
++ e = __builtin_mul_overflow (b, c, &a);
++ f = g + e;
++ if (f != 0xff)
++ __builtin_abort ();
++#endif
+ return 0;
+}
-Index: gcc/testsuite/gcc.dg/tls/emutls-2.c
-===================================================================
---- a/src/gcc/testsuite/gcc.dg/tls/emutls-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/tls/emutls-2.c (.../branches/gcc-6-branch)
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target tls } */
-+/* { dg-require-effective-target global_constructor } */
- /* { dg-options "-O2" } */
-
- /* With emulated TLS, the constructor generated during IPA
-Index: gcc/testsuite/gcc.dg/pr80492.c
+Index: gcc/testsuite/gcc.dg/vect/pr91665.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr80492.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr80492.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
+--- a/src/gcc/testsuite/gcc.dg/vect/pr91665.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/pr91665.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
++/* PR tree-optimization/91665 */
+/* { dg-do compile } */
-+/* { dg-options "-w -O2 -fdump-tree-optimized" } */
++/* { dg-additional-options "-Ofast" } */
+
-+static __inline__ __attribute__((__always_inline__))
-+void syscall_7 (int val)
++short int v;
++
++void
++foo (short int x, short int y)
+{
-+ register int reg __asm ("4") = val;
-+ __asm __volatile__ ("/* Some Code %0 */" :: "r" (reg));
++ short int *p = &v;
++
++ x = 1;
++ while (x != 0)
++ x += ++y || (*p = x);
+}
+Index: gcc/testsuite/gcc.dg/vect/vect-fma-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-fma-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-fma-3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++/* PR tree-optimization/91723 */
++/* { dg-do compile { target { scalar_all_fma || { i?86-*-* x86_64-*-* } } } } */
++/* { dg-additional-options "-mfma" { target { i?86-*-* x86_64-*-* } } } */
+
-+void do_syscalls (void)
++void
++foo (double *restrict r, const double *restrict a,
++ const double *restrict b, const double *restrict c)
+{
-+ for (int s = 0; s < 2; s++)
++ for (int i = 0; i < 1024; i++)
+ {
-+ syscall_7 (0);
-+ syscall_7 (1);
++ double x = __builtin_fma (a[i], b[i], c[i]);
++ x = __builtin_fma (a[i], b[i], x);
++ r[i] = x;
+ }
+}
+
-+/* { dg-final { scan-tree-dump-times "reg = " 4 "optimized" } } */
-Index: gcc/testsuite/gcc.dg/tree-prof/pr66295.c
++/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" { target vect_double } } } */
+Index: gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/tree-prof/pr66295.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/tree-prof/pr66295.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,35 @@
-+/* { dg-require-ifunc "" } */
-+/* { dg-skip-if "" { ! { i?86-*-* x86_64-*-* } } } */
-+/* { dg-options "-O2" } */
-+
-+static double bar (double *__restrict, double *__restrict, int)
-+__attribute__ ((target_clones("avx,avx2,avx512f,default")));
-+
-+double
-+foo (double *__restrict a, double *__restrict b, int n)
-+{
-+ return bar (a,b,n);
-+}
-+
-+double
-+bar (double *__restrict a, double *__restrict b, int n) /* { dg-error "attribute\[^\n\r]*foo\[^\n\r]* is unknown" } */
-+{
-+ double s;
-+ int i;
-+ s = 0.0;
-+ for (i=0; i<n; i++)
-+ s += a[i] + b[i];
-+
-+ return s;
-+}
-+
-+#define N 5
-+
-+int main ()
-+{
-+ double a[N] = {1.2f, 1.2f, 1.2f, 1.2f, 1.2f };
-+ double b[N] = {1.2f, 1.2f, 1.2f, 1.2f, 1.2f };
-+
-+ __builtin_printf ("value: %.5f\n", foo (a, b, N));
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.dg/tree-prof/pr79587.c
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c (.../branches/gcc-9-branch)
+@@ -1,6 +1,10 @@
+ /* { dg-do run { target vect_cmdline_needed } } */
+ /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-details -fno-vect-cost-model" } */
+ /* { dg-additional-options "-mno-sse" { target { i?86-*-* x86_64-*-* } } } */
++/* The IBM Z backend sets the min-vect-loop-bound param to 2 to avoid
++ awkward epilogue code generation in some cases. This line needs to
++ be removed after finding an alternate way to fix this. */
++/* { dg-additional-options "--param min-vect-loop-bound=0" { target { s390*-*-* } } } */
+
+ #include <stdlib.h>
+
+Index: gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/tree-prof/pr79587.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/tree-prof/pr79587.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,26 @@
-+/* { dg-require-effective-target lto } */
-+/* { dg-options "-O2 -flto" } */
-+
-+unsigned long global = -12345;
-+
-+unsigned long
-+__attribute__((noinline))
-+test(unsigned long v, unsigned long v2)
-+{
-+ unsigned long x = v % v2;
-+
-+ return x;
-+}
-+
-+int main(int argc, char **argv)
-+{
-+ unsigned long r = 0;
-+
-+ for (int i = 0; i < 100; i++)
-+ r += test(argc, global);
-+
-+ if (r != 100)
-+ __builtin_abort ();
-+
-+ return 0;
-+}
-Index: gcc/testsuite/gcc.dg/pr80112.c
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c (.../branches/gcc-9-branch)
+@@ -1,6 +1,10 @@
+ /* { dg-do run { target vect_cmdline_needed } } */
+ /* { dg-options "-O2 -ftree-vectorize -fwrapv -fdump-tree-vect-details -fvect-cost-model=dynamic" } */
+-/* { dg-options "-O2 -ftree-vectorize -fwrapv -fdump-tree-vect-details -fvect-cost-model=dynamic -mno-sse" { target { i?86-*-* x86_64-*-* } } } */
++/* { dg-additional-options "-mno-sse" { target { i?86-*-* x86_64-*-* } } } */
++/* The IBM Z backend sets the min-vect-loop-bound param to 2 to avoid
++ awkward epilogue code generation in some cases. This line needs to
++ be removed after finding an alternate way to fix this. */
++/* { dg-additional-options "--param min-vect-loop-bound=0" { target { s390*-*-* } } } */
+
+ #include <stdlib.h>
+
+Index: gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr80112.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr80112.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+/* PR rtl-optimization/80112 */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
+/* { dg-do compile } */
-+/* { dg-options "-Os -fmodulo-sched" } */
++/* { dg-options "-O2 -fdump-tree-fre1" } */
+
-+void **a;
++struct s { int x; };
++struct t { int x; };
+
-+void
-+foo (int c)
++void swap(struct s* p, struct t* q)
+{
-+ void *d[] = {&&e, &&f};
-+ a = d;
-+ switch (c)
-+ {
-+ f:
-+ c = 9;
-+ /* FALLTHRU */
-+ case 9:
-+ goto *a++;
-+ e:;
-+ }
++ p->x = q->x;
++ q->x = p->x;
+}
-Index: gcc/testsuite/gcc.dg/pr80286.c
++
++/* The second statement is redundant. */
++/* { dg-final { scan-tree-dump-times "x = " 1 "fre1" } } */
++/* { dg-final { scan-tree-dump-times " = \[^;\]*x;" 1 "fre1" } } */
+Index: gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
===================================================================
---- a/src/gcc/testsuite/gcc.dg/pr80286.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/gcc.dg/pr80286.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,23 @@
-+/* PR target/80286 */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c (.../branches/gcc-9-branch)
+@@ -30,5 +30,6 @@
+
+
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! avr-*-* } } } } */
++/* IBM Z does not require special alignment for vectorization. */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! { avr-*-* s390*-*-* } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! { avr-*-* s390*-*-* } } } } } */
+Index: gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c (.../branches/gcc-9-branch)
+@@ -38,5 +38,6 @@
+
+
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! avr-*-* } } } } */
++/* IBM Z does not require special alignment for vectorization. */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! { avr-*-* s390*-*-* } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! { avr-*-* s390*-*-* } } } } } */
+Index: gcc/testsuite/gcc.dg/Wnonnull.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/Wnonnull.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/Wnonnull.c (.../branches/gcc-9-branch)
+@@ -2,7 +2,10 @@
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+-#include <string.h>
++extern __SIZE_TYPE__ strlen (const char *__s)
++ __attribute ((pure)) __attribute ((nonnull (1)));
++extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
++ __SIZE_TYPE__ __n) __attribute ((nonnull (1, 2)));
+
+ char buf[100];
+
+@@ -14,9 +17,9 @@
+
+ __attribute ((nonnull (1, 2)))
+ inline char*
+-my_strcpy (char *restrict dst, const char *restrict src, size_t size)
++my_strcpy (char *restrict dst, const char *restrict src, __SIZE_TYPE__ size)
+ {
+- size_t len = strlen (src); /* { dg-warning "argument 1 null where non-null expected" } */
++ __SIZE_TYPE__ len = strlen (src); /* { dg-warning "argument 1 null where non-null expected" } */
+ if (len < size)
+ memcpy (dst, src, len + 1); /* { dg-warning "argument 2 null where non-null expected" } */
+ else
+Index: gcc/testsuite/gcc.dg/pr89795.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr89795.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr89795.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,25 @@
++/* PR rtl-optimization/89795 */
+/* { dg-do run } */
-+/* { dg-options "-O2 -Wno-psabi" } */
++/* { dg-options "-O2 -fno-dce -fno-forward-propagate -fno-sched-pressure" } */
+
-+typedef int V __attribute__((vector_size (4 * sizeof (int))));
-+
-+__attribute__((noinline, noclone)) V
-+foo (V x, V y)
-+{
-+ return x << y[0];
-+}
++unsigned char a;
++unsigned b, c, d;
+
+int
+main ()
+{
-+ V x = { 1, 2, 3, 4 };
-+ V y = { 5, 6, 7, 8 };
-+ V z = foo (x, y);
-+ V e = { 1 << 5, 2 << 5, 3 << 5, 4 << 5 };
-+ if (__builtin_memcmp (&z, &e, sizeof (V)))
++#if __CHAR_BIT__ == 8
++ unsigned x;
++ int e, f;
++ unsigned char g;
++ e = __builtin_bswap32 (a);
++ f = __builtin_ffs (~(unsigned short) e);
++ a = __builtin_mul_overflow ((unsigned char) 0xf7, f, &g);
++ a |= __builtin_sub_overflow_p (c, 0, (unsigned char) 0);
++ d = g + b;
++ x = d;
++ if (x != 0xf7)
+ __builtin_abort ();
++#endif
+ return 0;
+}
Index: gcc/testsuite/ChangeLog
===================================================================
---- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,1071 @@
-+2017-05-10 Richard Biener <rguenther@suse.de>
-+
-+ Backport from mainline
-+ 2017-03-17 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80075
-+ * g++.dg/torture/pr80075.C: New testcase.
-+
-+ 2017-03-21 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80122
-+ * gcc.dg/torture/pr80122.c: New testcase.
-+
-+ 2017-03-24 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80167
-+ * gcc.dg/graphite/pr80167.c: New testcase.
-+
-+ 2017-03-27 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80171
-+ * g++.dg/torture/pr80171.C: New testcase.
-+
-+2017-05-09 Richard Biener <rguenther@suse.de>
-+
-+ Backport from mainline
-+ 2017-03-28 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80222
-+ * g++.dg/pr80222.C: New testcase.
-+
-+ 2017-04-06 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80262
-+ * gcc.target/i386/pr80262.c: New testcase.
-+
-+ 2017-04-03 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80275
-+ * g++.dg/opt/pr80275.C: New testcase.
-+
-+ 2017-04-06 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80334
-+ * g++.dg/torture/pr80334.C: New testcase.
-+
-+ 2017-04-10 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80362
-+ * gcc.dg/torture/pr80362.c: New testcase.
-+
-+ 2017-04-25 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/80492
-+ * gcc.dg/pr80492.c: New testcase.
-+
-+ 2017-04-27 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/80539
-+ * gcc.dg/torture/pr80539.c: New testcase.
-+
-+2017-05-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR testsuite/80678
-+ 2016-06-11 Segher Boessenkool <segher@kernel.crashing.org>
+--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,817 @@
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
+
-+ PR middle-end/71310
-+ * gcc.target/powerpc/pr71310.c: New testcase.
-+
-+2017-05-05 Jakub Jelinek <jakub@redhat.com>
++ PR c++/92384
++ * g++.dg/torture/pr92384.C: New test.
+
+ Backported from mainline
-+ 2017-04-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR rtl-optimization/80501
-+ * gcc.c-torture/execute/pr80501.c: New test.
-+
-+ 2017-04-12 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR sanitizer/80349
-+ * g++.dg/ubsan/pr80349.C: New test.
-+
-+ 2017-04-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR rtl-optimization/80385
-+ * g++.dg/opt/pr80385.C: New test.
-+
-+ PR c++/80363
-+ * g++.dg/ext/pr80363.C: New test.
-+
-+ 2017-04-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/80176
-+ * g++.dg/init/ref23.C: New test.
-+
-+ 2017-04-04 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/80297
-+ * g++.dg/torture/pr80297.C: New test.
-+
-+ PR target/80286
-+ * gcc.target/i386/avx-pr80286.c: New test.
-+ * gcc.dg/pr80286.c: New test.
-+
-+ 2017-04-13 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR debug/80321
-+ * gcc.dg/debug/pr80321.c: New test.
-+
-+ 2017-03-31 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR debug/79255
-+ * gcc.dg/pr79255.c: New test.
-+
-+ PR c++/79572
-+ * g++.dg/ubsan/null-8.C: New test.
-+
-+ PR debug/80025
-+ * gcc.dg/torture/pr80025.c: New test.
-+
-+ 2017-03-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR sanitizer/80168
-+ * gcc.dg/asan/pr80168.c: New test.
-+
-+ 2017-03-24 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR rtl-optimization/80112
-+ * gcc.dg/pr80112.c: New test.
-+
-+ 2017-03-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/80141
-+ * g++.dg/gomp/pr80141.C: New test.
-+
-+ PR c++/80129
-+ * g++.dg/torture/pr80129.C: New test.
-+
-+ 2017-03-21 Jakub Jelinek <jakub@redhat.com>
++ 2019-11-05 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c/80097
-+ * gcc.dg/ubsan/pr80097.c: New test.
++ PR c++/92343
++ * g++.dg/cpp2a/attr-likely6.C: New test.
+
-+ 2017-03-10 Jakub Jelinek <jakub@redhat.com>
++ 2019-10-31 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79896
-+ * g++.dg/ext/int128-5.C: New test.
++ PR preprocessor/92296
++ * c-c++-common/cpp/pr92296-1.c: New test.
++ * c-c++-common/cpp/pr92296-2.c: New test.
+
-+ 2017-03-09 Jakub Jelinek <jakub@redhat.com>
++ PR middle-end/92231
++ * gcc.c-torture/compile/pr92231.c: New test.
+
-+ PR sanitizer/79944
-+ * c-c++-common/asan/pr79944.c: New test.
++ 2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
-+ PR target/79932
-+ * gcc.target/i386/pr79932-2.c: New test.
++ PR c++/92015
++ * g++.dg/cpp0x/constexpr-92015.C: New test.
+
-+ PR target/79932
-+ * gcc.target/i386/pr79932-1.c: New test.
++2019-11-08 Eric Botcazou <ebotcazou@adacore.com>
+
-+ 2017-03-07 Jakub Jelinek <jakub@redhat.com>
++ * gcc.c-torture/compile/20191108-1.c: New test.
++ * gcc.target/sparc/overflow-1.c: Add -fno-pie to the options.
++ * gcc.target/sparc/overflow-2.c: Likewise.
++ * gcc.target/sparc/overflow-3.c: Likewise.
++ * gcc.target/sparc/overflow-4.c: Likewise.
++ * gcc.target/sparc/overflow-5.c: Likewise.
+
-+ PR rtl-optimization/79901
-+ * gcc.target/i386/pr79901.c: New test.
-+
-+ 2017-03-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79807
-+ * gcc.target/i386/pr79807.c: New test.
-+
-+ 2017-03-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/79681
-+ * g++.dg/cpp1y/constexpr-79681-1.C: New test.
-+ * g++.dg/cpp1y/constexpr-79681-2.C: New test.
-+
-+ 2017-02-28 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79729
-+ * gcc.target/i386/pr79729.c: New test.
-+
-+ 2017-02-25 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR middle-end/79396
-+ * g++.dg/opt/pr79396.C: New test.
-+
-+ 2017-02-22 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/79664
-+ * g++.dg/cpp1y/constexpr-throw.C: Adjust expected diagnostic location.
-+ * g++.dg/gomp/pr79664.C: New test.
-+
-+ 2017-02-21 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/79639
-+ * g++.dg/cpp1y/constexpr-79639.C: New test.
-+
-+ PR target/79570
-+ * gcc.dg/pr79570.c: New test.
-+
-+ PR c++/79641
-+ * c-c++-common/pr79641.c: New test.
-+
-+ PR target/79494
-+ * gcc.dg/pr79494.c: New test.
-+
-+ 2017-02-20 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79568
-+ * gcc.target/i386/pr79568-1.c: New test.
-+ * gcc.target/i386/pr79568-2.c: New test.
-+ * gcc.target/i386/pr79568-3.c: New test.
-+
-+ 2017-02-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/79559
-+ * gcc.target/i386/pr79559.c: New test.
-+
-+ 2017-02-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/79512
-+ * c-c++-common/gomp/pr79512.c: New test.
-+
-+2017-05-05 Marek Polacek <polacek@redhat.com>
-+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
-+ Jakub Jelinek <jakub@redhat.com>
-+
-+ PR target/77728
-+ * g++.dg/abi/pr77728-1.C: New test.
-+
-+2017-05-01 Janus Weil <janus@gcc.gnu.org>
-+
-+ Backport from trunk
-+ PR fortran/80392
-+ * gfortran.dg/proc_ptr_comp_49.f90: New test case.
-+
-+2017-04-21 Janus Weil <janus@gcc.gnu.org>
-+
-+ Backport from trunk
-+ PR fortran/80361
-+ * gfortran.dg/class_62.f90: New test case.
-+
-+2017-04-11 Martin Jambor <mjambor@suse.cz>
++2019-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-03-30 Martin Jambor <mjambor@suse.cz>
++ * gcc.target/s390/sigfpe-eh.c: New test.
+
-+ PR ipa/77333
-+ * g++.dg/ipa/pr77333.C: New test.
-+
-+2017-04-06 Uros Bizjak <ubizjak@gmail.com>
++2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-04-06 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR target/79733
-+ * gcc.target/i386/pr79733.c: New test.
-+
-+ 2017-04-06 Uros Bizjak <ubizjak@gmail.com>
++ 2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
-+ PR target/80298
-+ * gcc.target/i386/pr80298-1.c: New test.
-+ * gcc.target/i386/pr80298-2.c: Ditto.
++ * gcc.dg/tree-ssa/gen-vect-26.c: Disable loop peeling check for
++ IBM Z.
++ * gcc.dg/tree-ssa/gen-vect-28.c: Likewise.
+
-+2017-04-06 Thomas Preud'homme <thomas.preudhomme@arm.com>
-+
-+ PR target/80082
-+ * gcc.target/arm/atomic_loaddi_10.c: New testcase.
-+ * gcc.target/arm/atomic_loaddi_11.c: Likewise.
-+
-+2017-04-03 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ Back port from the trunk
-+ 2017-03-14 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ PR target/79947
-+ * gcc.target/powerpc/pr79947.c: New test.
-+
-+2017-04-03 Peter Bergner <bergner@vnet.ibm.com>
++2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-04-03 Peter Bergner <bergner@vnet.ibm.com>
-+
-+ PR target/80246
-+ * gcc.target/powerpc/dfp-builtin-1.c: Require hard_dfp, not
-+ powerpc_vsx_ok.
-+ (std, ld): Limit scan-assembler-times check to lp64.
-+ (stwu, stw, lwz): Add scan-assembler-times check for ilp32.
-+ * gcc.target/powerpc/dfp-builtin-2.c: Require hard_dfp, not
-+ powerpc_vsx_ok.
++ 2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
-+ PR target/80246
-+ * gcc.target/powerpc/pr80246.c: Require hard_dfp.
++ * gcc.dg/tree-ssa/gen-vect-11.c: Add --param min-vect-loop-bound=0
++ for IBM Z.
++ * gcc.dg/tree-ssa/gen-vect-32.c: Likewise.
+
-+2017-04-01 Paul Thomas <pault@gcc.gnu.org>
-+
-+ Backport from trunk
-+ PR fortran/71838
-+ * gfortran.dg/submodule_26.f08 : New test.
-+ * gfortran.dg/submodule_27.f08 : New test.
-+
-+2017-04-01 Paul Thomas <pault@gcc.gnu.org>
-+
-+ Backport from trunk
-+ PR fortran/79676
-+ * gfortran.dg/submodule_28.f08 : New test.
-+
-+2017-03-31 Richard Sandiford <richard.sandiford@arm.com>
-+
-+ PR tree-optimization/80218
-+ * gcc.dg/pr80218.c: New test.
-+
-+2017-03-30 Peter Bergner <bergner@vnet.ibm.com>
++2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-03-30 Peter Bergner <bergner@vnet.ibm.com>
++ 2019-11-05 Andreas Krebbel <krebbel@linux.ibm.com>
+
-+ PR target/80246
-+ * gcc.target/powerpc/dfp-builtin-1.c: Remove unneeded dg-skip-if for
-+ Darwin and SPE.
-+ (dxex, dxexq): Update return type.
-+ (diex, diexq): Update argument type.
-+ * gcc.target/powerpc/pr80246.c: New test.
++ * gcc.target/s390/s390.exp
++ (check_effective_target_s390_useable_hw): Add inline asm for z14
++ and z15. Replace instruction for z13 with lochiz. Add register
++ clobbers. Check also for __zarch__ when doing the __VX__ test.
+
-+2017-03-29 Michael Meissner <meissner@linux.vnet.ibm.com>
++2019-11-04 Iain Sandoe <iain@sandoe.co.uk>
+
-+ Back port from trunk
-+ 2017-03-16 Michael Meissner <meissner@linux.vnet.ibm.com>
++ Backport from mainline.
++ 2019-06-20 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR target/71294
-+ * g++.dg/pr71294.C: New test.
++ * obj-c++.dg/stubify-1.mm: Adjust options and scan-asm checks.
++ * obj-c++.dg/stubify-2.mm: Likewise.
++ * objc.dg/stubify-1.m: Likewise.
++ * objc.dg/stubify-2.m: Likewise.
+
-+2017-03-29 Richard Biener <rguenther@suse.de>
++2019-11-04 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline
-+ 2017-03-28 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/78644
-+ * gcc.dg/pr78644-1.c: New testcase.
-+ * gcc.dg/pr78644-2.c: Likewise.
-+
-+ 2017-03-27 Richard Biener <rguenther@suse.de>
++ 2019-10-30 Tobias Burnus <tobias@codesourcery.com>
+
-+ PR tree-optimization/80181
-+ * gcc.dg/torture/pr80181.c: New testcase.
++ PR fortran/92208
++ * gfortran.dg/pr92208.f90: New.
+
-+2017-03-28 Marek Polacek <polacek@redhat.com>
++2019-11-04 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline
-+ 2017-03-28 Marek Polacek <polacek@redhat.com>
-+
-+ PR sanitizer/80067
-+ * c-c++-common/ubsan/shift-10.c: New test.
-+
-+2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
-+
-+ Back port from trunk
-+ 2017-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
++ 2019-10-31 Jakub Jelinek <jakub@redhat.com>
++
++ PR fortran/92284
++ * gfortran.dg/bind_c_array_params_3_aux.c: Include
++ ../../../libgfortran/ISO_Fortran_binding.h rather than
++ ISO_Fortran_binding.h.
++
++ 2019-10-31 Tobias Burnus <tobias@codesourcery.com>
++
++ PR fortran/92284
++ * gfortran.dg/bind-c-intent-out.f90: Update expected dump;
++ extend comment.
++ * gfortran.dg/bind_c_array_params_3.f90: New.
++ * gfortran.dg/bind_c_array_params_3_aux.c: New.
++
++ 2019-10-31 Tobias Burnus <tobias@codesourcery.com>
++
++ PR fortran/92277
++ * fortran.dg/pr92277.f90: New.
++
++
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
++
++ Backport from mainline.
++ 2019-10-22 Iain Sandoe <iain@sandoe.co.uk>
++
++ * gcc.dg/Wnonnull.c: Provide prototypes for strlen and memcpy.
++ Use __SIZE_TYPE__ instead of size_t.
++
++ Backport from mainline.
++ 2019-10-19 Iain Sandoe <iain@sandoe.co.uk>
++
++ * gcc.dg/Wnonnull.c: Add attributed function declarations for
++ memcpy and strlen for Darwin.
++
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
++
++ Backport from mainline.
++ 2019-10-13 Iain Sandoe <iain@sandoe.co.uk>
++
++ * gcc.target/i386/indirect-thunk-1.c: Allow 'l' or 'L' in
++ indirection label prefix, for Darwin.
++ * gcc.target/i386/indirect-thunk-2.c: Likewise.
++ * gcc.target/i386/indirect-thunk-3.c: Likewise.
++ * gcc.target/i386/indirect-thunk-4.c: Likewise.
++ * gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
++ * gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
++ * gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
++ * gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
++ * gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
++ * gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
++ * gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
++ * gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
++ * gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
++ * gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
++ * gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
++ * gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
++ * gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
++ * gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
++ * gcc.target/i386/pr32219-2.c: Likewise.
++ * gcc.target/i386/pr32219-3.c: Likewise.
++ * gcc.target/i386/pr32219-4.c: Likewise.
++ * gcc.target/i386/pr32219-7.c: Likewise.
++ * gcc.target/i386/pr32219-8.c: Likewise.
++ * gcc.target/i386/ret-thunk-14.c: Likewise.
++ * gcc.target/i386/ret-thunk-15.c: Likewise.
++ * gcc.target/i386/ret-thunk-9.c: Likewise.
++
++2019-10-30 Iain Sandoe <iain@sandoe.co.uk>
++
++ Backport from mainline.
++ 2019-08-13 Iain Sandoe <iain@sandoe.co.uk>
++
++ * obj-c++.dg/stubify-1.mm: Rename symbol stub option.
++ * obj-c++.dg/stubify-2.mm: Likewise.
++ * objc.dg/stubify-1.m: Likewise.
++ * objc.dg/stubify-2.m: Likewise.
++
++2019-10-30 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ PR target/78543
-+ * gcc.target/powerpc/pr78543.c: New test.
++ Backport from mainline
++ 2019-07-09 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+2017-03-27 Tom de Vries <tom@codesourcery.com>
++ * gcc.target/mips/cfgcleanup-jalr1.c: New test.
++ * gcc.target/mips/cfgcleanup-jalr2.c: New test.
++ * gcc.target/mips/cfgcleanup-jalr3.c: New test.
+
-+ backport from trunk:
-+ 2017-03-24 Tom de Vries <tom@codesourcery.com>
++2019-10-29 Jakub Jelinek <jakub@redhat.com>
+
-+ PR testsuite/80092
-+ * gcc.dg/tls/emutls-2.c: Add dg-require-effective-target
-+ global_constructor.
++ PR c++/92201
++ * g++.dg/other/pr92201.C: New test.
+
-+2017-03-26 Paul Thomas <pault@gcc.gnu.org>
++2019-10-28  Paul Thomas  <pault@gcc.gnu.org>
+
+ Backport from trunk
-+ PR fortran/79434
-+ * gfortran.dg/submodule_25.f08 : New test.
-+
-+2017-03-24 Tom de Vries <tom@codesourcery.com>
-+
-+ backport from trunk:
-+ 2017-03-24 Tom de Vries <tom@codesourcery.com>
-+
-+ PR testsuite/80092
-+ * gcc.dg/torture/pr71881.c: Add dg-require-effective-target alloca.
-+ * gcc.dg/torture/pr78742.c: Same.
++ PR fortran/91926
++ * gfortran.dg/ISO_Fortran_binding_13.f90: New test.
++ * gfortran.dg/ISO_Fortran_binding_13.c: Additional source.
++ * gfortran.dg/ISO_Fortran_binding_14.f90: New test.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-28 Jiufu Guo <guojiufu@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-03-16 Segher Boessenkool <segher@kernel.crashing.org>
++ PR target/70010
++ * gcc.target/powerpc/pr70010.c: Add -Wno-psabi.
++ * gcc.target/powerpc/pr70010-1.c: Require LTO.
++ * gcc.target/powerpc/pr70010-2.c: Require LTO.
+
-+ * gcc.dg/tree-prof/pr66295.c: Skip unless on an x86 target.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
-+
-+ Backport from mainline
-+ 2017-03-14 Martin Liska <mliska@suse.cz>
++2019-10-28 Uroš Bizjak <ubizjak@gmail.com>
+
-+ PR lto/66295
-+ * gcc.dg/tree-prof/pr66295.c: New test.
++ PR target/92225
++ * gcc.target/i386/pr92225.c: New test.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-28 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-02-22 Martin Liska <mliska@suse.cz>
++ PR rtl-optimization/92007
++ * g++.dg/opt/pr92007.C: New test (from Arseny Solokha).
+
-+ PR lto/79587
-+ * gcc.dg/tree-prof/pr79587.c: New test.
++2019-10-28 Peter Bergner <bergner@linux.ibm.com>
++ Jiufu Guo <guojiufu@linux.ibm.com>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ PR target/70010
++ * gcc.target/powerpc/pr70010.c: New test.
++ * gcc.target/powerpc/pr70010-1.c: New test.
++ * gcc.target/powerpc/pr70010-2.c: New test.
++ * gcc.target/powerpc/pr70010-3.c: New test.
++ * gcc.target/powerpc/pr70010-4.c: New test.
+
-+ Backport from mainline
-+ 2017-02-03 Martin Liska <mliska@suse.cz>
-+
-+ PR lto/66295
-+ * gcc.target/i386/mvc9.c: New test.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-28 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline
-+ 2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-28 Tobias Burnus <tobias@codesourcery.com>
+
-+ PR target/79906
-+ * g++.dg/ext/mv8.C: Add power* targets.
++ PR fortran/91863
++ * gfortran.dg/bind-c-intent-out.f90: New.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-27 Paul Thomas <pault@gcc.gnu.org>
+
+ Backport from mainline
-+ 2017-03-21 Martin Liska <mliska@suse.cz>
++ PR fortran/86248
++ * gfortran.dg/char_result_19.f90: New test.
++ * gfortran.dg/char_result_mod_19.f90: Module for the new test.
+
-+ * gcc.target/i386/pr65044.c: Add '.' in order to catch
-+ apostrophes.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-25 Richard Earnshaw <rearnsha@arm.com>
+
+ Backport from mainline
-+ 2017-03-20 Martin Liska <mliska@suse.cz>
-+
-+ PR middle-end/79753
-+ * gcc.target/i386/mpx/pr79753.c: New test.
++ 2019-05-08 Mihail Ionescu <mihail.ionescu@arm.com>
++ Richard Earnshaw <rearnsha@arm.com>
++ PR target/88167
++ * gcc.target/arm/pr88167-1.c: New test.
++ * gcc.target/arm/pr88167-2.c: New test.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-24 Mihail Ionescu <mihail.ionescu@arm.com>
+
+ Backport from mainline
-+ 2017-03-20 Martin Liska <mliska@suse.cz>
++ 2019-10-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
-+ PR target/79769
-+ PR target/79770
-+ * g++.dg/pr79769.C: New test.
-+ * gcc.target/i386/mpx/pr79770.c: New test.
++ * gcc.target/arm/multilib.exp: Add extra tests.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2017-03-13 Martin Liska <mliska@suse.cz>
++ 2019-09-27 Jakub Jelinek <jakub@redhat.com>
+
-+ PR middle-end/78339
-+ * gcc.target/i386/mpx/pr78339.c: New test.
++ PR tree-optimization/91885
++ * gcc.dg/pr91885.c (__int64_t): Change from long to long long.
++ (__uint64_t): Change from unsigned long to unsigned long long.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
++ 2019-09-26 Martin Liska <mliska@suse.cz>
+
-+ PR tree-optimization/79631
-+ * gcc.target/i386/mpx/pr79631.c: New test.
++ PR tree-optimization/91885
++ * gcc.dg/pr91885.c: New test.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
-+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
++ * gcc.c-torture/execute/20191023-1.c: New test.
+
-+ PR target/65705
-+ PR target/69804
-+ * gcc.target/i386/pr71458.c: Update scanned pattern.
-+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++2019-10-23 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
-+ 2017-03-09 Martin Liska <mliska@suse.cz>
-+
-+ PR ipa/79761
-+ * g++.dg/pr79761.C: New test.
++ 2019-10-17 Richard Biener <rguenther@suse.de>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ PR debug/91887
++ * g++.dg/debug/dwarf2/pr91887.C: New testcase.
+
-+ Backport from mainline
-+ 2017-03-03 Martin Liska <mliska@suse.cz>
++2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
-+ PR tree-optimization/79803
-+ * gcc.dg/tree-ssa/pr79803.c: New test.
++ Backported from mainline
++ 2019-10-17 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ PR tree-optimization/92056
++ * gcc.c-torture/compile/pr92056.c: New test.
+
-+ Backport from mainline
-+ 2017-03-03 Martin Liska <mliska@suse.cz>
++ PR fortran/87752
++ * gfortran.dg/gomp/pr87752.f90: New test.
+
-+ PR rtl-optimization/79574
-+ * gcc.dg/pr79574-2.c: New test.
++ 2019-10-05 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ PR tree-optimization/91734
++ * gcc.dg/pr91734.c: New test.
+
-+ Backport from mainline
-+ 2017-02-17 Martin Liska <mliska@suse.cz>
++ 2019-10-04 Jakub Jelinek <jakub@redhat.com>
+
-+ PR rtl-optimization/79574
-+ * gcc.dg/pr79574.c: New test.
++ PR c++/91974
++ * g++.dg/cpp1z/eval-order5.C: New test.
+
-+2017-03-22 Martin Liska <mliska@suse.cz>
++ 2019-10-01 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2016-06-13 Martin Liska <mliska@suse.cz>
++ PR c++/91925
++ * g++.dg/conversion/packed2.C: New test.
+
-+ PR sanitizer/71458
-+ * gcc.target/i386/pr71458.c: New test.
++ 2019-09-27 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-21 Martin Sebor <msebor@redhat.com>
++ PR c++/88203
++ * c-c++-common/gomp/pr88203-1.c: New test.
++ * c-c++-common/gomp/pr88203-2.c: New test.
++ * c-c++-common/gomp/pr88203-3.c: New test.
+
-+ PR c++/79548
-+ * g++.dg/warn/Wunused-var-26.C: New test.
++ PR middle-end/91920
++ * c-c++-common/gomp/pr91920.c: New test.
+
-+2017-03-21 Pat Haugen <pthaugen@us.ibm.com>
++ 2019-09-11 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline:
-+ 2017-03-17 Pat Haugen <pthaugen@us.ibm.com>
++ PR rtl-optimization/89435
++ PR rtl-optimization/89795
++ PR rtl-optimization/91720
++ * gcc.dg/pr89435.c: New test.
++ * gcc.dg/pr89795.c: New test.
++ * gcc.dg/pr91720.c: New test.
+
-+ PR target/79951
-+ * gcc.target/powerpc/pr79951.c: New.
++ PR tree-optimization/91723
++ * gcc.dg/vect/vect-fma-3.c: New test.
+
-+2017-03-16 Richard Biener <rguenther@suse.de>
++ 2019-09-07 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2017-02-28 Richard Biener <rguenther@suse.de>
++ PR tree-optimization/91665
++ * gcc.dg/vect/pr91665.c: New test.
+
-+ PR tree-optimization/79732
-+ * gcc.dg/torture/pr79732.c: New testcase.
++ 2019-09-05 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-15 Uros Bizjak <ubizjak@gmail.com>
++ PR middle-end/91001
++ PR middle-end/91105
++ PR middle-end/91106
++ * gcc.c-torture/compile/pr91001.c: New test.
+
-+ PR target/80019
-+ * gcc.target/i386/pr80019.c: New test.
++ 2019-09-02 Jakub Jelinek <jakub@redhat.com>
+
-+2017-03-15 Marek Polacek <polacek@redhat.com>
++ PR tree-optimization/91632
++ * gcc.c-torture/execute/pr91632.c: New test.
+
-+ Backported from mainline
-+ 2016-12-14 Marek Polacek <polacek@redhat.com>
++ 2019-09-01 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/72775
-+ * g++.dg/ext/flexary12.C: Adjust dg-error.
-+ * g++.dg/ext/flexary20.C: New.
-+ * g++.dg/ext/flexary21.C: New.
++ PR middle-end/91623
++ * gcc.target/i386/pr91623.c: New test.
+
-+2017-03-14 Marek Polacek <polacek@redhat.com>
++ PR lto/91572
++ * g++.dg/lto/pr91572_0.C: New test.
+
-+ Backported from mainline
-+ 2017-03-09 Marek Polacek <polacek@redhat.com>
++ 2019-08-29 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79900 - ICE in strip_typedefs
-+ * g++.dg/warn/Wpadded-1.C: New test.
++ PR tree-optimization/91351
++ * g++.dg/opt/pr91351.C: New test.
+
-+ PR c++/79687
-+ * g++.dg/expr/ptrmem8.C: New test.
-+ * g++.dg/expr/ptrmem9.C: New test.
++ 2019-08-09 Jakub Jelinek <jakub@redhat.com>
+
-+ Backported from mainline
-+ 2017-01-31 Nathan Sidwell <nathan@acm.org>
++ PR c/91401
++ * c-c++-common/gomp/pr91401-1.c: New test.
++ * c-c++-common/gomp/pr91401-2.c: New test.
+
-+ PR c++/79264
-+ * g++.dg/cpp1y/pr61636-1.C: Augment.
++2019-10-18 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backported from mainline
-+ 2017-01-17 Nathan Sidwell <nathan@acm.org>
++ PR fortran/69455
++ * gfortran.dg/pr69455_1.f90: New test.
++ * gfortran.dg/pr69455_2.f90: Ditto.
+
-+ PR c++/61636
-+ * g++.dg/cpp1y/pr61636-1.C: New.
-+ * g++.dg/cpp1y/pr61636-2.C: New.
-+ * g++.dg/cpp1y/pr61636-3.C: New.
-+
-+2017-03-14 Marek Polacek <polacek@redhat.com>
-+
-+ PR c++/79962
-+ PR c++/79984
-+ * c-c++-common/nonnull-3.c: New test.
-+ * g++.dg/warn/Wnonnull3.C: New test.
-+
-+2017-03-14 Richard Biener <rguenther@suse.de>
++2019-10-18 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline
-+ 2017-03-09 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/79977
-+ * gcc.dg/graphite/pr79977.c: New testcase.
-+
-+ 2017-03-09 Richard Biener <rguenther@suse.de>
-+
-+ PR middle-end/79971
-+ * gcc.dg/fixed-point/pr79971.c: New testcase.
-+
-+ 2017-03-02 Richard Biener <rguenther@suse.de>
-+
-+ PR c/79756
-+ * gcc.dg/vector-1.c: New testcase.
-+
-+ 2017-02-22 Richard Biener <rguenther@suse.de>
-+
-+ PR tree-optimization/79666
-+ * gcc.dg/torture/pr79666.c: New testcase.
-+
-+2017-03-07 Marek Polacek <polacek@redhat.com>
-+
-+ Backported from mainline
-+ 2017-03-06 Marek Polacek <polacek@redhat.com>
++ 2019-10-18 Tobias Burnus <tobias@codesourcery.com>
+
-+ PR c++/79796 - ICE with NSDMI and this pointer
-+ * g++.dg/cpp0x/nsdmi13.C: New test.
++ PR fortran/91586
++ * gfortran.dg/class_71.f90: New.
+
-+2017-03-06 Michael Meissner <meissner@linux.vnet.ibm.com>
++2019-10-17 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Back port from trunk
-+ 2017-03-01 Michael Meissner <meissner@linux.vnet.ibm.com>
++ PR fortran/83113
++ PR fortran/89943
++ * gfortran.dg/pr89943_1.f90: New test.
++ * gfortran.dg/pr89943_2.f90: Ditto.
++ * gfortran.dg/pr89943_3.f90: Ditto.
++ * gfortran.dg/pr89943_4.f90: Ditto.
+
-+ PR target/79439
-+ * gcc.target/powerpc/pr79439.c: New test.
++2019-10-17 Bill Schmidt <wschmidt@linux.ibm.com>
+
-+2017-03-02 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR target/79514
-+ * gcc.target/i386/pr79514.c: New test.
-+
-+2017-03-01 Pat Haugen <pthaugen@us.ibm.com>
-+
-+ Backport from mainline:
-+ 2017-03-01 Pat Haugen <pthaugen@us.ibm.com>
++ Backport from mainline
++ 2019-10-15 Bill Schmidt <wschmidt@linux.ibm.com>
+
-+ * gcc.target/powerpc/pr79544.c: Add test for vec_vsrad and fix up
-+ scan string.
++ PR target/92093
++ * gcc.target/powerpc/pr91275.c: Fix type and endian issues.
+
-+ 2017-02-27 Pat Haugen <pthaugen@us.ibm.com>
++2019-10-16 Richard Biener <rguenther@suse.de>
+
-+ PR target/79544
-+ * gcc.target/powerpc/pr79544.c: New.
++ Backport from mainline
++ 2019-10-02 Richard Biener <rguenther@suse.de>
+
-+2017-02-28 Eric Botcazou <ebotcazou@adacore.com>
++ PR c++/91606
++ * g++.dg/torture/pr91606.C: New testcase.
+
-+ * gcc.target/sparc/20170228-1.c: New test.
++ 2019-09-19 Richard Biener <rguenther@suse.de>
+
-+2017-02-25 Paul Thomas <pault@gcc.gnu.org>
++ PR tree-optimization/91812
++ * gcc.dg/torture/pr91812.c: New testcase.
+
-+ PR fortran/78474
-+ * gfortran.dg/submodule_22.f08: New test.
++2019-10-14 Will Schmidt <will_schmidt@vnet.ibm.com>
+
-+ PR fortran/78331
-+ * gfortran.dg/submodule_21.f08: New test.
++ Backport from trunk.
++ 2019-09-26 Will Schmidt <will_schmidt@vnet.ibm.com>
+
-+2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++ * gcc.target/powerpc/pure-builtin-redundant-load.c: New.
+
-+ * gnat.dg/opt63.adb: New test.
++2019-10-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-02-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ PR fortran/91715
++ * gfortran.dg/function_kinds_5.f90: Prune run-on error.
++ * gfortran.dg/pr85543.f90: Ditto.
++ * gfortran.dg/pr91715.f90: New test.
+
-+ PR target/79268
-+ * gcc.target/powerpc/pr79268.c: Enable for BE targets also.
++2019-10-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-02-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ PR fortran/91649
++ * gfortran.dg/pr91649.f90: New test.
+
-+ Backport from mainline
-+ 2017-02-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-10-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR target/79261
-+ * gcc.target/powerpc/vec-xxpermdi.c: New file.
++ PR fortran/91801
++ * gfortran.dg/pr91801.f90: New test.
+
-+2017-02-20 Marek Polacek <polacek@redhat.com>
++2019-10-10 Uroš Bizjak <ubizjak@gmail.com>
+
-+ Backport from mainline
-+ 2017-02-20 Marek Polacek <polacek@redhat.com>
++ PR target/92022
++ * g++.dg/pr92022.C: New test.
+
-+ PR middle-end/79537
-+ * gcc.dg/comp-goto-4.c: New.
++2019-10-07 Thomas Koenig <tkoenig@gcc.gnu.org>
+
-+ PR sanitizer/79558
-+ * c-c++-common/ubsan/bounds-14.c: New test.
++ Backport from trunk
++ PR fortran/84487
++ * gfortran.dg/typebound_call_22.f03: xfail.
+
-+2017-02-20 Marek Polacek <polacek@redhat.com>
++2019-10-07 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ Backport from mainline
-+ 2017-02-17 Marek Polacek <polacek@redhat.com>
-+
-+ PR middle-end/79536
-+ * gcc.dg/torture/pr79536.c: New test.
-+
-+2017-01-17 Carl Love <cel@us.ibm.com>
++ 2019-10-01 Bill Schmidt <wschmdit@linux.ibm.com>
+
-+ Backport from mainline commit r245460 on 2017-02-14
++ PR target/91275
++ * gcc.target/powerpc/pr91275.c: New.
+
-+ PR 79545
-+ * gcc.target/powerpc/vsx-builtin-3.c: Add missing test case for the
-+ xvcvsxdsp and xvcvuxdsp instructions.
++2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-02-16 Jakub Jelinek <jakub@redhat.com>
++ PR fortran/47054
++ * gfortran.dg/pr47054_1.f90: New test
++ * gfortran.dg/pr47054_2.f90: Ditto.
+
-+ Backported from mainline
-+ 2017-02-09 Marek Polacek <polacek@redhat.com>
++2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR c/79428
-+ * c-c++-common/cilk-plus/CK/pr79428-4.c: New test.
-+ * c-c++-common/cilk-plus/CK/pr79428-7.c: New test.
-+ * c-c++-common/gomp/pr79428-2.c: New test.
-+ * c-c++-common/gomp/pr79428-5.c: New test.
-+ * c-c++-common/gomp/pr79428-6.c: New test.
-+ * c-c++-common/pr79428-3.c: New test.
++ PR fortran/91942
++ * gfortran.dg/pr91587.f90: Update dg-error regex.
++ * gfortran.dg/pr91942.f90: New test.
+
-+2017-02-15 Jakub Jelinek <jakub@redhat.com>
++2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backported from mainline
-+ 2017-02-10 Jakub Jelinek <jakub@redhat.com>
++ PR fortran/91785
++ * gfortran.dg/pr91785.f90: New test.
+
-+ PR tree-optimization/79411
-+ * gcc.c-torture/compile/pr79411.c: New test.
++2019-10-04 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++ Backport from mainline
++ 2019-10-03 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
+
-+ PR c++/79429
-+ * c-c++-common/gomp/pr79429.c: New test.
-+ * g++.dg/gomp/pr79429.C: New test.
++ PR target/91769
++ * gcc.target/mips/pr91769.c: New test.
+
-+ PR c/79431
-+ * c-c++-common/gomp/pr79431.c: New test.
++2019-10-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ 2017-02-06 Jakub Jelinek <jakub@redhat.com>
++ Backport from mainline
+
-+ PR c++/79377
-+ * g++.dg/lookup/pr79377.C: New test.
++ 2019-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
-+ 2017-02-02 Jakub Jelinek <jakub@redhat.com>
++ PR fortran/91716
++ * gfortran.dg/pr91716.f90: New test.
+
-+ PR target/79197
-+ * gcc.target/powerpc/pr79197.c: New test.
-+ * gcc.c-torture/compile/pr79197.c: New test.
++2019-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ 2017-01-31 Jakub Jelinek <jakub@redhat.com>
++ PR fortran/91864
++ * gcc/testsuite/gfortran.dg/pr91864.f90
+
-+ PR tree-optimization/79267
-+ * g++.dg/opt/pr79267.C: New test.
++2019-10-01 Steven G. Kargl <kargl@gcc.ngu.org>
+
-+2017-02-14 Uros Bizjak <ubizjak@gmail.com>
++ PR fortran/91802
++ * gfortran.dg/pr91802.f90: New test.
+
-+ PR target/79495
-+ * gcc.target/i386/pr79495.c: New test.
++2019-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR middle-end/61225
-+ * gcc.target/i386/pr49095.c: Add -fno-shrink-wrap to dg-options.
-+ Use dg-additional-options for ia32 target. Remove XFAIL.
++ PR fortran/91714
++ * gfortran.dg/dec_type_print_3.f90: Update dg-error regex.
++ * gfortran.dg/pr91714.f90: New test.
+
-+2017-02-13 Nathan Sidwell <nathan@acm.org>
++2019-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR c++/79296
-+ * g++.dg/cpp0x/pr79296.C: New.
++ PR fortran/91641
++ * gfortran.dg/pr91641.f90: New test.
+
-+2017-02-08 Richard Biener <rguenther@suse.de>
++2019-10-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline
-+ 2017-02-08 Richard Biener <rguenther@suse.de>
++ 2019-09-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
-+ PR tree-optimization/71824
-+ PR tree-optimization/79409
-+ * gcc.dg/graphite/pr71824-3.c: New testcase.
++ * gcc.target/aarch64/nosplit-di-const-volatile_1.c: New test.
+
-+ 2017-02-08 Richard Biener <rguenther@suse.de>
++2019-09-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
-+ PR tree-optimization/71824
-+ * gcc.dg/graphite/pr71824-2.c: New testcase.
++ Backport from mainline
++ 2019-08-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
-+ 2017-02-01 Richard Biener <rguenther@suse.de>
++ * gcc.target/arm/acle/crc_hf_1.c: New test.
+
-+ PR tree-optimization/71824
-+ * gcc.dg/graphite/pr71824.c: New testcase.
++2019-09-21 Paul Thomas <pault@gcc.gnu.org>
+
-+2017-02-03 Carl Love <cel@us.ibm.com>
++ Backport from mainline
++ PR fortran/91588
++ * gfortran.dg/associate_49.f90: New test.
+
-+ * gcc.target/powerpc/builtins-3-p8.c: Add new testfile for missing
-+ vec_packs built-in tests.
++2019-09-20 Eric Botcazou <ebotcazou@adacore.com>
+
-+2017-02-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ * gcc.dg/pr91269.c: New test.
+
-+ Backport from mainline
-+ 2017-01-27 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-09-19 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR target/65484
-+ * g++.dg/vect/pr36648.cc: Modify to reflect that the loop is not
-+ vectorized on POWER unless hardware misaligned loads are
-+ available.
++ PR fortran/91727
++ * gfortran.dg/pr91727.f90: New test.
+
-+2017-01-31 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-09-19 Kito Cheng <kito.cheng@sifive.com>
+
+ Backport from mainline
-+ 2017-01-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ 2019-09-05 Jakub Jelinek <jakub@redhat.com>
++ Jim Wilson <jimw@sifive.com>
+
-+ PR target/79268
-+ * gcc.target/powerpc/pr79268.c: New file.
-+ * gcc.target/powerpc/vsx-elemrev-1.c: Delete file.
-+ * gcc.target/powerpc/vsx-elemrev-2.c: Likewise.
-+ * gcc.target/powerpc/vsx-elemrev-3.c: Likewise.
-+ * gcc.target/powerpc/vsx-elemrev-4.c: Likewise.
++ PR target/91635
++ * gcc.c-torture/execute/pr91635.c: New test.
++ * gcc.target/riscv/shift-shift-4.c: New test.
++ * gcc.target/riscv/shift-shift-5.c: New test.
+
-+2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++2019-09-18 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
++ PR fortran/91550
++ * gfortran.dg/do_subscript_6.f90: New test.
+
-+ PR fortran/70697
-+ * gfortran.dg/coarray/event_4.f08: New test.
-+
-+2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++2019-09-15 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ 2017-01-19 Andre Vehreschild <vehre@gcc.gnu.org>
++ PR fortran/91557
++ * gfortran.dg/warn_unused_dummy_argument_5.f90: New test.
++
++2019-09-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR fortran/70696
-+ * gfortran.dg/coarray_43.f90: New test.
++ PR fortran/91553
++ * gfortran.dg/pr91553.f90: New test.
+
-+ 2017-01-18 Andre Vehreschild <vehre@gcc.gnu.org>
++2019-09-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR fortran/70696
-+ * gfortran.dg/coarray_event_1.f08: New test.
++ PR fortran/91566
++ * gfortran.dg/pr91566.f90: New test.
+
-+ 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
++2019-09-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR fortran/70696
-+ * gfortran.dg/coarray/event_3.f08: New test.
++ PR fortran/91642
++ * gfortran.dg/pr91642.f90: New test.
+
-+2017-01-28 John David Anglin <danglin@gcc.gnu.org>
++2019-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
-+ PR testsuite/70583
-+ * g++.old-deja/g++.abi/vtable2.C: Adjust CMP_VPTR define on hppa.
++ * gcc.target/sparc/20161111-1.c: XFAIL redundant zero-extension test.
+
-+2017-01-26 Eric Botcazou <ebotcazou@adacore.com>
++2019-09-09 Jakub Jelinek <jakub@redhat.com>
+
-+ 2017-01-09 Eric Botcazou <ebotcazou@adacore.com>
++ PR target/87853
++ * gcc.target/i386/pr87853.c: New test.
+
-+ * g++.dg/opt/call2.C: New test.
-+ * g++.dg/opt/call3.C: Likewise.
-+ * gnat.dg/array26.adb: New test.
-+ * gnat.dg/array26_pkg.ad[sb]: New helper.
-+ * gnat.dg/array27.adb: New test.
-+ * gnat.dg/array27_pkg.ad[sb]: New helper.
-+ * gnat.dg/array28.adb: New test.
-+ * gnat.dg/array28_pkg.ad[sb]: New helper.
++ PR target/91704
++ * gcc.target/i386/pr91704.c: New test.
+
-+2017-01-26 Richard Biener <rguenther@suse.de>
++2019-09-07 Paul Thomas <pault@gcc.gnu.org>
+
+ Backport from mainline
-+ 2016-01-10 Richard Biener <rguenther@suse.de>
++ PR fortran/91589
++ * gfortran.dg/pr91589.f90: New test.
+
-+ PR tree-optimization/79034
-+ * g++.dg/torture/pr79034.C: New testcase.
++2019-09-05 Harald Anlauf <anlauf@gmx.de>
+
-+ 2016-12-13 Richard Biener <rguenther@suse.de>
++ Backport from mainline
++ PR fortran/91496
++ * gfortran.dg/pr91496.f90: New testcase.
+
-+ PR middle-end/78742
-+ * gcc.dg/torture/pr78742.c: New testcase.
++ PR fortran/91496
++ * gfortran.dg/directive_unroll_5.f90: Adjust error message.
+
-+2017-01-24 Eric Botcazou <ebotcazou@adacore.com>
++2019-09-05 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ * gcc.target/arm/vfp-longcall-apcs.c: New test.
++ PR fortran/91660
++ * gfortran.dg/pdt_4.f03: Fix invalid code.
++ * gfortran.dg/pr91660_1.f90: New test.
++ * gfortran.dg/pr91660_2.f90: Ditto.
+
-+2017-01-23 Martin Liska <mliska@suse.cz>
++2019-09-04 Wilco Dijkstra <wdijkstr@arm.com>
+
+ Backport from mainline
-+ 2016-01-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
++ 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
+
-+ * gcc.dg/lto/pr69188_0.c: Require profiling support for testcase.
++ PR target/81800
++ * gcc.target/aarch64/no-inline-lrint_3.c: New test.
+
-+2017-01-23 Martin Liska <mliska@suse.cz>
++2019-09-03 Jakub Jelinek <jakub@redhat.com>
+
-+ Backport from mainline
-+ 2017-01-20 Martin Liska <mliska@suse.cz>
-+
-+ PR lto/69188
-+ * gcc.dg/lto/pr69188_0.c: New test.
-+ * gcc.dg/lto/pr69188_1.c: New test.
-+
-+2017-01-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ PR tree-optimization/91597
++ * gcc.c-torture/execute/pr91597.c: New test.
+
-+ Backport from mainline
-+ 2017-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-09-02 Steven G. Kargl <kargl@gc.gnu.org>
+
-+ * gcc.target/powerpc/swaps-p8-27.c: New.
++ PR fortran/91552
++ * gfortran.dg/pr91552.f90: New test.
+
-+2017-01-20 Wilco Dijkstra <wdijkstr@arm.com>
++2019-09-02 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
-+ PR target/77455
-+ * gcc.target/aarch64/eh_return.c: New test.
++ 2019-09-02 Martin Liska <mliska@suse.cz>
+
-+2017-01-20 Marek Polacek <polacek@redhat.com>
++ PR c++/91155
++ * g++.dg/torture/pr91155.C: New test.
+
-+ Backported from mainline
-+ 2017-01-04 Marek Polacek <polacek@redhat.com>
++2019-09-01 Eric Botcazou <ebotcazou@adacore.com>
+
-+ PR c++/77545
-+ PR c++/77284
-+ * g++.dg/cpp0x/range-for32.C: New test.
-+ * g++.dg/cpp0x/range-for33.C: New test.
++ * gcc.c-torture/execute/20190901-1.c: New test.
+
-+2017-01-20 Richard Earnshaw <rearnsha@arm.com>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backported from mainline
-+ 2017-01-19 Richard Earnshaw <rearnsha@arm.com>
++ PR fortran/91587
++ * gfortran.dg/pr91587.f90: New test.
+
-+ PR rtl-optimization/79121
-+ * gcc.c-torture/execute/pr79121.c: New test.
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-01-20 Martin Liska <mliska@suse.cz>
++ PR fortran/91565
++ * gfortran.dg/pr91565.f90: New test.
+
-+ Backport from mainline
-+ 2017-01-13 Martin Liska <mliska@suse.cz>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR ipa/79043
-+ * gcc.c-torture/execute/pr79043.c: New test.
++ PR fortran/91564
++ * gfortran.dg/pr91564.f90: New test.
+
-+2017-01-20 Martin Liska <mliska@suse.cz>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from mainline
-+ 2017-01-17 Martin Liska <mliska@suse.cz>
++ PR fortran/91551
++ * gfortran.dg/allocated_3.f90
++
++2019-08-30 Segher Boessenkool <segher@kernel.crashing.org>
+
-+ PR ipa/71207
-+ * g++.dg/ipa/pr71207.C: New test.
++ Backport from trunk
++ 2019-08-23 Segher Boessenkool <segher@kernel.crashing.org>
+
-+2017-01-17 Jakub Jelinek <jakub@redhat.com>
++ PR target/91481
++ * gcc.target/powerpc/darn-3.c: New testcase.
+
-+ Backported from mainline
-+ 2017-01-11 Jakub Jelinek <jakub@redhat.com>
++2019-08-30 Richard Biener <rguenther@suse.de>
+
-+ PR c++/78341
-+ * g++.dg/cpp0x/pr78341.C: New test.
++ Backport from mainline
++ 2019-04-29 Richard Biener <rguenther@suse.de>
+
-+ PR middle-end/50199
-+ * gcc.dg/lto/pr50199_0.c: New test.
++ PR tree-optimization/90278
++ * gcc.dg/torture/pr90278.c: New testcase.
+
-+ 2017-01-04 Jakub Jelinek <jakub@redhat.com>
++2019-08-29 Richard Biener <rguenther@suse.de>
+
-+ PR c++/78949
-+ * c-c++-common/Wunused-var-16.c: New test.
++ PR tree-optimization/91568
++ * gfortran.dg/pr91568.f: New testcase.
+
-+ PR c++/78693
-+ * g++.dg/cpp0x/pr78693.C: New test.
++2019-08-28 Richard Biener <rguenther@suse.de>
+
-+ PR c++/71182
-+ * g++.dg/cpp0x/pr71182.C: New test.
++ Backport from mainline
++ 2019-05-27 Richard Biener <rguenther@suse.de>
+
-+ 2016-12-21 Jakub Jelinek <jakub@redhat.com>
++ PR tree-optimization/90637
++ * gcc.dg/gomp/pr90637.c: New testcase.
+
-+ PR fortran/78866
-+ * gfortran.dg/gomp/map-1.f90: Add expected error.
-+ * gfortran.dg/gomp/pr78866-1.f90: New test.
-+ * gfortran.dg/gomp/pr78866-2.f90: New test.
++2019-08-23 Mihailo Stojanovic <mistojanovic@wavecomp.com>
+
-+2017-01-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
++ * gcc.target/mips/get-fcsr-3.c: New test.
+
-+ Backport from mainline
-+ 2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
++2019-08-20 Eric Botcazou <ebotcazou@adacore.com>
+
-+ PR rtl-optimization/78617
-+ * gcc.c-torture/execute/pr78617.c: New test.
++ * gcc.c-torture/execute/20190820-1.c: New test.
+
-+2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++2019-08-18 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from mainline
-+ 2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++ PR fortran/91485
++ * gfortran.dg/pr91485.f90: New test.
+
-+ PR target/79044
-+ * gcc.target/powerpc/swaps-p8-26.c: New.
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-01-11 Nathan Sidwell <nathan@acm.org>
++ PR fortran/91471
++ * gfortran.dg/pr91471.f90: New test.
+
-+ PR c++/77812
-+ * g++.dg/pr77812.C: New.
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-01-10 Thomas Schwinge <thomas@codesourcery.com>
++ PR fortran/78739
++ * fortran.dg/pr78739.f90: New test.
+
-+ Backport from trunk r241334:
-+ 2016-10-19 Thomas Schwinge <thomas@codesourcery.com>
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR tree-optimization/78024
-+ * gcc.dg/goacc/loop-processing-1.c: New file.
++ PR fortran/78719
++ * gfortran.dg/pr78719_1.f90: New test.
++ * gfortran.dg/pr78719_2.f90: Ditto.
++ * gfortran.dg/pr78719_3.f90: Ditto.
+
-+2017-01-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from mainline
-+ 2016-12-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
++ PR fortran/82992
++ * gfortran.dg/pr71649.f90: Adjust error messages.
++ * gfortran.dg/use_15.f90: Ditto.
++ * gfortran.dg/use_rename_8.f90: Ditto.
+
-+ * gcc.target/arm/pr78255-2.c: Fix to work for targets
-+ that do not optimize for tailcall.
++2019-08-15 Richard Biener <rguenther@suse.de>
+
-+2017-01-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++ PR tree-optimization/91445
++ * gcc.dg/torture/pr91445.c: New testcase.
+
+ Backport from mainline
-+ 2016-12-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++ 2019-07-05 Richard Biener <rguenther@suse.de>
+
-+ PR rtl-optimization/78255
-+ * gcc.target/aarch64/pr78255.c: New.
-+ * gcc.target/arm/pr78255-1.c: New.
-+ * gcc.target/arm/pr78255-2.c: New.
++ PR tree-optimization/91091
++ * gcc.dg/tree-ssa/pr91091-2.c: New testcase.
+
-+2017-01-06 Wilco Dijkstra <wdijkstr@arm.com>
++2019-08-14 Martin Sebor <msebor@redhat.com>
+
+ Backport from mainline
-+ 2016-10-25 Wilco Dijkstra <wdijkstr@arm.com>
+
-+ PR target/78041
-+ * gcc.target/arm/pr78041.c: New test.
++ 2019-08-01 Martin Sebor <msebor@redhat.com>
+
-+2017-01-05 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++ PR c++/90947
++ * c-c++-common/array-1.c: New test.
++ * g++.dg/abi/mangle73.C: New test.
++ * g++.dg/cpp2a/nontype-class23.C: New test.
++ * g++.dg/init/array53.C: New test.
+
-+ Backport from mainline
-+ 2016-12-22 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++2019-08-14 Jonathan Wakely <jwakely@redhat.com>
+
-+ * gcc.target/s390/litpool-str-1.c: New test.
++ PR c++/91436
++ * g++.dg/lookup/missing-std-include-5.C: Limit test to C++14 and up.
++ * g++.dg/lookup/missing-std-include-6.C: Don't check make_unique in
++ test that runs for C++11.
++ * g++.dg/lookup/missing-std-include-8.C: Check make_unique here.
+
-+2017-01-04 Richard Biener <rguenther@suse.de>
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from mainline
-+ 2016-05-11 Richard Biener <rguenther@suse.de>
++ PR fortran/87991
++ * gfortran.dg/pr87991.f90: New test.
+
-+ PR tree-optimization/71055
-+ * gcc.dg/torture/pr71055.c: New testcase.
++2013-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
-+2017-01-03 Martin Liska <mliska@suse.cz>
++ Backport from trunk
++ PR fortran/90563
++ * gfortran.dg/do_subsript_5.f90: New test.
+
-+ Backport from mainline
-+ 2016-12-21 Martin Liska <mliska@suse.cz>
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR driver/78863
-+ * gcc.dg/spellcheck-options-13.c: New test.
++ PR fortran/88072
++ * gfortran.dg/pr88072.f90: New test.
++ * gfortran.dg/unlimited_polymorphic_28.f90: Fix error message.
+
-+2017-01-03 Martin Liska <mliska@suse.cz>
++2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
-+ Backport from mainline
-+ 2016-12-22 Martin Liska <mliska@suse.cz>
++ Backport from trunk
++ PR fortran/90561
++ * gfortran.dg/deferred_character_34.f90: New test.
+
-+ PR tree-optimization/78886
-+ * gcc.dg/tree-ssa/pr78886.c: New test.
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-01-03 Martin Liska <mliska@suse.cz>
++ PR fortran/89647
++ * gfortran.dg/pr89647.f90: New test.
+
-+ Backport from mainline
-+ 2016-12-13 Martin Liska <mliska@suse.cz>
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR tree-optimization/78428
-+ * gcc.dg/tree-ssa/pr78428.c: New test.
++ PR fortran/87993
++ * gfortran.dg/pr87993.f90: New test.
+
-+2016-12-22 Thomas Koenig <tkoenig@gcc.gnu.org>
++2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ PR fortran/78239
-+ * gfortran.dg/fimplicit_none_1.f90: New test.
-+ * gfortran.dg/fimplicit_none_2.f90: New test.
++ PR fortran/91424
++ * gfortran.dg/do_subscript_3.f90: New test.
++ * gfortran.dg/do_subscript_4.f90: New test.
++ * gfortran.dg/pr70754.f90: Use indices that to not overflow.
+
-+2016-12-21 Jakub Jelinek <jakub@redhat.com>
++2019-08-12 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR c/77767
-+ * gcc.c-torture/execute/pr77767.c: New test.
++ PR fortran/91359
++ * gfortran.dg/pr91359_1.f: New test.
++ * gfortran.dg/pr91359_2.f: Ditto.
+
-+ Backported from mainline
-+ 2016-12-13 Jakub Jelinek <jakub@redhat.com>
++2019-08-12 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/42546
++ * gfortran.dg/allocated_1.f90: New test.
++ * gfortran.dg/allocated_2.f90: Ditto.
+
-+ PR ipa/77905
-+ * g++.dg/ipa/pr77905.C: New test.
++2019-08-02 Tom Honermann <tom@honermann.net>
+
- 2016-12-21 Release Manager
++ PR c++/88095
++ * g++.dg/cpp2a/udlit-class-nttp-ctad.C: New test.
++ * g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C: New test.
++ * g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C: New test.
++ * g++.dg/cpp2a/udlit-class-nttp.C: New test.
++ * g++.dg/cpp2a/udlit-class-nttp-neg.C: New test.
++ * g++.dg/cpp2a/udlit-class-nttp-neg2.C: New test.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+@@ -427,7 +1241,7 @@
+ Backport from mainline.
+ 2019-05-15 Iain Sandoe <iain@sandoe.co.uk>
+
+- * lib/target-supports.exp
++ * lib/target-supports.exp
+ (check_effective_target_powerpc_p8vector_ok): No support for Darwin.
+ (check_effective_target_powerpc_p9vector_ok): Likewise.
+ (check_effective_target_powerpc_float128_sw_ok): Likewise.
+@@ -720,7 +1534,7 @@
- * GCC 6.3.0 released.
-@@ -46,8 +1114,8 @@
Backport from mainline
- 2016-11-07 Bernd Schmidt <bschmidt@redhat.com>
+ PR fortran/91077
+- * gfortran.dg/pointer_array_11.f90 : New test.
++ * gfortran.dg/pointer_array_11.f90: New test.
-- PR rtl-optimization/77309
-- * gcc.dg/torture/pr77309.c: New test.
-+ PR rtl-optimization/77309
-+ * gcc.dg/torture/pr77309.c: New test.
+ 2019-07-05 Szabolcs Nagy <szabolcs.nagy@arm.com>
- 2016-12-12 Thomas Preud'homme <thomas.preudhomme@arm.com>
+@@ -969,7 +1783,7 @@
+ * gcc.target/i386/pr82699-6.c: Likewise
+ * gcc.target/i386/returninst1.c: Likewise
+ * gcc.target/i386/returninst2.c: Likewise
+- * gcc.target/i386/returninst3.c : Likewise
++ * gcc.target/i386/returninst3.c: Likewise
-@@ -456,7 +1524,7 @@
- * g++.dg/torture/pr77822.C: New test.
+ 2019-05-30 Iain Sandoe <iain@sandoe.co.uk>
- 2016-11-20 Harald Anlauf <anlauf@gmx.de>
--
-+
- PR fortran/69741
- * gfortran.dg/forall_18.f90: New testcase.
+@@ -1131,7 +1945,7 @@
+
+ Backport from trunk
+ PR fortran/90498
+- * gfortran.dg/associate_48.f90 : New test.
++ * gfortran.dg/associate_48.f90: New test.
+
+ 2019-05-17 Jakub Jelinek <jakub@redhat.com>
+
+@@ -3801,21 +4615,21 @@
+ 2019-02-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/88117
+- * gfortran.dg/deferred_character_32.f90 : New test
++ * gfortran.dg/deferred_character_32.f90: New test
+
+ 2019-02-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/89385
+- * gfortran.dg/ISO_Fortran_binding_1.f90 : Correct test for
++ * gfortran.dg/ISO_Fortran_binding_1.f90: Correct test for
+ previously incorrect lbound for allocatable expressions. Also
+ correct stop values to avoid repetition.
+- * gfortran.dg/ISO_Fortran_binding_5.f90 : New test
+- * gfortran.dg/ISO_Fortran_binding_5.c : Support previous test.
++ * gfortran.dg/ISO_Fortran_binding_5.f90: New test
++ * gfortran.dg/ISO_Fortran_binding_5.c: Support previous test.
+
+ PR fortran/89366
+- * gfortran.dg/ISO_Fortran_binding_6.f90 : New test
+- * gfortran.dg/ISO_Fortran_binding_6.c : Support previous test.
+- * gfortran.dg/pr32599.f03 : Set standard to F2008.
++ * gfortran.dg/ISO_Fortran_binding_6.f90: New test
++ * gfortran.dg/ISO_Fortran_binding_6.c: Support previous test.
++ * gfortran.dg/pr32599.f03: Set standard to F2008.
+
+ 2019-02-22 David Malcolm <dmalcolm@redhat.com>
+
+@@ -4444,7 +5258,7 @@
+ 2019-02-09 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/89200
+- * gfortran.dg/array_reference_2.f90 : New test.
++ * gfortran.dg/array_reference_2.f90: New test.
+
+ 2019-02-09 Jakub Jelinek <jakub@redhat.com>
+
+@@ -4704,17 +5518,17 @@
+ 2019-02-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/88393
+- * gfortran.dg/alloc_comp_assign_16.f03 : New test.
++ * gfortran.dg/alloc_comp_assign_16.f03: New test.
-Index: gcc/testsuite/g++.dg/pr80222.C
+ 2019-02-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/88980
+- * gfortran.dg/realloc_on_assign_32.f90 : New test.
++ * gfortran.dg/realloc_on_assign_32.f90: New test.
+
+ 2019-02-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/88685
+- * gfortran.dg/pointer_array_component_3.f90 : New test.
++ * gfortran.dg/pointer_array_component_3.f90: New test.
+
+ 2019-02-02 Jakub Jelinek <jakub@redhat.com>
+
+Index: gcc/testsuite/g++.dg/lookup/missing-std-include-8.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/pr80222.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/pr80222.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,13 @@
-+// { dg-do compile }
-+// { dg-options "-O2 -fdump-tree-optimized" } */
-+
-+struct C { int i; }__attribute__((may_alias)) ;
-+
-+C a, b;
-+
-+int main()
+--- a/src/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C (.../branches/gcc-9-branch)
+@@ -13,6 +13,15 @@
+ // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
+ }
+
++template<class T>
++void test_make_unique ()
+{
-+ a = static_cast <C&> (b);
++ std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" }
++ // { dg-message "'std::make_unique' is only available from C\\+\\+14 onwards" "" { target *-*-* } .-1 }
++ // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 }
++ // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
+}
+
-+// { dg-final { scan-tree-dump "{ref-all}\\\)&b\];" "optimized" } } */
-Index: gcc/testsuite/g++.dg/opt/call3.C
+ void test_array ()
+ {
+ std::array a; // { dg-error "'array' is not a member of 'std'" }
+Index: gcc/testsuite/g++.dg/lookup/missing-std-include-5.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/call3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/call3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,33 @@
-+// { dg-do run }
-+// { dg-options "-O" }
+--- a/src/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C (.../branches/gcc-9-branch)
+@@ -1,2 +1,3 @@
++// { dg-do compile { target c++14 } }
+ using namespace std::complex_literals; // { dg-error "" }
+ // { dg-message "#include <complex>" "" { target *-*-* } .-1 }
+Index: gcc/testsuite/g++.dg/lookup/missing-std-include-6.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C (.../branches/gcc-9-branch)
+@@ -11,15 +11,6 @@
+ // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
+ }
+
+-template<class T>
+-void test_make_unique ()
+-{
+- auto p = std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" }
+- // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 }
+- // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 }
+- // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 }
+-}
+-
+ std::shared_ptr<int> test_shared_ptr; // { dg-error "'shared_ptr' in namespace 'std' does not name a template type" }
+ // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 }
+
+Index: gcc/testsuite/g++.dg/conversion/packed2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/conversion/packed2.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/conversion/packed2.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,15 @@
++// PR c++/91925
++// { dg-do compile { target c++11 } }
++// { dg-options "-fpack-struct" }
+
-+struct Foo
-+{
-+ Foo() : a(1), c('a') {}
-+ short int a;
-+ char c;
++struct A {};
++int foo (A);
++struct B {
++ A a;
++ decltype (foo (a)) p;
+};
-+
-+static Foo copy_foo(Foo) __attribute__((noinline, noclone));
-+
-+static Foo copy_foo(Foo A)
-+{
-+ return A;
-+}
-+
-+struct Bar : Foo
-+{
-+ Bar(Foo t) : Foo(copy_foo(t)) {}
++template <typename T> T bar (T);
++class C {
++ A a;
++ decltype (bar (a)) p;
+};
-+
-+Foo F;
-+
-+int main (void)
-+{
-+ Bar B (F);
-+
-+ if (B.a != 1 || B.c != 'a')
-+ __builtin_abort ();
-+
-+ return 0;
+Index: gcc/testsuite/g++.dg/lto/pr91572_0.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/lto/pr91572_0.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/lto/pr91572_0.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,12 @@
++// PR lto/91572
++// { dg-lto-do link }
++// { dg-lto-options { { -O -fPIC -flto } } }
++// { dg-require-effective-target shared }
++// { dg-require-effective-target fpic }
++// { dg-extra-ld-options "-shared" }
++
++void foo (char);
++namespace N {
++ class A { A (); };
++ A::A () { asm ("" : : "g" (0)); }
+}
-Index: gcc/testsuite/g++.dg/opt/pr80275.C
+Index: gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/pr80275.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/pr80275.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,16 @@
-+// { dg-do compile { target c++14 } }
-+// { dg-options "-O2 -fdump-tree-optimized" }
+--- a/src/gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
++// PR c++/87519 - bogus warning with -Wsign-conversion.
++// { dg-options "-Wsign-conversion" }
+
-+#include <algorithm>
++typedef unsigned long int uint64_t;
+
-+int g()
++void f(unsigned long int a, int q)
+{
-+ return 1234;
-+}
++ a += a + q; // { dg-warning "may change the sign" }
+
-+int f2()
-+{
-+ return std::min({1, g(), 4});
++ // Explicit cast should disable the warning.
++ a = a + static_cast<uint64_t>(q);
++ a = a + (uint64_t) q;
++ a = a + uint64_t(q);
++ a = a + static_cast<const uint64_t>(q);
++ a = a + (const uint64_t) q;
++ a = a + static_cast<unsigned long int>(q);
++ a = a + static_cast<const unsigned long int>(q);
+}
-+
-+// { dg-final { scan-tree-dump "return 1;" "optimized" } }
-Index: gcc/testsuite/g++.dg/opt/pr79396.C
+Index: gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/pr79396.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/pr79396.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,13 @@
-+// PR middle-end/79396
-+// { dg-do compile }
-+// { dg-options "-fnon-call-exceptions -O2" }
-+// { dg-additional-options "-mfma" { target i?86-*-* x86_64-*-* } }
-+
-+struct A { A (); ~A (); };
+--- a/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,5 @@
++// PR c++/90884
++// { dg-options "-Wctor-dtor-privacy" }
++// { dg-prune-output "In file included from" }
+
-+float
-+foo (float x)
-+{
-+ A a;
-+ return __builtin_pow (x, 2) + 2;
-+}
-Index: gcc/testsuite/g++.dg/opt/declone3.C
++#include "ctor-dtor-privacy-4.h" // { dg-bogus "is public" }
+Index: gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h
===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/declone3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/declone3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,16 @@
-+// PR c++/79176
-+// { dg-do compile { target c++11 } }
-+// { dg-options "-flto -Os" }
+--- a/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h (.../branches/gcc-9-branch)
+@@ -0,0 +1,7 @@
++#pragma GCC system_header
+
-+struct A {};
-+struct Object {
-+ virtual bool m_fn1();
-+ virtual ~Object();
++namespace std {
++struct __nonesuch {
++ __nonesuch(__nonesuch const &);
+};
-+struct Item : Object, virtual A {
-+ ~Item() {
-+ [] {};
-+ }
-+ bool m_fn1();
-+};
-+bool Item::m_fn1() {}
-Index: gcc/testsuite/g++.dg/opt/pr80385.C
++} // namespace std
+Index: gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/pr80385.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/pr80385.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
-+// PR rtl-optimization/80385
-+// { dg-do compile { target { i?86-*-* x86_64-*-* } } }
-+// { dg-options "-Ofast -msse2" }
-+
-+#include <x86intrin.h>
-+
-+__m128 a, e;
-+struct A { __m128 b; A (); A (__m128 x) : b(x) {} };
-+A operator+ (A, A);
-+A operator- (A) { __m128 c = -a; return c; }
-+A foo (A x) { __m128 d = x.b; return _mm_andnot_ps (d, e); }
-+struct B { A n[1]; };
-+void bar (B x) { A f = foo (x.n[0]); A g = f + A (); }
-+void baz () { B h; B i; A j; i.n[0] = -j; h = i; B k = h; bar (k); }
-Index: gcc/testsuite/g++.dg/opt/pr79267.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/pr79267.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/pr79267.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,69 @@
-+// PR tree-optimization/79267
+--- a/src/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,12 @@
+// { dg-do compile }
-+// { dg-options "-O3" }
-+
-+struct A { A (int); };
-+struct B
-+{
-+ virtual void av () = 0;
-+ void aw ();
-+ void h () { av (); aw (); }
-+};
-+template <class T> struct G : B
-+{
-+ T ba;
-+ G (int, T) : ba (0) {}
-+ void av () { ba (0); }
-+};
-+struct I
-+{
-+ B *bc;
-+ template <class j, class T> I (j, T) try { G<T> (0, 0); } catch (...) {}
-+ ~I () { bc->h (); }
-+};
-+template <class M> struct C { typedef M *i; };
-+template <class M> struct J
-+{
-+ J ();
-+ template <class O, class T> J (O, T p2) : be (0, p2) {}
-+ typename C<M>::i operator-> ();
-+ I be;
++// { dg-require-effective-target c++11 }
++// { dg-options "-g -fdebug-types-section" }
++class A {
++public:
++ A();
++ template <typename U> A(U);
+};
-+struct H : A { H () : A (0) {} };
-+struct D { J<int> d; void q (); };
-+template <typename = int> class bs;
-+int z;
-+
-+void
-+foo (int p1, int *, int)
-+{
-+ if (p1 == 0)
-+ throw H ();
-+}
++template <class> struct B { typedef A type; };
++template <class R, typename... Args>
++int Bind(R(Args...), typename B<Args>::type...) { return 0; }
++void KeepBufferRefs(A, A) { A a, b(Bind(KeepBufferRefs, a, b)); }
+Index: gcc/testsuite/g++.dg/pr92022.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/pr92022.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/pr92022.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++// { dg-do compile { target alpha*-*-* } }
++// { dg-options "-O1 -g -fno-var-tracking -mcpu=ev4 -mieee" }
+
-+D bar ();
-+template <typename T> struct L
-+{
-+ struct K { K (int); void operator() (int *) { bar ().q (); } };
-+ static J<T> bp () { bq (0); }
-+ template <typename br> static void bq (br) { J<T> (0, K (0)); }
-+};
-+struct F
-+{
-+ virtual J<int> x (int) { foo (0, 0, 0); J<bs<> > (L<bs<> >::bp ()); }
++struct a {
++ a(long);
+};
-+
-+void
-+baz ()
-+{
-+ if (z)
-+ {
-+ J<F> d, e;
-+ d->x (0);
-+ e->x (0);
-+ }
-+ J<F> v, i, j;
-+ v->x (0);
-+ i->x (0);
-+ j->x (0);
-+}
-Index: gcc/testsuite/g++.dg/opt/call2.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/opt/call2.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/opt/call2.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,34 @@
++long b;
++void c() {
++ a d(1);
++ double e = b;
++ for (; b;)
++ d = e;
++}
+Index: gcc/testsuite/g++.dg/opt/pr91351.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/opt/pr91351.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/opt/pr91351.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,38 @@
++// PR tree-optimization/91351
+// { dg-do run }
-+// { dg-options "-O" }
++// { dg-options "-O2 -fstrict-enums" }
+
-+struct Foo
-+{
-+ Foo() : a(1), b(1), c('a') {}
-+ int a;
-+ int b;
-+ char c;
-+};
-+
-+static Foo copy_foo(Foo) __attribute__((noinline, noclone));
++enum E { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12,
++ e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25 };
+
-+static Foo copy_foo(Foo A)
-+{
-+ return A;
-+}
-+
-+struct Bar : Foo
-+{
-+ Bar(Foo t) : Foo(copy_foo(t)) {}
-+};
-+
-+Foo F;
-+
-+int main (void)
++__attribute__((noipa)) void
++foo ()
+{
-+ Bar B (F);
-+
-+ if (B.a != 1 || B.b != 1 || B.c != 'a')
-+ __builtin_abort ();
-+
-+ return 0;
-+}
-Index: gcc/testsuite/g++.dg/pr71294.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/pr71294.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/pr71294.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,60 @@
-+// { dg-do compile { target { powerpc64*-*-* && lp64 } } }
-+// { dg-require-effective-target powerpc_p8vector_ok } */
-+// { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } }
-+// { dg-options "-mcpu=power8 -O3 -fstack-protector -mno-lra" }
-+
-+// PAR target/71294 failed because RELOAD could not figure how create a V2DI
-+// vector that auto vectorization created with each element being the same
-+// stack address, with stack-protector turned on.
-+
-+class A;
-+template <typename _Tp, int m, int n> class B {
-+public:
-+ _Tp val[m * n];
-+};
-+class C {
-+public:
-+ C(A);
-+};
-+struct D {
-+ D();
-+ unsigned long &operator[](int);
-+ unsigned long *p;
-+};
-+class A {
-+public:
-+ template <typename _Tp, int m, int n> A(const B<_Tp, m, n> &, bool);
-+ int rows, cols;
-+ unsigned char *data;
-+ unsigned char *datastart;
-+ unsigned char *dataend;
-+ unsigned char *datalimit;
-+ D step;
-+};
-+template <typename _Tp, int m, int n>
-+A::A(const B<_Tp, m, n> &p1, bool)
-+ : rows(m), cols(n) {
-+ step[0] = cols * sizeof(_Tp);
-+ datastart = data = (unsigned char *)p1.val;
-+ datalimit = dataend = datastart + rows * step[0];
-+}
-+class F {
-+public:
-+ static void compute(C);
-+ template <typename _Tp, int m, int n, int nm>
-+ static void compute(const B<_Tp, m, n> &, B<_Tp, nm, 1> &, B<_Tp, m, nm> &,
-+ B<_Tp, n, nm> &);
-+};
-+D::D() {}
-+unsigned long &D::operator[](int p1) { return p[p1]; }
-+template <typename _Tp, int m, int n, int nm>
-+void F::compute(const B<_Tp, m, n> &, B<_Tp, nm, 1> &, B<_Tp, m, nm> &,
-+ B<_Tp, n, nm> &p4) {
-+ A a(p4, false);
-+ compute(a);
-+}
-+void fn1() {
-+ B<double, 4, 4> b, c, e;
-+ B<double, 4, 1> d;
-+ F::compute(b, d, c, e);
++ __builtin_abort ();
+}
-Index: gcc/testsuite/g++.dg/ubsan/pr80349.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ubsan/pr80349.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ubsan/pr80349.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,11 @@
-+// PR sanitizer/80349
-+// { dg-do compile }
-+// { dg-options "-fsanitize=undefined" }
-+
-+extern const long long int v;
+
-+void
-+foo ()
++__attribute__((noipa)) void
++bar ()
+{
-+ (int)((v & 50 | 051UL) << 0) << 0;
+}
-Index: gcc/testsuite/g++.dg/ubsan/null-8.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ubsan/null-8.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ubsan/null-8.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+// PR c++/79572
-+// { dg-do run }
-+// { dg-options "-fsanitize=null -std=c++14" }
-+// { dg-output "reference binding to null pointer of type 'const int'" }
+
-+void
-+foo (const int &iref)
++__attribute__((noipa)) void
++baz (E e)
+{
-+ if (&iref)
-+ __builtin_printf ("iref %d\n", iref);
-+ else
-+ __builtin_printf ("iref is NULL\n");
++ switch (e)
++ {
++ case e11:
++ case e12:
++ case e13: foo (); break;
++ case e24: break;
++ case e14:
++ case e15: break;
++ default: bar (); break;
++ }
+}
+
+int
+main ()
+{
-+ foo (*((int*) __null));
++ baz (e3);
+}
-Index: gcc/testsuite/g++.dg/parse/ptrmem7.C
+Index: gcc/testsuite/g++.dg/opt/pr92007.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/parse/ptrmem7.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/parse/ptrmem7.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,16 @@
-+// PR c++/80043
-+// { dg-options -fpermissive }
-+
-+struct A
-+{
-+ template<int> void foo()
-+ {
-+ void (A::* fp)();
-+ fp = A::foo<0>; // { dg-warning "assuming pointer to member" }
-+ }
-+};
-+
-+void bar()
-+{
-+ A().foo<0>();
-+}
-Index: gcc/testsuite/g++.dg/pr77812.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/pr77812.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/pr77812.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+// PR77812
-+// struct-stat hack failure when first overload is a template
-+
-+enum f {};
-+
-+template <typename>
-+void f ()
-+{
-+}
-+enum f F;
-+
-+struct g {};
-+
-+template <typename>
-+void g ()
-+{
-+}
-+struct g G;
-Index: gcc/testsuite/g++.dg/cpp0x/pr78693.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/pr78693.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/pr78693.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,31 @@
-+// PR c++/78693
-+// { dg-do compile { target c++11 } }
+--- a/src/gcc/testsuite/g++.dg/opt/pr92007.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/opt/pr92007.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,32 @@
++// PR rtl-optimization/92007
++// { dg-do compile }
++// { dg-options "-O2 -fno-tree-dominator-opts -fno-tree-forwprop --param max-cse-insns=0 -Wno-return-type -std=gnu++98 -freorder-blocks-and-partition" }
+
-+template <class T>
+void
-+foo (T t)
-+{
-+ auto i = t, j = 1; // { dg-bogus "inconsistent deduction" }
-+}
++sb (int *);
+
-+template <class T>
-+void
-+bar (T t)
-+{
-+ auto i = 1, j = t, k = 2; // { dg-bogus "inconsistent deduction" }
-+}
++class d4 {
++public:
++ ~d4();
++ void gb ();
++ int op () { return no; }
++ int wl () { return tf; }
++ bool ee () try { gb (); } catch (...) { return false; }
++ bool b1 () { return (tf == no) ? false : ee (); }
+
-+template <class T, class U>
-+void
-+foo (T t, U u)
-+{
-+ auto i = t, j = u; // { dg-bogus "inconsistent deduction" }
-+}
++private:
++ int no, tf;
++};
+
+void
-+foo ()
++hs (int *v9)
+{
-+ foo (0);
-+ bar (0);
-+ foo (1, 2);
-+}
-Index: gcc/testsuite/g++.dg/cpp0x/pr78341.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/pr78341.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/pr78341.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,4 @@
-+// PR c++/78341
-+// { dg-do compile { target c++11 } }
-+
-+alignas (alignas double // { dg-error "" }
-Index: gcc/testsuite/g++.dg/cpp0x/pr71182.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/pr71182.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/pr71182.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+// PR c++/71182
-+// { dg-do compile { target c++11 } }
++ d4 p6;
+
-+class A {
-+ template <typename> void As();
-+};
-+template <typename T> class B : A {
-+ void f() {
-+ A *g ;
-+ g ? g->As<T>() : nullptr;
-+ }
-+};
-Index: gcc/testsuite/g++.dg/cpp0x/nsdmi13.C
++ p6.gb ();
++ if (p6.op () > p6.wl ())
++ {
++ p6.b1 ();
++ sb (v9);
++ }
++}
+Index: gcc/testsuite/g++.dg/parse/operator8.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/nsdmi13.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/nsdmi13.C (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/g++.dg/parse/operator8.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/parse/operator8.C (.../branches/gcc-9-branch)
@@ -0,0 +1,13 @@
-+// PR c++/79796
-+// { dg-do compile { target c++11 } }
++// PR c++/91521 - wrong error with operator->.
++// { dg-do compile }
+
-+struct A
-+{
-+ A* p = this;
++struct foo {
++ int bar() { return 0; }
++ foo* operator->() { return this; }
+};
+
-+void foo()
++int main()
+{
-+ A a;
-+ a = A({});
++ int pt(foo()->bar());
++ return pt;
+}
-Index: gcc/testsuite/g++.dg/cpp0x/range-for32.C
+Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic9.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/range-for32.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for32.C (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic9.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic9.C (.../branches/gcc-9-branch)
@@ -0,0 +1,16 @@
-+// PR c++/77545
++// PR c++/90538
+// { dg-do compile { target c++11 } }
-+// { dg-options "-Wno-pedantic" }
+
-+template < typename T > struct A
++template <class... Ts>
++void f(Ts... ts)
+{
-+ A ();
-+ ~A ();
-+ T t;
-+};
++ [=]{
++ f(ts...);
++ f(ts...);
++ }();
++}
+
-+void f (A < int > a)
++void g()
+{
-+ for (auto x : (A<int>[]) { a })
-+ ;
++ f(1);
+}
-Index: gcc/testsuite/g++.dg/cpp0x/range-for34.C
+Index: gcc/testsuite/g++.dg/cpp0x/gen-attrs-68.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/range-for34.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for34.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,16 @@
-+// PR c++/79566
+--- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-68.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-68.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,40 @@
++// PR c++/81429 - wrong parsing of constructor with C++11 attribute.
+// { dg-do compile { target c++11 } }
++// { dg-additional-options "-Wunused-parameter -Wno-pedantic" }
+
-+struct X {
-+ struct Y { };
++void fn1([[maybe_unused]] int a) { }
++void fn2(int a [[maybe_unused]]) { }
++void fn3(__attribute__((unused)) int a) { }
++void fn4(int a __attribute__((unused))) { }
+
-+ Y* begin();
-+ Y* end();
++struct S1 {
++ S1([[maybe_unused]] int a) { }
+};
+
-+void f()
-+{
-+ X x;
-+ for (struct X::Y& y : x)
-+ ;
-+}
-Index: gcc/testsuite/g++.dg/cpp0x/pr79296.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/pr79296.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/pr79296.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+// { dg-require-effective-target lto }
-+// { dg-additional-options "-flto" }
-+// { dg-do compile { target c++11 } }
++struct S2 {
++ S2([[maybe_unused]] int f, [[maybe_unused]] int a) { }
++};
+
-+// PR 79296 ICE mangling local class of localized instantiation
++struct S3 {
++ S3(int a [[maybe_unused]]) { }
++};
+
-+struct X {
-+ template <typename T> X (T const *) {
-+ struct Z {};
-+ }
++struct S4 {
++ S4(int f [[maybe_unused]], int a [[maybe_unused]]) { }
+};
+
-+void Baz ()
-+{
-+ struct Y { } y;
++struct S5 {
++ S5(__attribute__((unused)) int a) { }
++};
+
-+ 0, X (&y);
-+}
-Index: gcc/testsuite/g++.dg/cpp0x/pr80091.C
++struct S6 {
++ S6(__attribute__((unused)) int f, __attribute__((unused)) int a) { }
++};
++
++struct S7 {
++ S7(int a __attribute__((unused))) { }
++};
++
++struct S8 {
++ S8(int f __attribute__((unused)), int a __attribute__((unused))) { }
++};
+Index: gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/pr80091.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/pr80091.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
+--- a/src/gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,23 @@
++// PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
+// { dg-do compile { target c++11 } }
++// { dg-options "-Wconversion" }
+
-+// PR 80091 ICE with member fn call from lambda in template
++struct B;
+
+struct A {
-+ void m_fn1();
++ operator B();
+};
-+template <int> struct B : A {
-+ void m_fn2() {
-+ [&] { m_fn1(); };
-+ }
++
++struct B {
++ B(A const &rs);
++ B(B const &rs);
+};
-Index: gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C
++
++B
++f (A x)
++{
++ // C++14: we call B::B(A const &)
++ // C++17: we call A::operator B()
++ return B(x); // { dg-warning "choosing .A::operator B\\(\\). over .B::B\\(const A&\\)" "" { target c++17 } }
++ // { dg-warning "for conversion from .A. to .B." "" { target c++17 } .-1 }
++}
+Index: gcc/testsuite/g++.dg/cpp0x/nontype5.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
-+// PR c++/80150
+--- a/src/gcc/testsuite/g++.dg/cpp0x/nontype5.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/nontype5.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++// PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17.
+// { dg-do compile { target c++11 } }
+
-+template <typename R, typename... Args>
-+bool compare_functions(R(*funcA)(Args...), R(*funcB)(Args...), Args... args) {
-+ return false;
++template<typename T>
++constexpr bool is_integral_(...) {
++ return false;
+}
-+
-+int foo(int x) {
-+ return x;
++template<typename T, T = 1>
++constexpr bool is_integral_(long) {
++ return true;
+}
+
-+float foo(float x) {
-+ return x;
-+}
++static_assert(is_integral_<int>(42), "");
++static_assert(!is_integral_<void>(42), "");
+
-+int main() {
-+ int a = 10;
-+ compare_functions<int>(foo, foo, a);
-+}
-Index: gcc/testsuite/g++.dg/cpp0x/range-for33.C
++struct S {};
++static_assert(!is_integral_<S>(42), "");
+Index: gcc/testsuite/g++.dg/cpp0x/constexpr-odr1.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/range-for33.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for33.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
-+// PR c++/77284
-+// { dg-do compile { target c++11 } }
-+
-+#include <initializer_list>
+--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr1.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr1.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
++// PR c++/92062 - ODR-use ignored for static member of class template.
++// { dg-do run { target c++11 } }
+
-+struct A
-+{
-+ ~A () {}
++template<int> struct A {
++ static const bool x;
++ static_assert(&x, ""); // odr-uses A<...>::x
+};
+
-+void foo (A & v)
++int g;
++
++template<int I>
++const bool A<I>::x = (g = 42, false);
++
++void f(A<0>) {} // A<0> must be complete, so is instantiated
++int main()
+{
-+ for (A a : { v }) {};
++ if (g != 42)
++ __builtin_abort ();
+}
-Index: gcc/testsuite/g++.dg/cpp0x/deleted13.C
+Index: gcc/testsuite/g++.dg/cpp0x/gen-attrs-69.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp0x/deleted13.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp0x/deleted13.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+// PR c++/79519
+--- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-69.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-69.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,40 @@
++// PR c++/81429 - wrong parsing of constructor with C++11 attribute.
+// { dg-do compile { target c++11 } }
++// { dg-additional-options "-Wno-pedantic" }
+
-+struct A
-+{
-+ template<typename> void foo();
-+};
++void fn1([[maybe_unused]] int);
++void fn2(int a [[maybe_unused]]);
++void fn3(__attribute__((unused)) int);
++void fn4(int __attribute__((unused)));
+
-+struct B
-+{
-+ template<typename> friend void A::foo() = delete; // { dg-error "" }
++struct S1 {
++ S1([[maybe_unused]] int);
+};
-Index: gcc/testsuite/g++.dg/torture/pr79034.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/torture/pr79034.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/torture/pr79034.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,52 @@
-+/* { dg-do compile } */
-+
-+extern "C" {
-+ float sqrtf(float);
-+}
+
-+class T {
-+public:
-+ float floats[1];
-+
-+ inline float length() const {
-+ return sqrtf(floats[0]);
-+ }
++struct S2 {
++ S2([[maybe_unused]] int, [[maybe_unused]] int);
+};
+
-+void destruct(void *);
++struct S3 {
++ S3(int a [[maybe_unused]]);
++};
+
-+class Container {
++struct S4 {
++ S4(int a [[maybe_unused]], int b [[maybe_unused]]);
++};
+
-+ T Ts[1];
++struct S5 {
++ S5(__attribute__((unused)) int);
++};
+
-+public:
-+ ~Container() {
-+ destruct((void *)Ts);
-+ }
++struct S6 {
++ S6(__attribute__((unused)) int, __attribute__((unused)) int);
++};
+
-+ T& operator[](int n) {
-+ return Ts[0];
-+ }
++struct S7 {
++ S7(int __attribute__((unused)));
+};
+
-+void fill(Container&);
++struct S8 {
++ S8(int __attribute__((unused)), int __attribute__((unused)));
++};
+Index: gcc/testsuite/g++.dg/cpp0x/nullptr42.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/nullptr42.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/nullptr42.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
++// PR c++/90473 - wrong code with nullptr in default argument.
++// { dg-do run { target c++11 } }
+
-+void doit()
-+{
-+ Container data;
-+ float max = 10;
++int g;
++void f() { g++; }
+
-+ int i, j, k;
++void fn1 (void* p = (f(), nullptr)) { }
++void fn2 (int p = (f(), 0)) { }
+
-+ for (i = 0; i < 10; i++) {
-+ for (j = 1; j < 10; j++) {
-+ if (max < 5)
-+ break;
-+ fill( data);
-+ max = data[0].length();
-+ for (k = 1; k < j; k++) {
-+ max = 5;
-+ }
-+ }
-+ }
++int main()
++{
++ fn1 ();
++ if (g != 1)
++ __builtin_abort ();
++ fn2 ();
++ if (g != 2)
++ __builtin_abort ();
+}
-Index: gcc/testsuite/g++.dg/torture/pr80171.C
+Index: gcc/testsuite/g++.dg/cpp0x/constexpr-odr2.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/torture/pr80171.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/torture/pr80171.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,183 @@
-+// { dg-do compile }
+--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr2.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr2.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
++// PR c++/92062 - ODR-use ignored for static member of class template.
++// { dg-do run { target c++11 } }
+
-+template <typename> struct remove_reference;
-+template <typename _Tp> struct remove_reference<_Tp &> { typedef _Tp type; };
-+template <typename _Tp> typename remove_reference<_Tp>::type move(_Tp &&p1) {
-+ return static_cast<typename remove_reference<_Tp>::type &&>(p1);
-+}
-+void *operator new(__SIZE_TYPE__, void *p2) { return p2; }
-+struct Trans_NS__v1_GenericTlv {
-+ virtual int getMinimumValueLength();
-+ virtual unsigned long getValueLength() const;
-+};
-+struct IPv4NeighborAddressSubTlv;
-+struct Trans_NS__v1_GenericTlvBase : Trans_NS__v1_GenericTlv {
-+ virtual bool operator==(const IPv4NeighborAddressSubTlv &) const;
-+};
-+struct Trans_NS__v1_GenericUnsupportedTlv;
-+template <typename> struct backup_holder {
-+ Trans_NS__v1_GenericUnsupportedTlv *backup_;
-+ Trans_NS__v1_GenericUnsupportedTlv &get() { return *backup_; }
-+};
-+template <typename> struct make_reference_content {
-+ typedef IPv4NeighborAddressSubTlv type;
-+};
-+template <typename> struct unwrap_recursive {
-+ typedef IPv4NeighborAddressSubTlv type;
-+};
-+template <typename> struct begin_impl;
-+template <typename Sequence> struct begin {
-+ typedef typename Sequence::tag tag_;
-+ typedef typename begin_impl<tag_>::template apply<Sequence>::type type;
-+};
-+struct long_ {
-+ static const int value = 0;
-+};
-+template <typename> struct O1_size_impl;
-+template <typename Sequence>
-+struct O1_size
-+ : O1_size_impl<typename Sequence::tag>::template apply<Sequence> {};
-+template <typename F, typename T2>
-+struct apply_wrap2 : F::template apply<int, T2> {};
-+template <int, typename, typename> struct iter_fold_impl;
-+template <typename First, typename ForwardOp>
-+struct iter_fold_impl<0, First, ForwardOp> {
-+ typedef typename apply_wrap2<ForwardOp, First>::type state;
-+};
-+template <typename Sequence, typename ForwardOp> struct iter_fold {
-+ typedef
-+ typename iter_fold_impl<O1_size<Sequence>::value,
-+ typename begin<Sequence>::type, ForwardOp>::state
-+ type;
-+};
-+template <typename> struct deref;
-+template <typename T1> struct pair { typedef T1 first; };
-+struct make_initializer_node {
-+ template <typename, typename Iterator> struct apply {
-+ struct initializer_node {
-+ typedef typename deref<Iterator>::type recursive_enabled_T;
-+ static int
-+ initialize(void *p1,
-+ typename unwrap_recursive<recursive_enabled_T>::type) {
-+ new (p1) typename make_reference_content<recursive_enabled_T>::type;
-+ }
-+ };
-+ typedef pair<initializer_node> type;
-+ };
-+};
-+struct l_item {
-+ typedef int tag;
-+ typedef l_item type;
-+ typedef long_ size;
-+ typedef int item;
-+};
-+template <> struct O1_size_impl<int> {
-+ template <typename List> struct apply : List::size {};
-+};
-+template <typename> struct l_iter;
-+template <typename Node> struct deref<l_iter<Node>> {
-+ typedef typename Node::item type;
-+};
-+template <> struct begin_impl<int> {
-+ template <typename List> struct apply {
-+ typedef l_iter<typename List::type> type;
-+ };
-+};
-+template <typename, typename, typename, typename, typename, typename, typename>
-+struct list : l_item {};
-+template <typename... T> struct make_variant_list { typedef list<T...> type; };
-+template <typename T> T cast_storage(void *p1) { return *static_cast<T *>(p1); }
-+struct visitation_impl_step {
-+ typedef Trans_NS__v1_GenericUnsupportedTlv type;
-+};
-+template <typename Visitor, typename VoidPtrCV, typename T>
-+void visitation_impl_invoke_impl(Visitor p1, VoidPtrCV p2, T *) {
-+ backup_holder<Trans_NS__v1_GenericUnsupportedTlv> __trans_tmp_8 =
-+ cast_storage<backup_holder<T>>(p2);
-+ p1.internal_visit(__trans_tmp_8, 0);
-+}
-+template <typename Visitor, typename VoidPtrCV, typename T,
-+ typename NoBackupFlag>
-+void visitation_impl_invoke(Visitor p1, VoidPtrCV p2, T p3, NoBackupFlag) {
-+ visitation_impl_invoke_impl(p1, p2, p3);
-+}
-+template <typename Which, typename step0, typename Visitor, typename VoidPtrCV,
-+ typename NoBackupFlag>
-+void visitation_impl(Visitor p1, VoidPtrCV p2, NoBackupFlag, Which, step0 *) {
-+ visitation_impl_invoke(p1, p2, static_cast<typename step0::type *>(0), 0);
-+}
-+struct move_into {
-+ move_into(void *);
-+ template <typename T> void internal_visit(backup_holder<T> p1, int) {
-+ T __trans_tmp_2 = p1.get();
-+ new (0) T(__trans_tmp_2);
-+ }
-+};
-+template <typename, typename... TN> struct variant {
-+ struct initializer : iter_fold<typename make_variant_list<int, TN...>::type,
-+ make_initializer_node>::type::first {};
-+ template <typename T> void convert_construct(T p1, int) {
-+ void *__trans_tmp_9 = this;
-+ initializer::initialize(__trans_tmp_9, p1);
-+ }
-+ template <typename T> variant(T p1) { convert_construct(p1, 0); }
-+ variant(variant &&p1) {
-+ move_into visitor(0);
-+ p1.internal_apply_visitor(visitor);
-+ }
-+ template <typename Visitor> void internal_apply_visitor(Visitor p1) {
-+ void *__trans_tmp_10 = this;
-+ visitation_impl(p1, __trans_tmp_10, 0, 0,
-+ static_cast<visitation_impl_step *>(0));
-+ }
-+};
-+template <class...> struct generic_element_tlvs;
-+template <typename TlvConfig, class UnsupportedTlvClass, class TlvF,
-+ class... TlvR>
-+struct generic_element_tlvs<TlvConfig, UnsupportedTlvClass, TlvF, TlvR...> {
-+ typedef variant<UnsupportedTlvClass, TlvF, TlvR...> variant_type;
-+};
-+template <typename, typename> struct Trans_NS__v1_GenericTlvContainer {
-+ template <class TlvClass> void addTlv(const TlvClass &);
-+};
-+template <typename TlvConfig, typename ElementTlvs>
-+template <class TlvClass>
-+void Trans_NS__v1_GenericTlvContainer<TlvConfig, ElementTlvs>::addTlv(
-+ const TlvClass &p1) {
-+ typename ElementTlvs::variant_type wrap(p1);
-+ move(wrap);
-+}
-+template <typename ElementTlvs>
-+struct Trans_NS__v1_GenericContainerEntryBase
-+ : Trans_NS__v1_GenericTlvContainer<int, ElementTlvs> {};
-+template <class>
-+struct Trans_NS__v1_GenericFixedLengthTlvBase : Trans_NS__v1_GenericTlvBase {
-+ unsigned long getValueLength() const;
-+};
-+struct Trans_NS__v1_GenericUnsupportedTlv : Trans_NS__v1_GenericTlv {
-+ long getHeaderLengthconst;
++template<int> struct A {
++ static const bool x;
++ enum { force_instantiation =! &x}; // odr-uses A<...>::x
+};
-+using isis_tlv_config = int;
-+template <class... TlvClasses>
-+using isis_element_tlvs =
-+ generic_element_tlvs<isis_tlv_config, Trans_NS__v1_GenericUnsupportedTlv,
-+ TlvClasses...>;
-+template <int, class, typename ElementTlvs>
-+using ContainerEntryBase = Trans_NS__v1_GenericContainerEntryBase<ElementTlvs>;
-+template <int, class ImplClass, int>
-+using FixedLengthTlvBase = Trans_NS__v1_GenericFixedLengthTlvBase<ImplClass>;
-+struct IPv4NeighborAddressSubTlv
-+ : FixedLengthTlvBase<0, IPv4NeighborAddressSubTlv, 0> {
-+ bool operator==(const IPv4NeighborAddressSubTlv &) const;
-+};
-+void test() {
-+ ContainerEntryBase<
-+ 0, int,
-+ isis_element_tlvs<
-+ FixedLengthTlvBase<0, int, 0>, FixedLengthTlvBase<0, int, 0>,
-+ IPv4NeighborAddressSubTlv, FixedLengthTlvBase<0, int, 0>,
-+ FixedLengthTlvBase<0, int, 0>, FixedLengthTlvBase<0, int, 0>>>
-+ isEntry;
-+ IPv4NeighborAddressSubTlv nbAddressSubTlv;
-+ isEntry.addTlv(nbAddressSubTlv);
-+}
-Index: gcc/testsuite/g++.dg/torture/pr80129.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/torture/pr80129.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/torture/pr80129.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
-+// PR c++/80129
-+// { dg-do run }
-+// { dg-options "-std=c++11" }
+
-+struct A { bool a; int b; };
++int g;
+
-+int
-+main ()
++template<int I>
++const bool A<I>::x = (g = 42, false);
++
++void f(A<0>) {} // A<0> must be complete, so is instantiated
++int main()
+{
-+ bool c = false;
-+ const A x = c ? A {true, 1} : A {false, 0};
-+ if (x.a)
++ if (g != 42)
+ __builtin_abort ();
+}
-Index: gcc/testsuite/g++.dg/torture/pr80334.C
+Index: gcc/testsuite/g++.dg/cpp0x/range-for19.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/torture/pr80334.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/torture/pr80334.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+// { dg-do run }
+--- a/src/gcc/testsuite/g++.dg/cpp0x/range-for19.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for19.C (.../branches/gcc-9-branch)
+@@ -5,6 +5,6 @@
+ int main()
+ {
+ auto a; // { dg-error "no initializer" }
+- for(auto i: a) // { dg-error "deduce" }
++ for(auto i: a)
+ ;
+ }
+Index: gcc/testsuite/g++.dg/cpp0x/constexpr-92015.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-92015.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-92015.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,7 @@
++// PR c++/92015
++// { dg-do compile { target c++11 } }
+
-+struct A { alignas(16) char c; };
-+struct B { A unpacked; char d; } __attribute__((packed));
++struct S1 { char c[6] {'h', 'e', 'l', 'l', 'o', 0}; };
++struct S2 { char c[6] = "hello"; };
++static_assert (S1{}.c[0] == 'h', "");
++static_assert (S2{}.c[0] == 'h', "");
+Index: gcc/testsuite/g++.dg/torture/pr91155.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/torture/pr91155.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/torture/pr91155.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
++/* PR c++/91155. */
+
-+char x;
++template< char C > struct dummy {};
+
-+int
-+main()
++template< typename T > const char *test()
+{
-+ alignas(__BIGGEST_ALIGNMENT__) B b[3];
-+ for (int i = 0; i < 3; i++) b[i].unpacked.c = 'a' + i;
-+ for (int i = 0; i < 3; i++)
-+ {
-+ auto a = new A(b[i].unpacked);
-+ x = a->c;
-+ }
++ __builtin_printf ("test: %s\n", __PRETTY_FUNCTION__);
++ return __PRETTY_FUNCTION__;
+}
-Index: gcc/testsuite/g++.dg/torture/pr80075.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/torture/pr80075.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/torture/pr80075.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,27 @@
-+// { dg-do compile }
-+// { dg-additional-options "-fnon-call-exceptions" }
+
-+struct s {
-+ int i;
-+};
-+
-+extern int use_memcpy;
-+extern void my_memcpy(void*, void*, int);
-+
-+int
-+f (struct s* p)
++int main()
+{
-+ struct s a;
-+
-+ try
-+ {
-+ a = (struct s){};
-+ if (!use_memcpy)
-+ *p = a;
-+ else
-+ my_memcpy (p, &a, sizeof (struct s));
-+ } catch (...) {
-+ return 0;
-+ }
-+ return 1;
++ if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\000\'>]", test< dummy< '\0' > > ()) != 0)
++ {};// __builtin_abort ();
++ if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\\'\'>]", test< dummy< '\'' > > ()) != 0)
++ {};// __builtin_abort ();
++ return 0;
+}
-Index: gcc/testsuite/g++.dg/torture/pr80297.C
+Index: gcc/testsuite/g++.dg/torture/pr92384.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/torture/pr80297.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/torture/pr80297.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+// PR c++/80297
-+// { dg-do compile }
+--- a/src/gcc/testsuite/g++.dg/torture/pr92384.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/torture/pr92384.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,38 @@
++// PR c++/92384
++// { dg-do run }
+
-+extern const unsigned long int b;
-+extern const long long int c;
++struct S {};
++struct T : public S { S a, b, c, d, e, f, g, h, i, j, k, l, m; };
++struct U { long long a, b, c; };
+
-+int
-+foo ()
++U
++foo (S, S, S, T, T, T, U g)
+{
-+ int a = 809 >> -(b & !c) + b - (long long)(b & !c);
-+ return a;
++ return g;
+}
-Index: gcc/testsuite/g++.dg/ipa/pr77905.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ipa/pr77905.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ipa/pr77905.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+// PR ipa/77905
-+// { dg-do compile }
-+// { dg-options "-O2" }
+
-+struct A {
-+ A(int);
-+};
-+struct B : A {
-+ B();
-+} A;
-+struct C : virtual A {
-+ C(int);
-+};
-+A::A(int x) {
-+ if (x)
-+ A(0);
++__attribute__((noipa)) bool
++bar (S a, S b, S c, T d, T e, T f, U g, void **h)
++{
++ h[0] = (void *) &a;
++ h[1] = (void *) &b;
++ h[2] = (void *) &c;
++ h[3] = (void *) &d;
++ h[4] = (void *) &e;
++ h[5] = (void *) &f;
++ h[6] = (void *) &g;
++ asm volatile ("" : : "r" (h) : "memory");
++ return (h[0] != h[1] && h[1] != h[2] && h[2] != h[3]
++ && h[3] != h[4] && h[4] != h[5] && h[5] != h[6]);
+}
+
-+B::B() : A(1) {}
-+
-+C::C(int) : A(1) {}
-Index: gcc/testsuite/g++.dg/ipa/pr71207.C
++int
++main ()
++{
++ S a;
++ T b;
++ U c = { 1, 2, 3 };
++ void *d[7];
++ if (!bar (a, a, a, b, b, b, c, d))
++ __builtin_abort ();
++}
+Index: gcc/testsuite/g++.dg/torture/pr91606.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/ipa/pr71207.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ipa/pr71207.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,42 @@
-+/* PR ipa/71207 */
+--- a/src/gcc/testsuite/g++.dg/torture/pr91606.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/torture/pr91606.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,109 @@
+/* { dg-do run } */
++/* { dg-additional-options "-fstrict-aliasing" } */
+
-+class Class1
-+{
-+public:
-+ Class1() {};
-+ virtual ~Class1() {};
-+
-+protected:
-+ unsigned Field1;
-+};
-+
-+class Class2 : public virtual Class1
-+{
-+};
++#include <cstdlib>
++#include <array>
++#include <type_traits>
+
-+class Class3 : public virtual Class1
++template <typename T1, typename T2>
++struct variant
+{
-+public:
-+ virtual void Method1() = 0;
++ constexpr variant(T1 arg)
++ : f1(arg),
++ index(0)
++ {}
+
-+ void Method2()
-+ {
-+ Method1();
-+ }
-+};
++ constexpr variant(T2 arg)
++ : f2(arg),
++ index(1)
++ {}
+
-+class Class4 : public Class2, public virtual Class3
-+{
-+public:
-+ Class4() {};
-+ virtual void Method1() {};
++ union
++ {
++ T1 f1;
++ T2 f2;
++ };
++ std::size_t index = 0;
+};
+
-+int main()
++template <typename T1, typename T2>
++constexpr const T1* get_if(const variant<T1, T2>* v)
+{
-+ Class4 var1;
-+ var1.Method2();
-+
-+ return 0;
++ if (v->index != 0)
++ {
++ return nullptr;
++ }
++ return &v->f1;
+}
-Index: gcc/testsuite/g++.dg/ipa/pr77333.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ipa/pr77333.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ipa/pr77333.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,65 @@
-+// { dg-do run }
-+// { dg-options "-O2 -fno-ipa-sra" }
+
-+volatile int global;
-+int __attribute__((noinline, noclone))
-+get_data (int i)
++template <typename T2, typename T1>
++constexpr const T2* get_if(const variant<T1, T2>* v)
+{
-+ global = i;
-+ return i;
++ if (v->index != 1)
++ {
++ return nullptr;
++ }
++ return &v->f2;
+}
+
-+typedef int array[32];
-+
-+namespace {
-+
-+char buf[512];
-+
-+class A
++template <typename T, size_t N>
++struct my_array
+{
-+public:
-+ int field;
-+ char *s;
-+
-+ A() : field(223344)
-+ {
-+ s = buf;
-+ }
++ constexpr const T* begin() const
++ {
++ return data;
++ }
+
-+ int __attribute__((noinline))
-+ foo (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j,
-+ int k, int l, int m, int n, int o, int p, int q, int r, int s, int t)
-+ {
-+ global = a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t;
-+ return global;
-+ }
++ constexpr const T* end() const
++ {
++ return data + N;
++ }
+
-+ int __attribute__((noinline))
-+ bar()
-+ {
-+ int r = foo (get_data (1), get_data (1), get_data (1), get_data (1),
-+ get_data (1), get_data (1), get_data (1), get_data (1),
-+ get_data (1), get_data (1), get_data (1), get_data (1),
-+ get_data (1), get_data (1), get_data (1), get_data (1),
-+ get_data (1), get_data (1), get_data (1), get_data (1));
-+
-+ if (field != 223344)
-+ __builtin_abort ();
-+ return 0;
-+ }
++ T data[N];
+};
+
-+}
-+
-+int main (int argc, char **argv)
++template <typename ...Ts>
++constexpr auto get_array_of_variants(Ts ...ptrs)
+{
-+ A a;
-+ int r = a.bar();
-+ r = a.bar ();
-+ if (a.field != 223344)
-+ __builtin_abort ();
-+ if (global != 20)
-+ __builtin_abort ();
-+
-+ return r;
++ return std::array<variant<std::decay_t<Ts>...>, sizeof...(Ts)>{ ptrs... };
+}
-Index: gcc/testsuite/g++.dg/overload/ambig3.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/overload/ambig3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/overload/ambig3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+// PR c++/77563
+
-+struct A {
-+ A(int) {}
-+ A(unsigned) {} // Comment to make it work
-+
-+ explicit A(long) {} // Comment to make it work
-+};
-+
-+void f(A) { }
++template <typename T>
++constexpr auto get_member_functions();
+
-+int main() {
-+ f(2);
-+ f(3l); // { dg-error "ambiguous" }
++template <typename Member, typename Class>
++constexpr int getFuncId(Member (Class::*memFuncPtr))
++{
++ int idx = 0u;
++ for (auto &anyFunc : get_member_functions<Class>())
++ {
++ if (auto *specificFunc = get_if<Member (Class::*)>(&anyFunc))
++ {
++ if (*specificFunc == memFuncPtr)
++ {
++ return idx;
++ }
++ }
++ ++idx;
++ }
++ std::abort();
+}
-Index: gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/pr61636-1.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/pr61636-1.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,36 @@
-+// PR c++/61636
-+// PR c++/79264
-+// { dg-do compile { target c++14 } }
+
-+// ICE because we figure this capture too late.
-+
-+struct Base
++struct MyStruct
+{
-+ void Bar (int);
-+};
-+
-+struct A : Base {
-+ void b ();
-+ void Foo (int);
-+ using Base::Bar;
-+ template <typename T> void Baz (T);
-+};
-+
-+void A::b() {
-+
-+ auto lam = [&](auto asdf) { Foo (asdf); };
++ void fun1(int /*a*/) {}
+
-+ lam (0);
++ int fun2(char /*b*/, short /*c*/, bool /*d*/) { return 0; }
+
-+ auto lam1 = [&](auto asdf) { Bar (asdf); };
-+
-+ lam1 (0);
-+
-+ auto lam2 = [&](auto asdf) { Baz (asdf); };
-+
-+ lam2 (0);
-+
-+ auto lam3 = [&](auto asdf) { Baz<int> (asdf); };
-+
-+ lam3 (0);
-+}
-Index: gcc/testsuite/g++.dg/cpp1y/constexpr-79681-1.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-79681-1.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-79681-1.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,17 @@
-+// PR c++/79681
-+// { dg-do compile { target c++14 } }
-+// { dg-options "-O2" }
-+
-+struct A
-+{
-+ int i : 4;
+};
+
-+constexpr bool
-+foo ()
++template <>
++constexpr auto get_member_functions<MyStruct>()
+{
-+ A x[] = { 1 };
-+ return x[0].i;
++ return get_array_of_variants(&MyStruct::fun1, &MyStruct::fun2);
+}
+
-+static_assert (foo(), "");
-Index: gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C
++int main()
++{
++ return getFuncId(&MyStruct::fun1);
++}
+Index: gcc/testsuite/g++.dg/cpp1y/dr1560.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-union1.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,11 @@
-+// PR c++/78897
-+// { dg-do compile { target c++14 } }
-+
-+struct Optional {
-+ constexpr Optional() : _dummy{} { _value = 1; }
-+ union {
-+ int _dummy;
-+ int _value;
-+ };
-+};
-+Optional opt{};
-Index: gcc/testsuite/g++.dg/cpp1y/constexpr-79639.C
+--- a/src/gcc/testsuite/g++.dg/cpp1y/dr1560.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/dr1560.C (.../branches/gcc-9-branch)
+@@ -1,14 +0,0 @@
+-// Core 1560
+-// { dg-do compile { target c++14 } }
+-
+-struct A
+-{
+- A();
+- A(const A&) = delete;
+-};
+-
+-void f(bool b)
+-{
+- A a;
+- b ? a : throw 42;
+-}
+Index: gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-79639.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-79639.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,27 @@
-+// PR c++/79639
+--- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,66 @@
++// PR c++/91705 - constexpr evaluation rejects ++/-- on floats.
+// { dg-do compile { target c++14 } }
+
-+struct A
-+{
-+ void foo () {}
-+ void bar () {}
-+};
-+typedef void (A::*T) ();
++#define SA(X) static_assert((X),#X)
+
-+constexpr T
-+foo (T f)
++template <class T>
++constexpr T fn1(T t)
+{
-+ f = 0;
-+ return f;
++ return ++t;
+}
+
-+constexpr T
-+bar (T f)
++constexpr float fn2(float t)
+{
-+ f = &A::bar;
-+ return f;
-+}
-+
-+constexpr T a = foo (&A::foo);
-+constexpr T b = foo (&A::foo);
-+static_assert (a == nullptr, "");
-Index: gcc/testsuite/g++.dg/cpp1y/pr61636-2.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/pr61636-2.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/pr61636-2.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,72 @@
-+// PR c++/61636
-+// { dg-do run { target c++14 } }
-+
-+// Check we don't capture this (too) unnecessarily
-+
-+struct A {
-+ int b ();
-+ void f (int) {}
-+ static void f (double) {}
-+
-+ static void g (int) {}
-+ static void g (double) {}
-+};
-+
-+struct O {
-+ void x (int) {}
-+ static void x (double) {}
-+};
-+
-+namespace N {
-+ void y (double) {}
++ return ++t;
+}
+
-+int Check (bool expect, unsigned size)
++template <class T>
++constexpr T fn3(T t)
+{
-+ return (expect ? sizeof (void *) : 1) != size;
-+}
-+
-+int A::b() {
-+ int r = 0;
-+
-+ // one of the functions is non-static
-+ auto l0 = [&](auto z) { f (z); };
-+ r += Check (true, sizeof l0);
-+ l0(0.0); // doesn't need this capture for A::f(double), but too late
-+ l0 (0); // Needs this capture for A::f(int)
-+
-+ // no fn is non-static.
-+ auto l00 = [&](auto z) { g (z); };
-+ r += Check (false, sizeof l00);
-+ l00(0.0);
-+ l00 (0);
-+
-+ // sizeof isn't an evaluation context, so no this capture
-+ auto l1 = [&](auto z) { sizeof (f (z), 1); };
-+ r += Check (false, sizeof l1);
-+ l1(0.0); l1 (0);
-+
-+ auto l2 = [&](auto) { f (2.4); };
-+ auto l3 = [&](auto) { f (0); };
-+ l2(0); l3(0); l2(0.0); l3 (0.0);
-+ r += Check (false, sizeof l2);
-+ r += Check (true, sizeof l3);
-+
-+ auto l4 = [&](auto) { O::x (2.4); };
-+ auto l5 = [&](auto) { N::y (2.4); };
-+ auto l6 = [&](auto) { };
-+ l4(0); l5(0); l6(0);
-+ l4(0.0); l5(0.0); l6(0.0);
-+ r += Check (false, sizeof l4);
-+ r += Check (false, sizeof l5);
-+ r += Check (false, sizeof l6);
-+
-+ return r;
++ return --t;
+}
+
-+int main ()
++constexpr float fn4(float t)
+{
-+ A a;
-+
-+ return a.b () ? 1 : 0;
++ return --t;
+}
-Index: gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,39 @@
-+// PR c++/79681
-+// { dg-do compile { target c++14 } }
-+// { dg-options "-O2" }
+
-+struct A
-+{
-+ char i : 4;
-+ char k : 1;
-+ char l : 3;
-+};
-+struct B
-+{
-+ char j : 4;
-+};
-+struct C
++template <class T>
++constexpr T fn5(T t)
+{
-+ long long u;
-+ A a[1];
-+ B b[1];
-+};
++ return t++;
++}
+
-+constexpr bool
-+foo ()
++constexpr float fn6(float t)
+{
-+ C c = { 0, { { 5, 0, 2 } }, { { 6 } } };
-+ C d = { 0, { { 6, 0, 1 } }, { { 5 } } };
-+ return c.a[0].i == d.a[0].i && c.b[0].j == d.b[0].j;
++ return t++;
+}
+
-+constexpr bool
-+bar ()
++template <class T>
++constexpr T fn7(T t)
+{
-+ C c = { 0, { { 5, 0, 2 } }, { { 6 } } };
-+ C d = { 0, { { 6, 0, 1 } }, { { 5 } } };
-+ return c.a[0].i == d.a[0].i && c.a[0].l == d.a[0].l;
++ return t--;
+}
+
-+static_assert (foo () == false, "");
-+static_assert (bar () == false, "");
-Index: gcc/testsuite/g++.dg/cpp1y/auto-fn36.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/auto-fn36.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/auto-fn36.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,26 @@
-+// PR c++/78282
-+// { dg-do compile { target c++14 } }
-+
-+struct null_node
++constexpr float fn8(float t)
+{
-+ null_node(const null_node&);
-+};
-+
-+extern null_node null;
++ return t--;
++}
+
-+template <typename T>
-+auto get() { return null; }
++constexpr double r1 = fn1(2.0f);
++SA(r1 == 3);
++constexpr double r2 = fn2(2.0f);
++SA(r2 == 3);
++constexpr double r3 = fn3(2.0f);
++SA(r3 == 1);
++constexpr double r4 = fn4(2.0f);
++SA(r4 == 1);
+
-+template <typename... Ts>
-+struct inheritor: Ts...
-+{
-+ inheritor(const inheritor& outer)
-+ : Ts(get<Ts...>())...
-+ { }
-+};
-+
-+void test()
-+{
-+ extern inheritor<null_node> example;
-+ inheritor<null_node> result(example);
-+}
-Index: gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C
++constexpr double r5 = fn5(2.0f);
++SA(r5 == 2);
++constexpr double r6 = fn6(2.0f);
++SA(r6 == 2);
++constexpr double r7 = fn7(2.0f);
++SA(r7 == 2);
++constexpr double r8 = fn8(2.0f);
++SA(r8 == 2);
+Index: gcc/testsuite/g++.dg/cpp1y/lambda-init16.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C (.../branches/gcc-6-branch)
-@@ -7,19 +7,19 @@
-
- constexpr void f2() {
- if (true)
-- throw;
--} // { dg-error "not a constant-expression" }
-+ throw; // { dg-error "not a constant-expression" }
-+}
-
- constexpr void f3() {
- if (false)
- ;
- else
-- throw;
--}// { dg-error "not a constant-expression" }
-+ throw; // { dg-error "not a constant-expression" }
-+}
+--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-init16.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-init16.C (.../branches/gcc-9-branch)
+@@ -3,7 +3,7 @@
- constexpr void f4() {
-- throw;
--}// { dg-error "not a constant-expression" }
-+ throw; // { dg-error "not a constant-expression" }
-+}
+ template < class T = int > void f (T)
+ {
+- auto g = [&a = f] () {}; // { dg-error "invalid initialization" }
++ auto g = [&a = f] () {}; // { dg-error "auto" }
+ }
- constexpr int fun(int n) {
- switch (n) {
-Index: gcc/testsuite/g++.dg/cpp1y/pr61636-3.C
+ int main ()
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ63.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/pr61636-3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/pr61636-3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,25 @@
-+// PR c++/61636
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ63.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ63.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,5 @@
++// PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF.
+// { dg-do compile { target c++14 } }
-+// permissiveness doesn't make this permitted
-+// { dg-additional-options "-fpermissive" }
+
-+// ICE because we attempt to use dependent Foo during error recovery
-+// and die with an unexpected this capture need.
++constexpr bool f(const char*) { return true; }
++template<typename T> const char c = "FOO"[f("BAR") ? 1 : 0];
+Index: gcc/testsuite/g++.dg/cpp1y/nontype1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/nontype1.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/nontype1.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,42 @@
++// PR c++/91129 - wrong error with binary op in template argument.
++// { dg-do compile { target c++14 } }
+
-+template <typename T> struct Base
++template<class T, T v>
++struct C
+{
-+ void Foo (int);
++ constexpr operator T() const { return v; }
++ constexpr auto operator()() const { return v; }
+};
+
-+template <typename T> struct A : Base<T> {
-+ void b ();
++template<class T, int N>
++struct A
++{
+};
+
-+template <typename T> void A<T>::b() {
-+
-+ auto lam = [&](auto asdf) { Foo (asdf); }; // { dg-error "not declared" }
-+
-+ lam (T(0));
++template<int N>
++void foo ()
++{
++ A<int, C<int, 6>{}> a0;
++ A<int, !C<int, 6>{}> a1;
++ A<int, N / C<int, 6>{}> a2;
++ A<int, N % C<int, 6>{}> a3;
++ A<int, N * C<int, 6>{}> a4;
++ A<int, N ^ C<int, 6>{}> a5;
++ A<int, N | C<int, 6>{}> a6;
++ A<int, N & C<int, 6>{}> a7;
++ A<int, N + C<int, 6>{}> a8;
++ A<int, N - C<int, 6>{}> a9;
++ A<int, -C<int, 6>{}> a10;
++ A<int, (N >> C<int, 6>{})> a11;
++ A<int, N << C<int, 6>{}> a12;
++ A<int, ~C<int, 6>{}> a13;
++ A<int, N || C<int, 6>{}> a14;
++ A<int, N && C<int, 6>{}> a15;
++ A<int, N == C<int, 6>{}> a16;
++ A<int, N != C<int, 6>{}> a17;
+}
+
-+template void A<int>::b ();
-Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-const3.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+// PR c++/79640
-+// { dg-do compile { target c++14 } }
-+
-+template<typename F> void foo(F f)
-+{
-+ f(1);
-+}
-+
-+template<int> void bar()
++int main()
+{
-+ const int i = i;
-+ foo([] (auto) { sizeof(i); });
++ foo<10>();
+}
-+
-+void baz() { bar<1>(); }
-Index: gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
+Index: gcc/testsuite/g++.dg/cpp1y/auto-fn56.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,9 @@
-+// PR c++/79461
-+// { dg-options -std=c++1z }
-+
-+struct S {
-+ constexpr S(int i) {
-+ auto f = [i]{};
-+ }
-+};
-+int main() {}
-Index: gcc/testsuite/g++.dg/ext/mv8.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/mv8.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/mv8.C (.../branches/gcc-6-branch)
-@@ -1,4 +1,4 @@
--// { dg-do compile { target i?86-*-* x86_64-*-* } }
-+// { dg-do compile { target i?86-*-* x86_64-*-* powerpc*-*-* } }
- // { dg-options "" }
-
- __attribute__((target (11,12)))
-Index: gcc/testsuite/g++.dg/ext/flexary21.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/flexary21.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/flexary21.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+// PR c++/72775
-+// { dg-do compile { target c++11 } }
-+// { dg-options -Wno-pedantic }
-+
-+struct S {
-+ int i;
-+ char a[];
-+ S () : a("bob") {} // { dg-error "member initializer for flexible array member" }
-+};
+--- a/src/gcc/testsuite/g++.dg/cpp1y/auto-fn56.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/auto-fn56.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
++// PR c++/91378
++// { dg-do compile { target c++14 } }
+
-+struct T {
++struct B
++{
+ int i;
-+ char a[] = "bob";
-+ T () : a("bob") {} // { dg-error "member initializer for flexible array member" }
+};
-Index: gcc/testsuite/g++.dg/ext/int128-5.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/int128-5.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/int128-5.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,10 @@
-+// PR c++/79896
-+// { dg-do compile { target { ilp32 && { ! int128 } } } }
-+// { dg-options "" }
-+
-+enum E
-+{
-+ e1 = 0xffffffffffffffffULL,
-+ e2, // { dg-error "overflow in enumeration values" }
-+ e3
-+} e = e3;
-Index: gcc/testsuite/g++.dg/ext/complit15.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/complit15.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/complit15.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+// PR c++/79580
-+// { dg-options "-flto -std=c++98" }
+
-+class a
++struct C
+{
-+ static const double b;
++ template <class T> static auto
++ g(B b) noexcept(noexcept(b.i)) { }
+};
-+const double a::b ((union { double c; }){}.c);
-Index: gcc/testsuite/g++.dg/ext/pr80363.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/pr80363.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/pr80363.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,12 @@
-+// PR c++/80363
-+// { dg-do compile }
+
-+typedef int V __attribute__((vector_size (16)));
-+
-+int
-+foo (V *a, V *b)
++template <class T>
++void h(T t)
+{
-+ if (*a < *b) // { dg-error "could not convert\[^#]*from" }
-+ return 1;
-+ return 0;
++ C::g<int>({});
+}
-Index: gcc/testsuite/g++.dg/ext/flexary20.C
+Index: gcc/testsuite/g++.dg/cpp1z/decomp50.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/flexary20.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/flexary20.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,49 @@
-+// PR c++/72775
-+// { dg-do compile { target c++11 } }
-+// { dg-options -Wno-pedantic }
+--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp50.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp50.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,51 @@
++// PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr.
++// { dg-do compile { target c++17 } }
+
-+struct S {
-+ int i;
-+ char a[] = "foo";
-+ S () {} // { dg-error "member initializer for flexible array member" }
++template <typename> struct B;
++template <typename _Tp> struct B<_Tp *> { typedef _Tp& reference; };
++struct C {
++ template <typename _Up> using rebind = _Up *;
+};
-+
-+struct T { // { dg-error "member initializer for flexible array member" }
-+ int i;
-+ char a[] = "foo";
++template <typename _Iterator, typename> class D {
++public:
++ typename B<_Iterator>::reference operator*();
++ void operator++();
+};
+
-+struct U {
-+ int i;
-+ char a[] = "foo";
-+ U ();
++template <typename _Iterator, typename _Container>
++bool operator!=(D<_Iterator, _Container>, D<_Iterator, _Container>);
++template <typename _Tp> class F {
++public:
++ typedef _Tp value_type;
+};
+
-+U::U() {} // { dg-error "member initializer for flexible array member" }
-+
-+int
-+main ()
-+{
-+ struct T t;
-+}
-+
-+struct V {
-+ int i;
-+ struct W { // { dg-error "member initializer for flexible array member" }
-+ int j;
-+ char a[] = "foo";
-+ } w;
-+ V () {}
++template <typename _Alloc> struct G {
++ template <typename _Tp> struct H { using type = C::rebind<_Tp>; };
++ using const_pointer = typename H<typename _Alloc::value_type>::type;
+};
++template <typename _Tp, typename _Alloc = F<_Tp>> class I {
++ typedef D<typename G<_Alloc>::const_pointer, int> const_iterator;
+
-+template <class T>
-+struct X { // { dg-error "member initializer for flexible array member" }
-+ int i;
-+ T a[] = "foo";
++public:
++ const_iterator begin();
++ const_iterator end();
+};
+
-+void
-+fn ()
-+{
-+ struct X<char> x;
++struct A {
++ struct J {
++ int name;
++ int value;
++ };
++ I<J> members;
++ template <typename Key> const int *find(Key) {
++ for (const auto &[name, value] : members)
++ // See <https://gcc.gnu.org/ml/gcc-patches/2019-10/msg01107.html>
++ // for why we don't warn here.
++ return &value; // { dg-bogus "address of local variable" }
++ return nullptr;
++ }
++};
++int main() {
++ A a;
++ a.find("");
+}
-Index: gcc/testsuite/g++.dg/ext/flexary12.C
+Index: gcc/testsuite/g++.dg/cpp1z/eval-order5.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/ext/flexary12.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/ext/flexary12.C (.../branches/gcc-6-branch)
-@@ -44,7 +44,7 @@
- D ();
- };
-
--D::D ():
-+D::D (): // { dg-error "member initializer for flexible array member" }
- a ("c") // { dg-error "incompatible types in assignment of .const char \\\[2\\\]. to .int \\\[\\\]." }
- { }
-
-Index: gcc/testsuite/g++.dg/vect/pr36648.cc
-===================================================================
---- a/src/gcc/testsuite/g++.dg/vect/pr36648.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/vect/pr36648.cc (.../branches/gcc-6-branch)
-@@ -17,7 +17,12 @@
-
- int main() { }
-
--/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_no_align } } } } */
--/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { ! vect_no_align } } } } */
-+/* On older powerpc hardware (POWER7 and earlier), the default flag
-+ -mno-allow-movmisalign prevents vectorization. On POWER8 and later,
-+ when vect_hw_misalign is true, vectorization occurs. For other
-+ targets, ! vect_no_align is a sufficient test. */
-
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { { ! vect_no_align } && { ! powerpc*-*-* } } || { powerpc*-*-* && vect_hw_misalign } } } } } */
-+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { { { ! vect_no_align } && { ! powerpc*-*-* } } || { powerpc*-*-* && vect_hw_misalign } } } } } */
-
-+
-Index: gcc/testsuite/g++.dg/lookup/pr79377.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/lookup/pr79377.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/lookup/pr79377.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,36 @@
-+// PR c++/79377
+--- a/src/gcc/testsuite/g++.dg/cpp1z/eval-order5.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1z/eval-order5.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,31 @@
++// PR c++/91974
+// { dg-do run }
-+// { dg-options "-fpermissive" }
++// { dg-options "-fstrong-eval-order" }
+
-+struct A
-+{
-+ A () : a (0) {}
-+ A& operator++ () { ++a; ++c; return *this; }
-+ int a;
-+ static int c;
-+};
++extern "C" void abort ();
+
-+int A::c = 0;
++bool ok = false;
+
-+template <typename>
+void
-+foo (A& a)
++foo (int x)
+{
-+ a++; // { dg-warning "trying prefix operator instead" }
-+ if (A::c != 3 || a.a != 3) __builtin_abort ();
-+ ++a;
-+ if (A::c != 4 || a.a != 4) __builtin_abort ();
++ if (x != 0)
++ abort ();
++ ok = true;
++}
++
++void
++bar (int)
++{
++ abort ();
+}
+
+int
+main ()
+{
-+ A a;
-+ if (A::c != 0 || a.a != 0) __builtin_abort ();
-+ ++a;
-+ if (A::c != 1 || a.a != 1) __builtin_abort ();
-+ a++; // { dg-warning "trying prefix operator instead" }
-+ if (A::c != 2 || a.a != 2) __builtin_abort ();
-+ foo<int> (a);
-+ if (A::c != 4 || a.a != 4) __builtin_abort ();
++ typedef void (*T) (int);
++ T fn = foo;
++ fn ((fn = bar, 0));
++ if (fn != bar || !ok)
++ abort ();
+}
-Index: gcc/testsuite/g++.dg/expr/ptrmem9.C
+Index: gcc/testsuite/g++.dg/ext/is_final.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/expr/ptrmem9.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/expr/ptrmem9.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,19 @@
-+// PR c++/79687
-+// { dg-do run }
+--- a/src/gcc/testsuite/g++.dg/ext/is_final.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/ext/is_final.C (.../branches/gcc-9-branch)
+@@ -43,3 +43,17 @@
+ static_assert( __is_final (Ff<A>), "Ff<A> is final" );
+ static_assert( __is_final (Ff<Af>), "Ff<Af> is final" );
+
++// PR 85254
+
-+struct A
-+{
-+ char c;
-+};
++template <class T> struct final_trait_wrap{ typedef T type; };
+
-+int main()
++template <class T> struct my_is_final
+{
-+ static char A::* p1 = &A::c;
-+ char A::* const q1 = p1;
++ static const bool value = __is_final(typename final_trait_wrap<T>::type);
++};
+
-+ char A::* p2 = &A::c;
-+ static char A::* const q2 = p2;
++struct final1 final {};
++template <typename T> struct final2 final {};
+
-+ A a;
-+ return (&(a.*q1) - &a.c) || (&(a.*q2) - &a.c);
-+}
-Index: gcc/testsuite/g++.dg/expr/ptrmem8.C
++static_assert( my_is_final<final1>::value, "final1 is final" );
++static_assert( my_is_final<final2<int>>::value, "final2<int> is final" );
+Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/expr/ptrmem8.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/expr/ptrmem8.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+// PR c++/79687
-+// { dg-do run }
-+
-+struct A
-+{
-+ char c;
+--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++// PR c++/88095
++// Test class non-type template parameters for literal operator templates.
++// Validate that non-literal class types are rejected.
++// { dg-do compile { target c++2a } }
++
++struct non_literal_class {
++ constexpr non_literal_class(...) { }
++ ~non_literal_class() {}
++ // auto operator<=> (const non_literal_fixed_string&) = default;
+};
+
-+int main()
-+{
-+ char A::* p = &A::c;
-+ static char A::* const q = p;
-+ A a;
-+ return &(a.*q) - &a.c;
-+}
-Index: gcc/testsuite/g++.dg/abi/pr77728-1.C
++template <non_literal_class> // { dg-error "11:is not a valid type for a template non-type parameter because it is not literal" }
++int operator"" _udl(); // { dg-error "literal operator template .int operator\"\"_udl\\(\\). has invalid parameter list" }
+Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/abi/pr77728-1.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/abi/pr77728-1.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,171 @@
-+// { dg-do compile { target arm_eabi } }
-+// { dg-options "-Wpsabi" }
-+
-+#include <stdarg.h>
-+
-+template <int N>
-+struct A { double p; };
+--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,24 @@
++// PR c++/88095
++// Test class non-type template parameters for literal operator templates.
++// Validate support for class template argument deduction.
++// { dg-do compile { target c++2a } }
+
-+A<0> v;
++namespace std {
++using size_t = decltype(sizeof(int));
++}
+
-+template <int N>
-+struct B
-+{
-+ typedef A<N> T;
-+ int i, j;
++template <typename CharT, std::size_t N>
++struct fixed_string {
++ constexpr static std::size_t length = N;
++ constexpr fixed_string(...) { }
++ // auto operator<=> (const fixed_string&) = default;
+};
++template <typename CharT, std::size_t N>
++fixed_string(const CharT (&str)[N]) -> fixed_string<CharT, N>;
+
-+struct C : public B<0> {};
-+struct D {};
-+struct E : public D, C {};
-+struct F : public B<1> {};
-+struct G : public F { static double y; };
-+struct H : public G {};
-+struct I : public D { long long z; };
-+struct J : public D { static double z; int i, j; };
-+
-+template <int N>
-+struct K : public D { typedef A<N> T; int i, j; };
++template <fixed_string fs>
++constexpr std::size_t operator"" _udl() {
++ return decltype(fs)::length;
++}
+
-+struct L { static double h; int i, j; };
++static_assert("test"_udl == 5);
+Index: gcc/testsuite/g++.dg/cpp2a/attr-likely6.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp2a/attr-likely6.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/attr-likely6.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,14 @@
++// PR c++/92343
++// { dg-do compile { target c++14 } }
+
-+int
-+fn1 (int a, B<0> b) // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" }
++constexpr bool
++foo (bool x)
+{
-+ return a + b.i;
++ if (x)
++ [[unlikely]] return true;
++ else
++ [[likely]] return false;
+}
+
-+int
-+fn2 (int a, B<1> b)
-+{
-+ return a + b.i;
-+}
++static_assert (foo (true), "");
++static_assert (!foo (false), "");
+Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,16 @@
++// PR c++/88095
++// Test class non-type template parameters for literal operator templates.
++// Validate basic support.
++// { dg-do compile { target c++2a } }
++
++struct literal_class {
++ constexpr literal_class(...) { }
++ // auto operator<=> (const fixed_string&) = default;
++};
+
-+int
-+fn3 (int a, L b) // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" }
-+{
-+ return a + b.i;
++template <literal_class>
++constexpr int operator"" _udl() {
++ return 1;
+}
+
-+int
-+fn4 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, B<0> n, ...)
-+// { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" "" { target *-*-* } .-1 }
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++static_assert("test"_udl == 1);
+Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,20 @@
++// PR c++/88095
++// Test class non-type template parameters for literal operator templates.
++// Validate rejection of class template parameter packs.
++// { dg-do compile { target c++2a } }
+
-+int
-+fn5 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, B<1> n, ...)
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
++namespace std {
++using size_t = decltype(sizeof(int));
+}
+
-+int
-+fn6 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, C n, ...)
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++template <typename CharT, std::size_t N>
++struct fixed_string {
++ constexpr static std::size_t length = N;
++ constexpr fixed_string(...) { }
++ // auto operator<=> (const fixed_string&) = default;
++};
++template <typename CharT, std::size_t N>
++fixed_string(const CharT (&str)[N]) -> fixed_string<CharT, N>;
+
-+int
-+fn7 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, E n, ...)
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++template <fixed_string...>
++int operator"" _udl(); // { dg-error "literal operator template .int operator\"\"_udl\\(\\). has invalid parameter list" }
+Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,12 @@
++// PR c++/88095
++// Test class non-type template parameters for literal operator templates.
++// Validate that parameter packs are rejected.
++// { dg-do compile { target c++2a } }
++
++struct literal_class {
++ constexpr literal_class(...) { }
++ // auto operator<=> (const fixed_string&) = default;
++};
+
-+int
-+fn8 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, H n, ...)
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++template <literal_class...>
++int operator"" _udl(); // { dg-error "literal operator template .int operator\"\"_udl\\(\\). has invalid parameter list" }
+Index: gcc/testsuite/g++.dg/cpp2a/nontype-class23.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp2a/nontype-class23.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/nontype-class23.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,102 @@
++// PR c++/90947 - Simple lookup table of array of strings is miscompiled
++// Test to verify that the same specializations on non-type template
++// parameters of class types are in fact treated as the same. Unlike
++// nontype-class15.C which involves only one-dimensional arrays this
++// test involves arrays of arrays and arrays of structs.
++// { dg-do compile { target c++2a } }
+
-+int
-+fn9 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, I n, ...)
++struct AA3
+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++ const char a[2][2][2];
++};
+
-+int
-+fn10 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, J n, ...)
-+// { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" "" { target *-*-* } .-1 }
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++template <AA3> struct BAA3 { };
++
++// Redeclare the same variable using different initialization forms
++// of the same constant to verify that they are in fact all recognized
++// as the same.
++extern BAA3<AA3{{{ "", "" }, { "", "" }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { "", { 0, 0 } }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { "", { 0 } }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { "", {} }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { "" }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { { 0, 0 } }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { { 0 } }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { {} }}}> baa3;
++extern BAA3<AA3{{{ "", "" }, { }}}> baa3;
++extern BAA3<AA3{{{ "", "" }}}> baa3;
++extern BAA3<AA3{{{ "", { 0, 0 } }}}> baa3;
++extern BAA3<AA3{{{ "", { 0 } }}}> baa3;
++extern BAA3<AA3{{{ "", {} }}}> baa3;
++extern BAA3<AA3{{{ "" }}}> baa3;
++extern BAA3<AA3{{{ { 0, 0 } }}}> baa3;
++extern BAA3<AA3{{{ { 0 } }}}> baa3;
++extern BAA3<AA3{{{ {} }}}> baa3;
++extern BAA3<AA3{{{ }}}> baa3;
++extern BAA3<AA3{{ }}> baa3;
++extern BAA3<AA3{ }> baa3;
++
++extern BAA3<AA3{{{ "", "" }, { "", "1" }}}> baa3_1;
++extern BAA3<AA3{{{ "", "" }, { "", { '1', 0 } }}}> baa3_1;
++extern BAA3<AA3{{{ "", "" }, { "", { '1' } }}}> baa3_1;
++
++extern BAA3<AA3{{{ "", "" }, { "1", {} }}}> baa3_2;
++extern BAA3<AA3{{{ "", "" }, { "1" }}}> baa3_2;
++extern BAA3<AA3{{{ "", "" }, { { '1', 0 } }}}> baa3_2;
++extern BAA3<AA3{{{ "", "" }, { { '1' } }}}> baa3_2;
++
++extern BAA3<AA3{{{ "", "1" }}}> baa3_3;
++extern BAA3<AA3{{{ "", { '1', 0 } }}}> baa3_3;
++extern BAA3<AA3{{{ "", { '1' } }}}> baa3_3;
++
++extern BAA3<AA3{{{ "1" }}}> baa3_4;
++extern BAA3<AA3{{{ { '1', 0 } }}}> baa3_4;
++extern BAA3<AA3{{{ { '1' } }}}> baa3_4;
++
++struct AS2
++{
++ struct S { const char a[2], *p; } a[2];
++};
+
-+int
-+fn11 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, K<0> n, ...)
-+// { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" "" { target *-*-* } .-1 }
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++template <AS2> struct BAS2 { };
+
-+int
-+fn12 (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, K<2> n, ...)
-+{
-+ va_list ap;
-+ va_start (ap, n);
-+ int x = va_arg (ap, int);
-+ va_end (ap);
-+ return x;
-+}
++extern BAS2<AS2{{{ "", 0 }, { "", 0 }}}> bas2;
++extern BAS2<AS2{{{ "", 0 }, { {}, 0 }}}> bas2;
++extern BAS2<AS2{{{ "", 0 }, { "" }}}> bas2;
++extern BAS2<AS2{{{ "", 0 }, { {} }}}> bas2;
++extern BAS2<AS2{{{ "", 0 }, { }}}> bas2;
++extern BAS2<AS2{{{ "", 0 }}}> bas2;
++extern BAS2<AS2{{{ {}, 0 }}}> bas2;
++extern BAS2<AS2{{{ "" }}}> bas2;
++extern BAS2<AS2{{{ {} }}}> bas2;
++extern BAS2<AS2{{{ }}}> bas2;
++extern BAS2<AS2{{ }}> bas2;
++extern BAS2<AS2{ }> bas2;
+
-+void
-+test ()
++struct AS2_2
+{
-+ static B<0> b0;
-+ static B<1> b1;
-+ static L l;
-+ static C c;
-+ static E e;
-+ static H h;
-+ static I i;
-+ static J j;
-+ static K<0> k0;
-+ static K<2> k2;
-+ fn1 (1, b0); // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" }
-+ fn2 (1, b1);
-+ fn3 (1, l); // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" }
-+ fn4 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, b0, 1, 2, 3, 4);
-+ // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" "" { target *-*-* } .-1 }
-+ fn5 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, b1, 1, 2, 3, 4);
-+ fn6 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, c, 1, 2, 3, 4);
-+ fn7 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, e, 1, 2, 3, 4);
-+ fn8 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, h, 1, 2, 3, 4);
-+ fn9 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, i, 1, 2, 3, 4);
-+ fn10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, j, 1, 2, 3, 4);
-+ // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" "" { target *-*-* } .-1 }
-+ fn11 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, k0, 1, 2, 3, 4);
-+ // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" "" { target *-*-* } .-1 }
-+ fn12 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, k2, 1, 2, 3, 4);
-+}
-Index: gcc/testsuite/g++.dg/gomp/pr79664.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/gomp/pr79664.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/gomp/pr79664.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,168 @@
-+// PR c++/79664
-+// { dg-do compile }
-+// { dg-options "-std=c++14 -fopenmp" }
++ struct S { const char a[2], *p; } a[2][2];
++};
+
-+constexpr int
-+f1 ()
-+{
-+ int i = 0;
-+#pragma omp parallel for // { dg-error "is not a constant-expression" }
-+ for (i = 0; i < 10; ++i)
-+ ;
-+ return 0;
-+}
++template <AS2_2> struct BAS2_2 { };
++
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { "", 0 }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { "" }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { {} }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 }, { }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "", 0 } }}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { "" } }}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { {} } }}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { { }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 } }, { }}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "", 0 }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { "" }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { {} }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }, { }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "", 0 }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ "" }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ {} }}}}> b2_2;
++extern BAS2_2<AS2_2{{{{ }}}}> b2_2;
++extern BAS2_2<AS2_2{{{ }}}> b2_2;
++extern BAS2_2<AS2_2{{ }}> b2_2;
++extern BAS2_2<AS2_2{ }> b2_2;
+Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,24 @@
++// PR c++/88095
++// Test class non-type template parameters for literal operator templates.
++// Validate handling of failed class template argument deduction.
++// { dg-do compile { target c++2a } }
+
-+constexpr int
-+f2 ()
-+{
-+ int i = 0;
-+#pragma omp parallel // { dg-error "is not a constant-expression" }
-+ i = 5;
-+ return 0;
++namespace std {
++using size_t = decltype(sizeof(int));
+}
+
-+constexpr int
-+f3 ()
-+{
-+ int i = 0;
-+#pragma omp task // { dg-error "is not a constant-expression" }
-+ i = 5;
-+ return 0;
-+}
++template <typename CharT, std::size_t N>
++struct fixed_string {
++ constexpr static std::size_t length = N;
++ constexpr fixed_string(...) { }
++ // auto operator<=> (const fixed_string&) = default;
++};
++// Missing deduction guide.
+
-+constexpr int
-+f4 ()
-+{
-+ int i = 0;
-+#pragma omp for // { dg-error "is not a constant-expression" }
-+ for (i = 0; i < 10; ++i)
-+ ;
-+ return 0;
++template <fixed_string fs>
++constexpr std::size_t operator"" _udl() {
++ return decltype(fs)::length;
+}
+
-+constexpr int
-+f5 ()
-+{
-+ int i = 0;
-+#pragma omp taskloop // { dg-error "is not a constant-expression" }
-+ for (i = 0; i < 10; ++i)
-+ ;
-+ return 0;
-+}
++static_assert("test"_udl == 5); // { dg-error "15:no matching function for call to" }
++ // { dg-error "15:class template argument deduction failed" "" { target *-*-* } .-1 }
+Index: gcc/testsuite/g++.dg/expr/cond16.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/expr/cond16.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/expr/cond16.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,25 @@
++// PR c++/90393
++// { dg-do run }
+
-+constexpr int
-+f6 ()
-+{
-+ int i = 0;
-+#pragma omp target teams // { dg-error "is not a constant-expression" }
-+ i = 5;
-+ return 0;
-+}
++int c, d;
+
-+constexpr int
-+f7 ()
++struct string {
++ string(const char *p): s(p) { ++c; }
++ ~string() { ++d; }
++ string(const string& str): s(str.s) { ++c; }
++ const char* s;
++ bool empty() const { return !s; }
++};
++
++string foo()
+{
-+ int i = 0;
-+#pragma omp target data map(tofrom:i) // { dg-error "is not a constant-expression" }
-+ i = 5;
-+ return 0;
++ string s("foo");
++ return s.empty() ? throw "empty" : s;
+}
+
-+constexpr int
-+f8 ()
++int main()
+{
-+ int i = 0;
-+#pragma omp target // { dg-error "is not a constant-expression" }
-+ i = 5;
-+ return 0;
++ foo();
++ if (c != d)
++ __builtin_abort();
+}
+Index: gcc/testsuite/g++.dg/expr/cond15.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/expr/cond15.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/expr/cond15.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++// PR c++/90393
+
-+constexpr int
-+f9 ()
-+{
-+ int i = 0;
-+#pragma omp sections // { dg-error "is not a constant-expression" }
-+ {
-+#pragma omp section
-+ i = 5;
-+ }
-+ return 0;
-+}
++struct S {
++ S();
++ S(const S&) {}
++};
+
-+constexpr int
-+f10 ()
-+{
-+ int i = 0;
-+#pragma omp ordered // { dg-error "is not a constant-expression" }
-+ i = 1;
-+ return 0;
++S f() {
++ const S m;
++ return true ? m : throw 0;
+}
+
-+constexpr int
-+f11 ()
-+{
-+ int i = 0;
-+#pragma omp critical // { dg-error "is not a constant-expression" }
-+ i = 1;
-+ return 0;
-+}
++int main() {}
+Index: gcc/testsuite/g++.dg/abi/mangle73.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/abi/mangle73.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/abi/mangle73.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,96 @@
++// { dg-do compile { target c++2a } }
+
-+constexpr int
-+f12 ()
++struct A
+{
-+ int i = 0;
-+#pragma omp single // { dg-error "is not a constant-expression" }
-+ i = 1;
-+ return 0;
-+}
++ char a[2][2];
++};
+
-+constexpr int
-+f13 ()
-+{
-+ int i = 0;
-+#pragma omp master // { dg-error "is not a constant-expression" }
-+ i = 1;
-+ return 0;
-+}
++template <A> struct B { };
+
-+constexpr int
-+f14 ()
-+{
-+ int i = 0;
-+#pragma omp taskgroup // { dg-error "is not a constant-expression" }
-+ i = 1;
-+ return 0;
-+}
++typedef B<A{ { { 0, 0 }, { 0, 0 } } }> AZZZZ;
++typedef B<A{ { { 0, 0 }, { 0 } } }> AZZZ_;
++typedef B<A{ { { 0, 0 } } }> AZZ__;
++typedef B<A{ { { 0 } } }> AZ___;
++typedef B<A{ { { } } }> A____;
+
-+constexpr int
-+f15 ()
-+{
-+ int i = 0;
-+#pragma omp target update to(i) // { dg-error "is not a constant-expression" }
-+ i = 1;
-+ return 0;
-+}
++typedef B<A{ { { "" }, { "" } } }> AS_S_;
++typedef B<A{ { { "" }, { 0, 0 } } }> AS_ZZ;
++typedef B<A{ { { "" }, { 0 } } }> AS_Z_;
++typedef B<A{ { { "" } } }> AS___;
+
-+constexpr int
-+f16 ()
-+{
-+ int i = 0;
-+#pragma omp target update to(i) // { dg-error "is not a constant-expression" }
-+ return 0;
-+}
+
-+constexpr int
-+f17 ()
-+{
-+ int i = 0;
-+#pragma omp target enter data map(to:i) // { dg-error "is not a constant-expression" }
-+ return 0;
-+}
++// Verify that the types mangle the same.
++void a_zzzz (AZZZZ) { }
++// { dg-final { scan-assembler "_Z6a_zzzz1BIXtl1AEEE" } }
+
-+constexpr int
-+f18 ()
-+{
-+ int i = 0;
-+#pragma omp target exit data map(from:i) // { dg-error "is not a constant-expression" }
-+ return 0;
-+}
-Index: gcc/testsuite/g++.dg/gomp/pr80141.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/gomp/pr80141.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/gomp/pr80141.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+// PR c++/80141
-+// { dg-do compile }
++void a_zzz_ (AZZZ_) { }
++// { dg-final { scan-assembler "_Z6a_zzz_1BIXtl1AEEE" } }
+
-+#pragma omp declare simd aligned (p : 2 && 2)
-+template<int> void foo (int *p);
++void a_zz__ (AZZ__) { }
++// { dg-final { scan-assembler "_Z6a_zz__1BIXtl1AEEE" } }
+
-+#pragma omp declare simd simdlen (2 && 2)
-+template<int> void bar (int *p);
-Index: gcc/testsuite/g++.dg/gomp/pr79429.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/gomp/pr79429.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/gomp/pr79429.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+// PR c++/79429
++void a_z___ (AZ___) { }
++// { dg-final { scan-assembler "_Z6a_z___1BIXtl1AEEE" } }
+
-+#pragma omp ordered // { dg-error "expected declaration specifiers" }
-Index: gcc/testsuite/g++.dg/init/ref23.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/init/ref23.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/init/ref23.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+// PR c++/80176
-+// { dg-do compile }
++void a_____ (A____) { }
++// { dg-final { scan-assembler "_Z6a_____1BIXtl1AEEE" } }
+
-+struct X { static void foo(); static void baz(int); static int baz(double); } x;
-+struct Y { void o(unsigned char); static void o(int); void o(double); } y;
-+void X::foo() {}
-+static void bar() {}
-+void (&r1)() = x.foo;
-+void (&r2)() = X::foo;
-+void (&r3)() = bar;
-+void (&r4)(int) = x.baz;
-+int (&r5)(double) = x.baz;
-+void (&r6)(int) = X::baz;
-+int (&r7)(double) = X::baz;
-+void (&r8)(int) = y.o;
-Index: gcc/testsuite/g++.dg/pr79761.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/pr79761.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/pr79761.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,34 @@
-+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && { ! x32 } } } } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -mabi=ms" } */
++void a_s_s_ (AS_S_) { }
++// { dg-final { scan-assembler "_Z6a_s_s_1BIXtl1AEEE" } }
+
-+struct Foo
-+{
-+ Foo() : a(1), b(1), c('a') {}
-+ int a;
-+ int b;
-+ char c;
-+};
++void a_s_zz (AS_ZZ) { }
++// { dg-final { scan-assembler "_Z6a_s_zz1BIXtl1AEEE" } }
+
-+static Foo copy_foo(Foo) __attribute__((noinline, noclone));
++void a_s_z_ (AS_Z_) { }
++// { dg-final { scan-assembler "_Z6a_s_z_1BIXtl1AEEE" } }
++
++void a_s___ (AS___) { }
++// { dg-final { scan-assembler "_Z6a_s___1BIXtl1AEEE" } }
+
-+static Foo copy_foo(Foo A)
-+{
-+ return A;
-+}
+
-+struct Bar : Foo
++struct C
+{
-+ Bar(Foo t) : Foo(copy_foo(t)) {}
++ struct { const char a[2][2], *p; } a[2];
+};
+
-+Foo F;
++template <C> struct D { };
++
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 }, { 0, 0 }}, 0 }}}> DZZZZZZZZZZ;
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 }, { 0, 0 }}}}}> DZZZZZZZZZ_;
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 }, { 0 }}}}}> DZZZZZZZZ__;
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0, 0 } }}}}> DZZZZZZZ___;
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }, {{{ 0 } }}}}> DZZZZZZ____;
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}, 0 }}}> DZZZZZ_____;
++typedef D<C{{{{{ 0, 0 }, { 0, 0 }}}}}> DZZZZ______;
++typedef D<C{{{{{ 0, 0 }, { 0 }}}}}> DZZZ_______;
++typedef D<C{{{{{ 0, 0 }}}}}> DZZ________;
++typedef D<C{{{{{ 0 }}}}}> DZ_________;
++typedef D<C{ }> D__________;
++
++typedef D<C{{{{{ "" }, { "" }}, 0 }, {{{ "" }, { "" }}, 0 }}}> DS_S_ZS_S_Z;
++
++void d_zzzzzzzzzz (DZZZZZZZZZZ) { }
++// { dg-final { scan-assembler "_Z12d_zzzzzzzzzz1DIXtl1CEEE" } }
++void d_zzzzzzzzz_ (DZZZZZZZZZ_) { }
++// { dg-final { scan-assembler "_Z12d_zzzzzzzzz_1DIXtl1CEEE" } }
++void d_zzzzzzzz__ (DZZZZZZZZ__) { }
++// { dg-final { scan-assembler "_Z12d_zzzzzzzz__1DIXtl1CEEE" } }
++void d_zzzzzzz___ (DZZZZZZZ___) { }
++// { dg-final { scan-assembler "_Z12d_zzzzzzz___1DIXtl1CEEE" } }
++void d_zzzzzz____ (DZZZZZZ____) { }
++// { dg-final { scan-assembler "_Z12d_zzzzzz____1DIXtl1CEEE" } }
++void d_zzzzz_____ (DZZZZZ_____) { }
++// { dg-final { scan-assembler "_Z12d_zzzzz_____1DIXtl1CEEE" } }
++void d_zzzz______ (DZZZZ______) { }
++// { dg-final { scan-assembler "_Z12d_zzzz______1DIXtl1CEEE" } }
++void d_zzz_______ (DZZZ_______) { }
++// { dg-final { scan-assembler "_Z12d_zzz_______1DIXtl1CEEE" } }
++void d_zz________ (DZZ________) { }
++// { dg-final { scan-assembler "_Z12d_zz________1DIXtl1CEEE" } }
++void d_z_________ (DZ_________) { }
++// { dg-final { scan-assembler "_Z12d_z_________1DIXtl1CEEE" } }
++void d___________ (D__________) { }
++// { dg-final { scan-assembler "_Z12d___________1DIXtl1CEEE" } }
++
++void d_s_s_zs_s_z (DS_S_ZS_S_Z) { }
++// { dg-final { scan-assembler "_Z12d_s_s_zs_s_z1DIXtl1CEEE" } }
+Index: gcc/testsuite/g++.dg/init/array53.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/init/array53.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/init/array53.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,33 @@
++// PR c++/90947 - Simple lookup table of array of strings is miscompiled
++// Verify that initializers for arrays of elements of a class type with
++// "unusual" data members are correctly recognized as non-zero.
++// { dg-do compile }
++// { dg-options "-O1 -fdump-tree-optimized" }
+
-+int main (void)
++struct S
+{
-+ Bar B (F);
++ const char *p;
++ static int i;
++ enum { e };
++ typedef int X;
++ int: 1, b:1;
++ union {
++ int c;
++ };
++ const char *q;
++};
+
-+ if (B.a != 1 || B.b != 1 || B.c != 'a')
-+ __builtin_abort ();
++void f (void)
++{
++ const struct S a[2] =
++ {
++ { /* .p = */ "", /* .b = */ 0, /* .c = */ 0, /* .q = */ "" },
++ { /* .p = */ "", /* .b = */ 0, /* .c = */ 0, /* .q = */ "" }
++ };
+
-+ return 0;
++ if (!a[0].p || *a[0].p || !a[0].q || *a[0].q
++ || !a[1].p || *a[1].p || !a[1].q || *a[1].q)
++ __builtin_abort ();
+}
-Index: gcc/testsuite/g++.dg/pr79769.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/pr79769.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/pr79769.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,4 @@
-+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && { ! x32 } } } } */
-+/* { dg-options "-fcheck-pointer-bounds -mmpx -mabi=ms" } */
+
-+void a (_Complex) { a (3); }
-Index: gcc/testsuite/g++.dg/lto/pr79050_0.C
++// { dg-final { scan-tree-dump-not "abort" "optimized" } }
+Index: gcc/testsuite/g++.dg/init/array54.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/lto/pr79050_0.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/lto/pr79050_0.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,7 @@
-+// PR c++/79050
-+// { dg-lto-do assemble }
+--- a/src/gcc/testsuite/g++.dg/init/array54.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/init/array54.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++// PR c++/90947
++// { dg-do run { target c++11 } }
+
-+int main ()
++#include <atomic>
++
++static std::atomic<int> a[1] { {1} };
++
++int
++main ()
+{
-+ auto foo ();
++ if (a[0].load () != 1)
++ __builtin_abort ();
+}
-Index: gcc/testsuite/g++.dg/warn/Wnonnull3.C
+Index: gcc/testsuite/g++.dg/other/pr92201.C
===================================================================
---- a/src/gcc/testsuite/g++.dg/warn/Wnonnull3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/warn/Wnonnull3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,15 @@
-+// PR c++/79962
-+// { dg-options "-Wnonnull" }
-+
-+template <class T>
-+__attribute__ ((__nonnull__ (T::i))) void f (typename T::U) { }
-+
-+struct S1 { enum { i = 1 }; typedef void* U; };
-+struct S2 { static const int i = 1; typedef void* U; };
+--- a/src/gcc/testsuite/g++.dg/other/pr92201.C (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/other/pr92201.C (.../branches/gcc-9-branch)
+@@ -0,0 +1,7 @@
++// PR c++/92201
+
-+void
-+g ()
++int
++foo (void (*p) ())
+{
-+ f<S1>(0); // { dg-warning "null argument where non-null required" }
-+ f<S2>(0); // { dg-warning "null argument where non-null required" }
++ return (*reinterpret_cast<int (*)()> (p)) ();
+}
-Index: gcc/testsuite/g++.dg/warn/Wunused-var-26.C
+Index: gcc/testsuite/objc.dg/stubify-1.m
===================================================================
---- a/src/gcc/testsuite/g++.dg/warn/Wunused-var-26.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/warn/Wunused-var-26.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,147 @@
-+// PR c++/79548 - missing -Wunused-variable on a typedef'd variable
-+// in a function template
+--- a/src/gcc/testsuite/objc.dg/stubify-1.m (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/objc.dg/stubify-1.m (.../branches/gcc-9-branch)
+@@ -4,7 +4,7 @@
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-require-effective-target ilp32 } */
+-/* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4" } */
++/* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */
+
+ typedef struct objc_object { } *id ;
+ int x = 41 ;
+@@ -28,8 +28,8 @@
+ }
+ @end
+
+-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */
+-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */
+-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */
+-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */
+-/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
+Index: gcc/testsuite/objc.dg/stubify-2.m
+===================================================================
+--- a/src/gcc/testsuite/objc.dg/stubify-2.m (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/objc.dg/stubify-2.m (.../branches/gcc-9-branch)
+@@ -1,10 +1,10 @@
+ /* All calls must be properly stubified, m32 only. */
+ /* Testcase extracted from TextEdit:Document.m. */
+
+-/* { dg-do compile { target powerpc*-*-darwin* } } */
++/* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-require-effective-target ilp32 } */
+-/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */
++/* { dg-options "-mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */
+
+ typedef struct objc_object { } *id ;
+ int x = 41 ;
+@@ -30,4 +30,9 @@
+
+ /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
+ for "objc_msgSend" in quotes, without the $stub suffix. */
+-/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */
++
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
+Index: gcc/testsuite/obj-c++.dg/stubify-1.mm
+===================================================================
+--- a/src/gcc/testsuite/obj-c++.dg/stubify-1.mm (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/obj-c++.dg/stubify-1.mm (.../branches/gcc-9-branch)
+@@ -4,7 +4,7 @@
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-require-effective-target ilp32 } */
+-/* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4" } */
++/* { dg-options "-mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4 -msymbol-stubs" } */
+
+ typedef struct objc_object { } *id ;
+ int x = 41 ;
+@@ -32,8 +32,8 @@
+ }
+ @end
+
+-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */
+-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */
+-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */
+-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */
+-/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
+Index: gcc/testsuite/obj-c++.dg/stubify-2.mm
+===================================================================
+--- a/src/gcc/testsuite/obj-c++.dg/stubify-2.mm (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/obj-c++.dg/stubify-2.mm (.../branches/gcc-9-branch)
+@@ -4,7 +4,7 @@
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-require-effective-target ilp32 } */
+-/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */
++/* { dg-options "-mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */
+
+ typedef struct objc_object { } *id ;
+ int x = 41 ;
+@@ -30,4 +30,9 @@
+
+ /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
+ for "objc_msgSend" in quotes, without the $stub suffix. */
+-/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */
++
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_Z7bogoniciii\n} } } */
++/* { dg-final { scan-assembler {(bl|call)[ \t]+L__Z7bogoniciii\$stub\n} } } */
++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
+Index: gcc/testsuite/c-c++-common/cpp/pr92296-1.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/cpp/pr92296-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/cpp/pr92296-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,32 @@
++/* PR preprocessor/92296 */
++/* { dg-do preprocess } */
++
++#pragma push_macro("__TIMESTAMP__")
++#pragma pop_macro("__TIMESTAMP__")
++
++#pragma push_macro("__TIME__")
++#pragma pop_macro("__TIME__")
++
++#pragma push_macro("__DATE__")
++#pragma pop_macro("__DATE__")
++
++#pragma push_macro("__FILE__")
++#pragma pop_macro("__FILE__")
++
++#pragma push_macro("__BASE_FILE__")
++#pragma pop_macro("__BASE_FILE__")
++
++#pragma push_macro("__LINE__")
++#pragma pop_macro("__LINE__")
++
++#pragma push_macro("__INCLUDE_LEVEL__")
++#pragma pop_macro("__INCLUDE_LEVEL__")
++
++#pragma push_macro("__COUNTER__")
++#pragma pop_macro("__COUNTER__")
++
++#pragma push_macro("__has_attribute")
++#pragma pop_macro("__has_attribute")
++
++#pragma push_macro("__has_cpp_attribute")
++#pragma pop_macro("__has_cpp_attribute")
+Index: gcc/testsuite/c-c++-common/cpp/pr92296-2.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/cpp/pr92296-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/cpp/pr92296-2.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,73 @@
++/* PR preprocessor/92296 */
++/* { dg-do preprocess } */
++/* { dg-options "-Wno-builtin-macro-redefined" } */
++
++#pragma push_macro("__TIMESTAMP__")
++#undef __TIMESTAMP__
++#define __TIMESTAMP__ "Thu Oct 31 12:00:00 2019"
++timestamp1 = __TIMESTAMP__
++#pragma pop_macro("__TIMESTAMP__")
++timestamp2 = __TIMESTAMP__
++
++#pragma push_macro("__TIME__")
++#undef __TIME__
++#define __TIME__ "12:00:00"
++time1 = __TIME__
++#pragma pop_macro("__TIME__")
++time2 = __TIME__
++
++#pragma push_macro("__DATE__")
++#undef __DATE__
++#define __DATE__ "Oct 31 2019"
++date1 = __DATE__
++#pragma pop_macro("__DATE__")
++date2 = __DATE__
++
++#pragma push_macro("__FILE__")
++#undef __FILE__
++#define __FILE__ "pr92296-3.c"
++file1 = __FILE__ /* { dg-final { scan-file pr92296-2.i "file1 = \"pr92296-3.c\"" } } */
++#pragma pop_macro("__FILE__")
++file2 = __FILE__ /* { dg-final { scan-file-not pr92296-2.i "file2 = \"pr92296-3.c\"" } } */
++
++#pragma push_macro("__BASE_FILE__")
++#undef __BASE_FILE__
++#define __BASE_FILE__ "pr92296-4.c"
++filebase1 = __BASE_FILE__ /* { dg-final { scan-file pr92296-2.i "filebase1 = \"pr92296-4.c\"" } } */
++#pragma pop_macro("__BASE_FILE__")
++filebase2 = __BASE_FILE__ /* { dg-final { scan-file-not pr92296-2.i "filebase2 = \"pr92296-4.c\"" } } */
++
++#pragma push_macro("__LINE__")
++#undef __LINE__ /* { dg-warning "undefining" } */
++#define __LINE__ 142
++line1 = __LINE__ /* { dg-final { scan-file pr92296-2.i "line1 = 142" } } */
++#pragma pop_macro("__LINE__")
++line2 = __LINE__ /* { dg-final { scan-file pr92296-2.i "line2 = 45" } } */
++
++#pragma push_macro("__INCLUDE_LEVEL__")
++#undef __INCLUDE_LEVEL__ /* { dg-warning "undefining" } */
++#define __INCLUDE_LEVEL__ 42
++includelevel1 = __INCLUDE_LEVEL__ /* { dg-final { scan-file pr92296-2.i "includelevel1 = 42" } } */
++#pragma pop_macro("__INCLUDE_LEVEL__")
++includelevel2 = __INCLUDE_LEVEL__ /* { dg-final { scan-file pr92296-2.i "includelevel2 = 0" } } */
++
++#pragma push_macro("__COUNTER__")
++#undef __COUNTER__ /* { dg-warning "undefining" } */
++#define __COUNTER__ 172
++counter1 = __COUNTER__ /* { dg-final { scan-file pr92296-2.i "counter1 = 172" } } */
++#pragma pop_macro("__COUNTER__")
++counter2 = __COUNTER__ /* { dg-final { scan-file-not pr92296-2.i "counter2 = 172" } } */
++
++#pragma push_macro("__has_attribute")
++#undef __has_attribute /* { dg-warning "undefining" } */
++#define __has_attribute(x) 0
++hasattr1 = __has_attribute(noreturn) /* { dg-final { scan-file pr92296-2.i "hasattr1 = 0" } } */
++#pragma pop_macro("__has_attribute")
++hasattr2 = __has_attribute(noreturn) /* { dg-final { scan-file-not pr92296-2.i "hasattr2 = 0" } } */
++
++#pragma push_macro("__has_cpp_attribute")
++#undef __has_cpp_attribute /* { dg-warning "undefining" } */
++#define __has_cpp_attribute(x) 0
++hasattrcpp1 = __has_cpp_attribute(noreturn) /* { dg-final { scan-file pr92296-2.i "hasattrcpp1 = 0" } } */
++#pragma pop_macro("__has_cpp_attribute")
++hasattrcpp2 = __has_cpp_attribute(noreturn) /* { dg-final { scan-file-not pr92296-2.i "hasattrcpp2 = 0" } } */
+Index: gcc/testsuite/c-c++-common/array-1.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/array-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/array-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,247 @@
++// PR c++/90947 - Simple lookup table of array of strings is miscompiled
+// { dg-do compile }
-+// { dg-options "-Wunused" }
++// { dg-options "-O1 -fdump-tree-optimized" }
+
++#define assert(expr) ((expr) ? (void)0 : __builtin_abort ())
+
-+#define UNUSED __attribute__ ((unused))
-+
-+template <class T>
-+void f_int ()
++void pr90947 (void)
+{
-+ T t; // { dg-warning "unused variable" }
++ int vecsize = 4;
++ int index = 0;
++ static const char *a[4][4] =
++ {
++ { ".x", ".y", ".z", ".w" },
++ { ".xy", ".yz", ".zw", 0 },
++ { ".xyz", ".yzw", 0, 0 },
++ { "", 0, 0, 0 },
++ };
+
-+ typedef T U;
-+ U u; // { dg-warning "unused variable" }
++ assert (vecsize >= 1 && vecsize <= 4);
++ assert (index >= 0 && index < 4);
++ assert (a[vecsize - 1][index]);
+}
+
-+template void f_int<int>();
-+
-+
-+template <class T>
-+void f_intptr ()
++void f_a1_1 (void)
+{
-+ T *t = 0; // { dg-warning "unused variable" }
-+
-+ typedef T U;
-+ U *u = 0; // { dg-warning "unused variable" }
++ {
++ const char* a[1][1] = { { 0 } };
++ assert (0 == a[0][0]);
++ }
++ {
++ const char* a[1][1] = { { "" } };
++ assert ('\0' == *a[0][0]);
++ }
+}
+
-+template void f_intptr<int>();
-+
-+
-+template <class T>
-+void f_var_unused ()
++void f_a2_1 (void)
+{
-+ // The variable is marked unused.
-+ T t UNUSED;
-+
-+ typedef T U;
-+ U u UNUSED;
++ {
++ const char* a[2][1] = { { "" }, { "" } };
++ assert ('\0' == *a[0][0] && '\0' == *a[1][0]);
++ }
++ {
++ const char* a[2][1] = { { 0 }, { "" } };
++ assert (0 == a[0][0] && '\0' == *a[1][0]);
++ }
++ {
++ const char* a[2][1] = { { }, { "" } };
++ assert (0 == a[0][0] && '\0' == *a[1][0]);
++ }
+}
+
-+template void f_var_unused<int>();
-+
-+
-+template <class T>
-+void f_var_type_unused ()
++void f_a2_2 (void)
+{
-+ // The variable's type is marked unused.
-+ T* UNUSED t = new T; // { dg-bogus "unused variable" "bug 79585" { xfail *-*-* } }
-+
-+ typedef T U;
-+ U* UNUSED u = new U; // { dg-bogus "unused variable" "bug 79585" { xfail *-*-* } }
-+
-+ typedef T UNUSED U;
-+ U v = U (); // { dg-bogus "unused variable" "bug 79585" }
++ {
++ const char* a[2][2] = { { "", "" }, { "", "" } };
++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]);
++ assert ('\0' == *a[1][0] && '\0' == *a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { "", "" }, { "", 0 } };
++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]);
++ assert ('\0' == *a[1][0] && 0 == a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { "", "" }, { "" } };
++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]);
++ assert ('\0' == *a[1][0] && 0 == a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { "", "" }, { 0, "" } };
++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]);
++ assert (0 == a[1][0] && '\0' == *a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { "", 0 }, { 0, "" } };
++ assert ('\0' == *a[0][0] && 0 == a[0][1]);
++ assert (0 == a[1][0] && '\0' == *a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { 0, 0 }, { 0, "" } };
++ assert (0 == a[0][0] && 0 == a[0][1]);
++ assert (0 == a[1][0] && '\0' == *a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { 0 }, { 0, "" } };
++ assert (0 == a[0][0] && 0 == a[0][1]);
++ assert (0 == a[1][0] && '\0' == *a[1][1]);
++ }
++ {
++ const char* a[2][2] = { { }, { 0, "" } };
++ assert (0 == a[0][0] && 0 == a[0][1]);
++ assert (0 == a[1][0] && '\0' == *a[1][1]);
++ }
+}
+
-+template void f_var_type_unused<int>();
-+
-+
-+struct A { int i; };
-+
-+template <class T>
-+void f_A ()
++void f_a2_2_2 (void)
+{
-+ T t; // { dg-warning "unused variable" }
-+
-+ typedef T U;
-+ U u; // { dg-warning "unused variable" }
-+}
-+
-+template void f_A<A>();
++ {
++ const char* a[2][2][2] =
++ { { { "", "" }, { "", "" } }, { { "", "" }, { "", "" } } };
+
++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]);
++ assert ('\0' == *a[0][1][0] && '\0' == *a[0][1][1]);
++ assert ('\0' == *a[1][0][0] && '\0' == *a[1][0][1]);
++ assert ('\0' == *a[1][1][0] && '\0' == *a[1][1][1]);
++ }
+
-+template <class T>
-+void f_A_unused ()
-+{
-+ T t UNUSED;
++ {
++ const char* a[2][2][2] =
++ { { { "", "" }, { "", "" } }, { { "", "" }, { 0, "" } } };
+
-+ typedef T U;
-+ U u UNUSED;
-+}
++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]);
++ assert ('\0' == *a[0][1][0] && '\0' == *a[0][1][1]);
++ assert ('\0' == *a[1][0][0] && '\0' == *a[1][0][1]);
++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]);
++ }
+
-+template void f_A_unused<A>();
++ {
++ const char* a[2][2][2] =
++ { { { "", "" }, { "", "" } }, { { 0, 0 }, { 0, "" } } };
+
++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]);
++ assert ('\0' == *a[0][1][0] && '\0' == *a[0][1][1]);
++ assert (0 == a[1][0][0] && 0 == a[1][0][1]);
++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]);
++ }
+
-+struct B { B (); };
++ {
++ const char* a[2][2][2] =
++ { { { "", "" }, { 0, 0 } }, { { 0, 0 }, { 0, "" } } };
+
-+template <class T>
-+void f_B ()
-+{
-+ T t;
++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]);
++ assert (0 == a[0][1][0] && 0 == a[0][1][1]);
++ assert (0 == a[1][0][0] && 0 == a[1][0][1]);
++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]);
++ }
+
-+ typedef T U;
-+ U u;
-+}
++ {
++ const char* a[2][2][2] =
++ { { { 0, 0 }, { 0, 0 } }, { { 0, 0 }, { 0, "" } } };
+
-+template void f_B<B>();
++ assert (0 == a[0][0][0] && 0 == a[0][0][1]);
++ assert (0 == a[0][1][0] && 0 == a[0][1][1]);
++ assert (0 == a[1][0][0] && 0 == a[1][0][1]);
++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]);
++ }
+
++ {
++ const char* a[2][2][2] =
++ { { { }, { } }, { { }, { 0, "" } } };
+
-+struct NonTrivialDtor { ~NonTrivialDtor (); };
++ assert (0 == a[0][0][0] && 0 == a[0][0][1]);
++ assert (0 == a[0][1][0] && 0 == a[0][1][1]);
++ assert (0 == a[1][0][0] && 0 == a[1][0][1]);
++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]);
++ }
++}
+
-+template <class T>
-+void f_with_NonTrivialDtor ()
++void f_sa2_2_2 (void)
+{
-+ // Expect no warnings when instantiated on a type with a non-trivial
-+ // destructor.
-+ T t;
++ struct S { const char a[2], *s, c; };
+
-+ typedef T U;
-+ U u;
-+}
++ {
++ const struct S a[2][2][2] = {
++ { },
++ {
++ { { }, { "", "" } },
++ { }
++ }
++ };
+
-+template void f_with_NonTrivialDtor<NonTrivialDtor>();
++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s && 0 == a[0][0][0].c);
++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s && 0 == a[0][0][1].c);
++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s && 0 == a[0][1][0].c);
++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s && 0 == a[0][1][1].c);
+
++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s && 0 == a[1][0][0].c);
++ assert ('\0' == *a[1][0][1].a && '\0' == *a[1][0][1].s && 0 == a[1][0][1].c);
++ assert ('\0' == *a[1][1][0].a && 0 == a[1][1][0].s && 0 == a[1][1][0].c);
++ assert ('\0' == *a[1][1][1].a && 0 == a[1][1][1].s && 0 == a[1][1][1].c);
++ }
+
-+struct D { NonTrivialDtor b; };
++ {
++ const struct S a[2][2][2] = {
++ { },
++ {
++ { { } },
++ { { "", "" } }
++ }
++ };
+
-+template <class T>
-+void f_D ()
-+{
-+ // Same as f_with_NonTrivialDtor but with a class that has a member
-+ // with a non-trivial dtor.
-+ T t;
++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s);
++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s);
++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s);
++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s);
+
-+ typedef T U;
-+ U u;
-+}
++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s);
++ assert ('\0' == *a[1][0][1].a && 0 == a[1][0][1].s);
++ assert ('\0' == *a[1][1][0].a && '\0' == *a[1][1][0].s);
++ assert ('\0' == *a[1][1][1].a && 0 == a[1][1][1].s);
++ }
+
-+template void f_D<D>();
++ {
++ const struct S a[2][2][2] = {
++ { },
++ {
++ { { }, { } },
++ { { }, { "", "", 0 } }
++ }
++ };
+
++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s);
++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s);
++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s);
++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s);
+
-+struct UNUSED DeclaredUnused { };
++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s);
++ assert ('\0' == *a[1][0][1].a && 0 == a[1][0][1].s);
++ assert ('\0' == *a[1][1][0].a && 0 == a[1][1][0].s);
++ assert ('\0' == *a[1][1][1].a && '\0' == *a[1][1][1].s);
++ }
+
-+template <class T>
-+void f_with_unused ()
-+{
-+ // Expect no warnings when instantiatiated on a type declared
-+ // with attribute unused.
-+ T t;
++ {
++ const struct S a[2][2][2] = {
++ {
++ { { { 0 }, 0, 0 }, { { 0 } , 0, 0 } },
++ { { { 0 }, 0, 0 }, { { 0 } , 0, 0 } },
++ },
++ {
++ { { { 0 }, 0, 0 }, { { 0 } , 0, 0 } },
++ { { }, { "", "", 0 } }
++ }
++ };
++
++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s);
++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s);
++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s);
++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s);
+
-+ typedef T U;
-+ U u;
++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s);
++ assert ('\0' == *a[1][0][1].a && 0 == a[1][0][1].s);
++ assert ('\0' == *a[1][1][0].a && 0 == a[1][1][0].s);
++ assert ('\0' == *a[1][1][1].a && '\0' == *a[1][1][1].s);
++ }
+}
+
-+template void f_with_unused<DeclaredUnused>();
-Index: gcc/testsuite/g++.dg/warn/Wpadded-1.C
++// { dg-final { scan-tree-dump-not "abort" "optimized" } }
+Index: gcc/testsuite/c-c++-common/gomp/pr88203-2.c
===================================================================
---- a/src/gcc/testsuite/g++.dg/warn/Wpadded-1.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/warn/Wpadded-1.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+// PR c++/79900 - ICE in strip_typedefs
-+// { dg-do compile }
-+// { dg-options "-Wpadded" }
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr88203-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88203-2.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,65 @@
++/* PR c++/88203 */
++/* { dg-do compile } */
++/* { dg-additional-options "-std=gnu99" { target c } } */
++/* { dg-additional-options "-std=gnu++11" { target c++ } } */
+
-+template <class> struct A;
-+template <typename> struct B { // { dg-warning "padding struct size to alignment boundary" }
-+ long long _M_off;
-+ char _M_state;
-+};
-+template <> struct A<char> { typedef B<int> pos_type; };
-+enum _Ios_Openmode {};
-+struct C {
-+ typedef _Ios_Openmode openmode;
-+};
-+template <typename, typename _Traits> struct D {
-+ typedef typename _Traits::pos_type pos_type;
-+ pos_type m_fn1(pos_type, C::openmode);
-+};
-+template class D<char, A<char> >;
-+template <typename _CharT, typename _Traits>
-+typename D<_CharT, _Traits>::pos_type D<_CharT, _Traits>::m_fn1(pos_type x,
-+ C::openmode) { return x; }
-Index: gcc/testsuite/g++.dg/template/memtmpl5.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/template/memtmpl5.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/template/memtmpl5.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,22 @@
-+// PR c++/79508
++void foo (const char *, const char *);
++#pragma omp declare target to (foo)
+
-+struct C
++void
++f1 (void)
+{
-+ template< void(*F)()> void set_default() { }
-+};
-+
++ #pragma omp parallel default(none)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++}
+
-+template <class T> void random_positive()
++void
++f2 (void)
+{
++ #pragma omp parallel default(none) shared(__FUNCTION__, __PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++ #pragma omp parallel default(none) shared(__FUNCTION__) firstprivate(__PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
+}
+
-+template<class T> void initialize(T& x)
++void
++f3 (void)
+{
-+ x.template set_default<random_positive<T> >();
++ #pragma omp parallel default(none) firstprivate(__FUNCTION__, __PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++ #pragma omp parallel default(none) firstprivate(__FUNCTION__), shared(__PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
+}
+
-+int main ()
++void
++f4 (void)
+{
-+ C x;
-+ initialize<C>(x);
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++ #pragma omp parallel default(none)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
+}
-Index: gcc/testsuite/g++.dg/template/init11.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/template/init11.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/template/init11.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,9 @@
-+// PR c++/79607
-+// { dg-do compile { target c++11 } }
+
-+template<typename T> struct A
++void
++f5 (void)
+{
-+ static const int i = int{T{}};
-+};
-+
-+A<int> a;
-Index: gcc/testsuite/g++.dg/template/bitfield3.C
-===================================================================
---- a/src/gcc/testsuite/g++.dg/template/bitfield3.C (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/g++.dg/template/bitfield3.C (.../branches/gcc-6-branch)
-@@ -0,0 +1,20 @@
-+// PR c++/78908
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++ #pragma omp parallel default(none) shared(__FUNCTION__, __PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++}
+
-+struct A { int a : 1; };
-+struct F { int foo (A const &); };
-+template <typename> struct O : F { int foo (A const &); };
-+struct S {} b;
-+template <typename L, typename T> int operator<< (L, T) { return (T) 123; }
-+template <typename T> int O<T>::foo (A const &x) { return b << x.a; }
++void
++f6 (void)
++{
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++ #pragma omp parallel default(none) firstprivate(__FUNCTION__, __PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++}
+
-+int
-+main ()
++void
++f7 (void)
+{
-+ A a = { 0 };
-+ O<int> o;
-+ if (o.foo (a) != 123)
-+ __builtin_abort ();
-+ signed char d = 2;
-+ if ((b << d) != 123)
-+ __builtin_abort ();
++ #pragma omp target map(to: __FUNCTION__, __PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
++ #pragma omp task depend(inout:__FUNCTION__, __PRETTY_FUNCTION__)
++ foo (__FUNCTION__, __PRETTY_FUNCTION__);
+}
-Index: gcc/testsuite/c-c++-common/ubsan/shift-10.c
+Index: gcc/testsuite/c-c++-common/gomp/pr91401-1.c
===================================================================
---- a/src/gcc/testsuite/c-c++-common/ubsan/shift-10.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/ubsan/shift-10.c (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr91401-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91401-1.c (.../branches/gcc-9-branch)
@@ -0,0 +1,10 @@
-+/* PR sanitizer/80067 */
-+/* { dg-do compile } */
-+/* { dg-options "-fsanitize=shift" } */
++/* PR c/91401 */
+
-+extern signed char a;
+void
-+foo ()
++foo (void)
+{
-+ 0 << ((647 > a) - 1);
++ int i;
++ #pragma omp distribute parallel for schedule (static) dist_schedule (static)
++ for (i = 0; i < 64; i++)
++ ;
+}
-Index: gcc/testsuite/c-c++-common/ubsan/bounds-14.c
+Index: gcc/testsuite/c-c++-common/gomp/pr88203-3.c
===================================================================
---- a/src/gcc/testsuite/c-c++-common/ubsan/bounds-14.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/ubsan/bounds-14.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,13 @@
-+/* PR sanitizer/79558 */
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr88203-3.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88203-3.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,28 @@
++/* PR c++/88203 */
+/* { dg-do compile } */
-+/* { dg-options "-fsanitize=bounds" } */
++/* { dg-additional-options "-std=c99" { target c } } */
++/* { dg-additional-options "-std=c++11" { target c++ } } */
++
++void foo (const char *);
++#pragma omp declare target to (foo)
+
+void
-+fn1 (int n)
++f1 (void)
+{
-+ int i, j;
-+ int x[2][0];
-+ for (i = 0; i < n; i++)
-+ for (j = 0; j < n; j++)
-+ x[i][j] = 5;
++ #pragma omp parallel for lastprivate (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'lastprivate'" } */
++ for (int i = 0; i < 2; i++)
++ foo (__func__);
++ #pragma omp parallel private (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'private'" } */
++ foo (__func__);
+}
-Index: gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-4.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+/* PR c/79428 */
-+/* { dg-options "-fcilkplus" } */
-+#pragma cilk grainsize /* { dg-error "must be inside a function" } */
-Index: gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/cilk-plus/CK/pr79428-7.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+/* PR c/79428 */
-+/* { dg-options "-fcilkplus" } */
-+#pragma simd /* { dg-error "must be inside a function" } */
-Index: gcc/testsuite/c-c++-common/asan/pr79944.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/asan/pr79944.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/asan/pr79944.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,18 @@
-+/* PR sanitizer/79944 */
-+/* { dg-do run } */
+
-+struct S { int i; char p[1024]; };
-+
-+int
-+main ()
++void
++f2 (void)
+{
-+ struct S *p = (struct S *) __builtin_malloc (__builtin_offsetof (struct S, p) + 64);
-+ p->i = 5;
-+ asm volatile ("" : "+r" (p) : : "memory");
-+ __atomic_fetch_add ((int *) p, 5, __ATOMIC_RELAXED);
-+ asm volatile ("" : "+r" (p) : : "memory");
-+ if (p->i != 10)
-+ __builtin_abort ();
-+ __builtin_free (p);
-+ return 0;
++ foo (__func__);
++ #pragma omp parallel default(none) private (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'private'" } */
++ foo (__func__);
++ #pragma omp parallel for default(none) lastprivate (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'lastprivate'" } */
++ for (int i = 0; i < 2; i++)
++ foo (__func__);
+}
-Index: gcc/testsuite/c-c++-common/Wunused-var-16.c
+Index: gcc/testsuite/c-c++-common/gomp/pr91401-2.c
===================================================================
---- a/src/gcc/testsuite/c-c++-common/Wunused-var-16.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/Wunused-var-16.c (.../branches/gcc-6-branch)
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr91401-2.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91401-2.c (.../branches/gcc-9-branch)
@@ -0,0 +1,15 @@
-+/* PR c++/78949 */
-+/* { dg-do compile } */
-+/* { dg-options "-Wunused" } */
++#pragma omp declare target
++void f0 (void);
++
++void
++f1 (void)
++{
++ int i;
++ #pragma omp distribute dist_schedule(static) dist_schedule(static) /* { dg-warning "too many 'dist_schedule' clauses" } */
++ for (i = 0; i < 8; ++i)
++ f0 ();
++ #pragma omp distribute dist_schedule(static,2) dist_schedule(static,4) /* { dg-warning "too many 'dist_schedule' clauses" } */
++ for (i = 0; i < 8; ++i)
++ f0 ();
++}
++#pragma omp end declare target
+Index: gcc/testsuite/c-c++-common/gomp/pr91920.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr91920.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91920.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,19 @@
++/* PR middle-end/91920 */
+
-+typedef unsigned char V __attribute__((vector_size(16)));
-+V v;
++void bar (float *);
+
+void
-+foo ()
++foo (void)
+{
-+ V y = {};
-+ V x = {}; // { dg-bogus "set but not used" }
-+ y &= ~x;
-+ v = y;
++ int i;
++ float f[3] = { 0.0f, 0.0f, 0.0f };
++#pragma omp parallel for default(none) reduction(+:f[:3])
++ for (i = 0; i < 1000; i++)
++ {
++ int j;
++ float k[3] = { 0.25f, 0.5f, 0.75f };
++ for (j = 0; j < 3; j++)
++ f[j] += k[j];
++ }
++ bar (f);
+}
-Index: gcc/testsuite/c-c++-common/nonnull-3.c
+Index: gcc/testsuite/c-c++-common/gomp/pr88203-1.c
===================================================================
---- a/src/gcc/testsuite/c-c++-common/nonnull-3.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/nonnull-3.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,11 @@
-+/* PR c++/79984 */
+--- a/src/gcc/testsuite/c-c++-common/gomp/pr88203-1.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88203-1.c (.../branches/gcc-9-branch)
+@@ -0,0 +1,61 @@
++/* PR c++/88203 */
+/* { dg-do compile } */
-+/* { dg-options "-Wnonnull-compare" } */
++/* { dg-additional-options "-std=c99" { target c } } */
++/* { dg-additional-options "-std=c++11" { target c++ } } */
+
-+enum { r = 1 };
++void foo (const char *);
++#pragma omp declare target to (foo)
+
-+__attribute__ ((nonnull (r))) int
-+f (int *p)
++void
++f1 (void)
+{
-+ return p == 0; /* { dg-warning "nonnull argument 'p' compared to NULL" } */
++ #pragma omp parallel default(none)
++ foo (__func__);
+}
-Index: gcc/testsuite/c-c++-common/pr79641.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/pr79641.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/pr79641.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,4 @@
-+/* PR c++/79641 */
-+/* { dg-do compile } */
+
-+const int __attribute__((__mode__ (__QI__))) i = 0;
-Index: gcc/testsuite/c-c++-common/pr79428-3.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/pr79428-3.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/pr79428-3.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+/* PR c/79428 */
-+int i;
-+#pragma GCC pch_preprocess /* { dg-error "'#pragma GCC pch_preprocess' must be first" } */
-Index: gcc/testsuite/c-c++-common/gomp/pr79428-5.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/gomp/pr79428-5.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/gomp/pr79428-5.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+/* PR c/79428 */
-+/* { dg-options "-fopenmp" } */
-+#pragma omp ordered /* { dg-error "expected declaration specifiers before end of line" } */
-Index: gcc/testsuite/c-c++-common/gomp/pr79512.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/gomp/pr79512.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/gomp/pr79512.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
-+/* PR c++/79512 */
-+/* { dg-options "-fopenmp-simd" } */
++void
++f2 (void)
++{
++ #pragma omp parallel default(none) shared(__func__)
++ foo (__func__);
++}
+
+void
-+foo (void)
++f3 (void)
+{
-+ #pragma omp target
-+ #pragma omp teams
-+ {
-+ int i;
-+ for (i = 0; i < 10; i++)
-+ ;
-+ }
++ #pragma omp parallel default(none) firstprivate(__func__)
++ foo (__func__);
+}
-Index: gcc/testsuite/c-c++-common/gomp/pr79431.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/gomp/pr79431.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/gomp/pr79431.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,8 @@
-+/* PR c/79431 */
+
+void
-+foo (void)
++f4 (void)
+{
-+ int a;
-+ #pragma omp declare target (a)
++ foo (__func__);
++ #pragma omp parallel default(none)
++ foo (__func__);
+}
-Index: gcc/testsuite/c-c++-common/gomp/pr79428-2.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/gomp/pr79428-2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/gomp/pr79428-2.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,7 @@
-+/* PR c/79428 */
-+/* { dg-options "-fopenmp" } */
++
+void
-+foo ()
++f5 (void)
+{
-+#pragma omp sections
-+#pragma omp section /* { dg-error "'#pragma omp section' may only be used in '#pragma omp sections' construct|not allowed|expected" } */
-Index: gcc/testsuite/c-c++-common/gomp/pr79429.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/gomp/pr79429.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/gomp/pr79429.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+/* PR c++/79429 */
-+
-+#pragma omp target /* { dg-error "expected declaration specifiers" } */
-Index: gcc/testsuite/c-c++-common/gomp/pr79428-6.c
-===================================================================
---- a/src/gcc/testsuite/c-c++-common/gomp/pr79428-6.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/testsuite/c-c++-common/gomp/pr79428-6.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,3 @@
-+/* PR c/79428 */
-+/* { dg-options "-fopenmp" } */
-+#pragma omp target /* { dg-error "expected declaration specifiers before end of line" } */
++ foo (__func__);
++ #pragma omp parallel default(none) shared(__func__)
++ foo (__func__);
++}
++
++void
++f6 (void)
++{
++ foo (__func__);
++ #pragma omp parallel default(none) firstprivate(__func__)
++ foo (__func__);
++}
++
++void
++f7 (void)
++{
++ #pragma omp target map(to: __func__)
++ foo (__func__);
++ #pragma omp task depend(inout:__func__)
++ foo (__func__);
++}
Index: gcc/cp/typeck.c
===================================================================
---- a/src/gcc/cp/typeck.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/typeck.c (.../branches/gcc-6-branch)
-@@ -5848,6 +5848,8 @@
- errstring = _("wrong type argument to bit-complement");
- else if (!noconvert && CP_INTEGRAL_TYPE_P (TREE_TYPE (arg)))
- arg = cp_perform_integral_promotions (arg, complain);
-+ else if (!noconvert && VECTOR_TYPE_P (TREE_TYPE (arg)))
-+ arg = mark_rvalue_use (arg);
- break;
+--- a/src/gcc/cp/typeck.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/typeck.c (.../branches/gcc-9-branch)
+@@ -4309,7 +4309,7 @@
+ || TREE_NO_WARNING (op))
+ return;
- case ABS_EXPR:
-@@ -8341,7 +8343,12 @@
- overloaded function. Call instantiate_type to get error
- messages. */
- if (rhstype == unknown_type_node)
-- instantiate_type (type, rhs, tf_warning_or_error);
-+ {
-+ tree r = instantiate_type (type, rhs, tf_warning_or_error);
-+ /* -fpermissive might allow this. */
-+ if (!seen_error ())
-+ return r;
-+ }
- else if (fndecl)
- error ("cannot convert %qT to %qT for argument %qP to %qD",
- rhstype, type, parmnum, fndecl);
-Index: gcc/cp/init.c
-===================================================================
---- a/src/gcc/cp/init.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/init.c (.../branches/gcc-6-branch)
-@@ -796,6 +796,14 @@
- in that case. */
- init = build_x_compound_expr_from_list (init, ELK_MEM_INIT,
- tf_warning_or_error);
-+ if (TREE_CODE (type) == ARRAY_TYPE
-+ && TYPE_DOMAIN (type) == NULL_TREE
-+ && init != NULL_TREE)
-+ {
-+ error_at (DECL_SOURCE_LOCATION (current_function_decl),
-+ "member initializer for flexible array member");
-+ inform (DECL_SOURCE_LOCATION (member), "%q#D initialized", member);
-+ }
+- tree cop = fold_non_dependent_expr (op, complain);
++ tree cop = fold_for_warn (op);
- if (init)
- finish_expr_stmt (cp_build_modify_expr (decl, INIT_EXPR, init,
-@@ -2069,7 +2077,8 @@
- init = DECL_INITIAL (decl);
- if (init == error_mark_node)
+ if (TREE_CODE (cop) == ADDR_EXPR
+ && decl_with_nonnull_addr_p (TREE_OPERAND (cop, 0))
+@@ -4632,9 +4632,8 @@
+ || code1 == COMPLEX_TYPE || code1 == VECTOR_TYPE))
{
-- if (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
-+ if (TREE_CODE (decl) == CONST_DECL
-+ || DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
- /* Treat the error as a constant to avoid cascading errors on
- excessively recursive template instantiation (c++/9335). */
- return init;
-@@ -2110,6 +2119,13 @@
- if (TREE_CODE (init) == CONSTRUCTOR
- && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl))
- break;
-+ /* If the variable has a dynamic initializer, don't use its
-+ DECL_INITIAL which doesn't reflect the real value. */
-+ if (VAR_P (decl)
-+ && TREE_STATIC (decl)
-+ && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)
-+ && DECL_NONTRIVIALLY_INITIALIZED_P (decl))
-+ break;
- decl = unshare_expr (init);
- }
- return decl;
-Index: gcc/cp/decl.c
-===================================================================
---- a/src/gcc/cp/decl.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/decl.c (.../branches/gcc-6-branch)
-@@ -778,7 +778,8 @@
- back ends won't understand OVERLOAD, so we remove them here.
- Because the BLOCK_VARS are (temporarily) shared with
- CURRENT_BINDING_LEVEL->NAMES we must do this fixup after we have
-- popped all the bindings. */
-+ popped all the bindings. Also remove undeduced 'auto' decls,
-+ which LTO doesn't understand, and can't have been used by anything. */
- if (block)
- {
- tree* d;
-@@ -785,7 +786,9 @@
+ enum tree_code tcode0 = code0, tcode1 = code1;
+- tree cop1 = fold_non_dependent_expr (op1, complain);
+ doing_div_or_mod = true;
+- warn_for_div_by_zero (location, cop1);
++ warn_for_div_by_zero (location, fold_for_warn (op1));
+
+ if (tcode0 == COMPLEX_TYPE || tcode0 == VECTOR_TYPE)
+ tcode0 = TREE_CODE (TREE_TYPE (TREE_TYPE (op0)));
+@@ -4673,11 +4672,8 @@
+
+ case TRUNC_MOD_EXPR:
+ case FLOOR_MOD_EXPR:
+- {
+- tree cop1 = fold_non_dependent_expr (op1, complain);
+- doing_div_or_mod = true;
+- warn_for_div_by_zero (location, cop1);
+- }
++ doing_div_or_mod = true;
++ warn_for_div_by_zero (location, fold_for_warn (op1));
- for (d = &BLOCK_VARS (block); *d; )
+ if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE
+ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE
+@@ -4770,7 +4766,7 @@
+ }
+ else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
{
-- if (TREE_CODE (*d) == TREE_LIST)
-+ if (TREE_CODE (*d) == TREE_LIST
-+ || (!processing_template_decl
-+ && undeduced_auto_decl (*d)))
- *d = TREE_CHAIN (*d);
- else
- d = &DECL_CHAIN (*d);
-@@ -6488,6 +6491,9 @@
- else if (TREE_CODE (init) == CONSTRUCTOR)
- /* A brace-enclosed initializer, e.g.: int i = { 3 }; ? */
- {
-+ if (dependent_type_p (TREE_TYPE (init)))
-+ return true;
-+
- vec<constructor_elt, va_gc> *elts;
- size_t nelts;
- size_t i;
-@@ -10574,9 +10580,9 @@
- else if (TREE_CODE (type) == FUNCTION_TYPE)
+- tree const_op1 = fold_non_dependent_expr (op1, complain);
++ tree const_op1 = fold_for_warn (op1);
+ if (TREE_CODE (const_op1) != INTEGER_CST)
+ const_op1 = op1;
+ result_type = type0;
+@@ -4816,10 +4812,10 @@
+ }
+ else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
{
- if (current_class_type
-- && (!friendp || funcdef_flag))
-+ && (!friendp || funcdef_flag || initialized))
- {
-- error (funcdef_flag
-+ error (funcdef_flag || initialized
- ? G_("cannot define member function %<%T::%s%> "
- "within %<%T%>")
- : G_("cannot declare member function %<%T::%s%> "
-@@ -13491,9 +13497,12 @@
- input_location = saved_location;
-
- /* Do not clobber shared ints. */
-- value = copy_node (value);
-+ if (value != error_mark_node)
-+ {
-+ value = copy_node (value);
-
-- TREE_TYPE (value) = enumtype;
-+ TREE_TYPE (value) = enumtype;
-+ }
- DECL_INITIAL (decl) = value;
- }
-
-Index: gcc/cp/constexpr.c
-===================================================================
---- a/src/gcc/cp/constexpr.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/constexpr.c (.../branches/gcc-6-branch)
-@@ -378,6 +378,9 @@
- if (TREE_CODE (member) == COMPONENT_REF)
+- tree const_op0 = fold_non_dependent_expr (op0, complain);
++ tree const_op0 = fold_for_warn (op0);
+ if (TREE_CODE (const_op0) != INTEGER_CST)
+ const_op0 = op0;
+- tree const_op1 = fold_non_dependent_expr (op1, complain);
++ tree const_op1 = fold_for_warn (op1);
+ if (TREE_CODE (const_op1) != INTEGER_CST)
+ const_op1 = op1;
+ result_type = type0;
+@@ -5516,9 +5512,9 @@
+ if (! converted)
{
- tree aggr = TREE_OPERAND (member, 0);
-+ if (TREE_CODE (aggr) == VAR_DECL)
-+ /* Initializing a local variable, don't add anything. */
-+ return true;
- if (TREE_CODE (aggr) != COMPONENT_REF)
- /* Normal member initialization. */
- member = TREE_OPERAND (member, 1);
-@@ -3239,6 +3242,11 @@
- tree fields = TYPE_FIELDS (DECL_CONTEXT (index));
- unsigned HOST_WIDE_INT idx;
-
-+ if (code == UNION_TYPE && CONSTRUCTOR_NELTS (*valp)
-+ && CONSTRUCTOR_ELT (*valp, 0)->index != index)
-+ /* Changing active member. */
-+ vec_safe_truncate (CONSTRUCTOR_ELTS (*valp), 0);
-+
- for (idx = 0;
- vec_safe_iterate (CONSTRUCTOR_ELTS (*valp), idx, &cep);
- idx++, fields = DECL_CHAIN (fields))
-@@ -3275,11 +3283,12 @@
- wants to modify it. */
- if (*valp == NULL_TREE)
- {
-- *valp = new_ctx.ctor = build_constructor (type, NULL);
-- CONSTRUCTOR_NO_IMPLICIT_ZERO (new_ctx.ctor) = no_zero_init;
-+ *valp = build_constructor (type, NULL);
-+ CONSTRUCTOR_NO_IMPLICIT_ZERO (*valp) = no_zero_init;
+ warning_sentinel w (warn_sign_conversion, short_compare);
+- if (TREE_TYPE (op0) != result_type)
++ if (!same_type_p (TREE_TYPE (op0), result_type))
+ op0 = cp_convert_and_check (result_type, op0, complain);
+- if (TREE_TYPE (op1) != result_type)
++ if (!same_type_p (TREE_TYPE (op1), result_type))
+ op1 = cp_convert_and_check (result_type, op1, complain);
+
+ if (op0 == error_mark_node || op1 == error_mark_node)
+@@ -9296,8 +9292,10 @@
+ tree base = DECL_DECOMP_BASE (whats_returned);
+ if (TYPE_REF_P (TREE_TYPE (base)))
+ {
+- tree init = DECL_INITIAL (base);
+- return maybe_warn_about_returning_address_of_local (init);
++ if (tree init = DECL_INITIAL (base))
++ return maybe_warn_about_returning_address_of_local (init);
++ else
++ return false;
+ }
}
-- else
-- new_ctx.ctor = *valp;
-+ else if (TREE_CODE (*valp) == PTRMEM_CST)
-+ *valp = cplus_expand_constant (*valp);
-+ new_ctx.ctor = *valp;
- new_ctx.object = target;
- }
-
-@@ -4976,10 +4985,40 @@
- case DELETE_EXPR:
- case VEC_DELETE_EXPR:
- case THROW_EXPR:
-+ case OMP_PARALLEL:
-+ case OMP_TASK:
-+ case OMP_FOR:
-+ case OMP_DISTRIBUTE:
-+ case OMP_TASKLOOP:
-+ case OMP_TEAMS:
-+ case OMP_TARGET_DATA:
-+ case OMP_TARGET:
-+ case OMP_SECTIONS:
-+ case OMP_ORDERED:
-+ case OMP_CRITICAL:
-+ case OMP_SINGLE:
-+ case OMP_SECTION:
-+ case OMP_MASTER:
-+ case OMP_TASKGROUP:
-+ case OMP_TARGET_UPDATE:
-+ case OMP_TARGET_ENTER_DATA:
-+ case OMP_TARGET_EXIT_DATA:
- case OMP_ATOMIC:
- case OMP_ATOMIC_READ:
- case OMP_ATOMIC_CAPTURE_OLD:
- case OMP_ATOMIC_CAPTURE_NEW:
-+ case OACC_PARALLEL:
-+ case OACC_KERNELS:
-+ case OACC_DATA:
-+ case OACC_HOST_DATA:
-+ case OACC_LOOP:
-+ case OACC_CACHE:
-+ case OACC_DECLARE:
-+ case OACC_ENTER_DATA:
-+ case OACC_EXIT_DATA:
-+ case OACC_UPDATE:
-+ case CILK_SIMD:
-+ case CILK_FOR:
- /* GCC internal stuff. */
- case VA_ARG_EXPR:
- case OBJ_TYPE_REF:
-@@ -4988,7 +5027,8 @@
- case AT_ENCODE_EXPR:
- fail:
- if (flags & tf_error)
-- error ("expression %qE is not a constant-expression", t);
-+ error_at (EXPR_LOC_OR_LOC (t, input_location),
-+ "expression %qE is not a constant-expression", t);
- return false;
+ bool w = false;
+Index: gcc/cp/class.c
+===================================================================
+--- a/src/gcc/cp/class.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/class.c (.../branches/gcc-9-branch)
+@@ -1907,6 +1907,7 @@
+ = TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t);
- case TYPEID_EXPR:
-@@ -5295,6 +5335,7 @@
- /* We can see these in statement-expressions. */
- return true;
+ TYPE_POLYMORPHIC_P (variants) = TYPE_POLYMORPHIC_P (t);
++ CLASSTYPE_FINAL (variants) = CLASSTYPE_FINAL (t);
-+ case CLEANUP_STMT:
- case EMPTY_CLASS_EXPR:
- return false;
+ TYPE_BINFO (variants) = TYPE_BINFO (t);
-Index: gcc/cp/error.c
-===================================================================
---- a/src/gcc/cp/error.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/error.c (.../branches/gcc-6-branch)
-@@ -2029,6 +2029,7 @@
- break;
+@@ -2149,10 +2150,10 @@
- case COND_EXPR:
-+ case VEC_COND_EXPR:
- pp_cxx_left_paren (pp);
- dump_expr (pp, TREE_OPERAND (t, 0), flags | TFF_EXPR_IN_PARENS);
- pp_string (pp, " ? ");
-Index: gcc/cp/tree.c
+ if (!nonprivate_ctor)
+ {
+- warning (OPT_Wctor_dtor_privacy,
+- "%q#T only defines private constructors and has no friends",
+- t);
+- if (copy_or_move)
++ bool w = warning (OPT_Wctor_dtor_privacy,
++ "%q#T only defines private constructors and has "
++ "no friends", t);
++ if (w && copy_or_move)
+ inform (DECL_SOURCE_LOCATION (copy_or_move),
+ "%q#D is public, but requires an existing %q#T object",
+ copy_or_move, t);
+Index: gcc/cp/decl.c
===================================================================
---- a/src/gcc/cp/tree.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/tree.c (.../branches/gcc-6-branch)
-@@ -107,6 +107,17 @@
- return op1_lvalue_kind;
-
- case COMPONENT_REF:
-+ if (BASELINK_P (TREE_OPERAND (ref, 1)))
+--- a/src/gcc/cp/decl.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/decl.c (.../branches/gcc-9-branch)
+@@ -4474,13 +4474,27 @@
+ static tree
+ cp_make_fname_decl (location_t loc, tree id, int type_dep)
+ {
+- const char *const name = (type_dep && in_template_function ()
+- ? NULL : fname_as_string (type_dep));
++ const char * name = NULL;
++ bool release_name = false;
++ if (!(type_dep && in_template_function ()))
++ {
++ if (current_function_decl == NULL_TREE)
++ name = "top level";
++ else if (type_dep == 1) /* __PRETTY_FUNCTION__ */
++ name = cxx_printable_name (current_function_decl, 2);
++ else if (type_dep == 0) /* __FUNCTION__ */
+ {
-+ tree fn = BASELINK_FUNCTIONS (TREE_OPERAND (ref, 1));
-+
-+ /* For static member function recurse on the BASELINK, we can get
-+ here e.g. from reference_binding. If BASELINK_FUNCTIONS is
-+ OVERLOAD, the overload is resolved first if possible through
-+ resolve_address_of_overloaded_function. */
-+ if (TREE_CODE (fn) == FUNCTION_DECL && DECL_STATIC_FUNCTION_P (fn))
-+ return lvalue_kind (TREE_OPERAND (ref, 1));
++ name = fname_as_string (type_dep);
++ release_name = true;
+ }
- op1_lvalue_kind = lvalue_kind (TREE_OPERAND (ref, 0));
- /* Look at the member designator. */
- if (!op1_lvalue_kind)
-@@ -1463,29 +1474,40 @@
- result = TYPE_MAIN_VARIANT (t);
- }
- gcc_assert (!typedef_variant_p (result));
-- if (TYPE_USER_ALIGN (t) != TYPE_USER_ALIGN (result)
-- || TYPE_ALIGN (t) != TYPE_ALIGN (result))
-+
-+ if (COMPLETE_TYPE_P (result) && !COMPLETE_TYPE_P (t))
-+ /* If RESULT is complete and T isn't, it's likely the case that T
-+ is a variant of RESULT which hasn't been updated yet. Skip the
-+ attribute handling. */;
-+ else
- {
-- gcc_assert (TYPE_USER_ALIGN (t));
-- if (remove_attributes)
-- *remove_attributes = true;
-- else
-+ if (TYPE_USER_ALIGN (t) != TYPE_USER_ALIGN (result)
-+ || TYPE_ALIGN (t) != TYPE_ALIGN (result))
++ else
++ gcc_unreachable ();
++ }
+ tree type;
+ tree init = cp_fname_init (name, &type);
+ tree decl = build_decl (loc, VAR_DECL, id, type);
+
+- if (name)
++ if (release_name)
+ free (CONST_CAST (char *, name));
+
+ /* As we're using pushdecl_with_scope, we must set the context. */
+@@ -5836,8 +5850,8 @@
+ /* Pointers initialized to strings must be treated as non-zero
+ even if the string is empty. */
+ tree init_type = TREE_TYPE (elt_init);
+- if ((POINTER_TYPE_P (elt_type) != POINTER_TYPE_P (init_type))
+- || !initializer_zerop (elt_init))
++ if (POINTER_TYPE_P (elt_type) != POINTER_TYPE_P (init_type)
++ || !type_initializer_zero_p (elt_type, elt_init))
+ last_nonzero = index;
+
+ /* This can happen with an invalid initializer (c++/54501). */
+@@ -6114,7 +6128,7 @@
+ (CONSTRUCTOR_ELT (stripped_init,0)->value))))
+ {
+ if (complain & tf_error)
+- error ("too many braces around scalar initializer"
++ error ("too many braces around scalar initializer "
+ "for type %qT", type);
+ init = error_mark_node;
+ }
+@@ -8407,7 +8421,7 @@
+ (acquire_name, build_function_type_list (integer_type_node,
+ TREE_TYPE (guard_addr),
+ NULL_TREE),
+- NULL_TREE, ECF_NOTHROW | ECF_LEAF);
++ NULL_TREE, ECF_NOTHROW);
+ if (!release_fn || !abort_fn)
+ vfntype = build_function_type_list (void_type_node,
+ TREE_TYPE (guard_addr),
+@@ -8414,7 +8428,7 @@
+ NULL_TREE);
+ if (!release_fn)
+ release_fn = push_library_fn (release_name, vfntype, NULL_TREE,
+- ECF_NOTHROW | ECF_LEAF);
++ ECF_NOTHROW);
+ if (!abort_fn)
+ abort_fn = push_library_fn (abort_name, vfntype, NULL_TREE,
+ ECF_NOTHROW | ECF_LEAF);
+@@ -9539,10 +9553,12 @@
+ TYPE_PTRMEMFUNC_FLAG (t) = 1;
+
+ field = build_decl (input_location, FIELD_DECL, pfn_identifier, type);
++ DECL_NONADDRESSABLE_P (field) = 1;
+ fields = field;
+
+ field = build_decl (input_location, FIELD_DECL, delta_identifier,
+ delta_type_node);
++ DECL_NONADDRESSABLE_P (field) = 1;
+ DECL_CHAIN (field) = fields;
+ fields = field;
+
+@@ -11435,6 +11451,8 @@
+ else if (late_return_type
+ && sfk != sfk_conversion)
+ {
++ if (late_return_type == error_mark_node)
++ return error_mark_node;
+ if (cxx_dialect < cxx11)
+ /* Not using maybe_warn_cpp0x because this should
+ always be an error. */
+@@ -13042,7 +13060,9 @@
+ /* Avoid redundant -Wzero-as-null-pointer-constant warnings at
+ the call sites. */
+ if (TYPE_PTR_OR_PTRMEM_P (decl_type)
+- && null_ptr_cst_p (arg))
++ && null_ptr_cst_p (arg)
++ /* Don't lose side-effects as in PR90473. */
++ && !TREE_SIDE_EFFECTS (arg))
+ return nullptr_node;
+
+ /* [dcl.fct.default]
+Index: gcc/cp/constexpr.c
+===================================================================
+--- a/src/gcc/cp/constexpr.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/constexpr.c (.../branches/gcc-9-branch)
+@@ -2703,7 +2703,10 @@
+ : field == part)
{
-- if (TYPE_ALIGN (t) == TYPE_ALIGN (result))
-- result = build_variant_type_copy (result);
-+ gcc_assert (TYPE_USER_ALIGN (t));
-+ if (remove_attributes)
-+ *remove_attributes = true;
- else
-- result = build_aligned_type (result, TYPE_ALIGN (t));
-- TYPE_USER_ALIGN (result) = true;
+ if (value)
+- return value;
+ {
-+ if (TYPE_ALIGN (t) == TYPE_ALIGN (result))
-+ result = build_variant_type_copy (result);
-+ else
-+ result = build_aligned_type (result, TYPE_ALIGN (t));
-+ TYPE_USER_ALIGN (result) = true;
++ STRIP_ANY_LOCATION_WRAPPER (value);
++ return value;
+ }
- }
+ else
+ /* We're in the middle of initializing it. */
+ break;
+@@ -2793,6 +2796,7 @@
+ FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (whole), i, field, value)
+ {
+ tree bitpos = bit_position (field);
++ STRIP_ANY_LOCATION_WRAPPER (value);
+ if (bitpos == start && DECL_SIZE (field) == TREE_OPERAND (t, 1))
+ return value;
+ if (TREE_CODE (TREE_TYPE (field)) == INTEGER_TYPE
+@@ -3973,6 +3977,10 @@
+ tree offset = TREE_OPERAND (t, 1);
+ gcc_assert (TREE_CONSTANT (offset));
+
++ /* OFFSET is constant, but perhaps not constant enough. We need to
++ e.g. bash FLOAT_EXPRs to REAL_CSTs. */
++ offset = fold_simple (offset);
++
+ /* The operand as an lvalue. */
+ op = cxx_eval_constant_expression (ctx, op, true,
+ non_constant_p, overflow_p);
+@@ -5917,6 +5925,7 @@
+ case LABEL_DECL:
+ case LABEL_EXPR:
+ case CASE_LABEL_EXPR:
++ case PREDICT_EXPR:
+ case CONST_DECL:
+ case SIZEOF_EXPR:
+ case ALIGNOF_EXPR:
+@@ -6751,7 +6760,6 @@
+
+ case CLEANUP_STMT:
+ case EMPTY_CLASS_EXPR:
+- case PREDICT_EXPR:
+ return false;
+
+ case GOTO_EXPR:
+Index: gcc/cp/tree.c
+===================================================================
+--- a/src/gcc/cp/tree.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/tree.c (.../branches/gcc-9-branch)
+@@ -5487,6 +5487,68 @@
+ return false;
+ }
+
++/* Given an initializer INIT for a TYPE, return true if INIT is zero
++ so that it can be replaced by value initialization. This function
++ distinguishes betwen empty strings as initializers for arrays and
++ for pointers (which make it return false). */
+
-+ if (TYPE_ATTRIBUTES (t))
-+ {
-+ if (remove_attributes)
-+ result = apply_identity_attributes (result, TYPE_ATTRIBUTES (t),
-+ remove_attributes);
-+ else
-+ result = cp_build_type_attribute_variant (result,
-+ TYPE_ATTRIBUTES (t));
-+ }
- }
-- if (TYPE_ATTRIBUTES (t))
-- {
-- if (remove_attributes)
-- result = apply_identity_attributes (result, TYPE_ATTRIBUTES (t),
-- remove_attributes);
-- else
-- result = cp_build_type_attribute_variant (result, TYPE_ATTRIBUTES (t));
-- }
++bool
++type_initializer_zero_p (tree type, tree init)
++{
++ if (type == error_mark_node || init == error_mark_node)
++ return false;
+
- return cp_build_qualified_type (result, cp_type_quals (t));
- }
-
-@@ -2775,7 +2797,7 @@
-
- t = make_node (code);
- length = TREE_CODE_LENGTH (code);
-- TREE_TYPE (t) = TREE_TYPE (non_dep);
-+ TREE_TYPE (t) = unlowered_expr_type (non_dep);
- TREE_SIDE_EFFECTS (t) = TREE_SIDE_EFFECTS (non_dep);
-
- for (i = 0; i < length; i++)
-@@ -2830,8 +2852,10 @@
- nargs = call_expr_nargs (non_dep);
-
- expected_nargs = cp_tree_code_length (op);
-- if (op == POSTINCREMENT_EXPR
-- || op == POSTDECREMENT_EXPR)
-+ if ((op == POSTINCREMENT_EXPR
-+ || op == POSTDECREMENT_EXPR)
-+ /* With -fpermissive non_dep could be operator++(). */
-+ && (!flag_permissive || nargs != expected_nargs))
- expected_nargs += 1;
- gcc_assert (nargs == expected_nargs);
-
-@@ -4146,6 +4170,14 @@
- if (TREE_PUBLIC (decl))
- return lk_external;
-
-+ /* maybe_thunk_body clears TREE_PUBLIC on the maybe-in-charge 'tor variants,
-+ check one of the "clones" for the real linkage. */
-+ if ((DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)
-+ || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl))
-+ && DECL_CHAIN (decl)
-+ && DECL_CLONED_FUNCTION (DECL_CHAIN (decl)))
-+ return decl_linkage (DECL_CHAIN (decl));
-+
- if (TREE_CODE (decl) == NAMESPACE_DECL)
- return lk_external;
-
++ STRIP_NOPS (init);
++
++ if (POINTER_TYPE_P (type))
++ return TREE_CODE (init) != STRING_CST && initializer_zerop (init);
++
++ if (TREE_CODE (init) != CONSTRUCTOR)
++ return initializer_zerop (init);
++
++ if (TREE_CODE (type) == ARRAY_TYPE)
++ {
++ tree elt_type = TREE_TYPE (type);
++ elt_type = TYPE_MAIN_VARIANT (elt_type);
++ if (elt_type == char_type_node)
++ return initializer_zerop (init);
++
++ tree elt_init;
++ unsigned HOST_WIDE_INT i;
++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, elt_init)
++ if (!type_initializer_zero_p (elt_type, elt_init))
++ return false;
++ return true;
++ }
++
++ if (TREE_CODE (type) != RECORD_TYPE)
++ return initializer_zerop (init);
++
++ if (TYPE_NON_AGGREGATE_CLASS (type))
++ return false;
++
++ tree fld = TYPE_FIELDS (type);
++
++ tree fld_init;
++ unsigned HOST_WIDE_INT i;
++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, fld_init)
++ {
++ fld = next_initializable_field (fld);
++ if (!fld)
++ return true;
++
++ tree fldtype = TREE_TYPE (fld);
++ if (!type_initializer_zero_p (fldtype, fld_init))
++ return false;
++
++ fld = DECL_CHAIN (fld);
++ if (!fld)
++ break;
++ }
++
++ return true;
++}
++
+ #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
+ /* Complain that some language-specific thing hanging off a tree
+ node has been accessed improperly. */
Index: gcc/cp/ChangeLog
===================================================================
---- a/src/gcc/cp/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,249 @@
-+2017-05-05 Jakub Jelinek <jakub@redhat.com>
+--- a/src/gcc/cp/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,238 @@
++2019-11-08 Marek Polacek <polacek@redhat.com>
+
+ Backported from mainline
-+ 2017-04-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR c++/80363
-+ * error.c (dump_expr): Handle VEC_COND_EXPR like COND_EXPR.
++ 2019-10-29 Marek Polacek <polacek@redhat.com>
+
-+ 2017-04-10 Jakub Jelinek <jakub@redhat.com>
++ PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
++ * call.c (joust): Don't attempt to warn if ->second_conv is null.
+
-+ PR c++/80176
-+ * tree.c (lvalue_kind): For COMPONENT_REF with BASELINK second
-+ operand, if it is a static member function, recurse on the
-+ BASELINK.
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
+
-+ 2017-03-31 Jakub Jelinek <jakub@redhat.com>
++ Backported from mainline
++ 2019-11-05 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79572
-+ * cp-gimplify.c (cp_genericize_r): Sanitize INTEGER_CSTs with
-+ REFERENCE_TYPE. Adjust ubsan_maybe_instrument_reference caller
-+ for NOP_EXPR to REFERENCE_TYPE.
++ PR c++/92343
++ * constexpr.c (potential_constant_expression_1): Return true rather
++ than false for PREDICT_EXPR.
+
-+ 2017-03-22 Jakub Jelinek <jakub@redhat.com>
++ 2019-10-31 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/80141
-+ * semantics.c (finish_omp_clause) <case OMP_CLAUSE_SIMDLEN,
-+ case OMP_CLAUSE_ALIGNED>: Call maybe_constant_value only when not
-+ processing_template_decl.
++ PR c++/90947
++ * cp-tree.h (type_initializer_zero_p): Declare.
++ * decl.c (reshape_init_array_1): Formatting fix.
++ * tree.c (type_initializer_zero_p): New function. Moved from
++ ../tree.c, use next_initializable_field, formatting fix. Return
++ false for TYPE_NON_AGGREGATE_CLASS types.
+
-+ 2017-03-10 Jakub Jelinek <jakub@redhat.com>
++ 2019-10-22 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79896
-+ * decl.c (finish_enum_value_list): If value is error_mark_node,
-+ don't copy it and change its type.
-+ * init.c (constant_value_1): Return error_mark_node if DECL_INITIAL
-+ of CONST_DECL is error_mark_node.
++ PR tree-optimization/85887
++ * decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire
++ and __cxa_guard_release.
+
-+ 2017-02-22 Jakub Jelinek <jakub@redhat.com>
++ 2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79664
-+ * parser.c (cp_parser_omp_teams, cp_parser_omp_target): Use
-+ SET_EXPR_LOCATION on OMP_TARGET/OMP_TEAMS tree.
-+ * constexpr.c (potential_constant_expression_1): Handle
-+ OMP_*, OACC_* and CILK_* trees.
++ PR c++/92015
++ * constexpr.c (cxx_eval_component_reference, cxx_eval_bit_field_ref):
++ Use STRIP_ANY_LOCATION_WRAPPER on CONSTRUCTOR elts.
+
-+ 2017-02-21 Jakub Jelinek <jakub@redhat.com>
++2019-10-29 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79639
-+ * constexpr.c (cxx_eval_store_expression): If *valp is a PTRMEM_CST,
-+ call cplus_expand_constant on it first.
++ PR c++/92201
++ * cp-gimplify.c (cp_gimplify_expr): If gimplify_to_rvalue changes the
++ function pointer type, re-add cast to the original one.
+
-+ 2017-02-16 Jakub Jelinek <jakub@redhat.com>
++2018-10-26 Ville Voutilainen <ville.voutilainen@gmail.com>
+
-+ PR c++/79512
-+ * parser.c (cp_parser_omp_target): For -fopenmp-simd
-+ ignore #pragma omp target even when not followed by identifier.
++ Backport from mainline
+
-+2017-04-12 Jason Merrill <jason@redhat.com>
++ 2019-06-01 Ville Voutilainen <ville.voutilainen@gmail.com>
+
-+ PR c++/80150 - ICE with overloaded variadic deduction.
-+ * pt.c (try_one_overload): Remove asserts.
++ PR c++/85254
++ * class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.
+
-+ PR c++/77563 - missing ambiguous conversion error.
-+ * call.c (convert_like_real): Use LOOKUP_IMPLICIT.
++2019-10-24 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/79519 - ICE with deleted template friend.
-+ * decl.c (grokdeclarator): Complain about misplaced function
-+ definition using =, as well.
++ * decl.c (reshape_init_r): Add missing space.
+
-+ PR c++/79640 - infinite recursion with generic lambda.
-+ * pt.c (tsubst_copy) [VAR_DECL]: Register the dummy instantiation
-+ before substituting its initializer.
++2019-10-22 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/80043 - ICE with -fpermissive
-+ * typeck.c (convert_for_assignment): Handle instantiate_type
-+ not giving an error.
++ Backported from mainline
++ 2019-10-21 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/78282 - auto template and pack expansion
-+ * pt.c (find_parameter_packs_r): Don't walk into the type of
-+ templates other than template template-parameters.
++ PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr.
++ * typeck.c (maybe_warn_about_returning_address_of_local): Avoid
++ recursing on null initializer and return false instead.
+
-+ PR c++/79607 - ICE with T{} initializer
-+ * decl.c (type_dependent_init_p): Check the type of a CONSTRUCTOR.
++ PR c++/92062 - ODR-use ignored for static member of class template.
++ * pt.c (has_value_dependent_address): Strip location wrappers.
+
-+ PR c++/79566 - elaborated-type-specifier in range for
-+ * parser.c (cp_parser_simple_declaration): Fix check for type
-+ definition.
++2019-10-21 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79580 - ICE with compound literal
-+ * parser.c (cp_parser_class_head): If we're in the middle of an
-+ expression, use ts_within_enclosing_non_class.
++ Backported from mainline
++ 2019-10-04 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79508 - lookup error with member template
-+ * parser.c (cp_parser_template_name): Clear
-+ parser->context->object_type if we aren't doing lookup.
++ PR c++/91974
++ * cp-gimplify.c (cp_gimplify_expr) <case CALL_EXPR>: For
++ -fstrong-eval-order ensure CALL_EXPR_FN side-effects are evaluated
++ before any arguments. Additionally, ensure CALL_EXPR_FN that isn't
++ invariant nor OBJ_TYPE_REF nor SSA_NAME is forced into a temporary.
+
-+ PR c++/79050 - ICE with undeduced auto and LTO
-+ * decl.c (poplevel): Remove undeduced auto decls.
++ 2019-09-27 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/79461 - ICE with lambda in constexpr constructor
-+ * constexpr.c (build_data_member_initialization): Ignore
-+ initialization of a local variable.
++ PR c++/88203
++ * parser.c (cp_parser_omp_var_list_no_open): Parse predefined
++ variables.
++ * semantics.c (finish_omp_clauses): Allow predefined variables in
++ shared and firstprivate clauses, even when they are predetermined
++ shared.
++ * cp-gimplify.c (cxx_omp_predetermined_sharing_1): Return
++ OMP_CLAUSE_DEFAULT_SHARED for predefined variables.
+
-+2017-03-20 Nathan Sidwell <nathan@acm.org>
++ 2019-08-09 Jakub Jelinek <jakub@redhat.com>
+
-+ PR c++/80091
-+ * lambda.c (maybe_generic_this_capture): Capture when fn
-+ is an identifier node.
++ PR c/91401
++ * parser.c (cp_parser_omp_clause_dist_schedule): Comment out the
++ check_no_duplicate_clause call, instead emit a warning for duplicate
++ dist_schedule clauses.
+
-+2017-03-15 Marek Polacek <polacek@redhat.com>
++2019-10-16 Richard Biener <rguenther@suse.de>
+
-+ Backported from mainline
-+ 2016-12-14 Marek Polacek <polacek@redhat.com>
++ Backport from mainline
++ 2019-10-02 Richard Biener <rguenther@suse.de>
+
-+ PR c++/72775
-+ * init.c (perform_member_init): Diagnose member initializer for
-+ flexible array member.
++ PR c++/91606
++ * decl.c (build_ptrmemfunc_type): Mark pointer-to-member
++ fat pointer structure members as DECL_NONADDRESSABLE_P.
+
-+2017-03-14 Marek Polacek <polacek@redhat.com>
++2019-10-08 Marek Polacek <polacek@redhat.com>
+
+ Backported from mainline
-+ 2017-03-09 Marek Polacek <polacek@redhat.com>
++ 2019-09-15 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/79900 - ICE in strip_typedefs
-+ * tree.c (strip_typedefs): Skip the attribute handling if T is
-+ a variant type which hasn't been updated yet.
++ PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF.
++ * pt.c (build_non_dependent_expr): Call build_non_dependent_expr for
++ the first operand.
+
-+ PR c++/79687
-+ * init.c (constant_value_1): Break if the variable has a dynamic
-+ initializer.
++2019-09-28 Marek Polacek <polacek@redhat.com>
+
+ Backported from mainline
-+ 2017-01-31 Nathan Sidwell <nathan@acm.org>
++ 2019-09-28 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/79264
-+ * lambda.c (maybe_generic_this_capture): Deal with template-id-exprs.
-+ * semantics.c (finish_member_declaration): Assert class is being
-+ defined.
++ PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17.
++ * pt.c (invalid_nontype_parm_type_p): Only emit errors when
++ tf_error.
++
++2019-09-10 Marek Polacek <polacek@redhat.com>
+
+ Backported from mainline
-+ 2017-01-17 Nathan Sidwell <nathan@acm.org>
++ 2019-09-10 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/61636
-+ * cp-tree.h (maybe_generic_this_capture): Declare.
-+ * lambda.c (resolvable_dummy_lambda): New, broken out of ...
-+ (maybe_resolve_dummy): ... here. Call it.
-+ (maybe_generic_this_capture): New.
-+ * parser.c (cp_parser_postfix_expression): Speculatively capture
-+ this in generic lambda in unresolved member function call.
-+ * pt.c (tsubst_copy_and_build): Force hard error from failed
-+ member function lookup in generic lambda.
++ PR c++/91705 - constexpr evaluation rejects ++/-- on floats.
++ * constexpr.c (cxx_eval_increment_expression): Call fold_simple on
++ the offset.
+
-+2017-03-07 Marek Polacek <polacek@redhat.com>
++2019-09-01 Marek Polacek <polacek@redhat.com>
+
+ Backported from mainline
-+ 2017-03-06 Marek Polacek <polacek@redhat.com>
++ 2019-09-01 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/79796 - ICE with NSDMI and this pointer
-+ * call.c (build_over_call): Handle NSDMI with a 'this' by calling
-+ replace_placeholders.
++ PR c++/91129 - wrong error with binary op in template argument.
++ * typeck.c (warn_for_null_address): Use fold_for_warn instead of
++ fold_non_dependent_expr.
++ (cp_build_binary_op): Likewise.
+
-+2017-02-15 Jakub Jelinek <jakub@redhat.com>
++2019-08-31 Iain Sandoe <iain@sandoe.co.uk>
+
+ Backported from mainline
-+ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR c++/79429
-+ * parser.c (cp_parser_omp_ordered): Don't check for non-pragma_stmt
-+ non-pragma_compound context here.
-+ (cp_parser_omp_target): Likewise.
-+ (cp_parser_pragma): Don't call push_omp_privatization_clauses and
-+ parsing for ordered and target omp pragmas in non-pragma_stmt
-+ non-pragma_compound contexts.
++ PR pch/61250
++ * parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
++ after determining that the first token is not
++ PRAGMA_GCC_PCH_PREPROCESS.
+
-+ PR c/79431
-+ * parser.c (cp_parser_oacc_declare): Formatting fix.
-+ (cp_parser_omp_declare_target): Don't invoke symtab_node::get on
-+ automatic variables.
++2019-08-23 Marek Polacek <polacek@redhat.com>
+
-+ 2017-02-06 Jakub Jelinek <jakub@redhat.com>
++ Backported from mainline
++ 2019-08-23 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/79377
-+ * tree.c (build_min_non_dep_op_overload): For POST{INC,DEC}REMENT_EXPR
-+ allow one fewer than expected arguments if flag_permissive.
++ PR c++/91521 - wrong error with operator->.
++ * decl.c (grokdeclarator): Return error_mark_node for an invalid
++ trailing return type.
+
-+2017-02-13 Nathan Sidwell <nathan@acm.org>
++2019-08-16 Jason Merrill <jason@redhat.com>
+
-+ PR c++/79296 - ICE mangling localized template instantiation
-+ * decl2.c (determine_visibility): Use template fn context for
-+ local class instantiations.
++ PR c++/90393 - ICE with throw in ?:
++ * call.c (build_conditional_expr_1): Revert changes from
++ PR c++/64372 and c++/86205.
+
-+2017-02-11 Jason Merrill <jason@redhat.com>
++2019-08-15 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/78908 - template ops and bitfields
-+ * tree.c (build_min_non_dep): Use unlowered_expr_type.
++ Backported from mainline
++ 2019-08-07 Marek Polacek <polacek@redhat.com>
+
-+2017-02-10 Jason Merrill <jason@redhat.com>
++ PR c++/81429 - wrong parsing of constructor with C++11 attribute.
++ * parser.c (cp_parser_constructor_declarator_p): Handle the scenario
++ when a parameter declaration begins with [[attribute]].
+
-+ PR c++/78897 - constexpr union
-+ * constexpr.c (cxx_eval_store_expression): A store to a union member
-+ erases a previous store to another member.
++ 2019-08-08 Marek Polacek <polacek@redhat.com>
+
-+2017-01-26 Jason Merrill <jason@redhat.com>
++ PR c++/87519 - bogus warning with -Wsign-conversion.
++ * typeck.c (cp_build_binary_op): Use same_type_p instead of comparing
++ the types directly.
+
-+ PR c++/79176 - lambda ICE with -flto -Os
-+ * decl2.c (vague_linkage_p): Handle decloned 'tors.
-+ * tree.c (decl_linkage): Likewise.
++ 2019-08-13 Marek Polacek <polacek@redhat.com>
+
-+2017-01-20 Marek Polacek <polacek@redhat.com>
-+
-+ Backported from mainline
-+ 2017-01-04 Marek Polacek <polacek@redhat.com>
++ PR c++/90473 - wrong code with nullptr in default argument.
++ * call.c (null_ptr_cst_p): Update quote from the standard.
++ * decl.c (check_default_argument): Don't return nullptr when the arg
++ has side-effects.
++
++ 2019-06-14 Marek Polacek <polacek@redhat.com>
+
-+ PR c++/77545
-+ PR c++/77284
-+ * constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT.
++ PR c++/90884 - stray note with -Wctor-dtor-privacy.
++ * class.c (maybe_warn_about_overly_private_class): Guard the call to
++ inform.
+
-+2017-01-17 Jakub Jelinek <jakub@redhat.com>
++2019-08-14 Martin Sebor <msebor@redhat.com>
+
+ Backported from mainline
-+ 2017-01-11 Jakub Jelinek <jakub@redhat.com>
++ 2019-08-01 Martin Sebor <msebor@redhat.com>
+
-+ PR c++/78341
-+ * parser.c (cp_parser_std_attribute_spec): Remove over-eager
-+ assertion. Formatting fix.
++ PR c++/90947
++ * decl.c (reshape_init_array_1): Avoid truncating initializer
++ lists containing string literals.
+
-+ 2017-01-04 Jakub Jelinek <jakub@redhat.com>
++2019-08-14 Jonathan Wakely <jwakely@redhat.com>
+
-+ PR c++/78949
-+ * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
-+ vector type.
++ PR c++/91436
++ * name-lookup.c (get_std_name_hint): Fix min_dialect field for
++ complex_literals and make_unique entries.
+
-+ PR c++/78693
-+ * parser.c (cp_parser_simple_declaration): Only complain about
-+ inconsistent auto deduction if auto_result doesn't use auto.
++2019-08-12 Tom Honermann <tom@honermann.net>
+
-+ PR c++/71182
-+ * parser.c (cp_lexer_previous_token): Use vec_safe_address in the
-+ assertion, as lexer->buffer may be NULL.
++ * parser.c (cp_parser_template_declaration_after_parameters): Enable
++ class template argument deduction for non-type template parameters
++ in literal operator templates.
+
-+2017-01-11 Nathan Sidwell <nathan@acm.org>
++2019-08-12 Jason Merrill <jason@redhat.com>
+
-+ PR c++/77812
-+ * name-lookup.c (set_namespace_binding_1): An overload of 1 decl
-+ is a new overload.
++ PR c++/91378 - ICE with noexcept and auto return type.
++ * pt.c (maybe_instantiate_noexcept): push_to_top_level.
+
- 2016-12-21 Release Manager
++ PR c++/90538 - multiple expansions of capture packs
++ * cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): Remove.
++ * lambda.c (add_capture): Copy parameter packs from init.
++ (lambda_capture_field_type): Always use auto for init-capture.
++ * pt.c (uses_parameter_packs): Return tree.
++ (tsubst) [DECLTYPE_TYPE]: Remove init-capture handling.
++ (gen_elem_of_pack_expansion_instantiation): Don't push
++ local_specialization_stack.
++ (prepend_one_capture): New.
++ (tsubst_lambda_expr): Use it. Don't touch local_specializations.
++ (do_auto_deduction): Avoid redundant error.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+@@ -16,7 +251,7 @@
- * GCC 6.3.0 released.
+ Backported from mainline
+ 2019-08-02 Marek Polacek <polacek@redhat.com>
+-
++
+ PR c++/91230 - wrong error with __PRETTY_FUNCTION__ and generic lambda.
+ * pt.c (value_dependent_expression_p): Consider __PRETTY_FUNCTION__
+ inside a template function value-dependent.
Index: gcc/cp/cp-gimplify.c
===================================================================
---- a/src/gcc/cp/cp-gimplify.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/cp-gimplify.c (.../branches/gcc-6-branch)
-@@ -1065,6 +1065,19 @@
- }
- }
+--- a/src/gcc/cp/cp-gimplify.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/cp-gimplify.c (.../branches/gcc-9-branch)
+@@ -816,6 +816,27 @@
-+ if (TREE_CODE (stmt) == INTEGER_CST
-+ && TREE_CODE (TREE_TYPE (stmt)) == REFERENCE_TYPE
-+ && (flag_sanitize & (SANITIZE_NULL | SANITIZE_ALIGNMENT))
-+ && !wtd->no_sanitize_p)
-+ {
-+ ubsan_maybe_instrument_reference (stmt_p);
-+ if (*stmt_p != stmt)
+ case CALL_EXPR:
+ ret = GS_OK;
++ if (flag_strong_eval_order == 2
++ && CALL_EXPR_FN (*expr_p)
++ && cp_get_callee_fndecl_nofold (*expr_p) == NULL_TREE)
+ {
-+ *walk_subtrees = 0;
-+ return NULL_TREE;
++ tree fnptrtype = TREE_TYPE (CALL_EXPR_FN (*expr_p));
++ enum gimplify_status t
++ = gimplify_expr (&CALL_EXPR_FN (*expr_p), pre_p, NULL,
++ is_gimple_call_addr, fb_rvalue);
++ if (t == GS_ERROR)
++ ret = GS_ERROR;
++ else if (is_gimple_variable (CALL_EXPR_FN (*expr_p))
++ && TREE_CODE (CALL_EXPR_FN (*expr_p)) != SSA_NAME)
++ CALL_EXPR_FN (*expr_p)
++ = get_initialized_tmp_var (CALL_EXPR_FN (*expr_p), pre_p,
++ NULL);
++ /* GIMPLE considers most pointer conversion useless, but for
++ calls we actually care about the exact function pointer type. */
++ if (t != GS_ERROR && TREE_TYPE (CALL_EXPR_FN (*expr_p)) != fnptrtype)
++ CALL_EXPR_FN (*expr_p)
++ = build1 (NOP_EXPR, fnptrtype, CALL_EXPR_FN (*expr_p));
+ }
-+ }
-+
- /* Other than invisiref parms, don't walk the same tree twice. */
- if (p_set->contains (stmt))
- {
-@@ -1420,7 +1433,7 @@
- if ((flag_sanitize & (SANITIZE_NULL | SANITIZE_ALIGNMENT))
- && TREE_CODE (stmt) == NOP_EXPR
- && TREE_CODE (TREE_TYPE (stmt)) == REFERENCE_TYPE)
-- ubsan_maybe_instrument_reference (stmt);
-+ ubsan_maybe_instrument_reference (stmt_p);
- else if (TREE_CODE (stmt) == CALL_EXPR)
- {
- tree fn = CALL_EXPR_FN (stmt);
+ if (!CALL_EXPR_FN (*expr_p))
+ /* Internal function call. */;
+ else if (CALL_EXPR_REVERSE_ARGS (*expr_p))
+@@ -2050,6 +2071,9 @@
+ tree ctx = CP_DECL_CONTEXT (decl);
+ if (TYPE_P (ctx) && MAYBE_CLASS_TYPE_P (ctx))
+ return OMP_CLAUSE_DEFAULT_SHARED;
++
++ if (c_omp_predefined_variable (decl))
++ return OMP_CLAUSE_DEFAULT_SHARED;
+ }
+
+ /* this may not be specified in data-sharing clauses, still we need
Index: gcc/cp/pt.c
===================================================================
---- a/src/gcc/cp/pt.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/pt.c (.../branches/gcc-6-branch)
-@@ -3549,8 +3549,12 @@
- *walk_subtrees = 0;
- return NULL_TREE;
-
-+ case TEMPLATE_DECL:
-+ if (!DECL_TEMPLATE_TEMPLATE_PARM_P (t))
-+ return NULL_TREE;
-+ /* Fall through. */
-+
- case CONSTRUCTOR:
-- case TEMPLATE_DECL:
- cp_walk_tree (&TREE_TYPE (t),
- &find_parameter_packs_r, ppd, ppd->visited);
- return NULL_TREE;
-@@ -14101,6 +14105,9 @@
- local static or constant. Building a new VAR_DECL
- should be OK in all those cases. */
- r = tsubst_decl (t, args, complain);
-+ if (local_specializations)
-+ /* Avoid infinite recursion (79640). */
-+ register_local_specialization (r, t);
- if (decl_maybe_constant_var_p (r))
- {
- /* We can't call cp_finish_decl, so handle the
-@@ -16613,19 +16620,34 @@
+--- a/src/gcc/cp/pt.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/pt.c (.../branches/gcc-9-branch)
+@@ -3875,7 +3875,7 @@
+ }
- if (unq != function)
- {
-- tree fn = unq;
-- if (INDIRECT_REF_P (fn))
-- fn = TREE_OPERAND (fn, 0);
-- if (TREE_CODE (fn) == COMPONENT_REF)
-- fn = TREE_OPERAND (fn, 1);
-- if (is_overloaded_fn (fn))
-- fn = get_first_fn (fn);
-- if (permerror (EXPR_LOC_OR_LOC (t, input_location),
-- "%qD was not declared in this scope, "
-- "and no declarations were found by "
-- "argument-dependent lookup at the point "
-- "of instantiation", function))
-+ /* In a lambda fn, we have to be careful to not
-+ introduce new this captures. Legacy code can't
-+ be using lambdas anyway, so it's ok to be
-+ stricter. */
-+ bool in_lambda = (current_class_type
-+ && LAMBDA_TYPE_P (current_class_type));
-+ char const *msg = "%qD was not declared in this scope, "
-+ "and no declarations were found by "
-+ "argument-dependent lookup at the point "
-+ "of instantiation";
-+
-+ bool diag = true;
-+ if (in_lambda)
-+ error_at (EXPR_LOC_OR_LOC (t, input_location),
-+ msg, function);
-+ else
-+ diag = permerror (EXPR_LOC_OR_LOC (t, input_location),
-+ msg, function);
-+ if (diag)
- {
-+ tree fn = unq;
-+ if (INDIRECT_REF_P (fn))
-+ fn = TREE_OPERAND (fn, 0);
-+ if (TREE_CODE (fn) == COMPONENT_REF)
-+ fn = TREE_OPERAND (fn, 1);
-+ if (is_overloaded_fn (fn))
-+ fn = get_first_fn (fn);
-+
- if (!DECL_P (fn))
- /* Can't say anything more. */;
- else if (DECL_CLASS_SCOPE_P (fn))
-@@ -16648,7 +16670,13 @@
- inform (DECL_SOURCE_LOCATION (fn),
- "%qD declared here, later in the "
- "translation unit", fn);
-+ if (in_lambda)
-+ {
-+ release_tree_vector (call_args);
-+ RETURN (error_mark_node);
-+ }
- }
-+
- function = unq;
- }
- }
-@@ -18904,10 +18932,11 @@
- is equivalent to the corresponding explicitly specified argument.
- We may have deduced more arguments than were explicitly specified,
- and that's OK. */
-- gcc_assert (ARGUMENT_PACK_INCOMPLETE_P (oldelt));
-- gcc_assert (ARGUMENT_PACK_ARGS (oldelt)
-- == ARGUMENT_PACK_EXPLICIT_ARGS (oldelt));
-
-+ /* We used to assert ARGUMENT_PACK_INCOMPLETE_P (oldelt) here, but
-+ that's wrong if we deduce the same argument pack from multiple
-+ function arguments: it's only incomplete the first time. */
-+
- tree explicit_pack = ARGUMENT_PACK_ARGS (oldelt);
- tree deduced_pack = ARGUMENT_PACK_ARGS (elt);
+ /* Determines if the expression or type T uses any parameter packs. */
+-bool
++tree
+ uses_parameter_packs (tree t)
+ {
+ tree parameter_packs = NULL_TREE;
+@@ -3885,7 +3885,7 @@
+ ppd.type_pack_expansion_p = false;
+ cp_walk_tree (&t, &find_parameter_packs_r, &ppd, ppd.visited);
+ delete ppd.visited;
+- return parameter_packs != NULL_TREE;
++ return parameter_packs;
+ }
-Index: gcc/cp/semantics.c
-===================================================================
---- a/src/gcc/cp/semantics.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/semantics.c (.../branches/gcc-6-branch)
-@@ -2965,6 +2965,12 @@
- /* We should see only one DECL at a time. */
- gcc_assert (DECL_CHAIN (decl) == NULL_TREE);
-
-+ /* Don't add decls after definition. */
-+ gcc_assert (TYPE_BEING_DEFINED (current_class_type)
-+ /* We can add lambda types when late parsing default
-+ arguments. */
-+ || LAMBDA_TYPE_P (TREE_TYPE (decl)));
-+
- /* Set up access control for DECL. */
- TREE_PRIVATE (decl)
- = (current_access_specifier == access_private_node);
-@@ -6325,9 +6331,9 @@
- else
- {
- t = mark_rvalue_use (t);
-- t = maybe_constant_value (t);
- if (!processing_template_decl)
- {
-+ t = maybe_constant_value (t);
- if (TREE_CODE (t) != INTEGER_CST
- || tree_int_cst_sgn (t) != 1)
- {
-@@ -6495,9 +6501,9 @@
- else
- {
- t = mark_rvalue_use (t);
-- t = maybe_constant_value (t);
- if (!processing_template_decl)
- {
-+ t = maybe_constant_value (t);
- if (TREE_CODE (t) != INTEGER_CST
- || tree_int_cst_sgn (t) != 1)
- {
-Index: gcc/cp/decl2.c
-===================================================================
---- a/src/gcc/cp/decl2.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/decl2.c (.../branches/gcc-6-branch)
-@@ -1875,6 +1875,14 @@
+ /* Turn ARG, which may be an expression, type, or a TREE_LIST
+@@ -6353,6 +6353,8 @@
+ static bool
+ has_value_dependent_address (tree op)
{
- if (!TREE_PUBLIC (decl))
- {
-+ /* maybe_thunk_body clears TREE_PUBLIC on the maybe-in-charge 'tor
-+ variants, check one of the "clones" for the real linkage. */
-+ if ((DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)
-+ || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl))
-+ && DECL_CHAIN (decl)
-+ && DECL_CLONED_FUNCTION (DECL_CHAIN (decl)))
-+ return vague_linkage_p (DECL_CHAIN (decl));
-+
- gcc_checking_assert (!DECL_COMDAT (decl));
- return false;
++ STRIP_ANY_LOCATION_WRAPPER (op);
++
+ /* We could use get_inner_reference here, but there's no need;
+ this is only relevant for template non-type arguments, which
+ can only be expressed as &id-expression. */
+@@ -11757,10 +11759,6 @@
+ ARGUMENT_PACK_SELECT_INDEX (aps) = index;
}
-@@ -2272,11 +2280,6 @@
- void
- determine_visibility (tree decl)
- {
-- tree class_type = NULL_TREE;
-- bool use_template;
-- bool orig_visibility_specified;
-- enum symbol_visibility orig_visibility;
+
+- // Any local specialization bindings arising from this substitution
+- // cannot be reused for a different INDEX.
+- local_specialization_stack lss (lss_copy);
-
- /* Remember that all decls get VISIBILITY_DEFAULT when built. */
-
- /* Only relevant for names with external linkage. */
-@@ -2288,25 +2291,28 @@
- maybe_clone_body. */
- gcc_assert (!DECL_CLONED_FUNCTION_P (decl));
-
-- orig_visibility_specified = DECL_VISIBILITY_SPECIFIED (decl);
-- orig_visibility = DECL_VISIBILITY (decl);
-+ bool orig_visibility_specified = DECL_VISIBILITY_SPECIFIED (decl);
-+ enum symbol_visibility orig_visibility = DECL_VISIBILITY (decl);
-
-+ /* The decl may be a template instantiation, which could influence
-+ visibilty. */
-+ tree template_decl = NULL_TREE;
- if (TREE_CODE (decl) == TYPE_DECL)
- {
- if (CLASS_TYPE_P (TREE_TYPE (decl)))
-- use_template = CLASSTYPE_USE_TEMPLATE (TREE_TYPE (decl));
+ /* Substitute into the PATTERN with the (possibly altered)
+ arguments. */
+ if (pattern == in_decl)
+@@ -15130,24 +15128,12 @@
+ /*function_p*/false,
+ /*integral_constant_expression*/false);
+
+- if (DECLTYPE_FOR_INIT_CAPTURE (t))
+- {
+- if (type == NULL_TREE)
+- {
+- if (complain & tf_error)
+- error ("empty initializer in lambda init-capture");
+- type = error_mark_node;
+- }
+- else if (TREE_CODE (type) == TREE_LIST)
+- type = build_x_compound_expr_from_list (type, ELK_INIT, complain);
+- }
+-
+ --cp_unevaluated_operand;
+ --c_inhibit_evaluation_warnings;
+
+ if (DECLTYPE_FOR_LAMBDA_CAPTURE (t))
+ type = lambda_capture_field_type (type,
+- DECLTYPE_FOR_INIT_CAPTURE (t),
++ false /*explicit_init*/,
+ DECLTYPE_FOR_REF_CAPTURE (t));
+ else if (DECLTYPE_FOR_LAMBDA_PROXY (t))
+ type = lambda_proxy_type (type);
+@@ -18014,6 +18000,33 @@
+ return t;
+ }
+
++/* Subroutine of tsubst_lambda_expr: add the FIELD/INIT capture pair to the
++ LAMBDA_EXPR_CAPTURE_LIST passed in LIST. Do deduction for a previously
++ dependent init-capture. */
++
++static void
++prepend_one_capture (tree field, tree init, tree &list,
++ tsubst_flags_t complain)
++{
++ if (tree auto_node = type_uses_auto (TREE_TYPE (field)))
++ {
++ tree type = NULL_TREE;
++ if (!init)
+ {
-+ if (CLASSTYPE_USE_TEMPLATE (TREE_TYPE (decl)))
-+ template_decl = decl;
++ if (complain & tf_error)
++ error ("empty initializer in lambda init-capture");
++ init = error_mark_node;
+ }
- else if (TYPE_TEMPLATE_INFO (TREE_TYPE (decl)))
-- use_template = 1;
-- else
-- use_template = 0;
-+ template_decl = decl;
- }
-- else if (DECL_LANG_SPECIFIC (decl))
-- use_template = DECL_USE_TEMPLATE (decl);
-- else
-- use_template = 0;
-+ else if (DECL_LANG_SPECIFIC (decl) && DECL_USE_TEMPLATE (decl))
-+ template_decl = decl;
-
- /* If DECL is a member of a class, visibility specifiers on the
- class can influence the visibility of the DECL. */
-+ tree class_type = NULL_TREE;
- if (DECL_CLASS_SCOPE_P (decl))
- class_type = DECL_CONTEXT (decl);
- else
-@@ -2349,8 +2355,11 @@
- }
-
- /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set,
-- but have no TEMPLATE_INFO, so don't try to check it. */
-- use_template = 0;
-+ but have no TEMPLATE_INFO. Their containing template
-+ function does, and the local class could be constrained
-+ by that. */
-+ if (template_decl)
-+ template_decl = fn;
++ else if (TREE_CODE (init) == TREE_LIST)
++ init = build_x_compound_expr_from_list (init, ELK_INIT, complain);
++ if (!type)
++ type = do_auto_deduction (TREE_TYPE (field), init, auto_node, complain);
++ TREE_TYPE (field) = type;
++ cp_apply_type_quals_to_decl (cp_type_quals (type), field);
++ }
++ list = tree_cons (field, init, list);
++}
++
+ /* T is a LAMBDA_EXPR. Generate a new LAMBDA_EXPR for the current
+ instantiation context. Instantiating a pack expansion containing a lambda
+ might result in multiple lambdas all based on the same lambda in the
+@@ -18025,17 +18038,8 @@
+ tree oldfn = lambda_function (t);
+ in_decl = oldfn;
+
+- /* If we have already specialized this lambda expr, reuse it. See
+- PR c++/87322. */
+- if (local_specializations)
+- if (tree r = retrieve_local_specialization (t))
+- return r;
+-
+ tree r = build_lambda_expr ();
+
+- if (local_specializations)
+- register_local_specialization (r, t);
+-
+ LAMBDA_EXPR_LOCATION (r)
+ = LAMBDA_EXPR_LOCATION (t);
+ LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (r)
+@@ -18088,15 +18092,15 @@
+ gcc_assert (TREE_CODE (init) == TREE_VEC
+ && TREE_VEC_LENGTH (init) == len);
+ for (int i = 0; i < len; ++i)
+- LAMBDA_EXPR_CAPTURE_LIST (r)
+- = tree_cons (TREE_VEC_ELT (field, i),
+- TREE_VEC_ELT (init, i),
+- LAMBDA_EXPR_CAPTURE_LIST (r));
++ prepend_one_capture (TREE_VEC_ELT (field, i),
++ TREE_VEC_ELT (init, i),
++ LAMBDA_EXPR_CAPTURE_LIST (r),
++ complain);
}
- else if (VAR_P (decl) && DECL_TINFO_P (decl)
- && flag_visibility_ms_compat)
-@@ -2380,7 +2389,7 @@
- && !CLASSTYPE_VISIBILITY_SPECIFIED (TREE_TYPE (DECL_NAME (decl))))
- targetm.cxx.determine_class_data_visibility (decl);
+ else
+ {
+- LAMBDA_EXPR_CAPTURE_LIST (r)
+- = tree_cons (field, init, LAMBDA_EXPR_CAPTURE_LIST (r));
++ prepend_one_capture (field, init, LAMBDA_EXPR_CAPTURE_LIST (r),
++ complain);
+
+ if (id_equal (DECL_NAME (field), "__this"))
+ LAMBDA_EXPR_THIS_CAPTURE (r) = field;
+@@ -24321,12 +24325,11 @@
}
-- else if (use_template)
-+ else if (template_decl)
- /* Template instantiations and specializations get visibility based
- on their template unless they override it with an attribute. */;
- else if (! DECL_VISIBILITY_SPECIFIED (decl))
-@@ -2397,11 +2406,11 @@
+ else if (push_tinst_level (fn))
+ {
++ push_to_top_level ();
+ push_access_scope (fn);
+ push_deferring_access_checks (dk_no_deferred);
+ input_location = DECL_SOURCE_LOCATION (fn);
+
+- tree save_ccp = current_class_ptr;
+- tree save_ccr = current_class_ref;
+ /* If needed, set current_class_ptr for the benefit of
+ tsubst_copy/PARM_DECL. */
+ tree tdecl = DECL_TEMPLATE_RESULT (DECL_TI_TEMPLATE (fn));
+@@ -24352,9 +24355,6 @@
+ /*function_p=*/false,
+ /*i_c_e_p=*/true);
+
+- current_class_ptr = save_ccp;
+- current_class_ref = save_ccr;
+-
+ /* Build up the noexcept-specification. */
+ spec = build_noexcept_spec (noex, tf_warning_or_error);
+
+@@ -24364,6 +24364,7 @@
+ pop_deferring_access_checks ();
+ pop_access_scope (fn);
+ pop_tinst_level ();
++ pop_from_top_level ();
}
+ else
+ spec = noexcept_false_spec;
+@@ -25232,8 +25233,9 @@
+ {
+ if (cxx_dialect < cxx2a)
+ {
+- error ("non-type template parameters of class type only available "
+- "with %<-std=c++2a%> or %<-std=gnu++2a%>");
++ if (complain & tf_error)
++ error ("non-type template parameters of class type only available "
++ "with %<-std=c++2a%> or %<-std=gnu++2a%>");
+ return true;
+ }
+ if (dependent_type_p (type))
+@@ -26715,7 +26717,7 @@
+ if (TREE_CODE (expr) == COND_EXPR)
+ return build3 (COND_EXPR,
+ TREE_TYPE (expr),
+- TREE_OPERAND (expr, 0),
++ build_non_dependent_expr (TREE_OPERAND (expr, 0)),
+ (TREE_OPERAND (expr, 1)
+ ? build_non_dependent_expr (TREE_OPERAND (expr, 1))
+ : build_non_dependent_expr (TREE_OPERAND (expr, 0))),
+@@ -27615,6 +27617,9 @@
}
-
-- if (use_template)
-+ if (template_decl)
+ else
{
- /* If the specialization doesn't specify visibility, use the
- visibility from the template. */
-- tree tinfo = get_template_info (decl);
-+ tree tinfo = get_template_info (template_decl);
- tree args = TI_ARGS (tinfo);
- tree attribs = (TREE_CODE (decl) == TYPE_DECL
- ? TYPE_ATTRIBUTES (TREE_TYPE (decl))
++ if (error_operand_p (init))
++ return error_mark_node;
++
+ tree parms = build_tree_list (NULL_TREE, type);
+ tree tparms;
+
+Index: gcc/cp/semantics.c
+===================================================================
+--- a/src/gcc/cp/semantics.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/semantics.c (.../branches/gcc-9-branch)
+@@ -7790,6 +7790,13 @@
+ case OMP_CLAUSE_DEFAULT_UNSPECIFIED:
+ break;
+ case OMP_CLAUSE_DEFAULT_SHARED:
++ if ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED
++ || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE)
++ && c_omp_predefined_variable (t))
++ /* The __func__ variable and similar function-local predefined
++ variables may be listed in a shared or firstprivate
++ clause. */
++ break;
+ if (VAR_P (t)
+ && OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE
+ && TREE_STATIC (t)
Index: gcc/cp/parser.c
===================================================================
---- a/src/gcc/cp/parser.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/parser.c (.../branches/gcc-6-branch)
-@@ -762,7 +762,7 @@
- /* Skip past purged tokens. */
- while (tp->purged_p)
- {
-- gcc_assert (tp != lexer->buffer->address ());
-+ gcc_assert (tp != vec_safe_address (lexer->buffer));
- tp--;
- }
-
-@@ -6867,6 +6867,7 @@
- || type_dependent_expression_p (fn)
- || any_type_dependent_arguments_p (args)))
- {
-+ maybe_generic_this_capture (instance, fn);
- postfix_expression
- = build_nt_call_vec (postfix_expression, args);
- release_tree_vector (args);
-@@ -12406,9 +12407,11 @@
- if (cp_parser_error_occurred (parser))
- goto done;
-
-- if (auto_result)
-+ if (auto_result
-+ && (!processing_template_decl || !type_uses_auto (auto_result)))
+--- a/src/gcc/cp/parser.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/parser.c (.../branches/gcc-9-branch)
+@@ -27596,7 +27596,9 @@
+ /* A parameter declaration begins with a decl-specifier,
+ which is either the "attribute" keyword, a storage class
+ specifier, or (usually) a type-specifier. */
+- && !cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer))
++ && !cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer)
++ /* A parameter declaration can also begin with [[attribute]]. */
++ && !cp_next_tokens_can_be_std_attribute_p (parser))
{
-- if (last_type && last_type != error_mark_node
-+ if (last_type
-+ && last_type != error_mark_node
- && !same_type_p (auto_result, last_type))
+ tree type;
+ tree pushed_scope = NULL_TREE;
+@@ -27911,7 +27913,10 @@
{
- /* If the list of declarators contains more than one declarator,
-@@ -12459,7 +12462,7 @@
- break;
- else if (maybe_range_for_decl)
- {
-- if (declares_class_or_enum && token->type == CPP_COLON)
-+ if ((declares_class_or_enum & 2) && token->type == CPP_COLON)
- pedwarn (decl_specifiers.locations[ds_type_spec], 0,
- "types may not be defined in a for-range-declaration");
- break;
-@@ -15153,6 +15156,7 @@
- cp_lexer_purge_tokens_after (parser->lexer, start);
- if (is_identifier)
- *is_identifier = true;
-+ parser->context->object_type = NULL_TREE;
- return identifier;
+ tree parm_list = TREE_VEC_ELT (parameter_list, 0);
+ tree parm = INNERMOST_TEMPLATE_PARMS (parm_list);
+- if (CLASS_TYPE_P (TREE_TYPE (parm)))
++ if (TREE_CODE (parm) != PARM_DECL)
++ ok = false;
++ else if (MAYBE_CLASS_TYPE_P (TREE_TYPE (parm))
++ && !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
+ /* OK, C++20 string literal operator template. We don't need
+ to warn in lower dialects here because we will have already
+ warned about the template parameter. */;
+@@ -27925,7 +27930,7 @@
+ tree type = INNERMOST_TEMPLATE_PARMS (parm_type);
+ tree parm_list = TREE_VEC_ELT (parameter_list, 1);
+ tree parm = INNERMOST_TEMPLATE_PARMS (parm_list);
+- if (parm == error_mark_node
++ if (TREE_CODE (parm) != PARM_DECL
+ || TREE_TYPE (parm) != TREE_TYPE (type)
+ || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)))
+ ok = false;
+@@ -32463,6 +32468,14 @@
+ decl = TREE_OPERAND (decl, 0);
+ cp_lexer_consume_token (parser->lexer);
}
-
-@@ -15164,7 +15168,12 @@
- && (!parser->scope
- || (TYPE_P (parser->scope)
- && dependent_type_p (parser->scope))))
-- return identifier;
++ else if (cp_parser_is_keyword (token, RID_FUNCTION_NAME)
++ || cp_parser_is_keyword (token, RID_PRETTY_FUNCTION_NAME)
++ || cp_parser_is_keyword (token, RID_C99_FUNCTION_NAME))
+ {
-+ /* We're optimizing away the call to cp_parser_lookup_name, but we
-+ still need to do this. */
-+ parser->context->object_type = NULL_TREE;
-+ return identifier;
++ cp_id_kind idk;
++ decl = cp_parser_primary_expression (parser, false, false, false,
++ &idk);
+ }
- }
+ else
+ {
+ name = cp_parser_id_expression (parser, /*template_p=*/false,
+@@ -34891,8 +34904,10 @@
+ else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN))
+ goto resync_fail;
+
+- check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, "dist_schedule",
+- location);
++ /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE,
++ "dist_schedule", location); */
++ if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE))
++ warning_at (location, 0, "too many %qs clauses", "dist_schedule");
+ OMP_CLAUSE_CHAIN (c) = list;
+ return c;
+
+@@ -40746,7 +40761,10 @@
+
+ cp_lexer_get_preprocessor_token (NULL, first_token);
+ if (cp_parser_pragma_kind (first_token) != PRAGMA_GCC_PCH_PREPROCESS)
+- return;
++ {
++ c_common_no_more_pch ();
++ return;
++ }
- /* Look up the name. */
-@@ -21996,7 +22005,10 @@
- /* If the class was unnamed, create a dummy name. */
- if (!id)
- id = make_anon_name ();
-- type = xref_tag (class_key, id, /*tag_scope=*/ts_current,
-+ tag_scope tag_scope = (parser->in_type_id_in_expr_p
-+ ? ts_within_enclosing_non_class
-+ : ts_current);
-+ type = xref_tag (class_key, id, tag_scope,
- parser->num_template_parameter_lists);
- }
+ cp_lexer_get_preprocessor_token (NULL, first_token);
+ if (first_token->type == CPP_STRING)
+Index: gcc/cp/call.c
+===================================================================
+--- a/src/gcc/cp/call.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/call.c (.../branches/gcc-9-branch)
+@@ -530,9 +530,8 @@
-@@ -24140,11 +24152,7 @@
+ /* [conv.ptr]
- if (!cp_parser_parse_definitely (parser))
- {
-- gcc_assert (alignas_expr == error_mark_node
-- || alignas_expr == NULL_TREE);
--
-- alignas_expr =
-- cp_parser_assignment_expression (parser);
-+ alignas_expr = cp_parser_assignment_expression (parser);
- if (alignas_expr == error_mark_node)
- cp_parser_skip_to_end_of_statement (parser);
- if (alignas_expr == NULL_TREE
-@@ -34060,13 +34068,6 @@
- {
- location_t loc = pragma_tok->location;
+- A null pointer constant is an integral constant expression
+- (_expr.const_) rvalue of integer type that evaluates to zero or
+- an rvalue of type std::nullptr_t. */
++ A null pointer constant is an integer literal ([lex.icon]) with value
++ zero or a prvalue of type std::nullptr_t. */
+ if (NULLPTR_TYPE_P (type))
+ return true;
-- if (context != pragma_stmt && context != pragma_compound)
-- {
-- cp_parser_error (parser, "expected declaration specifiers");
-- cp_parser_skip_to_pragma_eol (parser, pragma_tok);
-- return false;
-- }
--
- if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
+@@ -5186,18 +5185,15 @@
+ arg3_type = unlowered_expr_type (arg3);
+ if (VOID_TYPE_P (arg2_type) || VOID_TYPE_P (arg3_type))
{
- tree id = cp_lexer_peek_token (parser->lexer)->u.value;
-@@ -34624,6 +34625,7 @@
- OMP_TEAMS_CLAUSES (ret) = clauses;
- OMP_TEAMS_BODY (ret) = body;
- OMP_TEAMS_COMBINED (ret) = 1;
-+ SET_EXPR_LOCATION (ret, loc);
- return add_stmt (ret);
+- /* 'void' won't help in resolving an overloaded expression on the
+- other side, so require it to resolve by itself. */
+- if (arg2_type == unknown_type_node)
+- {
+- arg2 = resolve_nondeduced_context_or_error (arg2, complain);
+- arg2_type = TREE_TYPE (arg2);
+- }
+- if (arg3_type == unknown_type_node)
+- {
+- arg3 = resolve_nondeduced_context_or_error (arg3, complain);
+- arg3_type = TREE_TYPE (arg3);
+- }
++ /* Do the conversions. We don't these for `void' type arguments
++ since it can't have any effect and since decay_conversion
++ does not handle that case gracefully. */
++ if (!VOID_TYPE_P (arg2_type))
++ arg2 = decay_conversion (arg2, complain);
++ if (!VOID_TYPE_P (arg3_type))
++ arg3 = decay_conversion (arg3, complain);
++ arg2_type = TREE_TYPE (arg2);
++ arg3_type = TREE_TYPE (arg3);
+
+ /* [expr.cond]
+
+@@ -5204,28 +5200,41 @@
+ One of the following shall hold:
+
+ --The second or the third operand (but not both) is a
+- throw-expression (_except.throw_); the result is of the type
+- and value category of the other.
++ throw-expression (_except.throw_); the result is of the
++ type of the other and is an rvalue.
+
+ --Both the second and the third operands have type void; the
+- result is of type void and is a prvalue. */
++ result is of type void and is an rvalue.
++
++ We must avoid calling force_rvalue for expressions of type
++ "void" because it will complain that their value is being
++ used. */
+ if (TREE_CODE (arg2) == THROW_EXPR
+ && TREE_CODE (arg3) != THROW_EXPR)
+ {
++ if (!VOID_TYPE_P (arg3_type))
++ {
++ arg3 = force_rvalue (arg3, complain);
++ if (arg3 == error_mark_node)
++ return error_mark_node;
++ }
++ arg3_type = TREE_TYPE (arg3);
+ result_type = arg3_type;
+- is_glvalue = glvalue_p (arg3);
+ }
+ else if (TREE_CODE (arg2) != THROW_EXPR
+ && TREE_CODE (arg3) == THROW_EXPR)
+ {
++ if (!VOID_TYPE_P (arg2_type))
++ {
++ arg2 = force_rvalue (arg2, complain);
++ if (arg2 == error_mark_node)
++ return error_mark_node;
++ }
++ arg2_type = TREE_TYPE (arg2);
+ result_type = arg2_type;
+- is_glvalue = glvalue_p (arg2);
+ }
+ else if (VOID_TYPE_P (arg2_type) && VOID_TYPE_P (arg3_type))
+- {
+- result_type = void_type_node;
+- is_glvalue = false;
+- }
++ result_type = void_type_node;
+ else
+ {
+ if (complain & tf_error)
+@@ -5244,6 +5253,7 @@
+ return error_mark_node;
}
- }
-@@ -34645,6 +34647,7 @@
- TREE_TYPE (stmt) = void_type_node;
- OMP_TEAMS_CLAUSES (stmt) = clauses;
- OMP_TEAMS_BODY (stmt) = cp_parser_omp_structured_block (parser, if_p);
-+ SET_EXPR_LOCATION (stmt, loc);
- return add_stmt (stmt);
- }
-@@ -34959,13 +34962,6 @@
- {
- tree *pc = NULL, stmt;
++ is_glvalue = false;
+ goto valid_operands;
+ }
+ /* [expr.cond]
+@@ -5361,6 +5371,10 @@
+ && same_type_p (arg2_type, arg3_type))
+ {
+ result_type = arg2_type;
++ if (processing_template_decl)
++ /* Let lvalue_kind know this was a glvalue. */
++ result_type = cp_build_reference_type (result_type, xvalue_p (arg2));
++
+ arg2 = mark_lvalue_use (arg2);
+ arg3 = mark_lvalue_use (arg3);
+ goto valid_operands;
+@@ -5558,13 +5572,6 @@
+ return error_mark_node;
-- if (context != pragma_stmt && context != pragma_compound)
+ valid_operands:
+- if (processing_template_decl && is_glvalue)
- {
-- cp_parser_error (parser, "expected declaration specifiers");
-- cp_parser_skip_to_pragma_eol (parser, pragma_tok);
-- return false;
+- /* Let lvalue_kind know this was a glvalue. */
+- tree arg = (result_type == arg2_type ? arg2 : arg3);
+- result_type = cp_build_reference_type (result_type, xvalue_p (arg));
- }
-
- if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
+ result = build3_loc (loc, COND_EXPR, result_type, arg1, arg2, arg3);
+
+ /* If the ARG2 and ARG3 are the same and don't have side-effects,
+@@ -10732,7 +10739,9 @@
+ either between a constructor and a conversion op, or between two
+ conversion ops. */
+ if ((complain & tf_warning)
+- && winner && warn_conversion && cand1->second_conv
++ /* In C++17, the constructor might have been elided, which means that
++ an originally null ->second_conv could become non-null. */
++ && winner && warn_conversion && cand1->second_conv && cand2->second_conv
+ && (!DECL_CONSTRUCTOR_P (cand1->fn) || !DECL_CONSTRUCTOR_P (cand2->fn))
+ && winner != compare_ics (cand1->second_conv, cand2->second_conv))
{
- tree id = cp_lexer_peek_token (parser->lexer)->u.value;
-@@ -35070,6 +35066,7 @@
- OMP_TARGET_CLAUSES (stmt) = cclauses[C_OMP_CLAUSE_SPLIT_TARGET];
- OMP_TARGET_BODY (stmt) = body;
- OMP_TARGET_COMBINED (stmt) = 1;
-+ SET_EXPR_LOCATION (stmt, pragma_tok->location);
- add_stmt (stmt);
- pc = &OMP_TARGET_CLAUSES (stmt);
- goto check_clauses;
-@@ -35103,6 +35100,11 @@
- return cp_parser_omp_target_update (parser, pragma_tok, context);
- }
+Index: gcc/cp/lambda.c
+===================================================================
+--- a/src/gcc/cp/lambda.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/lambda.c (.../branches/gcc-9-branch)
+@@ -220,17 +220,8 @@
+ tree type;
+ bool is_this = is_this_parameter (tree_strip_nop_conversions (expr));
+
+- if (!is_this && type_dependent_expression_p (expr))
++ if (!is_this && explicit_init_p)
+ {
+- type = cxx_make_type (DECLTYPE_TYPE);
+- DECLTYPE_TYPE_EXPR (type) = expr;
+- DECLTYPE_FOR_LAMBDA_CAPTURE (type) = true;
+- DECLTYPE_FOR_INIT_CAPTURE (type) = explicit_init_p;
+- DECLTYPE_FOR_REF_CAPTURE (type) = by_reference_p;
+- SET_TYPE_STRUCTURAL_EQUALITY (type);
+- }
+- else if (!is_this && explicit_init_p)
+- {
+ tree auto_node = make_auto ();
+
+ type = auto_node;
+@@ -240,6 +231,14 @@
+ type = build_reference_type (type);
+ type = do_auto_deduction (type, expr, auto_node);
}
-+ if (!flag_openmp) /* flag_openmp_simd */
++ else if (!is_this && type_dependent_expression_p (expr))
+ {
-+ cp_parser_skip_to_pragma_eol (parser, pragma_tok);
-+ return false;
++ type = cxx_make_type (DECLTYPE_TYPE);
++ DECLTYPE_TYPE_EXPR (type) = expr;
++ DECLTYPE_FOR_LAMBDA_CAPTURE (type) = true;
++ DECLTYPE_FOR_REF_CAPTURE (type) = by_reference_p;
++ SET_TYPE_STRUCTURAL_EQUALITY (type);
+ }
+ else
+ {
+ type = non_reference (unlowered_expr_type (expr));
+@@ -602,7 +601,16 @@
+ name = get_identifier (buf);
- stmt = make_node (OMP_TARGET);
- TREE_TYPE (stmt) = void_type_node;
-@@ -35347,7 +35349,7 @@
- id = get_identifier ("omp declare target");
-
- DECL_ATTRIBUTES (decl)
-- = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (decl));
-+ = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (decl));
- if (global_bindings_p ())
- {
- symtab_node *node = symtab_node::get (decl);
-@@ -35887,8 +35889,11 @@
- }
- if (!at1)
- {
-+ DECL_ATTRIBUTES (t) = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (t));
-+ if (TREE_CODE (t) != FUNCTION_DECL && !is_global_var (t))
-+ continue;
-+
- symtab_node *node = symtab_node::get (t);
-- DECL_ATTRIBUTES (t) = tree_cons (id, NULL_TREE, DECL_ATTRIBUTES (t));
- if (node != NULL)
- {
- node->offloadable = 1;
-@@ -37404,6 +37409,8 @@
- return true;
+ if (variadic)
+- type = make_pack_expansion (type);
++ {
++ type = make_pack_expansion (type);
++ if (explicit_init_p)
++ /* With an explicit initializer 'type' is auto, which isn't really a
++ parameter pack in this context. We will want as many fields as we
++ have elements in the expansion of the initializer, so use its packs
++ instead. */
++ PACK_EXPANSION_PARAMETER_PACKS (type)
++ = uses_parameter_packs (initializer);
++ }
- case PRAGMA_OMP_ORDERED:
-+ if (context != pragma_stmt && context != pragma_compound)
-+ goto bad_stmt;
- stmt = push_omp_privatization_clauses (false);
- ret = cp_parser_omp_ordered (parser, pragma_tok, context, if_p);
- pop_omp_privatization_clauses (stmt);
-@@ -37410,6 +37417,8 @@
- return ret;
-
- case PRAGMA_OMP_TARGET:
-+ if (context != pragma_stmt && context != pragma_compound)
-+ goto bad_stmt;
- stmt = push_omp_privatization_clauses (false);
- ret = cp_parser_omp_target (parser, pragma_tok, context, if_p);
- pop_omp_privatization_clauses (stmt);
-Index: gcc/cp/call.c
+ /* Make member variable. */
+ member = build_decl (input_location, FIELD_DECL, name, type);
+Index: gcc/cp/cp-tree.h
===================================================================
---- a/src/gcc/cp/call.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/call.c (.../branches/gcc-6-branch)
-@@ -6465,7 +6465,7 @@
- if (complain & tf_error)
- {
- /* Call build_user_type_conversion again for the error. */
-- build_user_type_conversion (totype, convs->u.expr, LOOKUP_NORMAL,
-+ build_user_type_conversion (totype, convs->u.expr, LOOKUP_IMPLICIT,
- complain);
- if (fn)
- inform (DECL_SOURCE_LOCATION (fn),
-@@ -7667,6 +7667,9 @@
- {
- arg = cp_build_indirect_ref (arg, RO_NULL, complain);
- val = build2 (MODIFY_EXPR, TREE_TYPE (to), to, arg);
-+ if (cxx_dialect >= cxx14)
-+ /* Handle NSDMI that refer to the object being initialized. */
-+ replace_placeholders (arg, to);
- }
- else
- {
-Index: gcc/cp/lambda.c
+--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-9-branch)
+@@ -423,7 +423,6 @@
+ LAMBDA_EXPR_MUTABLE_P (in LAMBDA_EXPR)
+ DECL_FINAL_P (in FUNCTION_DECL)
+ QUALIFIED_NAME_IS_TEMPLATE (in SCOPE_REF)
+- DECLTYPE_FOR_INIT_CAPTURE (in DECLTYPE_TYPE)
+ CONSTRUCTOR_IS_DEPENDENT (in CONSTRUCTOR)
+ TINFO_USED_TEMPLATE_ID (in TEMPLATE_INFO)
+ PACK_EXPANSION_SIZEOF_P (in *_PACK_EXPANSION)
+@@ -4471,12 +4470,10 @@
+ (DECLTYPE_TYPE_CHECK (NODE))->type_common.string_flag
+
+ /* These flags indicate that we want different semantics from normal
+- decltype: lambda capture just drops references, init capture
+- uses auto semantics, lambda proxies look through implicit dereference. */
++ decltype: lambda capture just drops references,
++ lambda proxies look through implicit dereference. */
+ #define DECLTYPE_FOR_LAMBDA_CAPTURE(NODE) \
+ TREE_LANG_FLAG_0 (DECLTYPE_TYPE_CHECK (NODE))
+-#define DECLTYPE_FOR_INIT_CAPTURE(NODE) \
+- TREE_LANG_FLAG_1 (DECLTYPE_TYPE_CHECK (NODE))
+ #define DECLTYPE_FOR_LAMBDA_PROXY(NODE) \
+ TREE_LANG_FLAG_2 (DECLTYPE_TYPE_CHECK (NODE))
+ #define DECLTYPE_FOR_REF_CAPTURE(NODE) \
+@@ -6779,7 +6776,7 @@
+ extern tree instantiate_decl (tree, bool, bool);
+ extern int comp_template_parms (const_tree, const_tree);
+ extern bool builtin_pack_fn_p (tree);
+-extern bool uses_parameter_packs (tree);
++extern tree uses_parameter_packs (tree);
+ extern bool template_parameter_pack_p (const_tree);
+ extern bool function_parameter_pack_p (const_tree);
+ extern bool function_parameter_expanded_from_pack_p (tree, tree);
+@@ -7328,6 +7325,11 @@
+
+ extern void cxx_print_statistics (void);
+ extern bool maybe_warn_zero_as_null_pointer_constant (tree, location_t);
++/* Analogous to initializer_zerop but also examines the type for
++ which the initializer is being used. Unlike initializer_zerop,
++ considers empty strings to be zero initializers for arrays and
++ non-zero for pointers. */
++extern bool type_initializer_zero_p (tree, tree);
+
+ /* in ptree.c */
+ extern void cxx_print_xnode (FILE *, tree, int);
+Index: gcc/cp/name-lookup.c
===================================================================
---- a/src/gcc/cp/lambda.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/lambda.c (.../branches/gcc-6-branch)
-@@ -746,16 +746,14 @@
- return result;
- }
+--- a/src/gcc/cp/name-lookup.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cp/name-lookup.c (.../branches/gcc-9-branch)
+@@ -5656,7 +5656,7 @@
+ {"bitset", "<bitset>", cxx11},
+ /* <complex>. */
+ {"complex", "<complex>", cxx98},
+- {"complex_literals", "<complex>", cxx98},
++ {"complex_literals", "<complex>", cxx14},
+ /* <condition_variable>. */
+ {"condition_variable", "<condition_variable>", cxx11},
+ {"condition_variable_any", "<condition_variable>", cxx11},
+@@ -5718,7 +5718,7 @@
+ {"multimap", "<map>", cxx98},
+ /* <memory>. */
+ {"make_shared", "<memory>", cxx11},
+- {"make_unique", "<memory>", cxx11},
++ {"make_unique", "<memory>", cxx14},
+ {"shared_ptr", "<memory>", cxx11},
+ {"unique_ptr", "<memory>", cxx11},
+ {"weak_ptr", "<memory>", cxx11},
+Index: gcc/passes.def
+===================================================================
+--- a/src/gcc/passes.def (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/passes.def (.../branches/gcc-9-branch)
+@@ -434,6 +434,7 @@
+ NEXT_PASS (pass_ud_rtl_dce);
+ NEXT_PASS (pass_combine);
+ NEXT_PASS (pass_if_after_combine);
++ NEXT_PASS (pass_jump_after_combine);
+ NEXT_PASS (pass_partition_blocks);
+ NEXT_PASS (pass_outof_cfg_layout_mode);
+ NEXT_PASS (pass_split_all_insns);
+@@ -450,7 +451,6 @@
+ NEXT_PASS (pass_reload);
+ NEXT_PASS (pass_postreload);
+ PUSH_INSERT_PASSES_WITHIN (pass_postreload)
+- NEXT_PASS (pass_postreload_jump);
+ NEXT_PASS (pass_postreload_cse);
+ NEXT_PASS (pass_gcse2);
+ NEXT_PASS (pass_split_after_reload);
+Index: gcc/lto-streamer-out.c
+===================================================================
+--- a/src/gcc/lto-streamer-out.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lto-streamer-out.c (.../branches/gcc-9-branch)
+@@ -43,6 +43,7 @@
+ #include "debug.h"
+ #include "omp-offload.h"
+ #include "print-tree.h"
++#include "tree-dfa.h"
+
+
+ static void lto_write_tree (struct output_block*, tree, bool);
+@@ -1891,7 +1892,7 @@
+
+ streamer_write_hwi (ob, -1);
+
+- bb = ENTRY_BLOCK_PTR_FOR_FN (cfun);
++ bb = ENTRY_BLOCK_PTR_FOR_FN (fn);
+ while (bb->next_bb)
+ {
+ streamer_write_hwi (ob, bb->next_bb->index);
+@@ -1900,9 +1901,6 @@
--/* We don't want to capture 'this' until we know we need it, i.e. after
-- overload resolution has chosen a non-static member function. At that
-- point we call this function to turn a dummy object into a use of the
-- 'this' capture. */
-+/* Return the current LAMBDA_EXPR, if this is a resolvable dummy
-+ object. NULL otherwise.. */
-
--tree
--maybe_resolve_dummy (tree object, bool add_capture_p)
-+static tree
-+resolvable_dummy_lambda (tree object)
- {
- if (!is_dummy_object (object))
-- return object;
-+ return NULL_TREE;
-
- tree type = TYPE_MAIN_VARIANT (TREE_TYPE (object));
- gcc_assert (!TYPE_PTR_P (type));
-@@ -765,18 +763,64 @@
- && LAMBDA_TYPE_P (current_class_type)
- && lambda_function (current_class_type)
- && DERIVED_FROM_P (type, current_nonlambda_class_type ()))
-- {
-- /* In a lambda, need to go through 'this' capture. */
-- tree lam = CLASSTYPE_LAMBDA_EXPR (current_class_type);
-- tree cap = lambda_expr_this_capture (lam, add_capture_p);
-- if (cap && cap != error_mark_node)
-+ return CLASSTYPE_LAMBDA_EXPR (current_class_type);
-+
-+ return NULL_TREE;
-+}
-+
-+/* We don't want to capture 'this' until we know we need it, i.e. after
-+ overload resolution has chosen a non-static member function. At that
-+ point we call this function to turn a dummy object into a use of the
-+ 'this' capture. */
-+
-+tree
-+maybe_resolve_dummy (tree object, bool add_capture_p)
-+{
-+ if (tree lam = resolvable_dummy_lambda (object))
-+ if (tree cap = lambda_expr_this_capture (lam, add_capture_p))
-+ if (cap != error_mark_node)
- object = build_x_indirect_ref (EXPR_LOCATION (object), cap,
- RO_NULL, tf_warning_or_error);
-- }
+ streamer_write_hwi (ob, -1);
+
+- /* ??? The cfgloop interface is tied to cfun. */
+- gcc_assert (cfun == fn);
+-
+ /* Output the number of loops. */
+ streamer_write_uhwi (ob, number_of_loops (fn));
- return object;
+@@ -2063,6 +2061,62 @@
+ collect_block_tree_leafs (BLOCK_SUBBLOCKS (root), leafs);
}
-+/* When parsing a generic lambda containing an argument-dependent
-+ member function call we defer overload resolution to instantiation
-+ time. But we have to know now whether to capture this or not.
-+ Do that if FNS contains any non-static fns.
-+ The std doesn't anticipate this case, but I expect this to be the
-+ outcome of discussion. */
++/* This performs function body modifications that are needed for streaming
++ to work. */
+
+void
-+maybe_generic_this_capture (tree object, tree fns)
++lto_prepare_function_for_streaming (struct cgraph_node *node)
+{
-+ if (tree lam = resolvable_dummy_lambda (object))
-+ if (!LAMBDA_EXPR_THIS_CAPTURE (lam))
-+ {
-+ /* We've not yet captured, so look at the function set of
-+ interest. */
-+ if (BASELINK_P (fns))
-+ fns = BASELINK_FUNCTIONS (fns);
-+ bool id_expr = TREE_CODE (fns) == TEMPLATE_ID_EXPR;
-+ if (id_expr)
-+ fns = TREE_OPERAND (fns, 0);
-+ for (; fns; fns = OVL_NEXT (fns))
-+ {
-+ tree fn = OVL_CURRENT (fns);
++ struct function *fn = DECL_STRUCT_FUNCTION (node->decl);
++ basic_block bb;
++
++ if (number_of_loops (fn))
++ {
++ push_cfun (fn);
++ loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
++ loop_optimizer_finalize ();
++ pop_cfun ();
++ }
++ /* We will renumber the statements. The code that does this uses
++ the same ordering that we use for serializing them so we can use
++ the same code on the other end and not have to write out the
++ statement numbers. We do not assign UIDs to PHIs here because
++ virtual PHIs get re-computed on-the-fly which would make numbers
++ inconsistent. */
++ set_gimple_stmt_max_uid (fn, 0);
++ FOR_ALL_BB_FN (bb, fn)
++ {
++ for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
++ gsi_next (&gsi))
++ {
++ gphi *stmt = gsi.phi ();
++
++ /* Virtual PHIs are not going to be streamed. */
++ if (!virtual_operand_p (gimple_phi_result (stmt)))
++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fn));
++ }
++ for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
++ gsi_next (&gsi))
++ {
++ gimple *stmt = gsi_stmt (gsi);
++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fn));
++ }
++ }
++ /* To avoid keeping duplicate gimple IDs in the statements, renumber
++ virtual phis now. */
++ FOR_ALL_BB_FN (bb, fn)
++ {
++ for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
++ gsi_next (&gsi))
++ {
++ gphi *stmt = gsi.phi ();
++ if (virtual_operand_p (gimple_phi_result (stmt)))
++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fn));
++ }
++ }
+
-+ if (identifier_p (fns)
-+ || ((!id_expr || TREE_CODE (fn) == TEMPLATE_DECL)
-+ && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)))
-+ {
-+ /* Found a non-static member. Capture this. */
-+ lambda_expr_this_capture (lam, true);
-+ break;
-+ }
-+ }
-+ }
+}
+
- /* Returns the innermost non-lambda function. */
+ /* Output the body of function NODE->DECL. */
- tree
-Index: gcc/cp/cp-tree.h
+ static void
+@@ -2086,9 +2140,6 @@
+
+ gcc_assert (current_function_decl == NULL_TREE && cfun == NULL);
+
+- /* Set current_function_decl and cfun. */
+- push_cfun (fn);
+-
+ /* Make string 0 be a NULL string. */
+ streamer_write_char_stream (ob->string_stream, 0);
+
+@@ -2125,9 +2176,6 @@
+ debug info. */
+ if (gimple_has_body_p (function))
+ {
+- /* Fixup loops if required to match discovery done in the reader. */
+- loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
+-
+ streamer_write_uhwi (ob, 1);
+ output_struct_function_base (ob, fn);
+
+@@ -2137,45 +2185,6 @@
+ /* Output any exception handling regions. */
+ output_eh_regions (ob, fn);
+
+-
+- /* We will renumber the statements. The code that does this uses
+- the same ordering that we use for serializing them so we can use
+- the same code on the other end and not have to write out the
+- statement numbers. We do not assign UIDs to PHIs here because
+- virtual PHIs get re-computed on-the-fly which would make numbers
+- inconsistent. */
+- set_gimple_stmt_max_uid (cfun, 0);
+- FOR_ALL_BB_FN (bb, cfun)
+- {
+- for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
+- gsi_next (&gsi))
+- {
+- gphi *stmt = gsi.phi ();
+-
+- /* Virtual PHIs are not going to be streamed. */
+- if (!virtual_operand_p (gimple_phi_result (stmt)))
+- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun));
+- }
+- for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
+- gsi_next (&gsi))
+- {
+- gimple *stmt = gsi_stmt (gsi);
+- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun));
+- }
+- }
+- /* To avoid keeping duplicate gimple IDs in the statements, renumber
+- virtual phis now. */
+- FOR_ALL_BB_FN (bb, cfun)
+- {
+- for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
+- gsi_next (&gsi))
+- {
+- gphi *stmt = gsi.phi ();
+- if (virtual_operand_p (gimple_phi_result (stmt)))
+- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun));
+- }
+- }
+-
+ /* Output the code for the function. */
+ FOR_ALL_BB_FN (bb, fn)
+ output_bb (ob, bb, fn);
+@@ -2184,9 +2193,6 @@
+ streamer_write_record_start (ob, LTO_null);
+
+ output_cfg (ob, fn);
+-
+- loop_optimizer_finalize ();
+- pop_cfun ();
+ }
+ else
+ streamer_write_uhwi (ob, 0);
+@@ -2617,12 +2623,6 @@
+ const char *comdat;
+ unsigned char c;
+
+- gcc_checking_assert (TREE_PUBLIC (t)
+- && (TREE_CODE (t) != FUNCTION_DECL
+- || !fndecl_built_in_p (t))
+- && !DECL_ABSTRACT_P (t)
+- && (!VAR_P (t) || !DECL_HARD_REGISTER (t)));
+-
+ gcc_assert (VAR_OR_FUNCTION_DECL_P (t));
+
+ name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (t));
+Index: gcc/tree-ssa-math-opts.c
===================================================================
---- a/src/gcc/cp/cp-tree.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-6-branch)
-@@ -6447,6 +6447,7 @@
- extern bool is_normal_capture_proxy (tree);
- extern void register_capture_members (tree);
- extern tree lambda_expr_this_capture (tree, bool);
-+extern void maybe_generic_this_capture (tree, tree);
- extern tree maybe_resolve_dummy (tree, bool);
- extern tree current_nonlambda_function (void);
- extern tree nonlambda_method_basetype (void);
-Index: gcc/cp/name-lookup.c
+--- a/src/gcc/tree-ssa-math-opts.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-math-opts.c (.../branches/gcc-9-branch)
+@@ -3840,7 +3840,7 @@
+
+ memset (&widen_mul_stats, 0, sizeof (widen_mul_stats));
+ calculate_dominance_info (CDI_DOMINATORS);
+- renumber_gimple_stmt_uids ();
++ renumber_gimple_stmt_uids (cfun);
+
+ math_opts_dom_walker (&cfg_changed).walk (ENTRY_BLOCK_PTR_FOR_FN (cfun));
+
+Index: gcc/tree-ssa-alias.c
===================================================================
---- a/src/gcc/cp/name-lookup.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cp/name-lookup.c (.../branches/gcc-6-branch)
-@@ -3470,7 +3470,12 @@
- if (scope == NULL_TREE)
- scope = global_namespace;
- b = binding_for_name (NAMESPACE_LEVEL (scope), name);
-- if (!b->value || TREE_CODE (val) == OVERLOAD || val == error_mark_node)
-+ if (!b->value
-+ /* For templates and using we create a single element OVERLOAD.
-+ Look for the chain to know whether this is really augmenting
-+ an existing overload. */
-+ || (TREE_CODE (val) == OVERLOAD && OVL_CHAIN (val))
-+ || val == error_mark_node)
- b->value = val;
- else
- supplement_binding (b, val);
-Index: gcc/tree-ssa-ccp.c
-===================================================================
---- a/src/gcc/tree-ssa-ccp.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-ssa-ccp.c (.../branches/gcc-6-branch)
-@@ -729,9 +729,11 @@
- case PLUS_EXPR:
- case MINUS_EXPR:
- case POINTER_PLUS_EXPR:
-+ case BIT_XOR_EXPR:
- /* Not MIN_EXPR, MAX_EXPR. One VARYING operand may be selected.
- Not bitwise operators, one VARYING operand may specify the
-- result completely. Not logical operators for the same reason.
-+ result completely.
-+ Not logical operators for the same reason, apart from XOR.
- Not COMPLEX_EXPR as one VARYING operand makes the result partly
- not UNDEFINED. Not *DIV_EXPR, comparisons and shifts because
- the undefined operand may be promoted. */
-@@ -1733,18 +1735,24 @@
- fold_defer_overflow_warnings ();
- simplified = ccp_fold (stmt);
- if (simplified
-- && TREE_CODE (simplified) == SSA_NAME
-+ && TREE_CODE (simplified) == SSA_NAME)
-+ {
- /* We may not use values of something that may be simulated again,
- see valueize_op_1. */
-- && (SSA_NAME_IS_DEFAULT_DEF (simplified)
-- || ! prop_simulate_again_p (SSA_NAME_DEF_STMT (simplified))))
-- {
-- val = *get_value (simplified);
-- if (val.lattice_val != VARYING)
-+ if (SSA_NAME_IS_DEFAULT_DEF (simplified)
-+ || ! prop_simulate_again_p (SSA_NAME_DEF_STMT (simplified)))
+--- a/src/gcc/tree-ssa-alias.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-alias.c (.../branches/gcc-9-branch)
+@@ -2599,8 +2599,8 @@
+
+ static bool
+ maybe_skip_until (gimple *phi, tree &target, basic_block target_bb,
+- ao_ref *ref, tree vuse, unsigned int &limit, bitmap *visited,
+- bool abort_on_visited,
++ ao_ref *ref, tree vuse, bool tbaa_p, unsigned int &limit,
++ bitmap *visited, bool abort_on_visited,
+ void *(*translate)(ao_ref *, tree, void *, bool *),
+ void *data)
+ {
+@@ -2634,7 +2634,7 @@
+ /* An already visited PHI node ends the walk successfully. */
+ if (bitmap_bit_p (*visited, SSA_NAME_VERSION (PHI_RESULT (def_stmt))))
+ return !abort_on_visited;
+- vuse = get_continuation_for_phi (def_stmt, ref, limit,
++ vuse = get_continuation_for_phi (def_stmt, ref, tbaa_p, limit,
+ visited, abort_on_visited,
+ translate, data);
+ if (!vuse)
+@@ -2649,7 +2649,7 @@
+ if ((int)limit <= 0)
+ return false;
+ --limit;
+- if (stmt_may_clobber_ref_p_1 (def_stmt, ref))
++ if (stmt_may_clobber_ref_p_1 (def_stmt, ref, tbaa_p))
{
-- fold_undefer_overflow_warnings (true, stmt, 0);
-- return val;
-+ val = *get_value (simplified);
-+ if (val.lattice_val != VARYING)
-+ {
-+ fold_undefer_overflow_warnings (true, stmt, 0);
-+ return val;
-+ }
+ bool disambiguate_only = true;
+ if (translate
+@@ -2681,7 +2681,7 @@
+ Returns NULL_TREE if no suitable virtual operand can be found. */
+
+ tree
+-get_continuation_for_phi (gimple *phi, ao_ref *ref,
++get_continuation_for_phi (gimple *phi, ao_ref *ref, bool tbaa_p,
+ unsigned int &limit, bitmap *visited,
+ bool abort_on_visited,
+ void *(*translate)(ao_ref *, tree, void *, bool *),
+@@ -2724,7 +2724,8 @@
+ arg1 = PHI_ARG_DEF (phi, i);
+ if (arg1 == arg0)
+ ;
+- else if (! maybe_skip_until (phi, arg0, dom, ref, arg1, limit, visited,
++ else if (! maybe_skip_until (phi, arg0, dom, ref, arg1, tbaa_p,
++ limit, visited,
+ abort_on_visited,
+ /* Do not translate when walking over
+ backedges. */
+@@ -2768,7 +2769,7 @@
+ TODO: Cache the vector of equivalent vuses per ref, vuse pair. */
+
+ void *
+-walk_non_aliased_vuses (ao_ref *ref, tree vuse,
++walk_non_aliased_vuses (ao_ref *ref, tree vuse, bool tbaa_p,
+ void *(*walker)(ao_ref *, tree, void *),
+ void *(*translate)(ao_ref *, tree, void *, bool *),
+ tree (*valueize)(tree),
+@@ -2809,7 +2810,7 @@
+ if (gimple_nop_p (def_stmt))
+ break;
+ else if (gimple_code (def_stmt) == GIMPLE_PHI)
+- vuse = get_continuation_for_phi (def_stmt, ref, limit,
++ vuse = get_continuation_for_phi (def_stmt, ref, tbaa_p, limit,
+ &visited, translated, translate, data);
+ else
+ {
+@@ -2819,7 +2820,7 @@
+ break;
}
-+ else
-+ /* We may also not place a non-valueized copy in the lattice
-+ as that might become stale if we never re-visit this stmt. */
-+ simplified = NULL_TREE;
- }
- is_constant = simplified && is_gimple_min_invariant (simplified);
- fold_undefer_overflow_warnings (is_constant, stmt, 0);
-Index: gcc/lto-cgraph.c
+ --limit;
+- if (stmt_may_clobber_ref_p_1 (def_stmt, ref))
++ if (stmt_may_clobber_ref_p_1 (def_stmt, ref, tbaa_p))
+ {
+ if (!translate)
+ break;
+Index: gcc/lto-wrapper.c
===================================================================
---- a/src/gcc/lto-cgraph.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/lto-cgraph.c (.../branches/gcc-6-branch)
-@@ -623,6 +623,7 @@
- }
- bp_pack_value (&bp, node->tls_model, 3);
- bp_pack_value (&bp, node->used_by_single_function, 1);
-+ bp_pack_value (&bp, node->dynamically_initialized, 1);
- bp_pack_value (&bp, node->need_bounds_init, 1);
- streamer_write_bitpack (&bp);
-
-@@ -1397,6 +1398,7 @@
- node->alias_target = get_alias_symbol (node->decl);
- node->tls_model = (enum tls_model)bp_unpack_value (&bp, 3);
- node->used_by_single_function = (enum tls_model)bp_unpack_value (&bp, 1);
-+ node->dynamically_initialized = bp_unpack_value (&bp, 1);
- node->need_bounds_init = bp_unpack_value (&bp, 1);
- group = read_identifier (ib);
- if (group)
-Index: gcc/cgraphclones.c
-===================================================================
---- a/src/gcc/cgraphclones.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cgraphclones.c (.../branches/gcc-6-branch)
-@@ -152,9 +152,9 @@
- /* Build variant of function type ORIG_TYPE skipping ARGS_TO_SKIP and the
- return value if SKIP_RETURN is true. */
-
--static tree
--build_function_type_skip_args (tree orig_type, bitmap args_to_skip,
-- bool skip_return)
-+tree
-+cgraph_build_function_type_skip_args (tree orig_type, bitmap args_to_skip,
-+ bool skip_return)
+--- a/src/gcc/lto-wrapper.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lto-wrapper.c (.../branches/gcc-9-branch)
+@@ -128,12 +128,11 @@
+ #define DUMPBASE_SUFFIX ".ltrans18446744073709551615"
+
+ /* Create decoded options from the COLLECT_GCC and COLLECT_GCC_OPTIONS
+- environment according to LANG_MASK. */
++ environment. */
+
+ static void
+ get_options_from_collect_gcc_options (const char *collect_gcc,
+ const char *collect_gcc_options,
+- unsigned int lang_mask,
+ struct cl_decoded_option **decoded_options,
+ unsigned int *decoded_options_count)
{
- tree new_type = NULL;
- tree args, new_args = NULL;
-@@ -219,7 +219,8 @@
- if (prototype_p (new_type)
- || (skip_return && !VOID_TYPE_P (TREE_TYPE (new_type))))
- new_type
-- = build_function_type_skip_args (new_type, args_to_skip, skip_return);
-+ = cgraph_build_function_type_skip_args (new_type, args_to_skip,
-+ skip_return);
- TREE_TYPE (new_decl) = new_type;
-
- /* For declarations setting DECL_VINDEX (i.e. methods)
-Index: gcc/passes.def
+@@ -175,8 +174,7 @@
+ argc = obstack_object_size (&argv_obstack) / sizeof (void *) - 1;
+ argv = XOBFINISH (&argv_obstack, const char **);
+
+- decode_cmdline_options_to_array (argc, (const char **)argv,
+- lang_mask,
++ decode_cmdline_options_to_array (argc, (const char **)argv, CL_DRIVER,
+ decoded_options, decoded_options_count);
+ obstack_free (&argv_obstack, NULL);
+ }
+@@ -1008,8 +1006,7 @@
+ {
+ struct cl_decoded_option *f2decoded_options;
+ unsigned int f2decoded_options_count;
+- get_options_from_collect_gcc_options (collect_gcc,
+- fopts, CL_LANG_ALL,
++ get_options_from_collect_gcc_options (collect_gcc, fopts,
+ &f2decoded_options,
+ &f2decoded_options_count);
+ if (!fdecoded_options)
+@@ -1150,7 +1147,6 @@
+ fatal_error (input_location,
+ "environment variable COLLECT_GCC_OPTIONS must be set");
+ get_options_from_collect_gcc_options (collect_gcc, collect_gcc_options,
+- CL_LANG_ALL,
+ &decoded_options,
+ &decoded_options_count);
+
+Index: gcc/tree-ssa-alias.h
+===================================================================
+--- a/src/gcc/tree-ssa-alias.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-alias.h (.../branches/gcc-9-branch)
+@@ -131,11 +131,11 @@
+ extern bool call_may_clobber_ref_p_1 (gcall *, ao_ref *);
+ extern bool stmt_kills_ref_p (gimple *, tree);
+ extern bool stmt_kills_ref_p (gimple *, ao_ref *);
+-extern tree get_continuation_for_phi (gimple *, ao_ref *,
++extern tree get_continuation_for_phi (gimple *, ao_ref *, bool,
+ unsigned int &, bitmap *, bool,
+ void *(*)(ao_ref *, tree, void *, bool *),
+ void *);
+-extern void *walk_non_aliased_vuses (ao_ref *, tree,
++extern void *walk_non_aliased_vuses (ao_ref *, tree, bool,
+ void *(*)(ao_ref *, tree, void *),
+ void *(*)(ao_ref *, tree, void *, bool *),
+ tree (*)(tree), unsigned &, void *);
+Index: gcc/tree-ssa-sink.c
+===================================================================
+--- a/src/gcc/tree-ssa-sink.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-sink.c (.../branches/gcc-9-branch)
+@@ -439,7 +439,10 @@
+ if (sinkbb == frombb)
+ return false;
+
+- *togsi = gsi_for_stmt (use);
++ if (sinkbb == gimple_bb (use))
++ *togsi = gsi_for_stmt (use);
++ else
++ *togsi = gsi_after_labels (sinkbb);
+
+ return true;
+ }
+Index: gcc/dwarf2out.c
===================================================================
---- a/src/gcc/passes.def (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/passes.def (.../branches/gcc-6-branch)
-@@ -132,6 +132,7 @@
- POP_INSERT_PASSES ()
- POP_INSERT_PASSES ()
-
-+ NEXT_PASS (pass_target_clone);
- NEXT_PASS (pass_ipa_chkp_produce_thunks);
- NEXT_PASS (pass_ipa_auto_profile);
- NEXT_PASS (pass_ipa_free_inline_summary);
-@@ -151,7 +152,6 @@
- NEXT_PASS (pass_ipa_devirt);
- NEXT_PASS (pass_ipa_cp);
- NEXT_PASS (pass_ipa_cdtor_merge);
-- NEXT_PASS (pass_target_clone);
- NEXT_PASS (pass_ipa_hsa);
- NEXT_PASS (pass_ipa_inline);
- NEXT_PASS (pass_ipa_pure_const);
-@@ -169,7 +169,6 @@
- compiled unit. */
- INSERT_PASSES_AFTER (all_late_ipa_passes)
- NEXT_PASS (pass_ipa_pta);
-- NEXT_PASS (pass_dispatcher_calls);
- NEXT_PASS (pass_omp_simd_clone);
- TERMINATE_PASS_LIST ()
-
-Index: gcc/tree-ssa-loop-ivopts.c
-===================================================================
---- a/src/gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-6-branch)
-@@ -7321,7 +7321,11 @@
- base_hint = var_at_stmt (data->current_loop, cand, use->stmt);
-
- iv = var_at_stmt (data->current_loop, cand, use->stmt);
-- ref = create_mem_ref (&bsi, TREE_TYPE (*use->op_p), &aff,
-+ tree type = TREE_TYPE (*use->op_p);
-+ unsigned int align = get_object_alignment (*use->op_p);
-+ if (align != TYPE_ALIGN (type))
-+ type = build_aligned_type (type, align);
-+ ref = create_mem_ref (&bsi, type, &aff,
- reference_alias_ptr_type (*use->op_p),
- iv, base_hint, data->speed);
- copy_ref_info (ref, *use->op_p);
-Index: gcc/tree-call-cdce.c
-===================================================================
---- a/src/gcc/tree-call-cdce.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-call-cdce.c (.../branches/gcc-6-branch)
-@@ -805,7 +805,18 @@
- if (EDGE_COUNT (join_tgt_in_edge_from_call->dest->preds) > 1)
- join_tgt_bb = split_edge (join_tgt_in_edge_from_call);
- else
-- join_tgt_bb = join_tgt_in_edge_from_call->dest;
-+ {
-+ join_tgt_bb = join_tgt_in_edge_from_call->dest;
-+ /* We may have degenerate PHIs in the destination. Propagate
-+ those out. */
-+ for (gphi_iterator i = gsi_start_phis (join_tgt_bb); !gsi_end_p (i);)
-+ {
-+ gphi *phi = i.phi ();
-+ replace_uses_by (gimple_phi_result (phi),
-+ gimple_phi_arg_def (phi, 0));
-+ remove_phi_node (&i, true);
-+ }
-+ }
- }
- else
+--- a/src/gcc/dwarf2out.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/dwarf2out.c (.../branches/gcc-9-branch)
+@@ -15461,7 +15461,7 @@
+ if (mode != GET_MODE (rtl) && GET_MODE (rtl) != VOIDmode)
+ return NULL;
+
+- scalar_int_mode int_mode, inner_mode, op1_mode;
++ scalar_int_mode int_mode = BImode, inner_mode, op1_mode;
+ switch (GET_CODE (rtl))
{
-@@ -830,10 +841,12 @@
- gsi_insert_before (&bi_call_bsi, c, GSI_SAME_STMT);
- cond_expr = c;
- }
-- nconds--;
- ci++;
- gcc_assert (cond_expr && gimple_code (cond_expr) == GIMPLE_COND);
-
-+ typedef std::pair<edge, edge> edge_pair;
-+ auto_vec<edge_pair, 8> edges;
-+
- bi_call_in_edge0 = split_block (bi_call_bb, cond_expr);
- bi_call_in_edge0->flags &= ~EDGE_FALLTHRU;
- bi_call_in_edge0->flags |= EDGE_FALSE_VALUE;
-@@ -842,17 +855,11 @@
- join_tgt_in_edge_fall_thru = make_edge (guard_bb, join_tgt_bb,
- EDGE_TRUE_VALUE);
-
-- bi_call_in_edge0->probability = REG_BR_PROB_BASE * ERR_PROB;
-- bi_call_in_edge0->count =
-- apply_probability (guard_bb->count,
-- bi_call_in_edge0->probability);
-- join_tgt_in_edge_fall_thru->probability =
-- inverse_probability (bi_call_in_edge0->probability);
-- join_tgt_in_edge_fall_thru->count =
-- guard_bb->count - bi_call_in_edge0->count;
-+ edges.reserve (nconds);
-+ edges.quick_push (edge_pair (bi_call_in_edge0, join_tgt_in_edge_fall_thru));
-
- /* Code generation for the rest of the conditions */
-- while (nconds > 0)
-+ for (unsigned int i = 1; i < nconds; ++i)
+ case POST_INC:
+@@ -22284,19 +22284,18 @@
+ /* If the contexts differ, we may not be talking about the same
+ thing.
+ ??? When in LTO the DIE parent is the "abstract" copy and the
+- context_die is the specification "copy". But this whole block
+- should eventually be no longer needed. */
+- if (parm_die && parm_die->die_parent != context_die && !in_lto_p)
++ context_die is the specification "copy". */
++ if (parm_die
++ && parm_die->die_parent != context_die
++ && (parm_die->die_parent->die_tag != DW_TAG_GNU_formal_parameter_pack
++ || parm_die->die_parent->die_parent != context_die)
++ && !in_lto_p)
+ {
+- if (!DECL_ABSTRACT_P (node))
+- {
+- /* This can happen when creating an inlined instance, in
+- which case we need to create a new DIE that will get
+- annotated with DW_AT_abstract_origin. */
+- parm_die = NULL;
+- }
+- else
+- gcc_unreachable ();
++ gcc_assert (!DECL_ABSTRACT_P (node));
++ /* This can happen when creating a concrete instance, in
++ which case we need to create a new DIE that will get
++ annotated with DW_AT_abstract_origin. */
++ parm_die = NULL;
+ }
+
+ if (parm_die && parm_die->die_parent == NULL)
+@@ -26647,17 +26646,13 @@
{
- unsigned ci0;
- edge bi_call_in_edge;
-@@ -868,7 +875,6 @@
- gsi_insert_before (&guard_bsi, c, GSI_SAME_STMT);
- cond_expr = c;
- }
-- nconds--;
- ci++;
- gcc_assert (cond_expr && gimple_code (cond_expr) == GIMPLE_COND);
- guard_bb_in_edge = split_block (guard_bb, cond_expr);
-@@ -876,14 +882,51 @@
- guard_bb_in_edge->flags |= EDGE_TRUE_VALUE;
-
- bi_call_in_edge = make_edge (guard_bb, bi_call_bb, EDGE_FALSE_VALUE);
-+ edges.quick_push (edge_pair (bi_call_in_edge, guard_bb_in_edge));
-+ }
+ dw_die_ref die = lookup_decl_die (decl);
-- bi_call_in_edge->probability = REG_BR_PROB_BASE * ERR_PROB;
-- bi_call_in_edge->count =
-- apply_probability (guard_bb->count,
-- bi_call_in_edge->probability);
-- guard_bb_in_edge->probability =
-- inverse_probability (bi_call_in_edge->probability);
-- guard_bb_in_edge->count = guard_bb->count - bi_call_in_edge->count;
-+ /* Now update the probability and profile information, processing the
-+ guards in order of execution.
-+
-+ There are two approaches we could take here. On the one hand we
-+ could assign a probability of X to the call block and distribute
-+ that probability among its incoming edges. On the other hand we
-+ could assign a probability of X to each individual call edge.
-+
-+ The choice only affects calls that have more than one condition.
-+ In those cases, the second approach would give the call block
-+ a greater probability than the first. However, the difference
-+ is only small, and our chosen X is a pure guess anyway.
-+
-+ Here we take the second approach because it's slightly simpler
-+ and because it's easy to see that it doesn't lose profile counts. */
-+ bi_call_bb->count = 0;
-+ bi_call_bb->frequency = 0;
-+ while (!edges.is_empty ())
-+ {
-+ edge_pair e = edges.pop ();
-+ edge call_edge = e.first;
-+ edge nocall_edge = e.second;
-+ basic_block src_bb = call_edge->src;
-+ gcc_assert (src_bb == nocall_edge->src);
+- /* We may have to generate early debug late for LTO in case debug
++ /* We may have to generate full debug late for LTO in case debug
+ was not enabled at compile-time or the target doesn't support
+ the LTO early debug scheme. */
+ if (! die && in_lto_p)
++ dwarf2out_decl (decl);
++ else if (die)
+ {
+- dwarf2out_decl (decl);
+- die = lookup_decl_die (decl);
+- }
+-
+- if (die)
+- {
+ /* We get called via the symtab code invoking late_global_decl
+ for symbols that are optimized out.
+
+Index: gcc/match.pd
+===================================================================
+--- a/src/gcc/match.pd (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/match.pd (.../branches/gcc-9-branch)
+@@ -1519,8 +1519,6 @@
+ tree etype = range_check_type (TREE_TYPE (@0));
+ if (etype)
+ {
+- if (! TYPE_UNSIGNED (etype))
+- etype = unsigned_type_for (etype);
+ hi = fold_convert (etype, hi);
+ lo = fold_convert (etype, lo);
+ hi = const_binop (MINUS_EXPR, etype, hi, lo);
+@@ -3381,8 +3379,7 @@
+ (cmp { tem; } @1)))))
+
+ /* Fold comparisons against built-in math functions. */
+- (if (flag_unsafe_math_optimizations
+- && ! flag_errno_math)
++ (if (flag_unsafe_math_optimizations && ! flag_errno_math)
+ (for sq (SQRT)
+ (simplify
+ (cmp (sq @0) REAL_CST@1)
+@@ -3417,56 +3414,108 @@
+ if x is negative or NaN. Due to -funsafe-math-optimizations,
+ the results for other x follow from natural arithmetic. */
+ (cmp @0 @1)))
+- (if (cmp == GT_EXPR || cmp == GE_EXPR)
++ (if ((cmp == LT_EXPR
++ || cmp == LE_EXPR
++ || cmp == GT_EXPR
++ || cmp == GE_EXPR)
++ && !REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
++ /* Give up for -frounding-math. */
++ && !HONOR_SIGN_DEPENDENT_ROUNDING (TREE_TYPE (@0)))
+ (with
+ {
+- REAL_VALUE_TYPE c2;
++ REAL_VALUE_TYPE c2;
++ enum tree_code ncmp = cmp;
++ const real_format *fmt
++ = REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (@0)));
+ real_arithmetic (&c2, MULT_EXPR,
+ &TREE_REAL_CST (@1), &TREE_REAL_CST (@1));
+- real_convert (&c2, TYPE_MODE (TREE_TYPE (@0)), &c2);
++ real_convert (&c2, fmt, &c2);
++ /* See PR91734: if c2 is inexact and sqrt(c2) < c (or sqrt(c2) >= c),
++ then change LT_EXPR into LE_EXPR or GE_EXPR into GT_EXPR. */
++ if (!REAL_VALUE_ISINF (c2))
++ {
++ tree c3 = fold_const_call (CFN_SQRT, TREE_TYPE (@0),
++ build_real (TREE_TYPE (@0), c2));
++ if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST)
++ ncmp = ERROR_MARK;
++ else if ((cmp == LT_EXPR || cmp == GE_EXPR)
++ && real_less (&TREE_REAL_CST (c3), &TREE_REAL_CST (@1)))
++ ncmp = cmp == LT_EXPR ? LE_EXPR : GT_EXPR;
++ else if ((cmp == LE_EXPR || cmp == GT_EXPR)
++ && real_less (&TREE_REAL_CST (@1), &TREE_REAL_CST (c3)))
++ ncmp = cmp == LE_EXPR ? LT_EXPR : GE_EXPR;
++ else
++ {
++ /* With rounding to even, sqrt of up to 3 different values
++ gives the same normal result, so in some cases c2 needs
++ to be adjusted. */
++ REAL_VALUE_TYPE c2alt, tow;
++ if (cmp == LT_EXPR || cmp == GE_EXPR)
++ tow = dconst0;
++ else
++ real_inf (&tow);
++ real_nextafter (&c2alt, fmt, &c2, &tow);
++ real_convert (&c2alt, fmt, &c2alt);
++ if (REAL_VALUE_ISINF (c2alt))
++ ncmp = ERROR_MARK;
++ else
++ {
++ c3 = fold_const_call (CFN_SQRT, TREE_TYPE (@0),
++ build_real (TREE_TYPE (@0), c2alt));
++ if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST)
++ ncmp = ERROR_MARK;
++ else if (real_equal (&TREE_REAL_CST (c3),
++ &TREE_REAL_CST (@1)))
++ c2 = c2alt;
++ }
++ }
++ }
+ }
+- (if (REAL_VALUE_ISINF (c2))
+- /* sqrt(x) > y is x == +Inf, when y is very large. */
+- (if (HONOR_INFINITIES (@0))
+- (eq @0 { build_real (TREE_TYPE (@0), c2); })
+- { constant_boolean_node (false, type); })
+- /* sqrt(x) > c is the same as x > c*c. */
+- (cmp @0 { build_real (TREE_TYPE (@0), c2); }))))
+- (if (cmp == LT_EXPR || cmp == LE_EXPR)
+- (with
+- {
+- REAL_VALUE_TYPE c2;
+- real_arithmetic (&c2, MULT_EXPR,
+- &TREE_REAL_CST (@1), &TREE_REAL_CST (@1));
+- real_convert (&c2, TYPE_MODE (TREE_TYPE (@0)), &c2);
+- }
+- (if (REAL_VALUE_ISINF (c2))
+- (switch
+- /* sqrt(x) < y is always true, when y is a very large
+- value and we don't care about NaNs or Infinities. */
+- (if (! HONOR_NANS (@0) && ! HONOR_INFINITIES (@0))
+- { constant_boolean_node (true, type); })
+- /* sqrt(x) < y is x != +Inf when y is very large and we
+- don't care about NaNs. */
+- (if (! HONOR_NANS (@0))
+- (ne @0 { build_real (TREE_TYPE (@0), c2); }))
+- /* sqrt(x) < y is x >= 0 when y is very large and we
+- don't care about Infinities. */
+- (if (! HONOR_INFINITIES (@0))
+- (ge @0 { build_real (TREE_TYPE (@0), dconst0); }))
+- /* sqrt(x) < y is x >= 0 && x != +Inf, when y is large. */
+- (if (GENERIC)
+- (truth_andif
+- (ge @0 { build_real (TREE_TYPE (@0), dconst0); })
+- (ne @0 { build_real (TREE_TYPE (@0), c2); }))))
+- /* sqrt(x) < c is the same as x < c*c, if we ignore NaNs. */
+- (if (! HONOR_NANS (@0))
+- (cmp @0 { build_real (TREE_TYPE (@0), c2); })
+- /* sqrt(x) < c is the same as x >= 0 && x < c*c. */
+- (if (GENERIC)
+- (truth_andif
+- (ge @0 { build_real (TREE_TYPE (@0), dconst0); })
+- (cmp @0 { build_real (TREE_TYPE (@0), c2); })))))))))
++ (if (cmp == GT_EXPR || cmp == GE_EXPR)
++ (if (REAL_VALUE_ISINF (c2))
++ /* sqrt(x) > y is x == +Inf, when y is very large. */
++ (if (HONOR_INFINITIES (@0))
++ (eq @0 { build_real (TREE_TYPE (@0), c2); })
++ { constant_boolean_node (false, type); })
++ /* sqrt(x) > c is the same as x > c*c. */
++ (if (ncmp != ERROR_MARK)
++ (if (ncmp == GE_EXPR)
++ (ge @0 { build_real (TREE_TYPE (@0), c2); })
++ (gt @0 { build_real (TREE_TYPE (@0), c2); }))))
++ /* else if (cmp == LT_EXPR || cmp == LE_EXPR) */
++ (if (REAL_VALUE_ISINF (c2))
++ (switch
++ /* sqrt(x) < y is always true, when y is a very large
++ value and we don't care about NaNs or Infinities. */
++ (if (! HONOR_NANS (@0) && ! HONOR_INFINITIES (@0))
++ { constant_boolean_node (true, type); })
++ /* sqrt(x) < y is x != +Inf when y is very large and we
++ don't care about NaNs. */
++ (if (! HONOR_NANS (@0))
++ (ne @0 { build_real (TREE_TYPE (@0), c2); }))
++ /* sqrt(x) < y is x >= 0 when y is very large and we
++ don't care about Infinities. */
++ (if (! HONOR_INFINITIES (@0))
++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); }))
++ /* sqrt(x) < y is x >= 0 && x != +Inf, when y is large. */
++ (if (GENERIC)
++ (truth_andif
++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); })
++ (ne @0 { build_real (TREE_TYPE (@0), c2); }))))
++ /* sqrt(x) < c is the same as x < c*c, if we ignore NaNs. */
++ (if (ncmp != ERROR_MARK && ! HONOR_NANS (@0))
++ (if (ncmp == LT_EXPR)
++ (lt @0 { build_real (TREE_TYPE (@0), c2); })
++ (le @0 { build_real (TREE_TYPE (@0), c2); }))
++ /* sqrt(x) < c is the same as x >= 0 && x < c*c. */
++ (if (ncmp != ERROR_MARK && GENERIC)
++ (if (ncmp == LT_EXPR)
++ (truth_andif
++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); })
++ (lt @0 { build_real (TREE_TYPE (@0), c2); }))
++ (truth_andif
++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); })
++ (le @0 { build_real (TREE_TYPE (@0), c2); })))))))))))
+ /* Transform sqrt(x) cmp sqrt(y) -> x cmp y. */
+ (simplify
+ (cmp (sq @0) (sq @1))
+Index: gcc/go/gofrontend/expressions.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.cc (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/go/gofrontend/expressions.cc (.../branches/gcc-9-branch)
+@@ -2036,7 +2036,11 @@
+
+ int
+ do_inlining_cost() const
+- { return 1; }
++ {
++ if (this->type_ != NULL && this->type_->named_type() != NULL)
++ return 0x100000;
++ return 1;
++ }
+
+ void
+ do_export(Export_function_body*) const;
+@@ -2451,7 +2455,11 @@
+
+ int
+ do_inlining_cost() const
+- { return 1; }
++ {
++ if (this->type_ != NULL && this->type_->named_type() != NULL)
++ return 0x100000;
++ return 1;
++ }
+
+ void
+ do_export(Export_function_body*) const;
+@@ -2664,7 +2672,11 @@
+
+ int
+ do_inlining_cost() const
+- { return 2; }
++ {
++ if (this->type_ != NULL && this->type_->named_type() != NULL)
++ return 0x100000;
++ return 2;
++ }
+
+ void
+ do_export(Export_function_body*) const;
+Index: gcc/ada/sem_spark.adb
+===================================================================
+--- a/src/gcc/ada/sem_spark.adb (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/sem_spark.adb (.../branches/gcc-9-branch)
+@@ -804,7 +804,7 @@
+
+ if Present (SPARK_Pragma (Defining_Entity (Body_N))) then
+ if Get_SPARK_Mode_From_Annotation
+- (SPARK_Pragma (Defining_Entity (Body_N, False))) /= Opt.On
++ (SPARK_Pragma (Defining_Entity (Body_N))) /= Opt.On
+ then
+ return;
+ end if;
+@@ -1914,7 +1914,7 @@
+ CorSp : Node_Id;
+
+ begin
+- if Present (SPARK_Pragma (Defining_Entity (Pack, False))) then
++ if Present (SPARK_Pragma (Defining_Entity (Pack))) then
+ if Get_SPARK_Mode_From_Annotation
+ (SPARK_Pragma (Defining_Entity (Pack))) /= Opt.On
+ then
+Index: gcc/ada/ChangeLog
+===================================================================
+--- a/src/gcc/ada/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,36 @@
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
+
-+ call_edge->probability = REG_BR_PROB_BASE * ERR_PROB;
-+ call_edge->count = apply_probability (src_bb->count,
-+ call_edge->probability);
-+ nocall_edge->probability = inverse_probability (call_edge->probability);
-+ nocall_edge->count = src_bb->count - call_edge->count;
++ Backported from mainline
++ 2019-10-27 Jakub Jelinek <jakub@redhat.com>
+
-+ unsigned int call_frequency = apply_probability (src_bb->frequency,
-+ call_edge->probability);
++ * locales.c (iso_3166): Add missing comma after "United-States".
+
-+ bi_call_bb->count += call_edge->count;
-+ bi_call_bb->frequency += call_frequency;
++2019-10-12 Eric Botcazou <ebotcazou@adacore.com>
+
-+ if (nocall_edge->dest != join_tgt_bb)
-+ {
-+ nocall_edge->dest->count = nocall_edge->count;
-+ nocall_edge->dest->frequency = src_bb->frequency - call_frequency;
-+ }
- }
++ PR ada/91995
++ * sem_ch8.adb (Chain_Use_Clause): Remove second argument in calls
++ to Defining_Entity.
++ * sem_elab.adb (Find_Unit_Entity): Likewise. Deal with N_Subunit
++ here in lieu of in Defining_Entity.
++ * sem_spark.adb (Check_Callable_Body): Likewise.
++ (Check_Package_Body): Likewise.
++ * sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters.
++ * sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters,
++ and adjust accordingly. Deal with N_Compilation_Unit.
++
++2019-10-11 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Really test the
++ sign of the value when deciding to build a NEGATE_EXPR.
++ <PLUS_EXPR>: Remove redundant line.
++ <BIT_AND_EXPR>: Do the negation here.
++
++2019-09-23 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep
++ on the underlying type of the node.
++ (Call_to_gnu): Likewise with the type of the prefix.
++
+ 2019-08-12 Release Manager
- if (dom_info_available_p (CDI_DOMINATORS))
-Index: gcc/ipa-pure-const.c
+ * GCC 9.2.0 released.
+Index: gcc/ada/gcc-interface/decl.c
===================================================================
---- a/src/gcc/ipa-pure-const.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ipa-pure-const.c (.../branches/gcc-6-branch)
-@@ -218,11 +218,17 @@
- static void
- warn_function_noreturn (tree decl)
- {
-+ tree original_decl = decl;
-+
-+ cgraph_node *node = cgraph_node::get (decl);
-+ if (node->instrumentation_clone)
-+ decl = node->instrumented_version->decl;
-+
- static hash_set<tree> *warned_about;
- if (!lang_hooks.missing_noreturn_ok_p (decl)
- && targetm.warn_func_return (decl))
- warned_about
-- = suggest_attribute (OPT_Wsuggest_attribute_noreturn, decl,
-+ = suggest_attribute (OPT_Wsuggest_attribute_noreturn, original_decl,
- true, warned_about, "noreturn");
- }
+--- a/src/gcc/ada/gcc-interface/decl.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/gcc-interface/decl.c (.../branches/gcc-9-branch)
+@@ -8255,9 +8255,8 @@
+ {
+ case INTEGER_CST:
+ /* For negative values, build NEGATE_EXPR of the opposite. Such values
+- can appear for discriminants in expressions for variants. Note that,
+- sizetype being unsigned, we don't directly use tree_int_cst_sgn. */
+- if (tree_int_cst_sign_bit (gnu_size))
++ can appear for discriminants in expressions for variants. */
++ if (tree_int_cst_sgn (gnu_size) < 0)
+ {
+ tree t = wide_int_to_tree (sizetype, -wi::to_wide (gnu_size));
+ tcode = Negate_Expr;
+@@ -8335,9 +8334,8 @@
+ && tree_int_cst_sign_bit (TREE_OPERAND (gnu_size, 1)))
+ {
+ tcode = Minus_Expr;
+- ops[0] = annotate_value (TREE_OPERAND (gnu_size, 0));
+- wide_int op1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1));
+- ops[1] = annotate_value (wide_int_to_tree (sizetype, op1));
++ wide_int wop1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1));
++ ops[1] = annotate_value (wide_int_to_tree (sizetype, wop1));
+ break;
+ }
-@@ -1160,7 +1166,8 @@
- cdtor_p (cgraph_node *n, void *)
- {
- if (DECL_STATIC_CONSTRUCTOR (n->decl) || DECL_STATIC_DESTRUCTOR (n->decl))
-- return !TREE_READONLY (n->decl) && !DECL_PURE_P (n->decl);
-+ return ((!TREE_READONLY (n->decl) && !DECL_PURE_P (n->decl))
-+ || DECL_LOOPING_CONST_OR_PURE_P (n->decl));
- return false;
- }
+@@ -8378,9 +8376,9 @@
+ Such values can appear in expressions with aligning patterns. */
+ if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST)
+ {
+- wide_int op1 = wi::sext (wi::to_wide (TREE_OPERAND (gnu_size, 1)),
+- TYPE_PRECISION (sizetype));
+- ops[1] = annotate_value (wide_int_to_tree (sizetype, op1));
++ wide_int wop1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1));
++ tree op1 = wide_int_to_tree (sizetype, wop1);
++ ops[1] = annotate_value (build1 (NEGATE_EXPR, sizetype, op1));
+ }
+ break;
-Index: gcc/ira-int.h
+Index: gcc/ada/gcc-interface/trans.c
===================================================================
---- a/src/gcc/ira-int.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ira-int.h (.../branches/gcc-6-branch)
-@@ -782,7 +782,7 @@
+--- a/src/gcc/ada/gcc-interface/trans.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/gcc-interface/trans.c (.../branches/gcc-9-branch)
+@@ -2248,32 +2248,29 @@
+ /* For other address attributes applied to a nested function,
+ find an inner ADDR_EXPR and annotate it so that we can issue
+ a useful warning with -Wtrampolines. */
+- else if (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (gnu_prefix)))
++ else if (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (gnu_prefix))
++ && (gnu_expr = remove_conversions (gnu_result, false))
++ && TREE_CODE (gnu_expr) == ADDR_EXPR
++ && decl_function_context (TREE_OPERAND (gnu_expr, 0)))
+ {
+- gnu_expr = remove_conversions (gnu_result, false);
++ set_expr_location_from_node (gnu_expr, gnat_node);
- /* Initialized once. It is a maximal possible size of the allocated
- struct costs. */
-- int x_max_struct_costs_size;
-+ size_t x_max_struct_costs_size;
+- if (TREE_CODE (gnu_expr) == ADDR_EXPR
+- && decl_function_context (TREE_OPERAND (gnu_expr, 0)))
+- {
+- set_expr_location_from_node (gnu_expr, gnat_node);
++ /* Also check the inlining status. */
++ check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0));
+
+- /* Also check the inlining status. */
+- check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0));
++ /* Moreover, for 'Access or 'Unrestricted_Access with non-
++ foreign-compatible representation, mark the ADDR_EXPR so
++ that we can build a descriptor instead of a trampoline. */
++ if ((attribute == Attr_Access
++ || attribute == Attr_Unrestricted_Access)
++ && targetm.calls.custom_function_descriptors > 0
++ && Can_Use_Internal_Rep (Underlying_Type (Etype (gnat_node))))
++ FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1;
+
+- /* Moreover, for 'Access or 'Unrestricted_Access with non-
+- foreign-compatible representation, mark the ADDR_EXPR so
+- that we can build a descriptor instead of a trampoline. */
+- if ((attribute == Attr_Access
+- || attribute == Attr_Unrestricted_Access)
+- && targetm.calls.custom_function_descriptors > 0
+- && Can_Use_Internal_Rep (Etype (gnat_node)))
+- FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1;
+-
+- /* Otherwise, we need to check that we are not violating the
+- No_Implicit_Dynamic_Code restriction. */
+- else if (targetm.calls.custom_function_descriptors != 0)
+- Check_Implicit_Dynamic_Code_Allowed (gnat_node);
+- }
++ /* Otherwise, we need to check that we are not violating the
++ No_Implicit_Dynamic_Code restriction. */
++ else if (targetm.calls.custom_function_descriptors != 0)
++ Check_Implicit_Dynamic_Code_Allowed (gnat_node);
+ }
+ break;
- /* Allocated and initialized once, and used to initialize cost values
- for each insn. */
-Index: gcc/sel-sched.c
-===================================================================
---- a/src/gcc/sel-sched.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/sel-sched.c (.../branches/gcc-6-branch)
-@@ -2528,6 +2528,7 @@
+@@ -5103,7 +5100,8 @@
+ /* If the access type doesn't require foreign-compatible representation,
+ be prepared for descriptors. */
+ if (targetm.calls.custom_function_descriptors > 0
+- && Can_Use_Internal_Rep (Etype (Prefix (Name (gnat_node)))))
++ && Can_Use_Internal_Rep
++ (Underlying_Type (Etype (Prefix (Name (gnat_node))))))
+ by_descriptor = true;
}
+ else if (Nkind (Name (gnat_node)) == N_Attribute_Reference)
+Index: gcc/ada/sem_util.adb
+===================================================================
+--- a/src/gcc/ada/sem_util.adb (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/sem_util.adb (.../branches/gcc-9-branch)
+@@ -5827,11 +5827,7 @@
+ -- Defining_Entity --
+ ---------------------
+
+- function Defining_Entity
+- (N : Node_Id;
+- Empty_On_Errors : Boolean := False;
+- Concurrent_Subunit : Boolean := False) return Entity_Id
+- is
++ function Defining_Entity (N : Node_Id) return Entity_Id is
+ begin
+ case Nkind (N) is
+ when N_Abstract_Subprogram_Declaration
+@@ -5882,25 +5878,12 @@
+ =>
+ return Defining_Identifier (N);
+
++ when N_Compilation_Unit =>
++ return Defining_Entity (Unit (N));
++
+ when N_Subunit =>
+- declare
+- Bod : constant Node_Id := Proper_Body (N);
+- Orig_Bod : constant Node_Id := Original_Node (Bod);
++ return Defining_Entity (Proper_Body (N));
+
+- begin
+- -- Retrieve the entity of the original protected or task body
+- -- if requested by the caller.
+-
+- if Concurrent_Subunit
+- and then Nkind (Bod) = N_Null_Statement
+- and then Nkind_In (Orig_Bod, N_Protected_Body, N_Task_Body)
+- then
+- return Defining_Entity (Orig_Bod);
+- else
+- return Defining_Entity (Bod);
+- end if;
+- end;
+-
+ when N_Function_Instantiation
+ | N_Function_Specification
+ | N_Generic_Function_Renaming_Declaration
+@@ -5925,14 +5908,10 @@
+ -- can continue semantic analysis.
+
+ elsif Nam = Error then
+- if Empty_On_Errors then
+- return Empty;
+- else
+- Err := Make_Temporary (Sloc (N), 'T');
+- Set_Defining_Unit_Name (N, Err);
++ Err := Make_Temporary (Sloc (N), 'T');
++ Set_Defining_Unit_Name (N, Err);
+
+- return Err;
+- end if;
++ return Err;
+
+ -- If not an entity, get defining identifier
+
+@@ -5947,11 +5926,7 @@
+ return Entity (Identifier (N));
+
+ when others =>
+- if Empty_On_Errors then
+- return Empty;
+- else
+- raise Program_Error;
+- end if;
++ raise Program_Error;
+ end case;
+ end Defining_Entity;
+
+Index: gcc/ada/sem_util.ads
+===================================================================
+--- a/src/gcc/ada/sem_util.ads (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/sem_util.ads (.../branches/gcc-9-branch)
+@@ -543,10 +543,7 @@
+ -- in the case of a descendant of a generic formal type (returns Int'Last
+ -- instead of 0).
+
+- function Defining_Entity
+- (N : Node_Id;
+- Empty_On_Errors : Boolean := False;
+- Concurrent_Subunit : Boolean := False) return Entity_Id;
++ function Defining_Entity (N : Node_Id) return Entity_Id;
+ -- Given a declaration N, returns the associated defining entity. If the
+ -- declaration has a specification, the entity is obtained from the
+ -- specification. If the declaration has a defining unit name, then the
+@@ -557,22 +554,6 @@
+ -- local entities declared during loop expansion. These entities need
+ -- debugging information, generated through Qualify_Entity_Names, and
+ -- the loop declaration must be placed in the table Name_Qualify_Units.
+- --
+- -- Set flag Empty_On_Error to change the behavior of this routine as
+- -- follows:
+- --
+- -- * True - A declaration that lacks a defining entity returns Empty.
+- -- A node that does not allow for a defining entity returns Empty.
+- --
+- -- * False - A declaration that lacks a defining entity is given a new
+- -- internally generated entity which is subsequently returned. A node
+- -- that does not allow for a defining entity raises Program_Error.
+- --
+- -- The former semantics is appropriate for the back end; the latter
+- -- semantics is appropriate for the front end.
+- --
+- -- Set flag Concurrent_Subunit to handle rewritings of concurrent bodies
+- -- which act as subunits. Such bodies are generally rewritten as null.
+
+ function Denotes_Discriminant
+ (N : Node_Id;
+Index: gcc/ada/locales.c
+===================================================================
+--- a/src/gcc/ada/locales.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/locales.c (.../branches/gcc-9-branch)
+@@ -529,7 +529,7 @@
+ "UM", "United States Minor Outlying Islands",
+ "US", "United States",
+ "US", "United States of America",
+- "US", "United-States"
++ "US", "United-States",
+ "UY", "Uruguay",
+ "UZ", "Uzbekistan",
+
+Index: gcc/ada/sem_ch8.adb
+===================================================================
+--- a/src/gcc/ada/sem_ch8.adb (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/sem_ch8.adb (.../branches/gcc-9-branch)
+@@ -4256,9 +4256,7 @@
+
+ -- Common case for compilation unit
+
+- elsif Defining_Entity (N => Parent (N),
+- Empty_On_Errors => True) = Current_Scope
+- then
++ elsif Defining_Entity (Parent (N)) = Current_Scope then
+ null;
- if (DEBUG_INSN_P (EXPR_INSN_RTX (expr))
-+ && BLOCK_FOR_INSN (EXPR_INSN_RTX (expr))
- && (sel_bb_head (BLOCK_FOR_INSN (EXPR_INSN_RTX (expr)))
- == EXPR_INSN_RTX (expr)))
- /* Don't use cached information for debug insns that are heads of
-Index: gcc/dwarf2out.c
-===================================================================
---- a/src/gcc/dwarf2out.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/dwarf2out.c (.../branches/gcc-6-branch)
-@@ -16615,10 +16615,6 @@
- field_byte_offset (const_tree decl, struct vlr_context *ctx,
- HOST_WIDE_INT *cst_offset)
- {
-- offset_int object_offset_in_bits;
-- offset_int object_offset_in_bytes;
-- offset_int bitpos_int;
-- bool is_byte_offset_cst, is_bit_offset_cst;
- tree tree_result;
- dw_loc_list_ref loc_result;
-
-@@ -16629,12 +16625,9 @@
- else
- gcc_assert (TREE_CODE (decl) == FIELD_DECL);
+ else
+@@ -4265,7 +4263,7 @@
+ -- If declaration appears in some other scope, it must be in some
+ -- parent unit when compiling a child.
+
+- Pack := Defining_Entity (Parent (N), Empty_On_Errors => True);
++ Pack := Defining_Entity (Parent (N));
+
+ if not In_Open_Scopes (Pack) then
+ null;
+Index: gcc/ada/sem_elab.adb
+===================================================================
+--- a/src/gcc/ada/sem_elab.adb (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ada/sem_elab.adb (.../branches/gcc-9-branch)
+@@ -5544,13 +5544,23 @@
+ N_Procedure_Instantiation)
+ and then Nkind (Context) = N_Compilation_Unit
+ then
+- return
+- Related_Instance (Defining_Entity (N, Concurrent_Subunit => True));
++ return Related_Instance (Defining_Entity (N));
+
++ -- The unit denotes a concurrent body acting as a subunit. Such bodies
++ -- are generally rewritten into null statements. The proper entity is
++ -- that of the "original node".
++
++ elsif Nkind (N) = N_Subunit
++ and then Nkind (Proper_Body (N)) = N_Null_Statement
++ and then Nkind_In (Original_Node (Proper_Body (N)), N_Protected_Body,
++ N_Task_Body)
++ then
++ return Defining_Entity (Original_Node (Proper_Body (N)));
++
+ -- Otherwise the proper entity is the defining entity
-- is_bit_offset_cst = TREE_CODE (DECL_FIELD_BIT_OFFSET (decl)) != INTEGER_CST;
-- is_byte_offset_cst = TREE_CODE (DECL_FIELD_OFFSET (decl)) != INTEGER_CST;
--
- /* We cannot handle variable bit offsets at the moment, so abort if it's the
- case. */
-- if (is_bit_offset_cst)
-+ if (TREE_CODE (DECL_FIELD_BIT_OFFSET (decl)) != INTEGER_CST)
- return NULL;
+ else
+- return Defining_Entity (N, Concurrent_Subunit => True);
++ return Defining_Entity (N);
+ end if;
+ end Find_Unit_Entity;
+
+Index: gcc/common/config/s390/s390-common.c
+===================================================================
+--- a/src/gcc/common/config/s390/s390-common.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/common/config/s390/s390-common.c (.../branches/gcc-9-branch)
+@@ -47,9 +47,9 @@
+ /* z14 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
+ | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+ | PF_Z13 | PF_VX | PF_VXE | PF_Z14,
+- /* arch13 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
++ /* z15 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
+ | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+- | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_ARCH13
++ | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_Z15
+ };
- #ifdef PCC_BITFIELD_TYPE_MATTERS
-@@ -16641,8 +16634,12 @@
- /* We used to handle only constant offsets in all cases. Now, we handle
- properly dynamic byte offsets only when PCC bitfield type doesn't
- matter. */
-- if (PCC_BITFIELD_TYPE_MATTERS && is_byte_offset_cst && is_bit_offset_cst)
-+ if (PCC_BITFIELD_TYPE_MATTERS
-+ && TREE_CODE (DECL_FIELD_OFFSET (decl)) == INTEGER_CST)
- {
-+ offset_int object_offset_in_bits;
-+ offset_int object_offset_in_bytes;
-+ offset_int bitpos_int;
- tree type;
- tree field_size_tree;
- offset_int deepest_bitpos;
-@@ -16737,13 +16734,23 @@
- object_offset_in_bits
- = round_up_to_align (object_offset_in_bits, decl_align_in_bits);
+ /* Change optimizations to be performed, depending on the
+Index: gcc/dse.c
+===================================================================
+--- a/src/gcc/dse.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/dse.c (.../branches/gcc-9-branch)
+@@ -2535,10 +2535,13 @@
+ clear_rhs_from_active_local_stores ();
+ }
}
-+
-+ object_offset_in_bytes
-+ = wi::lrshift (object_offset_in_bits, LOG2_BITS_PER_UNIT);
-+ if (ctx->variant_part_offset == NULL_TREE)
+- else if (SIBLING_CALL_P (insn) && reload_completed)
++ else if (SIBLING_CALL_P (insn)
++ && (reload_completed || HARD_FRAME_POINTER_IS_ARG_POINTER))
+ /* Arguments for a sibling call that are pushed to memory are passed
+ using the incoming argument pointer of the current function. After
+- reload that might be (and likely is) frame pointer based. */
++ reload that might be (and likely is) frame pointer based. And, if
++ it is a frame pointer on the target, even before reload we need to
++ kill frame pointer based stores. */
+ add_wild_read (bb_info);
+ else
+ /* Every other call, including pure functions, may read any memory
+Index: gcc/lra-remat.c
+===================================================================
+--- a/src/gcc/lra-remat.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lra-remat.c (.../branches/gcc-9-branch)
+@@ -1020,7 +1020,6 @@
+ static void
+ update_scratch_ops (rtx_insn *remat_insn)
+ {
+- int hard_regno;
+ lra_insn_recog_data_t id = lra_get_insn_recog_data (remat_insn);
+ struct lra_static_insn_data *static_id = id->insn_static_data;
+ for (int i = 0; i < static_id->n_operands; i++)
+@@ -1031,17 +1030,9 @@
+ int regno = REGNO (*loc);
+ if (! lra_former_scratch_p (regno))
+ continue;
+- hard_regno = reg_renumber[regno];
+ *loc = lra_create_new_reg (GET_MODE (*loc), *loc,
+ lra_get_allocno_class (regno),
+ "scratch pseudo copy");
+- if (hard_regno >= 0)
+- {
+- reg_renumber[REGNO (*loc)] = hard_regno;
+- if (lra_dump_file)
+- fprintf (lra_dump_file, " Assigning the same %d to r%d\n",
+- REGNO (*loc), hard_regno);
+- }
+ lra_register_new_scratch_op (remat_insn, i, id->icode);
+ }
+
+Index: gcc/fortran/intrinsic.c
+===================================================================
+--- a/src/gcc/fortran/intrinsic.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/intrinsic.c (.../branches/gcc-9-branch)
+@@ -4180,6 +4180,50 @@
+ if (f == NULL && a == NULL) /* No arguments */
+ return true;
+
++ /* ALLOCATED has two mutually exclusive keywords, but only one
++ can be present at time and neither is optional. */
++ if (strcmp (name, "allocated") == 0)
++ {
++ if (!a)
+ {
-+ *cst_offset = object_offset_in_bytes.to_shwi ();
-+ return NULL;
++ gfc_error ("ALLOCATED intrinsic at %L requires an array or scalar "
++ "allocatable entity", where);
++ return false;
+ }
-+ tree_result = wide_int_to_tree (sizetype, object_offset_in_bytes);
- }
-+ else
- #endif /* PCC_BITFIELD_TYPE_MATTERS */
-+ tree_result = byte_position (decl);
-
-- tree_result = byte_position (decl);
- if (ctx->variant_part_offset != NULL_TREE)
-- tree_result = fold (build2 (PLUS_EXPR, TREE_TYPE (tree_result),
-- ctx->variant_part_offset, tree_result));
-+ tree_result = fold_build2 (PLUS_EXPR, TREE_TYPE (tree_result),
-+ ctx->variant_part_offset, tree_result);
-
- /* If the byte offset is a constant, it's simplier to handle a native
- constant rather than a DWARF expression. */
-@@ -22221,14 +22228,12 @@
-
- if (!lower_cst_included)
- lower_cst
-- = fold (build2 (PLUS_EXPR, TREE_TYPE (lower_cst),
-- lower_cst,
-- build_int_cst (TREE_TYPE (lower_cst), 1)));
-+ = fold_build2 (PLUS_EXPR, TREE_TYPE (lower_cst), lower_cst,
-+ build_int_cst (TREE_TYPE (lower_cst), 1));
- if (!upper_cst_included)
- upper_cst
-- = fold (build2 (MINUS_EXPR, TREE_TYPE (upper_cst),
-- upper_cst,
-- build_int_cst (TREE_TYPE (upper_cst), 1)));
-+ = fold_build2 (MINUS_EXPR, TREE_TYPE (upper_cst), upper_cst,
-+ build_int_cst (TREE_TYPE (upper_cst), 1));
-
- if (!get_discr_value (lower_cst,
- &new_node->dw_discr_lower_bound)
-@@ -22397,8 +22402,8 @@
- we recurse. */
-
- vlr_sub_ctx.variant_part_offset
-- = fold (build2 (PLUS_EXPR, TREE_TYPE (variant_part_offset),
-- variant_part_offset, byte_position (member)));
-+ = fold_build2 (PLUS_EXPR, TREE_TYPE (variant_part_offset),
-+ variant_part_offset, byte_position (member));
- gen_variant_part (member, &vlr_sub_ctx, variant_die);
- }
- else
-@@ -23151,8 +23156,18 @@
- for (decl = BLOCK_VARS (stmt); decl != NULL; decl = DECL_CHAIN (decl))
- process_scope_var (stmt, decl, NULL_TREE, context_die);
- for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
-- process_scope_var (stmt, NULL, BLOCK_NONLOCALIZED_VAR (stmt, i),
-- context_die);
++
++ if (a->name)
+ {
-+ decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
-+ if (decl == current_function_decl)
-+ /* Ignore declarations of the current function, while they
-+ are declarations, gen_subprogram_die would treat them
-+ as definitions again, because they are equal to
-+ current_function_decl and endlessly recurse. */;
-+ else if (TREE_CODE (decl) == FUNCTION_DECL)
-+ process_scope_var (stmt, decl, NULL_TREE, context_die);
++ if (strcmp (a->name, "scalar") == 0)
++ {
++ if (a->next)
++ goto whoops;
++ if (a->expr->rank != 0)
++ {
++ gfc_error ("Scalar entity required at %L", &a->expr->where);
++ return false;
++ }
++ return true;
++ }
++ else if (strcmp (a->name, "array") == 0)
++ {
++ if (a->next)
++ goto whoops;
++ if (a->expr->rank == 0)
++ {
++ gfc_error ("Array entity required at %L", &a->expr->where);
++ return false;
++ }
++ return true;
++ }
+ else
-+ process_scope_var (stmt, NULL_TREE, decl, context_die);
++ {
++ gfc_error ("Invalid keyword %qs in %qs intrinsic function at %L",
++ a->name, name, &a->expr->where);
++ return false;
++ }
+ }
++ }
++
+ for (;;)
+ { /* Put the nonkeyword arguments in a 1:1 correspondence */
+ if (f == NULL)
+@@ -4199,6 +4243,7 @@
+ if (a == NULL)
+ goto do_sort;
+
++whoops:
+ gfc_error ("Too many arguments in call to %qs at %L", name, where);
+ return false;
+
+Index: gcc/fortran/trans-expr.c
+===================================================================
+--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-9-branch)
+@@ -4989,9 +4989,10 @@
+ tree gfc_desc_ptr;
+ tree type;
+ tree cond;
++ tree desc_attr;
+ int attribute;
++ int cfi_attribute;
+ symbol_attribute attr = gfc_expr_attr (e);
+- stmtblock_t block;
+
+ /* If this is a full array or a scalar, the allocatable and pointer
+ attributes can be passed. Otherwise it is 'CFI_attribute_other'*/
+@@ -4998,12 +4999,20 @@
+ attribute = 2;
+ if (!e->rank || gfc_get_full_arrayspec_from_expr (e))
+ {
+- if (fsym->attr.pointer)
++ if (attr.pointer)
+ attribute = 0;
+- else if (fsym->attr.allocatable)
++ else if (attr.allocatable)
+ attribute = 1;
}
- /* Even if we're at -g1, we need to process the subblocks in order to get
-@@ -23752,7 +23767,16 @@
++ /* If the formal argument is assumed shape and neither a pointer nor
++ allocatable, it is unconditionally CFI_attribute_other. */
++ if (fsym->as->type == AS_ASSUMED_SHAPE
++ && !fsym->attr.pointer && !fsym->attr.allocatable)
++ cfi_attribute = 2;
++ else
++ cfi_attribute = attribute;
++
+ if (e->rank != 0)
{
- dw_die_ref die = lookup_decl_die (decl);
- if (die)
-- add_location_or_const_value_attribute (die, decl, false);
-+ {
-+ /* We get called via the symtab code invoking late_global_decl
-+ for symbols that are optimized out. Do not add locations
-+ for those. */
-+ varpool_node *node = varpool_node::get (decl);
-+ if (! node || ! node->definition)
-+ tree_add_const_value_attribute_for_decl (die, decl);
-+ else
-+ add_location_or_const_value_attribute (die, decl, false);
-+ }
+ parmse->force_no_tmp = 1;
+@@ -5018,6 +5027,10 @@
+ parmse->expr = build_fold_indirect_ref_loc (input_location,
+ parmse->expr);
+
++ bool is_artificial = (INDIRECT_REF_P (parmse->expr)
++ ? DECL_ARTIFICIAL (TREE_OPERAND (parmse->expr, 0))
++ : DECL_ARTIFICIAL (parmse->expr));
++
+ /* Unallocated allocatable arrays and unassociated pointer arrays
+ need their dtype setting if they are argument associated with
+ assumed rank dummies. */
+@@ -5036,7 +5049,7 @@
+ type = e->ts.type != BT_ASSUMED ? gfc_typenode_for_spec (&e->ts) :
+ NULL_TREE;
+
+- if (type && DECL_ARTIFICIAL (parmse->expr)
++ if (type && is_artificial
+ && type != gfc_get_element_type (TREE_TYPE (parmse->expr)))
+ {
+ /* Obtain the offset to the data. */
+@@ -5048,8 +5061,7 @@
+ gfc_conv_descriptor_dtype (parmse->expr),
+ gfc_get_dtype_rank_type (e->rank, type));
+ }
+- else if (type == NULL_TREE
+- || (!is_subref_array (e) && !DECL_ARTIFICIAL (parmse->expr)))
++ else if (type == NULL_TREE || (!is_subref_array (e) && !is_artificial))
+ {
+ /* Make sure that the span is set for expressions where it
+ might not have been done already. */
+@@ -5070,41 +5082,40 @@
+ parmse->expr, attr);
}
+
+- /* Set the CFI attribute field. */
+- tmp = gfc_conv_descriptor_attribute (parmse->expr);
++ /* Set the CFI attribute field through a temporary value for the
++ gfc attribute. */
++ desc_attr = gfc_conv_descriptor_attribute (parmse->expr);
+ tmp = fold_build2_loc (input_location, MODIFY_EXPR,
+- void_type_node, tmp,
+- build_int_cst (TREE_TYPE (tmp), attribute));
++ void_type_node, desc_attr,
++ build_int_cst (TREE_TYPE (desc_attr), cfi_attribute));
+ gfc_add_expr_to_block (&parmse->pre, tmp);
+
+ /* Now pass the gfc_descriptor by reference. */
+ parmse->expr = gfc_build_addr_expr (NULL_TREE, parmse->expr);
+
+- /* Variables to point to the gfc and CFI descriptors. */
++ /* Variables to point to the gfc and CFI descriptors; cfi = NULL implies
++ that the CFI descriptor is allocated by the gfor_fndecl_gfc_to_cfi call. */
+ gfc_desc_ptr = parmse->expr;
+ cfi_desc_ptr = gfc_create_var (pvoid_type_node, "cfi");
+- gfc_add_modify (&parmse->pre, cfi_desc_ptr,
+- build_int_cst (pvoid_type_node, 0));
++ gfc_add_modify (&parmse->pre, cfi_desc_ptr, null_pointer_node);
+
+- /* Allocate the CFI descriptor and fill the fields. */
++ /* Allocate the CFI descriptor itself and fill the fields. */
+ tmp = gfc_build_addr_expr (NULL_TREE, cfi_desc_ptr);
+ tmp = build_call_expr_loc (input_location,
+ gfor_fndecl_gfc_to_cfi, 2, tmp, gfc_desc_ptr);
+ gfc_add_expr_to_block (&parmse->pre, tmp);
+
++ /* Now set the gfc descriptor attribute. */
++ tmp = fold_build2_loc (input_location, MODIFY_EXPR,
++ void_type_node, desc_attr,
++ build_int_cst (TREE_TYPE (desc_attr), attribute));
++ gfc_add_expr_to_block (&parmse->pre, tmp);
++
+ /* The CFI descriptor is passed to the bind_C procedure. */
+ parmse->expr = cfi_desc_ptr;
+
+ /* Free the CFI descriptor. */
+- gfc_init_block (&block);
+- cond = fold_build2_loc (input_location, NE_EXPR,
+- logical_type_node, cfi_desc_ptr,
+- build_int_cst (TREE_TYPE (cfi_desc_ptr), 0));
+ tmp = gfc_call_free (cfi_desc_ptr);
+- gfc_add_expr_to_block (&block, tmp);
+- tmp = build3_v (COND_EXPR, cond,
+- gfc_finish_block (&block),
+- build_empty_stmt (input_location));
+ gfc_prepend_expr_to_block (&parmse->post, tmp);
+
+ /* Transfer values back to gfc descriptor. */
+@@ -5112,6 +5123,25 @@
+ tmp = build_call_expr_loc (input_location,
+ gfor_fndecl_cfi_to_gfc, 2, gfc_desc_ptr, tmp);
+ gfc_prepend_expr_to_block (&parmse->post, tmp);
++
++ /* Deal with an optional dummy being passed to an optional formal arg
++ by finishing the pre and post blocks and making their execution
++ conditional on the dummy being present. */
++ if (fsym->attr.optional && e->expr_type == EXPR_VARIABLE
++ && e->symtree->n.sym->attr.optional)
++ {
++ cond = gfc_conv_expr_present (e->symtree->n.sym);
++ tmp = fold_build2 (MODIFY_EXPR, void_type_node,
++ cfi_desc_ptr,
++ build_int_cst (pvoid_type_node, 0));
++ tmp = build3_v (COND_EXPR, cond,
++ gfc_finish_block (&parmse->pre), tmp);
++ gfc_add_expr_to_block (&parmse->pre, tmp);
++ tmp = build3_v (COND_EXPR, cond,
++ gfc_finish_block (&parmse->post),
++ build_empty_stmt (input_location));
++ gfc_add_expr_to_block (&parmse->post, tmp);
++ }
}
-Index: gcc/expr.c
-===================================================================
---- a/src/gcc/expr.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/expr.c (.../branches/gcc-6-branch)
-@@ -120,7 +120,8 @@
- static rtx_insn *compress_float_constant (rtx, rtx);
- static rtx get_subtarget (rtx);
- static void store_constructor_field (rtx, unsigned HOST_WIDE_INT,
-- HOST_WIDE_INT, machine_mode,
-+ HOST_WIDE_INT, unsigned HOST_WIDE_INT,
-+ unsigned HOST_WIDE_INT, machine_mode,
- tree, int, alias_set_type, bool);
- static void store_constructor (tree, rtx, int, HOST_WIDE_INT, bool);
- static rtx store_field (rtx, HOST_WIDE_INT, HOST_WIDE_INT,
-@@ -4648,7 +4649,7 @@
- If the access does not need to be restricted, 0 is returned in both
- *BITSTART and *BITEND. */
--static void
-+void
- get_bit_range (unsigned HOST_WIDE_INT *bitstart,
- unsigned HOST_WIDE_INT *bitend,
- tree exp,
-@@ -5932,7 +5933,10 @@
+@@ -6001,8 +6031,14 @@
+ gfc_add_expr_to_block (&se->pre, tmp);
+ }
- static void
- store_constructor_field (rtx target, unsigned HOST_WIDE_INT bitsize,
-- HOST_WIDE_INT bitpos, machine_mode mode,
-+ HOST_WIDE_INT bitpos,
-+ unsigned HOST_WIDE_INT bitregion_start,
-+ unsigned HOST_WIDE_INT bitregion_end,
-+ machine_mode mode,
- tree exp, int cleared,
- alias_set_type alias_set, bool reverse)
- {
-@@ -5967,8 +5971,8 @@
- reverse);
+- tmp = build_fold_indirect_ref_loc (input_location,
+- parmse.expr);
++ tmp = parmse.expr;
++ /* With bind(C), the actual argument is replaced by a bind-C
++ descriptor; in this case, the data component arrives here,
++ which shall not be dereferenced, but still freed and
++ nullified. */
++ if (TREE_TYPE(tmp) != pvoid_type_node)
++ tmp = build_fold_indirect_ref_loc (input_location,
++ parmse.expr);
+ if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (tmp)))
+ tmp = gfc_conv_descriptor_data_get (tmp);
+ tmp = gfc_deallocate_with_status (tmp, NULL_TREE, NULL_TREE,
+@@ -10603,7 +10639,8 @@
+ if (expr1->ts.deferred
+ && gfc_expr_attr (expr1).allocatable
+ && gfc_check_dependency (expr1, expr2, true))
+- rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre);
++ rse.string_length =
++ gfc_evaluate_now_function_scope (rse.string_length, &rse.pre);
+ string_length = rse.string_length;
}
else
-- store_field (target, bitsize, bitpos, 0, 0, mode, exp, alias_set, false,
-- reverse);
-+ store_field (target, bitsize, bitpos, bitregion_start, bitregion_end, mode,
-+ exp, alias_set, false, reverse);
- }
+Index: gcc/fortran/trans-array.c
+===================================================================
+--- a/src/gcc/fortran/trans-array.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans-array.c (.../branches/gcc-9-branch)
+@@ -6110,9 +6110,12 @@
+ tree atype = type;
+ while (TREE_CODE (TREE_TYPE (atype)) == ARRAY_TYPE)
+ atype = TREE_TYPE (atype);
+- if (TREE_CODE (TREE_TYPE (atype)) == INTEGER_TYPE
+- && tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (se.expr)))
+- > tree_to_uhwi (TYPE_SIZE_UNIT (atype)))
++ gcc_checking_assert (TREE_CODE (TREE_TYPE (atype))
++ == INTEGER_TYPE);
++ gcc_checking_assert (TREE_TYPE (TREE_TYPE (se.expr))
++ == TREE_TYPE (atype));
++ if (tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (se.expr)))
++ > tree_to_uhwi (TYPE_SIZE_UNIT (atype)))
+ {
+ unsigned HOST_WIDE_INT size
+ = tree_to_uhwi (TYPE_SIZE_UNIT (atype));
+@@ -6119,8 +6122,8 @@
+ const char *p = TREE_STRING_POINTER (se.expr);
+
+ se.expr = build_string (size, p);
+- TREE_TYPE (se.expr) = atype;
+ }
++ TREE_TYPE (se.expr) = atype;
+ }
+ break;
+@@ -8024,7 +8027,7 @@
+ /* The components shall be deallocated before their containing entity. */
+ gfc_prepend_expr_to_block (&se->post, tmp);
+ }
+- if (expr->ts.type == BT_CHARACTER)
++ if (expr->ts.type == BT_CHARACTER && expr->expr_type != EXPR_FUNCTION)
+ se->string_length = expr->ts.u.cl->backend_decl;
+ if (size)
+ array_parameter_size (se->expr, expr, size);
+Index: gcc/fortran/class.c
+===================================================================
+--- a/src/gcc/fortran/class.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/class.c (.../branches/gcc-9-branch)
+@@ -2241,6 +2241,9 @@
+ if (!derived->attr.unlimited_polymorphic && derived->attr.is_class)
+ derived = gfc_get_derived_super_type (derived);
-@@ -6003,6 +6007,7 @@
- {
- tree type = TREE_TYPE (exp);
- HOST_WIDE_INT exp_size = int_size_in_bytes (type);
-+ HOST_WIDE_INT bitregion_end = size > 0 ? size * BITS_PER_UNIT - 1 : 0;
++ if (!derived)
++ return NULL;
++
+ /* Find the gsymbol for the module of use associated derived types. */
+ if ((derived->attr.use_assoc || derived->attr.used_in_submodule)
+ && !derived->attr.vtype && !derived->attr.is_class)
+Index: gcc/fortran/decl.c
+===================================================================
+--- a/src/gcc/fortran/decl.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/decl.c (.../branches/gcc-9-branch)
+@@ -99,6 +99,11 @@
+ /* Set upon parsing a !GCC$ unroll n directive for use in the next loop. */
+ int directive_unroll = -1;
- switch (TREE_CODE (type))
++/* Set upon parsing supported !GCC$ pragmas for use in the next loop. */
++bool directive_ivdep = false;
++bool directive_vector = false;
++bool directive_novector = false;
++
+ /* Map of middle-end built-ins that should be vectorized. */
+ hash_map<nofree_string_hash, int> *gfc_vectorized_builtins;
+
+@@ -1335,9 +1340,9 @@
+ }
+
+ /* Trap declarations of attributes in encompassing scope. The
+- signature for this is that ts.kind is set. Legitimate
+- references only set ts.type. */
+- if (sym->ts.kind != 0
++ signature for this is that ts.kind is nonzero for no-CLASS
++ entity. For a CLASS entity, ts.kind is zero. */
++ if ((sym->ts.kind != 0 || sym->ts.type == BT_CLASS)
+ && !sym->attr.implicit_type
+ && sym->attr.proc == 0
+ && gfc_current_ns->parent != NULL
+@@ -2644,7 +2649,7 @@
+ then we want to set the type & bail out. */
+ if (flag_cray_pointer && !gfc_comp_struct (gfc_current_state ()))
{
-@@ -6081,7 +6086,7 @@
- if (tree_fits_uhwi_p (DECL_SIZE (field)))
- bitsize = tree_to_uhwi (DECL_SIZE (field));
- else
-- bitsize = -1;
-+ gcc_unreachable ();
-
- mode = DECL_MODE (field);
- if (DECL_BIT_FIELD (field))
-@@ -6092,32 +6097,11 @@
- && tree_fits_shwi_p (bit_position (field)))
- {
- bitpos = int_bit_position (field);
-- offset = 0;
-+ offset = NULL_TREE;
- }
- else
-- bitpos = tree_to_shwi (DECL_FIELD_BIT_OFFSET (field));
-+ gcc_unreachable ();
-
-- if (offset)
-- {
-- machine_mode address_mode;
-- rtx offset_rtx;
--
-- offset
-- = SUBSTITUTE_PLACEHOLDER_IN_EXPR (offset,
-- make_tree (TREE_TYPE (exp),
-- target));
--
-- offset_rtx = expand_normal (offset);
-- gcc_assert (MEM_P (to_rtx));
--
-- address_mode = get_address_mode (to_rtx);
-- if (GET_MODE (offset_rtx) != address_mode)
-- offset_rtx = convert_to_mode (address_mode, offset_rtx, 0);
--
-- to_rtx = offset_address (to_rtx, offset_rtx,
-- highest_pow2_factor (offset));
-- }
+- gfc_find_symbol (name, gfc_current_ns, 1, &sym);
++ gfc_find_symbol (name, gfc_current_ns, 0, &sym);
+ if (sym != NULL && sym->attr.cray_pointee)
+ {
+ m = MATCH_YES;
+@@ -3991,7 +3996,6 @@
+ return MATCH_YES;
+ }
+
-
- /* If this initializes a field that is smaller than a
- word, at the start of a word, try to widen it to a full
- word. This special case allows us to output C++ member
-@@ -6164,7 +6148,8 @@
- MEM_KEEP_ALIAS_SET_P (to_rtx) = 1;
- }
-
-- store_constructor_field (to_rtx, bitsize, bitpos, mode,
-+ store_constructor_field (to_rtx, bitsize, bitpos,
-+ 0, bitregion_end, mode,
- value, cleared,
- get_alias_set (TREE_TYPE (field)),
- reverse);
-@@ -6324,7 +6309,8 @@
- }
-
- store_constructor_field
-- (target, bitsize, bitpos, mode, value, cleared,
-+ (target, bitsize, bitpos, 0, bitregion_end,
-+ mode, value, cleared,
- get_alias_set (elttype), reverse);
- }
- }
-@@ -6427,7 +6413,8 @@
- target = copy_rtx (target);
- MEM_KEEP_ALIAS_SET_P (target) = 1;
- }
-- store_constructor_field (target, bitsize, bitpos, mode, value,
-+ store_constructor_field (target, bitsize, bitpos, 0,
-+ bitregion_end, mode, value,
- cleared, get_alias_set (elttype),
- reverse);
- }
-@@ -6561,7 +6548,8 @@
- ? TYPE_MODE (TREE_TYPE (value))
- : eltmode;
- bitpos = eltpos * elt_size;
-- store_constructor_field (target, bitsize, bitpos, value_mode,
-+ store_constructor_field (target, bitsize, bitpos, 0,
-+ bitregion_end, value_mode,
- value, cleared, alias, reverse);
- }
- }
-@@ -6700,13 +6688,36 @@
-
- temp = expand_normal (exp);
-
-- /* If the value has a record type and an integral mode then, if BITSIZE
-- is narrower than this mode and this is for big-endian data, we must
-- first put the value into the low-order bits. Moreover, the field may
-- be not aligned on a byte boundary; in this case, if it has reverse
-- storage order, it needs to be accessed as a scalar field with reverse
-- storage order and we must first put the value into target order. */
-- if (TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE
-+ /* Handle calls that return values in multiple non-contiguous locations.
-+ The Irix 6 ABI has examples of this. */
-+ if (GET_CODE (temp) == PARALLEL)
+ m = gfc_match (" type (");
+ matched_type = (m == MATCH_YES);
+ if (matched_type)
+@@ -4039,7 +4043,10 @@
+ m = MATCH_YES;
+
+ if (matched_type && m == MATCH_YES && gfc_match_char (')') != MATCH_YES)
+- m = MATCH_ERROR;
+ {
-+ HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-+ machine_mode temp_mode
-+ = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
-+ rtx temp_target = gen_reg_rtx (temp_mode);
-+ emit_group_store (temp_target, temp, TREE_TYPE (exp), size);
-+ temp = temp_target;
++ gfc_error ("Malformed type-spec at %C");
++ return MATCH_ERROR;
+ }
+
+ return m;
+ }
+@@ -4062,8 +4069,12 @@
+ && !gfc_notify_std (GFC_STD_F2008, "TYPE with "
+ "intrinsic-type-spec at %C"))
+ return MATCH_ERROR;
+
-+ /* Handle calls that return BLKmode values in registers. */
-+ else if (mode == BLKmode && REG_P (temp) && TREE_CODE (exp) == CALL_EXPR)
+ if (matched_type && gfc_match_char (')') != MATCH_YES)
+- return MATCH_ERROR;
+ {
-+ rtx temp_target = gen_reg_rtx (GET_MODE (temp));
-+ copy_blkmode_from_reg (temp_target, temp, TREE_TYPE (exp));
-+ temp = temp_target;
++ gfc_error ("Malformed type-spec at %C");
++ return MATCH_ERROR;
+ }
-+
-+ /* If the value has aggregate type and an integral mode then, if BITSIZE
-+ is narrower than this mode and this is for big-endian data, we first
-+ need to put the value into the low-order bits for store_bit_field,
-+ except when MODE is BLKmode and BITSIZE larger than the word size
-+ (see the handling of fields larger than a word in store_bit_field).
-+ Moreover, the field may be not aligned on a byte boundary; in this
-+ case, if it has reverse storage order, it needs to be accessed as a
-+ scalar field with reverse storage order and we must first put the
-+ value into target order. */
-+ if (AGGREGATE_TYPE_P (TREE_TYPE (exp))
- && GET_MODE_CLASS (GET_MODE (temp)) == MODE_INT)
- {
- HOST_WIDE_INT size = GET_MODE_BITSIZE (GET_MODE (temp));
-@@ -6717,7 +6728,8 @@
- temp = flip_storage_order (GET_MODE (temp), temp);
-
- if (bitsize < size
-- && reverse ? !BYTES_BIG_ENDIAN : BYTES_BIG_ENDIAN)
-+ && reverse ? !BYTES_BIG_ENDIAN : BYTES_BIG_ENDIAN
-+ && !(mode == BLKmode && bitsize > BITS_PER_WORD))
- temp = expand_shift (RSHIFT_EXPR, GET_MODE (temp), temp,
- size - bitsize, NULL_RTX, 1);
- }
-@@ -6727,12 +6739,10 @@
- && mode != TYPE_MODE (TREE_TYPE (exp)))
- temp = convert_modes (mode, TYPE_MODE (TREE_TYPE (exp)), temp, 1);
-
-- /* If TEMP is not a PARALLEL (see below) and its mode and that of TARGET
-- are both BLKmode, both must be in memory and BITPOS must be aligned
-- on a byte boundary. If so, we simply do a block copy. Likewise for
-- a BLKmode-like TARGET. */
-- if (GET_CODE (temp) != PARALLEL
-- && GET_MODE (temp) == BLKmode
-+ /* If the mode of TEMP and TARGET is BLKmode, both must be in memory
-+ and BITPOS must be aligned on a byte boundary. If so, we simply do
-+ a block copy. Likewise for a BLKmode-like TARGET. */
-+ if (GET_MODE (temp) == BLKmode
- && (GET_MODE (target) == BLKmode
- || (MEM_P (target)
- && GET_MODE_CLASS (GET_MODE (target)) == MODE_INT
-@@ -6751,39 +6761,14 @@
- return const0_rtx;
- }
-- /* Handle calls that return values in multiple non-contiguous locations.
-- The Irix 6 ABI has examples of this. */
-- if (GET_CODE (temp) == PARALLEL)
-+ /* If the mode of TEMP is still BLKmode and BITSIZE not larger than the
-+ word size, we need to load the value (see again store_bit_field). */
-+ if (GET_MODE (temp) == BLKmode && bitsize <= BITS_PER_WORD)
- {
-- HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-- rtx temp_target;
-- if (mode == BLKmode || mode == VOIDmode)
-- mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
-- temp_target = gen_reg_rtx (mode);
-- emit_group_store (temp_target, temp, TREE_TYPE (exp), size);
-- temp = temp_target;
-+ machine_mode temp_mode = smallest_mode_for_size (bitsize, MODE_INT);
-+ temp = extract_bit_field (temp, bitsize, 0, 1, NULL_RTX, temp_mode,
-+ temp_mode, false);
- }
-- else if (mode == BLKmode)
-- {
-- /* Handle calls that return BLKmode values in registers. */
-- if (REG_P (temp) && TREE_CODE (exp) == CALL_EXPR)
-- {
-- rtx temp_target = gen_reg_rtx (GET_MODE (temp));
-- copy_blkmode_from_reg (temp_target, temp, TREE_TYPE (exp));
-- temp = temp_target;
-- }
-- else
-- {
-- HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-- rtx temp_target;
-- mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
-- temp_target = gen_reg_rtx (mode);
-- temp_target
-- = extract_bit_field (temp, size * BITS_PER_UNIT, 0, 1,
-- temp_target, mode, mode, false);
-- temp = temp_target;
-- }
-- }
+ ts->type = BT_REAL;
+ ts->kind = gfc_default_double_kind;
+@@ -4093,7 +4104,10 @@
+ return MATCH_ERROR;
- /* Store the value in the bitfield. */
- store_bit_field (target, bitsize, bitpos,
-@@ -8800,6 +8785,18 @@
- if (temp != 0)
- return temp;
+ if (matched_type && gfc_match_char (')') != MATCH_YES)
+- return MATCH_ERROR;
++ {
++ gfc_error ("Malformed type-spec at %C");
++ return MATCH_ERROR;
++ }
-+ /* For vector MIN <x, y>, expand it a VEC_COND_EXPR <x <= y, x, y>
-+ and similarly for MAX <x, y>. */
-+ if (VECTOR_TYPE_P (type))
+ ts->type = BT_COMPLEX;
+ ts->kind = gfc_default_double_kind;
+@@ -4114,7 +4128,13 @@
+ if (m == MATCH_ERROR)
+ return m;
+
+- m = gfc_match_char (')');
++ gfc_gobble_whitespace ();
++ if (gfc_peek_ascii_char () != ')')
+ {
-+ tree t0 = make_tree (type, op0);
-+ tree t1 = make_tree (type, op1);
-+ tree comparison = build2 (code == MIN_EXPR ? LE_EXPR : GE_EXPR,
-+ type, t0, t1);
-+ return expand_vec_cond_expr (type, comparison, t0, t1,
-+ original_target);
++ gfc_error ("Malformed type-spec at %C");
++ return MATCH_ERROR;
+ }
-+
- /* At this point, a MEM target is no longer useful; we will get better
- code without it. */
-
-@@ -8941,9 +8938,9 @@
-
- /* Left shift optimization when shifting across word_size boundary.
-
-- If mode == GET_MODE_WIDER_MODE (word_mode), then normally there isn't
-- native instruction to support this wide mode left shift. Given below
-- scenario:
-+ If mode == GET_MODE_WIDER_MODE (word_mode), then normally
-+ there isn't native instruction to support this wide mode
-+ left shift. Given below scenario:
-
- Type A = (Type) B << C
-
-@@ -8952,10 +8949,11 @@
-
- | word_size |
-
-- If the shift amount C caused we shift B to across the word size
-- boundary, i.e part of B shifted into high half of destination
-- register, and part of B remains in the low half, then GCC will use
-- the following left shift expand logic:
-+ If the shift amount C caused we shift B to across the word
-+ size boundary, i.e part of B shifted into high half of
-+ destination register, and part of B remains in the low
-+ half, then GCC will use the following left shift expand
-+ logic:
-
- 1. Initialize dest_low to B.
- 2. Initialize every bit of dest_high to the sign bit of B.
-@@ -8965,20 +8963,30 @@
- 5. Logic right shift D by (word_size - C).
- 6. Or the result of 4 and 5 to finalize dest_high.
-
-- While, by checking gimple statements, if operand B is coming from
-- signed extension, then we can simplify above expand logic into:
-+ While, by checking gimple statements, if operand B is
-+ coming from signed extension, then we can simplify above
-+ expand logic into:
-
- 1. dest_high = src_low >> (word_size - C).
- 2. dest_low = src_low << C.
-
-- We can use one arithmetic right shift to finish all the purpose of
-- steps 2, 4, 5, 6, thus we reduce the steps needed from 6 into 2. */
-+ We can use one arithmetic right shift to finish all the
-+ purpose of steps 2, 4, 5, 6, thus we reduce the steps
-+ needed from 6 into 2.
-
-+ The case is similar for zero extension, except that we
-+ initialize dest_high to zero rather than copies of the sign
-+ bit from B. Furthermore, we need to use a logical right shift
-+ in this case.
-+
-+ The choice of sign-extension versus zero-extension is
-+ determined entirely by whether or not B is signed and is
-+ independent of the current setting of unsignedp. */
-+
- temp = NULL_RTX;
- if (code == LSHIFT_EXPR
- && target
- && REG_P (target)
-- && ! unsignedp
- && mode == GET_MODE_WIDER_MODE (word_mode)
- && GET_MODE_SIZE (mode) == 2 * GET_MODE_SIZE (word_mode)
- && TREE_CONSTANT (treeop1)
-@@ -8999,6 +9007,8 @@
- rtx_insn *seq, *seq_old;
- unsigned int high_off = subreg_highpart_offset (word_mode,
- mode);
-+ bool extend_unsigned
-+ = TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (def)));
- rtx low = lowpart_subreg (word_mode, op0, mode);
- rtx dest_low = lowpart_subreg (word_mode, target, mode);
- rtx dest_high = simplify_gen_subreg (word_mode, target,
-@@ -9010,7 +9020,8 @@
- start_sequence ();
- /* dest_high = src_low >> (word_size - C). */
- temp = expand_variable_shift (RSHIFT_EXPR, word_mode, low,
-- rshift, dest_high, unsignedp);
-+ rshift, dest_high,
-+ extend_unsigned);
- if (temp != dest_high)
- emit_move_insn (dest_high, temp);
-
-Index: gcc/expr.h
-===================================================================
---- a/src/gcc/expr.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/expr.h (.../branches/gcc-6-branch)
-@@ -223,6 +223,10 @@
- extern bool emit_push_insn (rtx, machine_mode, tree, rtx, unsigned int,
- int, rtx, int, rtx, rtx, int, rtx, bool);
-
-+/* Extract the accessible bit-range from a COMPONENT_REF. */
-+extern void get_bit_range (unsigned HOST_WIDE_INT *, unsigned HOST_WIDE_INT *,
-+ tree, HOST_WIDE_INT *, tree *);
-+
- /* Expand an assignment that stores the value of FROM into TO. */
- extern void expand_assignment (tree, tree, bool);
-
-Index: gcc/go/gofrontend/expressions.h
-===================================================================
---- a/src/gcc/go/gofrontend/expressions.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/go/gofrontend/expressions.h (.../branches/gcc-6-branch)
-@@ -1633,10 +1633,11 @@
- }
++ m = gfc_match_char (')'); /* Burn closing ')'. */
+ }
- // Apply unary opcode OP to UNC, setting NC. Return true if this
-- // could be done, false if not. Issue errors for overflow.
-+ // could be done, false if not. On overflow, issues an error and
-+ // sets *ISSUED_ERROR.
- static bool
- eval_constant(Operator op, const Numeric_constant* unc,
-- Location, Numeric_constant* nc);
-+ Location, Numeric_constant* nc, bool *issued_error);
-
- static Expression*
- do_import(Import*);
-@@ -1755,11 +1756,11 @@
-
- // Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC.
- // Return true if this could be done, false if not. Issue errors at
-- // LOCATION as appropriate.
-+ // LOCATION as appropriate, and sets *ISSUED_ERROR if it did.
- static bool
- eval_constant(Operator op, Numeric_constant* left_nc,
- Numeric_constant* right_nc, Location location,
-- Numeric_constant* nc);
-+ Numeric_constant* nc, bool* issued_error);
-
- // Compare constants LEFT_NC and RIGHT_NC according to OP, setting
- // *RESULT. Return true if this could be done, false if not. Issue
-Index: gcc/go/gofrontend/types.cc
-===================================================================
---- a/src/gcc/go/gofrontend/types.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/go/gofrontend/types.cc (.../branches/gcc-6-branch)
-@@ -2175,11 +2175,26 @@
- is_common = true;
+ if (m != MATCH_YES)
+@@ -4397,6 +4417,7 @@
+ gfc_next_ascii_char ();
+ return MATCH_YES;
+ }
++ gfc_error ("Malformed type-spec at %C");
+ return MATCH_NO;
+ }
+ }
+@@ -4410,7 +4431,10 @@
}
-+ // The current garbage collector requires that the GC symbol be
-+ // aligned to at least a four byte boundary. See the use of PRECISE
-+ // and LOOP in libgo/runtime/mgc0.c.
-+ int64_t align;
-+ if (!sym_init->type()->backend_type_align(gogo, &align))
-+ go_assert(saw_errors());
-+ if (align < 4)
-+ align = 4;
-+ else
+ if (matched_type && gfc_match_char (')') != MATCH_YES)
+- return MATCH_ERROR;
+ {
-+ // Use default alignment.
-+ align = 0;
++ gfc_error ("Malformed type-spec at %C");
++ return MATCH_ERROR;
+ }
-+
- // Since we are building the GC symbol in this package, we must create the
- // variable before converting the initializer to its backend representation
- // because the initializer may refer to the GC symbol for this type.
- this->gc_symbol_var_ =
-- gogo->backend()->implicit_variable(sym_name, sym_btype, false, true, is_common, 0);
-+ gogo->backend()->implicit_variable(sym_name, sym_btype, false, true,
-+ is_common, align);
- if (phash != NULL)
- *phash = this->gc_symbol_var_;
-Index: gcc/go/gofrontend/expressions.cc
-===================================================================
---- a/src/gcc/go/gofrontend/expressions.cc (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/go/gofrontend/expressions.cc (.../branches/gcc-6-branch)
-@@ -3639,8 +3639,12 @@
- if (expr->numeric_constant_value(&nc))
+ /* Defer association of the KIND expression of function results
+ until after USE and IMPORT statements. */
+@@ -6145,13 +6169,17 @@
+ found_prefix = true;
+ }
+
+- if (!seen_type && ts != NULL
+- && gfc_match_decl_type_spec (ts, 0) == MATCH_YES
+- && gfc_match_space () == MATCH_YES)
++ if (!seen_type && ts != NULL)
{
- Numeric_constant result;
-- if (Unary_expression::eval_constant(op, &nc, loc, &result))
-+ bool issued_error;
-+ if (Unary_expression::eval_constant(op, &nc, loc, &result,
-+ &issued_error))
- return result.expression(loc);
-+ else if (issued_error)
-+ return Expression::make_error(this->location());
+-
+- seen_type = true;
+- found_prefix = true;
++ match m;
++ m = gfc_match_decl_type_spec (ts, 0);
++ if (m == MATCH_ERROR)
++ goto error;
++ if (m == MATCH_YES && gfc_match_space () == MATCH_YES)
++ {
++ seen_type = true;
++ found_prefix = true;
++ }
}
+
+ if (gfc_match ("elemental% ") == MATCH_YES)
+@@ -7202,13 +7230,16 @@
+ if (sym->attr.is_bind_c == 1)
+ {
+ sym->attr.is_bind_c = 0;
+- if (sym->old_symbol != NULL)
+- gfc_error_now ("BIND(C) attribute at %L can only be used for "
+- "variables or common blocks",
+- &(sym->old_symbol->declared_at));
+- else
+- gfc_error_now ("BIND(C) attribute at %L can only be used for "
+- "variables or common blocks", &gfc_current_locus);
++
++ if (gfc_state_stack->previous
++ && gfc_state_stack->previous->state != COMP_SUBMODULE)
++ {
++ locus loc;
++ loc = sym->old_symbol != NULL
++ ? sym->old_symbol->declared_at : gfc_current_locus;
++ gfc_error_now ("BIND(C) attribute at %L can only be used for "
++ "variables or common blocks", &loc);
++ }
}
-@@ -3747,12 +3751,15 @@
- }
+ if (found_match != MATCH_YES)
+@@ -7222,6 +7253,24 @@
+ found_match = suffix_match;
+ }
- // Apply unary opcode OP to UNC, setting NC. Return true if this
--// could be done, false if not. Issue errors for overflow.
-+// could be done, false if not. On overflow, issues an error and sets
-+// *ISSUED_ERROR.
++ /* F2018 C1550 (R1526) If MODULE appears in the prefix of a module
++ subprogram and a binding label is specified, it shall be the
++ same as the binding label specified in the corresponding module
++ procedure interface body. */
++ if (sym->attr.is_bind_c && sym->attr.module_procedure && sym->old_symbol
++ && strcmp (sym->name, sym->old_symbol->name) == 0
++ && strcmp (sym->binding_label, sym->old_symbol->binding_label) != 0)
++ {
++ const char *null = "NULL", *s1, *s2;
++ s1 = sym->binding_label;
++ if (!s1) s1 = null;
++ s2 = sym->old_symbol->binding_label;
++ if (!s2) s2 = null;
++ gfc_error ("Mismatch in BIND(C) names (%qs/%qs) at %C", s1, s2);
++ sym->refs++; /* Needed to avoid an ICE in gfc_release_symbol */
++ return MATCH_ERROR;
++ }
++
+ if(found_match != MATCH_YES)
+ m = MATCH_ERROR;
+ else
+@@ -7460,16 +7509,16 @@
+ not allowed for procedures. */
+ if (entry->attr.is_bind_c == 1)
+ {
++ locus loc;
++
+ entry->attr.is_bind_c = 0;
+- if (entry->old_symbol != NULL)
+- gfc_error_now ("BIND(C) attribute at %L can only be used for "
+- "variables or common blocks",
+- &(entry->old_symbol->declared_at));
+- else
+- gfc_error_now ("BIND(C) attribute at %L can only be used for "
+- "variables or common blocks", &gfc_current_locus);
+- }
- bool
- Unary_expression::eval_constant(Operator op, const Numeric_constant* unc,
-- Location location, Numeric_constant* nc)
-+ Location location, Numeric_constant* nc,
-+ bool* issued_error)
- {
-+ *issued_error = false;
- switch (op)
++ loc = entry->old_symbol != NULL
++ ? entry->old_symbol->declared_at : gfc_current_locus;
++ gfc_error_now ("BIND(C) attribute at %L can only be used for "
++ "variables or common blocks", &loc);
++ }
++
+ /* Check what next non-whitespace character is so we can tell if there
+ is the required parens if we have a BIND(C). */
+ old_loc = gfc_current_locus;
+@@ -7668,13 +7717,16 @@
+ if (sym->attr.is_bind_c == 1)
{
- case OPERATOR_PLUS:
-@@ -3897,7 +3904,12 @@
- mpz_clear(uval);
- mpz_clear(val);
+ sym->attr.is_bind_c = 0;
+- if (sym->old_symbol != NULL)
+- gfc_error_now ("BIND(C) attribute at %L can only be used for "
+- "variables or common blocks",
+- &(sym->old_symbol->declared_at));
+- else
+- gfc_error_now ("BIND(C) attribute at %L can only be used for "
+- "variables or common blocks", &gfc_current_locus);
++
++ if (gfc_state_stack->previous
++ && gfc_state_stack->previous->state != COMP_SUBMODULE)
++ {
++ locus loc;
++ loc = sym->old_symbol != NULL
++ ? sym->old_symbol->declared_at : gfc_current_locus;
++ gfc_error_now ("BIND(C) attribute at %L can only be used for "
++ "variables or common blocks", &loc);
++ }
+ }
+
+ /* C binding names are not allowed for internal procedures. */
+@@ -7716,6 +7768,24 @@
+ return MATCH_ERROR;
+ }
-- return nc->set_type(unc->type(), true, location);
-+ if (!nc->set_type(unc->type(), true, location))
++ /* F2018 C1550 (R1526) If MODULE appears in the prefix of a module
++ subprogram and a binding label is specified, it shall be the
++ same as the binding label specified in the corresponding module
++ procedure interface body. */
++ if (sym->attr.module_procedure && sym->old_symbol
++ && strcmp (sym->name, sym->old_symbol->name) == 0
++ && strcmp (sym->binding_label, sym->old_symbol->binding_label) != 0)
++ {
++ const char *null = "NULL", *s1, *s2;
++ s1 = sym->binding_label;
++ if (!s1) s1 = null;
++ s2 = sym->old_symbol->binding_label;
++ if (!s2) s2 = null;
++ gfc_error ("Mismatch in BIND(C) names (%qs/%qs) at %C", s1, s2);
++ sym->refs++; /* Needed to avoid an ICE in gfc_release_symbol */
++ return MATCH_ERROR;
++ }
++
+ /* Scan the dummy arguments for an alternate return. */
+ for (arg = sym->formal; arg; arg = arg->next)
+ if (!arg->sym)
+@@ -10161,6 +10231,20 @@
+ return MATCH_ERROR;
+ }
+
++ /* In free source form, need to check for TYPE XXX as oppose to TYPEXXX.
++ But, we need to simply return for TYPE(. */
++ if (m == MATCH_NO && gfc_current_form == FORM_FREE)
+ {
-+ *issued_error = true;
-+ return false;
++ char c = gfc_peek_ascii_char ();
++ if (c == '(')
++ return m;
++ if (!gfc_is_whitespace (c))
++ {
++ gfc_error ("Mangled derived type definition at %C");
++ return MATCH_NO;
++ }
+ }
-+ return true;
- }
++
+ m = gfc_match (" %n ", name);
+ if (m != MATCH_YES)
+ return m;
+@@ -10168,7 +10252,7 @@
+ /* Make sure that we don't identify TYPE IS (...) as a parameterized
+ derived type named 'is'.
+ TODO Expand the check, when 'name' = "is" by matching " (tname) "
+- and checking if this is a(n intrinsic) typename. his picks up
++ and checking if this is a(n intrinsic) typename. This picks up
+ misplaced TYPE IS statements such as in select_type_1.f03. */
+ if (gfc_peek_ascii_char () == '(')
+ {
+@@ -11472,3 +11556,53 @@
- // Return the integral constant value of a unary expression, if it has one.
-@@ -3908,8 +3920,9 @@
- Numeric_constant unc;
- if (!this->expr_->numeric_constant_value(&unc))
- return false;
-+ bool issued_error;
- return Unary_expression::eval_constant(this->op_, &unc, this->location(),
-- nc);
-+ nc, &issued_error);
+ return MATCH_YES;
}
++
++/* Match an !GCC$ IVDEP statement.
++ When we come here, we have already matched the !GCC$ IVDEP string. */
++
++match
++gfc_match_gcc_ivdep (void)
++{
++ if (gfc_match_eos () == MATCH_YES)
++ {
++ directive_ivdep = true;
++ return MATCH_YES;
++ }
++
++ gfc_error ("Syntax error in !GCC$ IVDEP directive at %C");
++ return MATCH_ERROR;
++}
++
++/* Match an !GCC$ VECTOR statement.
++ When we come here, we have already matched the !GCC$ VECTOR string. */
++
++match
++gfc_match_gcc_vector (void)
++{
++ if (gfc_match_eos () == MATCH_YES)
++ {
++ directive_vector = true;
++ directive_novector = false;
++ return MATCH_YES;
++ }
++
++ gfc_error ("Syntax error in !GCC$ VECTOR directive at %C");
++ return MATCH_ERROR;
++}
++
++/* Match an !GCC$ NOVECTOR statement.
++ When we come here, we have already matched the !GCC$ NOVECTOR string. */
++
++match
++gfc_match_gcc_novector (void)
++{
++ if (gfc_match_eos () == MATCH_YES)
++ {
++ directive_novector = true;
++ directive_vector = false;
++ return MATCH_YES;
++ }
++
++ gfc_error ("Syntax error in !GCC$ NOVECTOR directive at %C");
++ return MATCH_ERROR;
++}
+Index: gcc/fortran/array.c
+===================================================================
+--- a/src/gcc/fortran/array.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/array.c (.../branches/gcc-9-branch)
+@@ -843,6 +843,10 @@
- // Return the type of a unary expression.
-@@ -4539,13 +4552,15 @@
+ sym->as->cotype = as->cotype;
+ sym->as->corank = as->corank;
++ /* Check F2018:C822. */
++ if (sym->as->rank + sym->as->corank > GFC_MAX_DIMENSIONS)
++ goto too_many;
++
+ for (i = 0; i < as->corank; i++)
+ {
+ sym->as->lower[sym->as->rank + i] = as->lower[i];
+@@ -861,6 +865,10 @@
+ sym->as->cray_pointee = as->cray_pointee;
+ sym->as->cp_was_assumed = as->cp_was_assumed;
- // Apply binary opcode OP to LEFT_NC and RIGHT_NC, setting NC. Return
- // true if this could be done, false if not. Issue errors at LOCATION
--// as appropriate.
-+// as appropriate, and sets *ISSUED_ERROR if it did.
++ /* Check F2018:C822. */
++ if (sym->as->rank + sym->as->corank > GFC_MAX_DIMENSIONS)
++ goto too_many;
++
+ for (i = 0; i < sym->as->corank; i++)
+ {
+ sym->as->lower[as->rank + i] = sym->as->lower[i];
+@@ -875,6 +883,12 @@
- bool
- Binary_expression::eval_constant(Operator op, Numeric_constant* left_nc,
- Numeric_constant* right_nc,
-- Location location, Numeric_constant* nc)
-+ Location location, Numeric_constant* nc,
-+ bool* issued_error)
- {
-+ *issued_error = false;
- switch (op)
- {
- case OPERATOR_OROR:
-@@ -4594,7 +4609,11 @@
- r = Binary_expression::eval_integer(op, left_nc, right_nc, location, nc);
+ free (as);
+ return true;
++
++too_many:
++
++ gfc_error ("rank + corank of %qs exceeds %d at %C", sym->name,
++ GFC_MAX_DIMENSIONS);
++ return false;
+ }
- if (r)
-- r = nc->set_type(type, true, location);
-+ {
-+ r = nc->set_type(type, true, location);
-+ if (!r)
-+ *issued_error = true;
-+ }
- return r;
- }
-@@ -4917,9 +4936,15 @@
- else
- {
- Numeric_constant nc;
-+ bool issued_error;
- if (!Binary_expression::eval_constant(op, &left_nc, &right_nc,
-- location, &nc))
-+ location, &nc,
-+ &issued_error))
-+ {
-+ if (issued_error)
-+ return Expression::make_error(location);
- return this;
-+ }
- return nc.expression(location);
- }
- }
-@@ -5254,8 +5279,9 @@
- Numeric_constant right_nc;
- if (!this->right_->numeric_constant_value(&right_nc))
- return false;
-+ bool issued_error;
- return Binary_expression::eval_constant(this->op_, &left_nc, &right_nc,
-- this->location(), nc);
-+ this->location(), nc, &issued_error);
+@@ -1124,6 +1138,31 @@
}
- // Note that the value is being discarded.
-@@ -5354,8 +5380,13 @@
- Type_context subcontext(*context);
-
-- if (is_comparison)
-+ if (is_constant_expr)
- {
-+ subcontext.type = NULL;
-+ subcontext.may_be_abstract = true;
-+ }
-+ else if (is_comparison)
++/* Convert components of an array constructor to the type in ts. */
++
++static match
++walk_array_constructor (gfc_typespec *ts, gfc_constructor_base head)
++{
++ gfc_constructor *c;
++ gfc_expr *e;
++ match m;
++
++ for (c = gfc_constructor_first (head); c; c = gfc_constructor_next (c))
+ {
- // In a comparison, the context does not determine the types of
- // the operands.
- subcontext.type = NULL;
-@@ -5396,8 +5427,7 @@
- subcontext.type = subcontext.type->make_non_abstract_type();
- }
++ e = c->expr;
++ if (e->expr_type == EXPR_ARRAY && e->ts.type == BT_UNKNOWN
++ && !e->ref && e->value.constructor)
++ {
++ m = walk_array_constructor (ts, e->value.constructor);
++ if (m == MATCH_ERROR)
++ return m;
++ }
++ else if (!gfc_convert_type (e, ts, 1) && e->ts.type != BT_UNKNOWN)
++ return MATCH_ERROR;
++ }
++ return MATCH_YES;
++}
++
+ /* Match an array constructor. */
-- if (!is_constant_expr)
-- this->left_->determine_type(&subcontext);
-+ this->left_->determine_type(&subcontext);
+ match
+@@ -1253,14 +1292,13 @@
+ }
+ }
- if (is_shift_op)
- {
-@@ -5417,8 +5447,7 @@
- subcontext.may_be_abstract = false;
+- /* Walk the constructor and ensure type conversion for numeric types. */
++ /* Walk the constructor, and if possible, do type conversion for
++ numeric types. */
+ if (gfc_numeric_ts (&ts))
+ {
+- c = gfc_constructor_first (head);
+- for (; c; c = gfc_constructor_next (c))
+- if (!gfc_convert_type (c->expr, &ts, 1)
+- && c->expr->ts.type != BT_UNKNOWN)
+- return MATCH_ERROR;
++ m = walk_array_constructor (&ts, head);
++ if (m == MATCH_ERROR)
++ return m;
+ }
}
-
-- if (!is_constant_expr)
-- this->right_->determine_type(&subcontext);
-+ this->right_->determine_type(&subcontext);
-
- if (is_comparison)
- {
-Index: gcc/tree-chkp-opt.c
-===================================================================
---- a/src/gcc/tree-chkp-opt.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-chkp-opt.c (.../branches/gcc-6-branch)
-@@ -239,9 +239,11 @@
- return false;
- else if (addr.pol[0].var)
- return false;
-+ else if (TREE_CODE (addr.pol[0].cst) != INTEGER_CST)
-+ return false;
- else if (integer_zerop (addr.pol[0].cst))
- *sign = 0;
-- else if (tree_int_cst_sign_bit (addr.pol[0].cst))
-+ else if (tree_int_cst_sign_bit (addr.pol[0].cst))
- *sign = -1;
else
- *sign = 1;
-Index: gcc/tree-parloops.c
+@@ -2175,6 +2213,9 @@
+ dest->end = gfc_copy_expr (src->end);
+ dest->step = gfc_copy_expr (src->step);
+ dest->unroll = src->unroll;
++ dest->ivdep = src->ivdep;
++ dest->vector = src->vector;
++ dest->novector = src->novector;
+
+ return dest;
+ }
+Index: gcc/fortran/gfortran.h
===================================================================
---- a/src/gcc/tree-parloops.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-parloops.c (.../branches/gcc-6-branch)
-@@ -2511,8 +2511,8 @@
+--- a/src/gcc/fortran/gfortran.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/gfortran.h (.../branches/gcc-9-branch)
+@@ -2407,6 +2407,9 @@
{
- gphi_iterator gsi;
- loop_vec_info simple_loop_info;
-- loop_vec_info simple_inner_loop_info = NULL;
-- bool allow_double_reduc = true;
-+ auto_vec<gphi *, 4> double_reduc_phis;
-+ auto_vec<gimple *, 4> double_reduc_stmts;
-
- if (!stmt_vec_info_vec.exists ())
- init_stmt_vec_info_vec ();
-@@ -2542,44 +2542,56 @@
-
- if (double_reduc)
- {
-- if (!allow_double_reduc
-- || loop->inner->inner != NULL)
-+ if (loop->inner->inner != NULL)
- continue;
-
-- if (!simple_inner_loop_info)
-- {
-- simple_inner_loop_info = vect_analyze_loop_form (loop->inner);
-- if (!simple_inner_loop_info)
-- {
-- allow_double_reduc = false;
-- continue;
-- }
-- }
--
-- use_operand_p use_p;
-- gimple *inner_stmt;
-- bool single_use_p = single_imm_use (res, &use_p, &inner_stmt);
-- gcc_assert (single_use_p);
-- if (gimple_code (inner_stmt) != GIMPLE_PHI)
-- continue;
-- gphi *inner_phi = as_a <gphi *> (inner_stmt);
-- if (simple_iv (loop->inner, loop->inner, PHI_RESULT (inner_phi),
-- &iv, true))
-- continue;
--
-- gimple *inner_reduc_stmt
-- = vect_force_simple_reduction (simple_inner_loop_info, inner_phi,
-- true, &double_reduc, true);
-- gcc_assert (!double_reduc);
-- if (inner_reduc_stmt == NULL)
-- continue;
-+ double_reduc_phis.safe_push (phi);
-+ double_reduc_stmts.safe_push (reduc_stmt);
-+ continue;
- }
-
- build_new_reduction (reduction_list, reduc_stmt, phi);
- }
- destroy_loop_vec_info (simple_loop_info, true);
-- destroy_loop_vec_info (simple_inner_loop_info, true);
-
-+ if (!double_reduc_phis.is_empty ())
-+ {
-+ simple_loop_info = vect_analyze_loop_form (loop->inner);
-+ if (simple_loop_info)
-+ {
-+ gphi *phi;
-+ unsigned int i;
+ gfc_expr *var, *start, *end, *step;
+ unsigned short unroll;
++ bool ivdep;
++ bool vector;
++ bool novector;
+ }
+ gfc_iterator;
+
+@@ -2783,6 +2786,9 @@
+ bool gfc_in_match_data (void);
+ match gfc_match_char_spec (gfc_typespec *);
+ extern int directive_unroll;
++extern bool directive_ivdep;
++extern bool directive_vector;
++extern bool directive_novector;
+
+ /* SIMD clause enum. */
+ enum gfc_simd_clause
+Index: gcc/fortran/ChangeLog
+===================================================================
+--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,389 @@
++2019-11-08 Tobias Burnus <tobias@codesourcery.com
+
-+ FOR_EACH_VEC_ELT (double_reduc_phis, i, phi)
-+ {
-+ affine_iv iv;
-+ tree res = PHI_RESULT (phi);
-+ bool double_reduc;
-+
-+ use_operand_p use_p;
-+ gimple *inner_stmt;
-+ bool single_use_p = single_imm_use (res, &use_p, &inner_stmt);
-+ gcc_assert (single_use_p);
-+ if (gimple_code (inner_stmt) != GIMPLE_PHI)
-+ continue;
-+ gphi *inner_phi = as_a <gphi *> (inner_stmt);
-+ if (simple_iv (loop->inner, loop->inner, PHI_RESULT (inner_phi),
-+ &iv, true))
-+ continue;
++ Backport from mainline
++ 2019-11-08 Tobias Burnus <tobias@codesourcery.com
+
-+ gimple *inner_reduc_stmt
-+ = vect_force_simple_reduction (simple_loop_info, inner_phi,
-+ true, &double_reduc, true);
-+ gcc_assert (!double_reduc);
-+ if (inner_reduc_stmt == NULL)
-+ continue;
++ PR fortran/91253
++ * scanner.c (skip_fixed_comments): Move comment
++ lines to next if block.
++ (gfc_next_char_literal): Fix continue_line setting.
++ (get_file): Remove bogus ATTRIBUTE_UNUSED.
+
-+ build_new_reduction (reduction_list, double_reduc_stmts[i], phi);
-+ }
-+ destroy_loop_vec_info (simple_loop_info, true);
-+ }
-+ }
++2019-11-05 Tobias Burnus <tobias@codesourcery.com>
+
- gather_done:
- /* Release the claim on gimple_uid. */
- free_stmt_vec_info_vec ();
-Index: gcc/ada/socket.c
-===================================================================
---- a/src/gcc/ada/socket.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/socket.c (.../branches/gcc-6-branch)
-@@ -202,7 +202,7 @@
- struct hostent *rh;
- int ri;
-
--#if defined(__linux__) || defined(__GLIBC__)
-+#if defined(__linux__) || defined(__GLIBC__) || defined(__rtems__)
- (void) gethostbyaddr_r (addr, len, type, ret, buf, buflen, &rh, h_errnop);
- #else
- rh = gethostbyaddr_r (addr, len, type, ret, buf, buflen, h_errnop);
-Index: gcc/ada/system-linux-ppc.ads
-===================================================================
---- a/src/gcc/ada/system-linux-ppc.ads (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/system-linux-ppc.ads (.../branches/gcc-6-branch)
-@@ -7,7 +7,7 @@
- -- S p e c --
- -- (GNU-Linux/PPC Version) --
- -- --
---- Copyright (C) 1992-2016, Free Software Foundation, Inc. --
-+-- Copyright (C) 1992-2017, Free Software Foundation, Inc. --
- -- --
- -- This specification is derived from the Ada Reference Manual for use with --
- -- GNAT. The copyright notice above, and the license provisions that follow --
-@@ -89,7 +89,8 @@
- -- Other System-Dependent Declarations
-
- type Bit_Order is (High_Order_First, Low_Order_First);
-- Default_Bit_Order : constant Bit_Order := High_Order_First;
-+ Default_Bit_Order : constant Bit_Order :=
-+ Bit_Order'Val (Standard'Default_Bit_Order);
- pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
-
- -- Priority-related Declarations (RM D.1)
-Index: gcc/ada/system-linux-aarch64-ilp32.ads
-===================================================================
---- a/src/gcc/ada/system-linux-aarch64-ilp32.ads (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/system-linux-aarch64-ilp32.ads (.../branches/gcc-6-branch)
-@@ -0,0 +1,157 @@
-+------------------------------------------------------------------------------
-+-- --
-+-- GNAT RUN-TIME COMPONENTS --
-+-- --
-+-- S Y S T E M --
-+-- --
-+-- S p e c --
-+-- (GNU-Linux/ARM Version) --
-+-- --
-+-- Copyright (C) 1992-2017, Free Software Foundation, Inc. --
-+-- --
-+-- This specification is derived from the Ada Reference Manual for use with --
-+-- GNAT. The copyright notice above, and the license provisions that follow --
-+-- apply solely to the contents of the part following the private keyword. --
-+-- --
-+-- GNAT is free software; you can redistribute it and/or modify it under --
-+-- terms of the GNU General Public License as published by the Free Soft- --
-+-- ware Foundation; either version 3, or (at your option) any later ver- --
-+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
-+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
-+-- or FITNESS FOR A PARTICULAR PURPOSE. --
-+-- --
-+-- As a special exception under Section 7 of GPL version 3, you are granted --
-+-- additional permissions described in the GCC Runtime Library Exception, --
-+-- version 3.1, as published by the Free Software Foundation. --
-+-- --
-+-- You should have received a copy of the GNU General Public License and --
-+-- a copy of the GCC Runtime Library Exception along with this program; --
-+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-+-- <http://www.gnu.org/licenses/>. --
-+-- --
-+-- GNAT was originally developed by the GNAT team at New York University. --
-+-- Extensive contributions were provided by Ada Core Technologies Inc. --
-+-- --
-+------------------------------------------------------------------------------
-+
-+package System is
-+ pragma Pure;
-+ -- Note that we take advantage of the implementation permission to make
-+ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-+ -- 2005, this is Pure in any case (AI-362).
-+
-+ pragma No_Elaboration_Code_All;
-+ -- Allow the use of that restriction in units that WITH this unit
-+
-+ type Name is (SYSTEM_NAME_GNAT);
-+ System_Name : constant Name := SYSTEM_NAME_GNAT;
-+
-+ -- System-Dependent Named Numbers
-+
-+ Min_Int : constant := Long_Long_Integer'First;
-+ Max_Int : constant := Long_Long_Integer'Last;
-+
-+ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size;
-+ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
-+
-+ Max_Base_Digits : constant := Long_Long_Float'Digits;
-+ Max_Digits : constant := Long_Long_Float'Digits;
-+
-+ Max_Mantissa : constant := 63;
-+ Fine_Delta : constant := 2.0 ** (-Max_Mantissa);
-+
-+ Tick : constant := 0.000_001;
-+
-+ -- Storage-related Declarations
-+
-+ type Address is private;
-+ pragma Preelaborable_Initialization (Address);
-+ Null_Address : constant Address;
-+
-+ Storage_Unit : constant := 8;
-+ Word_Size : constant := 32;
-+ Memory_Size : constant := 2 ** Word_Size;
-+
-+ -- Address comparison
-+
-+ function "<" (Left, Right : Address) return Boolean;
-+ function "<=" (Left, Right : Address) return Boolean;
-+ function ">" (Left, Right : Address) return Boolean;
-+ function ">=" (Left, Right : Address) return Boolean;
-+ function "=" (Left, Right : Address) return Boolean;
-+
-+ pragma Import (Intrinsic, "<");
-+ pragma Import (Intrinsic, "<=");
-+ pragma Import (Intrinsic, ">");
-+ pragma Import (Intrinsic, ">=");
-+ pragma Import (Intrinsic, "=");
-+
-+ -- Other System-Dependent Declarations
-+
-+ type Bit_Order is (High_Order_First, Low_Order_First);
-+ Default_Bit_Order : constant Bit_Order :=
-+ Bit_Order'Val (Standard'Default_Bit_Order);
-+ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
-+
-+ -- Priority-related Declarations (RM D.1)
-+
-+ -- 0 .. 98 corresponds to the system priority range 1 .. 99.
-+ --
-+ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use
-+ -- of the entire range provided by the system.
-+ --
-+ -- If the scheduling policy is SCHED_OTHER the only valid system priority
-+ -- is 1 and other values are simply ignored.
-+
-+ Max_Priority : constant Positive := 97;
-+ Max_Interrupt_Priority : constant Positive := 98;
-+
-+ subtype Any_Priority is Integer range 0 .. 98;
-+ subtype Priority is Any_Priority range 0 .. 97;
-+ subtype Interrupt_Priority is Any_Priority range 98 .. 98;
-+
-+ Default_Priority : constant Priority := 48;
-+
-+private
-+
-+ type Address is mod Memory_Size;
-+ Null_Address : constant Address := 0;
-+
-+ --------------------------------------
-+ -- System Implementation Parameters --
-+ --------------------------------------
-+
-+ -- These parameters provide information about the target that is used
-+ -- by the compiler. They are in the private part of System, where they
-+ -- can be accessed using the special circuitry in the Targparm unit
-+ -- whose source should be consulted for more detailed descriptions
-+ -- of the individual switch values.
-+
-+ Backend_Divide_Checks : constant Boolean := False;
-+ Backend_Overflow_Checks : constant Boolean := True;
-+ Command_Line_Args : constant Boolean := True;
-+ Configurable_Run_Time : constant Boolean := False;
-+ Denorm : constant Boolean := True;
-+ Duration_32_Bits : constant Boolean := False;
-+ Exit_Status_Supported : constant Boolean := True;
-+ Fractional_Fixed_Ops : constant Boolean := False;
-+ Frontend_Layout : constant Boolean := False;
-+ Machine_Overflows : constant Boolean := False;
-+ Machine_Rounds : constant Boolean := True;
-+ Preallocated_Stacks : constant Boolean := False;
-+ Signed_Zeros : constant Boolean := True;
-+ Stack_Check_Default : constant Boolean := False;
-+ Stack_Check_Probes : constant Boolean := True;
-+ Stack_Check_Limits : constant Boolean := False;
-+ Support_Aggregates : constant Boolean := True;
-+ Support_Atomic_Primitives : constant Boolean := True;
-+ Support_Composite_Assign : constant Boolean := True;
-+ Support_Composite_Compare : constant Boolean := True;
-+ Support_Long_Shifts : constant Boolean := True;
-+ Always_Compatible_Rep : constant Boolean := False;
-+ Suppress_Standard_Library : constant Boolean := False;
-+ Use_Ada_Main_Program_Name : constant Boolean := False;
-+ Frontend_Exceptions : constant Boolean := False;
-+ ZCX_By_Default : constant Boolean := True;
-+
-+end System;
-Index: gcc/ada/ChangeLog
-===================================================================
---- a/src/gcc/ada/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,55 @@
-+2017-03-28 Andreas Schwab <schwab@suse.de>
++ PR fortran/92208
++ Backport from mainline
++ 2019-10-31 Tobias Burnus <tobias@codesourcery.com>
+
-+ Backport from trunk
++ PR fortran/92277
++ * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Fix DECL_ARTIFICIAL
++ checking.
+
-+ 2017-03-28 Andreas Schwab <schwab@suse.de>
++2019-11-04 Tobias Burnus <tobias@codesourcery.com>
+
-+ PR ada/80117
-+ * system-linux-aarch64-ilp32.ads: New file.
-+ * gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS_COMMON): Rename
-+ from LIBGNAT_TARGET_PAIRS.
-+ (LIBGNAT_TARGET_PAIRS_32, LIBGNAT_TARGET_PAIRS_64): Define.
-+ (LIBGNAT_TARGET_PAIRS): Use LIBGNAT_TARGET_PAIRS_COMMON, and
-+ LIBGNAT_TARGET_PAIRS_64 or LIBGNAT_TARGET_PAIRS_32 for -mabi=lp64
-+ or -mabi=ilp32, resp.
++ Backport from mainline
++ 2019-10-30 Tobias Burnus <tobias@codesourcery.com>
+
-+2017-03-08 Thanassis Tsiodras <ttsiodras@gmail.com>
++ PR fortran/92208
++ * trans-array.c (gfc_conv_array_parameter): Only copy
++ string-length backend_decl if expression is not a function.
+
-+ PR ada/79903
-+ * socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__.
++2019-11-04 Tobias Burnus <tobias@codesourcery.com>
+
-+2017-03-08 Eric Botcazou <ebotcazou@adacore.com>
++ Backport from mainline
++ 2019-10-31 Tobias Burnus <tobias@codesourcery.com>
+
-+ PR ada/79945
-+ * system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting.
++ PR fortran/92284.
++ * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Free CFI descriptor
++ at the end; partial revised revert of Rev. 277502.
+
-+2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++2019-10-28  Paul Thomas  <pault@gcc.gnu.org>
+
-+ * gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper
-+ around a justified modular type if it doesn't have the same scalar
-+ storage order as the enclosing record type.
++ Backport from trunk
++ PR fortran/91926
++ * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the
++ assignment of the attribute field to account correctly for an
++ assumed shape dummy. Assign separately to the gfc and cfi
++ descriptors since the atribute can be different. Add branch to
++ correctly handle missing optional dummies.
+
-+2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++2019-10-28 Tobias Burnus <tobias@codesourcery.com>
+
-+ * gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
-+ of boolean rvalues to function calls.
++ Backport from mainline
++ 2019-10-28 Tobias Burnus <tobias@codesourcery.com>
+
-+2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++ PR fortran/91863
++ * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Don't free data
++ memory as that's done on the Fortran side.
++ (gfc_conv_procedure_call): Handle void* pointers from
++ gfc_conv_gfc_desc_to_cfi_desc.
+
-+ * gcc-interface/utils.c (fold_bit_position): New function.
-+ (rest_of_record_type_compilation): Call it instead of bit_position to
-+ compute the field position and remove the call to remove_conversions.
-+ (compute_related_constant): Factor out the multiplication in both
-+ operands, if any, and streamline the final test.
++2019-10-27 Paul Thomas <pault@gcc.gnu.org>
+
-+2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++ Backport from mainline
++ PR fortran/86248
++ * resolve.c (flag_fn_result_spec): Correct a typo before the
++ function declaration.
++ * trans-decl.c (gfc_sym_identifier): Boost the length of 'name'
++ to allow for all variants. Simplify the code by using a pointer
++ to the symbol's proc_name and taking the return out of each of
++ the conditional branches. Allow symbols with fn_result_spec set
++ that do not come from a procedure namespace and have a module
++ name to go through the non-fn_result_spec branch.
+
-+ * gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.
++2019-10-22 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-02-12 John Marino <gnugcc@marino.st>
++ PR fortran/92174
++ * decl.c (attr_decl1): Move check for F2018:C822 from here ...
++ * array.c (gfc_set_array_spec): ... to here.
+
-+ * gcc-interface/Makefile.in: Support aarch64-freebsd.
++2019-10-18 Steven G. Kargl <kargl@gcc.gnu.org>
+
- 2016-12-21 Release Manager
-
- * GCC 6.3.0 released.
-Index: gcc/ada/gcc-interface/utils.c
-===================================================================
---- a/src/gcc/ada/gcc-interface/utils.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/gcc-interface/utils.c (.../branches/gcc-6-branch)
-@@ -238,6 +238,7 @@
- hash_table<pad_type_hasher> *pad_type_hash_table;
-
- static tree merge_sizes (tree, tree, tree, bool, bool);
-+static tree fold_bit_position (const_tree);
- static tree compute_related_constant (tree, tree);
- static tree split_plus (tree, tree *);
- static tree float_type_for_precision (int, machine_mode);
-@@ -2021,15 +2022,11 @@
- {
- tree field_type = TREE_TYPE (old_field);
- tree field_name = DECL_NAME (old_field);
-- tree curpos = bit_position (old_field);
-+ tree curpos = fold_bit_position (old_field);
- tree pos, new_field;
- bool var = false;
- unsigned int align = 0;
-
-- /* We're going to do some pattern matching below so remove as many
-- conversions as possible. */
-- curpos = remove_conversions (curpos, true);
--
- /* See how the position was modified from the last position.
-
- There are two basic cases we support: a value was added
-@@ -2126,7 +2123,7 @@
- is when there are other components at fixed positions after
- it (meaning there was a rep clause for every field) and we
- want to be able to encode them. */
-- last_pos = size_binop (PLUS_EXPR, bit_position (old_field),
-+ last_pos = size_binop (PLUS_EXPR, curpos,
- (TREE_CODE (TREE_TYPE (old_field))
- == QUAL_UNION_TYPE)
- ? bitsize_zero_node
-@@ -2181,6 +2178,23 @@
- return new_size;
- }
-
-+/* Return the bit position of FIELD, in bits from the start of the record,
-+ and fold it as much as possible. This is a tree of type bitsizetype. */
++ PR fortran/69455
++ * trans-decl.c (generate_local_decl): Avoid misconstructed
++ intrinsic modules in a BLOCK construct.
+
-+static tree
-+fold_bit_position (const_tree field)
-+{
-+ tree offset = DECL_FIELD_OFFSET (field);
-+ if (TREE_CODE (offset) == MULT_EXPR || TREE_CODE (offset) == PLUS_EXPR)
-+ offset = size_binop (TREE_CODE (offset),
-+ fold_convert (bitsizetype, TREE_OPERAND (offset, 0)),
-+ fold_convert (bitsizetype, TREE_OPERAND (offset, 1)));
-+ else
-+ offset = fold_convert (bitsizetype, offset);
-+ return size_binop (PLUS_EXPR, DECL_FIELD_BIT_OFFSET (field),
-+ size_binop (MULT_EXPR, offset, bitsize_unit_node));
-+}
++2019-10-18 Tobias Burnus <tobias@codesourcery.com>
+
- /* Utility function of above to see if OP0 and OP1, both of SIZETYPE, are
- related by the addition of a constant. Return that constant if so. */
-
-@@ -2187,17 +2201,28 @@
- static tree
- compute_related_constant (tree op0, tree op1)
- {
-- tree op0_var, op1_var;
-- tree op0_con = split_plus (op0, &op0_var);
-- tree op1_con = split_plus (op1, &op1_var);
-- tree result = size_binop (MINUS_EXPR, op0_con, op1_con);
-+ tree factor, op0_var, op1_var, op0_cst, op1_cst, result;
-
-+ if (TREE_CODE (op0) == MULT_EXPR
-+ && TREE_CODE (op1) == MULT_EXPR
-+ && TREE_CODE (TREE_OPERAND (op0, 1)) == INTEGER_CST
-+ && TREE_OPERAND (op1, 1) == TREE_OPERAND (op0, 1))
-+ {
-+ factor = TREE_OPERAND (op0, 1);
-+ op0 = TREE_OPERAND (op0, 0);
-+ op1 = TREE_OPERAND (op1, 0);
-+ }
-+ else
-+ factor = NULL_TREE;
++ Backport from mainline
++ 2019-10-18 Tobias Burnus <tobias@codesourcery.com>
+
-+ op0_cst = split_plus (op0, &op0_var);
-+ op1_cst = split_plus (op1, &op1_var);
-+ result = size_binop (MINUS_EXPR, op0_cst, op1_cst);
++ PR fortran/91586
++ * class.c (gfc_find_derived_vtab): Return NULL
++ instead of deref'ing NULL pointer.
+
- if (operand_equal_p (op0_var, op1_var, 0))
-- return result;
-- else if (operand_equal_p (op0, size_binop (PLUS_EXPR, op1_var, result), 0))
-- return result;
-- else
-- return 0;
-+ return factor ? size_binop (MULT_EXPR, factor, result) : result;
++2019-10-17 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ return NULL_TREE;
- }
-
- /* Utility function of above to split a tree OP which may be a sum, into a
-Index: gcc/ada/gcc-interface/Makefile.in
-===================================================================
---- a/src/gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-6-branch)
-@@ -1475,6 +1475,34 @@
- LIBRARY_VERSION := $(LIB_VERSION)
- endif
-
-+# aarch64 FreeBSD
-+ifeq ($(strip $(filter-out %aarch64 freebsd%,$(target_cpu) $(target_os))),)
-+ LIBGNAT_TARGET_PAIRS = \
-+ a-intnam.ads<a-intnam-freebsd.ads \
-+ s-inmaop.adb<s-inmaop-posix.adb \
-+ s-intman.adb<s-intman-posix.adb \
-+ s-mudido.adb<s-mudido-affinity.adb \
-+ s-osinte.adb<s-osinte-freebsd.adb \
-+ s-osinte.ads<s-osinte-freebsd.ads \
-+ s-osprim.adb<s-osprim-posix.adb \
-+ s-taprop.adb<s-taprop-posix.adb \
-+ s-taspri.ads<s-taspri-posix.ads \
-+ s-tpopsp.adb<s-tpopsp-posix.adb \
-+ $(ATOMICS_TARGET_PAIRS) \
-+ $(ATOMICS_BUILTINS_TARGET_PAIRS) \
-+ system.ads<system-freebsd-x86_64.ads
-+
-+ TOOLS_TARGET_PAIRS = \
-+ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
-+ GNATLIB_SHARED = gnatlib-shared-dual
-+
-+ EH_MECHANISM=-gcc
-+ THREADSLIB= -lpthread
-+ GMEM_LIB = gmemlib
-+ LIBRARY_VERSION := $(LIB_VERSION)
-+ MISCLIB = -lutil
-+endif
-+
- # x86 FreeBSD
- ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
- LIBGNAT_TARGET_PAIRS = \
-@@ -1985,7 +2013,7 @@
-
- # AArch64 Linux
- ifeq ($(strip $(filter-out aarch64% linux%,$(target_cpu) $(target_os))),)
-- LIBGNAT_TARGET_PAIRS = \
-+ LIBGNAT_TARGET_PAIRS_COMMON = \
- a-exetim.adb<a-exetim-posix.adb \
- a-exetim.ads<a-exetim-default.ads \
- a-intnam.ads<a-intnam-linux.ads \
-@@ -2005,10 +2033,23 @@
- s-taspri.ads<s-taspri-posix.ads \
- g-sercom.adb<g-sercom-linux.adb \
- $(ATOMICS_TARGET_PAIRS) \
-- $(ATOMICS_BUILTINS_TARGET_PAIRS) \
-+ $(ATOMICS_BUILTINS_TARGET_PAIRS)
-+
-+ LIBGNAT_TARGET_PAIRS_32 = \
-+ system.ads<system-linux-aarch64-ilp32.ads
-+
-+ LIBGNAT_TARGET_PAIRS_64 = \
- system.ads<system-linux-x86_64.ads
- ## ^^ Note the above is a pretty-close placeholder.
-
-+ ifneq (,$(or $(filter aarch64-linux-gnu, $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multiarch)), $(filter ../lib64, $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory))))
-+ LIBGNAT_TARGET_PAIRS = \
-+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
-+ else
-+ LIBGNAT_TARGET_PAIRS = \
-+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
-+ endif
++ PR fortran/83113
++ PR fortran/89943
++ decl.c (gfc_match_function_decl): Ignore duplicate BIND(C) for function
++ declaration in submodule. Implement at check for F2018 C1550.
++ (gfc_match_entry): Use temporary for locus, which allows removal of
++ one gfc_error_now().
++ (gfc_match_subroutine): Ignore duplicate BIND(C) for subroutine
++ declaration in submodule. Implement at check for F2018 C1550.
+
- TOOLS_TARGET_PAIRS = \
- mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
- indepsw.adb<indepsw-gnu.adb
-Index: gcc/ada/gcc-interface/decl.c
-===================================================================
---- a/src/gcc/ada/gcc-interface/decl.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/gcc-interface/decl.c (.../branches/gcc-6-branch)
-@@ -6685,6 +6685,7 @@
- gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed,
- bool definition, bool debug_info_p)
- {
-+ const Entity_Id gnat_record_type = Underlying_Type (Scope (gnat_field));
- const Entity_Id gnat_field_type = Etype (gnat_field);
- const bool is_aliased
- = Is_Aliased (gnat_field);
-@@ -6771,8 +6772,7 @@
- if (Present (Component_Clause (gnat_field)))
- {
- Node_Id gnat_clause = Component_Clause (gnat_field);
-- Entity_Id gnat_parent
-- = Parent_Subtype (Underlying_Type (Scope (gnat_field)));
-+ Entity_Id gnat_parent = Parent_Subtype (gnat_record_type);
-
- gnu_pos = UI_To_gnu (Component_Bit_Offset (gnat_field), bitsizetype);
- gnu_size = validate_size (Esize (gnat_field), gnu_field_type,
-@@ -6891,7 +6891,7 @@
-
- /* If the record has rep clauses and this is the tag field, make a rep
- clause for it as well. */
-- else if (Has_Specified_Layout (Scope (gnat_field))
-+ else if (Has_Specified_Layout (gnat_record_type)
- && Chars (gnat_field) == Name_uTag)
- {
- gnu_pos = bitsize_zero_node;
-@@ -6928,11 +6928,14 @@
- /* If the field's type is justified modular, we would need to remove
- the wrapper to (better) meet the layout requirements. However we
- can do so only if the field is not aliased to preserve the unique
-- layout and if the prescribed size is not greater than that of the
-- packed array to preserve the justification. */
-+ layout, if it has the same storage order as the enclosing record
-+ and if the prescribed size is not greater than that of the packed
-+ array to preserve the justification. */
- if (!needs_strict_alignment
- && TREE_CODE (gnu_field_type) == RECORD_TYPE
- && TYPE_JUSTIFIED_MODULAR_P (gnu_field_type)
-+ && TYPE_REVERSE_STORAGE_ORDER (gnu_field_type)
-+ == Reverse_Storage_Order (gnat_record_type)
- && tree_int_cst_compare (gnu_size, TYPE_ADA_SIZE (gnu_field_type))
- <= 0)
- gnu_field_type = TREE_TYPE (TYPE_FIELDS (gnu_field_type));
-Index: gcc/ada/gcc-interface/trans.c
-===================================================================
---- a/src/gcc/ada/gcc-interface/trans.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ada/gcc-interface/trans.c (.../branches/gcc-6-branch)
-@@ -3600,9 +3600,16 @@
- if (TREE_ADDRESSABLE (ret_val))
- return false;
-
-+ /* For the constrained case, test for overalignment. */
- if (ret_obj && DECL_ALIGN (ret_val) > DECL_ALIGN (ret_obj))
- return false;
-
-+ /* For the unconstrained case, test for bogus initialization. */
-+ if (!ret_obj
-+ && DECL_INITIAL (ret_val)
-+ && TREE_CODE (DECL_INITIAL (ret_val)) == NULL_EXPR)
-+ return false;
++2019-10-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
- return true;
- }
-
-@@ -7696,7 +7703,6 @@
- && (kind == N_Identifier
- || kind == N_Expanded_Name
- || kind == N_Explicit_Dereference
-- || kind == N_Function_Call
- || kind == N_Indexed_Component
- || kind == N_Selected_Component)
- && TREE_CODE (get_base_type (gnu_result_type)) == BOOLEAN_TYPE
-Index: gcc/asan.c
-===================================================================
---- a/src/gcc/asan.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/asan.c (.../branches/gcc-6-branch)
-@@ -587,7 +587,7 @@
- case BUILT_IN_STRLEN:
- source0 = gimple_call_arg (call, 0);
- len = gimple_call_lhs (call);
-- break ;
-+ break;
-
- /* And now the __atomic* and __sync builtins.
- These are handled differently from the classical memory memory
-@@ -594,196 +594,190 @@
- access builtins above. */
-
- case BUILT_IN_ATOMIC_LOAD_1:
-+ is_store = false;
-+ /* FALLTHRU */
-+ case BUILT_IN_SYNC_FETCH_AND_ADD_1:
-+ case BUILT_IN_SYNC_FETCH_AND_SUB_1:
-+ case BUILT_IN_SYNC_FETCH_AND_OR_1:
-+ case BUILT_IN_SYNC_FETCH_AND_AND_1:
-+ case BUILT_IN_SYNC_FETCH_AND_XOR_1:
-+ case BUILT_IN_SYNC_FETCH_AND_NAND_1:
-+ case BUILT_IN_SYNC_ADD_AND_FETCH_1:
-+ case BUILT_IN_SYNC_SUB_AND_FETCH_1:
-+ case BUILT_IN_SYNC_OR_AND_FETCH_1:
-+ case BUILT_IN_SYNC_AND_AND_FETCH_1:
-+ case BUILT_IN_SYNC_XOR_AND_FETCH_1:
-+ case BUILT_IN_SYNC_NAND_AND_FETCH_1:
-+ case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1:
-+ case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1:
-+ case BUILT_IN_SYNC_LOCK_TEST_AND_SET_1:
-+ case BUILT_IN_SYNC_LOCK_RELEASE_1:
-+ case BUILT_IN_ATOMIC_EXCHANGE_1:
-+ case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1:
-+ case BUILT_IN_ATOMIC_STORE_1:
-+ case BUILT_IN_ATOMIC_ADD_FETCH_1:
-+ case BUILT_IN_ATOMIC_SUB_FETCH_1:
-+ case BUILT_IN_ATOMIC_AND_FETCH_1:
-+ case BUILT_IN_ATOMIC_NAND_FETCH_1:
-+ case BUILT_IN_ATOMIC_XOR_FETCH_1:
-+ case BUILT_IN_ATOMIC_OR_FETCH_1:
-+ case BUILT_IN_ATOMIC_FETCH_ADD_1:
-+ case BUILT_IN_ATOMIC_FETCH_SUB_1:
-+ case BUILT_IN_ATOMIC_FETCH_AND_1:
-+ case BUILT_IN_ATOMIC_FETCH_NAND_1:
-+ case BUILT_IN_ATOMIC_FETCH_XOR_1:
-+ case BUILT_IN_ATOMIC_FETCH_OR_1:
-+ access_size = 1;
-+ goto do_atomic;
-+
- case BUILT_IN_ATOMIC_LOAD_2:
-+ is_store = false;
-+ /* FALLTHRU */
-+ case BUILT_IN_SYNC_FETCH_AND_ADD_2:
-+ case BUILT_IN_SYNC_FETCH_AND_SUB_2:
-+ case BUILT_IN_SYNC_FETCH_AND_OR_2:
-+ case BUILT_IN_SYNC_FETCH_AND_AND_2:
-+ case BUILT_IN_SYNC_FETCH_AND_XOR_2:
-+ case BUILT_IN_SYNC_FETCH_AND_NAND_2:
-+ case BUILT_IN_SYNC_ADD_AND_FETCH_2:
-+ case BUILT_IN_SYNC_SUB_AND_FETCH_2:
-+ case BUILT_IN_SYNC_OR_AND_FETCH_2:
-+ case BUILT_IN_SYNC_AND_AND_FETCH_2:
-+ case BUILT_IN_SYNC_XOR_AND_FETCH_2:
-+ case BUILT_IN_SYNC_NAND_AND_FETCH_2:
-+ case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2:
-+ case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2:
-+ case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2:
-+ case BUILT_IN_SYNC_LOCK_RELEASE_2:
-+ case BUILT_IN_ATOMIC_EXCHANGE_2:
-+ case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2:
-+ case BUILT_IN_ATOMIC_STORE_2:
-+ case BUILT_IN_ATOMIC_ADD_FETCH_2:
-+ case BUILT_IN_ATOMIC_SUB_FETCH_2:
-+ case BUILT_IN_ATOMIC_AND_FETCH_2:
-+ case BUILT_IN_ATOMIC_NAND_FETCH_2:
-+ case BUILT_IN_ATOMIC_XOR_FETCH_2:
-+ case BUILT_IN_ATOMIC_OR_FETCH_2:
-+ case BUILT_IN_ATOMIC_FETCH_ADD_2:
-+ case BUILT_IN_ATOMIC_FETCH_SUB_2:
-+ case BUILT_IN_ATOMIC_FETCH_AND_2:
-+ case BUILT_IN_ATOMIC_FETCH_NAND_2:
-+ case BUILT_IN_ATOMIC_FETCH_XOR_2:
-+ case BUILT_IN_ATOMIC_FETCH_OR_2:
-+ access_size = 2;
-+ goto do_atomic;
-+
- case BUILT_IN_ATOMIC_LOAD_4:
-+ is_store = false;
-+ /* FALLTHRU */
-+ case BUILT_IN_SYNC_FETCH_AND_ADD_4:
-+ case BUILT_IN_SYNC_FETCH_AND_SUB_4:
-+ case BUILT_IN_SYNC_FETCH_AND_OR_4:
-+ case BUILT_IN_SYNC_FETCH_AND_AND_4:
-+ case BUILT_IN_SYNC_FETCH_AND_XOR_4:
-+ case BUILT_IN_SYNC_FETCH_AND_NAND_4:
-+ case BUILT_IN_SYNC_ADD_AND_FETCH_4:
-+ case BUILT_IN_SYNC_SUB_AND_FETCH_4:
-+ case BUILT_IN_SYNC_OR_AND_FETCH_4:
-+ case BUILT_IN_SYNC_AND_AND_FETCH_4:
-+ case BUILT_IN_SYNC_XOR_AND_FETCH_4:
-+ case BUILT_IN_SYNC_NAND_AND_FETCH_4:
-+ case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4:
-+ case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4:
-+ case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4:
-+ case BUILT_IN_SYNC_LOCK_RELEASE_4:
-+ case BUILT_IN_ATOMIC_EXCHANGE_4:
-+ case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4:
-+ case BUILT_IN_ATOMIC_STORE_4:
-+ case BUILT_IN_ATOMIC_ADD_FETCH_4:
-+ case BUILT_IN_ATOMIC_SUB_FETCH_4:
-+ case BUILT_IN_ATOMIC_AND_FETCH_4:
-+ case BUILT_IN_ATOMIC_NAND_FETCH_4:
-+ case BUILT_IN_ATOMIC_XOR_FETCH_4:
-+ case BUILT_IN_ATOMIC_OR_FETCH_4:
-+ case BUILT_IN_ATOMIC_FETCH_ADD_4:
-+ case BUILT_IN_ATOMIC_FETCH_SUB_4:
-+ case BUILT_IN_ATOMIC_FETCH_AND_4:
-+ case BUILT_IN_ATOMIC_FETCH_NAND_4:
-+ case BUILT_IN_ATOMIC_FETCH_XOR_4:
-+ case BUILT_IN_ATOMIC_FETCH_OR_4:
-+ access_size = 4;
-+ goto do_atomic;
-+
- case BUILT_IN_ATOMIC_LOAD_8:
-- case BUILT_IN_ATOMIC_LOAD_16:
- is_store = false;
-- /* fall through. */
--
-- case BUILT_IN_SYNC_FETCH_AND_ADD_1:
-- case BUILT_IN_SYNC_FETCH_AND_ADD_2:
-- case BUILT_IN_SYNC_FETCH_AND_ADD_4:
-+ /* FALLTHRU */
- case BUILT_IN_SYNC_FETCH_AND_ADD_8:
-- case BUILT_IN_SYNC_FETCH_AND_ADD_16:
--
-- case BUILT_IN_SYNC_FETCH_AND_SUB_1:
-- case BUILT_IN_SYNC_FETCH_AND_SUB_2:
-- case BUILT_IN_SYNC_FETCH_AND_SUB_4:
- case BUILT_IN_SYNC_FETCH_AND_SUB_8:
-- case BUILT_IN_SYNC_FETCH_AND_SUB_16:
--
-- case BUILT_IN_SYNC_FETCH_AND_OR_1:
-- case BUILT_IN_SYNC_FETCH_AND_OR_2:
-- case BUILT_IN_SYNC_FETCH_AND_OR_4:
- case BUILT_IN_SYNC_FETCH_AND_OR_8:
-- case BUILT_IN_SYNC_FETCH_AND_OR_16:
--
-- case BUILT_IN_SYNC_FETCH_AND_AND_1:
-- case BUILT_IN_SYNC_FETCH_AND_AND_2:
-- case BUILT_IN_SYNC_FETCH_AND_AND_4:
- case BUILT_IN_SYNC_FETCH_AND_AND_8:
-- case BUILT_IN_SYNC_FETCH_AND_AND_16:
--
-- case BUILT_IN_SYNC_FETCH_AND_XOR_1:
-- case BUILT_IN_SYNC_FETCH_AND_XOR_2:
-- case BUILT_IN_SYNC_FETCH_AND_XOR_4:
- case BUILT_IN_SYNC_FETCH_AND_XOR_8:
-- case BUILT_IN_SYNC_FETCH_AND_XOR_16:
--
-- case BUILT_IN_SYNC_FETCH_AND_NAND_1:
-- case BUILT_IN_SYNC_FETCH_AND_NAND_2:
-- case BUILT_IN_SYNC_FETCH_AND_NAND_4:
- case BUILT_IN_SYNC_FETCH_AND_NAND_8:
--
-- case BUILT_IN_SYNC_ADD_AND_FETCH_1:
-- case BUILT_IN_SYNC_ADD_AND_FETCH_2:
-- case BUILT_IN_SYNC_ADD_AND_FETCH_4:
- case BUILT_IN_SYNC_ADD_AND_FETCH_8:
-- case BUILT_IN_SYNC_ADD_AND_FETCH_16:
--
-- case BUILT_IN_SYNC_SUB_AND_FETCH_1:
-- case BUILT_IN_SYNC_SUB_AND_FETCH_2:
-- case BUILT_IN_SYNC_SUB_AND_FETCH_4:
- case BUILT_IN_SYNC_SUB_AND_FETCH_8:
-- case BUILT_IN_SYNC_SUB_AND_FETCH_16:
--
-- case BUILT_IN_SYNC_OR_AND_FETCH_1:
-- case BUILT_IN_SYNC_OR_AND_FETCH_2:
-- case BUILT_IN_SYNC_OR_AND_FETCH_4:
- case BUILT_IN_SYNC_OR_AND_FETCH_8:
-- case BUILT_IN_SYNC_OR_AND_FETCH_16:
--
-- case BUILT_IN_SYNC_AND_AND_FETCH_1:
-- case BUILT_IN_SYNC_AND_AND_FETCH_2:
-- case BUILT_IN_SYNC_AND_AND_FETCH_4:
- case BUILT_IN_SYNC_AND_AND_FETCH_8:
-- case BUILT_IN_SYNC_AND_AND_FETCH_16:
--
-- case BUILT_IN_SYNC_XOR_AND_FETCH_1:
-- case BUILT_IN_SYNC_XOR_AND_FETCH_2:
-- case BUILT_IN_SYNC_XOR_AND_FETCH_4:
- case BUILT_IN_SYNC_XOR_AND_FETCH_8:
-- case BUILT_IN_SYNC_XOR_AND_FETCH_16:
--
-- case BUILT_IN_SYNC_NAND_AND_FETCH_1:
-- case BUILT_IN_SYNC_NAND_AND_FETCH_2:
-- case BUILT_IN_SYNC_NAND_AND_FETCH_4:
- case BUILT_IN_SYNC_NAND_AND_FETCH_8:
-+ case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8:
-+ case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8:
-+ case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8:
-+ case BUILT_IN_SYNC_LOCK_RELEASE_8:
-+ case BUILT_IN_ATOMIC_EXCHANGE_8:
-+ case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8:
-+ case BUILT_IN_ATOMIC_STORE_8:
-+ case BUILT_IN_ATOMIC_ADD_FETCH_8:
-+ case BUILT_IN_ATOMIC_SUB_FETCH_8:
-+ case BUILT_IN_ATOMIC_AND_FETCH_8:
-+ case BUILT_IN_ATOMIC_NAND_FETCH_8:
-+ case BUILT_IN_ATOMIC_XOR_FETCH_8:
-+ case BUILT_IN_ATOMIC_OR_FETCH_8:
-+ case BUILT_IN_ATOMIC_FETCH_ADD_8:
-+ case BUILT_IN_ATOMIC_FETCH_SUB_8:
-+ case BUILT_IN_ATOMIC_FETCH_AND_8:
-+ case BUILT_IN_ATOMIC_FETCH_NAND_8:
-+ case BUILT_IN_ATOMIC_FETCH_XOR_8:
-+ case BUILT_IN_ATOMIC_FETCH_OR_8:
-+ access_size = 8;
-+ goto do_atomic;
-
-- case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1:
-- case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2:
-- case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4:
-- case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8:
-+ case BUILT_IN_ATOMIC_LOAD_16:
-+ is_store = false;
-+ /* FALLTHRU */
-+ case BUILT_IN_SYNC_FETCH_AND_ADD_16:
-+ case BUILT_IN_SYNC_FETCH_AND_SUB_16:
-+ case BUILT_IN_SYNC_FETCH_AND_OR_16:
-+ case BUILT_IN_SYNC_FETCH_AND_AND_16:
-+ case BUILT_IN_SYNC_FETCH_AND_XOR_16:
-+ case BUILT_IN_SYNC_FETCH_AND_NAND_16:
-+ case BUILT_IN_SYNC_ADD_AND_FETCH_16:
-+ case BUILT_IN_SYNC_SUB_AND_FETCH_16:
-+ case BUILT_IN_SYNC_OR_AND_FETCH_16:
-+ case BUILT_IN_SYNC_AND_AND_FETCH_16:
-+ case BUILT_IN_SYNC_XOR_AND_FETCH_16:
-+ case BUILT_IN_SYNC_NAND_AND_FETCH_16:
- case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16:
--
-- case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1:
-- case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2:
-- case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4:
-- case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8:
- case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16:
--
-- case BUILT_IN_SYNC_LOCK_TEST_AND_SET_1:
-- case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2:
-- case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4:
-- case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8:
- case BUILT_IN_SYNC_LOCK_TEST_AND_SET_16:
--
-- case BUILT_IN_SYNC_LOCK_RELEASE_1:
-- case BUILT_IN_SYNC_LOCK_RELEASE_2:
-- case BUILT_IN_SYNC_LOCK_RELEASE_4:
-- case BUILT_IN_SYNC_LOCK_RELEASE_8:
- case BUILT_IN_SYNC_LOCK_RELEASE_16:
--
-- case BUILT_IN_ATOMIC_EXCHANGE_1:
-- case BUILT_IN_ATOMIC_EXCHANGE_2:
-- case BUILT_IN_ATOMIC_EXCHANGE_4:
-- case BUILT_IN_ATOMIC_EXCHANGE_8:
- case BUILT_IN_ATOMIC_EXCHANGE_16:
--
-- case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1:
-- case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2:
-- case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4:
-- case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8:
- case BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16:
--
-- case BUILT_IN_ATOMIC_STORE_1:
-- case BUILT_IN_ATOMIC_STORE_2:
-- case BUILT_IN_ATOMIC_STORE_4:
-- case BUILT_IN_ATOMIC_STORE_8:
- case BUILT_IN_ATOMIC_STORE_16:
--
-- case BUILT_IN_ATOMIC_ADD_FETCH_1:
-- case BUILT_IN_ATOMIC_ADD_FETCH_2:
-- case BUILT_IN_ATOMIC_ADD_FETCH_4:
-- case BUILT_IN_ATOMIC_ADD_FETCH_8:
- case BUILT_IN_ATOMIC_ADD_FETCH_16:
--
-- case BUILT_IN_ATOMIC_SUB_FETCH_1:
-- case BUILT_IN_ATOMIC_SUB_FETCH_2:
-- case BUILT_IN_ATOMIC_SUB_FETCH_4:
-- case BUILT_IN_ATOMIC_SUB_FETCH_8:
- case BUILT_IN_ATOMIC_SUB_FETCH_16:
--
-- case BUILT_IN_ATOMIC_AND_FETCH_1:
-- case BUILT_IN_ATOMIC_AND_FETCH_2:
-- case BUILT_IN_ATOMIC_AND_FETCH_4:
-- case BUILT_IN_ATOMIC_AND_FETCH_8:
- case BUILT_IN_ATOMIC_AND_FETCH_16:
--
-- case BUILT_IN_ATOMIC_NAND_FETCH_1:
-- case BUILT_IN_ATOMIC_NAND_FETCH_2:
-- case BUILT_IN_ATOMIC_NAND_FETCH_4:
-- case BUILT_IN_ATOMIC_NAND_FETCH_8:
- case BUILT_IN_ATOMIC_NAND_FETCH_16:
--
-- case BUILT_IN_ATOMIC_XOR_FETCH_1:
-- case BUILT_IN_ATOMIC_XOR_FETCH_2:
-- case BUILT_IN_ATOMIC_XOR_FETCH_4:
-- case BUILT_IN_ATOMIC_XOR_FETCH_8:
- case BUILT_IN_ATOMIC_XOR_FETCH_16:
--
-- case BUILT_IN_ATOMIC_OR_FETCH_1:
-- case BUILT_IN_ATOMIC_OR_FETCH_2:
-- case BUILT_IN_ATOMIC_OR_FETCH_4:
-- case BUILT_IN_ATOMIC_OR_FETCH_8:
- case BUILT_IN_ATOMIC_OR_FETCH_16:
--
-- case BUILT_IN_ATOMIC_FETCH_ADD_1:
-- case BUILT_IN_ATOMIC_FETCH_ADD_2:
-- case BUILT_IN_ATOMIC_FETCH_ADD_4:
-- case BUILT_IN_ATOMIC_FETCH_ADD_8:
- case BUILT_IN_ATOMIC_FETCH_ADD_16:
--
-- case BUILT_IN_ATOMIC_FETCH_SUB_1:
-- case BUILT_IN_ATOMIC_FETCH_SUB_2:
-- case BUILT_IN_ATOMIC_FETCH_SUB_4:
-- case BUILT_IN_ATOMIC_FETCH_SUB_8:
- case BUILT_IN_ATOMIC_FETCH_SUB_16:
--
-- case BUILT_IN_ATOMIC_FETCH_AND_1:
-- case BUILT_IN_ATOMIC_FETCH_AND_2:
-- case BUILT_IN_ATOMIC_FETCH_AND_4:
-- case BUILT_IN_ATOMIC_FETCH_AND_8:
- case BUILT_IN_ATOMIC_FETCH_AND_16:
--
-- case BUILT_IN_ATOMIC_FETCH_NAND_1:
-- case BUILT_IN_ATOMIC_FETCH_NAND_2:
-- case BUILT_IN_ATOMIC_FETCH_NAND_4:
-- case BUILT_IN_ATOMIC_FETCH_NAND_8:
- case BUILT_IN_ATOMIC_FETCH_NAND_16:
--
-- case BUILT_IN_ATOMIC_FETCH_XOR_1:
-- case BUILT_IN_ATOMIC_FETCH_XOR_2:
-- case BUILT_IN_ATOMIC_FETCH_XOR_4:
-- case BUILT_IN_ATOMIC_FETCH_XOR_8:
- case BUILT_IN_ATOMIC_FETCH_XOR_16:
--
-- case BUILT_IN_ATOMIC_FETCH_OR_1:
-- case BUILT_IN_ATOMIC_FETCH_OR_2:
-- case BUILT_IN_ATOMIC_FETCH_OR_4:
-- case BUILT_IN_ATOMIC_FETCH_OR_8:
- case BUILT_IN_ATOMIC_FETCH_OR_16:
-+ access_size = 16;
-+ /* FALLTHRU */
-+ do_atomic:
- {
- dest = gimple_call_arg (call, 0);
- /* DEST represents the address of a memory location.
-@@ -790,15 +784,11 @@
- instrument_derefs wants the memory location, so lets
- dereference the address DEST before handing it to
- instrument_derefs. */
-- if (TREE_CODE (dest) == ADDR_EXPR)
-- dest = TREE_OPERAND (dest, 0);
-- else if (TREE_CODE (dest) == SSA_NAME || TREE_CODE (dest) == INTEGER_CST)
-- dest = build2 (MEM_REF, TREE_TYPE (TREE_TYPE (dest)),
-- dest, build_int_cst (TREE_TYPE (dest), 0));
-- else
-- gcc_unreachable ();
--
-- access_size = int_size_in_bytes (TREE_TYPE (dest));
-+ tree type = build_nonstandard_integer_type (access_size
-+ * BITS_PER_UNIT, 1);
-+ dest = build2 (MEM_REF, type, dest,
-+ build_int_cst (build_pointer_type (char_type_node), 0));
-+ break;
- }
-
- default:
-@@ -1801,7 +1791,8 @@
- tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1));
- instrument_derefs (iter, build3 (COMPONENT_REF, TREE_TYPE (repr),
- TREE_OPERAND (t, 0), repr,
-- NULL_TREE), location, is_store);
-+ TREE_OPERAND (t, 2)),
-+ location, is_store);
- return;
- }
-
-@@ -2275,7 +2266,11 @@
- CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE,
- fold_convert (const_ptr_type_node, module_name_cst));
- varpool_node *vnode = varpool_node::get (decl);
-- int has_dynamic_init = vnode ? vnode->dynamically_initialized : 0;
-+ int has_dynamic_init = 0;
-+ /* FIXME: Enable initialization order fiasco detection in LTO mode once
-+ proper fix for PR 79061 will be applied. */
-+ if (!in_lto_p)
-+ has_dynamic_init = vnode ? vnode->dynamically_initialized : 0;
- CONSTRUCTOR_APPEND_ELT (vinner, NULL_TREE,
- build_int_cst (uptr, has_dynamic_init));
- tree locptr = NULL_TREE;
-Index: gcc/lra-remat.c
-===================================================================
---- a/src/gcc/lra-remat.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/lra-remat.c (.../branches/gcc-6-branch)
-@@ -1116,6 +1116,7 @@
- static bool
- do_remat (void)
- {
-+ unsigned regno;
- rtx_insn *insn;
- basic_block bb;
- bitmap_head avail_cands;
-@@ -1123,12 +1124,21 @@
- bool changed_p = false;
- /* Living hard regs and hard registers of living pseudos. */
- HARD_REG_SET live_hard_regs;
-+ bitmap_iterator bi;
-
- bitmap_initialize (&avail_cands, &reg_obstack);
- bitmap_initialize (&active_cands, &reg_obstack);
- FOR_EACH_BB_FN (bb, cfun)
- {
-- REG_SET_TO_HARD_REG_SET (live_hard_regs, df_get_live_out (bb));
-+ CLEAR_HARD_REG_SET (live_hard_regs);
-+ EXECUTE_IF_SET_IN_BITMAP (df_get_live_in (bb), 0, regno, bi)
-+ {
-+ int hard_regno = regno < FIRST_PSEUDO_REGISTER
-+ ? regno
-+ : reg_renumber[regno];
-+ if (hard_regno >= 0)
-+ SET_HARD_REG_BIT (live_hard_regs, hard_regno);
-+ }
- bitmap_and (&avail_cands, &get_remat_bb_data (bb)->avin_cands,
- &get_remat_bb_data (bb)->livein_cands);
- /* Activating insns are always in the same block as their corresponding
-Index: gcc/tree-eh.c
-===================================================================
---- a/src/gcc/tree-eh.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-eh.c (.../branches/gcc-6-branch)
-@@ -2513,7 +2513,8 @@
-
- if (TREE_CODE_CLASS (op) != tcc_comparison
- && TREE_CODE_CLASS (op) != tcc_unary
-- && TREE_CODE_CLASS (op) != tcc_binary)
-+ && TREE_CODE_CLASS (op) != tcc_binary
-+ && op != FMA_EXPR)
- return false;
-
- return operation_could_trap_helper_p (op, fp_operation, honor_trapv,
-@@ -2725,9 +2726,9 @@
- an assignment or a conditional) may throw. */
-
- static bool
--stmt_could_throw_1_p (gimple *stmt)
-+stmt_could_throw_1_p (gassign *stmt)
- {
-- enum tree_code code = gimple_expr_code (stmt);
-+ enum tree_code code = gimple_assign_rhs_code (stmt);
- bool honor_nans = false;
- bool honor_snans = false;
- bool fp_operation = false;
-@@ -2738,13 +2739,11 @@
-
- if (TREE_CODE_CLASS (code) == tcc_comparison
- || TREE_CODE_CLASS (code) == tcc_unary
-- || TREE_CODE_CLASS (code) == tcc_binary)
-+ || TREE_CODE_CLASS (code) == tcc_binary
-+ || code == FMA_EXPR)
- {
-- if (is_gimple_assign (stmt)
-- && TREE_CODE_CLASS (code) == tcc_comparison)
-+ if (TREE_CODE_CLASS (code) == tcc_comparison)
- t = TREE_TYPE (gimple_assign_rhs1 (stmt));
-- else if (gimple_code (stmt) == GIMPLE_COND)
-- t = TREE_TYPE (gimple_cond_lhs (stmt));
- else
- t = gimple_expr_type (stmt);
- fp_operation = FLOAT_TYPE_P (t);
-@@ -2757,10 +2756,14 @@
- honor_trapv = true;
- }
-
-+ /* First check the LHS. */
-+ if (tree_could_trap_p (gimple_assign_lhs (stmt)))
-+ return true;
++ PR fortran/91715
++ * decl.c (gfc_match_prefix): If matching a type-spec returns an error,
++ it's an error so re-act correctly.
+
- /* Check if the main expression may trap. */
-- t = is_gimple_assign (stmt) ? gimple_assign_rhs2 (stmt) : NULL;
- ret = operation_could_trap_helper_p (code, fp_operation, honor_trapv,
-- honor_nans, honor_snans, t,
-+ honor_nans, honor_snans,
-+ gimple_assign_rhs2 (stmt),
- &handled);
- if (handled)
- return ret;
-@@ -2767,7 +2770,7 @@
-
- /* If the expression does not trap, see if any of the individual operands may
- trap. */
-- for (i = 0; i < gimple_num_ops (stmt); i++)
-+ for (i = 1; i < gimple_num_ops (stmt); i++)
- if (tree_could_trap_p (gimple_op (stmt, i)))
- return true;
-
-@@ -2793,11 +2796,22 @@
- case GIMPLE_CALL:
- return !gimple_call_nothrow_p (as_a <gcall *> (stmt));
-
-+ case GIMPLE_COND:
-+ {
-+ if (!cfun->can_throw_non_call_exceptions)
-+ return false;
-+ gcond *cond = as_a <gcond *> (stmt);
-+ tree lhs = gimple_cond_lhs (cond);
-+ return operation_could_trap_p (gimple_cond_code (cond),
-+ FLOAT_TYPE_P (TREE_TYPE (lhs)),
-+ false, NULL_TREE);
-+ }
++2019-10-11 Steven G. Kargl <kargl@gcc.gnu.org>
+
- case GIMPLE_ASSIGN:
-- case GIMPLE_COND:
-- if (!cfun->can_throw_non_call_exceptions)
-+ if (!cfun->can_throw_non_call_exceptions
-+ || gimple_clobber_p (stmt))
- return false;
-- return stmt_could_throw_1_p (stmt);
-+ return stmt_could_throw_1_p (as_a <gassign *> (stmt));
-
- case GIMPLE_ASM:
- if (!cfun->can_throw_non_call_exceptions)
-Index: gcc/fortran/openmp.c
-===================================================================
---- a/src/gcc/fortran/openmp.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/openmp.c (.../branches/gcc-6-branch)
-@@ -3530,6 +3530,11 @@
- else
- resolve_oacc_data_clauses (n->sym, n->where, name);
- }
-+ else if (list != OMP_CLAUSE_DEPEND
-+ && n->sym->as
-+ && n->sym->as->type == AS_ASSUMED_SIZE)
-+ gfc_error ("Assumed size array %qs in %s clause at %L",
-+ n->sym->name, name, &n->where);
- }
-
- if (list != OMP_LIST_DEPEND)
-Index: gcc/fortran/trans-expr.c
-===================================================================
---- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-6-branch)
-@@ -1898,8 +1898,11 @@
- &expr->where);
- }
-
-- caf_decl = expr->symtree->n.sym->backend_decl;
-- gcc_assert (caf_decl);
-+ /* Make sure the backend_decl is present before accessing it. */
-+ caf_decl = expr->symtree->n.sym->backend_decl == NULL_TREE
-+ ? gfc_get_symbol_decl (expr->symtree->n.sym)
-+ : expr->symtree->n.sym->backend_decl;
-+
- if (expr->symtree->n.sym->ts.type == BT_CLASS)
- caf_decl = gfc_class_data_get (caf_decl);
- if (expr->symtree->n.sym->attr.codimension)
-Index: gcc/fortran/symbol.c
-===================================================================
---- a/src/gcc/fortran/symbol.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/symbol.c (.../branches/gcc-6-branch)
-@@ -464,8 +464,13 @@
- }
- }
-
-- if (attr->dummy && ((attr->function || attr->subroutine) &&
-- gfc_current_state () == COMP_CONTAINS))
-+ /* The copying of procedure dummy arguments for module procedures in
-+ a submodule occur whilst the current state is COMP_CONTAINS. It
-+ is necessary, therefore, to let this through. */
-+ if (attr->dummy
-+ && (attr->function || attr->subroutine)
-+ && gfc_current_state () == COMP_CONTAINS
-+ && !(gfc_new_block && gfc_new_block->abr_modproc_decl))
- gfc_error_now ("internal procedure %qs at %L conflicts with "
- "DUMMY argument", name, where);
-
-@@ -1587,6 +1592,13 @@
- if (attr->flavor == f && f == FL_VARIABLE)
- return true;
-
-+ /* Copying a procedure dummy argument for a module procedure in a
-+ submodule results in the flavor being copied and would result in
-+ an error without this. */
-+ if (gfc_new_block && gfc_new_block->abr_modproc_decl
-+ && attr->flavor == f && f == FL_PROCEDURE)
-+ return true;
++ PR fortran/91649
++ check.c (gfc_check_findloc): Additional checking for valid arguments
+
- if (attr->flavor != FL_UNKNOWN)
- {
- if (where == NULL)
-Index: gcc/fortran/class.c
-===================================================================
---- a/src/gcc/fortran/class.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/class.c (.../branches/gcc-6-branch)
-@@ -1599,6 +1599,7 @@
- final->attr.flavor = FL_PROCEDURE;
- final->attr.function = 1;
- final->attr.pure = 0;
-+ final->attr.recursive = 1;
- final->result = final;
- final->ts.type = BT_INTEGER;
- final->ts.kind = 4;
-Index: gcc/fortran/decl.c
-===================================================================
---- a/src/gcc/fortran/decl.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/decl.c (.../branches/gcc-6-branch)
-@@ -922,7 +922,8 @@
-
- if (!t && e->ts.type == BT_UNKNOWN
- && e->symtree->n.sym->attr.untyped == 1
-- && (e->symtree->n.sym->ns->seen_implicit_none == 1
-+ && (flag_implicit_none
-+ || e->symtree->n.sym->ns->seen_implicit_none == 1
- || e->symtree->n.sym->ns->parent->seen_implicit_none == 1))
- {
- gfc_free_expr (e);
-Index: gcc/fortran/trans-openmp.c
-===================================================================
---- a/src/gcc/fortran/trans-openmp.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/trans-openmp.c (.../branches/gcc-6-branch)
-@@ -37,6 +37,11 @@
- #include "arith.h"
- #include "omp-low.h"
- #include "gomp-constants.h"
-+#undef GCC_DIAG_STYLE
-+#define GCC_DIAG_STYLE __gcc_tdiag__
-+#include "diagnostic-core.h"
-+#undef GCC_DIAG_STYLE
-+#define GCC_DIAG_STYLE __gcc_gfc__
-
- int ompws_flags;
-
-@@ -1028,6 +1033,21 @@
- return;
-
- tree decl = OMP_CLAUSE_DECL (c);
++2019-10-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ /* Assumed-size arrays can't be mapped implicitly, they have to be
-+ mapped explicitly using array sections. */
-+ if (TREE_CODE (decl) == PARM_DECL
-+ && GFC_ARRAY_TYPE_P (TREE_TYPE (decl))
-+ && GFC_TYPE_ARRAY_AKIND (TREE_TYPE (decl)) == GFC_ARRAY_UNKNOWN
-+ && GFC_TYPE_ARRAY_UBOUND (TREE_TYPE (decl),
-+ GFC_TYPE_ARRAY_RANK (TREE_TYPE (decl)) - 1)
-+ == NULL)
-+ {
-+ error_at (OMP_CLAUSE_LOCATION (c),
-+ "implicit mapping of assumed size array %qD", decl);
-+ return;
-+ }
++ PR fortran/91801
++ * simplify.c (gfc_simplify_reshape): Convert a gcc_assert into a
++ gfc_error as a user can easily hit the condition.
+
- tree c2 = NULL_TREE, c3 = NULL_TREE, c4 = NULL_TREE;
- if (POINTER_TYPE_P (TREE_TYPE (decl)))
- {
-Index: gcc/fortran/ChangeLog
-===================================================================
---- a/src/gcc/fortran/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,111 @@
-+2017-05-01 Janus Weil <janus@gcc.gnu.org>
++2019-10-07 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ PR fortran/80392
-+ * trans-types.c (gfc_get_derived_type): Prevent an infinite loop when
-+ building a derived type that includes a procedure pointer component
-+ with a polymorphic result.
++ PR fortran/84487
++ * trans-decl.c (gfc_get_symbol_decl): For __def_init, set
++ DECL_ARTIFICAL and do not set TREE_READONLY.
+
-+2017-04-21 Janus Weil <janus@gcc.gnu.org>
++2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from trunk
-+ PR fortran/80361
-+ * class.c (generate_finalization_wrapper): Give the finalization wrapper
-+ the recursive attribute.
++ PR fortran/47054
++ * decl.c (variable_decl): Do not search parent namespace for symbol.
+
-+2017-04-01 Paul Thomas <pault@gcc.gnu.org>
++2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from trunk
-+ PR fortran/71838
-+ * symbol.c (check_conflict): A dummy procedure in a submodule,
-+ module procedure is not an error.
-+ (gfc_add_flavor): Ditto.
++ PR fortran/91942
++ * io.c (match_vtag): Check for non-NULL result->symtree.
++ (match_out_tag): Check for invalid constant due to inquiry parameter.
++ (match_filepos): Instead of a syntax error, go to cleanup to get better
++ error messages.
++
++2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91785
++ * primary.c (gfc_match_varspec): Ensure an inquiry parameter has
++ it locus set.
++
++2019-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91864
++ * gcc/fortran/io.c (match_io_element): An inquiry parameter cannot be
++ read into.
++ * gcc/fortran/match.c (gfc_match_allocate): An inquiry parameter
++ can be neither an allocate-object nor stat variable.
++ (gfc_match_deallocate): An inquiry parameter cannot be deallocated.
++
++2019-10-01 Steven G. Kargl <kargl@gcc.ngu.org>
+
-+2017-04-01 Paul Thomas <pault@gcc.gnu.org>
++ Backport of r276254+276265
++ PR fortran/91802
++ * decl.c (attr_decl1): Check if rank+corank > 15.
++
++2019-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91714
++ * decl.c (gfc_match_decl_type_spec): Issue errors for a few
++ mangled types.
++
++2019-10-01 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91641
++ * check.c (gfc_check_is_contiguous): null() cannot be an actual
++ argument to is_contiguous().
++
++2019-09-21 Paul Thomas <pault@gcc.gnu.org>
++
++ Backport from mainline
++ PR fortran/91588
++ * expr.c (check_inquiry): Remove extended component refs by
++ using symbol pointers. If a function argument is an associate
++ variable with a constant target, copy the target expression in
++ place of the argument expression. Check that the charlen is not
++ NULL before using the string length.
++
++2019-09-19 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91727
++ * resolve.c (conformable_arrays): If array-spec is NULL, then
++ allocate-object is a scalar. a conformability check only occurs
++ for an array source-expr.
++
++2019-09-18 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ PR fortran/79676
-+ * module.c (mio_symbol_attribute): Remove reset of the flag
-+ 'no_module_procedures'.
-+ (check_for_module_procedures): New function. Move declaration
-+ of 'no_module_procedures' to above it.
-+ (gfc_dump_module): Traverse namespace calling new function.
++ PR fortran/91550
++ * frontend-passes.c (do_subscript): If step equals
++ zero, a previuos error has been reported; do nothing
++ in this case.
++ * resolve.c (gfc_resolve_iterator): Move error checking
++ after type conversion.
+
-+2017-03-26 Paul Thomas <pault@gcc.gnu.org>
++2019-09-15 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ PR fortran/79434
-+ * parse.c (check_component, parse_union): Whitespace.
-+ (set_syms_host_assoc): For a derived type, check if the module
-+ in which it was declared is one of the submodule ancestors. If
-+ it is, make the components public. Otherwise, reset attribute
-+ 'host_assoc' and set 'use-assoc' so that encapsulation is
-+ preserved.
++ PR fortran/91557
++ * trans-decl.c (generate_local_decl): Do not warn if the symbol
++ is artificial.
++ * trans-types.c (get_formal_from_actual_arglist): Set artificial
++ attribute on dummy arguments.
++
++2019-09-14 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91553
++ * simplify.c (gfc_convert_constant): During conversion check if the
++ constant is enclosed in parenthesis, and simplify expression.
++
++2019-09-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-03-14 Richard Biener <rguenther@suse.de>
++ PR fortran/91566
++ * simplify.c (gfc_simplify_merge): Need to simplify expression
++ after insertation of parenthesis.
++
++2019-09-14 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91642
++ * io.c (gfc_match_inquire): null() cannot be in an iolength inquire
++ list.
++
++2019-09-07 Paul Thomas <pault@gcc.gnu.org>
+
+ Backport from mainline
-+ 2017-03-06 Richard Biener <rguenther@suse.de>
++ PR fortran/91589
++ * primary.c (gfc_match_varspec): Return MATCH_NO on an apparent
++ component ref, when the primary type is intrinsic.
+
-+ PR fortran/79894
-+ * trans.c (gfc_add_modify_loc): Weaken assert.
++2019-09-05 Harald Anlauf <anlauf@gmx.de>
+
-+2017-02-25 Paul Thomas <pault@gcc.gnu.org>
++ Backport from mainline
++ PR fortran/91496
++ * gfortran.h: Extend struct gfc_iterator for loop annotations.
++ * array.c (gfc_copy_iterator): Copy loop annotations by IVDEP,
++ VECTOR, and NOVECTOR pragmas.
++ * decl.c (gfc_match_gcc_ivdep, gfc_match_gcc_vector)
++ (gfc_match_gcc_novector): New matcher functions handling IVDEP,
++ VECTOR, and NOVECTOR pragmas.
++ * match.h: Declare prototypes of matcher functions handling IVDEP,
++ VECTOR, and NOVECTOR pragmas.
++ * parse.c (decode_gcc_attribute, parse_do_block)
++ (parse_executable): Decode IVDEP, VECTOR, and NOVECTOR pragmas;
++ emit warning for unrecognized pragmas instead of error.
++ * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do): Add code to
++ emit annotations for IVDEP, VECTOR, and NOVECTOR pragmas.
++ * gfortran.texi: Document IVDEP, VECTOR, and NOVECTOR pragmas.
+
-+ PR fortran/78474
-+ * module.c (gfc_match_submodule): If there is more than one
-+ colon, it is a syntax error.
++ PR fortran/91496
++ * parse.c (parse_executable): Improve error messages for
++ improperly placed pragmas not preceeding a loop.
+
-+ PR fortran/78331
-+ * module.c (gfc_use_module): If an smod file does not exist it
-+ is either because the module does not have a module procedure
-+ interface or there is an error in the module.
++2019-09-05 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+2017-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
++ PR fortran/91660
++ * decl.c (gfc_match_decl_type_spec): Improve and restore error
++ message for malformed types-spec.
+
-+ * trans-types.c (gfc_get_int_kind_from_width_isofortranen): Choose
-+ REAL type with the widest precision if two (or more) have the same
-+ storage size.
++2019-09-02 Steven G. Kargl <kargl@gc.gnu.org>
+
-+2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++ PR fortran/91552
++ * array.c (walk_array_constructor): New function.
++ (gfc_match_array_constructor): Use it.
+
-+ Backported from trunk
-+ 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR fortran/70697
-+ * resolve.c (resolve_lock_unlock_event): Resolve the expression for
-+ event's until_count.
++ PR fortran/91587
++ * io.c (match_filepos): MATCH_ERROR should branch to a syntax error.
+
-+2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backport from trunk
-+ PR fortran/70696
-+ * trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl
-+ is valid before accessing it. Remove unnecessary assert.
-+ * trans-decl.c (gfc_build_qualified_array): Add static tokens to the
-+ parent function's scope only, when the decl-context is not the
-+ translation unit.
++ PR fortran/91565
++ * simplify.c (gfc_simplify_reshape): Add additional checks of the
++ ORDER dummy argument.
+
-+2017-01-17 Jakub Jelinek <jakub@redhat.com>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ Backported from mainline
-+ 2016-12-21 Jakub Jelinek <jakub@redhat.com>
++ PR fortran/91564
++ * check.c (gfc_check_kill_sub): Additional checks on status dummy
++ argument.
++
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
+
-+ PR fortran/78866
-+ * openmp.c (resolve_omp_clauses): Diagnose assumed size arrays in
-+ OpenMP map, to and from clauses.
-+ * trans-openmp.c: Include diagnostic-core.h, temporarily redefining
-+ GCC_DIAG_STYLE to __gcc_tdiag__.
-+ (gfc_omp_finish_clause): Diagnose implicitly mapped assumed size
-+ arrays.
++ PR fortran/91551
++ * intrinsic.c (sort_actual): ALLOCATED has one argument. Check for
++ no argument case.
+
-+2016-12-22 Thomas Koenig <tkoenig@gcc.gnu.org>
++2019-08-30 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91485
++ module.c (gfc_match_use): User defined operator cannot conflict with
++ a rename symbol.
++
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91471
++ * primary.c (gfc_variable_attr): Remove a gfc_internal_error(),
++ which cannot be reached by conforming Fortran code, but seems to
++ be reachable from nonconforming Fortran code. Treat the AR_UNKNOWN
++ case as a no-op.
++
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/78739
++ * match.c (gfc_match_st_function): When matching a statement function,
++ need to check if the statement function name shadows the function
++ name.
++
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/78719
++ * decl.c (get_proc_name): Check for a CLASS entity when trying to
++ add attributes to an entity that already has an explicit interface.
++
++2019-08-17 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/82992
++ * module.c (gfc_match_use): When renaming a module entity, search
++ current namespace for conflicting symbol.
++
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/87991
++ * resolve.c (check_data_variable): data-stmt-object with pointer
++ attribute requires a data-stmt-value with the target attribute.
++
++2013-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
-+ PR fortran/78239
-+ * decl.c (char_len_param_value): Also check for -fimplicit-none
-+ when determining if implicit none is in force.
++ PR fortran/90563
++ * frontend-passes.c (insert_index): Suppress errors while
++ simplifying the resulting expression.
++
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/88072
++ * misc.c (gfc_typename): Do not point to something that ought not to
++ be pointed at.
++
++2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
++
++ Backport from trunk
++ PR fortran/90561
++ * trans.h (gfc_evaluate_now_function_scope): New function.
++ * trans.c (gfc_evaluate_now_function_scope): New function.
++ * trans-expr.c (gfc_trans_assignment): Use it.
++
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
- 2016-12-21 Release Manager
++ PR fortran/89647
++ resolve.c (resolve_typebound_procedure): Allow host associated
++ procedure to be a binding target. While here, wrap long line.
++
++2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/87993
++ * expr.c (gfc_simplify_expr): Simplifcation of an array with a kind
++ type inquiry suffix yields a constant expression.
++
++2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
++
++ Backport from trunk
++ PR fortran/91424
++ * frontend-passes.c (do_subscript): Do not warn for an
++ expression a second time. Do not warn about a zero-trip loop.
++ (doloop_warn): Also look at contained namespaces.
++
++2019-08-12 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/91359
++ * trans-decl.c (gfc_generate_return): Ensure something is returned
++ from a function.
++
++2019-08-12 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/42546
++ * check.c(gfc_check_allocated): Add comment pointing to ...
++ * intrinsic.c(sort_actual): ... the checking done here.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+Index: gcc/fortran/trans-stmt.c
+===================================================================
+--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-9-branch)
+@@ -2171,6 +2171,19 @@
+ build_int_cst (integer_type_node, annot_expr_unroll_kind),
+ build_int_cst (integer_type_node, code->ext.iterator->unroll));
+
++ if (code->ext.iterator->ivdep && cond != error_mark_node)
++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
++ build_int_cst (integer_type_node, annot_expr_ivdep_kind),
++ integer_zero_node);
++ if (code->ext.iterator->vector && cond != error_mark_node)
++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
++ build_int_cst (integer_type_node, annot_expr_vector_kind),
++ integer_zero_node);
++ if (code->ext.iterator->novector && cond != error_mark_node)
++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
++ build_int_cst (integer_type_node, annot_expr_no_vector_kind),
++ integer_zero_node);
++
+ /* The loop exit. */
+ tmp = fold_build1_loc (loc, GOTO_EXPR, void_type_node, exit_label);
+ TREE_USED (exit_label) = 1;
+@@ -2501,6 +2514,20 @@
+ = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
+ build_int_cst (integer_type_node, annot_expr_unroll_kind),
+ build_int_cst (integer_type_node, code->ext.iterator->unroll));
++
++ if (code->ext.iterator->ivdep && cond != error_mark_node)
++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
++ build_int_cst (integer_type_node, annot_expr_ivdep_kind),
++ integer_zero_node);
++ if (code->ext.iterator->vector && cond != error_mark_node)
++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
++ build_int_cst (integer_type_node, annot_expr_vector_kind),
++ integer_zero_node);
++ if (code->ext.iterator->novector && cond != error_mark_node)
++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond,
++ build_int_cst (integer_type_node, annot_expr_no_vector_kind),
++ integer_zero_node);
++
+ tmp = fold_build1_loc (loc, GOTO_EXPR, void_type_node, exit_label);
+ tmp = fold_build3_loc (loc, COND_EXPR, void_type_node,
+ cond, tmp, build_empty_stmt (loc));
+Index: gcc/fortran/expr.c
+===================================================================
+--- a/src/gcc/fortran/expr.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/expr.c (.../branches/gcc-9-branch)
+@@ -2220,6 +2220,11 @@
+ if (!simplify_ref_chain (p->ref, type, &p))
+ return false;
- * GCC 6.3.0 released.
-Index: gcc/fortran/module.c
-===================================================================
---- a/src/gcc/fortran/module.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/module.c (.../branches/gcc-6-branch)
-@@ -193,10 +193,6 @@
- /* The name of the .smod file that the submodule will write to. */
- static const char *submodule_name;
++ /* If the following conditions hold, we found something like kind type
++ inquiry of the form a(2)%kind while simplify the ref chain. */
++ if (p->expr_type == EXPR_CONSTANT && !p->ref && !p->rank && !p->shape)
++ return true;
++
+ if (!simplify_constructor (p->value.constructor, type))
+ return false;
--/* Suppress the output of a .smod file by module, if no module
-- procedures have been seen. */
--static bool no_module_procedures;
--
- static gfc_use_list *module_list;
+@@ -2598,6 +2603,8 @@
- /* If we're reading an intrinsic module, this is its ID. */
-@@ -740,6 +736,7 @@
- match m;
- char name[GFC_MAX_SYMBOL_LEN + 1];
- gfc_use_list *use_list;
-+ bool seen_colon = false;
+ int i = 0;
+ gfc_actual_arglist *ap;
++ gfc_symbol *sym;
++ gfc_symbol *asym;
- if (!gfc_notify_std (GFC_STD_F2008, "SUBMODULE declaration at %C"))
- return MATCH_ERROR;
-@@ -772,7 +769,7 @@
- }
- else
- {
-- module_list = use_list;
-+ module_list = use_list;
- use_list->module_name = gfc_get_string (name);
- use_list->submodule_name = use_list->module_name;
- }
-@@ -780,8 +777,11 @@
- if (gfc_match_char (')') == MATCH_YES)
- break;
+ if (!e->value.function.isym
+ || !e->value.function.isym->inquiry)
+@@ -2607,20 +2614,22 @@
+ if (e->symtree == NULL)
+ return MATCH_NO;
-- if (gfc_match_char (':') != MATCH_YES)
-+ if (gfc_match_char (':') != MATCH_YES
-+ || seen_colon)
- goto syntax;
+- if (e->symtree->n.sym->from_intmod)
++ sym = e->symtree->n.sym;
+
-+ seen_colon = true;
++ if (sym->from_intmod)
+ {
+- if (e->symtree->n.sym->from_intmod == INTMOD_ISO_FORTRAN_ENV
+- && e->symtree->n.sym->intmod_sym_id != ISOFORTRAN_COMPILER_OPTIONS
+- && e->symtree->n.sym->intmod_sym_id != ISOFORTRAN_COMPILER_VERSION)
++ if (sym->from_intmod == INTMOD_ISO_FORTRAN_ENV
++ && sym->intmod_sym_id != ISOFORTRAN_COMPILER_OPTIONS
++ && sym->intmod_sym_id != ISOFORTRAN_COMPILER_VERSION)
+ return MATCH_NO;
+
+- if (e->symtree->n.sym->from_intmod == INTMOD_ISO_C_BINDING
+- && e->symtree->n.sym->intmod_sym_id != ISOCBINDING_C_SIZEOF)
++ if (sym->from_intmod == INTMOD_ISO_C_BINDING
++ && sym->intmod_sym_id != ISOCBINDING_C_SIZEOF)
+ return MATCH_NO;
}
+ else
+ {
+- name = e->symtree->n.sym->name;
++ name = sym->name;
- m = gfc_match (" %s%t", &gfc_new_block);
-@@ -2236,10 +2236,7 @@
- if (attr->array_outer_dependency)
- MIO_NAME (ab_attribute) (AB_ARRAY_OUTER_DEPENDENCY, attr_bits);
- if (attr->module_procedure)
-- {
- MIO_NAME (ab_attribute) (AB_MODULE_PROCEDURE, attr_bits);
-- no_module_procedures = false;
-- }
- if (attr->oacc_declare_create)
- MIO_NAME (ab_attribute) (AB_OACC_DECLARE_CREATE, attr_bits);
- if (attr->oacc_declare_copyin)
-@@ -6125,6 +6122,18 @@
- }
-
+ functions = inquiry_func_gnu;
+ if (gfc_option.warn_std & GFC_STD_F2003)
+@@ -2645,41 +2654,48 @@
+ if (!ap->expr)
+ continue;
-+/* Suppress the output of a .smod file by module, if no module
-+ procedures have been seen. */
-+static bool no_module_procedures;
-+
-+static void
-+check_for_module_procedures (gfc_symbol *sym)
-+{
-+ if (sym && sym->attr.module_procedure)
-+ no_module_procedures = false;
-+}
++ asym = ap->expr->symtree ? ap->expr->symtree->n.sym : NULL;
+
-+
- void
- gfc_dump_module (const char *name, int dump_flag)
- {
-@@ -6134,6 +6143,8 @@
- dump_smod =false;
+ if (ap->expr->ts.type == BT_UNKNOWN)
+ {
+- if (ap->expr->symtree->n.sym->ts.type == BT_UNKNOWN
+- && !gfc_set_default_type (ap->expr->symtree->n.sym, 0, gfc_current_ns))
++ if (asym && asym->ts.type == BT_UNKNOWN
++ && !gfc_set_default_type (asym, 0, gfc_current_ns))
+ return MATCH_NO;
+
+- ap->expr->ts = ap->expr->symtree->n.sym->ts;
++ ap->expr->ts = asym->ts;
+ }
- no_module_procedures = true;
-+ gfc_traverse_ns (gfc_current_ns, check_for_module_procedures);
-+
- dump_module (name, dump_flag);
+- /* Assumed character length will not reduce to a constant expression
+- with LEN, as required by the standard. */
+- if (i == 5 && not_restricted && ap->expr->symtree
+- && ap->expr->symtree->n.sym->ts.type == BT_CHARACTER
+- && (ap->expr->symtree->n.sym->ts.u.cl->length == NULL
+- || ap->expr->symtree->n.sym->ts.deferred))
+- {
+- gfc_error ("Assumed or deferred character length variable %qs "
+- "in constant expression at %L",
+- ap->expr->symtree->n.sym->name,
+- &ap->expr->where);
+- return MATCH_ERROR;
+- }
+- else if (not_restricted && !gfc_check_init_expr (ap->expr))
+- return MATCH_ERROR;
++ if (asym && asym->assoc && asym->assoc->target
++ && asym->assoc->target->expr_type == EXPR_CONSTANT)
++ {
++ gfc_free_expr (ap->expr);
++ ap->expr = gfc_copy_expr (asym->assoc->target);
++ }
- if (no_module_procedures || dump_smod)
-@@ -6917,8 +6928,17 @@
+- if (not_restricted == 0
+- && ap->expr->expr_type != EXPR_VARIABLE
+- && !check_restricted (ap->expr))
++ /* Assumed character length will not reduce to a constant expression
++ with LEN, as required by the standard. */
++ if (i == 5 && not_restricted && asym
++ && asym->ts.type == BT_CHARACTER
++ && ((asym->ts.u.cl && asym->ts.u.cl->length == NULL)
++ || asym->ts.deferred))
++ {
++ gfc_error ("Assumed or deferred character length variable %qs "
++ "in constant expression at %L",
++ asym->name, &ap->expr->where);
+ return MATCH_ERROR;
++ }
++ else if (not_restricted && !gfc_check_init_expr (ap->expr))
++ return MATCH_ERROR;
+
+- if (not_restricted == 0
+- && ap->expr->expr_type == EXPR_VARIABLE
+- && ap->expr->symtree->n.sym->attr.dummy
+- && ap->expr->symtree->n.sym->attr.optional)
+- return MATCH_NO;
++ if (not_restricted == 0
++ && ap->expr->expr_type != EXPR_VARIABLE
++ && !check_restricted (ap->expr))
++ return MATCH_ERROR;
++
++ if (not_restricted == 0
++ && ap->expr->expr_type == EXPR_VARIABLE
++ && asym->attr.dummy && asym->attr.optional)
++ return MATCH_NO;
}
- if (module_fp == NULL)
-- gfc_fatal_error ("Can't open module file %qs for reading at %C: %s",
-- filename, xstrerror (errno));
-+ {
-+ if (gfc_state_stack->state != COMP_SUBMODULE
-+ && module->submodule_name == NULL)
-+ gfc_fatal_error ("Can't open module file %qs for reading at %C: %s",
-+ filename, xstrerror (errno));
-+ else
-+ gfc_fatal_error ("Module file %qs has not been generated, either "
-+ "because the module does not contain a MODULE "
-+ "PROCEDURE or there is an error in the module.",
-+ filename);
-+ }
-
- /* Check that we haven't already USEd an intrinsic module with the
- same name. */
-Index: gcc/fortran/trans.c
-===================================================================
---- a/src/gcc/fortran/trans.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/trans.c (.../branches/gcc-6-branch)
-@@ -151,11 +151,11 @@
- tree t1, t2;
- t1 = TREE_TYPE (rhs);
- t2 = TREE_TYPE (lhs);
-- /* Make sure that the types of the rhs and the lhs are the same
-+ /* Make sure that the types of the rhs and the lhs are compatible
- for scalar assignments. We should probably have something
- similar for aggregates, but right now removing that check just
- breaks everything. */
-- gcc_checking_assert (t1 == t2
-+ gcc_checking_assert (TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2)
- || AGGREGATE_TYPE_P (TREE_TYPE (lhs)));
-
- tmp = fold_build2_loc (loc, MODIFY_EXPR, void_type_node, lhs,
-Index: gcc/fortran/trans-types.c
+ return MATCH_YES;
+Index: gcc/fortran/module.c
===================================================================
---- a/src/gcc/fortran/trans-types.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/trans-types.c (.../branches/gcc-6-branch)
-@@ -234,27 +234,42 @@
- return -1;
- }
-
--/* Get the kind number corresponding to a real of given storage size,
-- following the required return values for ISO_FORTRAN_ENV REAL* constants:
-- -2 is returned if we support a kind of larger size, -1 otherwise. */
-+
-+/* Get the kind number corresponding to a real of a given storage size.
-+ If two real's have the same storage size, then choose the real with
-+ the largest precision. If a kind type is unavailable and a real
-+ exists with wider storage, then return -2; otherwise, return -1. */
-+
- int
- gfc_get_real_kind_from_width_isofortranenv (int size)
- {
-- int i;
-+ int digits, i, kind;
-
- size /= 8;
+--- a/src/gcc/fortran/module.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/module.c (.../branches/gcc-9-branch)
+@@ -525,6 +525,8 @@
+ gfc_intrinsic_op op;
+ match m;
+ gfc_use_list *use_list;
++ gfc_symtree *st;
++ locus loc;
-+ kind = -1;
-+ digits = 0;
-+
- /* Look for a kind with matching storage size. */
- for (i = 0; gfc_real_kinds[i].kind != 0; i++)
- if (int_size_in_bytes (gfc_get_real_type (gfc_real_kinds[i].kind)) == size)
-- return gfc_real_kinds[i].kind;
-+ {
-+ if (gfc_real_kinds[i].digits > digits)
-+ {
-+ digits = gfc_real_kinds[i].digits;
-+ kind = gfc_real_kinds[i].kind;
-+ }
-+ }
+ use_list = gfc_get_use_list ();
-+ if (kind != -1)
-+ return kind;
+@@ -632,6 +634,8 @@
+ case INTERFACE_USER_OP:
+ case INTERFACE_GENERIC:
+ case INTERFACE_DTIO:
++ loc = gfc_current_locus;
+
- /* Look for a kind with larger storage size. */
- for (i = 0; gfc_real_kinds[i].kind != 0; i++)
- if (int_size_in_bytes (gfc_get_real_type (gfc_real_kinds[i].kind)) > size)
-- return -2;
-+ kind = -2;
+ m = gfc_match (" =>");
-- return -1;
-+ return kind;
- }
+ if (type == INTERFACE_USER_OP && m == MATCH_YES
+@@ -642,6 +646,18 @@
+ if (type == INTERFACE_USER_OP)
+ new_use->op = INTRINSIC_USER;
-
-@@ -2595,9 +2610,10 @@
- the same as derived, by forcing the procedure pointer component to
- be built as if the explicit interface does not exist. */
- if (c->attr.proc_pointer
-- && ((c->ts.type != BT_DERIVED && c->ts.type != BT_CLASS)
-- || (c->ts.u.derived
-- && !gfc_compare_derived_types (derived, c->ts.u.derived))))
-+ && (c->ts.type != BT_DERIVED || (c->ts.u.derived
-+ && !gfc_compare_derived_types (derived, c->ts.u.derived)))
-+ && (c->ts.type != BT_CLASS || (CLASS_DATA (c)->ts.u.derived
-+ && !gfc_compare_derived_types (derived, CLASS_DATA (c)->ts.u.derived))))
- field_type = gfc_get_ppc_type (c);
- else if (c->attr.proc_pointer && derived->backend_decl)
- {
-Index: gcc/fortran/resolve.c
++ st = gfc_find_symtree (gfc_current_ns->sym_root, name);
++ if (st && type != INTERFACE_USER_OP)
++ {
++ if (m == MATCH_YES)
++ gfc_error ("Symbol %qs at %L conflicts with the rename symbol "
++ "at %L", name, &st->n.sym->declared_at, &loc);
++ else
++ gfc_error ("Symbol %qs at %L conflicts with the symbol "
++ "at %L", name, &st->n.sym->declared_at, &loc);
++ goto cleanup;
++ }
++
+ if (use_list->only_flag)
+ {
+ if (m != MATCH_YES)
+Index: gcc/fortran/trans.c
===================================================================
---- a/src/gcc/fortran/resolve.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/resolve.c (.../branches/gcc-6-branch)
-@@ -8840,10 +8840,13 @@
- return;
-
- /* Check for EVENT WAIT the UNTIL_COUNT. */
-- if (code->op == EXEC_EVENT_WAIT && code->expr4
-- && (code->expr4->ts.type != BT_INTEGER || code->expr4->rank != 0))
-- gfc_error ("UNTIL_COUNT= argument at %L must be a scalar INTEGER "
-- "expression", &code->expr4->where);
-+ if (code->op == EXEC_EVENT_WAIT && code->expr4)
-+ {
-+ if (!gfc_resolve_expr (code->expr4) || code->expr4->ts.type != BT_INTEGER
-+ || code->expr4->rank != 0)
-+ gfc_error ("UNTIL_COUNT= argument at %L must be a scalar INTEGER "
-+ "expression", &code->expr4->where);
-+ }
+--- a/src/gcc/fortran/trans.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans.c (.../branches/gcc-9-branch)
+@@ -118,7 +118,20 @@
+ return gfc_evaluate_now_loc (input_location, expr, pblock);
}
++/* Like gfc_evaluate_now, but add the created variable to the
++ function scope. */
-Index: gcc/fortran/trans-decl.c
++tree
++gfc_evaluate_now_function_scope (tree expr, stmtblock_t * pblock)
++{
++ tree var;
++ var = gfc_create_var_np (TREE_TYPE (expr), NULL);
++ gfc_add_decl_to_function (var);
++ gfc_add_modify (pblock, var, expr);
++
++ return var;
++}
++
+ /* Build a MODIFY_EXPR node and add it to a given statement block PBLOCK.
+ A MODIFY_EXPR is an assignment:
+ LHS <- RHS. */
+Index: gcc/fortran/trans-types.c
===================================================================
---- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-6-branch)
-@@ -887,6 +887,10 @@
- DECL_CONTEXT (token) = sym->ns->proc_name->backend_decl;
- gfc_module_add_decl (cur_module, token);
+--- a/src/gcc/fortran/trans-types.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans-types.c (.../branches/gcc-9-branch)
+@@ -3021,6 +3021,7 @@
+ }
+ }
+ s->attr.dummy = 1;
++ s->attr.artificial = 1;
+ s->attr.intent = INTENT_UNKNOWN;
+ (*f)->sym = s;
}
-+ else if (sym->attr.host_assoc
-+ && TREE_CODE (DECL_CONTEXT (current_function_decl))
-+ != TRANSLATION_UNIT_DECL)
-+ gfc_add_decl_to_parent_function (token);
- else
- gfc_add_decl_to_function (token);
- }
-Index: gcc/fortran/parse.c
+Index: gcc/fortran/scanner.c
===================================================================
---- a/src/gcc/fortran/parse.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/fortran/parse.c (.../branches/gcc-6-branch)
-@@ -2795,7 +2795,7 @@
- coarray = true;
- sym->attr.coarray_comp = 1;
- }
--
-+
- if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.coarray_comp
- && !c->attr.pointer)
- {
-@@ -2959,7 +2959,7 @@
- /* Add a component to the union for each map. */
- if (!gfc_add_component (un, gfc_new_block->name, &c))
- {
-- gfc_internal_error ("failed to create map component '%s'",
-+ gfc_internal_error ("failed to create map component '%s'",
- gfc_new_block->name);
- reject_statement ();
- return;
-@@ -5668,6 +5668,9 @@
- set_syms_host_assoc (gfc_symbol *sym)
- {
- gfc_component *c;
-+ const char dot[2] = ".";
-+ char parent1[GFC_MAX_SYMBOL_LEN + 1];
-+ char parent2[GFC_MAX_SYMBOL_LEN + 1];
-
- if (sym == NULL)
- return;
-@@ -5675,8 +5678,6 @@
- if (sym->attr.module_procedure)
- sym->attr.external = 0;
+--- a/src/gcc/fortran/scanner.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/scanner.c (.../branches/gcc-9-branch)
+@@ -1050,6 +1050,10 @@
+ return;
+ }
--/* sym->attr.access = ACCESS_PUBLIC; */
--
- sym->attr.use_assoc = 0;
- sym->attr.host_assoc = 1;
- sym->attr.used_in_submodule =1;
-@@ -5683,8 +5684,26 @@
++ if (gfc_current_locus.lb != NULL
++ && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
++ continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
++
+ /* If -fopenmp/-fopenacc, we need to handle here 2 things:
+ 1) don't treat !$omp/!$acc|c$omp/c$acc|*$omp / *$acc as comments,
+ but directives
+@@ -1057,10 +1061,6 @@
+ !$|c$|*$ should be treated as 2 spaces if the characters
+ in columns 3 to 6 are valid fixed form label columns
+ characters. */
+- if (gfc_current_locus.lb != NULL
+- && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
+- continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
+-
+ if ((flag_openmp || flag_openmp_simd) && !flag_openacc)
+ {
+ if (next_char () == '$')
+@@ -1313,6 +1313,14 @@
+ if (flag_openacc)
+ prev_openacc_flag = openacc_flag;
+
++ /* This can happen if the input file changed or via cpp's #line
++ without getting reset (e.g. via input_stmt). It also happens
++ when pre-including files via -fpre-include=. */
++ if (continue_count == 0
++ && gfc_current_locus.lb
++ && continue_line > gfc_linebuf_linenum (gfc_current_locus.lb) + 1)
++ continue_line = gfc_linebuf_linenum (gfc_current_locus.lb) + 1;
++
+ continue_flag = 1;
+ if (c == '!')
+ skip_comment_line ();
+@@ -1475,6 +1483,14 @@
+ if (flag_openacc)
+ prev_openacc_flag = openacc_flag;
+
++ /* This can happen if the input file changed or via cpp's #line
++ without getting reset (e.g. via input_stmt). It also happens
++ when pre-including files via -fpre-include=. */
++ if (continue_count == 0
++ && gfc_current_locus.lb
++ && continue_line > gfc_linebuf_linenum (gfc_current_locus.lb) + 1)
++ continue_line = gfc_linebuf_linenum (gfc_current_locus.lb) + 1;
++
+ continue_flag = 1;
+ old_loc = gfc_current_locus;
+
+@@ -1943,7 +1959,7 @@
+ the file stack. */
+
+ static gfc_file *
+-get_file (const char *name, enum lc_reason reason ATTRIBUTE_UNUSED)
++get_file (const char *name, enum lc_reason reason)
+ {
+ gfc_file *f;
+
+Index: gcc/fortran/trans.h
+===================================================================
+--- a/src/gcc/fortran/trans.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans.h (.../branches/gcc-9-branch)
+@@ -507,6 +507,7 @@
+ /* If the value is not constant, Create a temporary and copy the value. */
+ tree gfc_evaluate_now_loc (location_t, tree, stmtblock_t *);
+ tree gfc_evaluate_now (tree, stmtblock_t *);
++tree gfc_evaluate_now_function_scope (tree, stmtblock_t *);
+
+ /* Find the appropriate variant of a math intrinsic. */
+ tree gfc_builtin_decl_for_float_kind (enum built_in_function, int);
+Index: gcc/fortran/io.c
+===================================================================
+--- a/src/gcc/fortran/io.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/io.c (.../branches/gcc-9-branch)
+@@ -1441,25 +1441,30 @@
+ return MATCH_ERROR;
+ }
- if (sym->attr.flavor == FL_DERIVED)
+- if (result->symtree->n.sym->attr.intent == INTENT_IN)
++ if (result->symtree)
{
-- for (c = sym->components; c; c = c->next)
-- c->attr.access = ACCESS_PUBLIC;
-+ /* Derived types with PRIVATE components that are declared in
-+ modules other than the parent module must not be changed to be
-+ PUBLIC. The 'use-assoc' attribute must be reset so that the
-+ test in symbol.c(gfc_find_component) works correctly. This is
-+ not necessary for PRIVATE symbols since they are not read from
-+ the module. */
-+ memset(parent1, '\0', sizeof(parent1));
-+ memset(parent2, '\0', sizeof(parent2));
-+ strcpy (parent1, gfc_new_block->name);
-+ strcpy (parent2, sym->module);
-+ if (strcmp (strtok (parent1, dot), strtok (parent2, dot)) == 0)
+- gfc_error ("Variable %s cannot be INTENT(IN) at %C", tag->name);
+- gfc_free_expr (result);
+- return MATCH_ERROR;
+- }
++ bool impure;
+
+- bool impure = gfc_impure_variable (result->symtree->n.sym);
+- if (impure && gfc_pure (NULL))
+- {
+- gfc_error ("Variable %s cannot be assigned in PURE procedure at %C",
+- tag->name);
+- gfc_free_expr (result);
+- return MATCH_ERROR;
++ if (result->symtree->n.sym->attr.intent == INTENT_IN)
+ {
-+ for (c = sym->components; c; c = c->next)
-+ c->attr.access = ACCESS_PUBLIC;
++ gfc_error ("Variable %s cannot be INTENT(IN) at %C", tag->name);
++ gfc_free_expr (result);
++ return MATCH_ERROR;
+ }
-+ else
++
++ impure = gfc_impure_variable (result->symtree->n.sym);
++ if (impure && gfc_pure (NULL))
+ {
-+ sym->attr.use_assoc = 1;
-+ sym->attr.host_assoc = 0;
++ gfc_error ("Variable %s cannot be assigned in PURE procedure at %C",
++ tag->name);
++ gfc_free_expr (result);
++ return MATCH_ERROR;
+ }
++
++ if (impure)
++ gfc_unset_implicit_pure (NULL);
}
+
+- if (impure)
+- gfc_unset_implicit_pure (NULL);
+-
+ *v = result;
+ return MATCH_YES;
}
+@@ -1474,8 +1479,17 @@
-Index: gcc/ipa-devirt.c
-===================================================================
---- a/src/gcc/ipa-devirt.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ipa-devirt.c (.../branches/gcc-6-branch)
-@@ -2462,10 +2462,19 @@
- nodes.safe_push (target_node);
- }
- }
-- else if (completep
-- && (!type_in_anonymous_namespace_p
-- (DECL_CONTEXT (target))
-- || flag_ltrans))
-+ else if (!completep)
-+ ;
-+ /* We have definition of __cxa_pure_virtual that is not accessible (it is
-+ optimized out or partitioned to other unit) so we can not add it. When
-+ not sanitizing, there is nothing to do.
-+ Otherwise declare the list incomplete. */
-+ else if (pure_virtual)
+ m = match_vtag (tag, result);
+ if (m == MATCH_YES)
+- gfc_check_do_variable ((*result)->symtree);
+ {
-+ if (flag_sanitize & SANITIZE_UNREACHABLE)
-+ *completep = false;
++ if ((*result)->symtree)
++ gfc_check_do_variable ((*result)->symtree);
+
++ if ((*result)->expr_type == EXPR_CONSTANT)
++ {
++ gfc_error ("Expecting a variable at %L", &(*result)->where);
++ return MATCH_ERROR;
++ }
+ }
-+ else if (flag_ltrans
-+ || !type_in_anonymous_namespace_p (DECL_CONTEXT (target)))
- *completep = false;
++
+ return m;
}
-Index: gcc/function.c
-===================================================================
---- a/src/gcc/function.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/function.c (.../branches/gcc-6-branch)
-@@ -4800,9 +4800,9 @@
- /* cfun should never be set directly; use this function. */
+@@ -2804,7 +2818,7 @@
- void
--set_cfun (struct function *new_cfun)
-+set_cfun (struct function *new_cfun, bool force)
- {
-- if (cfun != new_cfun)
-+ if (cfun != new_cfun || force)
+ m = match_file_element (fp);
+ if (m == MATCH_ERROR)
+- goto done;
++ goto cleanup;
+ if (m == MATCH_NO)
{
- cfun = new_cfun;
- invoke_set_current_function_hook (new_cfun ? new_cfun->decl : NULL_TREE);
-Index: gcc/function.h
-===================================================================
---- a/src/gcc/function.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/function.h (.../branches/gcc-6-branch)
-@@ -606,7 +606,7 @@
- extern void number_blocks (tree);
-
- /* cfun shouldn't be set directly; use one of these functions instead. */
--extern void set_cfun (struct function *new_cfun);
-+extern void set_cfun (struct function *new_cfun, bool force = false);
- extern void push_cfun (struct function *new_cfun);
- extern void pop_cfun (void);
-
-Index: gcc/gcse.c
-===================================================================
---- a/src/gcc/gcse.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gcse.c (.../branches/gcc-6-branch)
-@@ -279,7 +279,7 @@
- to keep register pressure under control.
- A value of "0" removes restrictions on how far the expression can
- travel. */
-- int max_distance;
-+ HOST_WIDE_INT max_distance;
- };
-
- /* Occurrence of an expression.
-@@ -457,7 +457,7 @@
- static int oprs_anticipatable_p (const_rtx, const rtx_insn *);
- static int oprs_available_p (const_rtx, const rtx_insn *);
- static void insert_expr_in_table (rtx, machine_mode, rtx_insn *, int, int,
-- int, struct gcse_hash_table_d *);
-+ HOST_WIDE_INT, struct gcse_hash_table_d *);
- static unsigned int hash_expr (const_rtx, machine_mode, int *, int);
- static void record_last_reg_set_info (rtx_insn *, int);
- static void record_last_mem_set_info (rtx_insn *);
-@@ -487,8 +487,10 @@
- static void free_code_hoist_mem (void);
- static void compute_code_hoist_vbeinout (void);
- static void compute_code_hoist_data (void);
--static int should_hoist_expr_to_dom (basic_block, struct gcse_expr *, basic_block,
-- sbitmap, int, int *, enum reg_class,
-+static int should_hoist_expr_to_dom (basic_block, struct gcse_expr *,
-+ basic_block,
-+ sbitmap, HOST_WIDE_INT, int *,
-+ enum reg_class,
- int *, bitmap, rtx_insn *);
- static int hoist_code (void);
- static enum reg_class get_regno_pressure_class (int regno, int *nregs);
-@@ -742,7 +744,7 @@
- GCSE. */
-
- static int
--want_to_gcse_p (rtx x, machine_mode mode, int *max_distance_ptr)
-+want_to_gcse_p (rtx x, machine_mode mode, HOST_WIDE_INT *max_distance_ptr)
- {
- #ifdef STACK_REGS
- /* On register stack architectures, don't GCSE constants from the
-@@ -789,7 +791,7 @@
- /* PRE doesn't implement max_distance restriction. */
- {
- int cost;
-- int max_distance;
-+ HOST_WIDE_INT max_distance;
+ m = gfc_match_expr (&fp->unit);
+@@ -3608,8 +3622,18 @@
+ {
+ m = gfc_match_variable (&expr, 0);
+ if (m == MATCH_NO)
+- gfc_error ("Expected variable in READ statement at %C");
++ {
++ gfc_error ("Expecting variable in READ statement at %C");
++ m = MATCH_ERROR;
++ }
- gcc_assert (!optimize_function_for_speed_p (cfun)
- && optimize_function_for_size_p (cfun));
-@@ -797,7 +799,8 @@
++ if (m == MATCH_YES && expr->expr_type == EXPR_CONSTANT)
++ {
++ gfc_error ("Expecting variable or io-implied-do in READ statement "
++ "at %L", &expr->where);
++ m = MATCH_ERROR;
++ }
++
+ if (m == MATCH_YES
+ && expr->expr_type == EXPR_VARIABLE
+ && expr->symtree->n.sym->attr.external)
+@@ -3618,7 +3642,6 @@
+ &expr->where);
+ m = MATCH_ERROR;
+ }
+-
+ }
+ else
+ {
+@@ -4583,6 +4606,17 @@
+ if (m == MATCH_NO)
+ goto syntax;
- if (cost < COSTS_N_INSNS (GCSE_UNRESTRICTED_COST))
- {
-- max_distance = (GCSE_COST_DISTANCE_RATIO * cost) / 10;
-+ max_distance
-+ = ((HOST_WIDE_INT)GCSE_COST_DISTANCE_RATIO * cost) / 10;
- if (max_distance == 0)
- return 0;
++ for (gfc_code *c = code; c; c = c->next)
++ if (c->expr1 && c->expr1->expr_type == EXPR_FUNCTION
++ && c->expr1->symtree && c->expr1->symtree->n.sym->attr.function
++ && !c->expr1->symtree->n.sym->attr.external
++ && strcmp (c->expr1->symtree->name, "null") == 0)
++ {
++ gfc_error ("NULL() near %L cannot appear in INQUIRE statement",
++ &c->expr1->where);
++ goto cleanup;
++ }
++
+ new_st.op = EXEC_IOLENGTH;
+ new_st.expr1 = inquire->iolength;
+ new_st.ext.inquire = inquire;
+Index: gcc/fortran/frontend-passes.c
+===================================================================
+--- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/frontend-passes.c (.../branches/gcc-9-branch)
+@@ -2519,7 +2519,12 @@
+ data.sym = sym;
+ mpz_init_set (data.val, val);
+ gfc_expr_walker (&n, callback_insert_index, (void *) &data);
++
++ /* Suppress errors here - we could get errors here such as an
++ out of bounds access for arrays, see PR 90563. */
++ gfc_push_suppress_errors ();
+ gfc_simplify_expr (n, 0);
++ gfc_pop_suppress_errors ();
+
+ if (n->expr_type == EXPR_CONSTANT)
+ {
+@@ -2557,6 +2562,12 @@
+ if (in_assoc_list)
+ return 0;
-@@ -1113,7 +1116,8 @@
- static void
- insert_expr_in_table (rtx x, machine_mode mode, rtx_insn *insn,
- int antic_p,
-- int avail_p, int max_distance, struct gcse_hash_table_d *table)
-+ int avail_p, HOST_WIDE_INT max_distance,
-+ struct gcse_hash_table_d *table)
- {
- int found, do_not_record_p;
- unsigned int hash;
-@@ -1229,7 +1233,7 @@
- else if (REG_P (dest))
++ /* We already warned about this. */
++ if (v->do_not_warn)
++ return 0;
++
++ v->do_not_warn = 1;
++
+ for (ref = v->ref; ref; ref = ref->next)
{
- unsigned int regno = REGNO (dest);
-- int max_distance = 0;
-+ HOST_WIDE_INT max_distance = 0;
+ if (ref->type == REF_ARRAY && ref->u.ar.type == AR_ELEMENT)
+@@ -2569,6 +2580,7 @@
+ bool have_do_start, have_do_end;
+ bool error_not_proven;
+ int warn;
++ int sgn;
+
+ dl = lp->c;
+ if (dl == NULL)
+@@ -2597,7 +2609,16 @@
+ Do not warn in this case. */
+
+ if (dl->ext.iterator->step->expr_type == EXPR_CONSTANT)
+- mpz_init_set (do_step, dl->ext.iterator->step->value.integer);
++ {
++ sgn = mpz_cmp_ui (dl->ext.iterator->step->value.integer, 0);
++ /* This can happen, but then the error has been
++ reported previusly. */
++ if (sgn == 0)
++ continue;
++
++ mpz_init_set (do_step, dl->ext.iterator->step->value.integer);
++ }
++
+ else
+ continue;
- /* See if a REG_EQUAL note shows this equivalent to a simpler expression.
+@@ -2609,7 +2630,6 @@
+ else
+ have_do_start = false;
-@@ -1298,7 +1302,7 @@
- else if (flag_gcse_las && REG_P (src) && MEM_P (dest))
- {
- unsigned int regno = REGNO (src);
-- int max_distance = 0;
-+ HOST_WIDE_INT max_distance = 0;
-
- /* Only record sets of pseudo-regs in the hash table. */
- if (regno >= FIRST_PSEUDO_REGISTER
-@@ -1410,7 +1414,8 @@
- if (flat_table[i] != 0)
- {
- expr = flat_table[i];
-- fprintf (file, "Index %d (hash value %d; max distance %d)\n ",
-+ fprintf (file, "Index %d (hash value %d; max distance "
-+ HOST_WIDE_INT_PRINT_DEC ")\n ",
- expr->bitmap_index, hash_val[i], expr->max_distance);
- print_rtl (file, expr->expr);
- fprintf (file, "\n");
-@@ -2874,7 +2879,8 @@
-
- static int
- should_hoist_expr_to_dom (basic_block expr_bb, struct gcse_expr *expr,
-- basic_block bb, sbitmap visited, int distance,
-+ basic_block bb, sbitmap visited,
-+ HOST_WIDE_INT distance,
- int *bb_size, enum reg_class pressure_class,
- int *nregs, bitmap hoisted_bbs, rtx_insn *from)
- {
-@@ -3151,7 +3157,7 @@
- computes the expression. */
- FOR_EACH_VEC_ELT (domby, j, dominated)
+-
+ if (dl->ext.iterator->end->expr_type == EXPR_CONSTANT)
{
-- int max_distance;
-+ HOST_WIDE_INT max_distance;
-
- /* Ignore self dominance. */
- if (bb == dominated)
-Index: gcc/genmatch.c
-===================================================================
---- a/src/gcc/genmatch.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/genmatch.c (.../branches/gcc-6-branch)
-@@ -2389,7 +2389,18 @@
- }
- }
+ have_do_end = true;
+@@ -2621,6 +2641,16 @@
+ if (!have_do_start && !have_do_end)
+ return 0;
-- fprintf_indent (f, indent, "%s = captures[%u];\n", dest, where);
-+ /* If in GENERIC some capture is used multiple times, unshare it except
-+ when emitting the last use. */
-+ if (!gimple
-+ && cinfo->info.exists ()
-+ && cinfo->info[cinfo->info[where].same_as].result_use_count > 1)
++ /* No warning inside a zero-trip loop. */
++ if (have_do_start && have_do_end)
++ {
++ int cmp;
++
++ cmp = mpz_cmp (do_end, do_start);
++ if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))
++ break;
++ }
++
+ /* May have to correct the end value if the step does not equal
+ one. */
+ if (have_do_start && have_do_end && mpz_cmp_ui (do_step, 1) != 0)
+@@ -2762,6 +2792,12 @@
+ doloop_warn (gfc_namespace *ns)
+ {
+ gfc_code_walker (&ns->code, doloop_code, do_function, NULL);
++
++ for (ns = ns->contained; ns; ns = ns->sibling)
+ {
-+ fprintf_indent (f, indent, "%s = unshare_expr (captures[%u]);\n",
-+ dest, where);
-+ cinfo->info[cinfo->info[where].same_as].result_use_count--;
++ if (ns->code == NULL || ns->code->op != EXEC_BLOCK)
++ doloop_warn (ns);
+ }
-+ else
-+ fprintf_indent (f, indent, "%s = captures[%u];\n", dest, where);
+ }
- /* ??? Stupid tcc_comparison GENERIC trees in COND_EXPRs. Deal
- with substituting a capture of that. */
-Index: gcc/alias.c
+ /* This selction deals with inlining calls to MATMUL. */
+Index: gcc/fortran/resolve.c
===================================================================
---- a/src/gcc/alias.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/alias.c (.../branches/gcc-6-branch)
-@@ -2035,6 +2035,18 @@
- if (base1 == base2)
- return 1;
+--- a/src/gcc/fortran/resolve.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/resolve.c (.../branches/gcc-9-branch)
+@@ -1866,7 +1866,7 @@
-+ /* If we have two register decls with register specification we
-+ cannot decide unless their assembler name is the same. */
-+ if (DECL_REGISTER (base1)
-+ && DECL_REGISTER (base2)
-+ && DECL_ASSEMBLER_NAME_SET_P (base1)
-+ && DECL_ASSEMBLER_NAME_SET_P (base2))
-+ {
-+ if (DECL_ASSEMBLER_NAME (base1) == DECL_ASSEMBLER_NAME (base2))
-+ return 1;
-+ return -1;
-+ }
+
+ /* Check that name is not a derived type. */
+-
+
- /* Declarations of non-automatic variables may have aliases. All other
- decls are unique. */
- if (!decl_in_symtab_p (base1)
-Index: gcc/tree-data-ref.c
-===================================================================
---- a/src/gcc/tree-data-ref.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-data-ref.c (.../branches/gcc-6-branch)
-@@ -2112,8 +2112,6 @@
- switch (TREE_CODE (chrec))
+ static bool
+ is_dt_name (const char *name)
+ {
+@@ -7059,6 +7059,19 @@
+ "Step expression in DO loop"))
+ return false;
+
++ /* Convert start, end, and step to the same type as var. */
++ if (iter->start->ts.kind != iter->var->ts.kind
++ || iter->start->ts.type != iter->var->ts.type)
++ gfc_convert_type (iter->start, &iter->var->ts, 1);
++
++ if (iter->end->ts.kind != iter->var->ts.kind
++ || iter->end->ts.type != iter->var->ts.type)
++ gfc_convert_type (iter->end, &iter->var->ts, 1);
++
++ if (iter->step->ts.kind != iter->var->ts.kind
++ || iter->step->ts.type != iter->var->ts.type)
++ gfc_convert_type (iter->step, &iter->var->ts, 1);
++
+ if (iter->step->expr_type == EXPR_CONSTANT)
{
- case POLYNOMIAL_CHREC:
-- gcc_assert (TREE_CODE (CHREC_RIGHT (chrec)) == INTEGER_CST);
--
- A[index][0] = mult * int_cst_value (CHREC_RIGHT (chrec));
- return initialize_matrix_A (A, CHREC_LEFT (chrec), index + 1, mult);
+ if ((iter->step->ts.type == BT_INTEGER
+@@ -7072,19 +7085,6 @@
+ }
+ }
-Index: gcc/tree-vect-data-refs.c
-===================================================================
---- a/src/gcc/tree-vect-data-refs.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-vect-data-refs.c (.../branches/gcc-6-branch)
-@@ -765,7 +765,7 @@
- base = ref;
- while (handled_component_p (base))
- base = TREE_OPERAND (base, 0);
-- unsigned int base_alignment;
-+ unsigned int base_alignment = 0;
- unsigned HOST_WIDE_INT base_bitpos;
- get_object_alignment_1 (base, &base_alignment, &base_bitpos);
- /* As data-ref analysis strips the MEM_REF down to its base operand
-@@ -774,8 +774,17 @@
- DR_BASE_ADDRESS. */
- if (TREE_CODE (base) == MEM_REF)
+- /* Convert start, end, and step to the same type as var. */
+- if (iter->start->ts.kind != iter->var->ts.kind
+- || iter->start->ts.type != iter->var->ts.type)
+- gfc_convert_type (iter->start, &iter->var->ts, 1);
+-
+- if (iter->end->ts.kind != iter->var->ts.kind
+- || iter->end->ts.type != iter->var->ts.type)
+- gfc_convert_type (iter->end, &iter->var->ts, 1);
+-
+- if (iter->step->ts.kind != iter->var->ts.kind
+- || iter->step->ts.type != iter->var->ts.type)
+- gfc_convert_type (iter->step, &iter->var->ts, 1);
+-
+ if (iter->start->expr_type == EXPR_CONSTANT
+ && iter->end->expr_type == EXPR_CONSTANT
+ && iter->step->expr_type == EXPR_CONSTANT)
+@@ -7439,7 +7439,7 @@
+ for (tail = e2->ref; tail && tail->next; tail = tail->next);
+
+ /* First compare rank. */
+- if ((tail && e1->rank != tail->u.ar.as->rank)
++ if ((tail && (!tail->u.ar.as || e1->rank != tail->u.ar.as->rank))
+ || (!tail && e1->rank != e2->rank))
{
-- base_bitpos -= mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
-- base_bitpos &= (base_alignment - 1);
-+ /* Note all this only works if DR_BASE_ADDRESS is the same as
-+ MEM_REF operand zero, otherwise DR/SCEV analysis might have factored
-+ in other offsets. We need to rework DR to compute the alingment
-+ of DR_BASE_ADDRESS as long as all information is still available. */
-+ if (operand_equal_p (TREE_OPERAND (base, 0), base_addr, 0))
+ gfc_error ("Source-expr at %L must be scalar or have the "
+@@ -13539,6 +13539,25 @@
+ }
+ else
+ {
++ /* If proc has not been resolved at this point, proc->name may
++ actually be a USE associated entity. See PR fortran/89647. */
++ if (!proc->resolved
++ && proc->attr.function == 0 && proc->attr.subroutine == 0)
+ {
-+ base_bitpos -= mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
-+ base_bitpos &= (base_alignment - 1);
++ gfc_symbol *tmp;
++ gfc_find_symbol (proc->name, gfc_current_ns->parent, 1, &tmp);
++ if (tmp && tmp->attr.use_assoc)
++ {
++ proc->module = tmp->module;
++ proc->attr.proc = tmp->attr.proc;
++ proc->attr.function = tmp->attr.function;
++ proc->attr.subroutine = tmp->attr.subroutine;
++ proc->attr.use_assoc = tmp->attr.use_assoc;
++ proc->ts = tmp->ts;
++ proc->result = tmp->result;
++ }
+ }
-+ else
-+ base_bitpos = BITS_PER_UNIT;
- }
- if (base_bitpos != 0)
- base_alignment = base_bitpos & -base_bitpos;
-Index: gcc/gimplify.c
-===================================================================
---- a/src/gcc/gimplify.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gimplify.c (.../branches/gcc-6-branch)
-@@ -4362,6 +4362,14 @@
- if (ret != GS_ERROR)
- ret = GS_OK;
-
-+ /* If we are going to write RESULT more than once, clear
-+ TREE_READONLY flag, otherwise we might incorrectly promote
-+ the variable to static const and initialize it at compile
-+ time in one of the branches. */
-+ if (VAR_P (result)
-+ && TREE_TYPE (TREE_OPERAND (cond, 1)) != void_type_node
-+ && TREE_TYPE (TREE_OPERAND (cond, 2)) != void_type_node)
-+ TREE_READONLY (result) = 0;
- if (TREE_TYPE (TREE_OPERAND (cond, 1)) != void_type_node)
- TREE_OPERAND (cond, 1)
- = build2 (code, void_type_node, result,
-@@ -8136,8 +8144,9 @@
- if ((ctx->region_type & ORT_TARGET) != 0
- && !(n->value & GOVD_SEEN)
- && GOMP_MAP_ALWAYS_P (OMP_CLAUSE_MAP_KIND (c)) == 0
-- && !lookup_attribute ("omp declare target link",
-- DECL_ATTRIBUTES (decl)))
-+ && (!is_global_var (decl)
-+ || !lookup_attribute ("omp declare target link",
-+ DECL_ATTRIBUTES (decl))))
- {
- remove = true;
- /* For struct element mapping, if struct is never referenced
-@@ -9434,8 +9443,9 @@
- gimple_omp_for_set_combined_into_p (gfor, true);
- for (i = 0; i < (int) gimple_omp_for_collapse (gfor); i++)
++
+ /* Check for F08:C465. */
+ if ((!proc->attr.subroutine && !proc->attr.function)
+ || (proc->attr.proc != PROC_MODULE
+@@ -13545,8 +13564,9 @@
+ && proc->attr.if_source != IFSRC_IFBODY)
+ || proc->attr.abstract)
{
-- t = unshare_expr (gimple_omp_for_index (gfor, i));
-- gimple_omp_for_set_index (gforo, i, t);
-+ tree type = TREE_TYPE (gimple_omp_for_index (gfor, i));
-+ tree v = create_tmp_var (type);
-+ gimple_omp_for_set_index (gforo, i, v);
- t = unshare_expr (gimple_omp_for_initial (gfor, i));
- gimple_omp_for_set_initial (gforo, i, t);
- gimple_omp_for_set_cond (gforo, i,
-@@ -9443,7 +9453,13 @@
- t = unshare_expr (gimple_omp_for_final (gfor, i));
- gimple_omp_for_set_final (gforo, i, t);
- t = unshare_expr (gimple_omp_for_incr (gfor, i));
-+ gcc_assert (TREE_OPERAND (t, 0) == gimple_omp_for_index (gfor, i));
-+ TREE_OPERAND (t, 0) = v;
- gimple_omp_for_set_incr (gforo, i, t);
-+ t = build_omp_clause (input_location, OMP_CLAUSE_PRIVATE);
-+ OMP_CLAUSE_DECL (t) = v;
-+ OMP_CLAUSE_CHAIN (t) = gimple_omp_for_clauses (gforo);
-+ gimple_omp_for_set_clauses (gforo, t);
+- gfc_error ("%qs must be a module procedure or an external procedure with"
+- " an explicit interface at %L", proc->name, &where);
++ gfc_error ("%qs must be a module procedure or an external "
++ "procedure with an explicit interface at %L",
++ proc->name, &where);
+ goto error;
}
- gimplify_seq_add_stmt (pre_p, gforo);
}
-@@ -11156,8 +11172,11 @@
- if (fallback == fb_none && *expr_p && !is_gimple_stmt (*expr_p))
+@@ -15662,8 +15682,6 @@
+ return false;
+ }
+
+- has_pointer = sym->attr.pointer;
+-
+ if (gfc_is_coindexed (e))
{
- /* We aren't looking for a value, and we don't have a valid
-- statement. If it doesn't have side-effects, throw it away. */
-- if (!TREE_SIDE_EFFECTS (*expr_p))
-+ statement. If it doesn't have side-effects, throw it away.
-+ We can also get here with code such as "*&&L;", where L is
-+ a LABEL_DECL that is marked as FORCED_LABEL. */
-+ if (TREE_CODE (*expr_p) == LABEL_DECL
-+ || !TREE_SIDE_EFFECTS (*expr_p))
- *expr_p = NULL;
- else if (!TREE_THIS_VOLATILE (*expr_p))
- {
-Index: gcc/graphite-scop-detection.c
-===================================================================
---- a/src/gcc/graphite-scop-detection.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/graphite-scop-detection.c (.../branches/gcc-6-branch)
-@@ -817,6 +817,25 @@
- != loop_depth (exit->dest->loop_father))
- return invalid_sese;
-
-+ /* For now we just bail out when there is a loop exit in the region
-+ that is not also the exit of the region. We could enlarge the
-+ region to cover the loop that region exits to. See PR79977. */
-+ if (loop_outer (entry->src->loop_father))
-+ {
-+ vec<edge> exits = get_loop_exit_edges (entry->src->loop_father);
-+ for (unsigned i = 0; i < exits.length (); ++i)
+ gfc_error ("DATA element %qs at %L cannot have a coindex", sym->name,
+@@ -15671,19 +15689,30 @@
+ return false;
+ }
+
++ has_pointer = sym->attr.pointer;
++
+ for (ref = e->ref; ref; ref = ref->next)
+ {
+ if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer)
+ has_pointer = 1;
+
+- if (has_pointer
+- && ref->type == REF_ARRAY
+- && ref->u.ar.type != AR_FULL)
+- {
+- gfc_error ("DATA element %qs at %L is a pointer and so must "
+- "be a full array", sym->name, where);
+- return false;
+- }
++ if (has_pointer)
+ {
-+ if (exits[i] != exit
-+ && bb_in_region (exits[i]->src, entry->dest, exit->src))
++ if (ref->type == REF_ARRAY && ref->u.ar.type != AR_FULL)
+ {
-+ DEBUG_PRINT (dp << "[scop-detection-fail] cannot merge seses.\n");
-+ exits.release ();
-+ return invalid_sese;
++ gfc_error ("DATA element %qs at %L is a pointer and so must "
++ "be a full array", sym->name, where);
++ return false;
+ }
-+ }
-+ exits.release ();
-+ }
+
- /* For now we just want to bail out when exit does not post-dominate entry.
- TODO: We might just add a basic_block at the exit to make exit
- post-dominate entry (the entire region). */
-@@ -905,7 +924,19 @@
++ if (values.vnode->expr->expr_type == EXPR_CONSTANT)
++ {
++ gfc_error ("DATA object near %L has the pointer attribute "
++ "and the corresponding DATA value is not a valid "
++ "initial-data-target", where);
++ return false;
++ }
++ }
+ }
+
+ if (e->rank == 0 || has_pointer)
+@@ -16525,8 +16554,8 @@
+ }
+
+
+-/* Function called by resolve_fntype to flag other symbol used in the
+- length type parameter specification of function resuls. */
++/* Function called by resolve_fntype to flag other symbols used in the
++ length type parameter specification of function results. */
- sese_l combined = merge_sese (s1, s2);
+ static bool
+ flag_fn_result_spec (gfc_expr *expr,
+Index: gcc/fortran/match.c
+===================================================================
+--- a/src/gcc/fortran/match.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/match.c (.../branches/gcc-9-branch)
+@@ -4219,6 +4219,12 @@
+ if (m == MATCH_ERROR)
+ goto cleanup;
-+ /* Combining adjacent loops may add unrelated loops into the
-+ region so we have to check all sub-loops of the outer loop
-+ that are in the combined region. */
- if (combined)
-+ for (l = loop_outer (loop)->inner; l; l = l->next)
-+ if (bb_in_sese_p (l->header, combined)
-+ && ! loop_is_valid_in_scop (l, combined))
++ if (tail->expr->expr_type == EXPR_CONSTANT)
+ {
-+ combined = invalid_sese;
-+ break;
++ gfc_error ("Unexpected constant at %C");
++ goto cleanup;
+ }
+
-+ if (combined)
- s1 = combined;
- else
- add_scop (s2);
-@@ -931,6 +962,8 @@
- && niter_desc.control.no_overflow
- && (niter = number_of_latch_executions (loop))
- && !chrec_contains_undetermined (niter)
-+ && !chrec_contains_undetermined (scalar_evolution_in_region (scop,
-+ loop, niter))
- && graphite_can_represent_expr (scop, loop, niter);
- }
+ if (gfc_check_do_variable (tail->expr->symtree))
+ goto cleanup;
-Index: gcc/calls.c
-===================================================================
---- a/src/gcc/calls.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/calls.c (.../branches/gcc-6-branch)
-@@ -2695,8 +2695,7 @@
- n_named_args = num_actuals;
+@@ -4351,6 +4357,12 @@
+ tmp = NULL;
+ saw_stat = true;
- /* Make a vector to hold all the information about each arg. */
-- args = XALLOCAVEC (struct arg_data, num_actuals);
-- memset (args, 0, num_actuals * sizeof (struct arg_data));
-+ args = XCNEWVEC (struct arg_data, num_actuals);
-
- /* Build up entries in the ARGS array, compute the size of the
- arguments into ARGS_SIZE, etc. */
-@@ -3710,6 +3709,7 @@
- currently_expanding_call--;
++ if (stat->expr_type == EXPR_CONSTANT)
++ {
++ gfc_error ("STAT tag at %L cannot be a constant", &stat->where);
++ goto cleanup;
++ }
++
+ if (gfc_check_do_variable (stat->symtree))
+ goto cleanup;
- free (stack_usage_map_buf);
-+ free (args);
+@@ -4627,6 +4639,12 @@
+ if (m == MATCH_NO)
+ goto syntax;
- /* Join result with returned bounds so caller may use them if needed. */
- target = chkp_join_splitted_slot (target, valbnd);
-Index: gcc/multiple_target.c
-===================================================================
---- a/src/gcc/multiple_target.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/multiple_target.c (.../branches/gcc-6-branch)
-@@ -68,6 +68,13 @@
- " supported by this target");
- break;
- }
-+ else if (!targetm.get_function_versions_dispatcher)
++ if (tail->expr->expr_type == EXPR_CONSTANT)
+ {
-+ error_at (gimple_location (call),
-+ "target does not support function version dispatcher");
-+ break;
++ gfc_error ("Unexpected constant at %C");
++ goto cleanup;
+ }
+
- e_next = e->next_caller;
- idecl = targetm.get_function_versions_dispatcher (decl);
- if (!idecl)
-@@ -87,6 +94,7 @@
- inode->resolve_alias (cgraph_node::get (resolver_decl));
-
- e->redirect_callee (inode);
-+ e->redirect_call_stmt_to_callee ();
- /* Since REDIRECT_CALLEE modifies NEXT_CALLER field we move to
- previously set NEXT_CALLER. */
- e = NULL;
-@@ -283,6 +291,7 @@
- create_new_asm_name (attr, suffix);
- /* Create new target clone. */
- cgraph_node *new_node = create_target_clone (node, definition, suffix);
-+ new_node->local.local = false;
- XDELETEVEC (suffix);
-
- /* Set new attribute for the clone. */
-@@ -325,6 +334,7 @@
- tree attributes = make_attribute ("target", "default",
- DECL_ATTRIBUTES (node->decl));
- DECL_ATTRIBUTES (node->decl) = attributes;
-+ node->local.local = false;
- location_t saved_loc = input_location;
- input_location = DECL_SOURCE_LOCATION (node->decl);
- bool ret
-@@ -334,17 +344,19 @@
- return ret;
- }
-
--static bool target_clone_pass;
--
- static unsigned int
- ipa_target_clone (void)
- {
- struct cgraph_node *node;
+ if (gfc_check_do_variable (tail->expr->symtree))
+ goto cleanup;
-- target_clone_pass = false;
-+ bool target_clone_pass = false;
- FOR_EACH_FUNCTION (node)
-- if (node->definition)
-- target_clone_pass |= expand_target_clones (node, true);
-+ target_clone_pass |= expand_target_clones (node, node->definition);
-+
-+ if (target_clone_pass)
-+ FOR_EACH_FUNCTION (node)
-+ create_dispatcher_calls (node);
+@@ -5698,7 +5716,29 @@
+ gfc_symbol *sym;
+ gfc_expr *expr;
+ match m;
++ char name[GFC_MAX_SYMBOL_LEN + 1];
++ locus old_locus;
++ bool fcn;
++ gfc_formal_arglist *ptr;
+
++ /* Read the possible statement function name, and then check to see if
++ a symbol is already present in the namespace. Record if it is a
++ function and whether it has been referenced. */
++ fcn = false;
++ ptr = NULL;
++ old_locus = gfc_current_locus;
++ m = gfc_match_name (name);
++ if (m == MATCH_YES)
++ {
++ gfc_find_symbol (name, NULL, 1, &sym);
++ if (sym && sym->attr.function && !sym->attr.referenced)
++ {
++ fcn = true;
++ ptr = sym->formal;
++ }
++ }
+
- return 0;
- }
++ gfc_current_locus = old_locus;
+ m = gfc_match_symbol (&sym, 0);
+ if (m != MATCH_YES)
+ return m;
+@@ -5726,6 +5766,13 @@
+ return MATCH_ERROR;
+ }
-@@ -360,7 +372,7 @@
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
-- 0 /* todo_flags_finish */
-+ TODO_update_ssa /* todo_flags_finish */
- };
++ if (fcn && ptr != sym->formal)
++ {
++ gfc_error ("Statement function %qs at %L conflicts with function name",
++ sym->name, &expr->where);
++ return MATCH_ERROR;
++ }
++
+ sym->value = expr;
- class pass_target_clone : public simple_ipa_opt_pass
-@@ -388,58 +400,3 @@
- {
- return new pass_target_clone (ctxt);
- }
--
--static unsigned int
--ipa_dispatcher_calls (void)
--{
-- struct cgraph_node *node;
--
-- FOR_EACH_FUNCTION (node)
-- if (!node->definition)
-- target_clone_pass |= expand_target_clones (node, false);
-- if (target_clone_pass)
-- FOR_EACH_FUNCTION (node)
-- create_dispatcher_calls (node);
-- return 0;
--}
--
--namespace {
--
--const pass_data pass_data_dispatcher_calls =
--{
-- SIMPLE_IPA_PASS, /* type */
-- "dispachercalls", /* name */
-- OPTGROUP_NONE, /* optinfo_flags */
-- TV_NONE, /* tv_id */
-- ( PROP_ssa | PROP_cfg ), /* properties_required */
-- 0, /* properties_provided */
-- 0, /* properties_destroyed */
-- 0, /* todo_flags_start */
-- 0 /* todo_flags_finish */
--};
--
--class pass_dispatcher_calls : public simple_ipa_opt_pass
--{
--public:
-- pass_dispatcher_calls (gcc::context *ctxt)
-- : simple_ipa_opt_pass (pass_data_dispatcher_calls, ctxt)
-- {}
--
-- /* opt_pass methods: */
-- virtual bool gate (function *);
-- virtual unsigned int execute (function *) { return ipa_dispatcher_calls (); }
--};
--
--bool
--pass_dispatcher_calls::gate (function *)
--{
-- return true;
--}
--
--} // anon namespace
--
--simple_ipa_opt_pass *
--make_pass_dispatcher_calls (gcc::context *ctxt)
--{
-- return new pass_dispatcher_calls (ctxt);
--}
-Index: gcc/loop-doloop.c
+ if ((gfc_current_state () == COMP_FUNCTION
+Index: gcc/fortran/trans-decl.c
===================================================================
---- a/src/gcc/loop-doloop.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/loop-doloop.c (.../branches/gcc-6-branch)
-@@ -152,10 +152,13 @@
- }
+--- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-9-branch)
+@@ -369,7 +369,8 @@
+ static const char *
+ mangled_identifier (gfc_symbol *sym)
+ {
+- static char name[GFC_MAX_MANGLED_SYMBOL_LEN + 1];
++ gfc_symbol *proc = sym->ns->proc_name;
++ static char name[3*GFC_MAX_MANGLED_SYMBOL_LEN + 14];
+ /* Prevent the mangling of identifiers that have an assigned
+ binding label (mainly those that are bind(c)). */
+
+@@ -376,15 +377,13 @@
+ if (sym->attr.is_bind_c == 1 && sym->binding_label)
+ return sym->binding_label;
+
+- if (!sym->fn_result_spec)
++ if (!sym->fn_result_spec
++ || (sym->module && !(proc && proc->attr.flavor == FL_PROCEDURE)))
+ {
+ if (sym->module == NULL)
+ return sym_identifier (sym);
else
- inc = PATTERN (prev_insn);
-- /* We expect the condition to be of the form (reg != 0) */
-- cond = XEXP (SET_SRC (cmp), 0);
-- if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
-- return 0;
-+ if (GET_CODE (cmp) == SET && GET_CODE (SET_SRC (cmp)) == IF_THEN_ELSE)
-+ {
-+ /* We expect the condition to be of the form (reg != 0) */
-+ cond = XEXP (SET_SRC (cmp), 0);
-+ if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
-+ return 0;
-+ }
+- {
+- snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name);
+- return name;
+- }
++ snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name);
}
else
{
-Index: gcc/gimple-fold.c
-===================================================================
---- a/src/gcc/gimple-fold.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gimple-fold.c (.../branches/gcc-6-branch)
-@@ -5506,9 +5506,12 @@
- && !compare_tree_int (TYPE_SIZE (TREE_TYPE (ctor)), size))
- {
- ret = canonicalize_constructor_val (unshare_expr (ctor), from_decl);
-- ret = fold_unary (VIEW_CONVERT_EXPR, type, ret);
- if (ret)
-- STRIP_USELESS_TYPE_CONVERSION (ret);
-+ {
-+ ret = fold_unary (VIEW_CONVERT_EXPR, type, ret);
-+ if (ret)
-+ STRIP_USELESS_TYPE_CONVERSION (ret);
-+ }
- return ret;
+@@ -391,22 +390,16 @@
+ /* This is an entity that is actually local to a module procedure
+ that appears in the result specification expression. Since
+ sym->module will be a zero length string, we use ns->proc_name
+- instead. */
+- if (sym->ns->proc_name && sym->ns->proc_name->module)
+- {
+- snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s",
+- sym->ns->proc_name->module,
+- sym->ns->proc_name->name,
+- sym->name);
+- return name;
+- }
++ to provide the module name instead. */
++ if (proc && proc->module)
++ snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s",
++ proc->module, proc->name, sym->name);
+ else
+- {
+- snprintf (name, sizeof name, "__%s_PROC_%s",
+- sym->ns->proc_name->name, sym->name);
+- return name;
+- }
++ snprintf (name, sizeof name, "__%s_PROC_%s",
++ proc->name, sym->name);
}
- /* For constants and byte-aligned/sized reads try to go through
-@@ -5804,8 +5807,8 @@
- return gimple_get_virt_method_for_vtable (token, v, offset, can_refer);
++
++ return name;
}
--/* Given a pointer value OP0, return a simplified version of an
-- indirection through OP0, or NULL_TREE if no simplification is
-+/* Given a pointer value T, return a simplified version of an
-+ indirection through T, or NULL_TREE if no simplification is
- possible. Note that the resulting type may be different from
- the type pointed to in the sense that it is still compatible
- from the langhooks point of view. */
-@@ -5819,7 +5822,8 @@
-
- STRIP_NOPS (sub);
- subtype = TREE_TYPE (sub);
-- if (!POINTER_TYPE_P (subtype))
-+ if (!POINTER_TYPE_P (subtype)
-+ || TYPE_REF_CAN_ALIAS_ALL (ptype))
- return NULL_TREE;
+ /* Get mangled identifier, adding the symbol to the global table if
+@@ -1892,9 +1885,13 @@
+ if (sym->attr.associate_var)
+ GFC_DECL_ASSOCIATE_VAR_P (decl) = 1;
- if (TREE_CODE (sub) == ADDR_EXPR)
-Index: gcc/cselib.c
-===================================================================
---- a/src/gcc/cselib.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/cselib.c (.../branches/gcc-6-branch)
-@@ -49,7 +49,7 @@
- static void unchain_one_elt_list (struct elt_list **);
- static void unchain_one_elt_loc_list (struct elt_loc_list **);
- static void remove_useless_values (void);
--static int rtx_equal_for_cselib_1 (rtx, rtx, machine_mode);
-+static int rtx_equal_for_cselib_1 (rtx, rtx, machine_mode, int);
- static unsigned int cselib_hash_rtx (rtx, int, machine_mode);
- static cselib_val *new_cselib_val (unsigned int, machine_mode, rtx);
- static void add_mem_for_addr (cselib_val *, cselib_val *, rtx);
-@@ -125,7 +125,7 @@
- /* We don't guarantee that distinct rtx's have different hash values,
- so we need to do a comparison. */
- for (l = v->locs; l; l = l->next)
-- if (rtx_equal_for_cselib_1 (l->loc, x, memmode))
-+ if (rtx_equal_for_cselib_1 (l->loc, x, memmode, 0))
- {
- promote_debug_loc (l);
- return true;
-@@ -794,7 +794,7 @@
- int
- rtx_equal_for_cselib_p (rtx x, rtx y)
- {
-- return rtx_equal_for_cselib_1 (x, y, VOIDmode);
-+ return rtx_equal_for_cselib_1 (x, y, VOIDmode, 0);
- }
-
- /* If x is a PLUS or an autoinc operation, expand the operation,
-@@ -844,7 +844,7 @@
- addresses, MEMMODE should be VOIDmode. */
++ /* We no longer mark __def_init as read-only so it does not take up
++ space in the read-only section and dan go into the BSS instead,
++ see PR 84487. Marking this as artificial means that OpenMP will
++ treat this as predetermined shared. */
+ if (sym->attr.vtab
+ || (sym->name[0] == '_' && gfc_str_startswith (sym->name, "__def_init")))
+- TREE_READONLY (decl) = 1;
++ DECL_ARTIFICIAL (decl) = 1;
- static int
--rtx_equal_for_cselib_1 (rtx x, rtx y, machine_mode memmode)
-+rtx_equal_for_cselib_1 (rtx x, rtx y, machine_mode memmode, int depth)
- {
- enum rtx_code code;
- const char *fmt;
-@@ -877,6 +877,9 @@
- if (GET_CODE (y) == VALUE)
- return e == canonical_cselib_val (CSELIB_VAL_PTR (y));
+ return decl;
+ }
+@@ -5862,9 +5859,11 @@
+ }
+ else if (warn_unused_dummy_argument)
+ {
+- gfc_warning (OPT_Wunused_dummy_argument,
+- "Unused dummy argument %qs at %L", sym->name,
+- &sym->declared_at);
++ if (!sym->attr.artificial)
++ gfc_warning (OPT_Wunused_dummy_argument,
++ "Unused dummy argument %qs at %L", sym->name,
++ &sym->declared_at);
++
+ if (sym->backend_decl != NULL_TREE)
+ TREE_NO_WARNING(sym->backend_decl) = 1;
+ }
+@@ -5956,7 +5955,14 @@
-+ if (depth == 128)
-+ return 0;
-+
- for (l = e->locs; l; l = l->next)
+ if (sym->ns && sym->ns->construct_entities)
{
- rtx t = l->loc;
-@@ -886,7 +889,7 @@
- list. */
- if (REG_P (t) || MEM_P (t) || GET_CODE (t) == VALUE)
- continue;
-- else if (rtx_equal_for_cselib_1 (t, y, memmode))
-+ else if (rtx_equal_for_cselib_1 (t, y, memmode, depth + 1))
- return 1;
+- if (sym->attr.referenced)
++ /* Construction of the intrinsic modules within a BLOCK
++ construct, where ONLY and RENAMED entities are included,
++ seems to be bogus. This is a workaround that can be removed
++ if someone ever takes on the task to creating full-fledge
++ modules. See PR 69455. */
++ if (sym->attr.referenced
++ && sym->from_intmod != INTMOD_ISO_C_BINDING
++ && sym->from_intmod != INTMOD_ISO_FORTRAN_ENV)
+ gfc_get_symbol_decl (sym);
+ sym->mark = 1;
}
-
-@@ -897,6 +900,9 @@
- cselib_val *e = canonical_cselib_val (CSELIB_VAL_PTR (y));
- struct elt_loc_list *l;
-
-+ if (depth == 128)
-+ return 0;
-+
- for (l = e->locs; l; l = l->next)
- {
- rtx t = l->loc;
-@@ -903,7 +909,7 @@
-
- if (REG_P (t) || MEM_P (t) || GET_CODE (t) == VALUE)
- continue;
-- else if (rtx_equal_for_cselib_1 (x, t, memmode))
-+ else if (rtx_equal_for_cselib_1 (x, t, memmode, depth + 1))
- return 1;
+@@ -6440,6 +6446,20 @@
+ TREE_TYPE (result), DECL_RESULT (fndecl),
+ result);
}
++ else
++ {
++ /* If the function does not have a result variable, result is
++ NULL_TREE, and a 'return' is generated without a variable.
++ The following generates a 'return __result_XXX' where XXX is
++ the function name. */
++ if (sym == sym->result && sym->attr.function)
++ {
++ result = gfc_get_fake_result_decl (sym, 0);
++ result = fold_build2_loc (input_location, MODIFY_EXPR,
++ TREE_TYPE (result),
++ DECL_RESULT (fndecl), result);
++ }
++ }
+ }
-@@ -924,12 +930,12 @@
- if (!xoff != !yoff)
- return 0;
-
-- if (xoff && !rtx_equal_for_cselib_1 (xoff, yoff, memmode))
-+ if (xoff && !rtx_equal_for_cselib_1 (xoff, yoff, memmode, depth))
- return 0;
+ return build1_v (RETURN_EXPR, result);
+Index: gcc/fortran/match.h
+===================================================================
+--- a/src/gcc/fortran/match.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/match.h (.../branches/gcc-9-branch)
+@@ -246,8 +246,11 @@
+ match gfc_match_dimension (void);
+ match gfc_match_external (void);
+ match gfc_match_gcc_attributes (void);
++match gfc_match_gcc_builtin (void);
++match gfc_match_gcc_ivdep (void);
++match gfc_match_gcc_novector (void);
+ match gfc_match_gcc_unroll (void);
+-match gfc_match_gcc_builtin (void);
++match gfc_match_gcc_vector (void);
+ match gfc_match_import (void);
+ match gfc_match_intent (void);
+ match gfc_match_intrinsic (void);
+Index: gcc/fortran/parse.c
+===================================================================
+--- a/src/gcc/fortran/parse.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/parse.c (.../branches/gcc-9-branch)
+@@ -1079,12 +1079,20 @@
+ match ("attributes", gfc_match_gcc_attributes, ST_ATTR_DECL);
+ match ("unroll", gfc_match_gcc_unroll, ST_NONE);
+ match ("builtin", gfc_match_gcc_builtin, ST_NONE);
++ match ("ivdep", gfc_match_gcc_ivdep, ST_NONE);
++ match ("vector", gfc_match_gcc_vector, ST_NONE);
++ match ("novector", gfc_match_gcc_novector, ST_NONE);
+
+ /* All else has failed, so give up. See if any of the matchers has
+ stored an error message of some sort. */
+
+ if (!gfc_error_check ())
+- gfc_error_now ("Unclassifiable GCC directive at %C");
++ {
++ if (pedantic)
++ gfc_error_now ("Unclassifiable GCC directive at %C");
++ else
++ gfc_warning_now (0, "Unclassifiable GCC directive at %C, ignored");
++ }
- /* Don't recurse if nothing changed. */
- if (x != xorig || y != yorig)
-- return rtx_equal_for_cselib_1 (x, y, memmode);
-+ return rtx_equal_for_cselib_1 (x, y, memmode, depth);
+ reject_statement ();
- return 0;
+@@ -4672,6 +4680,21 @@
+ new_st.ext.iterator->unroll = directive_unroll;
+ directive_unroll = -1;
+ }
++ if (directive_ivdep)
++ {
++ new_st.ext.iterator->ivdep = directive_ivdep;
++ directive_ivdep = false;
++ }
++ if (directive_vector)
++ {
++ new_st.ext.iterator->vector = directive_vector;
++ directive_vector = false;
++ }
++ if (directive_novector)
++ {
++ new_st.ext.iterator->novector = directive_novector;
++ directive_novector = false;
++ }
}
-@@ -963,7 +969,8 @@
- case MEM:
- /* We have to compare any autoinc operations in the addresses
- using this MEM's mode. */
-- return rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 0), GET_MODE (x));
-+ return rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 0), GET_MODE (x),
-+ depth);
-
- default:
- break;
-@@ -998,7 +1005,7 @@
- /* And the corresponding elements must match. */
- for (j = 0; j < XVECLEN (x, i); j++)
- if (! rtx_equal_for_cselib_1 (XVECEXP (x, i, j),
-- XVECEXP (y, i, j), memmode))
-+ XVECEXP (y, i, j), memmode, depth))
- return 0;
- break;
-
-@@ -1005,10 +1012,13 @@
- case 'e':
- if (i == 1
- && targetm.commutative_p (x, UNKNOWN)
-- && rtx_equal_for_cselib_1 (XEXP (x, 1), XEXP (y, 0), memmode)
-- && rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 1), memmode))
-+ && rtx_equal_for_cselib_1 (XEXP (x, 1), XEXP (y, 0), memmode,
-+ depth)
-+ && rtx_equal_for_cselib_1 (XEXP (x, 0), XEXP (y, 1), memmode,
-+ depth))
- return 1;
-- if (! rtx_equal_for_cselib_1 (XEXP (x, i), XEXP (y, i), memmode))
-+ if (! rtx_equal_for_cselib_1 (XEXP (x, i), XEXP (y, i), memmode,
-+ depth))
- return 0;
- break;
+ else
+ stree = NULL;
+@@ -5431,8 +5454,18 @@
+ }
-Index: gcc/simplify-rtx.c
-===================================================================
---- a/src/gcc/simplify-rtx.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/simplify-rtx.c (.../branches/gcc-6-branch)
-@@ -900,8 +900,10 @@
- && XEXP (op, 1) == constm1_rtx)
- return simplify_gen_unary (NEG, mode, XEXP (op, 0), mode);
-
-- /* Similarly, (not (neg X)) is (plus X -1). */
-- if (GET_CODE (op) == NEG)
-+ /* Similarly, (not (neg X)) is (plus X -1). Only do this for
-+ modes that have CONSTM1_RTX, i.e. MODE_INT, MODE_PARTIAL_INT
-+ and MODE_VECTOR_INT. */
-+ if (GET_CODE (op) == NEG && CONSTM1_RTX (mode))
- return simplify_gen_binary (PLUS, mode, XEXP (op, 0),
- CONSTM1_RTX (mode));
-
-Index: gcc/tree-sra.c
-===================================================================
---- a/src/gcc/tree-sra.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-sra.c (.../branches/gcc-6-branch)
-@@ -1638,6 +1638,13 @@
- unsigned HOST_WIDE_INT misalign;
- unsigned int align;
-
-+ /* Preserve address-space information. */
-+ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (base));
-+ if (as != TYPE_ADDR_SPACE (exp_type))
-+ exp_type = build_qualified_type (exp_type,
-+ TYPE_QUALS (exp_type)
-+ | ENCODE_QUAL_ADDR_SPACE (as));
-+
- gcc_checking_assert (offset % BITS_PER_UNIT == 0);
- get_object_alignment_1 (base, &align, &misalign);
- base = get_addr_base_and_unit_offset (base, &base_offset);
-Index: gcc/ubsan.c
-===================================================================
---- a/src/gcc/ubsan.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ubsan.c (.../branches/gcc-6-branch)
-@@ -408,7 +408,9 @@
- {
- pp_left_bracket (&pretty_name);
- tree dom = TYPE_DOMAIN (t);
-- if (dom && TREE_CODE (TYPE_MAX_VALUE (dom)) == INTEGER_CST)
-+ if (dom != NULL_TREE
-+ && TYPE_MAX_VALUE (dom) != NULL_TREE
-+ && TREE_CODE (TYPE_MAX_VALUE (dom)) == INTEGER_CST)
- {
- if (tree_fits_uhwi_p (TYPE_MAX_VALUE (dom))
- && tree_to_uhwi (TYPE_MAX_VALUE (dom)) + 1 != 0)
-@@ -1471,7 +1473,7 @@
-
- expanded_location xloc = expand_location (loc);
- if (xloc.file == NULL || strncmp (xloc.file, "\1", 2) == 0
-- || xloc.file == '\0' || xloc.file[0] == '\xff'
-+ || xloc.file[0] == '\0' || xloc.file[0] == '\xff'
- || xloc.file[1] == '\xff')
- return false;
+ if (directive_unroll != -1)
+- gfc_error ("%<GCC unroll%> directive does not commence a loop at %C");
++ gfc_error ("%<GCC unroll%> directive not at the start of a loop at %C");
-@@ -1758,7 +1760,7 @@
- {
- tree repr = DECL_BIT_FIELD_REPRESENTATIVE (TREE_OPERAND (t, 1));
- t = build3 (COMPONENT_REF, TREE_TYPE (repr), TREE_OPERAND (t, 0),
-- repr, NULL_TREE);
-+ repr, TREE_OPERAND (t, 2));
- }
- break;
- case ARRAY_REF:
-Index: gcc/lto/ChangeLog
-===================================================================
---- a/src/gcc/lto/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/lto/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,12 @@
-+2017-01-17 Jakub Jelinek <jakub@redhat.com>
++ if (directive_ivdep)
++ gfc_error ("%<GCC ivdep%> directive not at the start of a loop at %C");
+
-+ Backported from mainline
-+ 2017-01-11 Jakub Jelinek <jakub@redhat.com>
++ if (directive_vector)
++ gfc_error ("%<GCC vector%> directive not at the start of a loop at %C");
+
-+ PR middle-end/50199
-+ * lto-lang.c (lto_post_options): Force flag_merge_constants = 1
-+ if it was 0.
++ if (directive_novector)
++ gfc_error ("%<GCC novector%> "
++ "directive not at the start of a loop at %C");
+
- 2016-12-21 Release Manager
-
- * GCC 6.3.0 released.
-Index: gcc/lto/lto-lang.c
-===================================================================
---- a/src/gcc/lto/lto-lang.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/lto/lto-lang.c (.../branches/gcc-6-branch)
-@@ -852,6 +852,12 @@
- support. */
- flag_excess_precision_cmdline = EXCESS_PRECISION_FAST;
-
-+ /* When partitioning, we can tear appart STRING_CSTs uses from the same
-+ TU into multiple partitions. Without constant merging the constants
-+ might not be equal at runtime. See PR50199. */
-+ if (!flag_merge_constants)
-+ flag_merge_constants = 1;
-+
- /* Initialize the compiler back end. */
- return false;
- }
-Index: gcc/ipa-prop.c
-===================================================================
---- a/src/gcc/ipa-prop.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ipa-prop.c (.../branches/gcc-6-branch)
-@@ -4745,7 +4745,7 @@
- lto_symtab_encoder_iterator lsei;
- lto_symtab_encoder_t encoder;
-
-- if (!ipa_node_params_sum)
-+ if (!ipa_node_params_sum || !ipa_edge_args_vector)
- return;
-
- ob = create_output_block (LTO_section_jump_functions);
-Index: gcc/po/exgettext
-===================================================================
---- a/src/gcc/po/exgettext (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/po/exgettext (.../branches/gcc-6-branch)
-@@ -237,6 +237,8 @@
- field = 0
- while (getline < file) {
- if (/^[ \t]*(;|$)/ || !/^[^ \t]/) {
-+ if (field > 2)
-+ printf("_(\"%s\")\n", line)
- field = 0
- } else {
- if ((field == 1) && /MissingArgError/) {
-@@ -275,12 +277,15 @@
- if (field == 2) {
- line = $0
- printf("#line %d \"%s\"\n", lineno, file)
-- printf("_(\"%s\")\n", line)
-+ } else if (field > 2) {
-+ line = line " " $0
- }
- field++;
- }
- lineno++;
+ st = next_statement ();
}
-+ if (field > 2)
-+ printf("_(\"%s\")\n", line)
- }') >> $emsg
-
- # Run the xgettext commands, with temporary added as a file to scan.
-Index: gcc/po/es.po
+ }
+Index: gcc/fortran/check.c
===================================================================
---- a/src/gcc/po/es.po (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/po/es.po (.../branches/gcc-6-branch)
-@@ -16,7 +16,7 @@
- # demangled - mutilado
- # hardware - hardware
- # hotness - calentura
--# insns - TBD
-+# insns - instrucciones #: config/frv/frv.opt:126
- # instruction - instrucción
- # iv optimization - optimización iv
- # omp (OpenMP) - omp
-@@ -36,7 +36,7 @@
- "Project-Id-Version: gcc 6.2.0\n"
- "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
- "POT-Creation-Date: 2016-08-19 21:03+0000\n"
--"PO-Revision-Date: 2016-12-15 01:25+0100\n"
-+"PO-Revision-Date: 2016-12-31 09:29+0100\n"
- "Last-Translator: Antonio Ceballos <aceballos@gmail.com>\n"
- "Language-Team: Spanish <es@tp.org.es>\n"
- "Language: es\n"
-@@ -11633,140 +11633,94 @@
- msgstr "Usa instrucciones high de multiplicación para la parte high de la multiplicación 32x32."
-
- #: config/microblaze/microblaze.opt:104
--#, fuzzy
--#| msgid "Use hardware floating point conversion instructions"
- msgid "Use hardware floating point conversion instructions."
- msgstr "Usa instrucciones de conversión de coma flotante de hardware."
-
- #: config/microblaze/microblaze.opt:108
--#, fuzzy
--#| msgid "Use hardware floating point square root instruction"
- msgid "Use hardware floating point square root instruction."
- msgstr "Usa instrucciones de raíz cuadrada de coma flotante de hardware."
-
- #: config/microblaze/microblaze.opt:112
--#, fuzzy
--#| msgid "Description for mxl-mode-executable"
- msgid "Description for mxl-mode-executable."
- msgstr "Descripción para mxl-mode-executable."
-
- #: config/microblaze/microblaze.opt:116
--#, fuzzy
--#| msgid "Description for mxl-mode-xmdstub"
- msgid "Description for mxl-mode-xmdstub."
- msgstr "Descripción para mxl-mode-xmdstub."
-
- #: config/microblaze/microblaze.opt:120
--#, fuzzy
--#| msgid "Description for mxl-mode-bootstrap"
- msgid "Description for mxl-mode-bootstrap."
- msgstr "Descripción para mxl-mode-bootstrap."
-
- #: config/microblaze/microblaze.opt:124
--#, fuzzy
--#| msgid "Description for mxl-mode-novectors"
- msgid "Description for mxl-mode-novectors."
- msgstr "Descripción para mxl-mode-novectors."
-
- #: config/microblaze/microblaze.opt:128
--#, fuzzy
--#| msgid "Use hardware quad FP instructions"
- msgid "Use hardware prefetch instruction"
--msgstr "Usa instrucciones de FP quad de hardware"
-+msgstr "Usa instrucciones de precargado de hardware"
-
- #: config/vax/vax.opt:23 config/vax/vax.opt:27
--#, fuzzy
--#| msgid "Target DFLOAT double precision code"
- msgid "Target DFLOAT double precision code."
- msgstr "Apunta a código DFLOAT de doble precisión."
-
- #: config/vax/vax.opt:31 config/vax/vax.opt:35
--#, fuzzy
--#| msgid "Generate GFLOAT double precision code"
- msgid "Generate GFLOAT double precision code."
- msgstr "Genera código GFLOAT de doble precisión."
-
- #: config/vax/vax.opt:39
--#, fuzzy
--#| msgid "Generate code for GNU assembler (gas)"
- msgid "Generate code for GNU assembler (gas)."
- msgstr "Genera código para el ensamblador de GNU (gas)."
-
- #: config/vax/vax.opt:43
--#, fuzzy
--#| msgid "Generate code for UNIX assembler"
- msgid "Generate code for UNIX assembler."
- msgstr "Genera código para el ensamblador UNIX."
-
- #: config/vax/vax.opt:47
--#, fuzzy
--#| msgid "Use VAXC structure conventions"
- msgid "Use VAXC structure conventions."
--msgstr "Usa convenciones de estructura VAXC."
-+msgstr "Usa los convenios de estructura VAXC."
-
- #: config/vax/vax.opt:51
--#, fuzzy
--#| msgid "Use new adddi3/subdi3 patterns"
- msgid "Use new adddi3/subdi3 patterns."
--msgstr "Usa patrones nuevos adddi3/subdi3."
-+msgstr "Usa los patrones nuevos adddi3/subdi3."
+--- a/src/gcc/fortran/check.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/check.c (.../branches/gcc-9-branch)
+@@ -924,6 +924,10 @@
+ }
- #: config/frv/frv.opt:30
--#, fuzzy
--#| msgid "Use 4 media accumulators"
- msgid "Use 4 media accumulators."
- msgstr "Usa 4 acumuladores de medios."
- #: config/frv/frv.opt:34
--#, fuzzy
--#| msgid "Use 8 media accumulators"
- msgid "Use 8 media accumulators."
- msgstr "Usa 8 acumuladores de medios."
++/* Limited checking for ALLOCATED intrinsic. Additional checking
++ is performed in intrinsic.c(sort_actual), because ALLOCATED
++ has two mutually exclusive non-optional arguments. */
++
+ bool
+ gfc_check_allocated (gfc_expr *array)
+ {
+@@ -2781,6 +2785,22 @@
- #: config/frv/frv.opt:38
--#, fuzzy
--#| msgid "Enable label alignment optimizations"
- msgid "Enable label alignment optimizations."
- msgstr "Activa las optimizaciones de alineación de etiquetas."
+ if (!scalar_check (status, 2))
+ return false;
++
++ if (status->expr_type != EXPR_VARIABLE)
++ {
++ gfc_error ("STATUS at %L shall be an INTENT(OUT) variable",
++ &status->where);
++ return false;
++ }
++
++ if (status->expr_type == EXPR_VARIABLE
++ && status->symtree && status->symtree->n.sym
++ && status->symtree->n.sym->attr.intent == INTENT_IN)
++ {
++ gfc_error ("%qs at %L shall be an INTENT(OUT) variable",
++ status->symtree->name, &status->where);
++ return false;
++ }
+ }
- #: config/frv/frv.opt:42
--#, fuzzy
--#| msgid "Dynamically allocate cc registers"
- msgid "Dynamically allocate cc registers."
- msgstr "Asigna dinámicamente los registros cc."
+ return true;
+@@ -3343,6 +3363,7 @@
+ gfc_check_findloc (gfc_actual_arglist *ap)
+ {
+ gfc_expr *a, *v, *m, *d, *k, *b;
++ bool a1, v1;
- #: config/frv/frv.opt:49
--#, fuzzy
--#| msgid "Set the cost of branches"
- msgid "Set the cost of branches."
- msgstr "Establece el costo de las ramificaciones."
+ a = ap->expr;
+ if (!intrinsic_type_check (a, 0) || !array_check (a, 0))
+@@ -3349,20 +3370,20 @@
+ return false;
- #: config/frv/frv.opt:53
--#, fuzzy
--#| msgid "Enable conditional execution other than moves/scc"
- msgid "Enable conditional execution other than moves/scc."
- msgstr "Activa la ejecución condicional en lugar de moves/scc."
+ v = ap->next->expr;
+- if (!scalar_check (v,1))
++ if (!intrinsic_type_check (v, 1) || !scalar_check (v,1))
+ return false;
- #: config/frv/frv.opt:57
--#, fuzzy
--#| msgid "Change the maximum length of conditionally-executed sequences"
- msgid "Change the maximum length of conditionally-executed sequences."
- msgstr "Cambia la longitud máxima de las secuencias ejecutadas condicionalmente."
+- /* Check if the type is compatible. */
++ /* Check if the type are both logical. */
++ a1 = a->ts.type == BT_LOGICAL;
++ v1 = v->ts.type == BT_LOGICAL;
++ if ((a1 && !v1) || (!a1 && v1))
++ goto incompat;
- #: config/frv/frv.opt:61
--#, fuzzy
--#| msgid "Change the number of temporary registers that are available to conditionally-executed sequences"
- msgid "Change the number of temporary registers that are available to conditionally-executed sequences."
- msgstr "Cambia el número de registros temporales disponibles para secuencias ejecutadas condicionalmente."
+- if ((a->ts.type == BT_LOGICAL && v->ts.type != BT_LOGICAL)
+- || (a->ts.type != BT_LOGICAL && v->ts.type == BT_LOGICAL))
+- {
+- gfc_error ("Argument %qs of %qs intrinsic at %L must be in type "
+- "conformance to argument %qs at %L",
+- gfc_current_intrinsic_arg[0]->name,
+- gfc_current_intrinsic, &a->where,
+- gfc_current_intrinsic_arg[1]->name, &v->where);
+- }
++ /* Check if the type are both character. */
++ a1 = a->ts.type == BT_CHARACTER;
++ v1 = v->ts.type == BT_CHARACTER;
++ if ((a1 && !v1) || (!a1 && v1))
++ goto incompat;
+
+ d = ap->next->next->expr;
+ m = ap->next->next->next->expr;
+@@ -3410,6 +3431,14 @@
+ return false;
- #: config/frv/frv.opt:65
--#, fuzzy
--#| msgid "Enable conditional moves"
- msgid "Enable conditional moves."
- msgstr "Activa moves condicionales."
+ return true;
++
++incompat:
++ gfc_error ("Argument %qs of %qs intrinsic at %L must be in type "
++ "conformance to argument %qs at %L",
++ gfc_current_intrinsic_arg[0]->name,
++ gfc_current_intrinsic, &a->where,
++ gfc_current_intrinsic_arg[1]->name, &v->where);
++ return false;
+ }
- #: config/frv/frv.opt:69
--#, fuzzy
--#| msgid "Set the target CPU type"
- msgid "Set the target CPU type."
- msgstr "Especifica el tipo del CPU destino."
-@@ -11775,296 +11729,204 @@
- msgstr "CPUs FR-V conocidos (para usar con la opción -mcpu=):"
+@@ -6549,6 +6578,14 @@
+ bool
+ gfc_check_is_contiguous (gfc_expr *array)
+ {
++ if (array->expr_type == EXPR_NULL
++ && array->symtree->n.sym->attr.pointer == 1)
++ {
++ gfc_error ("Actual argument at %L of %qs intrinsic shall be an "
++ "associated pointer", &array->where, gfc_current_intrinsic);
++ return false;
++ }
++
+ if (!array_check (array, 0))
+ return false;
- #: config/frv/frv.opt:122
--#, fuzzy
--#| msgid "Use fp double instructions"
- msgid "Use fp double instructions."
- msgstr "Usa instrucciones fp double."
+@@ -6556,7 +6593,6 @@
+ }
- #: config/frv/frv.opt:126
--#, fuzzy
--#| msgid "Change the ABI to allow double word insns"
- msgid "Change the ABI to allow double word insns."
- msgstr "Cambia la ABI para permitir instrucciones double word."
- #: config/frv/frv.opt:134
--#, fuzzy
--#| msgid "Just use icc0/fcc0"
- msgid "Just use icc0/fcc0."
- msgstr "Usa solamente icc0/fcc0."
+-
+ bool
+ gfc_check_isatty (gfc_expr *unit)
+ {
+Index: gcc/fortran/primary.c
+===================================================================
+--- a/src/gcc/fortran/primary.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/primary.c (.../branches/gcc-9-branch)
+@@ -1990,6 +1990,7 @@
+ match m;
+ bool unknown;
+ bool inquiry;
++ bool intrinsic;
+ locus old_loc;
+ char sep;
+
+@@ -2194,11 +2195,15 @@
+ if (m != MATCH_YES)
+ return MATCH_ERROR;
+
++ intrinsic = false;
+ if (primary->ts.type != BT_CLASS && primary->ts.type != BT_DERIVED)
+ {
+ inquiry = is_inquiry_ref (name, &tmp);
+ if (inquiry)
+ sym = NULL;
++
++ if (sep == '%' && primary->ts.type != BT_UNKNOWN)
++ intrinsic = true;
+ }
+ else
+ inquiry = false;
+@@ -2258,12 +2263,16 @@
+ break;
+ }
- #: config/frv/frv.opt:138
--#, fuzzy
--#| msgid "Only use 32 FPRs"
- msgid "Only use 32 FPRs."
- msgstr "Usa solamente 32 FPRs."
+- if (!inquiry)
++ if (!inquiry && !intrinsic)
+ component = gfc_find_component (sym, name, false, false, &tmp);
+ else
+ component = NULL;
- #: config/frv/frv.opt:142
--#, fuzzy
--#| msgid "Use 64 FPRs"
- msgid "Use 64 FPRs."
- msgstr "Usa 64 FPRs."
+- if (component == NULL && !inquiry)
++ /* In some cases, returning MATCH_NO gives a better error message. Most
++ cases return "Unclassifiable statement at..." */
++ if (intrinsic && !inquiry)
++ return MATCH_NO;
++ else if (component == NULL && !inquiry)
+ return MATCH_ERROR;
- #: config/frv/frv.opt:146
--#, fuzzy
--#| msgid "Only use 32 GPRs"
- msgid "Only use 32 GPRs."
- msgstr "Usa solamente 32 GPRs."
+ /* Extend the reference chain determined by gfc_find_component or
+@@ -2284,6 +2293,8 @@
- #: config/frv/frv.opt:150
--#, fuzzy
--#| msgid "Use 64 GPRs"
- msgid "Use 64 GPRs."
- msgstr "Usa 64 GPRs."
+ if (tmp && tmp->type == REF_INQUIRY)
+ {
++ if (!primary->where.lb || !primary->where.nextc)
++ primary->where = gfc_current_locus;
+ gfc_simplify_expr (primary, 0);
+
+ if (primary->expr_type == EXPR_CONSTANT)
+@@ -2559,12 +2570,10 @@
+ break;
+
+ case AR_UNKNOWN:
+- /* If any of start, end or stride is not integer, there will
+- already have been an error issued. */
+- int errors;
+- gfc_get_errors (NULL, &errors);
+- if (errors == 0)
+- gfc_internal_error ("gfc_variable_attr(): Bad array reference");
++ /* For standard conforming code, AR_UNKNOWN should not happen.
++ For nonconforming code, gfortran can end up here. Treat it
++ as a no-op. */
++ break;
+ }
- #: config/frv/frv.opt:154
--#, fuzzy
--#| msgid "Enable use of GPREL for read-only data in FDPIC"
- msgid "Enable use of GPREL for read-only data in FDPIC."
- msgstr "Activa el uso de GPREL para datos de sólo lectura en FDPIC."
+ break;
+Index: gcc/fortran/misc.c
+===================================================================
+--- a/src/gcc/fortran/misc.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/misc.c (.../branches/gcc-9-branch)
+@@ -125,6 +125,7 @@
+ static char buffer2[GFC_MAX_SYMBOL_LEN + 7];
+ static int flag = 0;
+ char *buffer;
++ gfc_typespec *ts1;
+
+ buffer = flag ? buffer1 : buffer2;
+ flag = !flag;
+@@ -156,9 +157,8 @@
+ sprintf (buffer, "TYPE(%s)", ts->u.derived->name);
+ break;
+ case BT_CLASS:
+- if (ts->u.derived->components)
+- ts = &ts->u.derived->components->ts;
+- if (ts->u.derived->attr.unlimited_polymorphic)
++ ts1 = ts->u.derived->components ? &ts->u.derived->components->ts : NULL;
++ if (ts1 && ts1->u.derived && ts1->u.derived->attr.unlimited_polymorphic)
+ sprintf (buffer, "CLASS(*)");
+ else
+ sprintf (buffer, "CLASS(%s)", ts->u.derived->name);
+Index: gcc/fortran/simplify.c
+===================================================================
+--- a/src/gcc/fortran/simplify.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/fortran/simplify.c (.../branches/gcc-9-branch)
+@@ -4808,8 +4808,12 @@
+ gfc_constructor *tsource_ctor, *fsource_ctor, *mask_ctor;
- #: config/frv/frv.opt:166
--#, fuzzy
--#| msgid "Enable PIC support for building libraries"
- msgid "Enable PIC support for building libraries."
- msgstr "Activa el soporte PIC para construir bibliotecas."
+ if (mask->expr_type == EXPR_CONSTANT)
+- return gfc_get_parentheses (gfc_copy_expr (mask->value.logical
+- ? tsource : fsource));
++ {
++ result = gfc_copy_expr (mask->value.logical ? tsource : fsource);
++ result = gfc_get_parentheses (result);
++ gfc_simplify_expr (result, 1);
++ return result;
++ }
- #: config/frv/frv.opt:170
--#, fuzzy
--#| msgid "Follow the EABI linkage requirements"
- msgid "Follow the EABI linkage requirements."
- msgstr "Sigue los requerimientos de enlace de EABI."
+ if (!mask->rank || !is_constant_array_expr (mask)
+ || !is_constant_array_expr (tsource) || !is_constant_array_expr (fsource))
+@@ -6684,6 +6688,9 @@
+ mpz_init (index);
+ rank = 0;
- #: config/frv/frv.opt:174
--#, fuzzy
--#| msgid "Disallow direct calls to global functions"
- msgid "Disallow direct calls to global functions."
--msgstr "Desactiva las llamdas directas a funciones globales."
-+msgstr "Desactiva las llamadas directas a funciones globales."
++ for (i = 0; i < GFC_MAX_DIMENSIONS; i++)
++ x[i] = 0;
++
+ for (;;)
+ {
+ e = gfc_constructor_lookup_expr (shape_exp->value.constructor, rank);
+@@ -6708,9 +6715,29 @@
+ }
+ else
+ {
+- for (i = 0; i < rank; i++)
+- x[i] = 0;
++ mpz_t size;
++ int order_size, shape_size;
- #: config/frv/frv.opt:178
--#, fuzzy
--#| msgid "Use media instructions"
- msgid "Use media instructions."
- msgstr "Usa instrucciones de medios."
++ if (order_exp->rank != shape_exp->rank)
++ {
++ gfc_error ("Shapes of ORDER at %L and SHAPE at %L are different",
++ &order_exp->where, &shape_exp->where);
++ return &gfc_bad_expr;
++ }
++
++ gfc_array_size (shape_exp, &size);
++ shape_size = mpz_get_ui (size);
++ mpz_clear (size);
++ gfc_array_size (order_exp, &size);
++ order_size = mpz_get_ui (size);
++ mpz_clear (size);
++ if (order_size != shape_size)
++ {
++ gfc_error ("Sizes of ORDER at %L and SHAPE at %L are different",
++ &order_exp->where, &shape_exp->where);
++ return &gfc_bad_expr;
++ }
++
+ for (i = 0; i < rank; i++)
+ {
+ e = gfc_constructor_lookup_expr (order_exp->value.constructor, i);
+@@ -6718,9 +6745,22 @@
- #: config/frv/frv.opt:182
--#, fuzzy
--#| msgid "Use multiply add/subtract instructions"
- msgid "Use multiply add/subtract instructions."
- msgstr "Usa instrucciones acumular/sustraer de multiplicar."
+ gfc_extract_int (e, &order[i]);
- #: config/frv/frv.opt:186
--#, fuzzy
--#| msgid "Enable optimizing &&/|| in conditional execution"
- msgid "Enable optimizing &&/|| in conditional execution."
- msgstr "Activa la optimización &&/|| en la ejecución condicional."
+- gcc_assert (order[i] >= 1 && order[i] <= rank);
++ if (order[i] < 1 || order[i] > rank)
++ {
++ gfc_error ("Element with a value of %d in ORDER at %L must be "
++ "in the range [1, ..., %d] for the RESHAPE intrinsic "
++ "near %L", order[i], &order_exp->where, rank,
++ &shape_exp->where);
++ return &gfc_bad_expr;
++ }
++
+ order[i]--;
+- gcc_assert (x[order[i]] == 0);
++ if (x[order[i]] != 0)
++ {
++ gfc_error ("ORDER at %L is not a permutation of the size of "
++ "SHAPE at %L", &order_exp->where, &shape_exp->where);
++ return &gfc_bad_expr;
++ }
+ x[order[i]] = 1;
+ }
+ }
+@@ -8494,6 +8534,12 @@
+ {
+ if (c->expr->expr_type == EXPR_ARRAY)
+ tmp = gfc_convert_constant (c->expr, type, kind);
++ else if (c->expr->expr_type == EXPR_OP
++ && c->expr->value.op.op == INTRINSIC_PARENTHESES)
++ {
++ gfc_simplify_expr (c->expr, 1);
++ tmp = f (c->expr, kind);
++ }
+ else
+ tmp = f (c->expr, kind);
+ }
+Index: gcc/optc-save-gen.awk
+===================================================================
+--- a/src/gcc/optc-save-gen.awk (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/optc-save-gen.awk (.../branches/gcc-9-branch)
+@@ -332,7 +332,7 @@
+ print " indent_to, \"\",";
+ print " \"" name "\",";
+ print " ptr1->x_" name " ? ptr1->x_" name " : \"(null)\",";
+- print " ptr2->x_" name " ? ptr1->x_" name " : \"(null)\");";
++ print " ptr2->x_" name " ? ptr2->x_" name " : \"(null)\");";
+ print "";
+ }
- #: config/frv/frv.opt:190
--#, fuzzy
--#| msgid "Enable nested conditional execution optimizations"
- msgid "Enable nested conditional execution optimizations."
- msgstr "Activa las optimizaciones de ejecución condicional anidada."
+Index: gcc/BASE-VER
+===================================================================
+--- a/src/gcc/BASE-VER (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/BASE-VER (.../branches/gcc-9-branch)
+@@ -1 +1 @@
+-9.2.0
++9.2.1
+Index: gcc/function.c
+===================================================================
+--- a/src/gcc/function.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/function.c (.../branches/gcc-9-branch)
+@@ -2449,8 +2449,7 @@
+ /* If the parm is to be passed as a transparent union or record, use the
+ type of the first field for the tests below. We have already verified
+ that the modes are the same. */
+- if ((TREE_CODE (passed_type) == UNION_TYPE
+- || TREE_CODE (passed_type) == RECORD_TYPE)
++ if (RECORD_OR_UNION_TYPE_P (passed_type)
+ && TYPE_TRANSPARENT_AGGR (passed_type))
+ passed_type = TREE_TYPE (first_field (passed_type));
+
+@@ -3079,7 +3078,7 @@
+ move_block_from_reg (REGNO (entry_parm), mem,
+ size_stored / UNITS_PER_WORD);
+ }
+- else if (data->stack_parm == 0)
++ else if (data->stack_parm == 0 && !TYPE_EMPTY_P (data->passed_type))
+ {
+ push_to_sequence2 (all->first_conversion_insn, all->last_conversion_insn);
+ emit_block_move (stack_parm, data->entry_parm, GEN_INT (size),
+@@ -3455,7 +3454,9 @@
+ dest = validize_mem (copy_rtx (data->stack_parm));
+ src = validize_mem (copy_rtx (data->entry_parm));
+
+- if (MEM_P (src))
++ if (TYPE_EMPTY_P (data->passed_type))
++ /* Empty types don't really need to be copied. */;
++ else if (MEM_P (src))
+ {
+ /* Use a block move to handle potentially misaligned entry_parm. */
+ if (!to_conversion)
+@@ -3611,6 +3612,16 @@
+ {
+ assign_parm_find_stack_rtl (parm, &data);
+ assign_parm_adjust_entry_rtl (&data);
++ /* For arguments that occupy no space in the parameter
++ passing area, have non-zero size and have address taken,
++ force creation of a stack slot so that they have distinct
++ address from other parameters. */
++ if (TYPE_EMPTY_P (data.passed_type)
++ && TREE_ADDRESSABLE (parm)
++ && data.entry_parm == data.stack_parm
++ && MEM_P (data.entry_parm)
++ && int_size_in_bytes (data.passed_type))
++ data.stack_parm = NULL_RTX;
+ }
+ /* Record permanently how this parm was passed. */
+ if (data.passed_pointer)
+Index: gcc/tree-vectorizer.c
+===================================================================
+--- a/src/gcc/tree-vectorizer.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-vectorizer.c (.../branches/gcc-9-branch)
+@@ -941,7 +941,7 @@
+ fold_loop_internal_call (loop_vectorized_call,
+ boolean_true_node);
+ loop_vectorized_call = NULL;
+- ret |= TODO_cleanup_cfg;
++ ret |= TODO_cleanup_cfg | TODO_update_ssa_only_virtuals;
+ }
+ }
+ /* If outer loop vectorization fails for LOOP_VECTORIZED guarded
+Index: gcc/tree-vectorizer.h
+===================================================================
+--- a/src/gcc/tree-vectorizer.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-vectorizer.h (.../branches/gcc-9-branch)
+@@ -132,6 +132,9 @@
+ unsigned int vec_stmts_size;
+ /* Reference count in the SLP graph. */
+ unsigned int refcnt;
++ /* The maximum number of vector elements for the subtree rooted
++ at this node. */
++ poly_uint64 max_nunits;
+ /* Whether the scalar computations use two different operators. */
+ bool two_operators;
+ /* The DEF type of this node. */
+@@ -1350,19 +1353,27 @@
+ }
- #: config/frv/frv.opt:195
--#, fuzzy
--#| msgid "Do not mark ABI switches in e_flags"
- msgid "Do not mark ABI switches in e_flags."
- msgstr "No marca las opciones ABI en e_flags."
+ /* Update maximum unit count *MAX_NUNITS so that it accounts for
+- the number of units in vector type VECTYPE. *MAX_NUNITS can be 1
+- if we haven't yet recorded any vector types. */
++ NUNITS. *MAX_NUNITS can be 1 if we haven't yet recorded anything. */
- #: config/frv/frv.opt:199
--#, fuzzy
--#| msgid "Remove redundant membars"
- msgid "Remove redundant membars."
- msgstr "Remueve miembros redundantes."
+ static inline void
+-vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
++vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
+ {
+ /* All unit counts have the form current_vector_size * X for some
+ rational X, so two unit sizes must have a common multiple.
+ Everything is a multiple of the initial value of 1. */
+- poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
+ *max_nunits = force_common_multiple (*max_nunits, nunits);
+ }
- #: config/frv/frv.opt:203
--#, fuzzy
--#| msgid "Pack VLIW instructions"
- msgid "Pack VLIW instructions."
- msgstr "Empaca las instrucciones VLIW."
++/* Update maximum unit count *MAX_NUNITS so that it accounts for
++ the number of units in vector type VECTYPE. *MAX_NUNITS can be 1
++ if we haven't yet recorded any vector types. */
++
++static inline void
++vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
++{
++ vect_update_max_nunits (max_nunits, TYPE_VECTOR_SUBPARTS (vectype));
++}
++
+ /* Return the vectorization factor that should be used for costing
+ purposes while vectorizing the loop described by LOOP_VINFO.
+ Pick a reasonable estimate if the vectorization factor isn't
+Index: gcc/tree-vect-loop.c
+===================================================================
+--- a/src/gcc/tree-vect-loop.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-vect-loop.c (.../branches/gcc-9-branch)
+@@ -6445,10 +6445,13 @@
+ gcc_assert (TREE_CODE (base) == INTEGER_CST
+ && TREE_CODE (step) == INTEGER_CST);
+ cond_reduc_val = NULL_TREE;
++ tree res = PHI_RESULT (STMT_VINFO_STMT (cond_stmt_vinfo));
++ if (!types_compatible_p (TREE_TYPE (res), TREE_TYPE (base)))
++ ;
+ /* Find a suitable value, for MAX_EXPR below base, for MIN_EXPR
+ above base; punt if base is the minimum value of the type for
+ MAX_EXPR or maximum value of the type for MIN_EXPR for now. */
+- if (tree_int_cst_sgn (step) == -1)
++ else if (tree_int_cst_sgn (step) == -1)
+ {
+ cond_reduc_op_code = MIN_EXPR;
+ if (tree_int_cst_sgn (base) == -1)
+Index: gcc/ggc.h
+===================================================================
+--- a/src/gcc/ggc.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ggc.h (.../branches/gcc-9-branch)
+@@ -243,6 +243,9 @@
+ function is called, not during allocations. */
+ extern void ggc_collect (void);
- #: config/frv/frv.opt:207
--#, fuzzy
--#| msgid "Enable setting GPRs to the result of comparisons"
- msgid "Enable setting GPRs to the result of comparisons."
- msgstr "Permite establecer los GPRs al resultado de las comparaciones."
++/* Return unused memory pages to the system. */
++extern void ggc_trim (void);
++
+ /* Assume that all GGC memory is reachable and grow the limits for next collection. */
+ extern void ggc_grow (void);
- #: config/frv/frv.opt:211
--#, fuzzy
--#| msgid "Change the amount of scheduler lookahead"
- msgid "Change the amount of scheduler lookahead."
- msgstr "Cambia la cantidad de vista hacia adelante del planificador."
+Index: gcc/gimplify.c
+===================================================================
+--- a/src/gcc/gimplify.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/gimplify.c (.../branches/gcc-9-branch)
+@@ -7058,6 +7058,8 @@
+ kind = lang_hooks.decls.omp_predetermined_sharing (decl);
+ if (kind != OMP_CLAUSE_DEFAULT_UNSPECIFIED)
+ default_kind = kind;
++ else if (VAR_P (decl) && TREE_STATIC (decl) && DECL_IN_CONSTANT_POOL (decl))
++ default_kind = OMP_CLAUSE_DEFAULT_SHARED;
- #: config/frv/frv.opt:219
--#, fuzzy
--#| msgid "Assume a large TLS segment"
- msgid "Assume a large TLS segment."
- msgstr "Asume un segmento TLS grande."
+ switch (default_kind)
+ {
+Index: gcc/calls.c
+===================================================================
+--- a/src/gcc/calls.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/calls.c (.../branches/gcc-9-branch)
+@@ -1971,8 +1971,7 @@
+ /* If TYPE is a transparent union or record, pass things the way
+ we would pass the first field of the union or record. We have
+ already verified that the modes are the same. */
+- if ((TREE_CODE (type) == UNION_TYPE || TREE_CODE (type) == RECORD_TYPE)
+- && TYPE_TRANSPARENT_AGGR (type))
++ if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type))
+ type = TREE_TYPE (first_field (type));
+
+ /* Decide where to pass this arg.
+@@ -2750,6 +2749,9 @@
+ poly_int64 size = 0;
+ HOST_WIDE_INT const_size = 0;
+ rtx_insn *before_arg = get_last_insn ();
++ tree type = TREE_TYPE (args[i].tree_value);
++ if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type))
++ type = TREE_TYPE (first_field (type));
+ /* Set non-negative if we must move a word at a time, even if
+ just one word (e.g, partial == 4 && mode == DFmode). Set
+ to -1 if we just use a normal move insn. This value can be
+@@ -2762,11 +2764,11 @@
+ gcc_assert (partial % UNITS_PER_WORD == 0);
+ nregs = partial / UNITS_PER_WORD;
+ }
+- else if (TYPE_MODE (TREE_TYPE (args[i].tree_value)) == BLKmode)
++ else if (TYPE_MODE (type) == BLKmode)
+ {
+ /* Variable-sized parameters should be described by a
+ PARALLEL instead. */
+- const_size = int_size_in_bytes (TREE_TYPE (args[i].tree_value));
++ const_size = int_size_in_bytes (type);
+ gcc_assert (const_size >= 0);
+ nregs = (const_size + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD;
+ size = const_size;
+@@ -2893,8 +2895,7 @@
+ if (GET_CODE (reg) == PARALLEL)
+ use_group_regs (call_fusage, reg);
+ else if (nregs == -1)
+- use_reg_mode (call_fusage, reg,
+- TYPE_MODE (TREE_TYPE (args[i].tree_value)));
++ use_reg_mode (call_fusage, reg, TYPE_MODE (type));
+ else if (nregs > 0)
+ use_regs (call_fusage, REGNO (reg), nregs);
+ }
+Index: gcc/tree-dfa.c
+===================================================================
+--- a/src/gcc/tree-dfa.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-dfa.c (.../branches/gcc-9-branch)
+@@ -61,23 +61,23 @@
+ /* Renumber all of the gimple stmt uids. */
- #: config/frv/frv.opt:223
--#, fuzzy
--#| msgid "Do not assume a large TLS segment"
- msgid "Do not assume a large TLS segment."
- msgstr "No asume un segmento TLS grande."
+ void
+-renumber_gimple_stmt_uids (void)
++renumber_gimple_stmt_uids (struct function *fun)
+ {
+ basic_block bb;
- #: config/frv/frv.opt:228
--#, fuzzy
--#| msgid "Cause gas to print tomcat statistics"
- msgid "Cause gas to print tomcat statistics."
- msgstr "Causa que gas muestre estadísticas de tomcat."
+- set_gimple_stmt_max_uid (cfun, 0);
+- FOR_ALL_BB_FN (bb, cfun)
++ set_gimple_stmt_max_uid (fun, 0);
++ FOR_ALL_BB_FN (bb, fun)
+ {
+ gimple_stmt_iterator bsi;
+ for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi))
+ {
+ gimple *stmt = gsi_stmt (bsi);
+- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun));
++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fun));
+ }
+ for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
+ {
+ gimple *stmt = gsi_stmt (bsi);
+- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun));
++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fun));
+ }
+ }
+ }
+Index: gcc/tree-dfa.h
+===================================================================
+--- a/src/gcc/tree-dfa.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-dfa.h (.../branches/gcc-9-branch)
+@@ -20,7 +20,7 @@
+ #ifndef GCC_TREE_DFA_H
+ #define GCC_TREE_DFA_H
+
+-extern void renumber_gimple_stmt_uids (void);
++extern void renumber_gimple_stmt_uids (struct function *);
+ extern void renumber_gimple_stmt_uids_in_blocks (basic_block *, int);
+ extern void dump_variable (FILE *, tree);
+ extern void debug_variable (tree);
+Index: gcc/gimple-fold.c
+===================================================================
+--- a/src/gcc/gimple-fold.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/gimple-fold.c (.../branches/gcc-9-branch)
+@@ -6557,6 +6557,7 @@
+
+ fn = (*valueize) (gimple_call_fn (stmt));
+ if (TREE_CODE (fn) == ADDR_EXPR
++ && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL
+ && fndecl_built_in_p (TREE_OPERAND (fn, 0))
+ && gimple_builtin_call_types_compatible_p (stmt,
+ TREE_OPERAND (fn, 0)))
+Index: gcc/tree-cfgcleanup.c
+===================================================================
+--- a/src/gcc/tree-cfgcleanup.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-cfgcleanup.c (.../branches/gcc-9-branch)
+@@ -101,6 +101,8 @@
+ if (high)
+ {
+ tree lhs, rhs;
++ if (range_check_type (TREE_TYPE (index)) == NULL_TREE)
++ return false;
+ generate_range_test (bb, index, low, high, &lhs, &rhs);
+ cond = gimple_build_cond (LE_EXPR, lhs, rhs, NULL_TREE, NULL_TREE);
+ }
+Index: gcc/symbol-summary.h
+===================================================================
+--- a/src/gcc/symbol-summary.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/symbol-summary.h (.../branches/gcc-9-branch)
+@@ -461,6 +461,8 @@
+ if ((*m_vector)[i] != NULL)
+ this->release ((*m_vector)[i]);
- #: config/frv/frv.opt:233
--#, fuzzy
--#| msgid "Link with the library-pic libraries"
- msgid "Link with the library-pic libraries."
- msgstr "Enlaza con las bibliotecas de pic de biblioteca."
++ vec_free (m_vector);
++
+ this->m_released = true;
+ }
- #: config/frv/frv.opt:237
--#, fuzzy
--#| msgid "Allow branches to be packed with other instructions"
- msgid "Allow branches to be packed with other instructions."
- msgstr "Permite que las ramificaciones se empaquen con otras instrucciones."
+@@ -926,6 +928,8 @@
+ if ((*m_vector)[i] != NULL)
+ this->release ((*m_vector)[i]);
- #: config/mn10300/mn10300.opt:30
--#, fuzzy
--#| msgid "Target the AM33 processor"
- msgid "Target the AM33 processor."
- msgstr "Apunta al procesador AM33."
++ vec_free (m_vector);
++
+ this->m_released = true;
+ }
- #: config/mn10300/mn10300.opt:34
--#, fuzzy
--#| msgid "Target the AM33/2.0 processor"
- msgid "Target the AM33/2.0 processor."
- msgstr "Apunta al procesador AM33/2.0."
+Index: gcc/cfgcleanup.c
+===================================================================
+--- a/src/gcc/cfgcleanup.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/cfgcleanup.c (.../branches/gcc-9-branch)
+@@ -53,6 +53,7 @@
+ #include "dce.h"
+ #include "dbgcnt.h"
+ #include "rtl-iter.h"
++#include "regs.h"
- #: config/mn10300/mn10300.opt:38
--#, fuzzy
--#| msgid "Target the AM34 processor"
- msgid "Target the AM34 processor."
- msgstr "Apunta al procesador AM34."
+ #define FORWARDER_BLOCK_P(BB) ((BB)->flags & BB_FORWARDER_BLOCK)
- #: config/mn10300/mn10300.opt:46
--#, fuzzy
--#| msgid "Work around hardware multiply bug"
- msgid "Work around hardware multiply bug."
- msgstr "Evita el error de multiplicación de hardware."
+@@ -257,6 +258,10 @@
+ bool failed = false;
+ reg_set_iterator rsi;
- #: config/mn10300/mn10300.opt:55
--#, fuzzy
--#| msgid "Enable linker relaxations"
- msgid "Enable linker relaxations."
- msgstr "Activa la relajación del enlazador."
++ /* Jump threading may cause fixup_partitions to introduce new crossing edges,
++ which is not allowed after reload. */
++ gcc_checking_assert (!reload_completed || !crtl->has_bb_partition);
++
+ if (b->flags & BB_NONTHREADABLE_BLOCK)
+ return NULL;
- #: config/mn10300/mn10300.opt:59
--#, fuzzy
--#| msgid "Return pointers in both a0 and d0"
- msgid "Return pointers in both a0 and d0."
- msgstr "Devuelve punteros tanto en a0 como en d0."
+@@ -1224,6 +1229,14 @@
+ }
+ }
+ }
++
++ HARD_REG_SET i1_used, i2_used;
++
++ get_call_reg_set_usage (i1, &i1_used, call_used_reg_set);
++ get_call_reg_set_usage (i2, &i2_used, call_used_reg_set);
++
++ if (!hard_reg_set_equal_p (i1_used, i2_used))
++ return dir_none;
+ }
- #: config/mn10300/mn10300.opt:63
--#, fuzzy
--#| msgid "Allow gcc to generate LIW instructions"
- msgid "Allow gcc to generate LIW instructions."
- msgstr "Permite a gcc generar instrucciones LIW."
+ /* If both i1 and i2 are frame related, verify all the CFA notes
+@@ -3269,10 +3282,10 @@
+
+ namespace {
- #: config/mn10300/mn10300.opt:67
--#, fuzzy
--#| msgid "Allow gcc to generate the SETLB and Lcc instructions"
- msgid "Allow gcc to generate the SETLB and Lcc instructions."
- msgstr "Permite a gcc generar las instrucciones SETLB y Lcc."
+-const pass_data pass_data_postreload_jump =
++const pass_data pass_data_jump_after_combine =
+ {
+ RTL_PASS, /* type */
+- "postreload_jump", /* name */
++ "jump_after_combine", /* name */
+ OPTGROUP_NONE, /* optinfo_flags */
+ TV_JUMP, /* tv_id */
+ 0, /* properties_required */
+@@ -3282,20 +3295,20 @@
+ 0, /* todo_flags_finish */
+ };
- #: config/nds32/nds32.opt:26
--#, fuzzy
--#| msgid "Generate code in big endian mode"
- msgid "Generate code in big-endian mode."
- msgstr "Genera código en modo big endian."
+-class pass_postreload_jump : public rtl_opt_pass
++class pass_jump_after_combine : public rtl_opt_pass
+ {
+ public:
+- pass_postreload_jump (gcc::context *ctxt)
+- : rtl_opt_pass (pass_data_postreload_jump, ctxt)
++ pass_jump_after_combine (gcc::context *ctxt)
++ : rtl_opt_pass (pass_data_jump_after_combine, ctxt)
+ {}
+
+ /* opt_pass methods: */
+ virtual unsigned int execute (function *);
+
+-}; // class pass_postreload_jump
++}; // class pass_jump_after_combine
+
+ unsigned int
+-pass_postreload_jump::execute (function *)
++pass_jump_after_combine::execute (function *)
+ {
+ cleanup_cfg (flag_thread_jumps ? CLEANUP_THREADING : 0);
+ return 0;
+@@ -3304,9 +3317,9 @@
+ } // anon namespace
- #: config/nds32/nds32.opt:30
--#, fuzzy
--#| msgid "Generate code in little endian mode"
- msgid "Generate code in little-endian mode."
- msgstr "Genera código en modo little endian."
+ rtl_opt_pass *
+-make_pass_postreload_jump (gcc::context *ctxt)
++make_pass_jump_after_combine (gcc::context *ctxt)
+ {
+- return new pass_postreload_jump (ctxt);
++ return new pass_jump_after_combine (ctxt);
+ }
- #: config/nds32/nds32.opt:34
--#, fuzzy
--#| msgid "Reschedule instructions before register allocation"
- msgid "Use reduced-set registers for register allocation."
--msgstr "Recalendariza las instrucciones antes del alojamiento de registros."
-+msgstr "Usa un juego reducido de registros para asignación de registros."
+ namespace {
+Index: gcc/tree-ssa-pre.c
+===================================================================
+--- a/src/gcc/tree-ssa-pre.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-pre.c (.../branches/gcc-9-branch)
+@@ -1184,8 +1184,8 @@
+ bitmap visited = NULL;
+ /* Try to find a vuse that dominates this phi node by skipping
+ non-clobbering statements. */
+- vuse = get_continuation_for_phi (phi, &ref, cnt, &visited, false,
+- NULL, NULL);
++ vuse = get_continuation_for_phi (phi, &ref, true,
++ cnt, &visited, false, NULL, NULL);
+ if (visited)
+ BITMAP_FREE (visited);
+ }
+Index: gcc/lto/lto.c
+===================================================================
+--- a/src/gcc/lto/lto.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lto/lto.c (.../branches/gcc-9-branch)
+@@ -2446,6 +2446,15 @@
- #: config/nds32/nds32.opt:38
--#, fuzzy
--#| msgid "Reschedule instructions before register allocation"
- msgid "Use full-set registers for register allocation."
--msgstr "Recalendariza las instrucciones antes del alojamiento de registros."
-+msgstr "Usa el juego completo de registros para asignación de registros."
+ timevar_push (TV_WHOPR_WPA_IO);
- #: config/nds32/nds32.opt:42
--#, fuzzy
--#| msgid "enable conditional move instruction usage."
- msgid "Generate conditional move instructions."
--msgstr "activa el uso de la instrucción move condicional."
-+msgstr "Genera instrucciones move condicionales."
++ ggc_trim ();
++
++ cgraph_node *node;
++ /* Do body modifications needed for streaming before we fork out
++ worker processes. */
++ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
++ if (!node->clone_of && gimple_has_body_p (node->decl))
++ lto_prepare_function_for_streaming (node);
++
+ /* Generate a prefix for the LTRANS unit files. */
+ blen = strlen (ltrans_output_list);
+ temp_filename = (char *) xmalloc (blen + sizeof ("2147483648.o"));
+Index: gcc/lto/ChangeLog
+===================================================================
+--- a/src/gcc/lto/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lto/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,28 @@
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2019-10-31 Jakub Jelinek <jakub@redhat.com>
++
++ PR middle-end/92231
++ * lto-lang.c (handle_const_attribute): Don't call fndecl_built_in_p
++ on *node that is not FUNCTION_DECL.
++
++2019-10-26 Jan Hubicka <hubicka@ucw.cz>
++
++ Backport from mainline
++
++ 2019-10-12 Jan Hubicka <hubicka@ucw.cz>
++ * lto.c (lto_wpa_write_files): Do not update bodies of clones.
++
++ 2019-10-11 Jan Hubicka <hubicka@ucw.cz>
++ * lto.c (lto_wpa_write_files): Prepare all bodies for streaming.
++
++2019-10-25 Jan Hubicka <hubicka@ucw.cz>
++
++ Backport from mainline
++ * lto-partition.c (add_symbol_to_partition_1): Update.
++ (undo_parittion): Update.
++
+ 2019-08-12 Release Manager
- #: config/nds32/nds32.opt:46
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "Generate performance extension instructions."
--msgstr "Genera instrucciones bit."
-+msgstr "Genera instrucciones de extensión del rendimiento."
+ * GCC 9.2.0 released.
+Index: gcc/lto/lto-lang.c
+===================================================================
+--- a/src/gcc/lto/lto-lang.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lto/lto-lang.c (.../branches/gcc-9-branch)
+@@ -303,7 +303,8 @@
+ tree ARG_UNUSED (args), int ARG_UNUSED (flags),
+ bool * ARG_UNUSED (no_add_attrs))
+ {
+- if (!fndecl_built_in_p (*node))
++ if (TREE_CODE (*node) != FUNCTION_DECL
++ || !fndecl_built_in_p (*node))
+ inform (UNKNOWN_LOCATION, "%s:%s: %E: %E", __FILE__, __func__, *node, name);
- #: config/nds32/nds32.opt:50
--#, fuzzy
--#| msgid "Generate isel instructions"
- msgid "Generate v3 push25/pop25 instructions."
--msgstr "Genera instrucciones isel."
-+msgstr "Genera instrucciones v3 push25/pop25."
+ tree type = TREE_TYPE (*node);
+Index: gcc/ipa-prop.c
+===================================================================
+--- a/src/gcc/ipa-prop.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ipa-prop.c (.../branches/gcc-9-branch)
+@@ -3725,6 +3725,18 @@
+ ipcp_transformation_sum = ipcp_transformation_t::create_ggc (symtab);
+ }
- #: config/nds32/nds32.opt:54
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "Generate 16-bit instructions."
--msgstr "Genera instrucciones bit."
-+msgstr "Genera instrucciones de 16 bits."
++/* Release the IPA CP transformation summary. */
++
++void
++ipcp_free_transformation_sum (void)
++{
++ if (!ipcp_transformation_sum)
++ return;
++
++ ipcp_transformation_sum->release ();
++ ipcp_transformation_sum = NULL;
++}
++
+ /* Set the aggregate replacements of NODE to be AGGVALS. */
- #: config/nds32/nds32.opt:58
- msgid "Specify the size of each interrupt vector, which must be 4 or 16."
--msgstr ""
-+msgstr "Especifica el tamaño de cada vector de interrupciones, que ha de ser 4 o 16."
+ void
+Index: gcc/ipa-prop.h
+===================================================================
+--- a/src/gcc/ipa-prop.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ipa-prop.h (.../branches/gcc-9-branch)
+@@ -558,6 +558,7 @@
+ void ipa_set_node_agg_value_chain (struct cgraph_node *node,
+ struct ipa_agg_replacement_value *aggvals);
+ void ipcp_transformation_initialize (void);
++void ipcp_free_transformation_sum (void);
+
+ /* ipa_edge_args stores information related to a callsite and particularly its
+ arguments. It can be accessed by the IPA_EDGE_REF macro. */
+Index: gcc/po/es.po
+===================================================================
+--- a/src/gcc/po/es.po (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/po/es.po (.../branches/gcc-9-branch)
+@@ -43,7 +43,7 @@
+ "Project-Id-Version: gcc 9.1.0\n"
+ "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
+ "POT-Creation-Date: 2019-05-02 20:28+0000\n"
+-"PO-Revision-Date: 2019-05-17 05:23+0200\n"
++"PO-Revision-Date: 2019-09-30 17:16+0200\n"
+ "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
+ "Language-Team: Spanish <es@tp.org.es>\n"
+ "Language: es\n"
+@@ -174,17 +174,11 @@
- #: config/nds32/nds32.opt:62
- msgid "Specify the size of each cache block, which must be a power of 2 between 4 and 512."
+ #: diagnostic.c:618
+ msgid "In file included from"
-msgstr ""
-+msgstr "Especifica el tamaño de cada bloque de caché, que ha de ser potencia de 2 entre 4 y 512."
++msgstr "En el fichero incluido desde"
- #: config/nds32/nds32.opt:70
+ #: diagnostic.c:619
-#, fuzzy
--#| msgid "Known ARM architectures (for use with the -march= option):"
- msgid "Known arch types (for use with the -march= option):"
--msgstr "Arquitecturas ARM conocidas (para usar con la opción -march=):"
-+msgstr "Tipos de arquitectura conocidos (para usar con la opción -march=):"
-
- #: config/nds32/nds32.opt:83
- msgid "Specify the address generation strategy for code model."
+-#| msgid ""
+-#| ",\n"
+-#| " from %s:%u"
+ msgid " from"
-msgstr ""
-+msgstr "Especifica la estrategia de generación de direcciones para modelo de código."
-
- #: config/nds32/nds32.opt:87
--#, fuzzy
--#| msgid "Known code models (for use with the -mcmodel= option):"
- msgid "Known cmodel types (for use with the -mcmodel= option):"
--msgstr "Modelos de código conocidos (para uso con la opción -mcmodel=):"
-+msgstr "Tipos de modelos de código conocidos (para uso con la opción -mcmodel=):"
-
- #: config/nds32/nds32.opt:100
--#, fuzzy
--#| msgid "Warn when all constructors and destructors are private"
- msgid "Enable constructor/destructor feature."
--msgstr "Avisa cuando todos los constructores y destructores son privados."
-+msgstr "Activa la opción constructor/destructor."
-
- #: config/nds32/nds32.opt:104
--#, fuzzy
--#| msgid "Generate isel instructions"
- msgid "Guide linker to relax instructions."
--msgstr "Genera instrucciones isel."
-+msgstr "Guía al enlazador para que relaje las instrucciones."
-
- #: config/iq2000/iq2000.opt:31
--#, fuzzy
--#| msgid "Specify CPU for code generation purposes"
- msgid "Specify CPU for code generation purposes."
--msgstr "Especifica el CPU para propósitos de generación de código."
-+msgstr "Especifica la CPU para propósitos de generación de código."
-
- #: config/iq2000/iq2000.opt:47
- msgid "Specify CPU for scheduling purposes."
--msgstr "Especifica el CPU para propósitos de planificación."
-+msgstr "Especifica la CPU para propósitos de planificación."
-
- #: config/iq2000/iq2000.opt:51
- msgid "Known IQ2000 CPUs (for use with the -mcpu= option):"
-@@ -12071,20 +11933,14 @@
- msgstr "CPUs IQ2000 conocidos (para uso con la opción -mcpu=):"
-
- #: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142
--#, fuzzy
--#| msgid "Use ROM instead of RAM"
- msgid "Use ROM instead of RAM."
- msgstr "Usa la ROM en lugar de la RAM."
-
- #: config/iq2000/iq2000.opt:70
--#, fuzzy
--#| msgid "No default crt0.o"
- msgid "No default crt0.o."
--msgstr "No define a crt0.o por defecto."
-+msgstr "Sin crt0.o predeterminada."
+-",\n"
+-" de %s:%u"
++msgstr " desde"
- #: config/iq2000/iq2000.opt:74 config/mips/mips.opt:393
--#, fuzzy
--#| msgid "Put uninitialized constants in ROM (needs -membedded-data)"
- msgid "Put uninitialized constants in ROM (needs -membedded-data)."
- msgstr "Pone las constantes sin inicializar en ROM (necesita -membedded-data)."
-
-@@ -12093,136 +11949,96 @@
- msgstr "ISAs C6X conocidas (para uso con la opción -march=):"
-
- #: config/c6x/c6x.opt:46
--#, fuzzy
--#| msgid "Valid arguments for the -msdata= option"
- msgid "Valid arguments for the -msdata= option."
- msgstr "Argumentos válidos para la opción -msdata=."
+ #: diagnostic.c:991
+ #, c-format
+@@ -796,10 +790,9 @@
+ "%s.\n"
- #: config/c6x/c6x.opt:59
--#, fuzzy
--#| msgid "Compile for the DSBT shared library ABI"
- msgid "Compile for the DSBT shared library ABI."
- msgstr "Compila para la ABI de biblioteca compartida DSBT."
+ #: gcov-tool.c:528
+-#, fuzzy, c-format
+-#| msgid "Copyright %s 2018 Free Software Foundation, Inc.\n"
++#, c-format
+ msgid "Copyright %s 2019 Free Software Foundation, Inc.\n"
+-msgstr "Copyright %s 2018 Free Software Foundation, Inc.\n"
++msgstr "Copyright %s 2019 Free Software Foundation, Inc.\n"
- #: config/cris/linux.opt:27
--#, fuzzy
--#| msgid "Together with -fpic and -fPIC, do not use GOTPLT references"
- msgid "Together with -fpic and -fPIC, do not use GOTPLT references."
- msgstr "Junto con -fpic y -fPIC, no utiliza referencias GOTPLT."
+ #: gcov-tool.c:531 gcov.c:925
+ #, c-format
+@@ -867,10 +860,9 @@
+ msgstr " -h, --help Muestra esta información, y finaliza\n"
- #: config/cris/cris.opt:45
--#, fuzzy
--#| msgid "Work around bug in multiplication instruction"
- msgid "Work around bug in multiplication instruction."
- msgstr "Evita el error en la instrucción de multiplicación."
+ #: gcov.c:894
+-#, fuzzy, c-format
+-#| msgid " -n, --no-output Do not create an output file\n"
++#, c-format
+ msgid " -i, --json-format Output JSON intermediate format into .gcov.json.gz file\n"
+-msgstr " -n, --no-output No crea un fichero de salida\n"
++msgstr " -i, --json-format Salida con formato JSON intermedia en el fichero .gcov.json.gz\n"
- #: config/cris/cris.opt:51
--#, fuzzy
--#| msgid "Compile for ETRAX 4 (CRIS v3)"
- msgid "Compile for ETRAX 4 (CRIS v3)."
- msgstr "Compila para ETRAX 4 (CRIS v3)."
+ #: gcov.c:895
+ #, c-format
+@@ -912,10 +904,9 @@
+ msgstr " -p, --preserve-paths Preserva todos los nombres de ruta de los componentes\n"
- #: config/cris/cris.opt:56
--#, fuzzy
--#| msgid "Compile for ETRAX 100 (CRIS v8)"
- msgid "Compile for ETRAX 100 (CRIS v8)."
- msgstr "Compila para ETRAX 100 (CRIS v8)."
+ #: gcov.c:903
+-#, fuzzy, c-format
+-#| msgid " -k, --use-colors Emit colored output\n"
++#, c-format
+ msgid " -q, --use-hotness-colors Emit perf-like colored output for hot lines\n"
+-msgstr " -k, --use-colors Emite salida con colores\n"
++msgstr " -q, --use-hotness-colors Emite salida con colores de tipo perf para las líneas calientes\n"
- #: config/cris/cris.opt:64
--#, fuzzy
--#| msgid "Emit verbose debug information in assembly code"
- msgid "Emit verbose debug information in assembly code."
- msgstr "Emite información de depuración detallada en el código ensamblador."
+ #: gcov.c:904
+ #, c-format
+@@ -928,10 +919,9 @@
+ msgstr " -s, --source-prefix DIR Prefijo de fuente a omitir\n"
- #: config/cris/cris.opt:71
--#, fuzzy
--#| msgid "Do not use condition codes from normal instructions"
- msgid "Do not use condition codes from normal instructions."
- msgstr "No usa códigos de condición para las instrucciones normales."
+ #: gcov.c:906
+-#, fuzzy, c-format
+-#| msgid " -n, --no-output Do not create an output file\n"
++#, c-format
+ msgid " -t, --stdout Output to stdout instead of a file\n"
+-msgstr " -n, --no-output No crea un fichero de salida\n"
++msgstr " -t, --stdout Salida en stdout en lugar de un fichero\n"
- #: config/cris/cris.opt:80
--#, fuzzy
--#| msgid "Do not emit addressing modes with side-effect assignment"
- msgid "Do not emit addressing modes with side-effect assignment."
- msgstr "No emite modos de direccionamiento con asignaciones colaterales."
+ #: gcov.c:907
+ #, c-format
+@@ -959,10 +949,9 @@
+ msgstr "gcov %s%s\n"
- #: config/cris/cris.opt:89
--#, fuzzy
--#| msgid "Do not tune stack alignment"
- msgid "Do not tune stack alignment."
- msgstr "No ajusta la alineación de la pila."
+ #: gcov.c:1250
+-#, fuzzy, c-format
+-#| msgid "Treat the input file as already preprocessed."
++#, c-format
+ msgid "'%s' file is already processed\n"
+-msgstr "Trata al fichero de entrada como previamente preprocesado."
++msgstr "El fichero '%s' ya está procesado\n"
- #: config/cris/cris.opt:98
--#, fuzzy
--#| msgid "Do not tune writable data alignment"
- msgid "Do not tune writable data alignment."
- msgstr "No ajusta la alineación de los datos modificables."
+ #: gcov.c:1364
+ #, c-format
+@@ -990,16 +979,14 @@
+ msgstr "\n"
- #: config/cris/cris.opt:107
--#, fuzzy
--#| msgid "Do not tune code and read-only data alignment"
- msgid "Do not tune code and read-only data alignment."
- msgstr "No ajusta la alineación del código y de datos de sólo lectura."
+ #: gcov.c:1489
+-#, fuzzy, c-format
+-#| msgid "%s: Cannot open output file: %s\n"
++#, c-format
+ msgid "Cannot open JSON output file %s\n"
+-msgstr "%s: No se puede abrir el fichero de salida: %s\n"
++msgstr "No se puede abrir el fichero de salida JSON %s\n"
- #: config/cris/cris.opt:116
--#, fuzzy
--#| msgid "Align code and data to 32 bits"
- msgid "Align code and data to 32 bits."
- msgstr "Alinea código y datos a 32 bits."
+ #: gcov.c:1497
+-#, fuzzy, c-format
+-#| msgid "Error writing output file '%s'\n"
++#, c-format
+ msgid "Error writing JSON output file %s\n"
+-msgstr "Error al escribir el fichero de salida '%s'\n"
++msgstr "Error al escribir el fichero de salida JSON %s\n"
- #: config/cris/cris.opt:133
--#, fuzzy
--#| msgid "Don't align items in code or data"
- msgid "Don't align items in code or data."
- msgstr "No alinea los elementos en el código o los datos."
+ #: gcov.c:1664
+ #, c-format
+@@ -1266,10 +1253,8 @@
+ msgstr "este es la insn:"
- #: config/cris/cris.opt:142
+ #: lra-constraints.c:2971
-#, fuzzy
--#| msgid "Do not emit function prologue or epilogue"
- msgid "Do not emit function prologue or epilogue."
- msgstr "No emite el prólogo o epílogo de funciones."
+-#| msgid "unable to generate reloads for:"
+ msgid "unable to generate reloads for impossible constraints:"
+-msgstr "no se pueden generar recargas para:"
++msgstr "no se pueden generar recargas para restricciones imposibles:"
- #: config/cris/cris.opt:149
--#, fuzzy
--#| msgid "Use the most feature-enabling options allowed by other options"
- msgid "Use the most feature-enabling options allowed by other options."
- msgstr "Usa la mayor cantidad de características permitidas por otras opciones."
+ #: lra-constraints.c:3962 reload.c:3814
+ msgid "unable to generate reloads for:"
+@@ -1327,12 +1312,13 @@
+ msgstr "Ya se mostraron todas las opciones con las características deseadas\n"
- #: config/cris/cris.opt:158
--#, fuzzy
--#| msgid "Override -mbest-lib-options"
- msgid "Override -mbest-lib-options."
- msgstr "Anula -mbest-lib-options."
+ #: opts.c:1581
+-#, fuzzy, c-format
+-#| msgid "invalid argument %qs to %qs"
++#, c-format
+ msgid ""
+ " Known valid arguments for %s option:\n"
+ " "
+-msgstr "argumento %qs no válido para %qs"
++msgstr ""
++" Argumentos válidos conocidos para la opción %s:\n"
++" "
- #: config/cris/cris.opt:165
--#, fuzzy
--#| msgid "-march=ARCH\tGenerate code for the specified chip or CPU version"
- msgid "-march=ARCH\tGenerate code for the specified chip or CPU version."
- msgstr "-march=ARQ\tGenera código para el chip o la versión de CPU especificados."
+ #: opts.c:1631
+ msgid "The following options are target specific"
+@@ -1430,16 +1416,12 @@
+ msgstr "creado y usado con diferentes opciones de '%s'"
- #: config/cris/cris.opt:169
+ #: targhooks.c:2038
-#, fuzzy
--#| msgid "-mtune=ARCH\tTune alignment for the specified chip or CPU version"
- msgid "-mtune=ARCH\tTune alignment for the specified chip or CPU version."
- msgstr "-mtune=ARQ\tAjusta la alineación para el chip o la versión de CPU especificados."
+-#| msgid "created and used with different settings of -fpic"
+ msgid "created and used with different settings of %<-fpic%>"
+-msgstr "creado y usado con diferentes opciones de -fpic"
++msgstr "creado y usado con diferentes opciones de %<-fpic%>"
- #: config/cris/cris.opt:173
+ #: targhooks.c:2040
-#, fuzzy
--#| msgid "-mmax-stackframe=SIZE\tWarn when a stackframe is larger than the specified size"
- msgid "-mmax-stackframe=SIZE\tWarn when a stackframe is larger than the specified size."
- msgstr "-mmax-stackframe=TAM\tAvisa cuando un marco de pila es más grande que el tamaño especificado."
-
- #: config/cris/cris.opt:180
- msgid "Emit traps as \"break 8\", default for CRIS v3 and up. If disabled, calls to abort() are used."
--msgstr ""
-+msgstr "Emite traps como \"break 8\", predeterminado para CRIS v3 y superior. Si está desactivado, se usan llamadas a abort()."
+-#| msgid "created and used with different settings of -fpie"
+ msgid "created and used with different settings of %<-fpie%>"
+-msgstr "creado y usado con diferentes opciones de -fpie"
++msgstr "creado y usado con diferentes opciones de %<-fpie%>"
- #: config/cris/cris.opt:184
- msgid "Emit checks causing \"break 8\" instructions to execute when applying atomic builtins on misaligned memory."
--msgstr ""
-+msgstr "Emite comprobaciones haciendo que las instrucciones \"break 8\" se ejecuten cuando se aplican funciones internas atómicas sobre memoria desalineada."
-
- #: config/cris/cris.opt:188
- msgid "Handle atomic builtins that may be applied to unaligned data by calling library functions. Overrides -mtrap-unaligned-atomic."
+ #: tlink.c:387
+ #, c-format
+@@ -1703,16 +1685,14 @@
+ msgstr "El número máximo de instrucciones cuando se hace inclusión en línea por tamaño."
+
+ #: params.def:97
+-#, fuzzy, no-c-format
+-#| msgid "Use subroutines for function prologues and epilogues."
++#, no-c-format
+ msgid "Instruction accounted for function prologue, epilogue and other overhead."
+-msgstr "Usa subrutinas para los prólogos y epílogos de función."
++msgstr "Instrucción contabilizada para el prólogo y epílogo de la función y otras sobrecargas."
+
+ #: params.def:103
+-#, fuzzy, no-c-format
+-#| msgid "Use subroutines for function prologues and epilogues."
++#, no-c-format
+ msgid "Time accounted for function prologue, epilogue and other overhead."
+-msgstr "Usa subrutinas para los prólogos y epílogos de función."
++msgstr "Tiempo contabilizado para el prólogo y epílogo de la función y otras sobrecargas."
+
+ #: params.def:109
+ #, no-c-format
+@@ -1946,10 +1926,9 @@
+
+ # 'desfactorizar' no me gusta. ¿Alguna sugerencia? - cfuga
+ #: params.def:393
+-#, fuzzy, no-c-format
+-#| msgid "The maximum number of insns to duplicate when unfactoring computed gotos."
++#, no-c-format
+ msgid "The maximum number of insns in loop header duplicated by the copy loop headers pass."
+-msgstr "El número máximo de insns a duplicar al desfactorizar gotos calculados."
++msgstr "El número máximo de instrucciones en encabezamiento de bucle a duplicar en el paso de encabezamientos de bucles."
+
+ #: params.def:400
+ #, no-c-format
+@@ -1982,16 +1961,14 @@
+ msgstr "Umbral en el número promedio de bucles considerado por el planificador de cambio de módulo."
+
+ #: params.def:430
+-#, fuzzy, no-c-format
+-#| msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot"
++#, no-c-format
+ msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot (used in non-LTO mode)."
+-msgstr "La selección de fracción de la cuenta maximal de repeticiones del bloque básico en el bloque básico dado de programa que necesita para ser considerado caliente"
++msgstr "La selección de fracción de la cuenta maximal de repeticiones del bloque básico en el bloque básico dado de programa que necesita para ser considerado caliente (utilizado en modo no LTO)."
+
+ #: params.def:435
+-#, fuzzy, no-c-format
+-#| msgid "A basic block profile count is considered hot if it contributes to the given permillage of the entire profiled execution."
++#, no-c-format
+ msgid "A basic block profile count is considered hot if it contributes to the given permillage of the entire profiled execution (used in LTO mode)."
+-msgstr "El número de perfiles de bloque básicos se considera caliente si contribuye al pormillaje dado de la ejecución perfilada completa."
++msgstr "El número de perfiles de bloque básicos se considera caliente si contribuye al pormillaje dado de la ejecución perfilada completa (utilizado en modo LTO)."
+
+ #: params.def:440
+ #, no-c-format
+@@ -2009,8 +1986,7 @@
+ msgstr "Selección de fracción de la frecuencia máxima de ejecuciones de bloque básico en la función dada para la que el bloque básico consigue alinear."
+
+ #: params.def:455
+-#, fuzzy, no-c-format
+-#| msgid "Loops iterating at least selected number of iterations will get loop alignment.."
++#, no-c-format
+ msgid "Loops iterating at least selected number of iterations will get loop alignment."
+ msgstr "Iterar ciclos por lo menos el número seleccionado de iteraciones que logrará alineación de bucles."
+
+@@ -2121,10 +2097,9 @@
+ msgstr "Número máximo (en bytes) de objetos rastreados en btyes por la eliminación de almacenamiento muerto."
+
+ #: params.def:593
+-#, fuzzy, no-c-format
+-#| msgid "Maximum number of times that an insn could be scheduled."
++#, no-c-format
+ msgid "Maximum number of queries into the alias oracle per store."
+-msgstr "El número máximo de veces que se puede planificar una insns."
++msgstr "El número máximo de consultas al oráculo de alias por almacenamiento."
+
+ #: params.def:598
+ #, no-c-format
+@@ -2495,22 +2470,19 @@
+ msgstr "Tamaño máximo de una lista de valores asociada con cada parámetro para propagación constante entre procedimientos."
+
+ #: params.def:1092
+-#, fuzzy, no-c-format
+-#| msgid "Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone.."
++#, no-c-format
+ msgid "Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone."
+-msgstr "Rango de evaluación de oportunidad ipa-cp que aún se considera beneficioso para clonar.."
++msgstr "Rango de evaluación de oportunidad ipa-cp que aún se considera beneficioso para clonar."
+
+ #: params.def:1098
+-#, fuzzy, no-c-format
+-#| msgid "Percentage penalty the recursive functions will receive when they are evaluated for cloning.."
++#, no-c-format
+ msgid "Percentage penalty the recursive functions will receive when they are evaluated for cloning."
+-msgstr "Penalización porcentual que recibirán las funciones recursivas cuando se evalúen para clonación.."
++msgstr "Penalización porcentual que recibirán las funciones recursivas cuando se evalúen para clonación."
+
+ #: params.def:1104
+-#, fuzzy, no-c-format
+-#| msgid "Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning.."
++#, no-c-format
+ msgid "Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning."
+-msgstr "Penalización porcentual que recibirán las funciones que contien una sola llamada a otra función cuando se evalúen para clonación.."
++msgstr "Penalización porcentual que recibirán las funciones que contien una sola llamada a otra función cuando se evalúen para clonación."
+
+ #: params.def:1110
+ #, no-c-format
+@@ -2518,16 +2490,14 @@
+ msgstr "Número máximo de elementos de contenido agregado de un parámetro en funciones de salto y celosías."
+
+ #: params.def:1116
+-#, fuzzy, no-c-format
+-#| msgid "Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known.."
++#, no-c-format
+ msgid "Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known."
+-msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan a conocer los límites o los pasos de los bucles.."
++msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan a conocer los límites o los pasos de los bucles."
+
+ #: params.def:1122
+-#, fuzzy, no-c-format
+-#| msgid "Compile-time bonus IPA-CP assigns to candidates which make an array index known.."
++#, no-c-format
+ msgid "Compile-time bonus IPA-CP assigns to candidates which make an array index known."
+-msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan conocer el índice de un array.."
++msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan conocer el índice de un array."
+
+ #: params.def:1128
+ #, no-c-format
+@@ -2576,10 +2546,9 @@
+ msgstr "Permite que se introduzcan carreras de datos nuevos en stores."
+
+ #: params.def:1187
+-#, fuzzy, no-c-format
+-#| msgid "Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic.."
++#, no-c-format
+ msgid "Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic."
+-msgstr "Establece el número máximo de instrucciones ejecutadas en paralelo en el árbol de reasociación. Si es 0, usa la heurística dependiente del objetivo.."
++msgstr "Establece el número máximo de instrucciones ejecutadas en paralelo en el árbol de reasociación. Si es 0, usa la heurística dependiente del objetivo."
+
+ #: params.def:1193
+ #, no-c-format
+@@ -2748,10 +2717,9 @@
+ msgstr "Número máximo de definiciones posibles visitadas cuando se desvirtualiza especulativamente."
+
+ #: params.def:1375
+-#, fuzzy, no-c-format
+-#| msgid "Maximum number of constant stores to merge in the store merging pass."
++#, no-c-format
+ msgid "Maximum number of assertions to add along the default edge of a switch statement during VRP."
+-msgstr "Número máximo de almacenamientos constantes que hay que mezclar en el paso de mezcla de almacenamientos."
++msgstr "Número máximo de aserciones que hay que añadir a lo largo del borde predefinido de una sentencia switch durante VRP."
+
+ #: params.def:1381
+ #, no-c-format
+@@ -2766,7 +2734,7 @@
+ #: params.def:1391
+ #, no-c-format
+ msgid "Maximum unroll factor for the unroll-and-jam transformation."
+-msgstr ""
++msgstr "Máximo factor de desenrrollado para la transformación unroll-and-jam."
+
+ #: params.def:1396
+ #, no-c-format
+@@ -2776,19 +2744,17 @@
+ #: params.def:1401
+ #, no-c-format
+ msgid "True if a non-short-circuit operation is optimal."
+-msgstr ""
++msgstr "Verdadero si una operación de non-short-circuit es óptima."
+
+ #: params.def:1406
+-#, fuzzy, no-c-format
+-#| msgid "Maximum number of instructions in basic block to be considered for SLP vectorization."
++#, no-c-format
+ msgid "The maximum number of instructions in an inner loop that is being considered for versioning."
+-msgstr "El número máximo de instrucciones en bloque básico que se consideran para vectorización SLP."
++msgstr "El número máximo de instrucciones en un bucle interior que se consideran para versionar."
+
+ #: params.def:1412
+-#, fuzzy, no-c-format
+-#| msgid "The maximum number of instructions to consider to unroll in a loop."
++#, no-c-format
+ msgid "The maximum number of instructions in an outer loop that is being considered for versioning, on top of the instructions in inner loops."
+-msgstr "El número máximo de instrucciones para considerar el desenrollo en un bucle."
++msgstr "El número máximo de instrucciones ien un bucle exterior que se consideran para versionar, por encima de las instrucciones en los bucles interiores."
+
+ #: c-family/c-format.c:404
+ msgid "format"
+@@ -3655,15 +3621,14 @@
+ #: config/gcn/gcn.c:5637 config/gcn/gcn.c:5648 config/gcn/gcn.c:5651
+ #, c-format
+ msgid "bad ADDR_SPACE_GLOBAL address"
-msgstr ""
-+msgstr "Maneja las funciones internas atómicas que pueden aplicarse a datos desalineados mediante llamadas a funciones de biblioteca. Anula -mtrap-unaligned-atomic."
-
- #: config/sh/superh.opt:6
- msgid "Board name [and memory region]."
-@@ -12233,116 +12049,78 @@
- msgstr "Nombre del entorno de ejecución."
-
- #: config/sh/sh.opt:48
--#, fuzzy
--#| msgid "Generate SH1 code"
- msgid "Generate SH1 code."
- msgstr "Genera código SH1."
-
- #: config/sh/sh.opt:52
--#, fuzzy
--#| msgid "Generate SH2 code"
- msgid "Generate SH2 code."
- msgstr "Genera código SH2."
-
- #: config/sh/sh.opt:56
--#, fuzzy
--#| msgid "Generate default double-precision SH2a-FPU code"
- msgid "Generate default double-precision SH2a-FPU code."
- msgstr "Genera código FPU de SH2a de doble precisión por defecto."
-
- #: config/sh/sh.opt:60
--#, fuzzy
--#| msgid "Generate SH2a FPU-less code"
- msgid "Generate SH2a FPU-less code."
- msgstr "Genera código SH2a sin FPU."
-
- #: config/sh/sh.opt:64
--#, fuzzy
--#| msgid "Generate default single-precision SH2a-FPU code"
- msgid "Generate default single-precision SH2a-FPU code."
- msgstr "Genera código FPU de SH2a de precisión simple."
++msgstr "dirección ADDR_SPACE_GLOBAL errónea"
- #: config/sh/sh.opt:68
--#, fuzzy
--#| msgid "Generate only single-precision SH2a-FPU code"
- msgid "Generate only single-precision SH2a-FPU code."
- msgstr "Genera solamente código FPU de SH2a de precisión simple."
-
- #: config/sh/sh.opt:72
--#, fuzzy
--#| msgid "Generate SH2e code"
- msgid "Generate SH2e code."
- msgstr "Genera código SH2e."
-
- #: config/sh/sh.opt:76
--#, fuzzy
--#| msgid "Generate SH3 code"
- msgid "Generate SH3 code."
- msgstr "Genera código SH3."
-
- #: config/sh/sh.opt:80
--#, fuzzy
--#| msgid "Generate SH3e code"
- msgid "Generate SH3e code."
- msgstr "Genera código SH3e."
-
- #: config/sh/sh.opt:84
--#, fuzzy
--#| msgid "Generate SH4 code"
- msgid "Generate SH4 code."
- msgstr "Genera código SH4."
-
- #: config/sh/sh.opt:88
--#, fuzzy
--#| msgid "Generate SH4-100 code"
- msgid "Generate SH4-100 code."
- msgstr "Genera código SH4-100."
-
- #: config/sh/sh.opt:92
--#, fuzzy
--#| msgid "Generate SH4-200 code"
- msgid "Generate SH4-200 code."
- msgstr "Genera código SH4-200."
-
- #: config/sh/sh.opt:98
--#, fuzzy
--#| msgid "Generate SH4-300 code"
- msgid "Generate SH4-300 code."
- msgstr "Genera código SH4-300."
-
- #: config/sh/sh.opt:102
--#, fuzzy
--#| msgid "Generate SH4 FPU-less code"
- msgid "Generate SH4 FPU-less code."
- msgstr "Genera código SH4 sin FPU."
-
- #: config/sh/sh.opt:106
--#, fuzzy
--#| msgid "Generate SH4-100 FPU-less code"
- msgid "Generate SH4-100 FPU-less code."
- msgstr "Genera código SH4-100 sin FPU."
-
- #: config/sh/sh.opt:110
--#, fuzzy
--#| msgid "Generate SH4-200 FPU-less code"
- msgid "Generate SH4-200 FPU-less code."
- msgstr "Genera código SH4-200 sin FPU."
-
- #: config/sh/sh.opt:114
--#, fuzzy
--#| msgid "Generate SH4-300 FPU-less code"
- msgid "Generate SH4-300 FPU-less code."
- msgstr "Genera código SH4-300 sin FPU."
-
- #: config/sh/sh.opt:118
--#, fuzzy
--#| msgid "Generate code for SH4 340 series (MMU/FPU-less)"
- msgid "Generate code for SH4 340 series (MMU/FPU-less)."
- msgstr "Genera código para SH4 series 340 (sin MMU/FPU)."
-
- #: config/sh/sh.opt:123
--#, fuzzy
--#| msgid "Generate code for SH4 400 series (MMU/FPU-less)"
- msgid "Generate code for SH4 400 series (MMU/FPU-less)."
- msgstr "Genera código para SH4 series 400 (sin MMU/FPU)."
-
-@@ -12351,156 +12129,107 @@
- msgstr "Genera código para SH4 series 500 (sin FPU)."
-
- #: config/sh/sh.opt:133
--#, fuzzy
--#| msgid "Generate default single-precision SH4 code"
- msgid "Generate default single-precision SH4 code."
- msgstr "Genera código SH4 de precisión simple por defecto."
-
- #: config/sh/sh.opt:137
--#, fuzzy
--#| msgid "Generate default single-precision SH4-100 code"
- msgid "Generate default single-precision SH4-100 code."
- msgstr "Genera código SH4-100 de precisión simple por defecto."
-
- #: config/sh/sh.opt:141
--#, fuzzy
--#| msgid "Generate default single-precision SH4-200 code"
- msgid "Generate default single-precision SH4-200 code."
- msgstr "Genera código SH4-200 de precisión simple por defecto."
+ #: config/gcn/gcn.c:5423 config/gcn/gcn.c:5446 config/gcn/gcn.c:5475
+ #: config/gcn/gcn.c:5491 config/gcn/gcn.c:5510 config/gcn/gcn.c:5586
+ #: config/gcn/gcn.c:5782 config/gcn/gcn.c:5879
+-#, fuzzy, c-format
+-#| msgid "invalid operand to %%Z code"
++#, c-format
+ msgid "invalid operand %%xn code"
+-msgstr "operando no válido para el código %%Z"
++msgstr "operando no válido para el código %%xn"
- #: config/sh/sh.opt:145
--#, fuzzy
--#| msgid "Generate default single-precision SH4-300 code"
- msgid "Generate default single-precision SH4-300 code."
- msgstr "Genera código SH4-300 de precisión simple por defecto."
+ #: config/gcn/gcn.c:5949
+ #, c-format
+@@ -3962,22 +3927,19 @@
+ msgstr "extracto de cero no válido"
- #: config/sh/sh.opt:149
--#, fuzzy
--#| msgid "Generate only single-precision SH4 code"
- msgid "Generate only single-precision SH4 code."
- msgstr "Genera código SH4 solamente de precisión simple."
+ #: config/or1k/or1k.c:1124 config/or1k/or1k.c:1132
+-#, fuzzy, c-format
+-#| msgid "invalid operation"
++#, c-format
+ msgid "invalid relocation"
+-msgstr "operación no válida"
++msgstr "reubicación no válida"
- #: config/sh/sh.opt:153
--#, fuzzy
--#| msgid "Generate only single-precision SH4-100 code"
- msgid "Generate only single-precision SH4-100 code."
- msgstr "Genera código SH4-100 solamente de precisión simple."
+ #: config/or1k/or1k.c:1226
+-#, fuzzy, c-format
+-#| msgid "invalid %H value"
++#, c-format
+ msgid "invalid %%H value"
+-msgstr "valor %H no válido"
++msgstr "valor %%H no válido"
- #: config/sh/sh.opt:157
--#, fuzzy
--#| msgid "Generate only single-precision SH4-200 code"
- msgid "Generate only single-precision SH4-200 code."
- msgstr "Genera código SH4-200 solamente de precisión simple."
+ #: config/or1k/or1k.c:1274
+-#, fuzzy, c-format
+-#| msgid "unknown punctuation '%c'"
++#, c-format
+ msgid "unknown operand letter: '%c'"
+-msgstr "puntuación '%c' desconocida"
++msgstr "letra de operando desconocida: '%c'"
- #: config/sh/sh.opt:161
--#, fuzzy
--#| msgid "Generate only single-precision SH4-300 code"
- msgid "Generate only single-precision SH4-300 code."
- msgstr "Genera código SH4-300 solamente de precisión simple."
+ #: config/rl78/rl78.c:2009 config/rl78/rl78.c:2095
+ #, c-format
+@@ -3995,46 +3957,32 @@
+ msgstr "Pruebe ejecutar '%s' en el intérprete de órdenes para elevar su límite.\n"
- #: config/sh/sh.opt:165
+ #: config/rs6000/rs6000.c:3995
-#, fuzzy
--#| msgid "Generate SH4a code"
- msgid "Generate SH4a code."
- msgstr "Genera código SH4a."
+-#| msgid "-mvsx requires hardware floating point"
+ msgid "%<-mvsx%> requires hardware floating point"
+-msgstr "-mvsx requiere coma flotante de hardware"
++msgstr "%<-mvsx%> requiere coma flotante de hardware"
- #: config/sh/sh.opt:169
+ #: config/rs6000/rs6000.c:4003
-#, fuzzy
--#| msgid "Generate SH4a FPU-less code"
- msgid "Generate SH4a FPU-less code."
- msgstr "Genera código SH4a sin FPU."
+-#| msgid "-mvsx needs indexed addressing"
+ msgid "%<-mvsx%> needs indexed addressing"
+-msgstr "-mvsx necesita direccionamiento indizado"
++msgstr "%<-mvsx%> necesita direccionamiento indexado"
- #: config/sh/sh.opt:173
+ #: config/rs6000/rs6000.c:4008
-#, fuzzy
--#| msgid "Generate default single-precision SH4a code"
- msgid "Generate default single-precision SH4a code."
- msgstr "Genera código SH4a de precisión simple por defecto."
+-#| msgid "-mvsx and -mno-altivec are incompatible"
+ msgid "%<-mvsx%> and %<-mno-altivec%> are incompatible"
+-msgstr "-mvsx y -mno-altivec son incompatibles"
++msgstr "%<-mvsx%> y -%<mno-altivec%> son incompatibles"
- #: config/sh/sh.opt:177
+ #: config/rs6000/rs6000.c:4010
-#, fuzzy
--#| msgid "Generate only single-precision SH4a code"
- msgid "Generate only single-precision SH4a code."
- msgstr "Genera código SH4a solamente de precisión simple."
+-#| msgid "-mno-altivec disables vsx"
+ msgid "%<-mno-altivec%> disables vsx"
+-msgstr "-mno-altivec desactiva vsx"
++msgstr "%<-mno-altivec%> desactiva vsx"
- #: config/sh/sh.opt:181
+ #: config/rs6000/rs6000.c:4136
-#, fuzzy
--#| msgid "Generate SH4al-dsp code"
- msgid "Generate SH4al-dsp code."
- msgstr "Genera código SH4al-dsp."
+-#| msgid "-mquad-memory requires 64-bit mode"
+ msgid "%<-mquad-memory%> requires 64-bit mode"
+-msgstr "-mquad-memory requiere modo de 64 bits"
++msgstr "%<-mquad-memory%> requiere modo de 64 bits"
- #: config/sh/sh.opt:185
+ #: config/rs6000/rs6000.c:4139
-#, fuzzy
--#| msgid "Generate 32-bit SHmedia code"
- msgid "Generate 32-bit SHmedia code."
- msgstr "Genera código SHmedia de 32-bit."
+-#| msgid "-mquad-memory-atomic requires 64-bit mode"
+ msgid "%<-mquad-memory-atomic%> requires 64-bit mode"
+-msgstr "-mquad-memory-atomic requiere modo de 64 bits"
++msgstr "%<-mquad-memory-atomic%> requiere modo de 64 bits"
- #: config/sh/sh.opt:189
+ #: config/rs6000/rs6000.c:4151
-#, fuzzy
--#| msgid "Generate 32-bit FPU-less SHmedia code"
- msgid "Generate 32-bit FPU-less SHmedia code."
- msgstr "Genera código SHmedia de 32-bit sin FPU."
+-#| msgid "-mquad-memory is not available in little endian mode"
+ msgid "%<-mquad-memory%> is not available in little endian mode"
+-msgstr "-mquad-memory no está disponible en modo little endian"
++msgstr "%<-mquad-memory%> no está disponible en modo little endian"
- #: config/sh/sh.opt:193
--#, fuzzy
--#| msgid "Generate 64-bit SHmedia code"
- msgid "Generate 64-bit SHmedia code."
- msgstr "Genera código SHmedia de 64-bit."
+ #: config/rs6000/rs6000.c:10374
+ msgid "bad move"
+@@ -4100,10 +4048,9 @@
+ msgstr "valor %%q no válido"
- #: config/sh/sh.opt:197
--#, fuzzy
--#| msgid "Generate 64-bit FPU-less SHmedia code"
- msgid "Generate 64-bit FPU-less SHmedia code."
- msgstr "Genera código SHmedia de 64-bit sin FPU."
+ #: config/rs6000/rs6000.c:21141
+-#, fuzzy, c-format
+-#| msgid "invalid %%J value"
++#, c-format
+ msgid "invalid %%t value"
+-msgstr "valor %%J no válido"
++msgstr "valor %%t no válido"
- #: config/sh/sh.opt:201
--#, fuzzy
--#| msgid "Generate SHcompact code"
- msgid "Generate SHcompact code."
- msgstr "Genera código SHcompact."
+ #: config/rs6000/rs6000.c:21158
+ #, c-format
+@@ -4121,10 +4068,9 @@
+ msgstr "valor %%v no válido"
- #: config/sh/sh.opt:205
--#, fuzzy
--#| msgid "Generate FPU-less SHcompact code"
- msgid "Generate FPU-less SHcompact code."
- msgstr "Genera código SHcompact sin FPU."
+ #: config/rs6000/rs6000.c:21234
+-#, fuzzy, c-format
+-#| msgid "invalid %%J value"
++#, c-format
+ msgid "invalid %%V value"
+-msgstr "valor %%J no válido"
++msgstr "valor %%V no válido"
- #: config/sh/sh.opt:217
--#, fuzzy
--#| msgid "Generate code in big endian mode"
- msgid "Generate code in big endian mode."
- msgstr "Genera código en modo big endian."
+ #: config/rs6000/rs6000.c:21251 config/xtensa/xtensa.c:2439
+ #, c-format
+@@ -4696,10 +4642,8 @@
+ msgstr "entra en la sentencia sincronizada o atómica"
- #: config/sh/sh.opt:221
+ #: cp/decl.c:3254
-#, fuzzy
--#| msgid "Generate 32-bit offsets in switch tables"
- msgid "Generate 32-bit offsets in switch tables."
- msgstr "Genera desplazamientos de 32-bit en las tablas de switch."
+-#| msgid "expected statement"
+ msgid "enters constexpr if statement"
+-msgstr "se esperaba una declaración"
++msgstr "entre en la sentencia if de expresión constante"
- #: config/sh/sh.opt:225
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "Generate bit instructions."
--msgstr "Genera instrucciones bit."
-+msgstr "Genera instrucciones de bit."
+ #: cp/error.c:375
+ msgid "<missing>"
+@@ -5032,10 +4976,8 @@
+ msgstr "Rango simétrico fuera de entero implicado por Standard Fortran en %L"
- #: config/sh/sh.opt:229
+ #: fortran/arith.c:118
-#, fuzzy
--#| msgid "Cost to assume for a branch insn"
- msgid "Cost to assume for a branch insn."
- msgstr "Costo de asumir una ramificación de insn."
+-#| msgid "Illegal character in BOZ constant at %C"
+ msgid "Illegal type in character concatenation at %L"
+-msgstr "Carácter ilegal en la constante BOZ en %C"
++msgstr "Typo ilegal en concatenación de caracteres en %L"
- #: config/sh/sh.opt:233
- msgid "Assume that zero displacement conditional branches are fast."
--msgstr ""
-+msgstr "Asume que las ramificaciones condicionales con desplazamiento cero son rápidas."
+ #: fortran/arith.c:1384
+ msgid "elemental binary operation"
+@@ -5397,10 +5339,9 @@
+ msgstr "El operando del operador numérico unitario %%<%s%%> en %%L es %s"
- #: config/sh/sh.opt:236 config/sh/sh.opt:240
+ #: fortran/resolve.c:3949
-#, fuzzy, c-format
--#| msgid "Deprecated. This switch has no effect"
+-#| msgid "Operands of binary numeric operator %%<%s%%> at %%L are %s/%s"
+#, c-format
- msgid "%qs is deprecated and has no effect"
--msgstr "Obsoleto. Esta opción no tiene efecto"
-+msgstr "%qs está obsoleto y no tiene ningún efecto"
-
- #: config/sh/sh.opt:237
--#, fuzzy
--#| msgid "Enable cbranchdi4 pattern"
- msgid "Enable cbranchdi4 pattern."
- msgstr "Activa el patrón cbranchdi4."
-
-@@ -12510,37 +12239,27 @@
+ msgid "Unexpected derived-type entities in binary intrinsic numeric operator %%<%s%%> at %%L"
+-msgstr "Los operandos del operador numérico binario %%<%s%%> en %%L son %s/%s"
++msgstr "Entidades de tipos derivados no esperadas en el operador numérico intrínseco binario %%<%s%%> en %%L"
- #: config/sh/sh.opt:245
- msgid "Force the usage of delay slots for conditional branches."
+ #: fortran/resolve.c:3954
+ #, c-format
+@@ -5517,7 +5458,7 @@
+ #: fortran/trans-array.c:9544
+ #, c-format
+ msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration"
-msgstr ""
-+msgstr "Fuerza el uso de ranuras de retardo para las ramificaciones condicionales."
++msgstr "El valor del parámetro PDT LEN '%s' no concuerda con el de la declaración «dummy»"
- #: config/sh/sh.opt:249
--#, fuzzy
--#| msgid "Enable SH5 cut2 workaround"
- msgid "Enable SH5 cut2 workaround."
- msgstr "Permite evitar cut2 en SH5."
-
- #: config/sh/sh.opt:253
--#, fuzzy
--#| msgid "Align doubles at 64-bit boundaries"
- msgid "Align doubles at 64-bit boundaries."
- msgstr "Alinea doubles en límites de 64-bit."
-
- #: config/sh/sh.opt:257
--#, fuzzy
--#| msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
- msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table."
--msgstr "Estrategia de división, uno de: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table."
-+msgstr "Estrategia de división, una de las siguientes: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table."
-
- #: config/sh/sh.opt:261
--#, fuzzy
--#| msgid "Specify name for 32 bit signed division function"
- msgid "Specify name for 32 bit signed division function."
- msgstr "Especifica un nombre para la función de división de 32 bit con signo."
-
- #: config/sh/sh.opt:265
--#, fuzzy
--#| msgid "Generate LP64 code"
- msgid "Generate ELF FDPIC code."
--msgstr "Genera código LP64."
-+msgstr "Genera código ELF FDPIC."
-
- #: config/sh/sh.opt:269
- msgid "Enable the use of 64-bit floating point registers in fmov instructions. See -mdalign if 64-bit alignment is required."
-@@ -12547,68 +12266,46 @@
- msgstr "Activa el uso de registros de coma flotante de 64-bit en instrucciones. fmov. Vea -mdalign si se requiere alineación de 64-bit."
-
- #: config/sh/sh.opt:277
--#, fuzzy
--#| msgid "Cost to assume for gettr insn"
- msgid "Cost to assume for gettr insn."
- msgstr "Costo de asumir la instrucción gettr."
-
- #: config/sh/sh.opt:281 config/sh/sh.opt:331
--#, fuzzy
--#| msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions"
- msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions."
- msgstr "Sigue las convenciones de llamada Renesas (anteriormente Hitachi) / SuperH."
-
- #: config/sh/sh.opt:285
--#, fuzzy
--#| msgid "Increase the IEEE compliance for floating-point comparisons"
- msgid "Increase the IEEE compliance for floating-point comparisons."
- msgstr "Incrementa el cumplimiento con IEEE para las comparaciones de coma flotante."
-
- #: config/sh/sh.opt:289
--#, fuzzy
--#| msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact"
- msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact."
--msgstr "Permite el uso del modo de direccionamiento indizado para SHmedia32/SHcompact."
-+msgstr "Permite el uso del modo de direccionamiento indexado para SHmedia32/SHcompact."
-
- #: config/sh/sh.opt:293
--#, fuzzy
--#| msgid "inline code to invalidate instruction cache entries after setting up nested function trampolines"
- msgid "inline code to invalidate instruction cache entries after setting up nested function trampolines."
- msgstr "Código inline para invalidar las entradas de caché de instruciones después de establecerer los trampolines de funciones anidadas."
-
- #: config/sh/sh.opt:297
--#, fuzzy
--#| msgid "Assume symbols might be invalid"
- msgid "Assume symbols might be invalid."
- msgstr "Asume que los símbolos pueden ser no válidos."
-
- #: config/sh/sh.opt:301 config/arc/arc.opt:209
--#, fuzzy
--#| msgid "Annotate assembler instructions with estimated addresses"
- msgid "Annotate assembler instructions with estimated addresses."
- msgstr "Anota las instrucciones de ensamblador con direcciones estimadas."
-
- #: config/sh/sh.opt:305
--#, fuzzy
--#| msgid "Generate code in little endian mode"
- msgid "Generate code in little endian mode."
- msgstr "Genera código en modo little endian."
+ #: fortran/trans-decl.c:6025
+ #, c-format
+@@ -5719,10 +5660,8 @@
+ msgstr "se requiere -E ó -x cuando la entrada es de entrada estándar"
- #: config/sh/sh.opt:309
+ #: config/darwin.h:126 config/darwin.h:427
-#, fuzzy
--#| msgid "Mark MAC register as call-clobbered"
- msgid "Mark MAC register as call-clobbered."
- msgstr "Marca los registros MAC como sobreescritos por llamada."
+-#| msgid "-pg not supported on this platform"
+ msgid "gsplit-dwarf is not supported on this platform"
+-msgstr "-pg no se admite en esta plataforma"
++msgstr "gsplit-dwarf no se admite en esta plataforma"
- #: config/sh/sh.opt:315
--#, fuzzy
--#| msgid "Make structs a multiple of 4 bytes (warning: ABI altered)"
- msgid "Make structs a multiple of 4 bytes (warning: ABI altered)."
--msgstr "Marca los structs como un múltiplo de 4 bytes (aviso: se altera la ABI)."
-+msgstr "Construye los structs como un múltiplo de 4 bytes (aviso: se altera la ABI)."
+ #: config/darwin.h:170
+ msgid "rdynamic is not supported"
+@@ -5788,8 +5727,6 @@
- #: config/sh/sh.opt:319
+ #: config/aarch64/aarch64-freebsd.h:37 config/arm/freebsd.h:49
+ #: config/riscv/freebsd.h:44
-#, fuzzy
--#| msgid "Emit function-calls using global offset table when generating PIC"
- msgid "Emit function-calls using global offset table when generating PIC."
- msgstr "Emite llamadas a función usando la tabla de desplazamiento global al generar PIC."
+-#| msgid "consider using `-pg' instead of `-p' with gprof (1) "
+ msgid "consider using `-pg' instead of `-p' with gprof (1)"
+ msgstr "considere usar `-pg' en lugar de `-p' con gprof (1)"
-@@ -12617,34 +12314,26 @@
- msgstr "Asume que las instrucciones pt* no capturarán"
+@@ -5868,7 +5805,7 @@
- #: config/sh/sh.opt:327
--#, fuzzy
--#| msgid "Shorten address references during linking"
- msgid "Shorten address references during linking."
- msgstr "Abrevia las referencias de direcciones durante el enlace."
-
- #: config/sh/sh.opt:335
- msgid "Deprecated. Use -matomic= instead to select the atomic model."
+ #: config/rs6000/rs6000.h:139
+ msgid "Missing -mcpu option in ASM_CPU_SPEC?"
-msgstr ""
-+msgstr "Obsoleta. Utilice -matomic= en su lugar para seleccionar el modelo atómico."
-
- #: config/sh/sh.opt:339
--#, fuzzy
--#| msgid "Generate code for built-in atomic operations"
- msgid "Specify the model for atomic operations."
--msgstr "Genera código para operaciones atómicas internas."
-+msgstr "Especifica el modelo para operaciones atómicas."
++msgstr "¿Falta la opción -mcpu en ASM_CPU_SPEC?"
- #: config/sh/sh.opt:343
- msgid "Use tas.b instruction for __atomic_test_and_set."
--msgstr ""
-+msgstr "Usa la instrucción tas.b para __atomic_test_and_set."
+ #: config/rx/rx.h:80
+ msgid "-mas100-syntax is incompatible with -gdwarf"
+@@ -5891,10 +5828,8 @@
+ msgstr "SH2a no se admite para little-endian"
- #: config/sh/sh.opt:347
+ #: config/sparc/linux64.h:148
-#, fuzzy
--#| msgid "Deprecated. Use -Os instead"
- msgid "Deprecated. Use -Os instead."
- msgstr "Obsoleto. Utilice en su lugar -Os."
+-#| msgid "-pie is not supported in this configuration"
+ msgid "-fsanitize=address is not supported in this configuration"
+-msgstr "-pie no se admite en esta configuración"
++msgstr "-fsanitize=dirección no se admite en esta configuración"
- #: config/sh/sh.opt:351
--#, fuzzy
--#| msgid "Cost to assume for a multiply insn"
- msgid "Cost to assume for a multiply insn."
- msgstr "Costo de asumir una instrucción multiply."
-
-@@ -12657,198 +12346,134 @@
- msgstr "Pretende que una ramificación-alrededor-de-un-movimiento es un movimiento condicional."
-
- #: config/sh/sh.opt:365
--#, fuzzy
--#| msgid "Enable the use of the short load instructions"
- msgid "Enable the use of the fsca instruction."
--msgstr "Activa el uso de las instrucciones short load."
-+msgstr "Activa el uso de la instrucción fsca."
+ #: config/sparc/linux64.h:162 config/sparc/linux64.h:168
+ #: config/sparc/netbsd-elf.h:108 config/sparc/netbsd-elf.h:117
+@@ -5960,7 +5895,7 @@
- #: config/sh/sh.opt:369
--#, fuzzy
--#| msgid "Enable the use of the short load instructions"
- msgid "Enable the use of the fsrra instruction."
--msgstr "Activa el uso de las instrucciones short load."
-+msgstr "Activa el uso de la instrucción fsrra."
-
- #: config/sh/sh.opt:373
- msgid "Use LRA instead of reload (transitional)."
+ #: fortran/lang.opt:214
+ msgid "Warn about type and rank mismatches between arguments and parameters."
-msgstr ""
-+msgstr "Usa LRA en lugar de reload (transicional)."
-
- #: config/fr30/fr30.opt:23
--#, fuzzy
--#| msgid "Assume small address space"
- msgid "Assume small address space."
- msgstr "Asume espacio de direcciones small."
-
- #: config/mep/mep.opt:23
--#, fuzzy
--#| msgid "Enable absolute difference instructions"
- msgid "Enable absolute difference instructions."
- msgstr "Activa las instrucciones de diferencia absoluta."
-
- #: config/mep/mep.opt:27
--#, fuzzy
--#| msgid "Enable all optional instructions"
- msgid "Enable all optional instructions."
- msgstr "Activa todas las instrucciones opcionales."
-
- #: config/mep/mep.opt:31
--#, fuzzy
--#| msgid "Enable average instructions"
- msgid "Enable average instructions."
- msgstr "Activa las instrucciones promedio."
-
- #: config/mep/mep.opt:35
--#, fuzzy
--#| msgid "Variables this size and smaller go in the based section. (default 0)"
- msgid "Variables this size and smaller go in the based section. (default 0)."
- msgstr "Las variables de este tamaño y menores van en la sección basada. (por defecto 0)."
-
- #: config/mep/mep.opt:39
--#, fuzzy
--#| msgid "Enable bit manipulation instructions"
- msgid "Enable bit manipulation instructions."
- msgstr "Activa las instrucciones de manipulación de bits."
-
- #: config/mep/mep.opt:43
--#, fuzzy
--#| msgid "Section to put all const variables in (tiny, near, far) (no default)"
- msgid "Section to put all const variables in (tiny, near, far) (no default)."
- msgstr "Sección para poner todas las variables const en (tiny, near, far) (sin valor por defecto)."
-
- #: config/mep/mep.opt:47
--#, fuzzy
--#| msgid "Enable clip instructions"
- msgid "Enable clip instructions."
- msgstr "Activa las instrucciones clip."
-
- #: config/mep/mep.opt:51
--#, fuzzy
--#| msgid "Configuration name"
- msgid "Configuration name."
- msgstr "Nombre de configuración."
-
- #: config/mep/mep.opt:55
--#, fuzzy
--#| msgid "Enable MeP Coprocessor"
- msgid "Enable MeP Coprocessor."
- msgstr "Habilita el Coprocesador MeP."
-
- #: config/mep/mep.opt:59
--#, fuzzy
--#| msgid "Enable MeP Coprocessor with 32-bit registers"
- msgid "Enable MeP Coprocessor with 32-bit registers."
- msgstr "Habilita el Coprocesador MeP con registros de 32-bit."
-
- #: config/mep/mep.opt:63
--#, fuzzy
--#| msgid "Enable MeP Coprocessor with 64-bit registers"
- msgid "Enable MeP Coprocessor with 64-bit registers."
- msgstr "Habilita el Coprocesador MeP con registros de 64-bit."
-
- #: config/mep/mep.opt:67
--#, fuzzy
--#| msgid "Enable IVC2 scheduling"
- msgid "Enable IVC2 scheduling."
- msgstr "Activa la planificación IVC2."
-
- #: config/mep/mep.opt:71
--#, fuzzy
--#| msgid "Const variables default to the near section"
- msgid "Const variables default to the near section."
--msgstr "Las variables cons van por defecto a la sección near."
-+msgstr "Las variables const van por defecto a la sección near."
-
- #: config/mep/mep.opt:78
--#, fuzzy
--#| msgid "Enable 32-bit divide instructions"
- msgid "Enable 32-bit divide instructions."
- msgstr "Activa las instrucciones divide de 32-bit."
-
- #: config/mep/mep.opt:93
--#, fuzzy
--#| msgid "__io vars are volatile by default"
- msgid "__io vars are volatile by default."
- msgstr "__io vars son volatile por defecto."
-
- #: config/mep/mep.opt:97
--#, fuzzy
--#| msgid "All variables default to the far section"
- msgid "All variables default to the far section."
- msgstr "Todas las variables van por defecto a la sección far."
-
- #: config/mep/mep.opt:101
--#, fuzzy
--#| msgid "Enable leading zero instructions"
- msgid "Enable leading zero instructions."
- msgstr "Activa las instrucciones con ceros al inicio."
-
- #: config/mep/mep.opt:108
--#, fuzzy
--#| msgid "All variables default to the near section"
- msgid "All variables default to the near section."
- msgstr "Todas las variables van por defecto a la sección near."
-
- #: config/mep/mep.opt:112
--#, fuzzy
--#| msgid "Enable min/max instructions"
- msgid "Enable min/max instructions."
- msgstr "Activa las instrucciones min/max."
-
- #: config/mep/mep.opt:116
--#, fuzzy
--#| msgid "Enable 32-bit multiply instructions"
- msgid "Enable 32-bit multiply instructions."
- msgstr "Activa las instrucciones multiply de 32-bit."
-
- #: config/mep/mep.opt:120
--#, fuzzy
--#| msgid "Disable all optional instructions"
- msgid "Disable all optional instructions."
- msgstr "Desactiva todas las instrucciones opcionales."
-
- #: config/mep/mep.opt:127
--#, fuzzy
--#| msgid "Allow gcc to use the repeat/erepeat instructions"
- msgid "Allow gcc to use the repeat/erepeat instructions."
- msgstr "Permite a gcc usar las instrucciones repeat/erepeat."
-
- #: config/mep/mep.opt:131
--#, fuzzy
--#| msgid "All variables default to the tiny section"
- msgid "All variables default to the tiny section."
- msgstr "Todas las variables van por defecto a la sección tiny."
-
- #: config/mep/mep.opt:135
--#, fuzzy
--#| msgid "Enable saturation instructions"
- msgid "Enable saturation instructions."
- msgstr "Activa las instrucciones de saturación."
-
- #: config/mep/mep.opt:139
--#, fuzzy
--#| msgid "Use sdram version of runtime"
- msgid "Use sdram version of runtime."
- msgstr "Usa la versión sdram de tiempo de ejecución."
-
- #: config/mep/mep.opt:147
--#, fuzzy
--#| msgid "Use simulator runtime without vectors"
- msgid "Use simulator runtime without vectors."
- msgstr "Usa el simulador de tiempo de ejecución sin vectores."
-
- #: config/mep/mep.opt:151
--#, fuzzy
--#| msgid "All functions default to the far section"
- msgid "All functions default to the far section."
- msgstr "Todas las funciones van por defecto en la sección far."
-
- #: config/mep/mep.opt:155
--#, fuzzy
--#| msgid "Variables this size and smaller go in the tiny section. (default 4)"
- msgid "Variables this size and smaller go in the tiny section. (default 4)."
- msgstr "Las variables de este tamaño y menores van en la sección tiny. (por defecto 4)."
++msgstr "Avisa sobre discordancias de tipo y rango entre argumentos y parámetros."
- #: config/mips/mips.opt:32
--#, fuzzy
--#| msgid "-mabi=ABI\tGenerate code that conforms to the given ABI"
- msgid "-mabi=ABI\tGenerate code that conforms to the given ABI."
- msgstr "-mabi=ABI\tGenera código que cumpla con la ABI dada."
-
-@@ -12857,58 +12482,40 @@
- msgstr "ABIs MIPS conocidos (para uso con la opción -mabi=):"
-
- #: config/mips/mips.opt:55
--#, fuzzy
--#| msgid "Generate code that can be used in SVR4-style dynamic objects"
- msgid "Generate code that can be used in SVR4-style dynamic objects."
- msgstr "Genera código que se pueda usar en objetos dinámicos de estilo SVR4."
+ #: fortran/lang.opt:218
+ msgid "Warn if the type of a variable might be not interoperable with C."
+@@ -6243,7 +6178,7 @@
- #: config/mips/mips.opt:59
--#, fuzzy
--#| msgid "Use PMC-style 'mad' instructions"
- msgid "Use PMC-style 'mad' instructions."
- msgstr "Usa instrucciones 'mad' de estilo PMC."
-
- #: config/mips/mips.opt:63
--#, fuzzy
--#| msgid "Use multiply add/subtract instructions"
- msgid "Use integer madd/msub instructions."
--msgstr "Usa instrucciones acumular/sustraer de multiplicar."
-+msgstr "Usa instrucciones madd/msub de enteros."
-
- #: config/mips/mips.opt:67
--#, fuzzy
--#| msgid "-march=ISA\tGenerate code for the given ISA"
- msgid "-march=ISA\tGenerate code for the given ISA."
- msgstr "-march=ISA\tGenera código para el ISA dado."
-
- #: config/mips/mips.opt:71
--#, fuzzy
--#| msgid "-mbranch-cost=COST\tSet the cost of branches to roughly COST instructions"
- msgid "-mbranch-cost=COST\tSet the cost of branches to roughly COST instructions."
- msgstr "-mbranch-cost=COSTO\tEstablece el costo de las ramificaciones aproximadamente a COSTO instrucciones."
-
- #: config/mips/mips.opt:75
--#, fuzzy
--#| msgid "Use Branch Likely instructions, overriding the architecture default"
- msgid "Use Branch Likely instructions, overriding the architecture default."
--msgstr "Usa instrucciones Branch Likely, sobreponiendo el valor por defecto para la arquitectura."
-+msgstr "Usa instrucciones Branch Likely, anulando el valor predeterminado de la arquitectura."
-
- #: config/mips/mips.opt:79
--#, fuzzy
--#| msgid "Switch on/off MIPS16 ASE on alternating functions for compiler testing"
- msgid "Switch on/off MIPS16 ASE on alternating functions for compiler testing."
--msgstr "Activa/desactiva el ASE de MIPS16 en funciones alternates para pruebas del compilador."
-+msgstr "Activa/desactiva el ASE de MIPS16 en funciones alternantes para pruebas del compilador."
-
- #: config/mips/mips.opt:83
--#, fuzzy
--#| msgid "Trap on integer divide by zero"
- msgid "Trap on integer divide by zero."
- msgstr "Atrapa la división entera por cero."
-
- #: config/mips/mips.opt:87
--#, fuzzy
--#| msgid "-mcode-readable=SETTING\tSpecify when instructions are allowed to access code"
- msgid "-mcode-readable=SETTING\tSpecify when instructions are allowed to access code."
--msgstr "-mcode-readable=OPCIÓN\tEspecifica cuando se permite que las instrucciones accedan código."
-+msgstr "-mcode-readable=OPCIÓN\tEspecifica cuándo se permite que las instrucciones accedan al código."
-
- #: config/mips/mips.opt:91
- msgid "Valid arguments to -mcode-readable=:"
-@@ -12915,314 +12522,214 @@
- msgstr "Argumentos válidos para -fcode-readable=:"
-
- #: config/mips/mips.opt:104
--#, fuzzy
--#| msgid "Use branch-and-break sequences to check for integer divide by zero"
- msgid "Use branch-and-break sequences to check for integer divide by zero."
- msgstr "Usa secuencias ramifica-y-para para revisar la división entera por cero."
-
- #: config/mips/mips.opt:108
--#, fuzzy
--#| msgid "Use trap instructions to check for integer divide by zero"
- msgid "Use trap instructions to check for integer divide by zero."
- msgstr "Usa instrucciones trap para revisar la división entera por cero."
-
- #: config/mips/mips.opt:112
--#, fuzzy
--#| msgid "Allow the use of MDMX instructions"
- msgid "Allow the use of MDMX instructions."
- msgstr "Permite el uso de las instrucciones MDMX."
-
- #: config/mips/mips.opt:116
--#, fuzzy
--#| msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations"
- msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations."
- msgstr "Permite que las instrucciones de coma flotante de hardware cubran tanto operaciones de 32-bit como de 64-bit."
-
- #: config/mips/mips.opt:120
--#, fuzzy
--#| msgid "Use MIPS-DSP instructions"
- msgid "Use MIPS-DSP instructions."
- msgstr "Usa instrucciones MIPS-DSP."
-
- #: config/mips/mips.opt:124
--#, fuzzy
--#| msgid "Use MIPS-DSP REV 2 instructions"
- msgid "Use MIPS-DSP REV 2 instructions."
- msgstr "Usa instrucciones MIPS-DSP REV 2."
-
- #: config/mips/mips.opt:146
--#, fuzzy
--#| msgid "Use the bit-field instructions"
- msgid "Use Enhanced Virtual Addressing instructions."
--msgstr "Usa las instrucciones de campos de bit."
-+msgstr "Usa las instrucciones de direccionamiento virtual mejorado."
-
- #: config/mips/mips.opt:150
--#, fuzzy
--#| msgid "Use NewABI-style %reloc() assembly operators"
- msgid "Use NewABI-style %reloc() assembly operators."
- msgstr "Usa los operadores de ensamblador %reloc() del estilo NewABI."
-
- #: config/mips/mips.opt:154
--#, fuzzy
--#| msgid "Use -G for data that is not defined by the current object"
- msgid "Use -G for data that is not defined by the current object."
- msgstr "Usa -G para los datos que están definidos por el objeto actual."
-
- #: config/mips/mips.opt:158
--#, fuzzy
--#| msgid "Work around certain 24K errata"
- msgid "Work around certain 24K errata."
--msgstr "Evita errores de ciertos 24K."
-+msgstr "Evita ciertos errores de 24K."
-
- #: config/mips/mips.opt:162
--#, fuzzy
--#| msgid "Work around certain R4000 errata"
- msgid "Work around certain R4000 errata."
--msgstr "Evita errores de ciertos R4000."
-+msgstr "Evita ciertos errores de R4000."
-
- #: config/mips/mips.opt:166
--#, fuzzy
--#| msgid "Work around certain R4400 errata"
- msgid "Work around certain R4400 errata."
--msgstr "Evita errores de ciertos R4400."
-+msgstr "Evita ciertos errores de R4400."
-
- #: config/mips/mips.opt:170
--#, fuzzy
--#| msgid "Work around certain R4000 errata"
- msgid "Work around certain RM7000 errata."
--msgstr "Evita errores de ciertos R4000."
-+msgstr "Evita ciertos errores de R4000."
-
- #: config/mips/mips.opt:174
--#, fuzzy
--#| msgid "Work around certain R10000 errata"
- msgid "Work around certain R10000 errata."
--msgstr "Evita errores de ciertos R10000."
-+msgstr "Evita ciertos errores de R10000."
-
- #: config/mips/mips.opt:178
--#, fuzzy
--#| msgid "Work around errata for early SB-1 revision 2 cores"
- msgid "Work around errata for early SB-1 revision 2 cores."
- msgstr "Evita los errores para núcleos tempranos SB-1 revisión 2."
-
- #: config/mips/mips.opt:182
--#, fuzzy
--#| msgid "Work around certain VR4120 errata"
- msgid "Work around certain VR4120 errata."
--msgstr "Evita errores de ciertos VR4120."
-+msgstr "Evita ciertos errores de VR4120."
-
- #: config/mips/mips.opt:186
--#, fuzzy
--#| msgid "Work around VR4130 mflo/mfhi errata"
- msgid "Work around VR4130 mflo/mfhi errata."
- msgstr "Evita el error mflo/mfhi del VR4130."
-
- #: config/mips/mips.opt:190
--#, fuzzy
--#| msgid "Work around an early 4300 hardware bug"
- msgid "Work around an early 4300 hardware bug."
- msgstr "Evita el error de hardware de los primeros 4300."
-
- #: config/mips/mips.opt:194
--#, fuzzy
--#| msgid "FP exceptions are enabled"
- msgid "FP exceptions are enabled."
- msgstr "Las excepciones FP están activadas."
-
- #: config/mips/mips.opt:198
--#, fuzzy
--#| msgid "Use 32-bit floating-point registers"
- msgid "Use 32-bit floating-point registers."
- msgstr "Usa los registros de coma flotante de 32-bit."
-
- #: config/mips/mips.opt:202
- msgid "Conform to the o32 FPXX ABI."
+ #: fortran/lang.opt:565
+ msgid "Try to interchange loops if profitable."
-msgstr ""
-+msgstr "Conforma al o32 FPXX ABI."
-
- #: config/mips/mips.opt:206
--#, fuzzy
--#| msgid "Use 64-bit floating-point registers"
- msgid "Use 64-bit floating-point registers."
- msgstr "Usa los registros de coma flotante de 64-bit."
-
- #: config/mips/mips.opt:210
--#, fuzzy
--#| msgid "-mflush-func=FUNC\tUse FUNC to flush the cache before calling stack trampolines"
- msgid "-mflush-func=FUNC\tUse FUNC to flush the cache before calling stack trampolines."
- msgstr "-mflush-func=FUNC\tUsa FUNC para vaciar el caché antes de llamar a los trampolines de pila."
++msgstr "Intenta intercambiar bucles si es provechoso."
- #: config/mips/mips.opt:214
- msgid "-mabs=MODE\tSelect the IEEE 754 ABS/NEG instruction execution mode."
--msgstr ""
-+msgstr "-mabs=MODO\tSelecciona el modo de ejecución de instrucciones IEEE 754 ABS/NEG."
+ #: fortran/lang.opt:569
+ msgid "Enable front end optimization."
+@@ -6259,7 +6194,7 @@
- #: config/mips/mips.opt:218
- msgid "-mnan=ENCODING\tSelect the IEEE 754 NaN data encoding."
+ #: fortran/lang.opt:581
+ msgid "Initialize components of derived type variables according to other init flags."
-msgstr ""
-+msgstr "-mnan=CODIFICACIÓN\tSelecciona la codificación de datos IEEE 754 NaN."
-
- #: config/mips/mips.opt:222
--#, fuzzy
--#| msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
- msgid "Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):"
--msgstr "CPUs MIPS conocidos (para uso con las opciones -march= y -mtune=):"
-+msgstr "Configuración de lso MIPS IEEE 754 conocidos (para uso con las opciones -mabs= y -mnan=):"
-
- #: config/mips/mips.opt:232
--#, fuzzy
--#| msgid "Use 32-bit general registers"
- msgid "Use 32-bit general registers."
- msgstr "Usa los registros generales de 32-bit."
-
- #: config/mips/mips.opt:236
--#, fuzzy
--#| msgid "Use 64-bit general registers"
- msgid "Use 64-bit general registers."
- msgstr "Usa los registros generales de 64-bit."
-
- #: config/mips/mips.opt:240
--#, fuzzy
--#| msgid "Use GP-relative addressing to access small data"
- msgid "Use GP-relative addressing to access small data."
- msgstr "Usa el direccionamiento relativo al GP para acceder a datos small."
-
- #: config/mips/mips.opt:244
--#, fuzzy
--#| msgid "When generating -mabicalls code, allow executables to use PLTs and copy relocations"
- msgid "When generating -mabicalls code, allow executables to use PLTs and copy relocations."
- msgstr "Al generar código -mabicalls, permite que los ejecutables usen PLTs y copien reubicaciones."
-
- #: config/mips/mips.opt:248
--#, fuzzy
--#| msgid "Allow the use of hardware floating-point ABI and instructions"
- msgid "Allow the use of hardware floating-point ABI and instructions."
- msgstr "Permite el uso de la ABI y las instrucciones de coma flotante de hardware."
-
- #: config/mips/mips.opt:252
--#, fuzzy
--#| msgid "Generate code that can be safely linked with MIPS16 code."
- msgid "Generate code that is link-compatible with MIPS16 and microMIPS code."
--msgstr "Genera código que se puede enlazar sin problemas con código MIPS16."
-+msgstr "Genera código que se puede enlazar con código MIPS16 microMIPS."
++msgstr "Inicializa componentes de variables de tipo derivado en conformidad con otros indicadores de inicialización."
- #: config/mips/mips.opt:256
--#, fuzzy
--#| msgid "Does nothing. Preserved for backward compatibility."
- msgid "An alias for minterlink-compressed provided for backward-compatibility."
--msgstr "No hace nada. Preservado por compatibilidad hacia atrás."
-+msgstr "Sinónimo de minterlink-compressed, preservado por compatibilidad hacia atrás."
+ #: fortran/lang.opt:585
+ msgid "-finit-integer=<n>\tInitialize local integer variables to n."
+@@ -6315,7 +6250,7 @@
- #: config/mips/mips.opt:260
--#, fuzzy
--#| msgid "-mipsN\tGenerate code for ISA level N"
- msgid "-mipsN\tGenerate code for ISA level N."
- msgstr "-mipsN\tGenera código para ISA nivel N."
-
- #: config/mips/mips.opt:264
--#, fuzzy
--#| msgid "Generate MIPS16 code"
- msgid "Generate MIPS16 code."
- msgstr "Genera código MIPS16."
-
- #: config/mips/mips.opt:268
--#, fuzzy
--#| msgid "Use MIPS-3D instructions"
- msgid "Use MIPS-3D instructions."
- msgstr "Usa instrucciones MIPS-3D."
-
- #: config/mips/mips.opt:272
--#, fuzzy
--#| msgid "Use ll, sc and sync instructions"
- msgid "Use ll, sc and sync instructions."
- msgstr "Usa las instrucciones ll, sc y sync."
-
- #: config/mips/mips.opt:276
--#, fuzzy
--#| msgid "Use -G for object-local data"
- msgid "Use -G for object-local data."
- msgstr "Usa -G para los datos del objeto local."
-
- #: config/mips/mips.opt:280
--#, fuzzy
--#| msgid "Use indirect calls"
- msgid "Use indirect calls."
- msgstr "Usa llamadas indirectas."
-
- #: config/mips/mips.opt:284
--#, fuzzy
--#| msgid "Use a 32-bit long type"
- msgid "Use a 32-bit long type."
- msgstr "Usa un tipo long de 32-bit."
-
- #: config/mips/mips.opt:288
--#, fuzzy
--#| msgid "Use a 64-bit long type"
- msgid "Use a 64-bit long type."
- msgstr "Usa un tipo long de 64-bit."
-
- #: config/mips/mips.opt:292
--#, fuzzy
--#| msgid "Pass the address of the ra save location to _mcount in $12"
- msgid "Pass the address of the ra save location to _mcount in $12."
- msgstr "Pasa la dirección de la ubicación de ra save a _mcount en $12."
-
- #: config/mips/mips.opt:296
--#, fuzzy
--#| msgid "Don't optimize block moves"
- msgid "Don't optimize block moves."
- msgstr "No optimiza los movimientos de bloques."
-
- #: config/mips/mips.opt:300
--#, fuzzy
--#| msgid "Use SmartMIPS instructions"
- msgid "Use microMIPS instructions."
--msgstr "Usa instrucciones SmartMIPS."
-+msgstr "Usa instrucciones microMIPS."
-
- #: config/mips/mips.opt:304
--#, fuzzy
--#| msgid "Allow the use of MT instructions"
- msgid "Allow the use of MT instructions."
- msgstr "Permite el uso de las instrucciones MT."
-
- #: config/mips/mips.opt:308
--#, fuzzy
--#| msgid "Prevent the use of all floating-point operations"
- msgid "Prevent the use of all floating-point operations."
- msgstr "Previene el uso de todas las instrucciones de coma flotante."
-
- #: config/mips/mips.opt:312
--#, fuzzy
--#| msgid "Use MIPS-3D instructions"
- msgid "Use MCU instructions."
--msgstr "Usa instrucciones MIPS-3D."
-+msgstr "Usa instrucciones MCU."
-
- #: config/mips/mips.opt:316
--#, fuzzy
--#| msgid "Do not use a cache-flushing function before calling stack trampolines"
- msgid "Do not use a cache-flushing function before calling stack trampolines."
- msgstr "No usa una función que vacíe el caché antes de llamar los trampolines de pila."
-
- #: config/mips/mips.opt:320
--#, fuzzy
--#| msgid "Do not use MDMX instructions"
- msgid "Do not use MDMX instructions."
- msgstr "No usa instrucciones MDMX."
-
- #: config/mips/mips.opt:324
--#, fuzzy
--#| msgid "Generate normal-mode code"
- msgid "Generate normal-mode code."
- msgstr "Genera código normal-mode."
-
- #: config/mips/mips.opt:328
--#, fuzzy
--#| msgid "Do not use MIPS-3D instructions"
- msgid "Do not use MIPS-3D instructions."
- msgstr "No usa instrucciones MIPS-3D."
-
- #: config/mips/mips.opt:332
--#, fuzzy
--#| msgid "Use paired-single floating-point instructions"
- msgid "Use paired-single floating-point instructions."
- msgstr "Usa instrucciones apareadas-sencillas de coma flotante."
-
- #: config/mips/mips.opt:336
--#, fuzzy
--#| msgid "-mr10k-cache-barrier=SETTING\tSpecify when r10k cache barriers should be inserted"
- msgid "-mr10k-cache-barrier=SETTING\tSpecify when r10k cache barriers should be inserted."
- msgstr "-mr10k-cache-barrier=OPCIÓN\tEspecifica cuando se deben insertar las barreras de caché de r10k."
-
-@@ -13231,94 +12738,64 @@
- msgstr "Argumentos válidos para -mr10k-cache-barrier=:"
-
- #: config/mips/mips.opt:353
--#, fuzzy
--#| msgid "Try to allow the linker to turn PIC calls into direct calls"
- msgid "Try to allow the linker to turn PIC calls into direct calls."
- msgstr "Trata de permitir que el enlazador convierta las llamadas PIC a llamadas directas."
-
- #: config/mips/mips.opt:357
--#, fuzzy
--#| msgid "When generating -mabicalls code, make the code suitable for use in shared libraries"
- msgid "When generating -mabicalls code, make the code suitable for use in shared libraries."
- msgstr "Al generar código -mabicalls, hace que el código sea adecuado para su uso en bibliotecas compartidas."
-
- #: config/mips/mips.opt:361
--#, fuzzy
--#| msgid "Restrict the use of hardware floating-point instructions to 32-bit operations"
- msgid "Restrict the use of hardware floating-point instructions to 32-bit operations."
- msgstr "Restringe el uso de instrucciones de coma flotante de hardware para operaciones de 32-bit."
-
- #: config/mips/mips.opt:365
--#, fuzzy
--#| msgid "Use SmartMIPS instructions"
- msgid "Use SmartMIPS instructions."
- msgstr "Usa instrucciones SmartMIPS."
-
- #: config/mips/mips.opt:369
--#, fuzzy
--#| msgid "Prevent the use of all hardware floating-point instructions"
- msgid "Prevent the use of all hardware floating-point instructions."
- msgstr "Previene el uso de todas las instrucciones de coma flotante de hardware."
-
- #: config/mips/mips.opt:373
--#, fuzzy
--#| msgid "Optimize lui/addiu address loads"
- msgid "Optimize lui/addiu address loads."
- msgstr "Optimiza las cargas de las direcciones lui/addiu."
-
- #: config/mips/mips.opt:377
--#, fuzzy
--#| msgid "Assume all symbols have 32-bit values"
- msgid "Assume all symbols have 32-bit values."
- msgstr "Asume que todos los símbolos tienen valores de 32-bit."
-
- #: config/mips/mips.opt:381
--#, fuzzy
--#| msgid "Use synci instruction to invalidate i-cache"
- msgid "Use synci instruction to invalidate i-cache."
- msgstr "Usa la instrucción synci para invalidar el i-caché."
-
- #: config/mips/mips.opt:389
--#, fuzzy
--#| msgid "-mtune=PROCESSOR\tOptimize the output for PROCESSOR"
- msgid "-mtune=PROCESSOR\tOptimize the output for PROCESSOR."
- msgstr "-mtune=PROCESADOR\tOptimiza la salida para el PROCESADOR."
-
- #: config/mips/mips.opt:397
--#, fuzzy
--#| msgid "Use decimal floating point instructions"
- msgid "Use Virtualization Application Specific instructions."
--msgstr "Usa instrucciones de coma flotante decimal."
-+msgstr "Usa instrucciones específicas de aplicación de virtualización."
-
- #: config/mips/mips.opt:401
--#, fuzzy
--#| msgid "Use vector/scalar (VSX) instructions"
- msgid "Use eXtended Physical Address (XPA) instructions."
--msgstr "Usa instrucciones (VSX) vector/escalar."
-+msgstr "Usa instrucciones de direcciones físicas extendidas (XPA)."
-
- #: config/mips/mips.opt:405
--#, fuzzy
--#| msgid "Perform VR4130-specific alignment optimizations"
- msgid "Perform VR4130-specific alignment optimizations."
- msgstr "Realiza optimizaciones de alineación específicas para VR4130."
-
- #: config/mips/mips.opt:409
--#, fuzzy
--#| msgid "Lift restrictions on GOT size"
- msgid "Lift restrictions on GOT size."
- msgstr "Levanta restricciones en el tamaño de GOT."
-
- #: config/mips/mips.opt:413
--#, fuzzy
--#| msgid "Don't allocate floats and doubles in extended-precision registers"
- msgid "Enable use of odd-numbered single-precision registers."
--msgstr "No aloja floats y doubles en registros de precisión extendida."
-+msgstr "Activa el uso de registros de precisión sencilla impares."
-
- #: config/mips/mips.opt:417
--#, fuzzy
--#| msgid "Optimize for space rather than speed"
- msgid "Optimize frame header."
--msgstr "Optimiza para espacio en lugar de velocidad."
-+msgstr "Optimiza la cabecera de marco."
-
- #: config/mips/mips.opt:424
- #, fuzzy
-@@ -13328,11 +12805,11 @@
-
- #: config/mips/mips.opt:428
- msgid "Specify the compact branch usage policy."
+ #: fortran/lang.opt:675
+ msgid "Path to header file that should be pre-included before each compilation unit."
-msgstr ""
-+msgstr "Especifica la política de uso de ramificación compacta."
++msgstr "Ruta de fichero de cabecera que debería preincluirse antes de cada unidad de compilación."
- #: config/mips/mips.opt:432
- msgid "Policies available for use with -mcompact-branches=:"
--msgstr ""
-+msgstr "Políticas disponibles para usar con -mcompact-branches=:"
-
- #: config/mips/mips-tables.opt:24
- msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
-@@ -13355,136 +12832,104 @@
- msgstr "Compila con longs y punteros de 64 bit."
-
- #: config/tilegx/tilegx.opt:53
--#, fuzzy
--#| msgid "Use given x86-64 code model"
- msgid "Use given TILE-Gx code model."
--msgstr "Usa el modelo de código del x86-64 dado."
-+msgstr "Usa el modelo de código del TILE-Gx dado."
+ #: fortran/lang.opt:679
+ msgid "Enable range checking during compilation."
+@@ -6517,7 +6452,7 @@
- #: config/arc/arc.opt:26
--#, fuzzy
--#| msgid "Generate code in big endian mode"
- msgid "Compile code for big endian mode."
--msgstr "Genera código en modo big endian."
-+msgstr "Compila código para modo big endian."
-
- #: config/arc/arc.opt:30
--#, fuzzy
--#| msgid "Stores doubles in 32 bits. This is the default."
- msgid "Compile code for little endian mode. This is the default."
--msgstr "Almacena dobles en 32 bits. Este es el valor por defecto."
-+msgstr "Compila código para modo little endian. Este es el valor predefinido."
-
- #: config/arc/arc.opt:34
- msgid "Disable ARCompact specific pass to generate conditional execution instructions."
--msgstr ""
-+msgstr "Desactiva el paso específico ARCompact para generar instrucciones de ejecución condicional."
-
- #: config/arc/arc.opt:38
- msgid "Generate ARCompact 32-bit code for ARC600 processor."
+ #: c-family/c.opt:276
+ msgid "Warn on suspicious calls of standard functions computing absolute values."
-msgstr ""
-+msgstr "Genera código de 32 bits ARCompact para el procesador ARC600."
++msgstr "Advierte de llamadas sospechosas de funciones estándar que calculan valores absolutos."
- #: config/arc/arc.opt:42
--#, fuzzy
--#| msgid "Same as -mcpu=i386"
- msgid "Same as -mA6."
--msgstr "Igual que -mcpu=i386."
-+msgstr "Igual que -mA6."
+ #: c-family/c.opt:280
+ msgid "Warn about suspicious uses of memory addresses."
+@@ -6545,7 +6480,7 @@
- #: config/arc/arc.opt:46
- msgid "Generate ARCompact 32-bit code for ARC601 processor."
+ #: c-family/c.opt:317
+ msgid "-Wno-alloc-size-larger-than Disable Walloc-size-larger-than= warning. Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger."
-msgstr ""
-+msgstr "Genera código de 32 bits ARCompact para el procesador ARC601."
++msgstr "-Wno-alloc-size-larger-than Desactiva el aviso Walloc-size-larger-than=. Equivalente a Walloc-size-larger-than=<MAX_TAMAÑO> o mayor."
- #: config/arc/arc.opt:50
- msgid "Generate ARCompact 32-bit code for ARC700 processor."
--msgstr ""
-+msgstr "Genera código de 32 bits ARCompact para el procesador ARC700."
+ #: c-family/c.opt:321
+ msgid "-Walloc-zero Warn for calls to allocation functions that specify zero bytes."
+@@ -6557,7 +6492,7 @@
- #: config/arc/arc.opt:54
--#, fuzzy
--#| msgid "Same as -mcpu=i386"
- msgid "Same as -mA7."
--msgstr "Igual que -mcpu=i386."
-+msgstr "Igual que -mA7."
-
- #: config/arc/arc.opt:58
- msgid "-mmpy-option={0,1,2,3,4,5,6,7,8,9} Compile ARCv2 code with a multiplier design option. Option 2 is default on."
+ #: c-family/c.opt:331
+ msgid "-Wno-alloca-larger-than Disable Walloca-larger-than= warning. Equivalent to Walloca-larger-than=<SIZE_MAX> or larger."
-msgstr ""
-+msgstr "-mmpy-option={0,1,2,3,4,5,6,7,8,9} Compila código ARCv2 con una opción de diseño de multiplicador. La opción 2 es la activa predefinida."
++msgstr "-Wno-alloca-larger-than Desactiva el aviso Walloca-larger-than=. Equivalente a Walloca-larger-than=<MAX_TAMAÑO> o mayor."
- #: config/arc/arc.opt:62
--#, fuzzy
--#| msgid "Enable clip instructions"
- msgid "Enable DIV-REM instructions for ARCv2."
--msgstr "Activa las instrucciones clip."
-+msgstr "Activa las instrucciones DIV-REM para ARCv2."
+ #: c-family/c.opt:343
+ msgid "Warn whenever an Objective-C assignment is being intercepted by the garbage collector."
+@@ -6588,10 +6523,8 @@
+ msgstr "Avisa cuando una macro de preprocesador interna está sin definir o redefinida."
- #: config/arc/arc.opt:66
+ #: c-family/c.opt:371
-#, fuzzy
--#| msgid "Enable barrel shift instructions"
- msgid "Enable code density instructions for ARCv2."
--msgstr "Activa las instrucciones barrel shift."
-+msgstr "Activa las instrucciones de densidad de código para ARCv2."
+-#| msgid "Warn about features not present in ISO C99, but present in ISO C11."
+ msgid "Warn about features not present in ISO C11, but present in ISO C2X."
+-msgstr "Avisa sobre características no presentes en ISO C99, pero presentes en ISO C11."
++msgstr "Avisa sobre características no presentes en ISO C11, pero presentes en ISO C2X."
- #: config/arc/arc.opt:70
+ #: c-family/c.opt:375
+ msgid "Warn about features not present in ISO C90, but present in ISO C99."
+@@ -6641,10 +6574,8 @@
+ #: c-family/c.opt:1369 c-family/c.opt:1373 c-family/c.opt:1377
+ #: c-family/c.opt:1381 c-family/c.opt:1385 c-family/c.opt:1389
+ #: config/i386/i386.opt:967
-#, fuzzy
--#| msgid "preferentially allocate registers that allow short instruction generation."
- msgid "Tweak register allocation to help 16-bit instruction generation."
--msgstr "aloja de preferencia registros que permitan la generación de instrucciones short."
-+msgstr "Retoca la asignación de registros para ayudar a la generación de instrucciones de 16 bits."
+-#| msgid "Deprecated in GCC 8. This switch has no effect."
+ msgid "Deprecated in GCC 9. This switch has no effect."
+-msgstr "Obsoleto en GCC 8. Esta opción no tiene efecto."
++msgstr "Obsoleto en GCC 9. Esta opción no tiene efecto."
- #: config/arc/arc.opt:80
- msgid "Use ordinarily cached memory accesses for volatile references."
--msgstr ""
-+msgstr "Usa accesos normales a memoria cacheada para referencias volátiles."
+ #: c-family/c.opt:429
+ msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"."
+@@ -6676,7 +6607,7 @@
- #: config/arc/arc.opt:84
--#, fuzzy
--#| msgid "Don't use data cache for volatile mem refs"
- msgid "Enable cache bypass for volatile references."
--msgstr "No usar el caché de datos para referencias a memoria volatile."
-+msgstr "Activa el bypass de caché para referencias volátiles."
+ #: c-family/c.opt:461
+ msgid "Warn about dangling else."
+-msgstr "Avisa sobre else colgados."
++msgstr "Avisa sobre else congante."
- #: config/arc/arc.opt:88
--#, fuzzy
--#| msgid "Generate string instructions for block moves"
- msgid "Generate instructions supported by barrel shifter."
--msgstr "Genera instrucciones de cadena para movimiento de bloques."
-+msgstr "Genera instrucciones admitidas por el barrel shift."
-
- #: config/arc/arc.opt:92
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "Generate norm instruction."
--msgstr "Genera instrucciones bit."
-+msgstr "Genera instrucciones norm."
-
- #: config/arc/arc.opt:96
--#, fuzzy
--#| msgid "Generate isel instructions"
- msgid "Generate swap instruction."
--msgstr "Genera instrucciones isel."
-+msgstr "Genera instrucciones swap."
-
- #: config/arc/arc.opt:100
--#, fuzzy
--#| msgid "Generate load/store multiple instructions"
- msgid "Generate mul64 and mulu64 instructions."
--msgstr "Genera múltiples instrucciones load/store."
-+msgstr "Genera instrucciones mul64 y mulu64."
-
- #: config/arc/arc.opt:104
--#, fuzzy
--#| msgid "Do not generate multm instructions"
- msgid "Do not generate mpy instructions for ARC700."
--msgstr "No generar instrucciones multm."
-+msgstr "No generar instrucciones mpy para ARC700."
+ #: c-family/c.opt:465
+ msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage."
+@@ -6696,11 +6627,11 @@
- #: config/arc/arc.opt:108
- msgid "Generate Extended arithmetic instructions. Currently only divaw, adds, subs and sat16 are supported."
+ #: c-family/c.opt:485
+ msgid "Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation."
-msgstr ""
-+msgstr "Genera instrucciones de aritmética extendida. Actualmente solo se dispone de divaw, adds, subs y sat16."
++msgstr "Marca las operaciones de copia declaradas implícitamente como obsoletas si la clase tiene una operación de copia definida por el usuario."
- #: config/arc/arc.opt:112
- msgid "Dummy flag. This is the default unless FPX switches are provided explicitly."
+ #: c-family/c.opt:490
+ msgid "Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation or destructor."
-msgstr ""
-+msgstr "Indicador tonto. Es el predefinido a menos que que se proporcionen switches FPX explícitamente."
++msgstr "Marca las operaciones de copia declaradas implícitamente como obsoletas si la clase tiene una operación de copia o un destructor definidos por el usuario."
- #: config/arc/arc.opt:116
--#, fuzzy
--#| msgid "Generate call insns as indirect calls"
- msgid "Generate call insns as register indirect calls."
--msgstr "Genera las llamadas insns como llamadas indirectas."
-+msgstr "Genera las llamadas insns como llamadas indirectas de registros."
-
- #: config/arc/arc.opt:120
--#, fuzzy
--#| msgid "Do not generate char instructions"
- msgid "Do no generate BRcc instructions in arc_reorg."
--msgstr "No generar instrucciones char."
-+msgstr "No generar instrucciones BRcc en arc_reorg."
-
- #: config/arc/arc.opt:124
- msgid "Generate sdata references. This is the default, unless you compile for PIC."
--msgstr ""
-+msgstr "Generar referencias de sdata. Es lo predefinido, salvo que se compile para PIC."
-
- #: config/arc/arc.opt:128
- #, fuzzy
-@@ -13494,419 +12939,316 @@
-
- #: config/arc/arc.opt:132 config/arc/arc.opt:136
- msgid "FPX: Generate Single Precision FPX (compact) instructions."
--msgstr ""
-+msgstr "FPX: Generar instrucciones FPX de precisión sencilla (compactas)."
+ #: c-family/c.opt:495
+ msgid "Warn about positional initialization of structs requiring designated initializers."
+@@ -6776,7 +6707,7 @@
- #: config/arc/arc.opt:140
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "FPX: Generate Single Precision FPX (fast) instructions."
--msgstr "Genera instrucciones bit."
-+msgstr "FPX: Generar instrucciones FPX de precisión sencilla (rápidas)."
-
- #: config/arc/arc.opt:144
- msgid "FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions."
+ #: c-family/c.opt:575
+ msgid "Warn about function calls with format strings that write past the end of the destination region. Same as -Wformat-overflow=1."
-msgstr ""
-+msgstr "FPX: Activar las extensiones de coma flotante de doble precisión de la CPU Argonaut ARC."
-
- #: config/arc/arc.opt:148 config/arc/arc.opt:152
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "FPX: Generate Double Precision FPX (compact) instructions."
--msgstr "Genera instrucciones bit."
-+msgstr "FPX: Generar instrucciones FPX de precisión doble (compactas)."
++msgstr "Advierte de llamadas a función con cadenas de formato que escriben más allá del final de la región de destino. Igual que -Wformat-overflow=1."
- #: config/arc/arc.opt:156
--#, fuzzy
--#| msgid "Generate bit instructions"
- msgid "FPX: Generate Double Precision FPX (fast) instructions."
--msgstr "Genera instrucciones bit."
-+msgstr "FPX: Generar instrucciones FPX de precisión doble (rápidas)."
+ #: c-family/c.opt:580
+ msgid "Warn about possible security problems with format functions."
+@@ -6788,7 +6719,7 @@
- #: config/arc/arc.opt:160
- msgid "Disable LR and SR instructions from using FPX extension aux registers."
+ #: c-family/c.opt:588
+ msgid "Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1."
-msgstr ""
-+msgstr "Desactivar en las instrucciones LR y SR el uso de registros auxiliares de la extensión FPX."
++msgstr "Advierte de llamadas a snprintf y funciones similares que truncan la salida. Igual que -Wformat-truncation=1."
- #: config/arc/arc.opt:164
- msgid "Enable generation of ARC SIMD instructions via target-specific builtins."
--msgstr ""
-+msgstr "Activar la generación de instrucciones ARC SIMD mediante funciones internas específicas de objetivo."
+ #: c-family/c.opt:593
+ msgid "Warn about strftime formats yielding 2-digit years."
+@@ -6824,7 +6755,7 @@
- #: config/arc/arc.opt:168
--#, fuzzy
--#| msgid "-mcpu=CPU\tCompile code for ARC variant CPU"
- msgid "-mcpu=CPU\tCompile code for ARC variant CPU."
--msgstr "-mcpu=CPU\tCompila código para el CPU de variante ARC."
-+msgstr "-mcpu=CPU\tCompila código para la CPU de variante ARC."
-
- #: config/arc/arc.opt:205
- msgid "size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os."
+ #: c-family/c.opt:630
+ msgid "Warn when the address of packed member of struct or union is taken."
-msgstr ""
-+msgstr "nivel de optimización del tamaño: 0:nada 1:oportunista 2:regalloc 3:alineación libre, -Os."
++msgstr "Avisa cuando se toma la dirección del miembro empaquetado de una estructura o unión."
- #: config/arc/arc.opt:213
--#, fuzzy
--#| msgid "Cost to assume for a multiply insn"
- msgid "Cost to assume for a multiply instruction, with 4 being equal to a normal insn."
--msgstr "Costo de asumir una instrucción multiply."
-+msgstr "Costo de asumir una instrucción multiply, siendo 4 el de una instrucción normal."
+ #: c-family/c.opt:634
+ msgid "Warn about variables which are initialized to themselves."
+@@ -6832,7 +6763,7 @@
- #: config/arc/arc.opt:217
- msgid "Tune for ARC600 cpu."
+ #: c-family/c.opt:638
+ msgid "Warn about uses of std::initializer_list that can result in dangling pointers."
-msgstr ""
-+msgstr "Afinado para cpu ARC600."
++msgstr "Avisa sobre usos de std::initializer_list que pueden resultar en punteros "
- #: config/arc/arc.opt:221
- msgid "Tune for ARC601 cpu."
--msgstr ""
-+msgstr "Afinado para cpu ARC601."
+ #: c-family/c.opt:642
+ msgid "Warn about implicit declarations."
+@@ -6864,7 +6795,7 @@
- #: config/arc/arc.opt:225
- msgid "Tune for ARC700 R4.2 Cpu with standard multiplier block."
+ #: c-family/c.opt:677
+ msgid "Warn for suspicious integer expressions in boolean context."
-msgstr ""
-+msgstr "Afinado para Cpu ARC700 R4.2 con bloque multiplicador estándar."
++msgstr "Advierte de expresiones enteras sospechosas en contexto booleano."
- #: config/arc/arc.opt:229 config/arc/arc.opt:233 config/arc/arc.opt:237
- msgid "Tune for ARC700 R4.2 Cpu with XMAC block."
--msgstr ""
-+msgstr "Afinado para Cpu ARC700 R4.2 con bloque XMAC."
-
- #: config/arc/arc.opt:241
--#, fuzzy
--#| msgid "Enable the use of the short load instructions"
- msgid "Enable the use of indexed loads."
--msgstr "Activa el uso de las instrucciones short load."
-+msgstr "Activa el uso de loads indexadas."
+ #: c-family/c.opt:681
+ msgid "Warn when there is a cast to a pointer from an integer of a different size."
+@@ -6928,7 +6859,7 @@
- #: config/arc/arc.opt:245
- msgid "Enable the use of pre/post modify with register displacement."
+ #: c-family/c.opt:745
+ msgid "Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for."
-msgstr ""
-+msgstr "Activa el uso de pre/post modify con desplazamiento de registro."
++msgstr "Advierte de expansiones de macros no seguras a sentencias múltiples utilizadas como cuerpo de una cláusula como if, while, switch o for."
- #: config/arc/arc.opt:249
--#, fuzzy
--#| msgid "Generate fused multiply/add instructions"
- msgid "Generate 32x16 multiply and mac instructions."
--msgstr "Genera instrucciones multiply/add de corto circuito."
-+msgstr "Genera instrucciones multiply y mac de 32x16."
+ #: c-family/c.opt:749
+ msgid "Warn on direct multiple inheritance."
+@@ -6940,7 +6871,7 @@
- #: config/arc/arc.opt:255
- msgid "Set probability threshold for unaligning branches."
+ #: c-family/c.opt:757
+ msgid "Warn when fields in a struct with the packed attribute are misaligned."
-msgstr ""
-+msgstr "Establece el umbral de probabilidad para ramificaciones desalineadas."
++msgstr "Avisa cuando un struct con el atributo «packed» tiene campos desalineados."
- #: config/arc/arc.opt:259
- msgid "Don't use less than 25 bit addressing range for calls."
--msgstr ""
-+msgstr "No utilizar rango de direccionamiento de menos de 25 bits para llamadas."
+ #: c-family/c.opt:761
+ msgid "Warn about missing sized deallocation functions."
+@@ -6948,7 +6879,7 @@
- #: config/arc/arc.opt:263
- msgid "Explain what alignment considerations lead to the decision to make an insn short or long."
+ #: c-family/c.opt:765
+ msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers."
-msgstr ""
-+msgstr "Explicar qué consideraciones de alineamiento llevan a la decisión de hacer una insn corta o larga."
++msgstr "Advierte de divisiones sospechosas de dos expresiones sizeof que no funcionan correctamente con punteros."
- #: config/arc/arc.opt:267
--#, fuzzy
--#| msgid "Avoid all range limits on call instructions"
- msgid "Do alignment optimizations for call instructions."
--msgstr "Evita todos los límites de rango en las instrucciones de llamadas."
-+msgstr "Efectúa optimizaciones de alineamiento en las instrucciones de llamadas."
+ #: c-family/c.opt:769
+ msgid "Warn about suspicious length parameters to certain string functions if the argument uses sizeof."
+@@ -6960,7 +6891,7 @@
- #: config/arc/arc.opt:271
- msgid "Enable Rcq constraint handling - most short code generation depends on this."
+ #: c-family/c.opt:777
+ msgid "Warn about buffer overflow in string manipulation functions like memcpy and strcpy."
-msgstr ""
-+msgstr "Activa el manejo de restricciones Rcq - la mayor parte de la generación de código corto depende de esto."
++msgstr "Advierte de desbordamiento de búfer en funciones que manipulan cadenas, como memcpy y strcpy."
- #: config/arc/arc.opt:275
- msgid "Enable Rcw constraint handling - ccfsm condexec mostly depends on this."
--msgstr ""
-+msgstr "Activa el manejo de restricciones Rcw - la ejecución condicional ccfsd depende principalmente de esto."
+ #: c-family/c.opt:782
+ msgid "Under the control of Object Size type, warn about buffer overflow in string manipulation functions like memcpy and strcpy."
+@@ -7039,14 +6970,12 @@
+ msgstr "Avisa cuando las funciones friend sin plantillas se declaran dentro de una plantilla."
- #: config/arc/arc.opt:279
+ #: c-family/c.opt:868
-#, fuzzy
--#| msgid "Enable cbranchdi4 pattern"
- msgid "Enable pre-reload use of cbranchsi pattern."
--msgstr "Activa el patrón cbranchdi4."
-+msgstr "Activa el uso pre-recarga del patrón cbranchsi."
-
- #: config/arc/arc.opt:283
- msgid "Enable bbit peephole2."
--msgstr ""
-+msgstr "Activa bbit peephole2."
+-#| msgid "conversion to void will never use a type conversion operator"
+ msgid "Warn when a conversion function will never be called due to the type it converts to."
+-msgstr "la conversión a void nunca usará un operador de conversión de tipo"
++msgstr "Avisa cuando una función de conversión nunca será llamada debido al tipo al que convierte."
- #: config/arc/arc.opt:287
- msgid "Use pc-relative switch case tables - this enables case table shortening."
+ #: c-family/c.opt:872
+ msgid "Warn for unsafe raw memory writes to objects of class types."
-msgstr ""
-+msgstr "Usa tables switch case relativas a contador de programa - esto activa el acortamiento de tablas case."
++msgstr "Avisa en caso de escrituras de memoria en bruto no seguras a objetivos de tipos de clase."
- #: config/arc/arc.opt:291
--#, fuzzy
--#| msgid "Enable cbranchdi4 pattern"
- msgid "Enable compact casesi pattern."
--msgstr "Activa el patrón cbranchdi4."
-+msgstr "Activa el patrón casesi compacto."
+ #: c-family/c.opt:876
+ msgid "Warn about non-virtual destructors."
+@@ -7130,7 +7059,7 @@
- #: config/arc/arc.opt:295
--#, fuzzy
--#| msgid "Enable clip instructions"
- msgid "Enable 'q' instruction alternatives."
--msgstr "Activa las instrucciones clip."
-+msgstr "Activa las instrucciones alternativas 'q'."
-
- #: config/arc/arc.opt:299
- msgid "Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc."
+ #: c-family/c.opt:991
+ msgid "Warn if constructor or destructors with priorities from 0 to 100 are used."
-msgstr ""
-+msgstr "Expande adddi3 y subdi3 en tiempo de generación de rtl en add.f / adc, etc."
++msgstr "Avisa si se usan constructores o destructores con prioridades entre 0 y 100."
- #: config/arc/arc.opt:306
- msgid "Enable variable polynomial CRC extension."
--msgstr ""
-+msgstr "Activa la extensión de CRC polinómico variable."
-
- #: config/arc/arc.opt:310
--#, fuzzy
--#| msgid "Enable Plan 9 language extensions"
- msgid "Enable DSP 3.1 Pack A extensions."
--msgstr "Activa las extensiones de lenguaje de Plan9."
-+msgstr "Activa las extensiones DSP 3.1 Pack A."
-
- #: config/arc/arc.opt:314
--#, fuzzy
--#| msgid "Enable linker relaxation."
- msgid "Enable dual viterbi butterfly extension."
--msgstr "Activa la relajación del enlazador."
-+msgstr "Activa la la extensión dual viterbi butterfly."
-
- #: config/arc/arc.opt:324
--#, fuzzy
--#| msgid "Enable leading zero instructions"
- msgid "Enable Dual and Single Operand Instructions for Telephony."
--msgstr "Activa las instrucciones con ceros al inicio."
-+msgstr "Activa las instrucciones de operando dual y único para telefonía."
+ #: c-family/c.opt:995
+ msgid "Warn if a property for an Objective-C object has no assign semantics specified."
+@@ -7150,7 +7079,7 @@
- #: config/arc/arc.opt:328
- msgid "Enable XY Memory extension (DSP version 3)."
+ #: c-family/c.opt:1015
+ msgid "Warn about redundant calls to std::move."
-msgstr ""
-+msgstr "Activa la extensión XY Memory (DSP versión 3)."
++msgstr "Advierte de llamadas redundantes a std::move."
- #: config/arc/arc.opt:333
--#, fuzzy
--#| msgid "Enable hoisting loads from conditional pointers."
- msgid "Enable Locked Load/Store Conditional extension."
--msgstr "Activa las cargas de elevación de punteros condicionales."
-+msgstr "Activa la extensión condicional load/store bloqueada."
-
- #: config/arc/arc.opt:337
--#, fuzzy
--#| msgid "Enable sign extend instructions"
- msgid "Enable swap byte ordering extension instruction."
--msgstr "Activa las instrucciones de signo extendido."
-+msgstr "Activa la instrucción de extensión del orden de byte de intercambio."
-
- #: config/arc/arc.opt:341
--#, fuzzy
--#| msgid "Enable bit manipulation instructions"
- msgid "Enable 64-bit Time-Stamp Counter extension instruction."
--msgstr "Activa las instrucciones de manipulación de bits."
-+msgstr "Activa la instrucción de extensión del contador de sello de tiempo de 64 bits."
-
- #: config/arc/arc.opt:345
--#, fuzzy
--#| msgid "Pass -z text to linker"
- msgid "Pass -EB option through to linker."
--msgstr "Pasa -z texto al enlazador."
-+msgstr "Pasa la opción -EB al enlazador."
+ #: c-family/c.opt:1019
+ msgid "Warn about uses of register storage specifier."
+@@ -7293,14 +7222,12 @@
+ msgstr "Avisa si se usa una matriz de longitud variable."
- #: config/arc/arc.opt:349
+ #: c-family/c.opt:1199
-#, fuzzy
--#| msgid "Pass -z text to linker"
- msgid "Pass -EL option through to linker."
--msgstr "Pasa -z texto al enlazador."
-+msgstr "Pasa la opción -EL al enlazador."
+-#| msgid "-Wvla-larger-than=<number>\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than <number> bytes."
+ msgid "-Wvla-larger-than=<number>\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than <number> bytes. <number> bytes."
+-msgstr "-Wvla-larger-than=<número>\tAdvierte de usos no acotados de arrays de longitud variable y de usos acotados de arrays de longitud variable cuyo límite pueda ser más grande que <número> bytes."
++msgstr "-Wvla-larger-than=<número>\tAdvierte de usos no acotados de arrays de longitud variable y de usos acotados de arrays de longitud variable cuyo límite pueda ser más grande que <número> bytes. <número> bytes"
- #: config/arc/arc.opt:353
--#, fuzzy
--#| msgid "Pass -z text to linker"
- msgid "Pass -marclinux option through to linker."
--msgstr "Pasa -z texto al enlazador."
-+msgstr "Pasa la opción -marclinux al enlazador."
-
- #: config/arc/arc.opt:357
- msgid "Pass -marclinux_prof option through to linker."
+ #: c-family/c.opt:1206
+ msgid "-Wno-vla-larger-than Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-than=<SIZE_MAX> or larger."
-msgstr ""
-+msgstr "Pasa la opción -marclinux_prof al enlazador."
++msgstr "-Wno-vla-larger-than Desactiva el aviso Wvla-larger-than=. Equivalente a Wvla-larger-than=<MAX_TAMAÑO> o mayor."
- #: config/arc/arc.opt:365
--#, fuzzy
--#| msgid "Enable linker relaxation."
- msgid "Enable lra."
--msgstr "Activa la relajación del enlazador."
-+msgstr "Activa lra."
+ #: c-family/c.opt:1210
+ msgid "Warn when a register variable is declared volatile."
+@@ -7356,11 +7283,11 @@
- #: config/arc/arc.opt:369
- msgid "Don't indicate any priority with TARGET_REGISTER_PRIORITY."
+ #: c-family/c.opt:1267
+ msgid "Support C++17 allocation of over-aligned types."
-msgstr ""
-+msgstr "No indica ninguna prioridad con TARGET_REGISTER_PRIORITY."
++msgstr "Admite alojamiento C++17 de tipos sobrealineados."
- #: config/arc/arc.opt:373
- msgid "Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
+ #: c-family/c.opt:1271
+ msgid "-faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N."
-msgstr ""
-+msgstr "Indica prioridad para r0..r3 / r12..r15 con TARGET_REGISTER_PRIORITY."
++msgstr "-faligned-new=<N> Usa alojamiento de tipo sobrealineado de C++17 para alineamientos mayores que N."
- #: config/arc/arc.opt:377
- msgid "Reduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
--msgstr ""
-+msgstr "Reduce prioridad para r0..r3 / r12..r15 con TARGET_REGISTER_PRIORITY."
+ #: c-family/c.opt:1278
+ msgid "Allow variadic functions without named parameter."
+@@ -7385,7 +7312,7 @@
- #: config/arc/arc.opt:381
- msgid "instrument with mcount calls as in the ucb code."
+ #: c-family/c.opt:1305
+ msgid "Enable the char8_t fundamental type and use it as the type for UTF-8 string and character literals."
-msgstr ""
-+msgstr "instrumenta con llamadas mcount como en el código ucb."
-
- #: config/arc/arc.opt:411
--#, fuzzy
--#| msgid "Enable clip instructions"
- msgid "Enable atomic instructions."
--msgstr "Activa las instrucciones clip."
-+msgstr "Activa instrucciones atómicas."
-
- #: config/arc/arc.opt:415
--#, fuzzy
--#| msgid "Enable unaligned load/store instruction"
- msgid "Enable double load/store instructions for ARC HS."
--msgstr "Activa la instrucción load/store sin alineación."
-+msgstr "Activa las instrucciones dobles load/store para ARC HS."
-
- #: config/arc/arc.opt:419
--#, fuzzy
--#| msgid "Specify the name of the target floating point hardware/format"
- msgid "Specify the name of the target floating point configuration."
--msgstr "Especifica el nombre del hardware/formato de coma flotante destino."
-+msgstr "Especifica el nombre de la configuración de coma flotante destino."
-
- #: java/lang.opt:122
--#, fuzzy
--#| msgid "Warn if deprecated empty statements are found"
- msgid "Warn if deprecated empty statements are found."
- msgstr "Avisa si se encuentran declaraciones vacías obsoletas."
-
- #: java/lang.opt:126
--#, fuzzy
--#| msgid "Warn if .class files are out of date"
- msgid "Warn if .class files are out of date."
- msgstr "Avisa si los ficheros .class están desactualizados."
-
- #: java/lang.opt:130
--#, fuzzy
--#| msgid "Warn if modifiers are specified when not necessary"
- msgid "Warn if modifiers are specified when not necessary."
- msgstr "Avisa si se especifican modificadores cuando no son necesarios."
-
- #: java/lang.opt:150
--#, fuzzy
--#| msgid "--CLASSPATH\tDeprecated; use --classpath instead"
- msgid "--CLASSPATH\tDeprecated; use --classpath instead."
- msgstr "--CLASSPATH\tObsoleto; use en su lugar --classpath."
++msgstr "Habilita el tipo fundamental char8_t y lo usa como el tipo para los literales de cadenas UTF-8 y de caracteres."
- #: java/lang.opt:157
--#, fuzzy
--#| msgid "Permit the use of the assert keyword"
- msgid "Permit the use of the assert keyword."
- msgstr "Permite el uso de la palabra clave assert."
-
- #: java/lang.opt:179
--#, fuzzy
--#| msgid "--bootclasspath=<path>\tReplace system path"
- msgid "--bootclasspath=<path>\tReplace system path."
- msgstr "--bootclasspath=<ruta>\tReemplaza la ruta del sistema."
-
- #: java/lang.opt:183
--#, fuzzy
--#| msgid "Generate checks for references to NULL"
- msgid "Generate checks for references to NULL."
- msgstr "Genera revisiones para referencias a NULL."
-
- #: java/lang.opt:187
--#, fuzzy
--#| msgid "--classpath=<path>\tSet class path"
- msgid "--classpath=<path>\tSet class path."
- msgstr "--classpath=<ruta>\tEstablece la ruta de clases."
-
- #: java/lang.opt:194
--#, fuzzy
--#| msgid "Output a class file"
- msgid "Output a class file."
- msgstr "Genera un fichero clase como salida."
-
- #: java/lang.opt:198
--#, fuzzy
--#| msgid "Alias for -femit-class-file"
- msgid "Alias for -femit-class-file."
- msgstr "Alias para -femit-class-file."
-
- #: java/lang.opt:202
--#, fuzzy
--#| msgid "--encoding=<encoding>\tChoose input encoding (defaults from your locale)"
- msgid "--encoding=<encoding>\tChoose input encoding (defaults from your locale)."
- msgstr "--encoding=<codificación>\tEscoge la codificación de entrada (por defecto viene del local)."
-
- #: java/lang.opt:206
--#, fuzzy
--#| msgid "--extdirs=<path>\tSet the extension directory path"
- msgid "--extdirs=<path>\tSet the extension directory path."
- msgstr "--extdirs=<ruta>\tEstablece la ruta del directorio de extensiones."
-
- #: java/lang.opt:216
--#, fuzzy
--#| msgid "Input file is a file with a list of filenames to compile"
- msgid "Input file is a file with a list of filenames to compile."
- msgstr "El fichero de entrada es un fichero con la lista de nombres de fichero a compilar."
-
- #: java/lang.opt:223
--#, fuzzy
--#| msgid "Always check for non gcj generated classes archives"
- msgid "Always check for non gcj generated classes archives."
- msgstr "Revisa siempre por archivos de clases no generados por gcj."
-
- #: java/lang.opt:227
--#, fuzzy
--#| msgid "Assume the runtime uses a hash table to map an object to its synchronization structure"
- msgid "Assume the runtime uses a hash table to map an object to its synchronization structure."
- msgstr "Asume que el tiempo de ejecución usa una tabla hash para mapear un objeto a su estructura de sincronización."
-
- #: java/lang.opt:231
--#, fuzzy
--#| msgid "Generate instances of Class at runtime"
- msgid "Generate instances of Class at runtime."
- msgstr "Genera instancias de Class en tiempo de ejecución."
-
- #: java/lang.opt:235
--#, fuzzy
--#| msgid "Use offset tables for virtual method calls"
- msgid "Use offset tables for virtual method calls."
- msgstr "Utiliza tablas de desplazamiento para llamadas a métodos virtuales."
-
- #: java/lang.opt:242
--#, fuzzy
--#| msgid "Assume native functions are implemented using JNI"
- msgid "Assume native functions are implemented using JNI."
- msgstr "Asume que las funciones nativas se implementan usando JNI."
-
- #: java/lang.opt:246
--#, fuzzy
--#| msgid "Enable optimization of static class initialization code"
- msgid "Enable optimization of static class initialization code."
- msgstr "Activa la optimización del código de inicialización de las clases static."
-
- #: java/lang.opt:253
--#, fuzzy
--#| msgid "Reduce the amount of reflection meta-data generated"
- msgid "Reduce the amount of reflection meta-data generated."
- msgstr "Reduce la cantidad de metadatos de reflexión generados."
-
- #: java/lang.opt:257
--#, fuzzy
--#| msgid "Enable assignability checks for stores into object arrays"
- msgid "Enable assignability checks for stores into object arrays."
- msgstr "Activa revisiones de asignabilidad para almacenamientos en matrices de objetos."
-
- #: java/lang.opt:261
--#, fuzzy
--#| msgid "Generate code for the Boehm GC"
- msgid "Generate code for the Boehm GC."
- msgstr "Genera código para el GC de Boehm."
-
- #: java/lang.opt:265
--#, fuzzy
--#| msgid "Call a library routine to do integer divisions"
- msgid "Call a library routine to do integer divisions."
- msgstr "Llama a una rutina de biblioteca para hacer divisiones enteras."
-
- #: java/lang.opt:269
--#, fuzzy
--#| msgid "Generate code for built-in atomic operations"
- msgid "Generate code for built-in atomic operations."
- msgstr "Genera código para operaciones atómicas internas."
+ #: c-family/c.opt:1393
+ msgid "Deprecated in GCC 8. This switch has no effect."
+@@ -7412,10 +7339,8 @@
+ msgstr "-fconstexpr-loop-limit=<número>\tEspecifica el número de iteraciones de bucle constexpr máximo."
- #: java/lang.opt:273
+ #: c-family/c.opt:1421
-#, fuzzy
--#| msgid "Generated should be loaded by bootstrap loader"
- msgid "Generated should be loaded by bootstrap loader."
- msgstr "El generado se debe cargar con el cargador de arranque."
+-#| msgid "-fconstexpr-loop-limit=<number>\tSpecify maximum constexpr loop iteration count."
+ msgid "-fconstexpr-ops-limit=<number>\tSpecify maximum number of constexpr operations during a single constexpr evaluation."
+-msgstr "-fconstexpr-loop-limit=<número>\tEspecifica el número de iteraciones de bucle constexpr máximo."
++msgstr "-fconstexpr-ops-limit=<número>\tEspecifica el número máximo de operaciones constexpr durante una evaluación de constexpr."
- #: java/lang.opt:277
--#, fuzzy
--#| msgid "Set the source language version"
- msgid "Set the source language version."
- msgstr "Establece la versión del lenguaje fuente."
-
- #: java/lang.opt:281
--#, fuzzy
--#| msgid "Set the target VM version"
- msgid "Set the target VM version."
- msgstr "Establece la versión de la MV destino."
-
- #: lto/lang.opt:28
--#, fuzzy, c-format
--#| msgid "unknown architecture %qs"
-+#, c-format
- msgid "unknown linker output %qs"
--msgstr "arquitectura %qs desconocida"
-+msgstr "salida %qs del enlazador desconocida"
+ #: c-family/c.opt:1425
+ msgid "Emit debug annotations during preprocessing."
+@@ -7431,7 +7356,7 @@
- #: lto/lang.opt:47
- msgid "Set linker output type (used internally during LTO optimization)"
+ #: c-family/c.opt:1441
+ msgid "Print hierarchical comparisons when template types are mismatched."
-msgstr ""
-+msgstr "Establece el tipo de salida del enlazador (usado internamente durante la optimización LTO)"
++msgstr "Imprime comparaciones jerárquicas cuando los tipos de plantilla no coinciden."
- #: lto/lang.opt:52
- msgid "Run the link-time optimizer in local transformation (LTRANS) mode."
-@@ -13922,165 +13264,113 @@
+ #: c-family/c.opt:1445
+ msgid "Preprocess directives only."
+@@ -7443,7 +7368,7 @@
- #: lto/lang.opt:64
- msgid "Whole program analysis (WPA) mode with number of parallel jobs specified."
+ #: c-family/c.opt:1453
+ msgid "-fmacro-prefix-map=<old>=<new> Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE()."
-msgstr ""
-+msgstr "Modo de análisis del programa completo (WPA) con número de trabajos paralelos especificado."
++msgstr "-fmacro-prefix-map=<viejo>=<nuevo> Asocia un nombre de directorio a otro en __FILE__, __BASE_FILE__, y __builtin_FILE()."
- #: lto/lang.opt:68
--#, fuzzy
--#| msgid "The resolution file"
- msgid "The resolution file."
- msgstr "El fichero de resolución."
-
- #: common.opt:235
--#, fuzzy
--#| msgid "Enable user-defined instructions"
- msgid "Enable coverage-guided fuzzing code instrumentation."
--msgstr "Activa las instrucciones definidas por el usuario."
-+msgstr "Activa la instrumentación de código borrosa guiada por cobertura."
+ #: c-family/c.opt:1457
+ msgid "Write all declarations as Ada code transitively."
+@@ -7851,16 +7776,12 @@
- #: common.opt:302
+ #: c-family/c.opt:2017 c-family/c.opt:2021 c-family/c.opt:2139
+ #: c-family/c.opt:2143
-#, fuzzy
--#| msgid "Display this information"
- msgid "Display this information."
- msgstr "Muestra esta información."
+-#| msgid "Conform to the ISO 2017 C standard (expected to be published in 2018)."
+ msgid "Conform to the ISO 2017 C standard (published in 2018)."
+-msgstr "Conforma al estándar ISO 2017 C (publicación prevista en 2018)."
++msgstr "Conforma al estándar ISO 2017 C (publicado en 2018)."
- #: common.opt:306
+ #: c-family/c.opt:2025
-#, fuzzy
--#| msgid "--help=<class>\tDisplay descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params"
- msgid "--help=<class>\tDisplay descriptions of a specific class of options. <class> is one or more of optimizers, target, warnings, undocumented, params."
- msgstr "--help=<clase>\tMuestra las descripciones para una clase específica de opciones. <clase> es uno o más de optimizers, target, warnings, undocumented, params."
+-#| msgid "Conform to the ISO 2011 C standard (experimental and incomplete support)"
+ msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)."
+-msgstr "Conforma al estándar ISO 2011 C (soporte experimental e incompleto)"
++msgstr "Conforma al borrador del estándar ISO 202X C (soporte experimental e incompleto)"
- #: common.opt:424
--#, fuzzy
--#| msgid "Alias for --help=target"
- msgid "Alias for --help=target."
--msgstr "Alias para -mhelp=target."
-+msgstr "Alias para --help=target."
+ #: c-family/c.opt:2029 c-family/c.opt:2033 c-family/c.opt:2119
+ msgid "Conform to the ISO 1990 C standard."
+@@ -7915,16 +7836,12 @@
+ msgstr "Obsoleto en favor de -std=gnu11."
- #: common.opt:449
+ #: c-family/c.opt:2091 c-family/c.opt:2095
-#, fuzzy
--#| msgid "--param <param>=<value>\tSet parameter <param> to value. See below for a complete list of parameters"
- msgid "--param <param>=<value>\tSet parameter <param> to value. See below for a complete list of parameters."
- msgstr "--param <param>=<valor>\tEstablece el parámetro <param> al valor. Vea a continuación una lista completa de parámetros."
+-#| msgid "Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions."
+ msgid "Conform to the ISO 2017 C standard (published in 2018) with GNU extensions."
+-msgstr "Conforma al estándar ISO 2017 C (publicación prevista en 2018) con extensiones GNU."
++msgstr "Conforma al estándar ISO 2017 C (publicado en 2018) con extensiones GNU."
- #: common.opt:477
+ #: c-family/c.opt:2099
-#, fuzzy
--#| msgid "-O<number>\tSet optimization level to <number>"
- msgid "-O<number>\tSet optimization level to <number>."
- msgstr "-O<número>\tEstablece el nivel de optimización a <número>."
+-#| msgid "Conform to the ISO 2011 C standard with GNU extensions (experimental and incomplete support)"
+ msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)."
+-msgstr "Conforma al estándar ISO 2011 C con extensiones GNU (soporte experimental e incompleto)"
++msgstr "Conforma al borrador del estándar ISO 202X C con extensiones GNU (soporte experimental e incompleto)."
- #: common.opt:481
--#, fuzzy
--#| msgid "Optimize for space rather than speed"
- msgid "Optimize for space rather than speed."
- msgstr "Optimiza para espacio en lugar de velocidad."
+ #: c-family/c.opt:2103 c-family/c.opt:2107
+ msgid "Conform to the ISO 1990 C standard with GNU extensions."
+@@ -7992,19 +7909,15 @@
- #: common.opt:485
--#, fuzzy
--#| msgid "Optimize for speed disregarding exact standards compliance"
- msgid "Optimize for speed disregarding exact standards compliance."
- msgstr "Optimiza para velocidad descartando el cumplimento exacto de estándares."
-
- #: common.opt:489
--#, fuzzy
--#| msgid "Optimize for space rather than speed"
- msgid "Optimize for debugging experience rather than speed or size."
--msgstr "Optimiza para espacio en lugar de velocidad."
-+msgstr "Optimiza para experiencia de depuración en lugar de velocidad o tamaño."
-
- #: common.opt:529
--#, fuzzy
--#| msgid "This switch is deprecated; use -Wextra instead"
- msgid "This switch is deprecated; use -Wextra instead."
- msgstr "Esta opción es obsoleta; utilice en su lugar -Wextra."
-
- #: common.opt:542
--#, fuzzy
--#| msgid "Warn about returning structures, unions or arrays"
- msgid "Warn about returning structures, unions or arrays."
- msgstr "Avisa sobre la devolución de estructuras, unions o matrices."
-
- #: common.opt:546
- msgid "Warn if a loop with constant number of iterations triggers undefined behavior."
+ #: d/lang.opt:51
+ msgid "-Hd <dir>\tWrite D interface files to directory <dir>."
-msgstr ""
-+msgstr "Avisa si un bucle con un número constante de iteraciones provoca un comportamiento indefinido."
-
- #: common.opt:550 common.opt:554
--#, fuzzy
--#| msgid "Warn if an array is accessed out of bounds"
- msgid "Warn if an array is accessed out of bounds."
- msgstr "Avisa si se accede a una matriz fuera de los límites."
-
- #: common.opt:558
--#, fuzzy
--#| msgid "Warn about inappropriate attribute usage"
- msgid "Warn about inappropriate attribute usage."
- msgstr "Avisa sobre la aritmética de punteros de funciones."
-
- #: common.opt:562
--#, fuzzy
--#| msgid "Warn about pointer casts which increase alignment"
- msgid "Warn about pointer casts which increase alignment."
- msgstr "Avisa sobre conversión de punteros que incremente la alineación."
-
- #: common.opt:566
--#, fuzzy
--#| msgid "Warn when a #warning directive is encountered"
- msgid "Warn when a #warning directive is encountered."
- msgstr "Avisa cuando se encuentra una directiva #warning."
-
- #: common.opt:570
--#, fuzzy
--#| msgid "Warn about uses of __attribute__((deprecated)) declarations"
- msgid "Warn about uses of __attribute__((deprecated)) declarations."
- msgstr "Avisa sobre usos de declaraciones __attribute__((obsoleto))."
-
- #: common.opt:574
--#, fuzzy
--#| msgid "Warn when an optimization pass is disabled"
- msgid "Warn when an optimization pass is disabled."
- msgstr "Avisa cuando se desactiva un paso de optimización."
-
- #: common.opt:578
--#, fuzzy
--#| msgid "Treat all warnings as errors"
- msgid "Treat all warnings as errors."
- msgstr "Trata todos los avisos como errores."
-
- #: common.opt:582
--#, fuzzy
--#| msgid "Treat specified warning as error"
- msgid "Treat specified warning as error."
- msgstr "Trata el aviso especificado como error."
-
- #: common.opt:586
--#, fuzzy
--#| msgid "Print extra (possibly unwanted) warnings"
- msgid "Print extra (possibly unwanted) warnings."
- msgstr "Muestra avisos extra (posiblemente no deseados)."
-
- #: common.opt:590
--#, fuzzy
--#| msgid "Exit on the first error occurred"
- msgid "Exit on the first error occurred."
- msgstr "Termina cuando sucede el primer error."
-
- #: common.opt:594
--#, fuzzy
--#| msgid "-Wframe-larger-than=<number>\tWarn if a function's stack frame requires more than <number> bytes"
- msgid "-Wframe-larger-than=<number>\tWarn if a function's stack frame requires more than <number> bytes."
- msgstr "-Wframe-larger-than=<número>\tAvisa si el marco de la pila de una función requiere más de <número> bytes."
-
- #: common.opt:598
--#, fuzzy
--#| msgid "Warn when attempting to free a non-heap object"
- msgid "Warn when attempting to free a non-heap object."
- msgstr "Avisa cuando se intenta liberar un objeto que no es de pila."
-
- #: common.opt:602
--#, fuzzy
--#| msgid "Warn when an inlined function cannot be inlined"
- msgid "Warn when a function cannot be expanded to HSAIL."
--msgstr "Avisa cuando una función incluida en línea no se puede incluir en línea."
-+msgstr "Avisa cuando una función no se puede expandir a HSAIL."
-
- #: common.opt:606
--#, fuzzy
--#| msgid "Warn when an inlined function cannot be inlined"
- msgid "Warn when an inlined function cannot be inlined."
- msgstr "Avisa cuando una función incluida en línea no se puede incluir en línea."
-
-@@ -14089,18 +13379,16 @@
- msgstr "Avisa cuando un parámetro de modelo de memoria atomic se reconoce que está fuera del rango válido."
-
- #: common.opt:617
--#, fuzzy
--#| msgid "-Wlarger-than=<number>\tWarn if an object is larger than <number> bytes"
- msgid "-Wlarger-than=<number>\tWarn if an object is larger than <number> bytes."
- msgstr "-Wlarger-than=<número>\tAvisa si un objeto es más grande que <número> bytes."
-
- #: common.opt:621
- msgid "Warn if comparing pointer parameter with nonnull attribute with NULL."
--msgstr ""
-+msgstr "Avisa si se compara parámetro puntero con atributo no nulo con NULL."
-
- #: common.opt:625
- msgid "Warn if dereferencing a NULL pointer may lead to erroneous or undefined behavior."
--msgstr ""
-+msgstr "Avisa si la desreferencia de un puntero NULL puede llevar a un comportamiento erróneo o indefinido."
-
- #: common.opt:629
- msgid "Warn if the loop cannot be optimized due to nontrivial assumptions."
-@@ -14108,249 +13396,175 @@
-
- #: common.opt:636
- msgid "Warn about some C++ One Definition Rule violations during link time optimization."
--msgstr ""
-+msgstr "Advierto de algunas violaciones de la regla de una definición de C++ durante la optimización de tiempo de enlazado."
-
- #: common.opt:640
--#, fuzzy
--#| msgid "Warn about overflow in arithmetic expressions"
- msgid "Warn about overflow in arithmetic expressions."
- msgstr "Avisa sobre desbordamiento por debajo en expresiones numéricas."
-
- #: common.opt:644
- msgid "During link time optimization warn about mismatched types of global declarations."
--msgstr ""
-+msgstr "Durante la optimización en tiempo de enlazado advierte de tipos de declaraciones globales que no casan."
-
- #: common.opt:648
--#, fuzzy
--#| msgid "Warn when the packed attribute has no effect on struct layout"
- msgid "Warn when the packed attribute has no effect on struct layout."
- msgstr "Avisa cuando el atributo packed no tiene efecto en la disposición de un struct."
++msgstr "-Hd <dir>\tEscribe los ficheros de interfaz de D en el directorio <dir>."
- #: common.opt:652
+ #: d/lang.opt:55
-#, fuzzy
--#| msgid "Warn when padding is required to align structure members"
- msgid "Warn when padding is required to align structure members."
- msgstr "Avisa cuando se requiere relleno para alinear a los miembros de una estructura."
+-#| msgid "-o <file>\tPlace output into <file>."
+ msgid "-Hf <file>\tWrite D interface to <file>."
+-msgstr "-o <fichero>\tColoca la salida en el <fichero>."
++msgstr "-Hf <fichero>\tEscribe el interfaz de D en el <fichero>."
- #: common.opt:656
+ #: d/lang.opt:123
-#, fuzzy
--#| msgid "Issue warnings needed for strict compliance to the standard"
- msgid "Issue warnings needed for strict compliance to the standard."
- msgstr "Activa los avisos necesarios para cumplir estrictamente con el estándar."
+-#| msgid "Warn about casts which discard qualifiers."
+ msgid "Warn about casts that will produce a null result."
+-msgstr "Avisa sobre conversiones que descartan calificadores."
++msgstr "Avisa sobre conversiones que darán resultado nulo."
- #: common.opt:660
--#, fuzzy
--#| msgid "returning reference to temporary"
- msgid "Warn about returning a pointer/reference to a local or temporary variable."
--msgstr "se devuelve la referencia al temporal."
-+msgstr "Advierte del retorno de puntero/referencia a variable local o temporal."
-
- #: common.opt:664
--#, fuzzy
--#| msgid "Warn when one local variable shadows another"
- msgid "Warn when one local variable shadows another."
--msgstr "Avisa cuando una variable local oscurece otra."
-+msgstr "Avisa cuando una variable local oculta otra."
-
- #: common.opt:668
--#, fuzzy
--#| msgid "Warn when not issuing stack smashing protection for some reason"
- msgid "Warn when not issuing stack smashing protection for some reason."
- msgstr "Avisa cuando no se está usando la protección contra destrucción de la pila por alguna razón."
-
- #: common.opt:672
--#, fuzzy
--#| msgid "Warn if stack usage might be larger than specified amount"
- msgid "Warn if stack usage might be larger than specified amount."
- msgstr "Avisa si el uso de pila puede ser mayor que el monto especificado."
-
- #: common.opt:676 common.opt:680
--#, fuzzy
--#| msgid "Warn about code which might break strict aliasing rules"
- msgid "Warn about code which might break strict aliasing rules."
- msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
-
- #: common.opt:684 common.opt:688
--#, fuzzy
--#| msgid "Warn about optimizations that assume that signed overflow is undefined"
- msgid "Warn about optimizations that assume that signed overflow is undefined."
- msgstr "Desactiva las optimizaciones que asumen que un desbordamiento con signo está indefinido."
-
- #: common.opt:692
--#, fuzzy
--#| msgid "Warn about functions which might be candidates for __attribute__((const))"
- msgid "Warn about functions which might be candidates for __attribute__((const))."
- msgstr "Avisa sobre funciones que pueden ser candidatas para __attribute__((const))."
+ #: d/lang.opt:139
+ msgid "Warn from speculative compiles such as __traits(compiles)."
+@@ -8011,24 +7924,20 @@
+ msgstr ""
- #: common.opt:696
+ #: d/lang.opt:151
-#, fuzzy
--#| msgid "Warn about functions which might be candidates for __attribute__((pure))"
- msgid "Warn about functions which might be candidates for __attribute__((pure))."
- msgstr "Avisa sobre funciones que pueden ser candidatas para __attribute__((pure))."
+-#| msgid "Generate H8S code."
+ msgid "Generate JSON file."
+-msgstr "Genera código H8S."
++msgstr "Genera fichero JSON."
- #: common.opt:700
+ #: d/lang.opt:155
-#, fuzzy
--#| msgid "Warn about functions which might be candidates for __attribute__((noreturn))"
- msgid "Warn about functions which might be candidates for __attribute__((noreturn))."
- msgstr "Avisa sobre funciones que pueden ser candidatas para __attribute((noreturn))."
+-#| msgid "-MF <file>\tWrite dependency output to the given file."
+ msgid "-Xf <file>\tWrite JSON output to the given <file>."
+-msgstr "-MF <fichero>\tEscribe la salida de dependencias al fichero dado."
++msgstr "-Xf <fichero>\tEscribe salida JSON al <fichero> dado."
- #: common.opt:704
- msgid "Warn about C++ polymorphic types where adding final keyword would improve code quality."
+ #: d/lang.opt:159
+ msgid "Debug library to use instead of phobos."
-msgstr ""
-+msgstr "Advierte de tipos polimórficos en C++ cuando añadir la palabra clave final mejoraría la calidad del código."
++msgstr "Biblioteca de depuración que se utilizará en lugar de phobos."
- #: common.opt:708
- msgid "Warn about C++ virtual methods where adding final keyword would improve code quality."
+ #: d/lang.opt:163
+ msgid "Default library to use instead of phobos."
-msgstr ""
-+msgstr "Advierte de métodos virtuales en C++ cuando añadir la palabra clave final mejoraría la calidad del código."
-
- #: common.opt:712
--#, fuzzy
--#| msgid "Do not suppress warnings from system headers"
- msgid "Do not suppress warnings from system headers."
- msgstr "No suprime los avisos de los encabezados del sistema."
-
- #: common.opt:716
--#, fuzzy
--#| msgid "Warn whenever a trampoline is generated"
- msgid "Warn whenever a trampoline is generated."
--msgstr "Avisa cuando se genera un trampolín."
-+msgstr "Avisa siempre que se genera un trampolín."
-
- #: common.opt:720
--#, fuzzy
--#| msgid "Warn if a comparison is always true or always false due to the limited range of the data type"
- msgid "Warn if a comparison is always true or always false due to the limited range of the data type."
- msgstr "Avisa si la comparación es siempre verdadera o siempre falsa debido al rango limitado del tipo de datos."
-
- #: common.opt:724
--#, fuzzy
--#| msgid "Warn about uninitialized automatic variables"
- msgid "Warn about uninitialized automatic variables."
- msgstr "Avisa sobre variables automáticas sin inicializar."
-
- #: common.opt:728
--#, fuzzy
--#| msgid "Warn about maybe uninitialized automatic variables"
- msgid "Warn about maybe uninitialized automatic variables."
- msgstr "Avisa sobre variables automáticas probablemente sin inicializar."
-
- #: common.opt:736
--#, fuzzy
--#| msgid "Enable all -Wunused- warnings"
- msgid "Enable all -Wunused- warnings."
- msgstr "Activa todos los avisos -Wunused-."
++msgstr "Biblioteca predefinida que se utilizará en lugar de phobos."
- #: common.opt:740
--#, fuzzy
--#| msgid "Warn when a function parameter is only set, otherwise unused"
- msgid "Warn when a function parameter is only set, otherwise unused."
- msgstr "Avisa cuando sólo se define un parámetro de función, y no se usa posteriormente."
-
- #: common.opt:744
--#, fuzzy
--#| msgid "Warn when a variable is only set, otherwise unused"
- msgid "Warn when a variable is only set, otherwise unused."
- msgstr "Avisa cuando sólo se define una variable, y no se usa posteriormente."
-
- #: common.opt:748
--#, fuzzy
--#| msgid "Warn when a function is unused"
- msgid "Warn when a function is unused."
- msgstr "Avisa cuando no se usa una función."
-
- #: common.opt:752
--#, fuzzy
--#| msgid "Warn when a label is unused"
- msgid "Warn when a label is unused."
- msgstr "Avisa cuando no se usa una etiqueta."
-
- #: common.opt:756
--#, fuzzy
--#| msgid "Warn when a function parameter is unused"
- msgid "Warn when a function parameter is unused."
- msgstr "Avisa cuando no se usa un parámetro de una función."
-
- #: common.opt:760
--#, fuzzy
--#| msgid "Warn when an expression value is unused"
- msgid "Warn when an expression value is unused."
- msgstr "Avisa cuando no se usa un valor de una expresión."
-
- #: common.opt:764
--#, fuzzy
--#| msgid "Warn when a variable is unused"
- msgid "Warn when a variable is unused."
- msgstr "Avisa cuando no se usa una variable."
-
- #: common.opt:768
--#, fuzzy
--#| msgid "Warn in case profiles in -fprofile-use do not match"
- msgid "Warn in case profiles in -fprofile-use do not match."
- msgstr "Avisa en perfiles case en -fprofile-use que no coincidan."
-
- #: common.opt:772
--#, fuzzy
--#| msgid "Warn when a vector operation is compiled outside the SIMD"
- msgid "Warn when a vector operation is compiled outside the SIMD."
- msgstr "Avisar cuando una operación vectorial se compila fuera del SIMD."
-
- #: common.opt:788
--#, fuzzy
--#| msgid "-aux-info <file>\tEmit declaration information into <file>"
- msgid "-aux-info <file>\tEmit declaration information into <file>."
- msgstr "-aux-info <fichero>\tEmite la información de declaraciones en el <fichero>."
-
- #: common.opt:807
--#, fuzzy
--#| msgid "-d<letters>\tEnable dumps from specific passes of the compiler"
- msgid "-d<letters>\tEnable dumps from specific passes of the compiler."
- msgstr "-d<letras>\tActiva los volcados de pasos específicos del compilador."
+ #: d/lang.opt:167
+ msgid "Do link the standard D startup files in the compilation."
+@@ -8035,56 +7944,44 @@
+ msgstr ""
- #: common.opt:811
+ #: d/lang.opt:174
-#, fuzzy
--#| msgid "-dumpbase <file>\tSet the file basename to be used for dumps"
- msgid "-dumpbase <file>\tSet the file basename to be used for dumps."
- msgstr "-dumpbase <fichero>\tEstablece el nombre base de fichero a usar para los volcados."
+-#| msgid "Generate code for built-in atomic operations."
+ msgid "Generate code for all template instantiations."
+-msgstr "Genera código para operaciones atómicas internas."
++msgstr "Genera código para todas las instanciaciones de plantillas."
- #: common.opt:815
+ #: d/lang.opt:178
-#, fuzzy
--#| msgid "-dumpdir <dir>\tSet the directory name to be used for dumps"
- msgid "-dumpdir <dir>\tSet the directory name to be used for dumps."
- msgstr "-dumpdir <dir>\tEstablece el nombre del directorio a usar para los volcados."
-
- #: common.opt:884
- msgid "The version of the C++ ABI in use."
--msgstr ""
-+msgstr "La versión de la ABI de C++ que se está usando."
+-#| msgid "Generate code for GNU assembler (gas)."
+ msgid "Generate code for assert contracts."
+-msgstr "Genera código para el ensamblador de GNU (gas)."
++msgstr "Genera código para contratos de assert."
- #: common.opt:888
- msgid "Aggressively optimize loops using language constraints."
+ #: d/lang.opt:186
+ msgid "-fbounds-check=[on|safeonly|off]\tTurn array bounds checks on, in @safe code only, or off."
-msgstr ""
-+msgstr "Optimiza los bucles de forma agresiva empleando restricciones del lenguaje."
++msgstr "-fbounds-check=[on|safeonly|off]\tActiva o desactiva las comprobaciones de límites de matrices, solo en código @safe."
- #: common.opt:892
+ #: d/lang.opt:210
-#, fuzzy
--#| msgid "Align the start of functions"
- msgid "Align the start of functions."
- msgstr "Alinea el inicio de las funciones."
+-#| msgid "incompatible index mode"
+ msgid "Compile in debug code."
+-msgstr "modo de índices incompatibles"
++msgstr "Compila en código de depuración."
- #: common.opt:899
--#, fuzzy
--#| msgid "Align labels which are only reached by jumping"
- msgid "Align labels which are only reached by jumping."
- msgstr "Alinea las etiquetas que solamente se alcanzan saltando."
-
- #: common.opt:906
--#, fuzzy
--#| msgid "Align all labels"
- msgid "Align all labels."
- msgstr "Alinea todas las etiquetas."
-
- #: common.opt:913
--#, fuzzy
--#| msgid "Align the start of loops"
- msgid "Align the start of loops."
- msgstr "Alinea el inicio de los bucles."
-
- #: common.opt:936
--#, fuzzy
--#| msgid "Select the runtime"
- msgid "Select what to sanitize."
--msgstr "Selecciona el tiempo de ejecución."
-+msgstr "Selecciona qué sanear."
-
- #: common.opt:940
- msgid "-fasan-shadow-offset=<number>\tUse custom shadow memory offset."
-@@ -14358,115 +13572,83 @@
-
- #: common.opt:944
- msgid "-fsanitize-sections=<sec1,sec2,...>\tSanitize global variables"
--msgstr ""
-+msgstr "-fsanitize-sections=<sec1,sec2,...>\tSanea las variables globales"
-
- #: common.opt:949
- msgid "After diagnosing undefined behavior attempt to continue execution."
+ #: d/lang.opt:214
+ msgid "-fdebug=<level|ident>\tCompile in debug code, code <= <level>, or code identified by <ident>."
-msgstr ""
-+msgstr "Tras el diagnóstico de comportamiento indefinido intenta continuar la ejecución."
++msgstr "-fdebug=<level|ident>\tCompila en código de depuración, código <= <nivel>, o código identificado por <ident>."
- #: common.opt:953
+ #: d/lang.opt:218
-#, fuzzy
--#| msgid "This switch is deprecated; use -Wextra instead"
- msgid "This switch is deprecated; use -fsanitize-recover= instead."
--msgstr "Esta opción es obsoleta; utilice en su lugar -Wextra."
-+msgstr "Esta opción es obsoleta; utilice en su lugar -fsanitize-recover=."
+-#| msgid "Generate norm instruction."
+ msgid "Generate documentation."
+-msgstr "Genera instrucciones norm."
++msgstr "Genera documentación."
- #: common.opt:957
- msgid "Use trap instead of a library function for undefined behavior sanitization."
+ #: d/lang.opt:222
+ msgid "-fdoc-dir=<dir>\tWrite documentation file to directory <dir>."
-msgstr ""
-+msgstr "Usa trap en lugar de una función de biblioteca para sanear el comportamiento indefinido."
-
- #: common.opt:961
--#, fuzzy
--#| msgid "Generate unwind tables that are exact at each instruction boundary"
- msgid "Generate unwind tables that are exact at each instruction boundary."
- msgstr "Genera tablas de desenredo que sean exactas en cada límite de instrucción."
++msgstr "-fdoc-dir=<dir>\tEscribe el fichero de documentación en el directorio <dir>."
- #: common.opt:965
+ #: d/lang.opt:226
-#, fuzzy
--#| msgid "Generate auto-inc/dec instructions"
- msgid "Generate auto-inc/dec instructions."
- msgstr "Genera instrucciones auto-inc/dec."
+-#| msgid "-o <file>\tPlace output into <file>."
+ msgid "-fdoc-file=<file>\tWrite documentation to <file>."
+-msgstr "-o <fichero>\tColoca la salida en el <fichero>."
++msgstr "-fdoc-file=<fichero>\tEscribe la documentación en <fichero>."
- #: common.opt:969
- msgid "Use sample profile information for call graph node weights. The default"
+ #: d/lang.opt:230
+ msgid "-fdoc-inc=<file>\tInclude a Ddoc macro <file>."
-msgstr ""
-+msgstr "Usa información de perfil de muestra para los pesos de los nodos de los grafos de llamadas. Lo predeterminado"
++msgstr "-fdoc-inc=<fichero>\tIncluye un <fichero> de macros Ddoc."
- #: common.opt:974
+ #: d/lang.opt:234
-#, fuzzy
--#| msgid "Use profiling information for branch probabilities"
- msgid "Use sample profile information for call graph node weights. The profile"
--msgstr "Usa la información de análisis de perfil para las probabilidades de ramificación"
-+msgstr "Usa la información de perfil de muestra para los pesos de los nodos de los grafos de llamadas. El perfil"
+-#| msgid "Do not assume that standard C libraries and \"main\" exist."
+ msgid "Assume that standard D runtime libraries and \"D main\" exist."
+-msgstr "No asume que existen las bibliotecas C estándar y \"main\"."
++msgstr "Asume que existen bibliotecas D estándar de tiempo de ejecución y \"D main\"."
- #: common.opt:983
--#, fuzzy
--#| msgid "Generate code to check bounds before indexing arrays"
- msgid "Generate code to check bounds before indexing arrays."
--msgstr "Genera código para revisar los límites antes de indizar matrices."
-+msgstr "Genera código para revisar los límites antes de indexar matrices."
-
- #: common.opt:987
--#, fuzzy
--#| msgid "Replace add, compare, branch with branch on count register"
- msgid "Replace add, compare, branch with branch on count register."
- msgstr "Reemplaza add, compare, branch con branch en la cuenta de registros."
-
- #: common.opt:991
--#, fuzzy
--#| msgid "Use profiling information for branch probabilities"
- msgid "Use profiling information for branch probabilities."
- msgstr "Usa la información de análisis de perfil para las probabilidades de ramificación."
-
- #: common.opt:995
--#, fuzzy
--#| msgid "Perform branch target load optimization before prologue / epilogue threading"
- msgid "Perform branch target load optimization before prologue / epilogue threading."
- msgstr "Realiza optimización de carga de ramificación objetivo antes del hilo prólogo / epílogo."
-
- #: common.opt:999
--#, fuzzy
--#| msgid "Perform branch target load optimization after prologue / epilogue threading"
- msgid "Perform branch target load optimization after prologue / epilogue threading."
- msgstr "Realiza optimización de carga de ramificación objetivo después del hilo prólogo / epílogo."
-
- #: common.opt:1003
--#, fuzzy
--#| msgid "Restrict target load migration not to re-use registers in any basic block"
- msgid "Restrict target load migration not to re-use registers in any basic block."
- msgstr "Restringe que la migración de carga de objetivos no reuse registros en ningún bloque básico."
-
- #: common.opt:1007
--#, fuzzy
--#| msgid "-fcall-saved-<register>\tMark <register> as being preserved across functions"
- msgid "-fcall-saved-<register>\tMark <register> as being preserved across functions."
- msgstr "-fcall-saved-<registro>\tMarca el <registro> como preservado entre funciones."
-
- #: common.opt:1011
--#, fuzzy
--#| msgid "-fcall-used-<register>\tMark <register> as being corrupted by function calls"
- msgid "-fcall-used-<register>\tMark <register> as being corrupted by function calls."
- msgstr "-fcall-used-<registro>\tMarca el <registro> como corrupto por llamadas de función."
-
- #: common.opt:1018
--#, fuzzy
--#| msgid "Save registers around function calls"
- msgid "Save registers around function calls."
- msgstr "Guarda registros alrededor de llamadas de función."
-
- #: common.opt:1022
--#, fuzzy
--#| msgid "This switch is deprecated; use -Wextra instead"
- msgid "This switch is deprecated; do not use."
--msgstr "Esta opción es obsoleta; utilice en su lugar -Wextra."
-+msgstr "Esta opción es obsoleta; no lo utilice."
-
- #: common.opt:1026
--#, fuzzy
--#| msgid "Check the return value of new"
- msgid "Check the return value of new in C++."
--msgstr "Revisa el valor de devolución de new."
-+msgstr "Revisa el valor de devolución de new en C++."
-
- #: common.opt:1030
--#, fuzzy
--#| msgid "internal consistency failure"
- msgid "Perform internal consistency checkings."
--msgstr "falla interna de consistencia."
-+msgstr "Realiza comprobaciones de consistencia internas."
-
- #: common.opt:1034
- msgid "Looks for opportunities to reduce stack adjustments and stack references."
-@@ -14473,68 +13655,46 @@
- msgstr "Busca oportunidades para reducir los ajustes de pila y las referencias de pila."
-
- #: common.opt:1038
--#, fuzzy
--#| msgid "Do not put uninitialized globals in the common section"
- msgid "Do not put uninitialized globals in the common section."
- msgstr "No pone globales sin inicializar en la sección común."
-
- #: common.opt:1046
--#, fuzzy
--#| msgid "-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and compare the final-insns dump"
- msgid "-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and compare the final-insns dump."
- msgstr "-fcompare-debug[=<opts>]\tCompila con y sin p.e. -gtoggle, y compara el volcado de insns finales."
-
- #: common.opt:1050
--#, fuzzy
--#| msgid "Run only the second compilation of -fcompare-debug"
- msgid "Run only the second compilation of -fcompare-debug."
- msgstr "Ejecuta sólo la segunda compilación de -fcompare-debug."
-
- #: common.opt:1054
--#, fuzzy
--#| msgid "Perform comparison elimination after register allocation has finished"
- msgid "Perform comparison elimination after register allocation has finished."
- msgstr "Realiza la eliminación de comparaciones después de terminar el alojamiento de registros."
-
- #: common.opt:1058
--#, fuzzy
--#| msgid "Do not perform optimizations increasing noticeably stack usage"
- msgid "Do not perform optimizations increasing noticeably stack usage."
- msgstr "No realizar optimizaciones que incrementan notablemente el uso de la pila."
-
- #: common.opt:1062
--#, fuzzy
--#| msgid "Perform a register copy-propagation optimization pass"
- msgid "Perform a register copy-propagation optimization pass."
- msgstr "Realiza el paso de optimización de copia-propagación de registros."
-
- #: common.opt:1066
--#, fuzzy
--#| msgid "Perform cross-jumping optimization"
- msgid "Perform cross-jumping optimization."
- msgstr "Realiza optimizaciones de saltos cruzados."
-
- #: common.opt:1070
--#, fuzzy
--#| msgid "When running CSE, follow jumps to their targets"
- msgid "When running CSE, follow jumps to their targets."
- msgstr "Cuando se esté ejecutando CSE, sigue los saltos a sus objetivos."
-
- #: common.opt:1078
--#, fuzzy
--#| msgid "Omit range reduction step when performing complex division"
- msgid "Omit range reduction step when performing complex division."
- msgstr "Omite el paso de reducción de rango al realizar divisiones complejas."
-
- #: common.opt:1082
--#, fuzzy
--#| msgid "Complex multiplication and division follow Fortran rules"
- msgid "Complex multiplication and division follow Fortran rules."
- msgstr "La multiplicación y la división complejas siguen las reglas Fortran."
-
- #: common.opt:1086
--#, fuzzy
--#| msgid "Place data items into their own section"
- msgid "Place data items into their own section."
- msgstr "Coloca los elementos de datos en su propia sección."
-
-@@ -14543,14 +13703,10 @@
- msgstr "Enumera todos los contadores de depuración disponibles con sus límites y cuentas."
-
- #: common.opt:1094
--#, fuzzy
--#| msgid "-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]\tSet the debug counter limit. "
- msgid "-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]\tSet the debug counter limit."
- msgstr "-fdbg-cnt=<contador>:<límite>[,<contador>:<límite>,...]\tEstablece el límite del contador de depuración."
-
- #: common.opt:1098
--#, fuzzy
--#| msgid "Map one directory name to another in debug information"
- msgid "Map one directory name to another in debug information."
- msgstr "Mapea un nombre de directorio a otro en la información de depuración."
-
-@@ -14559,58 +13715,52 @@
- msgstr "Muestra la sección .debug_types al usar la información de depuración DWARF v4."
-
- #: common.opt:1108
--#, fuzzy
--#| msgid "Defer popping functions args from stack until later"
- msgid "Defer popping functions args from stack until later."
- msgstr "Posterga la extracción de argumentos de funciones de la pila hasta más tarde."
-
- #: common.opt:1112
--#, fuzzy
--#| msgid "Attempt to fill delay slots of branch instructions"
- msgid "Attempt to fill delay slots of branch instructions."
- msgstr "Intenta rellenar las ranuras de retraso de las instrucciones de ramificación."
-
- #: common.opt:1116
- msgid "Delete dead instructions that may throw exceptions."
--msgstr ""
-+msgstr "Borra instrucciones muertas que pueden lanzar excepciones."
-
- #: common.opt:1120
--#, fuzzy
--#| msgid "Delete useless null pointer checks"
- msgid "Delete useless null pointer checks."
- msgstr "Borra las revisiones de punteros nulos sin uso."
-
- #: common.opt:1124
- msgid "Stream extra data to support more aggressive devirtualization in LTO local transformation mode."
--msgstr ""
-+msgstr "Hace fluir datos extra para permitir desvirtualización más agresiva en el modo de transformación local LTO."
-
- #: common.opt:1128
- #, fuzzy
--#| msgid "Perform superblock formation via tail duplication"
- msgid "Perform speculative devirtualization."
--msgstr "Realiza la formación de superbloques a través de la duplicación de colas."
-+msgstr "Realiza desvirtualización especulativa."
-
- #: common.opt:1132
-+#, fuzzy
- msgid "Try to convert virtual calls to direct ones."
- msgstr "Trata de convertir las llamadas virtuales a llamadas directas."
-
- #: common.opt:1136
+ #: d/lang.opt:238
#, fuzzy
--#| msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
- msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics."
- msgstr "-fdiagnostics-show-location=[once|every-line]\tIndica que tan seguido se debe emitir la ubicación del código al inicio de los diagnósticos con corte de línea."
+@@ -8094,7 +7991,7 @@
- #: common.opt:1153
-+#, fuzzy
- msgid "Show the source line with a caret indicating the column."
--msgstr ""
-+msgstr "Muestra la línea de código con un signo de intercalación para indicar la columna."
-
- #: common.opt:1161
-+#, fuzzy
- msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics."
+ #: d/lang.opt:242
+ msgid "Ignore unsupported pragmas."
-msgstr ""
-+msgstr "-fdiagnostics-color=[never|always|auto]\tColorea los diagnósticos."
++msgstr "Hace caso omiso de pragmas no admitidas."
- #: common.opt:1181
+ #: d/lang.opt:246
#, fuzzy
--#| msgid "Amend appropriate diagnostic messages with the command line option that controls them"
- msgid "Amend appropriate diagnostic messages with the command line option that controls them."
- msgstr "Asocia adecuadamente los mensajes de diagnóstico con la opción de línea de orden que los controla."
-
-Index: gcc/po/fr.po
-===================================================================
---- a/src/gcc/po/fr.po (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/po/fr.po (.../branches/gcc-6-branch)
-@@ -133,7 +133,7 @@
- "Project-Id-Version: gcc 6.2.0\n"
- "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
- "POT-Creation-Date: 2016-08-19 21:03+0000\n"
--"PO-Revision-Date: 2016-12-16 19:16+0100\n"
-+"PO-Revision-Date: 2016-12-23 15:39+0100\n"
- "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
- "Language-Team: French <traduc@traduc.org>\n"
- "Language: fr\n"
-@@ -1636,9 +1636,8 @@
- msgstr "attribut de fonction incohérent"
-
- #: cif-code.def:129
--#, fuzzy
- msgid "caller function contains cilk spawn"
--msgstr "la fonction appelante contient du généré cilk"
-+msgstr "la fonction appelante contient au moins une fonction démarrée en parallèle par cilk"
-
- #: cif-code.def:133
- msgid "unreachable"
-@@ -7701,2188 +7700,1613 @@
- msgstr "Préférer des accès par mots plutôt que des accès par octets."
-
- #: config/mcore/mcore.opt:71
--#, fuzzy
--#| msgid "Maximum amount for a single stack increment operation"
- msgid "Set the maximum amount for a single stack increment operation."
--msgstr "Montant maximal pour une opération d'incrémentation simple de la pile"
-+msgstr "Fixer le montant maximum pour une seule opération d'incrémentation de la pile."
-
- #: config/mcore/mcore.opt:75
--#, fuzzy
--#| msgid "Always treat bit-field as int-sized"
- msgid "Always treat bitfields as int-sized."
--msgstr "Toujours traiter les champs de bits comme si la taille entière"
-+msgstr "Toujours traiter les champs de bits comme ayant la taille d'un « int »."
-
- #: config/linux-android.opt:23
--#, fuzzy
--#| msgid "Generate code for little endian"
- msgid "Generate code for the Android platform."
--msgstr "Générer du code pour un système à octets de poids faible"
-+msgstr "Générer du code pour la plateforme Android."
-
- #: config/mmix/mmix.opt:24
--#, fuzzy
--#| msgid "For intrinsics library: pass all parameters in registers"
- msgid "For intrinsics library: pass all parameters in registers."
--msgstr "Pour les bibliothèques intrinsèques : passer tous les paramètres par registre"
-+msgstr "Pour les bibliothèques intrinsèques : passer tous les paramètres dans des registres."
-
- #: config/mmix/mmix.opt:28
--#, fuzzy
--#| msgid "Use register stack for parameters and return value"
- msgid "Use register stack for parameters and return value."
--msgstr "Utiliser le registre de la pile pour les paramètres et la valeur retournée"
-+msgstr "Utiliser la pile de registres pour les paramètres et la valeur retournée."
-
- #: config/mmix/mmix.opt:32
--#, fuzzy
--#| msgid "Use call-clobbered registers for parameters and return value"
- msgid "Use call-clobbered registers for parameters and return value."
--msgstr "utiliser les registres d'appels maltraités pour les paramètres et les valeurs retournées"
-+msgstr "Utiliser des registres écrasés durant l'appel pour les paramètres et les valeurs retournées."
+@@ -8104,11 +8001,11 @@
- #: config/mmix/mmix.opt:37
--#, fuzzy
--#| msgid "Use epsilon-respecting floating point compare instructions"
- msgid "Use epsilon-respecting floating point compare instructions."
--msgstr "Utiliser un epsilon respectant les instructions de comparaison en virgule flottante"
-+msgstr "Utiliser des instructions de comparaisons en virgule flottante qui respectent l'epsilon."
-
- #: config/mmix/mmix.opt:41
--#, fuzzy
--#| msgid "Use zero-extending memory loads, not sign-extending ones"
- msgid "Use zero-extending memory loads, not sign-extending ones."
--msgstr "utiliser des chargements mémoire avec zéro extension, pas celles avec signe d'extension"
-+msgstr "Utiliser des chargements mémoire qui étendent les zéros au lieu de celles qui étendent le signe."
-
- #: config/mmix/mmix.opt:45
--#, fuzzy
--#| msgid "Generate divide results with reminder having the same sign as the divisor (not the dividend)"
- msgid "Generate divide results with reminder having the same sign as the divisor (not the dividend)."
--msgstr "générer des résultats de division avec reste ayant le même signe que le diviseur (pas le dividende)"
-+msgstr "Générer des résultats de divisions où le reste a le même signe que le diviseur (pas le dividende)."
-
- #: config/mmix/mmix.opt:49
--#, fuzzy
--#| msgid "Prepend global symbols with \":\" (for use with PREFIX)"
- msgid "Prepend global symbols with \":\" (for use with PREFIX)."
--msgstr "pré ajouter les symboles globaux avec «:» (pour l'utilisation avec PREFIX)"
-+msgstr "Préfixer les symboles globaux avec « : » (pour l'utilisation avec PREFIX)."
-
- #: config/mmix/mmix.opt:53
--#, fuzzy
--#| msgid "Do not provide a default start-address 0x100 of the program"
- msgid "Do not provide a default start-address 0x100 of the program."
--msgstr "Ne pas fournir d'adresse de départ par défaut 0x100 du programme"
-+msgstr "Ne pas fournir d'adresse de départ par défaut 0x100 du programme."
-
- #: config/mmix/mmix.opt:57
--#, fuzzy
--#| msgid "Link to emit program in ELF format (rather than mmo)"
- msgid "Link to emit program in ELF format (rather than mmo)."
--msgstr "Faire l'édition de liens pour produire le programme en format ELF (au lieu de mmo)"
-+msgstr "Faire l'édition de liens pour produire le programme au format ELF (au lieu de mmo)."
-
- #: config/mmix/mmix.opt:61
--#, fuzzy
--#| msgid "Use P-mnemonics for branches statically predicted as taken"
- msgid "Use P-mnemonics for branches statically predicted as taken."
--msgstr "Utiliser les mnémoniques P pour les branchements statiquement prévus à être pris"
-+msgstr "Utiliser les mnémoniques P pour les branchements statiquement prévus comme étant pris."
-
- #: config/mmix/mmix.opt:65
--#, fuzzy
--#| msgid "Don't use P-mnemonics for branches"
- msgid "Don't use P-mnemonics for branches."
--msgstr "Ne pas utiliser les mnémoniques P pour les branchements"
-+msgstr "Ne pas utiliser les mnémoniques P pour les branchements."
-
- #: config/mmix/mmix.opt:79
--#, fuzzy
--#| msgid "Use addresses that allocate global registers"
- msgid "Use addresses that allocate global registers."
--msgstr "Utiliser les adresses qui allouent des registres globaux"
-+msgstr "Utiliser les adresses qui allouent des registres globaux."
-
- #: config/mmix/mmix.opt:83
--#, fuzzy
--#| msgid "Do not use addresses that allocate global registers"
- msgid "Do not use addresses that allocate global registers."
--msgstr "Ne pas utiliser des adresses qui allouent des registres globaux"
-+msgstr "Ne pas utiliser des adresses qui allouent des registres globaux."
-
- #: config/mmix/mmix.opt:87
--#, fuzzy
--#| msgid "Generate a single exit point for each function"
- msgid "Generate a single exit point for each function."
--msgstr "Générer un point de sortie simple pour chaque fonction"
-+msgstr "Générer un point de sortie unique pour chaque fonction."
-
- #: config/mmix/mmix.opt:91
--#, fuzzy
--#| msgid "Do not generate a single exit point for each function"
- msgid "Do not generate a single exit point for each function."
--msgstr "Ne pas générer un point de sortie simple pour chaque fonction"
-+msgstr "Ne pas générer un point de sortie unique pour chaque fonction."
-
- #: config/mmix/mmix.opt:95
--#, fuzzy
--#| msgid "Set start-address of the program"
- msgid "Set start-address of the program."
--msgstr "Adresse de départ du programme fixée"
-+msgstr "Fixer l'adresse de départ du programme."
-
- #: config/mmix/mmix.opt:99
--#, fuzzy
--#| msgid "Set start-address of data"
- msgid "Set start-address of data."
--msgstr "Adresse de départ des données fixée"
-+msgstr "Fixer l'adresse de départ des données."
-
- #: config/darwin.opt:114
--#, fuzzy
--#| msgid "Generate code using byte writes"
- msgid "Generate compile-time CFString objects."
--msgstr "Générer le code en utilisant des écritures par octets"
-+msgstr "Générer les objets CFString à la compilation."
-
- #: config/darwin.opt:211
- msgid "Warn if constant CFString objects contain non-portable characters."
+ #: d/lang.opt:250
+ msgid "Generate a default D main() function when compiling."
-msgstr ""
-+msgstr "Avertir si des objets CFString constants contiennent des caractères non portables."
++msgstr "Genera una función main() de D predefinida al compilar."
- #: config/darwin.opt:216
- msgid "Generate AT&T-style stubs for Mach-O."
+ #: d/lang.opt:254
+ msgid "-fmodule-file=<package.module>=<filespec>\tuse <filespec> as source file for <package.module>."
-msgstr ""
-+msgstr "Générer des stubs dans le style AT&T pour Mach-O."
++msgstr "-fmodule-file=<paquete.módulo>=<especfich>\tutiliza <especfich> como fichero fuente para <paquete.módulo>."
- #: config/darwin.opt:220
--#, fuzzy
--#| msgid "Generate code suitable for executables (NOT shared libs)"
- msgid "Generate code suitable for executables (NOT shared libs)."
--msgstr "Générer du code adapté pour les exécutables (PAS les librairies partagées)"
-+msgstr "Générer du code adapté pour les exécutables (PAS pour les librairies partagées)."
-
- #: config/darwin.opt:224
--#, fuzzy
--#| msgid "Generate code suitable for executables (NOT shared libs)"
- msgid "Generate code suitable for fast turn around debugging."
--msgstr "Générer du code adapté pour les exécutables (PAS les librairies partagées)"
-+msgstr "Générer du code adapté pour un débogage avec cycle court."
+ #: d/lang.opt:258
+ #, fuzzy
+@@ -8118,19 +8015,15 @@
- #: config/darwin.opt:232
- msgid "The earliest MacOS X version on which this program will run."
+ #: d/lang.opt:262
+ msgid "Process all modules specified on the command line, but only generate code for the module specified by the argument."
-msgstr ""
-+msgstr "La version la plus ancienne de MacOS X sur laquelle ce programme tournera."
-
- #: config/darwin.opt:236
--#, fuzzy
--#| msgid "Set sizeof(bool) to 1"
- msgid "Set sizeof(bool) to 1."
--msgstr "Affecter sizeof(bool) à 1"
-+msgstr "Faire en sorte que sizeof(bool) vaille 1."
++msgstr "Procesa todos los módulos especificados en la línea de órdenes, pero solo genera código para el módulo especificado por el argumento."
- #: config/darwin.opt:240
+ #: d/lang.opt:266
-#, fuzzy
--#| msgid "Generate code for little endian"
- msgid "Generate code for darwin loadable kernel extensions."
--msgstr "Générer du code pour un système à octets de poids faible"
-+msgstr "Générer du code pour des extensions à charger dans le noyau de darwin."
-
- #: config/darwin.opt:244
--#, fuzzy
--#| msgid "Generate code for the specified chip or CPU version"
- msgid "Generate code for the kernel or loadable kernel extensions."
--msgstr "Générer le code pour la version de processeur ou de circuit spécifiée"
-+msgstr "Générer du code pour le noyau ou pour des extensions à charger dans le noyau."
-
- #: config/darwin.opt:248
--#, fuzzy
--#| msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path"
- msgid "-iframework <dir>\tAdd <dir> to the end of the system framework include path."
--msgstr "-idirafter <répertoire>\tajouter <répertoire> à la fin du chemin système d'inclusion"
-+msgstr "-iframework <répertoire>\tAjouter <répertoire> à la fin du chemin d'inclusion du framework système."
+-#| msgid "Generate code for built-in atomic operations."
+ msgid "Generate code for postcondition contracts."
+-msgstr "Genera código para operaciones atómicas internas."
++msgstr "Genera código para contratos de postcondiciones."
- #: config/bfin/bfin.opt:40 config/msp430/msp430.opt:3 config/c6x/c6x.opt:38
- #: config/mep/mep.opt:143
+ #: d/lang.opt:270
-#, fuzzy
--#| msgid "Use the WindISS simulator"
- msgid "Use simulator runtime."
--msgstr "Utiliser le simulateur WindISS"
-+msgstr "Produire l'exécutable pour un simulateur."
+-#| msgid "Generate code for built-in atomic operations."
+ msgid "Generate code for precondition contracts."
+-msgstr "Genera código para operaciones atómicas internas."
++msgstr "Genera código para contratos de precondiciones."
- #: config/bfin/bfin.opt:44 config/arm/arm.opt:106
--#, fuzzy
--#| msgid "Specify the name of the target CPU"
- msgid "Specify the name of the target CPU."
--msgstr "Spécifier le nom du processeur cible"
-+msgstr "Spécifier le nom du processeur cible."
+ #: d/lang.opt:274
+ #, fuzzy
+@@ -8139,14 +8032,12 @@
+ msgstr "Muestra la versión del compilador."
- #: config/bfin/bfin.opt:48
+ #: d/lang.opt:282
-#, fuzzy
--#| msgid "Omit the frame pointer in leaf functions"
- msgid "Omit frame pointer for leaf functions."
--msgstr "Omettre le pointeur de trame dans les fonctions feuilles"
-+msgstr "Omettre le pointeur de trame dans les fonctions feuilles."
+-#| msgid "Generate code for the supervisor mode (default)."
+ msgid "Generate code for switches without a default case."
+-msgstr "Genera código para el modo supervisor (predeterminado)."
++msgstr "Genera código para las opciones sin caso predefinido."
- #: config/bfin/bfin.opt:52
- msgid "Program is entirely located in low 64k of memory."
+ #: d/lang.opt:286
+ msgid "List information on all language changes."
-msgstr ""
-+msgstr "Le programme est entièrement situé dans les 64k inférieurs de la mémoire."
++msgstr "Muestra información sobre todos los cambios del lenguaje."
- #: config/bfin/bfin.opt:56
- msgid "Work around a hardware anomaly by adding a number of NOPs before a"
--msgstr ""
-+msgstr "Contourner une anomalie du matériel en ajoutant plusieurs NOP devant une instruction CSYNC ou SSYNC."
+ #: d/lang.opt:290
+ msgid "Give deprecation messages about -ftransition=import anomalies."
+@@ -8154,7 +8045,7 @@
- #: config/bfin/bfin.opt:61
- msgid "Avoid speculative loads to work around a hardware anomaly."
+ #: d/lang.opt:294
+ msgid "List all usages of complex or imaginary types."
-msgstr ""
-+msgstr "Éviter les chargements spéculatifs pour contourner une anomalie matérielle."
++msgstr "Enumera todos los usos de los tipos complejo o imaginario."
- #: config/bfin/bfin.opt:65
--#, fuzzy
--#| msgid "Enable ID based shared library"
- msgid "Enabled ID based shared library."
--msgstr "Autoriser les identificateurs de librairies partagées de base"
-+msgstr "Autoriser les bibliothèques partagées basées sur un ID."
+ #: d/lang.opt:298
+ msgid "Implement DIP1000: Scoped pointers (experimental)."
+@@ -8166,11 +8057,11 @@
- #: config/bfin/bfin.opt:69
- msgid "Generate code that won't be linked against any other ID shared libraries,"
+ #: d/lang.opt:306
+ msgid "List all non-mutable fields which occupy an object instance."
-msgstr ""
-+msgstr "Générer du code qui ne sera pas lié avec une autre bibliothèque partagée par son ID mais qui pourra être utilisé comme bibliothèque partagée."
-
- #: config/bfin/bfin.opt:74 config/m68k/m68k.opt:171
--#, fuzzy
--#| msgid "ID of shared library to build"
- msgid "ID of shared library to build."
--msgstr "Identification de librairie partagé à construire"
-+msgstr "Identification de la bibliothèque partagée à construire."
++msgstr "Enumera todos los campos no mutables que ocupan la instancia de un objeto."
- #: config/bfin/bfin.opt:78 config/m68k/m68k.opt:167
--#, fuzzy
--#| msgid "Enable separate data segment"
- msgid "Enable separate data segment."
--msgstr "Autoriser des segments de données séparés"
-+msgstr "Activer des segments de données séparés."
-
- #: config/bfin/bfin.opt:82 config/c6x/c6x.opt:63
- msgid "Avoid generating pc-relative calls; use indirection."
+ #: d/lang.opt:310
+ msgid "Revert to single phase name lookup."
-msgstr ""
-+msgstr "Éviter des générer des appels relatifs au PC; utiliser des indirections."
++msgstr "Revierta a búsqueda de nombres de una sola fase."
- #: config/bfin/bfin.opt:86
--#, fuzzy
--#| msgid "Use the Xtensa floating-point unit"
- msgid "Link with the fast floating-point library."
--msgstr "Utiliser l'unité matérielle pour virgule flottante Xtensa"
-+msgstr "Lier avec la bibliothèque en virgule flottante rapide."
-
- #: config/bfin/bfin.opt:90 config/frv/frv.opt:130
--#, fuzzy
--#| msgid "Enable function profiling"
- msgid "Enable Function Descriptor PIC mode."
--msgstr "Autoriser le profilage de fonction"
-+msgstr "Activer le mode PIC avec descripteurs de fonctions."
-
- #: config/bfin/bfin.opt:94 config/frv/frv.opt:162
--#, fuzzy
--#| msgid "Enable use of RTPS instruction"
- msgid "Enable inlining of PLT in function calls."
--msgstr "Autoriser l'utilisation de l'instruction RTPS"
-+msgstr "Activer la mise en ligne de PLT dans les appels de fonctions."
-
- #: config/bfin/bfin.opt:98
- msgid "Do stack checking using bounds in L1 scratch memory."
--msgstr ""
-+msgstr "Vérifier la pile en utilisant des limites dans la mémoire temporaire L1."
-
- #: config/bfin/bfin.opt:102
--#, fuzzy
--#| msgid "Enable multicore support"
- msgid "Enable multicore support."
--msgstr "Activer le support multicœur"
-+msgstr "Activer le support multicœur."
+ #: d/lang.opt:314
+ msgid "List all hidden GC allocations."
+@@ -8177,10 +8068,8 @@
+ msgstr ""
- #: config/bfin/bfin.opt:106
+ #: d/lang.opt:318
-#, fuzzy
--#| msgid "Build for Core A"
- msgid "Build for Core A."
--msgstr "Compiler pour Core A"
-+msgstr "Compiler pour le cœur A."
+-#| msgid "Use given thread-local storage dialect."
+ msgid "List all variables going into thread local storage."
+-msgstr "Usa el dialecto de almacenamiento thread-local dado."
++msgstr "Enumera todas las variables que van al almacenamiento local del hilo."
- #: config/bfin/bfin.opt:110
--#, fuzzy
--#| msgid "Build for Core B"
- msgid "Build for Core B."
--msgstr "Compiler pour Core B"
-+msgstr "Compiler pour le cœur B."
+ #: d/lang.opt:322
+ #, fuzzy
+@@ -8193,18 +8082,16 @@
+ msgstr ""
- #: config/bfin/bfin.opt:114
+ #: d/lang.opt:350
-#, fuzzy
--#| msgid "Build for SDRAM"
- msgid "Build for SDRAM."
--msgstr "compiler pour SDRAM"
-+msgstr "Compiler pour SDRAM."
-
- #: config/bfin/bfin.opt:118
- msgid "Assume ICPLBs are enabled at runtime."
--msgstr ""
-+msgstr "Supposer que les ICPLB sont activés à l'exécution."
-
- #: config/m68k/m68k-tables.opt:25
- msgid "Known M68K CPUs (for use with the -mcpu= option):"
--msgstr ""
-+msgstr "Processeurs M68K connus (à utiliser avec l'option -mcpu=):"
+-#| msgid "Do not assume that standard C libraries and \"main\" exist."
+ msgid "Do not link the standard D library in the compilation."
+-msgstr "No asume que existen las bibliotecas C estándar y \"main\"."
++msgstr "No enlaza la biblioteca D estándar en la compilación."
- #: config/m68k/m68k-tables.opt:365
- msgid "Known M68K microarchitectures (for use with the -mtune= option):"
+ #: d/lang.opt:358
+ msgid "Link the standard D library statically in the compilation."
-msgstr ""
-+msgstr "Microarchitectures M68K connues (à utiliser avec l'option -mtune=):"
++msgstr "Enlaza la biblioteca D estándar estáticamente en la compilación."
- #: config/m68k/m68k-tables.opt:411
- msgid "Known M68K ISAs (for use with the -march= option):"
+ #: d/lang.opt:362
+ msgid "Link the standard D library dynamically in the compilation."
-msgstr ""
-+msgstr "ISA connues pour M68K (à utiliser avec l'option -march=):"
-
- #: config/m68k/ieee.opt:24 config/i386/i386.opt:358
--#, fuzzy
--#| msgid "Use IEEE math for fp comparisons"
- msgid "Use IEEE math for fp comparisons."
--msgstr "Utiliser les mathématiques IEEE pour les comparaisons FP"
-+msgstr "Utiliser les mathématiques IEEE pour les comparaisons en virgule flottantes."
-
- #: config/m68k/m68k.opt:30
--#, fuzzy
--#| msgid "Generate code for a 520X"
- msgid "Generate code for a 520X."
--msgstr "Générer du code pour un 520X"
-+msgstr "Générer du code pour un 520X."
-
- #: config/m68k/m68k.opt:34
--#, fuzzy
--#| msgid "Generate code for a 5206e"
- msgid "Generate code for a 5206e."
--msgstr "Générer du code pour un 5206e"
-+msgstr "Générer du code pour un 5206e."
-
- #: config/m68k/m68k.opt:38
--#, fuzzy
--#| msgid "Generate code for a 528x"
- msgid "Generate code for a 528x."
--msgstr "Générer du code pour un 528x"
-+msgstr "Générer du code pour un 528x."
-
- #: config/m68k/m68k.opt:42
--#, fuzzy
--#| msgid "Generate code for a 5307"
- msgid "Generate code for a 5307."
--msgstr "Générer du code pour un 5307"
-+msgstr "Générer du code pour un 5307."
-
- #: config/m68k/m68k.opt:46
--#, fuzzy
--#| msgid "Generate code for a 5407"
- msgid "Generate code for a 5407."
--msgstr "Générer du code pour un 5407"
-+msgstr "Générer du code pour un 5407."
-
- #: config/m68k/m68k.opt:50 config/m68k/m68k.opt:111
--#, fuzzy
--#| msgid "Generate code for a 68000"
- msgid "Generate code for a 68000."
--msgstr "Générer le code pour un 68000"
-+msgstr "Générer le code pour un 68000."
-
- #: config/m68k/m68k.opt:54
--#, fuzzy
--#| msgid "Generate code for a 68010"
- msgid "Generate code for a 68010."
--msgstr "Générer le code pour un 68010"
-+msgstr "Générer le code pour un 68010."
-
- #: config/m68k/m68k.opt:58 config/m68k/m68k.opt:115
--#, fuzzy
--#| msgid "Generate code for a 68020"
- msgid "Generate code for a 68020."
--msgstr "Générer le code pour un 68020"
-+msgstr "Générer le code pour un 68020."
-
- #: config/m68k/m68k.opt:62
--#, fuzzy
--#| msgid "Generate code for a 68040, without any new instructions"
- msgid "Generate code for a 68040, without any new instructions."
--msgstr "Générer du code pour un 68040 sans les nouvelles instructions"
-+msgstr "Générer du code pour un 68040 sans les nouvelles instructions."
-
- #: config/m68k/m68k.opt:66
--#, fuzzy
--#| msgid "Generate code for a 68060, without any new instructions"
- msgid "Generate code for a 68060, without any new instructions."
--msgstr "Générer du code pour un 68060 sans les nouvelles instructions"
-+msgstr "Générer du code pour un 68060 sans les nouvelles instructions."
-
- #: config/m68k/m68k.opt:70
--#, fuzzy
--#| msgid "Generate code for a 68030"
- msgid "Generate code for a 68030."
--msgstr "Générer du code pour un 68030"
-+msgstr "Générer du code pour un 68030."
-
- #: config/m68k/m68k.opt:74
--#, fuzzy
--#| msgid "Generate code for a 68040"
- msgid "Generate code for a 68040."
--msgstr "Générer du code pour un 68040"
-+msgstr "Générer du code pour un 68040."
-
- #: config/m68k/m68k.opt:78
--#, fuzzy
--#| msgid "Generate code for a 68060"
- msgid "Generate code for a 68060."
--msgstr "Générer du code pour un 68060"
-+msgstr "Générer du code pour un 68060."
-
- #: config/m68k/m68k.opt:82
--#, fuzzy
--#| msgid "Generate code for a 68302"
- msgid "Generate code for a 68302."
--msgstr "Générer du code pour un 68302"
-+msgstr "Générer du code pour un 68302."
-
- #: config/m68k/m68k.opt:86
--#, fuzzy
--#| msgid "Generate code for a 68332"
- msgid "Generate code for a 68332."
--msgstr "Générer du code pour un 68332"
-+msgstr "Générer du code pour un 68332."
-
- #: config/m68k/m68k.opt:91
--#, fuzzy
--#| msgid "Generate code for a 68851"
- msgid "Generate code for a 68851."
--msgstr "Générer le code pour un 68851"
-+msgstr "Générer le code pour un 68851."
-
- #: config/m68k/m68k.opt:95
--#, fuzzy
--#| msgid "Use hardware floating point instructions"
- msgid "Generate code that uses 68881 floating-point instructions."
--msgstr "Utiliser les instructions matérielles en virgule flottante"
-+msgstr "Générer du code qui utilise les instructions en virgule flottantes du 68881."
-
- #: config/m68k/m68k.opt:99
--#, fuzzy
--#| msgid "Align variables on a 32-bit boundary"
- msgid "Align variables on a 32-bit boundary."
--msgstr "Aligner les variables sur des frontières de 32 bits"
-+msgstr "Aligner les variables sur des frontières de 32 bits."
++msgstr "Enlaza la biblioteca D estándar dinámicamente en la compilación."
- #: config/m68k/m68k.opt:103 config/arm/arm.opt:81 config/nios2/nios2.opt:570
- #: config/nds32/nds32.opt:66 config/c6x/c6x.opt:67
--#, fuzzy
--#| msgid "Specify the name of the target architecture"
- msgid "Specify the name of the target architecture."
--msgstr "Spécifier le nom de l'architecture cible"
-+msgstr "Spécifier le nom de l'architecture cible."
+ #: go/lang.opt:42
+ msgid "-fgo-c-header=<file>\tWrite Go struct definitions to file as C code."
+@@ -8271,16 +8158,12 @@
+ msgstr "-mpointer-size=[no,32,short,64,long]\tEstablece el tamaña predeterminado de los punteros."
- #: config/m68k/m68k.opt:107
+ #: config/mcore/mcore.opt:23
-#, fuzzy
--#| msgid "Use the bit-field instructions"
- msgid "Use the bit-field instructions."
--msgstr "Utiliser les instructions de champs de bits"
-+msgstr "Utiliser les instructions de champs de bits."
+-#| msgid "Generate code for the M*Core M210"
+ msgid "Generate code for the M*Core M210."
+-msgstr "Genera código para el M*Core M210"
++msgstr "Genera código para el M*Core M210."
- #: config/m68k/m68k.opt:119
+ #: config/mcore/mcore.opt:27
-#, fuzzy
-#| msgid "Generate code for the M*Core M340"
- msgid "Generate code for a ColdFire v4e."
--msgstr "Générer du code pour M*Core M340"
-+msgstr "Générer du code pour un ColdFire v4e."
-
- #: config/m68k/m68k.opt:123
--#, fuzzy
--#| msgid "Specify the target CPU"
- msgid "Specify the target CPU."
--msgstr "Spécifier le processeur cible"
-+msgstr "Spécifier le processeur cible."
-
- #: config/m68k/m68k.opt:127
--#, fuzzy
--#| msgid "Generate code for a cpu32"
- msgid "Generate code for a cpu32."
--msgstr "Générer du code pour un cpu32"
-+msgstr "Générer du code pour un cpu32."
-
- #: config/m68k/m68k.opt:131
--#, fuzzy
--#| msgid "Use hardware quad fp instructions"
- msgid "Use hardware division instructions on ColdFire."
--msgstr "Utiliser les instructions matérielles quad FP"
-+msgstr "Utiliser les instructions de divisions matérielles sur un ColdFire."
-
- #: config/m68k/m68k.opt:135
--#, fuzzy
--#| msgid "Generate code for a Fido A"
- msgid "Generate code for a Fido A."
--msgstr "Générer le code pour un Fido A"
-+msgstr "Générer le code pour un Fido A."
+ msgid "Generate code for the M*Core M340."
+-msgstr "Genera código para el M*Core M340"
++msgstr "Genera código para el M*Core M340."
- #: config/m68k/m68k.opt:139
--#, fuzzy
--#| msgid "Use hardware floating point instructions"
- msgid "Generate code which uses hardware floating point instructions."
--msgstr "Utiliser les instructions matérielles en virgule flottante"
-+msgstr "Générer du code qui utilise les instructions en virgule flottantes matérielles."
-
- #: config/m68k/m68k.opt:143
--#, fuzzy
--#| msgid "Enable ID based shared library"
- msgid "Enable ID based shared library."
--msgstr "Autoriser les identificateurs de librairies partagées de base"
-+msgstr "Activer la bibliothèque partagée basée sur un ID."
+ #: config/mcore/mcore.opt:31
+ msgid "Force functions to be aligned to a 4 byte boundary."
+@@ -8650,7 +8533,7 @@
#: config/m68k/m68k.opt:147
--#, fuzzy
--#| msgid "Do not use the bit-field instructions"
- msgid "Do not use the bit-field instructions."
--msgstr "Ne pas utiliser les instructions de champs de bits"
-+msgstr "Ne pas utiliser les instructions de champs de bits."
+ msgid "Use 32-bit offsets in jump tables rather than 16-bit offsets."
+-msgstr ""
++msgstr "Usa desplazamientos de 32 bits en las tablas de saltos en lugar de desplazamientos de 16 bits."
#: config/m68k/m68k.opt:151
--#, fuzzy
--#| msgid "Use normal calling convention"
- msgid "Use normal calling convention."
--msgstr "Utiliser la convention normale d'appels"
-+msgstr "Utiliser la convention d'appels normale."
-
- #: config/m68k/m68k.opt:155
--#, fuzzy
--#| msgid "Consider type 'int' to be 32 bits wide"
- msgid "Consider type 'int' to be 32 bits wide."
--msgstr "Considérer le type « int » comme ayant une largeur de 32 bits"
-+msgstr "Considérer le type « int » comme ayant une largeur de 32 bits."
-
- #: config/m68k/m68k.opt:159
--#, fuzzy
--#| msgid "Generate pc-relative code"
- msgid "Generate pc-relative code."
--msgstr "Générer du code relatif au compteur de programme (PC)"
-+msgstr "Générer du code relatif au compteur de programme (PC)."
-
- #: config/m68k/m68k.opt:163
--#, fuzzy
--#| msgid "Use different calling convention using 'rtd'"
- msgid "Use different calling convention using 'rtd'."
--msgstr "Utiliser une convention différente d'appel en utilisant « rtd »"
-+msgstr "Utiliser une convention d'appel différente en utilisant « rtd »."
-
- #: config/m68k/m68k.opt:175
--#, fuzzy
--#| msgid "Consider type 'int' to be 16 bits wide"
- msgid "Consider type 'int' to be 16 bits wide."
--msgstr "Considérer le type « int » comme ayant une largeur de 16 bits"
-+msgstr "Considérer le type « int » comme ayant une largeur de 16 bits."
-
- #: config/m68k/m68k.opt:179
--#, fuzzy
--#| msgid "Generate code with library calls for floating point"
- msgid "Generate code with library calls for floating point."
--msgstr "Générer du code avec les appels de bibliothèques pour la virgule flottante"
-+msgstr "Générer du code avec des appels de bibliothèque pour la virgule flottante."
-
- #: config/m68k/m68k.opt:183
--#, fuzzy
--#| msgid "Do not use unaligned memory references"
- msgid "Do not use unaligned memory references."
--msgstr "Ne pas utiliser des références mémoire non alignées"
-+msgstr "Ne pas utiliser des références mémoire non alignées."
-
- #: config/m68k/m68k.opt:187
--#, fuzzy
--#| msgid "Specify the name of the target architecture"
- msgid "Tune for the specified target CPU or architecture."
--msgstr "Spécifier le nom de l'architecture cible"
-+msgstr "Ajuster pour le processeur ou l'architecture cible spécifiée."
+ msgid "Do not use the bit-field instructions."
+@@ -8761,11 +8644,11 @@
- #: config/m68k/m68k.opt:191
- msgid "Support more than 8192 GOT entries on ColdFire."
+ #: config/riscv/riscv.opt:114
+ msgid "Take advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses."
-msgstr ""
-+msgstr "Supporter plus de 8192 entrées dans la GOT d'un ColdFire."
++msgstr "Aprovecha los descansos del enlazador para reducir el número de instrucciones requeridas para materializar direcciones de símbolos."
- #: config/m68k/m68k.opt:195
- msgid "Support TLS segment larger than 64K."
+ #: config/riscv/riscv.opt:133
+ msgid "Emit RISC-V ELF attribute."
-msgstr ""
-+msgstr "Supporter des segments TLS plus grands que 64K."
++msgstr "Emite el atributo ELF de RISC-V."
#: config/m32c/m32c.opt:23
--#, fuzzy
--#| msgid "Use the WindISS simulator"
msgid "-msim\tUse simulator runtime."
--msgstr "Utiliser le simulateur WindISS"
-+msgstr "-msim\tProduire l'exécutable pour un simulateur."
-
- #: config/m32c/m32c.opt:27
- msgid "-mcpu=r8c\tCompile code for R8C variants."
--msgstr ""
-+msgstr "-mcpu=r8c\tCompiler le code pour les variantes R8C."
-
- #: config/m32c/m32c.opt:31
- msgid "-mcpu=m16c\tCompile code for M16C variants."
--msgstr ""
-+msgstr "-mcpu=m16c\tCompiler le code pour les variantes M16C."
-
- #: config/m32c/m32c.opt:35
- msgid "-mcpu=m32cm\tCompile code for M32CM variants."
--msgstr ""
-+msgstr "-mcpu=m32cm\tCompiler le code pour les variantes M32CM."
-
- #: config/m32c/m32c.opt:39
- msgid "-mcpu=m32c\tCompile code for M32C variants."
--msgstr ""
-+msgstr "-mcpu=m32c\tCompiler le code pour les variantes M32C."
-
- #: config/m32c/m32c.opt:43
- msgid "-memregs=\tNumber of memreg bytes (default: 16, range: 0..16)."
--msgstr ""
-+msgstr "-memregs=\tLe nombre d'octets memreg (par défaut: 16, plage: 0..16)."
-
- #: config/msp430/msp430.opt:7
- msgid "Force assembly output to always use hex constants."
--msgstr ""
-+msgstr "Forcer la sortie en assembleur à toujours utiliser des constantes en hexadécimal."
-
- #: config/msp430/msp430.opt:11
--#, fuzzy
--#| msgid "Specify the MCU name"
- msgid "Specify the MCU to build for."
--msgstr "Spécifier le nom du MCU"
-+msgstr "Spécifier le MCU pour lequel compiler."
-
- #: config/msp430/msp430.opt:15
- msgid "Warn if an MCU name is unrecognised or conflicts with other options (default: on)."
--msgstr ""
-+msgstr "Avertir si le nom d'un MCU n'est pas reconnu ou entre en conflit avec d'autres options (défaut: on)."
-
- #: config/msp430/msp430.opt:19
--#, fuzzy
--#| msgid "Specify the MCU name"
- msgid "Specify the ISA to build for: msp430, msp430x, msp430xv2."
--msgstr "Spécifier le nom du MCU"
-+msgstr "Spécifier l'ISA pour laquelle compiler: msp430, msp430x, msp430xv2."
-
- #: config/msp430/msp430.opt:23
- msgid "Select large model - 20-bit addresses/pointers."
--msgstr ""
-+msgstr "Sélectionner le modèle large – adresses/pointeurs sur 20 bits."
-
- #: config/msp430/msp430.opt:27
- msgid "Select small model - 16-bit addresses/pointers (default)."
--msgstr ""
-+msgstr "Sélectionner le modèle court – adresses/pointeurs sur 16 bits (défaut)."
-
- #: config/msp430/msp430.opt:31
- msgid "Optimize opcode sizes at link time."
--msgstr ""
-+msgstr "Optimiser la taille des opcodes lors de la liaison."
-
- #: config/msp430/msp430.opt:38
- msgid "Use a minimum runtime (no static initializers or ctors) for memory-constrained devices."
--msgstr ""
-+msgstr "Utiliser un moteur d'exécution (pas d'initialisations ni de créateurs statiques) pour les périphériques ayant une mémoire limitée."
-
- #: config/msp430/msp430.opt:45
- msgid "Specify the type of hardware multiply to support."
--msgstr ""
-+msgstr "Spécifier le type de multiplication matérielle à supporter."
-
- #: config/msp430/msp430.opt:67
- msgid "Specify whether functions should be placed into low or high memory."
--msgstr ""
-+msgstr "Spécifier si les fonctions doivent être placées en mémoire basse ou haute."
-
- #: config/msp430/msp430.opt:71
- msgid "Specify whether variables should be placed into low or high memory."
--msgstr ""
-+msgstr "Spécifier si les variables doivent être placées en mémoire basse ou haute."
-
- #: config/msp430/msp430.opt:90
- msgid "Passes on a request to the assembler to enable fixes for various silicon errata."
--msgstr ""
-+msgstr "Passer une requête à l'assembleur pour corriger divers erratas du silicium."
-
- #: config/msp430/msp430.opt:94
- msgid "Passes on a request to the assembler to warn about various silicon errata."
--msgstr ""
-+msgstr "Passer une requête à l'assembleur pour avertir à propos de divers erratas du silicium."
-
- #: config/aarch64/aarch64.opt:40
- msgid "The possible TLS dialects:"
--msgstr ""
-+msgstr "Les dialectes TLS possibles:"
-
- #: config/aarch64/aarch64.opt:52
- msgid "The code model option names for -mcmodel:"
--msgstr ""
-+msgstr "Les noms d'options du modèle de code pour -mcmodel:"
-
- #: config/aarch64/aarch64.opt:65 config/arm/arm.opt:94
- #: config/microblaze/microblaze.opt:60
--#, fuzzy
--#| msgid "Assume target CPU is configured as big endian"
- msgid "Assume target CPU is configured as big endian."
--msgstr "Présumer que le processeur cible est un système à octets de poids fort"
-+msgstr "Supposer que le processeur cible est configuré comme gros boutiste."
-
- #: config/aarch64/aarch64.opt:69
--#, fuzzy
--#| msgid "Generate code which uses the FPU"
- msgid "Generate code which uses only the general registers."
--msgstr "Générer du code qui utilise le FPU"
-+msgstr "Générer du code qui n'utilise que des registres généraux."
-
- #: config/aarch64/aarch64.opt:73
- msgid "Workaround for ARM Cortex-A53 Erratum number 835769."
--msgstr ""
-+msgstr "Correctif pour l'erratum numéro 835769 de l'ARM Cortex-A53."
-
- #: config/aarch64/aarch64.opt:77
- msgid "Workaround for ARM Cortex-A53 Erratum number 843419."
--msgstr ""
-+msgstr "Correctif pour l'erratum numéro 843419 de l'ARM Cortex-A53."
-
- #: config/aarch64/aarch64.opt:81 config/arm/arm.opt:155
- #: config/microblaze/microblaze.opt:64
--#, fuzzy
--#| msgid "Assume target CPU is configured as little endian"
- msgid "Assume target CPU is configured as little endian."
--msgstr "Présumer que le processeur cible est un système à octets de poids faible"
-+msgstr "Supposer que le processeur cible est configuré comme petit boutiste."
-
- #: config/aarch64/aarch64.opt:85
--#, fuzzy
--#| msgid "Specify the MCU name"
- msgid "Specify the code model."
--msgstr "Spécifier le nom du MCU"
-+msgstr "Spécifier le modèle de code."
-
- #: config/aarch64/aarch64.opt:89
--#, fuzzy
--#| msgid "Don't assume that unaligned accesses are handled by the system"
- msgid "Don't assume that unaligned accesses are handled by the system."
--msgstr "Ne pas présumer que les accès non alignées sont traités par le système"
-+msgstr "Ne pas supposer que les accès non alignés sont traités par le système."
-
- #: config/aarch64/aarch64.opt:93 config/i386/i386.opt:390
--#, fuzzy
--#| msgid "Omit the frame pointer in leaf functions"
- msgid "Omit the frame pointer in leaf functions."
--msgstr "Omettre le pointeur de trame dans les fonctions feuilles"
-+msgstr "Omettre le pointeur de trame dans les fonctions feuilles."
-
- #: config/aarch64/aarch64.opt:97
- msgid "Specify TLS dialect."
--msgstr ""
-+msgstr "Spécifier le dialecte TLS."
-
- #: config/aarch64/aarch64.opt:101
--#, fuzzy
--#| msgid "Specify bit size of immediate TLS offsets"
- msgid "Specifies bit size of immediate TLS offsets. Valid values are 12, 24, 32, 48."
--msgstr "Spécifier la taille de bit des décalages immédiats TLS"
-+msgstr "Spécifier la taille en bits des décalages TLS immédiats. Les valeurs valides sont 12, 24, 32, 48."
-
- #: config/aarch64/aarch64.opt:120
--#, fuzzy
--#| msgid "Use features of and schedule code for given CPU"
- msgid "-march=ARCH\tUse features of architecture ARCH."
--msgstr "Utiliser les options et ordonnancer le code pour le processeur donné"
-+msgstr "-march=ARCH\tUtiliser les fonctionnalités de l'architecture ARCH."
-
- #: config/aarch64/aarch64.opt:124
--#, fuzzy
--#| msgid "Use features of and schedule code for given CPU"
- msgid "-mcpu=CPU\tUse features of and optimize for CPU."
--msgstr "Utiliser les options et ordonnancer le code pour le processeur donné"
-+msgstr "-mcpu=CPU\tUtiliser les fonctionnalités et optimiser pour ce processeur."
-
- #: config/aarch64/aarch64.opt:128
--#, fuzzy
--#| msgid "Use features of and schedule code for given CPU"
- msgid "-mtune=CPU\tOptimize for CPU."
--msgstr "Utiliser les options et ordonnancer le code pour le processeur donné"
-+msgstr "-mtune=CPU\tOptimiser pour ce processeur."
-
- #: config/aarch64/aarch64.opt:132
--#, fuzzy
--#| msgid "Generate code for given CPU"
- msgid "-mabi=ABI\tGenerate code that conforms to the specified ABI."
--msgstr "Générer le code pour le processeur donné"
-+msgstr "-mabi=ABI\tGénérer du code conforme à l'ABI spécifiée."
-
- #: config/aarch64/aarch64.opt:136
- msgid "-moverride=STRING\tPower users only! Override CPU optimization parameters."
--msgstr ""
-+msgstr "-moverride=CHAÎNE\tUniquement pour les utilisateurs avertis ! Outrepasser les paramètres d'optimisation du processeur."
-
- #: config/aarch64/aarch64.opt:140
- msgid "Known AArch64 ABIs (for use with the -mabi= option):"
--msgstr ""
-+msgstr "ABI AArch64 connues (à utiliser avec l'option -mabi=):"
-
- #: config/aarch64/aarch64.opt:150
- msgid "PC relative literal loads."
--msgstr ""
-+msgstr "Chargements littéraux relatifs au PC."
-
- #: config/aarch64/aarch64.opt:154
- msgid "When calculating the reciprocal square root approximation,"
--msgstr ""
-+msgstr "Lors du calcul de l'approximation de la racine carrée réciproque, utiliser une étape en moins que d'habitude, ce qui réduit la latence et la précision."
-
- #: config/linux.opt:24
--#, fuzzy
--#| msgid "Use uClibc C library"
- msgid "Use Bionic C library."
--msgstr "Utiliser la bibliothèque C uClibc"
-+msgstr "Utiliser la bibliothèque C Bionic."
-
- #: config/linux.opt:28
--#, fuzzy
--#| msgid "Use GNU C library"
- msgid "Use GNU C library."
--msgstr "Utiliser la bibliothèque C GNU"
-+msgstr "Utiliser la bibliothèque C GNU."
-
- #: config/linux.opt:32
--#, fuzzy
--#| msgid "Use uClibc C library"
- msgid "Use uClibc C library."
--msgstr "Utiliser la bibliothèque C uClibc"
-+msgstr "Utiliser la bibliothèque C uClibc."
-
- #: config/linux.opt:36
--#, fuzzy
--#| msgid "Use uClibc C library"
- msgid "Use musl C library."
--msgstr "Utiliser la bibliothèque C uClibc"
-+msgstr "Utiliser la bibliothèque C musl."
-
- #: config/ia64/ilp32.opt:3
--#, fuzzy
--#| msgid "Generate ILP32 code"
- msgid "Generate ILP32 code."
--msgstr "Générer du code ILP32"
-+msgstr "Générer du code ILP32."
-
- #: config/ia64/ilp32.opt:7
--#, fuzzy
--#| msgid "Generate LP64 code"
- msgid "Generate LP64 code."
--msgstr "Générer du code LP64"
-+msgstr "Générer du code LP64."
-
- #: config/ia64/ia64.opt:28
--#, fuzzy
--#| msgid "Generate big endian code"
- msgid "Generate big endian code."
--msgstr "Générer du code de système à octets de poids fort"
-+msgstr "Générer du code gros boutiste."
-
- #: config/ia64/ia64.opt:32
--#, fuzzy
--#| msgid "Generate little endian code"
- msgid "Generate little endian code."
--msgstr "Générer du code de système à octets de poids faible"
-+msgstr "Générer du code petit boutiste."
-
- #: config/ia64/ia64.opt:36
--#, fuzzy
--#| msgid "Generate code for GNU as"
- msgid "Generate code for GNU as."
--msgstr "Générer du code pour GNU tel que"
-+msgstr "Générer du code pour GNU as."
-
- #: config/ia64/ia64.opt:40
--#, fuzzy
--#| msgid "Generate code for GNU ld"
- msgid "Generate code for GNU ld."
--msgstr "Générer du code pour GNU ld"
-+msgstr "Générer du code pour GNU ld."
-
- #: config/ia64/ia64.opt:44
--#, fuzzy
--#| msgid "Emit stop bits before and after volatile extended asms"
- msgid "Emit stop bits before and after volatile extended asms."
--msgstr "Produire de stop bits avant et après les asms étendus"
-+msgstr "Produire des bits de stop avant et après les asms étendues volatiles."
-
- #: config/ia64/ia64.opt:48
--#, fuzzy
--#| msgid "Use in/loc/out register names"
- msgid "Use in/loc/out register names."
--msgstr "Utilise les noms des registres in/loc/out "
-+msgstr "Utiliser les noms des registres in/loc/out."
-
- #: config/ia64/ia64.opt:55
--#, fuzzy
--#| msgid "Enable use of sdata/scommon/sbss"
- msgid "Enable use of sdata/scommon/sbss."
--msgstr "Autoriser l'utilisation de sdata/scommon/sbss"
-+msgstr "Activer l'utilisation de sdata/scommon/sbss."
-
- #: config/ia64/ia64.opt:59
--#, fuzzy
--#| msgid "Generate code without GP reg"
- msgid "Generate code without GP reg."
--msgstr "Générer du code sans registre GP"
-+msgstr "Générer du code sans registre GP."
-
- #: config/ia64/ia64.opt:63
--#, fuzzy
--#| msgid "gp is constant (but save/restore gp on indirect calls)"
- msgid "gp is constant (but save/restore gp on indirect calls)."
--msgstr "gp est une constante (mais save/restore gp fait par appels indirects)"
-+msgstr "gp est constant (mais save/restore gp lors d'appels indirects)."
-
- #: config/ia64/ia64.opt:67
--#, fuzzy
--#| msgid "Generate self-relocatable code"
- msgid "Generate self-relocatable code."
--msgstr "Générer du code auto-relocalisable"
-+msgstr "Générer du code auto-relocalisable."
-
- #: config/ia64/ia64.opt:71
--#, fuzzy
--#| msgid "Generate inline floating point division, optimize for latency"
- msgid "Generate inline floating point division, optimize for latency."
--msgstr "Générer la division enligne en point flottant, optimiser pour la latence"
-+msgstr "Générer une version en ligne de la division en virgule flottante, optimiser pour la latence."
-
- #: config/ia64/ia64.opt:75
--#, fuzzy
--#| msgid "Generate inline floating point division, optimize for throughput"
- msgid "Generate inline floating point division, optimize for throughput."
--msgstr "Générer la division en point flottant enligne, optimiser pour le débit"
-+msgstr "Générer une version en ligne de la division en virgule flottante, optimiser pour le débit."
-
- #: config/ia64/ia64.opt:82
--#, fuzzy
--#| msgid "Generate inline integer division, optimize for latency"
- msgid "Generate inline integer division, optimize for latency."
--msgstr "Générer la division entière enligne, optimiser pour la latence"
-+msgstr "Générer une version en ligne de la division entière, optimiser pour la latence."
-
- #: config/ia64/ia64.opt:86
--#, fuzzy
--#| msgid "Generate inline integer division, optimize for throughput"
- msgid "Generate inline integer division, optimize for throughput."
--msgstr "Générer la divisions entière enligne, optimiser pour le débit"
-+msgstr "Générer une version en ligne de la division entière, optimiser pour le débit."
-
- #: config/ia64/ia64.opt:90
--#, fuzzy
--#| msgid "Warn about compile-time integer division by zero"
- msgid "Do not inline integer division."
--msgstr "Avertir au sujet de la division entière par zéro au moment de la compilation"
-+msgstr "Ne pas mettre en ligne la division entière."
-
- #: config/ia64/ia64.opt:94
--#, fuzzy
--#| msgid "Generate inline square root, optimize for latency"
- msgid "Generate inline square root, optimize for latency."
--msgstr "Générer la racine carrée enligne, optimiser pour la latence"
-+msgstr "Générer une version en ligne de la racine carrée, optimiser pour la latence."
-
- #: config/ia64/ia64.opt:98
--#, fuzzy
--#| msgid "Generate inline square root, optimize for throughput"
- msgid "Generate inline square root, optimize for throughput."
--msgstr "Générer la racine carrée enligne, optimiser pour le débit"
-+msgstr "Générer une version en ligne de la racine carrée, optimiser pour le débit."
-
- #: config/ia64/ia64.opt:102
--#, fuzzy
--#| msgid "Do not disable space regs"
- msgid "Do not inline square root."
--msgstr "Ne pas désactiver l'espace registre"
-+msgstr "Ne pas mettre en ligne la racine carrée."
-
- #: config/ia64/ia64.opt:106
--#, fuzzy
--#| msgid "Enable Dwarf 2 line debug info via GNU as"
- msgid "Enable DWARF line debug info via GNU as."
--msgstr "Autoriser les infos de lignes de mise au point Dwarf 2 via GNU tel que"
-+msgstr "Activer les infos DWARF de débogage des lignes via GNU as."
-
- #: config/ia64/ia64.opt:110
--#, fuzzy
--#| msgid "Enable earlier placing stop bits for better scheduling"
- msgid "Enable earlier placing stop bits for better scheduling."
--msgstr "Autoriser l'insertion antérieure de stop bits pour un meilleur ordonnancement"
-+msgstr "Activer l'insertion plus tôt de bits de stop pour un meilleur ordonnancement."
-
- #: config/ia64/ia64.opt:114 config/spu/spu.opt:72 config/pa/pa.opt:58
- #: config/sh/sh.opt:273
--#, fuzzy
--#| msgid "Specify range of registers to make fixed"
- msgid "Specify range of registers to make fixed."
--msgstr "spécifier l'étendue des registres pour la rendre fixe"
-+msgstr "Spécifier la plage des registres à rendre fixes."
-
- #: config/ia64/ia64.opt:118 config/rs6000/sysv4.opt:32
- #: config/alpha/alpha.opt:130
--#, fuzzy
--#| msgid "Specify bit size of immediate TLS offsets"
- msgid "Specify bit size of immediate TLS offsets."
--msgstr "Spécifier la taille de bit des décalages immédiats TLS"
-+msgstr "Spécifier la taille en bits des décalages TLS immédiats."
-
- #: config/ia64/ia64.opt:122 config/spu/spu.opt:84 config/i386/i386.opt:504
- #: config/s390/s390.opt:170 config/sparc/sparc.opt:130
- #: config/visium/visium.opt:49
--#, fuzzy
--#| msgid "Schedule code for given CPU"
- msgid "Schedule code for given CPU."
--msgstr "Ordonnancer le code pour le processeur donné"
-+msgstr "Ordonnancer le code pour le processeur donné."
-
- #: config/ia64/ia64.opt:126
- msgid "Known Itanium CPUs (for use with the -mtune= option):"
--msgstr ""
-+msgstr "Processeurs Itanium connus (à utiliser avec l'option -mtune=):"
-
- #: config/ia64/ia64.opt:136
--#, fuzzy
--#| msgid "Allow speculative motion of more loads"
- msgid "Use data speculation before reload."
--msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-+msgstr "Utiliser la spéculation de données avant le rechargement."
-
- #: config/ia64/ia64.opt:140
--#, fuzzy
--#| msgid "Allow speculative motion of more loads"
- msgid "Use data speculation after reload."
--msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-+msgstr "Utiliser la spéculation de données après le rechargement."
-
- #: config/ia64/ia64.opt:144
--#, fuzzy
--#| msgid "Create console application"
- msgid "Use control speculation."
--msgstr "Créer une application de type console"
-+msgstr "Utiliser la spéculation de contrôle."
-
- #: config/ia64/ia64.opt:148
--#, fuzzy
--#| msgid "Allow speculative motion of more loads"
- msgid "Use in block data speculation before reload."
--msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-+msgstr "Utiliser la spéculation sur les données dans le bloc avant le rechargement."
-
- #: config/ia64/ia64.opt:152
--#, fuzzy
--#| msgid "Allow speculative motion of more loads"
- msgid "Use in block data speculation after reload."
--msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-+msgstr "Utiliser la spéculation sur les données dans le bloc après le rechargement."
-
- #: config/ia64/ia64.opt:156
--#, fuzzy
--#| msgid "Create console application"
- msgid "Use in block control speculation."
--msgstr "Créer une application de type console"
-+msgstr "Utiliser la spéculation sur le contrôle dans le bloc."
-
- #: config/ia64/ia64.opt:160
--#, fuzzy
--#| msgid "Allow speculative motion of more loads"
- msgid "Use simple data speculation check."
--msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-+msgstr "Utiliser une vérification simple de la spéculation sur les données."
-
- #: config/ia64/ia64.opt:164
--#, fuzzy
--#| msgid "Allow speculative motion of more loads"
- msgid "Use simple data speculation check for control speculation."
--msgstr "Autoriser le mouvement spéculatif de plusieurs chargements"
-+msgstr "Utiliser une vérification simple de la spéculation sur les données pour la spéculation du contrôle."
-
- #: config/ia64/ia64.opt:174
- msgid "Count speculative dependencies while calculating priority of instructions."
--msgstr ""
-+msgstr "Compter les dépendances spéculatives tout en calculant la priorité des instructions."
-
- #: config/ia64/ia64.opt:178
--#, fuzzy
--#| msgid "Enable earlier placing stop bits for better scheduling"
- msgid "Place a stop bit after every cycle when scheduling."
--msgstr "Autoriser l'insertion antérieure de stop bits pour un meilleur ordonnancement"
-+msgstr "Placer un bit de stop après chaque cycle lors de l'ordonnancement."
-
- #: config/ia64/ia64.opt:182
- msgid "Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group."
--msgstr ""
-+msgstr "Supposer que les stockages et chargements de nombres en virgule flottante ne produiront probablement pas de conflits si ils sont placés dans un groupe d'instructions."
-
- #: config/ia64/ia64.opt:186
- msgid "Soft limit on number of memory insns per instruction group, giving lower priority to subsequent memory insns attempting to schedule in the same insn group. Frequently useful to prevent cache bank conflicts. Default value is 1."
--msgstr ""
-+msgstr "Limite souple sur le nombre d'insns mémoire par groupe d'instructions. Donne une priorité plus basse aux insns mémoire suivantes qui tentent d'être ordonnancées dans le même groupe d'insn. Fréquemment utilisé pour éviter des conflits dans les zones de cache. La valeur par défaut est 1. "
-
- #: config/ia64/ia64.opt:190
- msgid "Disallow more than 'msched-max-memory-insns' in instruction group. Otherwise, limit is 'soft' (prefer non-memory operations when limit is reached)."
--msgstr ""
-+msgstr "Interdit plus que « msched-max-memory-insns » dans le groupe d'instructions. Autrement, la limite est « souple » (préfère les opérations non-mémoire quand la limite est atteinte)."
-
- #: config/ia64/ia64.opt:194
- msgid "Don't generate checks for control speculation in selective scheduling."
--msgstr ""
-+msgstr "Ne pas générer de vérifications pour la spéculation de contrôle dans l'ordonnancement sélectif."
-
- #: config/spu/spu.opt:20
--#, fuzzy
--#| msgid "location enumeration for BOOLS"
- msgid "Emit warnings when run-time relocations are generated."
--msgstr "localisation d'énumération pour BOOLÉENS"
-+msgstr "Émettre des avertissements quand des relocalisations à l'exécution sont générées."
-
- #: config/spu/spu.opt:24
- msgid "Emit errors when run-time relocations are generated."
--msgstr ""
-+msgstr "Émettre des erreurs quand des relocalisations à l'exécution sont générées."
-
- #: config/spu/spu.opt:28
- msgid "Specify cost of branches (Default 20)."
--msgstr ""
-+msgstr "Spécifier le coût des branches (20 par défaut)."
-
- #: config/spu/spu.opt:32
--#, fuzzy
--#| msgid "Generate load/store with update instructions"
- msgid "Make sure loads and stores are not moved past DMA instructions."
--msgstr "Générer les instructions de mise à jour de chargement/stockage"
-+msgstr "S'assurer que les chargements et les stockages ne sont pas déplacés au delà d'instructions DMA."
-
- #: config/spu/spu.opt:36
- msgid "volatile must be specified on any memory that is effected by DMA."
--msgstr ""
-+msgstr "« volatile » doit être spécifié sur toute mémoire qui est affectée par le DMA."
-
- #: config/spu/spu.opt:40 config/spu/spu.opt:44
- msgid "Insert nops when it might improve performance by allowing dual issue (default)."
--msgstr ""
-+msgstr "Insérer des nops quand cela pourrait améliorer la performance en permettant des doubles émissions dans les pipelines (par défaut)."
-
- #: config/spu/spu.opt:48
--#, fuzzy
--#| msgid "Use jsr and rts for function calls and returns"
- msgid "Use standard main function as entry for startup."
--msgstr "Utiliser jsr et rtc pour les appels de fonction et les retours"
-+msgstr "Utiliser la fonction « main » standard comme point d'entrée au démarrage."
-
- #: config/spu/spu.opt:52
--#, fuzzy
--#| msgid "Generate string instructions for block moves"
- msgid "Generate branch hints for branches."
--msgstr "Générer les instructions chaînes pour les déplacements de blocs"
-+msgstr "Générer des indices de branchement pour les branches."
-
- #: config/spu/spu.opt:56
--#, fuzzy
--#| msgid "The maximum number of instructions to consider to fill a delay slot"
- msgid "Maximum number of nops to insert for a hint (Default 2)."
--msgstr "Le nombre maximum d'instructions à considérer pour remplir une slot délai"
-+msgstr "Le nombre maximum de nops à insérer pour un indice (2 par défaut)."
-
- #: config/spu/spu.opt:60
--#, fuzzy
--#| msgid "The maximum number of instructions to consider to unroll in a loop"
- msgid "Approximate maximum number of instructions to allow between a hint and its branch [125]."
--msgstr "Le nombre maximum d'instructions à considérer à inclure dans une boucle"
-+msgstr "Nombre maximum approximatif d'instructions à permettre entre un indice et sa branche [125]."
-
- #: config/spu/spu.opt:64
--#, fuzzy
--#| msgid "Generate code for big endian"
- msgid "Generate code for 18 bit addressing."
--msgstr "Générer du code pour un système à octets de poids fort"
-+msgstr "Générer du code pour un adressage sur 18 bits."
-
- #: config/spu/spu.opt:68
--#, fuzzy
--#| msgid "Generate code for big endian"
- msgid "Generate code for 32 bit addressing."
--msgstr "Générer du code pour un système à octets de poids fort"
-+msgstr "Générer du code pour un adressage sur 32 bits."
-
- #: config/spu/spu.opt:76
- msgid "Insert hbrp instructions after hinted branch targets to avoid the SPU hang issue."
--msgstr ""
-+msgstr "Insérer des instructions hbrp après des cibles de branchements avec indices pour éviter de planter le SPU."
-
- #: config/spu/spu.opt:80 config/i386/i386.opt:247 config/s390/s390.opt:56
--#, fuzzy
--#| msgid "Generate code for given CPU"
- msgid "Generate code for given CPU."
--msgstr "Générer le code pour le processeur donné"
-+msgstr "Générer du code pour le processeur donné."
-
- #: config/spu/spu.opt:88
--#, fuzzy
--#| msgid "Pass parameters in registers (default)"
- msgid "Access variables in 32-bit PPU objects (default)."
--msgstr "Passer les paramètres par les registres (par défaut)"
-+msgstr "Accéder aux variables dans des objets PPU sur 32 bits (par défaut)."
-
- #: config/spu/spu.opt:92
--#, fuzzy
--#| msgid "Pass parameters in registers (default)"
- msgid "Access variables in 64-bit PPU objects."
--msgstr "Passer les paramètres par les registres (par défaut)"
-+msgstr "Accéder aux variables dans des objets PPU sur 64 bits."
-
- #: config/spu/spu.opt:96
- msgid "Allow conversions between __ea and generic pointers (default)."
--msgstr ""
-+msgstr "Permettre les conversions entre __ea et les pointeurs génériques (par défaut)."
-
- #: config/spu/spu.opt:100
- msgid "Size (in KB) of software data cache."
--msgstr ""
-+msgstr "La taille (en Ko) de la cache des données logicielles."
-
- #: config/spu/spu.opt:104
- msgid "Atomically write back software data cache lines (default)."
--msgstr ""
-+msgstr "Écrire atomiquement dans les lignes de cache des données logicielles (par défaut)."
-
- #: config/epiphany/epiphany.opt:24
- msgid "Don't use any of r32..r63."
--msgstr ""
-+msgstr "N'utiliser aucun des r32..r63."
-
- #: config/epiphany/epiphany.opt:28
- msgid "preferentially allocate registers that allow short instruction generation."
--msgstr ""
-+msgstr "allouer de préférence des registres qui autorisent la génération d'instructions courtes."
-
- #: config/epiphany/epiphany.opt:32
--#, fuzzy
--#| msgid "Relax branches"
- msgid "Set branch cost."
--msgstr "Branchements relaxés"
-+msgstr "Définir le coût d'un branchement."
-
- #: config/epiphany/epiphany.opt:36
--#, fuzzy
--#| msgid "Enable use of conditional move instructions"
- msgid "enable conditional move instruction usage."
--msgstr "Autoriser l'utilisation des instructions conditionnelles move"
-+msgstr "activer l'utilisation de l'instruction de déplacement conditionnel."
-
- #: config/epiphany/epiphany.opt:40
--#, fuzzy
--#| msgid "The maximum number of instructions to consider to fill a delay slot"
- msgid "set number of nops to emit before each insn pattern."
--msgstr "Le nombre maximum d'instructions à considérer pour remplir une slot délai"
-+msgstr "fixer le nombre de nops a émettre avant chaque motif d'insn."
-
- #: config/epiphany/epiphany.opt:52
--#, fuzzy
--#| msgid "Use software floating point"
- msgid "Use software floating point comparisons."
--msgstr "Utiliser le traitement par logiciel des nombres flottants"
-+msgstr "Utiliser les comparaisons logicielles des virgules flottantes."
-
- #: config/epiphany/epiphany.opt:56
- msgid "Enable split of 32 bit immediate loads into low / high part."
--msgstr ""
-+msgstr "Autoriser la scission des chargements d'immédiats sur 32 bits en partie basse / haute."
-
- #: config/epiphany/epiphany.opt:60
- msgid "Enable use of POST_INC / POST_DEC."
--msgstr ""
-+msgstr "Activer l'utilisation de POST_INC / POST_DEC."
-
- #: config/epiphany/epiphany.opt:64
- msgid "Enable use of POST_MODIFY."
--msgstr ""
-+msgstr "Activer l'utilisation de POST_MODIFY."
-
- #: config/epiphany/epiphany.opt:68
- msgid "Set number of bytes on the stack preallocated for use by the callee."
--msgstr ""
-+msgstr "Définir le nombre d'octets pré-alloués sur la pile destinés à être utilisés par l'appelé."
-
- #: config/epiphany/epiphany.opt:72
- msgid "Assume round to nearest is selected for purposes of scheduling."
--msgstr ""
-+msgstr "Supposer que l'arrondi au plus proche est sélectionné quand il s'agit d'ordonnancer."
-
- #: config/epiphany/epiphany.opt:76
--#, fuzzy
--#| msgid "Generate call insns as indirect calls, if necessary"
- msgid "Generate call insns as indirect calls."
--msgstr "Générer l'appel insn comme un appel indirect, si nécessaire"
-+msgstr "Générer les insns d'appels comme appels indirects."
-
- #: config/epiphany/epiphany.opt:80
--#, fuzzy
--#| msgid "Generate call insns as indirect calls, if necessary"
- msgid "Generate call insns as direct calls."
--msgstr "Générer l'appel insn comme un appel indirect, si nécessaire"
-+msgstr "Générer les insns d'appels comme appels directs."
-
- #: config/epiphany/epiphany.opt:84
- msgid "Assume labels and symbols can be addressed using 16 bit absolute addresses."
--msgstr ""
-+msgstr "Supposer que les étiquettes et les symboles peuvent être adressés en utilisant des adresses absolues sur 16 bits."
-
- #: config/epiphany/epiphany.opt:108
- msgid "A floatig point to integer truncation may be replaced with rounding to save mode switching."
--msgstr ""
-+msgstr "La troncature d'un nombre décimal en nombre entier peut être remplacée par un arrondi pour économiser un changement de mode."
-
- #: config/epiphany/epiphany.opt:112
--#, fuzzy
--#| msgid "Use structs on stronger alignment for double-word copies"
- msgid "Vectorize for double-word operations."
--msgstr "Utiliser des structs avec alignement plus fort pour les copies de mots-doubles"
-+msgstr "Vectoriser pour des opérations sur des doubles mots."
-
- #: config/epiphany/epiphany.opt:128
- msgid "Split unaligned 8 byte vector moves before post-modify address generation."
--msgstr ""
-+msgstr "Scinder les déplacements de vecteurs de 8 octets non-alignés avant la génération d'adresse post-modifiée."
-
- #: config/epiphany/epiphany.opt:132
--#, fuzzy
--#| msgid "Use hardware floating point instructions"
- msgid "Use the floating point unit for integer add/subtract."
--msgstr "Utiliser les instructions matérielles en virgule flottante"
-+msgstr "Utiliser l'unité en virgule flottante pour ajouter/soustraire des entiers."
-
- #: config/epiphany/epiphany.opt:136
- msgid "Set register to hold -1."
--msgstr ""
-+msgstr "Définir le registre pour contenir -1."
+Index: gcc/po/ChangeLog
+===================================================================
+--- a/src/gcc/po/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/po/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,23 @@
++2019-10-11 Joseph Myers <joseph@codesourcery.com>
++
++ * fi.po: Update.
++
++2019-09-30 Joseph Myers <joseph@codesourcery.com>
++
++ * es.po: Update.
++
++2019-08-31 Joseph Myers <joseph@codesourcery.com>
++
++ * es.po: Update.
++
++2019-08-28 Joseph Myers <joseph@codesourcery.com>
++
++ * es.po: Update.
++
++2019-08-23 Joseph Myers <joseph@codesourcery.com>
++
++ * zh_CN.po: Update.
++
+ 2019-08-12 Release Manager
- #: config/ft32/ft32.opt:23
- msgid "target the software simulator."
--msgstr ""
-+msgstr "cible le simulateur logiciel."
+ * GCC 9.2.0 released.
+Index: gcc/po/fi.po
+===================================================================
+--- a/src/gcc/po/fi.po (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/po/fi.po (.../branches/gcc-9-branch)
+@@ -33,7 +33,7 @@
+ "Project-Id-Version: gcc 9.1.0\n"
+ "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
+ "POT-Creation-Date: 2019-05-02 20:28+0000\n"
+-"PO-Revision-Date: 2019-05-29 18:58+0300\n"
++"PO-Revision-Date: 2019-10-11 20:03+0300\n"
+ "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
+ "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+ "Language: fi\n"
+@@ -67,9 +67,9 @@
+ msgstr "lähdetiedostoa %s ei löydy"
- #: config/ft32/ft32.opt:27 config/s390/s390.opt:201 config/mips/mips.opt:385
--#, fuzzy
--#| msgid "Use ROM instead of RAM"
- msgid "Use LRA instead of reload."
--msgstr "Utiliser le ROM au lieu de la RAM"
-+msgstr "Utiliser LRA au lieu d'un rechargement."
+ #: collect2.c:1632
+-#, fuzzy, c-format
++#, c-format
+ msgid "collect2 version %s\n"
+-msgstr "gcc-versio %s %s\n"
++msgstr "collect2-versio %s\n"
- #: config/ft32/ft32.opt:31
--#, fuzzy
--#| msgid "Enable use of DB instruction"
- msgid "Avoid use of the DIV and MOD instructions"
--msgstr "Activer l'utilisation d'instruction DB"
-+msgstr "Éviter l'utilisation des instructions DIV et MOD"
+ #: collect2.c:1737
+ #, c-format
+@@ -118,9 +118,9 @@
+ msgstr "const-/kopioinnin-eteneminen poistettu käytöstä"
- #: config/h8300/h8300.opt:23
--#, fuzzy
--#| msgid "Generate H8S code"
- msgid "Generate H8S code."
--msgstr "Générer du code H8S"
-+msgstr "Générer du code H8S."
+ #: diagnostic.c:145
+-#, fuzzy, c-format
++#, c-format
+ msgid "%s: all warnings being treated as errors"
+-msgstr "Käsittele kaikki varoitukset virheinä"
++msgstr "%s: kaikki varoitukset käsitellään virheinä"
- #: config/h8300/h8300.opt:27
--#, fuzzy
--#| msgid "Generate H8SX code"
- msgid "Generate H8SX code."
--msgstr "Générer du code H8SX"
-+msgstr "Générer du code H8SX."
+ #: diagnostic.c:150
+ #, c-format
+@@ -6142,9 +6142,8 @@
+ msgstr "gfortran ei tue valitsinta -E ilman valitsinta -cpp"
- #: config/h8300/h8300.opt:31
+ #: objc/lang-specs.h:30 objc/lang-specs.h:41
-#, fuzzy
--#| msgid "Generate H8S/2600 code"
- msgid "Generate H8S/2600 code."
--msgstr "Générer du code H8S/S2600"
-+msgstr "Générer du code H8S/S2600."
+ msgid "GNU Objective C no longer supports traditional compilation"
+-msgstr "GCC ei enää tue valitsinta -traditional ilman valitsinta -E"
++msgstr "GNU Objective C ei enää tue perinteistä kääntämistä"
- #: config/h8300/h8300.opt:35
--#, fuzzy
--#| msgid "Make integers 32 bits wide"
- msgid "Make integers 32 bits wide."
--msgstr "Rendre les entiers larges de 32 bits"
-+msgstr "Rendre les entiers larges de 32 bits."
+ #: objc/lang-specs.h:55
+ msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead"
+@@ -6688,9 +6687,8 @@
+ msgstr "Noudata ISO Fortran 95 -standardia"
- #: config/h8300/h8300.opt:42
+ #: fortran/lang.opt:827
-#, fuzzy
--#| msgid "Use registers for argument passing"
- msgid "Use registers for argument passing."
--msgstr "Utiliser les registres pour le passage d'arguments"
-+msgstr "Utiliser les registres pour le passage d'arguments."
+ msgid "Conform to nothing in particular."
+-msgstr "Älä noudata mitään erityisesti"
++msgstr "Älä noudata mitään erityisesti."
- #: config/h8300/h8300.opt:46
--#, fuzzy
--#| msgid "Consider access to byte sized memory slow"
- msgid "Consider access to byte sized memory slow."
--msgstr "Considérer l'accès mémoire lent pour la taille d'octets"
-+msgstr "Considérer que l'accès à une mémoire de un octet est lente."
+ #: fortran/lang.opt:831
+ msgid "Accept extensions to support legacy code."
+@@ -6732,24 +6730,20 @@
+ msgstr "-isystem <hakemisto>\tLisää <hakemisto> järjestelmän include-polun alkuun"
- #: config/h8300/h8300.opt:50
+ #: c-family/c.opt:217
-#, fuzzy
--#| msgid "Enable linker relaxing"
- msgid "Enable linker relaxing."
--msgstr "Activer la relâche par l'éditeur de liens"
-+msgstr "Activer la relâche par l'éditeur de liens."
+ msgid "Generate make dependencies."
+-msgstr "Luo make-riippuvuudet"
++msgstr "Luo make-riippuvuudet."
- #: config/h8300/h8300.opt:54
+ #: c-family/c.opt:221
-#, fuzzy
--#| msgid "Generate H8/300H code"
- msgid "Generate H8/300H code."
--msgstr "Générer du code H8/300H"
-+msgstr "Générer du code H8/300H."
+ msgid "Generate make dependencies and compile."
+-msgstr "Luo make-riippuvuudet ja käännä"
++msgstr "Luo make-riippuvuudet ja käännä."
- #: config/h8300/h8300.opt:58
+ #: c-family/c.opt:225
-#, fuzzy
--#| msgid "Enable the normal mode"
- msgid "Enable the normal mode."
--msgstr "Activer le mode normal"
-+msgstr "Activer le mode normal."
+ msgid "-MF <file>\tWrite dependency output to the given file."
+-msgstr "Kirjoita riippuvuustuloste annettuun tiedostoon"
++msgstr "-MF <tiedosto>\tKirjoita riippuvuustuloste annettuun tiedostoon."
- #: config/h8300/h8300.opt:62
+ #: c-family/c.opt:229
-#, fuzzy
--#| msgid "Use H8/300 alignment rules"
- msgid "Use H8/300 alignment rules."
--msgstr "Utiliser les règles d'alignement H8/300"
-+msgstr "Utiliser les règles d'alignement du H8/300."
+ msgid "Treat missing header files as generated files."
+-msgstr "Käsittele puuttuvia otsikkotiedostoja luotavina tiedostoina"
++msgstr "Käsittele puuttuvia otsikkotiedostoja luotavina tiedostoina."
- #: config/h8300/h8300.opt:66
- msgid "Push extended registers on stack in monitor functions."
--msgstr ""
-+msgstr "Pousser les registres étendus sur la pile dans les fonctions de monitoring."
-
- #: config/h8300/h8300.opt:70
--#, fuzzy
--#| msgid "Do not use the callt instruction"
- msgid "Do not push extended registers on stack in monitor functions."
--msgstr "Ne pas utiliser l'instruction callt"
-+msgstr "Ne pas pousser les registres étendus sur la pile dans les fonctions de monitoring."
-
- #: config/pdp11/pdp11.opt:23
--#, fuzzy
--#| msgid "Generate code for an 11/10"
- msgid "Generate code for an 11/10."
--msgstr "Générer du code pour un 11/10"
-+msgstr "Générer du code pour un 11/10."
+ #: c-family/c.opt:233
+ msgid "Like -M but ignore system header files."
+@@ -6773,9 +6767,8 @@
+ msgstr ""
- #: config/pdp11/pdp11.opt:27
+ #: c-family/c.opt:253
-#, fuzzy
--#| msgid "Generate code for an 11/40"
- msgid "Generate code for an 11/40."
--msgstr "Générer du code pour un 11/40"
-+msgstr "Générer du code pour un 11/40."
+ msgid "Do not generate #line directives."
+-msgstr "Älä luo #line-direktiivejä"
++msgstr "Älä luo #line-direktiivejä."
- #: config/pdp11/pdp11.opt:31
--#, fuzzy
--#| msgid "Generate code for an 11/45"
- msgid "Generate code for an 11/45."
--msgstr "Générer du code pour un 11/45"
-+msgstr "Générer du code pour un 11/45."
+ #: c-family/c.opt:257
+ #, fuzzy
+@@ -6817,11 +6810,9 @@
+ msgid "Enable most warning messages."
+ msgstr "Subject: Fetchmailin varoitus liian suuresta viestistä"
- #: config/pdp11/pdp11.opt:35
+-# vähän fuzzy
+ #: c-family/c.opt:308
-#, fuzzy
--#| msgid "Return floating point results in ac0"
- msgid "Return floating-point results in ac0 (fr0 in Unix assembler syntax)."
--msgstr "Le résultat retourné en virgule flottante se retrouve dans AC0."
-+msgstr "Retourne les résultats en virgule flottante dans ac0 (fr0 dans la syntaxe de l'assembleur Unix)."
-
- #: config/pdp11/pdp11.opt:39
- msgid "Do not use inline patterns for copying memory."
--msgstr ""
-+msgstr "Ne pas utiliser des motifs en lignes pour copier de la mémoire."
-
- #: config/pdp11/pdp11.opt:43
- msgid "Use inline patterns for copying memory."
--msgstr ""
-+msgstr "Utiliser des motifs en lignes pour copier de la mémoire."
-
- #: config/pdp11/pdp11.opt:47
- msgid "Do not pretend that branches are expensive."
--msgstr ""
-+msgstr "Ne pas prétendre que les branches sont onéreuses."
-
- #: config/pdp11/pdp11.opt:51
- msgid "Pretend that branches are expensive."
--msgstr ""
-+msgstr "Prétendre que les branches sont onéreuses."
+ msgid "Warn on any use of alloca."
+-msgstr "Varoita pragmain väärästä käytöstä."
++msgstr "Varoita kaikesta allocan käytöstä."
- #: config/pdp11/pdp11.opt:55
+ #: c-family/c.opt:312
+ #, fuzzy
+@@ -6931,9 +6922,8 @@
+ #: c-family/c.opt:1369 c-family/c.opt:1373 c-family/c.opt:1377
+ #: c-family/c.opt:1381 c-family/c.opt:1385 c-family/c.opt:1389
+ #: config/i386/i386.opt:967
-#, fuzzy
--#| msgid "Use the DEC assembler syntax"
- msgid "Use the DEC assembler syntax."
--msgstr "Utiliser la syntaxe de l'assembleur DEC"
-+msgstr "Utiliser la syntaxe de l'assembleur DEC."
+ msgid "Deprecated in GCC 9. This switch has no effect."
+-msgstr "Vanhentunut. Tämä valitsin ei vaikuta mihinkään."
++msgstr "Vanhentunut GCC 9:ssä. Tämä valitsin ei vaikuta mihinkään."
- #: config/pdp11/pdp11.opt:59
--#, fuzzy
--#| msgid "Use 32 bit float"
- msgid "Use 32 bit float."
--msgstr "Utiliser des flottants de 32 bits"
-+msgstr "Utiliser des flottants de 32 bits."
+ #: c-family/c.opt:429
+ msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"."
+@@ -6964,9 +6954,8 @@
+ msgstr "Varoita kun kaikki muodostimet ja hajottimet ovat yksityisiä."
- #: config/pdp11/pdp11.opt:63
+ #: c-family/c.opt:461
-#, fuzzy
--#| msgid "Use 64 bit float"
- msgid "Use 64 bit float."
--msgstr "Utiliser des flottants de 64 bits"
-+msgstr "Utiliser des flottants de 64 bits."
+ msgid "Warn about dangling else."
+-msgstr "Varoita implisiittisistä funktioesittelyistä."
++msgstr "Varoita orvosta elsestä."
- #: config/pdp11/pdp11.opt:67 config/rs6000/rs6000.opt:177
- #: config/frv/frv.opt:158
--#, fuzzy
--#| msgid "Use hardware floating point"
- msgid "Use hardware floating point."
--msgstr "Utiliser l'unité matérielle en virgule flottante"
-+msgstr "Utiliser l'unité matérielle pour les opérations en virgule flottante."
+ #: c-family/c.opt:465
+ msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage."
+@@ -7119,9 +7108,8 @@
+ msgstr "Varoita tyyppimääreiden huomiotta jättämisestä."
- #: config/pdp11/pdp11.opt:71
+ #: c-family/c.opt:622
-#, fuzzy
--#| msgid "Use 16 bit int"
- msgid "Use 16 bit int."
--msgstr "Utiliser des int de 16 bits"
-+msgstr "Utiliser des int de 16 bits."
+ msgid "Warn whenever attributes are ignored."
+-msgstr "Varoita tyyppimääreiden huomiotta jättämisestä."
++msgstr "Varoita attribuuttien huomiotta jättämisestä."
- #: config/pdp11/pdp11.opt:75
--#, fuzzy
--#| msgid "Use 32 bit int"
- msgid "Use 32 bit int."
--msgstr "Utiliser des int de 32 bits"
-+msgstr "Utiliser des int de 32 bits."
+ #: c-family/c.opt:626
+ #, fuzzy
+@@ -7196,9 +7184,8 @@
+ msgstr ""
- #: config/pdp11/pdp11.opt:79 config/rs6000/rs6000.opt:173
+ #: c-family/c.opt:701
-#, fuzzy
--#| msgid "Do not use hardware floating point"
- msgid "Do not use hardware floating point."
--msgstr "Ne pas utiliser le matériel pour virgule flottante"
-+msgstr "Ne pas utiliser l'unité matérielle pour les opérations en virgule flottante."
+ msgid "Warn when a logical operator is suspiciously always evaluating to true or false."
+-msgstr "Varoita vertailusta, joka on aina tosi tai aina epätosi."
++msgstr "Varoita, kun looginen operaattori on aina tosi tai aina epätosi."
- #: config/pdp11/pdp11.opt:83
--#, fuzzy
--#| msgid "Target has split I&D"
- msgid "Target has split I&D."
--msgstr "Cible a un I&D séparé"
-+msgstr "La cible a un bus I&D (Instruction and Data space) séparé."
+ #: c-family/c.opt:705
+ msgid "Warn when logical not is used on the left hand side operand of a comparison."
+@@ -7429,9 +7416,8 @@
+ msgstr "Varoita pakatuista bittikentistä, joiden siirrososoite vaihtui GCC 4.4:ssä"
- #: config/pdp11/pdp11.opt:87
+ #: c-family/c.opt:955
-#, fuzzy
--#| msgid "Use UNIX assembler syntax"
- msgid "Use UNIX assembler syntax."
--msgstr "Utiliser la syntaxe de l'assembleur UNIX"
-+msgstr "Utiliser la syntaxe de l'assembleur UNIX."
+ msgid "Warn about possibly missing parentheses."
+-msgstr "Varoita mahdollisesti puuttuvista sulkeista"
++msgstr "Varoita mahdollisesti puuttuvista sulkeista."
- #: config/xtensa/xtensa.opt:23
--#, fuzzy
--#| msgid "Use CONST16 instruction to load constants"
- msgid "Use CONST16 instruction to load constants."
--msgstr "Utiliser les instructions CONST16 pour charger les constantes"
-+msgstr "Utiliser l'instruction CONST16 pour charger les constantes."
+ #: c-family/c.opt:963
+ msgid "Warn about calling std::move on a local object in a return statement preventing copy elision."
+@@ -7975,9 +7961,8 @@
+ msgstr "Luokittelematon lause IF-lauseessa kohdassa %C"
- #: config/xtensa/xtensa.opt:27
+ #: c-family/c.opt:1681
-#, fuzzy
--#| msgid "Generate position-independent code if possible"
- msgid "Disable position-independent code (PIC) for use in OS kernel code."
--msgstr "Générer du code indépendant de la position si possible"
-+msgstr "Désactiver le code indépendant de la position (PIC) pour l'utilisation dans du code du noyau de l'OS."
+ msgid "Recognize C++ keywords like \"compl\" and \"xor\"."
+-msgstr "Tunnista C++:n avainsanat kuten ”compl” ja ”xor”"
++msgstr "Tunnista C++:n avainsanat kuten ”compl” ja ”xor”."
- #: config/xtensa/xtensa.opt:31
--#, fuzzy
--#| msgid "Use indirect CALLXn instructions for large programs"
- msgid "Use indirect CALLXn instructions for large programs."
--msgstr "Utiliser les instructions indirectes CALLXn pour les grands programmes"
-+msgstr "Utiliser les instructions indirectes CALLXn pour les grands programmes."
+ #: c-family/c.opt:1692
+ msgid "Look for and use PCH files even when preprocessing."
+@@ -8732,9 +8717,8 @@
+ msgstr ""
- #: config/xtensa/xtensa.opt:35
+ #: config/mcore/mcore.opt:75
-#, fuzzy
--#| msgid "Automatically align branch targets to reduce branch penalties"
- msgid "Automatically align branch targets to reduce branch penalties."
--msgstr "Aligner automatiquement les branchements cibles pour réduire les pénalités de branchement"
-+msgstr "Aligner automatiquement les cibles des branchements pour réduire les pénalités des branchements."
+ msgid "Always treat bitfields as int-sized."
+-msgstr "Käsittele bittikenttiä aina int-kokoisina"
++msgstr "Käsittele bittikenttiä aina int-kokoisina."
- #: config/xtensa/xtensa.opt:39
--#, fuzzy
--#| msgid "Intersperse literal pools with code in the text section"
- msgid "Intersperse literal pools with code in the text section."
--msgstr "Entrecouper les lots de littéraux avec le code dans la section texte"
-+msgstr "Entrecouper les lots de littéraux avec le code dans la section texte."
+ #: config/linux-android.opt:23
+ msgid "Generate code for the Android platform."
+@@ -19730,7 +19714,7 @@
+ #: cgraphunit.c:976 c/c-decl.c:11507
+ #, fuzzy, gcc-internal-format
+ msgid "%q+F used but never defined"
+-msgstr "nimike %q+D määritelty mutta käytettämättä"
++msgstr "nimike %q+D määritelty mutta käyttämättä"
- #: config/xtensa/xtensa.opt:43
- msgid "Relax literals in assembler and place them automatically in the text section."
--msgstr ""
-+msgstr "Relaxer les littéraux en assembleur et les placer automatiquement dans la section texte."
+ #: cgraphunit.c:978 c/c-decl.c:11517
+ #, fuzzy, gcc-internal-format
+@@ -29294,7 +29278,7 @@
+ #: c-family/c-warn.c:2021
+ #, gcc-internal-format
+ msgid "label %q+D defined but not used"
+-msgstr "nimike %q+D määritelty mutta käytettämättä"
++msgstr "nimike %q+D määritelty mutta käyttämättä"
- #: config/xtensa/xtensa.opt:47
--#, fuzzy
--#| msgid "Do not serialize volatile memory references with MEMW instructions"
- msgid "-mno-serialize-volatile\tDo not serialize volatile memory references with MEMW instructions."
--msgstr "Ne pas sérialiser les références à la mémoire volatile avec des instructions MEMW"
-+msgstr "-mno-serialize-volatile\tNe pas sérialiser les références à la mémoire volatile avec des instructions MEMW."
+ #: c-family/c-warn.c:2023
+ #, gcc-internal-format
+@@ -68642,7 +68626,7 @@
- #: config/i386/cygming.opt:23
--#, fuzzy
--#| msgid "Create console application"
- msgid "Create console application."
--msgstr "Créer une application de type console"
-+msgstr "Créer une application de type console."
+ #, fuzzy
+ #~ msgid "variable %q+D set but not used"
+-#~ msgstr "nimike %q+D määritelty mutta käytettämättä"
++#~ msgstr "nimike %q+D määritelty mutta käyttämättä"
- #: config/i386/cygming.opt:27
--#, fuzzy
--#| msgid "Generate code for a DLL"
- msgid "Generate code for a DLL."
--msgstr "Générer le code pour un DLL"
-+msgstr "Générer le code pour une DLL."
+ #~ msgid "jump to label %q+D"
+ #~ msgstr "hyppy nimiöön %q+D"
+@@ -68659,7 +68643,7 @@
- #: config/i386/cygming.opt:31
--#, fuzzy
--#| msgid "Ignore dllimport for functions"
- msgid "Ignore dllimport for functions."
--msgstr "Ignorer dllimport pour fonctions"
-+msgstr "Ignorer dllimport pour les fonctions."
+ #, fuzzy
+ #~ msgid "parameter %q+D set but not used"
+-#~ msgstr "nimike %q+D määritelty mutta käytettämättä"
++#~ msgstr "nimike %q+D määritelty mutta käyttämättä"
+
+ #~ msgid "%q+D declared here"
+ #~ msgstr "%q+D esitelty täällä"
+Index: gcc/po/zh_CN.po
+===================================================================
+--- a/src/gcc/po/zh_CN.po (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/po/zh_CN.po (.../branches/gcc-9-branch)
+@@ -4,6 +4,7 @@
+ # Meng Jie <zuxy.meng@gmail.com>, 2005-2014.
+ # Jeff Bai <jeffbai@aosc.xyz>, 2015.
+ # Mingye Wang (Arthur2e5) <arthur200126@gmail.com>, 2015, 2016.
++# Boyuan Yang <073plan@gmail.com>, 2019.
+ #
+ # Fellow translatiors:
+ # Many of the fuzzy strings are caused by an addition of a period (".")
+@@ -30,11 +31,11 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: gcc 6.1.0\n"
++"Project-Id-Version: gcc 9.1.0\n"
+ "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
+ "POT-Creation-Date: 2019-05-02 20:28+0000\n"
+-"PO-Revision-Date: 2016-04-30 17:13-0400\n"
+-"Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n"
++"PO-Revision-Date: 2019-08-19 15:13-0400\n"
++"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
+ "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+ "Language: zh_CN\n"
+ "MIME-Version: 1.0\n"
+@@ -41,9 +42,8 @@
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "X-Bugs: Report translation errors to the Language-Team address.\n"
+-"X-Poedit-Basepath: C:/MSYS/source/gcc-4.6.0/gcc\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+-"X-Generator: Poedit 1.8.7\n"
++"X-Generator: Poedit 2.2.3\n"
+
+ #: cfgrtl.c:2705
+ msgid "flow control insn inside a basic block"
+@@ -478,12 +478,10 @@
+ msgstr " -o <文件> 输出到 <文件>。\n"
+
+ #: gcc.c:3597
+-#, fuzzy
+-#| msgid " -pie Create a position independent executable.\n"
+ msgid ""
+ " -pie Create a dynamically linked position independent\n"
+ " executable.\n"
+-msgstr " -pie 生成位置无关可执行文件。\n"
++msgstr " -pie 生成动态链接的位置无关可执行文件。\n"
+
+ #: gcc.c:3599
+ msgid " -shared Create a shared library.\n"
+@@ -668,10 +666,9 @@
+ msgstr " rewrite [选项] <目录> 覆写测试覆盖率文件内容\n"
+
+ #: gcov-tool.c:270
+-#, fuzzy, c-format
+-#| msgid " -n, --normalize <long long> Normalize the profile\n"
++#, c-format
+ msgid " -n, --normalize <int64_t> Normalize the profile\n"
+-msgstr " -n, --normalize <long long> 归一化配置\n"
++msgstr " -n, --normalize <int64_t> 归一化配置\n"
- #: config/i386/cygming.opt:35
--#, fuzzy
--#| msgid "Use Mingw-specific thread support"
- msgid "Use Mingw-specific thread support."
--msgstr "Utilise le support de thread spécifique à Mingw"
-+msgstr "Utiliser le support de threads spécifique à Mingw."
+ #: gcov-tool.c:272
+ #, c-format
+@@ -774,10 +771,9 @@
+ "%s。\n"
- #: config/i386/cygming.opt:39
--#, fuzzy
--#| msgid "Set Windows defines"
- msgid "Set Windows defines."
--msgstr "Initialiser les définitions Windows"
-+msgstr "Initialiser les définitions Windows."
+ #: gcov-tool.c:528
+-#, fuzzy, c-format
+-#| msgid "Copyright %s 2014-2016 Free Software Foundation, Inc.\n"
++#, c-format
+ msgid "Copyright %s 2019 Free Software Foundation, Inc.\n"
+-msgstr "版权所有 %s 2014-2015 自由软件基金会。\n"
++msgstr "版权所有 %s 2019 自由软件基金会。\n"
- #: config/i386/cygming.opt:43
--#, fuzzy
--#| msgid "Create GUI application"
- msgid "Create GUI application."
--msgstr "Créer une application de type GUI"
-+msgstr "Créer une application de type GUI."
+ #: gcov-tool.c:531 gcov.c:925
+ #, c-format
+@@ -791,15 +787,12 @@
+ "包括没有适销性和某一专用目的下的适用性担保。\n"
- #: config/i386/cygming.opt:47 config/i386/interix.opt:32
- msgid "Use the GNU extension to the PE format for aligned common data."
--msgstr ""
-+msgstr "Utiliser l'extension GNU du format PE pour les données communes alignées."
+ #: gcov.c:885
+-#, fuzzy, c-format
+-#| msgid ""
+-#| "Usage: gcov [OPTION]... SOURCE|OBJ...\n"
+-#| "\n"
++#, c-format
+ msgid ""
+ "Usage: gcov [OPTION...] SOURCE|OBJ...\n"
+ "\n"
+ msgstr ""
+-"用法:gconv [选项]... 源文件|对象文件...\n"
++"用法:gconv [选项...] 源文件|对象文件...\n"
+ "\n"
- #: config/i386/cygming.opt:51
- msgid "Compile code that relies on Cygwin DLL wrappers to support C++ operator new/delete replacement."
--msgstr ""
-+msgstr "Compiler du code qui repose sur la surcouche de la DLL Cygwin pour supporter le remplacement des opérateurs new et delete du C++."
+ #: gcov.c:886
+@@ -844,22 +837,19 @@
+ msgstr " -h, --help 打印此帮助并退出\n"
- #: config/i386/cygming.opt:58
- msgid "Put relocated read-only data into .data section."
--msgstr ""
-+msgstr "Placer les données relocalisées en lecture seule dans la section .data."
+ #: gcov.c:894
+-#, fuzzy, c-format
+-#| msgid " -n, --no-output Do not create an output file\n"
++#, c-format
+ msgid " -i, --json-format Output JSON intermediate format into .gcov.json.gz file\n"
+-msgstr " -n, --no-output 不创建输出文件\n"
++msgstr " -i, --json-format 以 JSON 中间格式输出至 .gcov.json.gz 文件\n"
- #: config/i386/mingw.opt:29
- msgid "Warn about none ISO msvcrt scanf/printf width extensions."
--msgstr ""
-+msgstr "Avertir à propos des extensions de largeur de scanf/printf de msvcrt qui ne sont pas ISO."
+ #: gcov.c:895
+-#, fuzzy, c-format
+-#| msgid " -m, --demangled-names Output demangled function names\n"
++#, c-format
+ msgid " -j, --human-readable Output human readable numbers\n"
+-msgstr " -m, --demangled-names 输出解码后的函数名\n"
++msgstr " -j, --human-readable 输出人类可读的数字\n"
- #: config/i386/mingw.opt:33
- msgid "For nested functions on stack executable permission is set."
--msgstr ""
-+msgstr "Activer la permission d'exécution sur la pile pour les fonctions imbriquées."
+ #: gcov.c:896
+-#, fuzzy, c-format
+-#| msgid " -n, --no-output Do not create an output file\n"
++#, c-format
+ msgid " -k, --use-colors Emit colored output\n"
+-msgstr " -n, --no-output 不创建输出文件\n"
++msgstr " -k, --use-colors 使用带颜色的输出\n"
- #: config/i386/mingw-w64.opt:23
- msgid "Use unicode startup and define UNICODE macro."
--msgstr ""
-+msgstr "Utiliser une amorce unicode et défini la macro UNICODE."
+ #: gcov.c:897
+ #, c-format
+@@ -904,10 +894,9 @@
+ msgstr " -s, --source-prefix 目录 要略去的来源前缀\n"
- #: config/i386/i386.opt:182
--#, fuzzy
--#| msgid "sizeof(long double) is 16"
- msgid "sizeof(long double) is 16."
--msgstr "sizeof(long double) est 16"
-+msgstr "sizeof(long double) vaut 16."
+ #: gcov.c:906
+-#, fuzzy, c-format
+-#| msgid " -n, --no-output Do not create an output file\n"
++#, c-format
+ msgid " -t, --stdout Output to stdout instead of a file\n"
+-msgstr " -n, --no-output 不创建输出文件\n"
++msgstr " -t, --stdout 输出至标准输出而非文件\n"
- #: config/i386/i386.opt:186 config/i386/i386.opt:354
--#, fuzzy
--#| msgid "Use hardware fp"
- msgid "Use hardware fp."
--msgstr "Utiliser le FP matériel"
-+msgstr "Utiliser le coprocesseur mathématique."
+ #: gcov.c:907
+ #, c-format
+@@ -920,10 +909,9 @@
+ msgstr " -v, --version 打印版本号并退出\n"
- #: config/i386/i386.opt:190
--#, fuzzy
--#| msgid "sizeof(long double) is 12"
- msgid "sizeof(long double) is 12."
--msgstr "sizeof(long double) est 12"
-+msgstr "sizeof(long double) vaut 12."
+ #: gcov.c:909
+-#, fuzzy, c-format
+-#| msgid " -v, --verbose Verbose mode\n"
++#, c-format
+ msgid " -w, --verbose Print verbose informations\n"
+-msgstr " -v, --verbo se 输出更多信息\n"
++msgstr " -w, --verbose 输出详细信息\n"
- #: config/i386/i386.opt:194
--#, fuzzy
--#| msgid "Use 80-bit long double"
- msgid "Use 80-bit long double."
--msgstr "Utiliser un long double de 80 bits"
-+msgstr "Utiliser un long double de 80 bits."
+ #: gcov.c:910
+ #, fuzzy, c-format
+@@ -937,10 +925,9 @@
+ msgstr "gcov %s%s\n"
- #: config/i386/i386.opt:198 config/s390/s390.opt:130
- #: config/sparc/long-double-switch.opt:27 config/alpha/alpha.opt:102
--#, fuzzy
--#| msgid "Use 64-bit long double"
- msgid "Use 64-bit long double."
--msgstr "Utiliser un long double de 64 bits"
-+msgstr "Utiliser un long double de 64 bits."
+ #: gcov.c:1250
+-#, fuzzy, c-format
+-#| msgid "Treat the input file as already preprocessed"
++#, c-format
+ msgid "'%s' file is already processed\n"
+-msgstr "将输入文件当作已经预处理过的"
++msgstr ""
- #: config/i386/i386.opt:202 config/s390/s390.opt:126
- #: config/sparc/long-double-switch.opt:23 config/alpha/alpha.opt:98
--#, fuzzy
--#| msgid "Use 128-bit long double"
- msgid "Use 128-bit long double."
--msgstr "Utiliser un long double de 128 bits"
-+msgstr "Utiliser un long double de 128 bits."
+ #: gcov.c:1364
+ #, c-format
+@@ -968,16 +955,14 @@
+ msgstr "\n"
- #: config/i386/i386.opt:206 config/sh/sh.opt:209
--#, fuzzy
--#| msgid "Do not move instructions into a function's prologue"
- msgid "Reserve space for outgoing arguments in the function prologue."
--msgstr "Ne pas déplacer les instruction dans le prologue de fonction"
-+msgstr "Réserver de l'espace dans le prologue d'une fonction pour les arguments de sortie."
+ #: gcov.c:1489
+-#, fuzzy, c-format
+-#| msgid "%s: Cannot open output file: %s\n"
++#, c-format
+ msgid "Cannot open JSON output file %s\n"
+-msgstr "%s:无法打开输出文件:%s\n"
++msgstr "无法打开 JSON 输出文件 %s\n"
- #: config/i386/i386.opt:210
--#, fuzzy
--#| msgid "Align some doubles on dword boundary"
- msgid "Align some doubles on dword boundary."
--msgstr "Aligner quelques doubles sur des frontières de mots doubles"
-+msgstr "Aligner quelques doubles sur des frontières de mots doubles."
+ #: gcov.c:1497
+-#, fuzzy, c-format
+-#| msgid "Error writing output file '%s'\n"
++#, c-format
+ msgid "Error writing JSON output file %s\n"
+-msgstr "写入到输出文件 '%s' 时出错\n"
++msgstr "写入到 JSON 输出文件 %s 时出错\n"
- #: config/i386/i386.opt:214
--#, fuzzy
--#| msgid "Function starts are aligned to this power of 2"
- msgid "Function starts are aligned to this power of 2."
--msgstr "Débuts des fonction alignés selon une puissance de 2"
-+msgstr "Aligner les débuts des fonctions sur une puissance de 2 de cette valeur."
+ #: gcov.c:1664
+ #, c-format
+@@ -3473,8 +3458,9 @@
+ msgstr "无效的 move 指令:"
- #: config/i386/i386.opt:218
--#, fuzzy
--#| msgid "Jump targets are aligned to this power of 2"
- msgid "Jump targets are aligned to this power of 2."
--msgstr "Sauts de cibles alignés selon une puissance de 2"
-+msgstr "Aligner les cibles des sauts sur une puissance de 2 de cette valeur."
+ #: config/avr/avr.c:6279
++#, fuzzy
+ msgid "bad shift insn:"
+-msgstr "错误的 shift 指令"
++msgstr "错误的 shift 指令:"
- #: config/i386/i386.opt:222
--#, fuzzy
--#| msgid "Loop code aligned to this power of 2"
- msgid "Loop code aligned to this power of 2."
--msgstr "Codes de boucles alignés selon une puissance de 2"
-+msgstr "Aligner le code des boucles sur une puissance de 2 de cette valeur."
+ #: config/avr/avr.c:6387 config/avr/avr.c:6868 config/avr/avr.c:7283
+ msgid "internal compiler error. Incorrect shift:"
+@@ -4204,10 +4190,9 @@
+ msgstr "无效 %%q 值"
- #: config/i386/i386.opt:226
--#, fuzzy
--#| msgid "Align destination of the string operations"
- msgid "Align destination of the string operations."
--msgstr "Aligner la destination des opérations sur les chaînes"
-+msgstr "Aligner la destination des opérations sur les chaînes."
+ #: config/rs6000/rs6000.c:21141
+-#, fuzzy, c-format
+-#| msgid "invalid %%J value"
++#, c-format
+ msgid "invalid %%t value"
+-msgstr "无效 %%J 值"
++msgstr "无效 %%t 值"
- #: config/i386/i386.opt:230
--#, fuzzy
--#| msgid "Do not tune writable data alignment"
- msgid "Use the given data alignment."
--msgstr "Ne pas ajuster l'alignement les sections de données dynamiques"
-+msgstr "Utiliser l'alignement de données spécifié."
+ #: config/rs6000/rs6000.c:21158
+ #, c-format
+@@ -4225,21 +4210,19 @@
+ msgstr "无效 %%v 值"
- #: config/i386/i386.opt:234
- msgid "Known data alignment choices (for use with the -malign-data= option):"
--msgstr ""
-+msgstr "Choix connus pour l'alignement de données (à utiliser avec l'option -malign-data=):"
+ #: config/rs6000/rs6000.c:21234
+-#, fuzzy, c-format
+-#| msgid "invalid %%J value"
++#, c-format
+ msgid "invalid %%V value"
+-msgstr "无效 %%J 值"
++msgstr "无效 %%V 值"
- #: config/i386/i386.opt:251
--#, fuzzy
--#| msgid "Use given assembler dialect"
- msgid "Use given assembler dialect."
--msgstr "Utiliser la syntaxe de l'assembleur donné"
-+msgstr "Utiliser le dialecte de l'assembleur donné."
+ #: config/rs6000/rs6000.c:21251 config/xtensa/xtensa.c:2439
+ #, c-format
+ msgid "invalid %%x value"
+-msgstr "无效的 %%x 值"
++msgstr "无效 %%x 值"
- #: config/i386/i386.opt:255
- msgid "Known assembler dialects (for use with the -masm-dialect= option):"
--msgstr ""
-+msgstr "Dialectes d'assembleurs connus (à utiliser avec l'option -masm-dialect=):"
+ #: config/rs6000/rs6000.c:21308
+-#, fuzzy, c-format
+-#| msgid "invalid %%J value"
++#, c-format
+ msgid "invalid %%z value"
+-msgstr "无效 %%J 值"
++msgstr "无效 %%z 值"
- #: config/i386/i386.opt:265
--#, fuzzy
--#| msgid "Branches are this expensive (1-5, arbitrary units)"
- msgid "Branches are this expensive (1-5, arbitrary units)."
--msgstr "Branchements coûteux à ce point (1-4, unités arbitraires)"
-+msgstr "Les branchements sont coûteux à ce point (1-5, unités arbitraires)."
+ #: config/rs6000/rs6000.c:21377
+ #, c-format
+@@ -4626,7 +4609,7 @@
- #: config/i386/i386.opt:269
- msgid "Data greater than given threshold will go into .ldata section in x86-64 medium model."
--msgstr ""
-+msgstr "Les données plus grandes que la limite spécifiée iront dans la section .ldata dans le modèle moyen du x86-64."
+ #: c/c-objc-common.c:213
+ msgid "({anonymous})"
+-msgstr "{{匿名}}"
++msgstr "({匿名})"
- #: config/i386/i386.opt:273
--#, fuzzy
--#| msgid "Use given x86-64 code model"
- msgid "Use given x86-64 code model."
--msgstr "Utiliser le modèle de x86-64 donné"
-+msgstr "Utiliser le modèle de code x86-64 donné."
-
- #: config/i386/i386.opt:277 config/rs6000/aix64.opt:36
- #: config/rs6000/linux64.opt:32 config/tilegx/tilegx.opt:57
- msgid "Known code models (for use with the -mcmodel= option):"
--msgstr ""
-+msgstr "Modèles de code connus (à utiliser avec l'option -mcmodel=):"
+ #. If we have
+ #. declaration-specifiers declarator decl-specs
+@@ -4884,7 +4867,7 @@
- #: config/i386/i386.opt:296
--#, fuzzy
--#| msgid "Use complex addressing modes"
- msgid "Use given address mode."
--msgstr "Utiliser les modes d'adressage complexes"
-+msgstr "Utiliser le mode d'adressage spécifié."
+ #: cp/error.c:1186
+ msgid "<return value> "
+-msgstr "<返回值>"
++msgstr "<返回值> "
- #: config/i386/i386.opt:300
- msgid "Known address mode (for use with the -maddress-mode= option):"
--msgstr ""
-+msgstr "Modes d'adressage connus (à utiliser avec l'option -maddress-mode=):"
+ #: cp/error.c:1201
+ msgid "{anonymous}"
+@@ -5196,9 +5179,8 @@
+ msgstr "‘%s’和‘%s’用作内建函数‘%s’的参数"
- #: config/i386/i386.opt:309
+ #: fortran/error.c:853
-#, fuzzy
--#| msgid "This switch is deprecated; use -Wextra instead"
- msgid "%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead"
--msgstr "Cette option est obsolète; utiliser -Wextra à la place"
-+msgstr "%<-mcpu=%> est déprécié; utilisez plutôt %<-mtune=%> ou %<-march=%>"
+ msgid "Fortran 2018 deleted feature:"
+-msgstr "遵循 ISO Fortran 2008 标准"
++msgstr "Fortran 2018 删除的特性:"
- #: config/i386/i386.opt:313
--#, fuzzy
--#| msgid "Generate sin, cos, sqrt for FPU"
- msgid "Generate sin, cos, sqrt for FPU."
--msgstr "Générer sin, cos, sqrt pour le FPU"
-+msgstr "Générer sin, cos, sqrt pour le coprocesseur mathématique."
+ #: fortran/error.c:855
+ #, fuzzy
+@@ -5207,7 +5189,7 @@
- #: config/i386/i386.opt:317
- msgid "Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack."
+ #: fortran/error.c:857
+ msgid "Fortran 2018:"
-msgstr ""
-+msgstr "Toujours utiliser DRAP (Dynamic Realigned Argument Pointer) pour ré-aligner la pile."
++msgstr "Fortran 2018:"
- #: config/i386/i386.opt:321
--#, fuzzy
--#| msgid "Return values of functions in FPU registers"
- msgid "Return values of functions in FPU registers."
--msgstr "Retourner les valeurs de fonctions dans les registres FPU"
-+msgstr "Retourner les valeurs de fonctions dans les registres du coprocesseur mathématique."
+ #: fortran/error.c:859
+ #, fuzzy
+@@ -5215,9 +5197,8 @@
+ msgstr "遵循 ISO Fortran 2008 标准"
- #: config/i386/i386.opt:325
+ #: fortran/error.c:865
-#, fuzzy
--#| msgid "Generate floating point mathematics using given instruction set"
- msgid "Generate floating point mathematics using given instruction set."
--msgstr "Générer les mathématiques en virgule flottante avec le jeu d'instructions données"
-+msgstr "Générer les mathématiques en virgule flottante avec le jeu d'instructions donné."
+ msgid "GNU Extension:"
+-msgstr "使用 PE 格式的 GNU 扩展来对齐 common 数据"
++msgstr "GNU 扩展:"
- #: config/i386/i386.opt:329
--#, fuzzy
--#| msgid "too many arguments for format"
- msgid "Valid arguments to -mfpmath=:"
--msgstr "trop d'arguments pour le format"
-+msgstr "Arguments valides pour -mfpmath=:"
+ #: fortran/error.c:867
+ #, fuzzy
+@@ -5230,9 +5211,8 @@
+ msgstr "对声明中的过时用法给出警告"
- #: config/i386/i386.opt:362
+ #: fortran/error.c:871
-#, fuzzy
--#| msgid "Inline all known string operations"
- msgid "Inline all known string operations."
--msgstr "Permettre l'enlignage dans toutes les opérations portant sur les chaînes"
-+msgstr "Mettre en ligne toutes les opérations connues sur des chaînes."
+ msgid "Deleted feature:"
+-msgstr "%L处的 H 格式限定符已在 Fortran 95 中被删除"
++msgstr "删除的特性:"
- #: config/i386/i386.opt:366
- msgid "Inline memset/memcpy string operations, but perform inline version only for small blocks."
--msgstr ""
-+msgstr "Mettre en ligne les opérations memset/memcpy sur des chaînes mais n'exécuter la version en ligne que pour des petits blocs."
-
- #: config/i386/i386.opt:369
- msgid "%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead"
--msgstr ""
-+msgstr "%<-mintel-syntax%> et %<-mno-intel-syntax%> sont dépréciés; utilisez plutôt %<-masm=intel%> et %<-masm=att%>"
+ #: fortran/expr.c:3632
+ msgid "array assignment"
+@@ -5919,10 +5899,8 @@
+ msgstr "%qE属性在此平台上不受支持"
- #: config/i386/i386.opt:374
+ #: config/darwin.h:170
-#, fuzzy
--#| msgid "Use native (MS) bitfield layout"
- msgid "Use native (MS) bitfield layout."
--msgstr "Utiliser une configuration de champ de bits native (MS)"
-+msgstr "Utiliser une disposition des champs de bits native (MS)."
+-#| msgid "-fpic is not supported"
+ msgid "rdynamic is not supported"
+-msgstr "不支持 -fpic"
++msgstr "不支持 rdynamic"
- #: config/i386/i386.opt:394
--#, fuzzy
--#| msgid "Return floating point results in ac0"
- msgid "Set 80387 floating-point precision to 32-bit."
--msgstr "Le résultat retourné en virgule flottante se retrouve dans AC0."
-+msgstr "Fixer la précision en virgule flottante du 80387 à 32 bits."
+ #: config/darwin.h:258
+ msgid "-current_version only allowed with -dynamiclib"
+@@ -6307,16 +6285,12 @@
+ msgstr "对长度为 0 的格式字符串给出警告"
- #: config/i386/i386.opt:398
+ #: fortran/lang.opt:354
-#, fuzzy
--#| msgid "Return floating point results in ac0"
- msgid "Set 80387 floating-point precision to 64-bit."
--msgstr "Le résultat retourné en virgule flottante se retrouve dans AC0."
-+msgstr "Fixer la précision en virgule flottante du 80387 à 64 bits."
+-#| msgid "Enable preprocessing"
+ msgid "Enable preprocessing."
+-msgstr "启用预处理"
++msgstr "启用预处理。"
- #: config/i386/i386.opt:402
+ #: fortran/lang.opt:362
-#, fuzzy
--#| msgid "Return floating point results in ac0"
- msgid "Set 80387 floating-point precision to 80-bit."
--msgstr "Le résultat retourné en virgule flottante se retrouve dans AC0."
-+msgstr "Fixer la précision en virgule flottante du 80387 à 80 bits."
+-#| msgid "Disable preprocessing"
+ msgid "Disable preprocessing."
+-msgstr "禁用预处理"
++msgstr "禁用预处理。"
- #: config/i386/i386.opt:406
--#, fuzzy
--#| msgid "Attempt to keep stack aligned to this power of 2"
- msgid "Attempt to keep stack aligned to this power of 2."
--msgstr "Tentative de conservation de la pile alignée selon une puissance de 2"
-+msgstr "Essayer de conserver l'alignement de la pile sur cette puissance de 2."
+ #: fortran/lang.opt:370
+ #, fuzzy
+@@ -6922,10 +6896,8 @@
+ msgstr "不生成 #line 指令"
- #: config/i386/i386.opt:410
+ #: c-family/c.opt:257
-#, fuzzy
--#| msgid "Attempt to keep stack aligned to this power of 2"
- msgid "Assume incoming stack aligned to this power of 2."
--msgstr "Tentative de conservation de la pile alignée selon une puissance de 2"
-+msgstr "Supposer que l'alignement de la pile entrante est sur cette puissance de 2."
+-#| msgid "-U<macro>\tUndefine <macro>"
+ msgid "-U<macro>\tUndefine <macro>."
+-msgstr "-U<宏>\t取消定义宏"
++msgstr "-U<宏>\t取消定义<宏>。"
- #: config/i386/i386.opt:414
--#, fuzzy
--#| msgid "Use push instructions to save outgoing arguments"
- msgid "Use push instructions to save outgoing arguments."
--msgstr "Utiliser les instructions push pour sauvegardes les arguments sortants"
-+msgstr "Utiliser les instructions push pour sauvegardes les arguments sortants."
+ #: c-family/c.opt:261
+ #, fuzzy
+@@ -7116,10 +7088,8 @@
+ msgstr "对可能嵌套的注释和长度超过一个物理行长的 C++ 注释给出警告"
- #: config/i386/i386.opt:418
+ #: c-family/c.opt:437
-#, fuzzy
--#| msgid "Use red-zone in the x86-64 code"
- msgid "Use red-zone in the x86-64 code."
--msgstr "Utiliser la zone-rouge pour le code x86-64"
-+msgstr "Utiliser une zone rouge (espace réservé sur la pile pour usage par l'appelé) dans le code x86-64."
+-#| msgid "Synonym for -Wcomment"
+ msgid "Synonym for -Wcomment."
+-msgstr "-Wcomment 的同义词"
++msgstr "-Wcomment 的同义词。"
- #: config/i386/i386.opt:422
--#, fuzzy
--#| msgid "Number of registers used to pass integer arguments"
- msgid "Number of registers used to pass integer arguments."
--msgstr "Nombre de registres utilisés pour passer les arguments entiers"
-+msgstr "Nombre de registres utilisés pour passer les arguments entiers."
+ #: c-family/c.opt:441
+ #, fuzzy
+@@ -8054,16 +8024,12 @@
- #: config/i386/i386.opt:426
+ #: c-family/c.opt:1282 c-family/c.opt:1530 c-family/c.opt:1854
+ #: c-family/c.opt:1858 c-family/c.opt:1874
-#, fuzzy
--#| msgid "Alternate calling convention"
- msgid "Alternate calling convention."
--msgstr "Convention alternative d'appels"
-+msgstr "Convention d'appel alternative."
+-#| msgid "No longer supported"
+ msgid "No longer supported."
+-msgstr "不再受支持"
++msgstr "不再支持。"
- #: config/i386/i386.opt:430 config/alpha/alpha.opt:23
+ #: c-family/c.opt:1286
-#, fuzzy
--#| msgid "Do not use hardware fp"
- msgid "Do not use hardware fp."
--msgstr "Ne pas utiliser l'unité FP matérielle"
-+msgstr "Ne pas utiliser le coprocesseur mathématique."
-
- #: config/i386/i386.opt:434
- msgid "Use SSE register passing conventions for SF and DF mode."
--msgstr ""
-+msgstr "Utiliser les conventions de passage des registres SSE pour les modes SF et DF."
+-#| msgid "Recognize the \"asm\" keyword"
+ msgid "Recognize the \"asm\" keyword."
+-msgstr "识别“asm”关键字"
++msgstr "识别“asm”关键字。"
- #: config/i386/i386.opt:438
- msgid "Realign stack in prologue."
--msgstr ""
-+msgstr "Ré-aligner la pile dans le prologue."
-
- #: config/i386/i386.opt:442
--#, fuzzy
--#| msgid "Enable stack probing"
- msgid "Enable stack probing."
--msgstr "Autoriser le sondage de la pile"
-+msgstr "Autoriser le sondage de la pile."
-
- #: config/i386/i386.opt:446
- msgid "Specify memcpy expansion strategy when expected size is known."
--msgstr ""
-+msgstr "Spécifier la stratégie d'expansion de memcpy quand la taille attendue est connue."
-
- #: config/i386/i386.opt:450
- msgid "Specify memset expansion strategy when expected size is known."
--msgstr ""
-+msgstr "Spécifier la stratégie d'expansion de memset quand la taille attendue est connue."
+ #: c-family/c.opt:1294
+ #, fuzzy
+@@ -8197,10 +8163,8 @@
+ msgstr "不假定标准 C 库和“main”存在"
- #: config/i386/i386.opt:454
+ #: c-family/c.opt:1505
-#, fuzzy
--#| msgid "possible start of unterminated string literal"
- msgid "Chose strategy to generate stringop using."
--msgstr "début possible d'une chaîne de mot non terminée"
-+msgstr "Choisir la stratégie pour générer du code en ligne pour les opérations sur des chaînes."
+-#| msgid "Recognize GNU-defined keywords"
+ msgid "Recognize GNU-defined keywords."
+-msgstr "识别 GNU 定义的关键字"
++msgstr "识别 GNU 定义的关键字。"
- #: config/i386/i386.opt:458
- msgid "Valid arguments to -mstringop-strategy=:"
--msgstr ""
-+msgstr "Les arguments valables pour -mstringop-strategy=:"
+ #: c-family/c.opt:1509
+ #, fuzzy
+@@ -8495,10 +8459,8 @@
+ msgstr "未指定“signed”或“unsigned”时默认位段为无符号的"
- #: config/i386/i386.opt:486
+ #: c-family/c.opt:1834 ada/gcc-interface/lang.opt:85
-#, fuzzy
--#| msgid "Use given thread-local storage dialect"
- msgid "Use given thread-local storage dialect."
--msgstr "Utiliser le dialecte de stockage du thread local fourni"
-+msgstr "Utiliser le dialecte de stockage local au thread fourni."
-
- #: config/i386/i386.opt:490
- msgid "Known TLS dialects (for use with the -mtls-dialect= option):"
--msgstr ""
-+msgstr "Dialectes TLS connus (à utiliser avec l'option -mtls-dialect=):"
+-#| msgid "Make \"char\" unsigned by default"
+ msgid "Make \"char\" unsigned by default."
+-msgstr "使“char”类型默认为无符号"
++msgstr "使“char”类型默认为无符号。"
- #: config/i386/i386.opt:500
--#, fuzzy, c-format
--#| msgid "Use direct references against %gs when accessing tls data"
-+#, c-format
- msgid "Use direct references against %gs when accessing tls data."
--msgstr "Utiliser la référence directe envers %gs lors de l'accès des données tls"
-+msgstr "Utiliser les références directes envers %gs lors de l'accès des données TLS."
+ #: c-family/c.opt:1838
+ #, fuzzy
+@@ -8759,14 +8721,12 @@
+ msgstr "遵循 ISO 1990 C 标准,也支持 GNU 扩展"
- #: config/i386/i386.opt:508
+ #: c-family/c.opt:2059
-#, fuzzy
--#| msgid "Allow all ugly features"
- msgid "Fine grain control of tune features."
--msgstr "Permettre toutes les options laides"
-+msgstr "Contrôle fin des fonctionnalités d'ajustement."
+ msgid "Deprecated in favor of -std=gnu++11."
+-msgstr "已弃用,请改用 -std=gnu99"
++msgstr "已弃用,请改用 -std=gnu++11。"
- #: config/i386/i386.opt:512
+ #: c-family/c.opt:2063
-#, fuzzy
--#| msgid "Allow all ugly features"
- msgid "Clear all tune features."
--msgstr "Permettre toutes les options laides"
-+msgstr "Effacer toutes les fonctionnalités d'ajustement."
+ msgid "Deprecated in favor of -std=gnu++14."
+-msgstr "已弃用,请改用 -std=gnu99"
++msgstr "已弃用,请改用 -std=gnu++14。"
- #: config/i386/i386.opt:519
--#, fuzzy
--#| msgid "Generate code for given CPU"
- msgid "Generate code that conforms to Intel MCU psABI."
--msgstr "Générer le code pour le processeur donné"
-+msgstr "Générer du code conforme à l'ABI spécifique au processeur (psABI) du MCU Intel."
+ #: c-family/c.opt:2067
+ #, fuzzy
+@@ -8775,9 +8735,8 @@
+ msgstr "遵循 ISO 1990 C 标准,也支持 GNU 扩展"
- #: config/i386/i386.opt:523
+ #: c-family/c.opt:2071
-#, fuzzy
--#| msgid "Generate code for given CPU"
- msgid "Generate code that conforms to the given ABI."
--msgstr "Générer le code pour le processeur donné"
-+msgstr "Générer du code conforme à l'ABI spécifiée."
+ msgid "Deprecated in favor of -std=gnu++17."
+-msgstr "已弃用,请改用 -std=gnu99"
++msgstr "已弃用,请改用 -std=gnu+17。"
- #: config/i386/i386.opt:527
- msgid "Known ABIs (for use with the -mabi= option):"
--msgstr ""
-+msgstr "ABI connues (à utiliser avec l'option -mabi=):"
+ #: c-family/c.opt:2075
+ #, fuzzy
+@@ -8798,9 +8757,8 @@
+ msgstr "遵循 ISO 1990 C 标准,也支持 GNU 扩展"
- #: config/i386/i386.opt:537 config/rs6000/rs6000.opt:189
+ #: c-family/c.opt:2087
-#, fuzzy
--#| msgid "Specify ABI to use"
- msgid "Vector library ABI to use."
--msgstr "Spécifier l'ABI à utiliser"
-+msgstr "ABI de la bibliothèque vectorielle à utiliser."
+ msgid "Deprecated in favor of -std=gnu11."
+-msgstr "已弃用,请改用 -std=gnu99"
++msgstr "已弃用,请改用 -std=gnu11。"
- #: config/i386/i386.opt:541
- msgid "Known vectorization library ABIs (for use with the -mveclibabi= option):"
--msgstr ""
-+msgstr "ABI des bibliothèques vectorielles connues (à utiliser avec l'option -mveclibabi=):"
+ #: c-family/c.opt:2091 c-family/c.opt:2095
+ #, fuzzy
+@@ -8845,16 +8803,12 @@
+ msgstr "已弃用,为 -std=iso9899:1999 所取代"
- #: config/i386/i386.opt:551
+ #: c-family/c.opt:2150
-#, fuzzy
--#| msgid "Return floating point results in memory"
- msgid "Return 8-byte vectors in memory."
--msgstr "Le résultat retourné en virgule flottante se retrouve en mémoire."
-+msgstr "Retourner des vecteurs de 8 octets en mémoire."
+-#| msgid "Enable traditional preprocessing"
+ msgid "Enable traditional preprocessing."
+-msgstr "启用传统预处理"
++msgstr "启用传统预处理。"
- #: config/i386/i386.opt:555
- msgid "Generate reciprocals instead of divss and sqrtss."
--msgstr ""
-+msgstr "Générer des réciproques au lieu de divss et sqrtss."
-
- #: config/i386/i386.opt:559
- msgid "Control generation of reciprocal estimates."
--msgstr ""
-+msgstr "Contrôle la génération des estimations réciproques."
-
- #: config/i386/i386.opt:563
+ #: c-family/c.opt:2154
-#, fuzzy
--#| msgid "Do not move instructions into a function's prologue"
- msgid "Generate cld instruction in the function prologue."
--msgstr "Ne pas déplacer les instruction dans le prologue de fonction"
-+msgstr "Générer l'instruction cld dans le prologue de fonctions."
-
- #: config/i386/i386.opt:567
- msgid "Generate vzeroupper instruction before a transfer of control flow out of"
--msgstr ""
-+msgstr "Générer l'instruction vzeroupper avant un transfert du flux de contrôle hors d'une fonction."
-
- #: config/i386/i386.opt:572
- msgid "Disable Scalar to Vector optimization pass transforming 64-bit integer"
--msgstr ""
-+msgstr "Désactiver la passe d'optimisation de scalaires en vecteurs qui transforme les calculs sur des entiers de 64 bits en calculs sur des vecteurs."
+-#| msgid "-trigraphs\tSupport ISO C trigraphs"
+ msgid "-trigraphs\tSupport ISO C trigraphs."
+-msgstr "-trigraphs\t支持 ISO C 三元符"
++msgstr "-trigraphs\t支持 ISO C 三元符。"
- #: config/i386/i386.opt:577
- msgid "Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4"
--msgstr ""
-+msgstr "Effectuer le changement de contexte de l'ordonnanceur si le processeur est un bdver1, bdver2, bdver3, bdver4 ou znver1 et l'ordonnancement Haifa est sélectionné."
+ #: c-family/c.opt:2158
+ #, fuzzy
+@@ -9004,7 +8958,7 @@
- #: config/i386/i386.opt:582
- msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer."
+ #: d/lang.opt:242
+ msgid "Ignore unsupported pragmas."
-msgstr ""
-+msgstr "Utiliser les instructions AVX 128 bits au lieu des instructions AVX 256 bits dans le vectoriseur automatique."
-
- #: config/i386/i386.opt:588
--#, fuzzy
--#| msgid "Generate 32bit i386 code"
- msgid "Generate 32bit i386 code."
--msgstr "Générer du code 32 bits pour i386"
-+msgstr "Générer du code 32 bits pour i386."
-
- #: config/i386/i386.opt:592
--#, fuzzy
--#| msgid "Generate 64bit x86-64 code"
- msgid "Generate 64bit x86-64 code."
--msgstr "Générer du code 64 bits pour x86-64"
-+msgstr "Générer du code 64 bits pour x86-64."
-
- #: config/i386/i386.opt:596
--#, fuzzy
--#| msgid "Generate 32bit x86-64 code"
- msgid "Generate 32bit x86-64 code."
--msgstr "Générer du code 32 bits pour x86-64"
-+msgstr "Générer du code 32 bits pour x86-64."
-
- #: config/i386/i386.opt:600
--#, fuzzy
--#| msgid "Generate 16bit i386 code"
- msgid "Generate 16bit i386 code."
--msgstr "Générer du code 16 bits pour i386"
-+msgstr "Générer du code 16 bits pour i386."
-
- #: config/i386/i386.opt:604
--#, fuzzy
--#| msgid "Support MMX built-in functions"
- msgid "Support MMX built-in functions."
--msgstr "Supporte les fonctions internes MMX"
-+msgstr "Supporter les fonctions internes MMX."
++msgstr "忽略不支持的 pragma。"
- #: config/i386/i386.opt:608
--#, fuzzy
--#| msgid "Support 3DNow! built-in functions"
- msgid "Support 3DNow! built-in functions."
--msgstr "Supporte les fonctions internes 3DNOW!"
-+msgstr "Supporter les fonctions internes 3DNow!."
-
- #: config/i386/i386.opt:612
--#, fuzzy
--#| msgid "Support Athlon 3Dnow! built-in functions"
- msgid "Support Athlon 3Dnow! built-in functions."
--msgstr "Supporte les fonctions internes 3DNOW!"
-+msgstr "Supporter les fonctions internes 3DNow! de l'Athlon."
-
- #: config/i386/i386.opt:616
--#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support MMX and SSE built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes MMX et SSE et la génération de code."
-
- #: config/i386/i386.opt:620
--#, fuzzy
--#| msgid "Support MMX, SSE and SSE2 built-in functions and code generation"
- msgid "Support MMX, SSE and SSE2 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE et SSE2 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE et SSE2 et la génération de code."
-
- #: config/i386/i386.opt:624
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code."
-
- #: config/i386/i386.opt:628
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3 et SSSE3 et la génération de code."
+ #: d/lang.opt:246
+ #, fuzzy
+@@ -9272,7 +9226,7 @@
- #: config/i386/i386.opt:632
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3 et SSE4.1 et la génération de code."
+ #: config/linux-android.opt:23
+ msgid "Generate code for the Android platform."
+-msgstr "为 Android 操作系统生成代码。"
++msgstr "为 Android 平台生成代码。"
- #: config/i386/i386.opt:636 config/i386/i386.opt:640
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 et SSE4.2 et la génération de code."
+ #: config/mmix/mmix.opt:24
+ #, fuzzy
+@@ -9700,10 +9654,8 @@
+ msgstr "为 ColdFire v4e 生成代码"
- #: config/i386/i386.opt:644
+ #: config/m68k/m68k.opt:123
-#, fuzzy
--#| msgid "Do not support MMX, SSE and SSE2 built-in functions and code generation"
- msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation."
--msgstr "Ne supporte pas les fonctions internes MMX, SSE et SSE2 et la génération de code"
-+msgstr "Ne pas supporter les fonctions internes SSE4.1 et SSE4.2 et la génération de code."
+-#| msgid "Specify the target CPU"
+ msgid "Specify the target CPU."
+-msgstr "选择目标 CPU"
++msgstr "指定目标 CPU。"
- #: config/i386/i386.opt:647
- msgid "%<-msse5%> was removed"
--msgstr ""
-+msgstr "%<-msse5%> a été supprimé"
+ #: config/m68k/m68k.opt:127
+ #, fuzzy
+@@ -11831,10 +11783,8 @@
+ msgstr "为 TDA 区域合格的数据设置最大尺寸"
- #: config/i386/i386.opt:652
+ #: config/v850/v850.opt:82
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 et AVX et la génération de code."
+-#| msgid "Do not enforce strict alignment"
+ msgid "Do not enforce strict alignment."
+-msgstr "不强制严格对齐"
++msgstr "不强制严格对齐。"
- #: config/i386/i386.opt:656
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et AVX2 et la génération de code."
+ #: config/v850/v850.opt:86
+ #, fuzzy
+@@ -11842,22 +11792,16 @@
+ msgstr "置放跳跃式表格用于开关叙述进入.data 区段而非.code 区段"
- #: config/i386/i386.opt:660
+ #: config/v850/v850.opt:93
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX512F et la génération de code."
+-#| msgid "Compile for the v850 processor"
+ msgid "Compile for the v850 processor."
+-msgstr "为 v850 处理器编译"
++msgstr "为 v850 处理器编译。"
- #: config/i386/i386.opt:664
+ #: config/v850/v850.opt:97
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512PF et la génération de code."
+-#| msgid "Compile for the v850e processor"
+ msgid "Compile for the v850e processor."
+-msgstr "为 v850e 处理器编译"
++msgstr "为 v850e 处理器编译。"
- #: config/i386/i386.opt:668
+ #: config/v850/v850.opt:101
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512ER et la génération de code."
+-#| msgid "Compile for the v850e1 processor"
+ msgid "Compile for the v850e1 processor."
+-msgstr "为 v850e1 处理器编译"
++msgstr "为 v850e1 处理器编译。"
- #: config/i386/i386.opt:672
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512CD et la génération de code."
+ #: config/v850/v850.opt:105
+ #, fuzzy
+@@ -11866,21 +11810,16 @@
+ msgstr "为 v850e1 的 v850es 变种编译"
- #: config/i386/i386.opt:676
+ #: config/v850/v850.opt:109
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512DQ et la génération de code."
+-#| msgid "Compile for the v850e2 processor"
+ msgid "Compile for the v850e2 processor."
+-msgstr "为 v850e2 处理器编译"
++msgstr "为 v850e2 处理器编译。"
- #: config/i386/i386.opt:680
+ #: config/v850/v850.opt:113
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512BW et la génération de code."
+-#| msgid "Compile for the v850e2v3 processor"
+ msgid "Compile for the v850e2v3 processor."
+-msgstr "为 v850e2v3 处理器编译"
++msgstr "为 v850e2v3 处理器编译。"
- #: config/i386/i386.opt:684
+ #: config/v850/v850.opt:117
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VL et la génération de code."
+ msgid "Compile for the v850e3v5 processor."
+-msgstr "为 v850e2v3 处理器编译"
++msgstr "为 v850e2v3 处理器编译。"
- #: config/i386/i386.opt:688
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512IFMA et la génération de code."
+ #: config/v850/v850.opt:124
+ #, fuzzy
+@@ -11919,9 +11858,8 @@
+ msgstr "启用使用 RX FPU 指令。这是默认值。"
- #: config/i386/i386.opt:692
+ #: config/v850/v850.opt:155
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VBMI et la génération de code."
+ msgid "Enable support for the old GCC ABI."
+-msgstr "启用对巨型对象的支持"
++msgstr "启用对旧有 GCC ABI 的支持。"
- #: config/i386/i386.opt:696
--#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX et FMA et la génération de code."
+ #: config/v850/v850.opt:159
+ msgid "Support alignments of up to 64-bits."
+@@ -11940,26 +11878,20 @@
+ msgstr "支持传统多线程"
- #: config/i386/i386.opt:700
+ #: config/lynx.opt:27
-#, fuzzy
--#| msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation"
- msgid "Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX, SSE, SSE2 et SSE3 et la génération de code"
-+msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3 et SSE4A et la génération de code."
+-#| msgid "Use shared libraries"
+ msgid "Use shared libraries."
+-msgstr "使用共享库"
++msgstr "使用共享库。"
- #: config/i386/i386.opt:704
+ #: config/lynx.opt:31
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support FMA4 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes FMA4 et la génération de code."
+-#| msgid "Support multi-threading"
+ msgid "Support multi-threading."
+-msgstr "支持多线程"
++msgstr "支持多线程。"
- #: config/i386/i386.opt:708
+ #: config/nvptx/nvptx.opt:22 config/gcn/gcn.opt:47
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support XOP built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes XOP et la génération de code."
+ msgid "Generate code for a 32-bit ABI."
+-msgstr "生成 32 位 SHmedia 代码"
++msgstr "为 32 位 ABI 生成代码。"
- #: config/i386/i386.opt:712
+ #: config/nvptx/nvptx.opt:26 config/gcn/gcn.opt:51
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support LWP built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes LWP et la génération de code."
-
- #: config/i386/i386.opt:716
- msgid "Support code generation of Advanced Bit Manipulation (ABM) instructions."
--msgstr ""
-+msgstr "Supporter la génération de code des instructions ABM (Advanced Bit Manipulation)."
+ msgid "Generate code for a 64-bit ABI."
+-msgstr "生成 64 位代码"
++msgstr "为 64 位 ABI 生成代码。"
- #: config/i386/i386.opt:720
--#, fuzzy
--#| msgid "Do not generate single field mfcr instruction"
- msgid "Support code generation of popcnt instruction."
--msgstr "Ne pas générer des instructions à champ simple mfcr"
-+msgstr "Supporter la génération de code de l'instruction popcnt."
+ #: config/nvptx/nvptx.opt:30
+ #, fuzzy
+@@ -12034,9 +11966,8 @@
+ msgstr "对待数据参考作为接近,far 或中。中是缺省"
- #: config/i386/i386.opt:724
+ #: config/cr16/cr16.opt:42
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support BMI built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes BMI et la génération de code."
+ msgid "Generate code for CR16C architecture."
+-msgstr "为 Android 操作系统生成代码。"
++msgstr "为 CR16C 架构生成代码。"
- #: config/i386/i386.opt:728
--#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support BMI2 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes BMI2 et la génération de code."
+ #: config/cr16/cr16.opt:46
+ #, fuzzy
+@@ -12157,22 +12088,16 @@
+ msgstr ""
- #: config/i386/i386.opt:732
+ #: config/m32r/m32r.opt:34
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support LZCNT built-in function and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes LZCNT et la génération de code."
-
- #: config/i386/i386.opt:736
- msgid "Support Hardware Lock Elision prefixes."
--msgstr ""
-+msgstr "Supporter les préfixes pour l'élision matérielle des verrous (Hardware Lock Elision)."
+-#| msgid "Compile for the m32rx"
+ msgid "Compile for the m32rx."
+-msgstr "为 m32rx 编译"
++msgstr "为 m32rx 编译。"
- #: config/i386/i386.opt:740
+ #: config/m32r/m32r.opt:38
-#, fuzzy
--#| msgid "Support RDSEED instruction"
- msgid "Support RDSEED instruction."
--msgstr "Supporte l'instruction RDSEED"
-+msgstr "Supporter l'instruction RDSEED."
+-#| msgid "Compile for the m32r2"
+ msgid "Compile for the m32r2."
+-msgstr "为 m32r2 编译"
++msgstr "为 m32r2 编译。"
- #: config/i386/i386.opt:744
+ #: config/m32r/m32r.opt:42
-#, fuzzy
--#| msgid "Support PREFETCHW instruction"
- msgid "Support PREFETCHW instruction."
--msgstr "Supporte l'instruction PREFETCHW"
-+msgstr "Supporter l'instruction PREFETCHW."
+-#| msgid "Compile for the m32r"
+ msgid "Compile for the m32r."
+-msgstr "为 m32r 编译"
++msgstr "为 m32r 编译。"
- #: config/i386/i386.opt:748
--#, fuzzy
--#| msgid "Do not generate char instructions"
- msgid "Support flag-preserving add-carry instructions."
--msgstr "Ne pas générer des instructions « char »"
-+msgstr "Supporter les instructions de préservation du fanion de report de l'addition."
+ #: config/m32r/m32r.opt:46
+ #, fuzzy
+@@ -12259,16 +12184,12 @@
+ msgstr "指定 TPF-OS 的主对象"
- #: config/i386/i386.opt:752
+ #: config/s390/s390.opt:48
-#, fuzzy
--#| msgid "Support CLFLUSHOPT instructions"
- msgid "Support CLFLUSHOPT instructions."
--msgstr "Supporte les instructions CLFLUSHOPT"
-+msgstr "Supporter les instructions CLFLUSHOPT."
+-#| msgid "31 bit ABI"
+ msgid "31 bit ABI."
+-msgstr "31 位 ABI"
++msgstr "31 位 ABI。"
- #: config/i386/i386.opt:756
+ #: config/s390/s390.opt:52
-#, fuzzy
--#| msgid "Support CLWB instruction"
- msgid "Support CLWB instruction."
--msgstr "Supporte l'instruction CLWB"
-+msgstr "Supporter l'instruction CLWB."
+-#| msgid "64 bit ABI"
+ msgid "64 bit ABI."
+-msgstr "64 位 ABI"
++msgstr "64 位 ABI。"
- #: config/i386/i386.opt:760
--#, fuzzy
--#| msgid "Support PCOMMIT instruction"
- msgid "Support PCOMMIT instruction."
--msgstr "Supporte l'instruction PCOMMIT"
-+msgstr "Supporter l'instruction PCOMMIT."
+ #: config/s390/s390.opt:120
+ #, fuzzy
+@@ -12284,9 +12205,8 @@
- #: config/i386/i386.opt:764
--#, fuzzy
--#| msgid "Support FXSAVE and FXRSTOR instructions"
- msgid "Support FXSAVE and FXRSTOR instructions."
--msgstr "Supporte les instructions FXSAVE et FXRSTOR"
-+msgstr "Supporter les instructions FXSAVE et FXRSTOR."
+ #: config/s390/s390.opt:128
+ #, fuzzy
+-#| msgid "ESA/390 architecture"
+ msgid "ESA/390 architecture."
+-msgstr "ESA/390 结构"
++msgstr "ESA/390 结构。"
- #: config/i386/i386.opt:768
--#, fuzzy
--#| msgid "Support XSAVE and XRSTOR instructions"
- msgid "Support XSAVE and XRSTOR instructions."
--msgstr "Supporter les instructions XSAVE et XRSTOR"
-+msgstr "Supporter les instructions XSAVE et XRSTOR."
+ #: config/s390/s390.opt:132
+ #, fuzzy
+@@ -12739,9 +12659,8 @@
+ #: config/sparc/sparc.opt:30 config/sparc/sparc.opt:34
+ #: config/visium/visium.opt:37
+ #, fuzzy
+-#| msgid "Use hardware FP"
+ msgid "Use hardware FP."
+-msgstr "使用硬件浮点单元"
++msgstr "使用硬件浮点单元。"
- #: config/i386/i386.opt:772
--#, fuzzy
--#| msgid "Support XSAVEOPT instruction"
- msgid "Support XSAVEOPT instruction."
--msgstr "Supporte les instructions XSAVEOPT"
-+msgstr "Supporter l'instruction XSAVEOPT."
+ #: config/sparc/sparc.opt:38 config/visium/visium.opt:41
+ #, fuzzy
+@@ -12785,10 +12704,8 @@
+ msgstr "启用 clip 指令"
- #: config/i386/i386.opt:776
+ #: config/sparc/sparc.opt:66
-#, fuzzy
--#| msgid "Support XSAVEC instructions"
- msgid "Support XSAVEC instructions."
--msgstr "Supporte les instructions XSAVEC"
-+msgstr "Supporter les instructions XSAVEC."
+-#| msgid "Compile for V8+ ABI"
+ msgid "Compile for V8+ ABI."
+-msgstr "为 V8+ ABI 编译"
++msgstr "为 V8+ ABI 编译。"
- #: config/i386/i386.opt:780
--#, fuzzy
--#| msgid "Support XSAVES and XRSTORS instructions"
- msgid "Support XSAVES and XRSTORS instructions."
--msgstr "Supporte les instructions XSAVES et XRSTORS"
-+msgstr "Supporter les instructions XSAVES et XRSTORS."
+ #: config/sparc/sparc.opt:70
+ #, fuzzy
+@@ -12851,16 +12768,12 @@
+ msgstr "指针是 32 位"
- #: config/i386/i386.opt:784
+ #: config/sparc/sparc.opt:118
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support TBM built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes TBM et la génération de code."
+-#| msgid "Use 64-bit ABI"
+ msgid "Use 64-bit ABI."
+-msgstr "使用 64 位 ABI"
++msgstr "使用 64 位 ABI。"
- #: config/i386/i386.opt:788
+ #: config/sparc/sparc.opt:122
-#, fuzzy
--#| msgid "Do not generate single field mfcr instruction"
- msgid "Support code generation of cmpxchg16b instruction."
--msgstr "Ne pas générer des instructions à champ simple mfcr"
-+msgstr "Supporter la génération de code pour l'instruction cmpxchg16b."
+-#| msgid "Use 32-bit ABI"
+ msgid "Use 32-bit ABI."
+-msgstr "使用 32 位 ABI"
++msgstr "使用 32 位 ABI。"
- #: config/i386/i386.opt:792
- msgid "Support code generation of sahf instruction in 64bit x86-64 code."
--msgstr ""
-+msgstr "Supporter la génération de code pour l'instruction sahf dans le code x86-64 en 64 bit."
+ #: config/sparc/sparc.opt:126
+ #, fuzzy
+@@ -12967,10 +12880,8 @@
+ msgstr "为 32 位指针编译"
- #: config/i386/i386.opt:796
+ #: config/rs6000/aix64.opt:32 config/rs6000/linux64.opt:28
-#, fuzzy
--#| msgid "Do not generate single field mfcr instruction"
- msgid "Support code generation of movbe instruction."
--msgstr "Ne pas générer des instructions à champ simple mfcr"
-+msgstr "Supporter la génération de code pour l'instruction movbe."
+-#| msgid "Select code model"
+ msgid "Select code model."
+-msgstr "选择代码模型"
++msgstr "选择代码模型。"
- #: config/i386/i386.opt:800
--#, fuzzy
--#| msgid "Do not generate char instructions"
- msgid "Support code generation of crc32 instruction."
--msgstr "Ne pas générer des instructions « char »"
-+msgstr "Supporter la génération de code pour l'instruction crc32."
+ #: config/rs6000/aix64.opt:49
+ #, fuzzy
+@@ -13033,10 +12944,8 @@
+ msgstr "使用扩展 PowerPC V2.05 通用寄存器浮点转移指令"
- #: config/i386/i386.opt:804
+ #: config/rs6000/rs6000.opt:153
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support AES built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes AES et la génération de code."
+-#| msgid "Use AltiVec instructions"
+ msgid "Use AltiVec instructions."
+-msgstr "使用 AltiVec 指令"
++msgstr "使用 AltiVec 指令。"
- #: config/i386/i386.opt:808
--#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support SHA1 and SHA256 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes SHA1 et SHA256 et la génération de code."
+ #: config/rs6000/rs6000.opt:157
+ #, fuzzy
+@@ -13242,16 +13151,12 @@
+ msgstr "不使用位段指令"
- #: config/i386/i386.opt:812
+ #: config/rs6000/rs6000.opt:358
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support PCLMUL built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes PCLMUL et la génération de code."
+-#| msgid "Use the ELFv1 ABI"
+ msgid "Use the ELFv1 ABI."
+-msgstr "使用 ELFv1 ABI"
++msgstr "使用 ELFv1 ABI。"
- #: config/i386/i386.opt:816
- msgid "Encode SSE instructions with VEX prefix."
--msgstr ""
-+msgstr "Encoder les instructions SSE avec le préfixe VEX."
-
- #: config/i386/i386.opt:820
+ #: config/rs6000/rs6000.opt:362
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support FSGSBASE built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes FSGSBASE et la génération de code."
+-#| msgid "Use the ELFv2 ABI"
+ msgid "Use the ELFv2 ABI."
+-msgstr "使用 ELFv2 ABI"
++msgstr "使用 ELFv2 ABI。"
- #: config/i386/i386.opt:824
--#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support RDRND built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes RDRND et la génération de code."
+ #: config/rs6000/rs6000.opt:382
+ #, fuzzy
+@@ -13477,10 +13382,8 @@
+ msgstr "假设所有可变参数函数都有原型"
- #: config/i386/i386.opt:828
+ #: config/rs6000/sysv4.opt:103
-#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support F16C built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes F16C et la génération de code."
+-#| msgid "Use EABI"
+ msgid "Use EABI."
+-msgstr "使用 EABI"
++msgstr "使用 EABI。"
- #: config/i386/i386.opt:832
--#, fuzzy
--#| msgid "Support MMX and SSE built-in functions and code generation"
- msgid "Support PREFETCHWT1 built-in functions and code generation."
--msgstr "Supporte les fonctions internes MMX et SSE et la génération de code"
-+msgstr "Supporter les fonctions internes PREFETCHWT1 et la génération de code."
+ #: config/rs6000/sysv4.opt:107
+ #, fuzzy
+@@ -13776,10 +13679,8 @@
+ msgstr "使用除法指令"
- #: config/i386/i386.opt:836
+ #: config/or1k/or1k.opt:67
-#, fuzzy
--#| msgid "Call mcount for profiling after a function prologue"
- msgid "Emit profiling counter call at function entry before prologue."
--msgstr "Ne pas appeler mcount pour le profilage avant le prologue de la fonction"
-+msgstr "Émettre un appel au compteur de profilage avant le prologue lors de l'entrée dans une fonction."
-
- #: config/i386/i386.opt:840
- msgid "Generate __mcount_loc section with all mcount or __fentry__ calls."
--msgstr ""
-+msgstr "Générer une section __mcount_loc avec tous des appels à mcount ou __fentry__."
-
- #: config/i386/i386.opt:844
- msgid "Generate mcount/__fentry__ calls as nops. To activate they need to be"
--msgstr ""
-+msgstr "Générer les appels mcount/__fentry__ sous forme de nops. Pour les activer, il faut insérer les instructions réelles."
-
- #: config/i386/i386.opt:849
- msgid "Skip setting up RAX register when passing variable arguments."
--msgstr ""
-+msgstr "Passe outre la préparation du registre RAX lors du passage d'arguments variables."
-
- #: config/i386/i386.opt:853
- msgid "Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check."
--msgstr ""
-+msgstr "Remplacer les divisions entières sur 32 ou 64 bits par des divisions sur 8 bits non signées avec vérification à l'exécution."
-
- #: config/i386/i386.opt:857
- msgid "Split 32-byte AVX unaligned load."
--msgstr ""
-+msgstr "Scinder les chargements AVX non alignés de 32 octets"
-
- #: config/i386/i386.opt:861
- msgid "Split 32-byte AVX unaligned store."
--msgstr ""
-+msgstr "Scinder les stockages AVX non alignés de 32 octets."
+-#| msgid "Use the soft multiply emulation (default)"
+ msgid "Use multiply emulation."
+-msgstr "使用软件模拟乘法(默认)"
++msgstr "使用乘法模拟。"
- #: config/i386/i386.opt:865
+ #: config/nios2/elf.opt:26
#, fuzzy
-Index: gcc/po/ChangeLog
-===================================================================
---- a/src/gcc/po/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/po/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,25 @@
-+2017-01-02 Joseph Myers <joseph@codesourcery.com>
-+
-+ * es.po: Update.
-+
-+2016-12-30 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR translation/78745
-+ * exgettext: Handle multi-line help texts in *.opt files.
-+ * gcc.pot: Regenerate.
-+
-+2016-12-30 Joseph Myers <joseph@codesourcery.com>
-+
-+ * es.po, fr.po: Update.
-+
-+2016-12-27 Jakub Jelinek <jakub@redhat.com>
-+
-+ * gcc.pot: Regenerate.
-+
-+2016-12-22 Joseph Myers <joseph@codesourcery.com>
-+
-+ * es.po: Update.
-+
- 2016-12-21 Release Manager
-
- * GCC 6.3.0 released.
-Index: gcc/po/gcc.pot
-===================================================================
---- a/src/gcc/po/gcc.pot (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/po/gcc.pot (.../branches/gcc-6-branch)
-@@ -8,7 +8,7 @@
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
--"POT-Creation-Date: 2016-08-19 21:03+0000\n"
-+"POT-Creation-Date: 2016-12-30 20:16+0100\n"
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
- "Language-Team: LANGUAGE <LL@li.org>\n"
-@@ -98,7 +98,7 @@
- msgid "%s: some warnings being treated as errors"
- msgstr ""
-
--#: diagnostic.c:290 input.c:169 c-family/c-opts.c:1310 cp/error.c:1196
-+#: diagnostic.c:290 input.c:169 c-family/c-opts.c:1310 cp/error.c:1195
- #: fortran/cpp.c:576 fortran/error.c:996 fortran/error.c:1016
- msgid "<built-in>"
- msgstr ""
-@@ -188,13 +188,13 @@
- #. TARGET_PRINT_OPERAND must handle them.
- #. We can't handle floating point constants;
- #. PRINT_OPERAND must handle them.
--#: final.c:3940 config/arc/arc.c:4817 config/i386/i386.c:15968
-+#: final.c:3940 config/arc/arc.c:4817 config/i386/i386.c:16020
- #: config/pdp11/pdp11.c:1691
- #, c-format
- msgid "floating constant misused"
- msgstr ""
-
--#: final.c:3998 config/arc/arc.c:4889 config/i386/i386.c:16066
-+#: final.c:3998 config/arc/arc.c:4889 config/i386/i386.c:16118
- #: config/pdp11/pdp11.c:1732
- #, c-format
- msgid "invalid expression as operand"
-@@ -1077,7 +1077,7 @@
- msgid "GCSE disabled"
- msgstr ""
-
--#: gimple-ssa-isolate-paths.c:440 c/c-typeck.c:9773
-+#: gimple-ssa-isolate-paths.c:440 c/c-typeck.c:9783
- #, gcc-internal-format
- msgid "function returns address of local variable"
- msgstr ""
-@@ -1102,17 +1102,17 @@
- msgid "ignoring nonexistent directory \"%s\"\n"
- msgstr ""
-
--#: incpath.c:373
-+#: incpath.c:374
- #, c-format
- msgid "#include \"...\" search starts here:\n"
- msgstr ""
-
--#: incpath.c:377
-+#: incpath.c:378
- #, c-format
- msgid "#include <...> search starts here:\n"
- msgstr ""
-
--#: incpath.c:382
-+#: incpath.c:383
- #, c-format
- msgid "End of search list.\n"
- msgstr ""
-@@ -1141,25 +1141,25 @@
- msgid "At top level:"
- msgstr ""
-
--#: langhooks.c:393 cp/error.c:3315
-+#: langhooks.c:393 cp/error.c:3314
- #, c-format
- msgid "In member function %qs"
- msgstr ""
-
--#: langhooks.c:397 cp/error.c:3318
-+#: langhooks.c:397 cp/error.c:3317
- #, c-format
- msgid "In function %qs"
- msgstr ""
-
--#: langhooks.c:448 cp/error.c:3268
-+#: langhooks.c:448 cp/error.c:3267
- msgid " inlined from %qs at %r%s:%d:%d%R"
- msgstr ""
-
--#: langhooks.c:453 cp/error.c:3273
-+#: langhooks.c:453 cp/error.c:3272
- msgid " inlined from %qs at %r%s:%d%R"
- msgstr ""
-
--#: langhooks.c:459 cp/error.c:3279
-+#: langhooks.c:459 cp/error.c:3278
- #, c-format
- msgid " inlined from %qs"
- msgstr ""
-@@ -1184,7 +1184,7 @@
- msgid "this is the insn:"
- msgstr ""
-
--#: lra-constraints.c:3564 reload.c:3830
-+#: lra-constraints.c:3589 reload.c:3830
- msgid "unable to generate reloads for:"
- msgstr ""
-
-@@ -1397,8 +1397,8 @@
- msgid "options enabled: "
- msgstr ""
-
--#: tree-diagnostic.c:295 c/c-decl.c:5203 c/c-typeck.c:6818 cp/error.c:682
--#: cp/error.c:995 c-family/c-pretty-print.c:408
-+#: tree-diagnostic.c:295 c/c-decl.c:5203 c/c-typeck.c:6828 cp/error.c:682
-+#: cp/error.c:994 c-family/c-pretty-print.c:411
- #, gcc-internal-format
- msgid "<anonymous>"
- msgstr ""
-@@ -2929,8 +2929,8 @@
- msgid "<command-line>"
- msgstr ""
-
--#: config/aarch64/aarch64.c:4451 config/arm/arm.c:21959 config/arm/arm.c:21972
--#: config/arm/arm.c:21997 config/nios2/nios2.c:2642
-+#: config/aarch64/aarch64.c:4451 config/arm/arm.c:21958 config/arm/arm.c:21971
-+#: config/arm/arm.c:21996 config/nios2/nios2.c:2642
- #, c-format
- msgid "Unsupported operand for code '%c'"
- msgstr ""
-@@ -2949,7 +2949,7 @@
- msgid "incompatible floating point / vector register operand for '%%%c'"
- msgstr ""
-
--#: config/aarch64/aarch64.c:4627 config/arm/arm.c:22504
-+#: config/aarch64/aarch64.c:4627 config/arm/arm.c:22503
- #, c-format
- msgid "missing operand"
- msgstr ""
-@@ -2969,8 +2969,8 @@
- msgid "invalid operand prefix '%%%c'"
- msgstr ""
-
--#: config/alpha/alpha.c:5102 config/i386/i386.c:17140
--#: config/rs6000/rs6000.c:21150 config/sparc/sparc.c:8749
-+#: config/alpha/alpha.c:5102 config/i386/i386.c:17192
-+#: config/rs6000/rs6000.c:21180 config/sparc/sparc.c:8748
- #, c-format
- msgid "'%%&' used without any local dynamic TLS references"
- msgstr ""
-@@ -2986,18 +2986,18 @@
- msgstr ""
-
- #: config/alpha/alpha.c:5200 config/ia64/ia64.c:5436
--#: config/rs6000/rs6000.c:20830 config/xtensa/xtensa.c:2357
-+#: config/rs6000/rs6000.c:20860 config/xtensa/xtensa.c:2357
- #, c-format
- msgid "invalid %%R value"
- msgstr ""
-
--#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:20750
-+#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:20780
- #: config/xtensa/xtensa.c:2324
- #, c-format
- msgid "invalid %%N value"
- msgstr ""
-
--#: config/alpha/alpha.c:5214 config/rs6000/rs6000.c:20778
-+#: config/alpha/alpha.c:5214 config/rs6000/rs6000.c:20808
- #, c-format
- msgid "invalid %%P value"
- msgstr ""
-@@ -3028,7 +3028,7 @@
- msgstr ""
-
- #: config/alpha/alpha.c:5300 config/alpha/alpha.c:5311
--#: config/rs6000/rs6000.c:20838
-+#: config/rs6000/rs6000.c:20868
- #, c-format
- msgid "invalid %%s value"
- msgstr ""
-@@ -3038,7 +3038,7 @@
- msgid "invalid %%C value"
- msgstr ""
-
--#: config/alpha/alpha.c:5359 config/rs6000/rs6000.c:20614
-+#: config/alpha/alpha.c:5359 config/rs6000/rs6000.c:20644
- #, c-format
- msgid "invalid %%E value"
- msgstr ""
-@@ -3049,7 +3049,7 @@
- msgstr ""
-
- #: config/alpha/alpha.c:5393 config/cr16/cr16.c:1531
--#: config/rs6000/rs6000.c:21155 config/spu/spu.c:1446
-+#: config/rs6000/rs6000.c:21185 config/spu/spu.c:1446
- #, c-format
- msgid "invalid %%xn code"
- msgstr ""
-@@ -3102,7 +3102,7 @@
- #. Unknown flag.
- #. Undocumented flag.
- #: config/arc/arc.c:3312 config/epiphany/epiphany.c:1286
--#: config/m32r/m32r.c:2226 config/nds32/nds32.c:2291 config/sparc/sparc.c:8932
-+#: config/m32r/m32r.c:2226 config/nds32/nds32.c:2291 config/sparc/sparc.c:8931
- #, c-format
- msgid "invalid operand output code"
- msgstr ""
-@@ -3112,29 +3112,29 @@
- msgid "invalid UNSPEC as operand: %d"
- msgstr ""
-
--#: config/arm/arm.c:19018 config/arm/arm.c:19043 config/arm/arm.c:19053
--#: config/arm/arm.c:19062 config/arm/arm.c:19070
-+#: config/arm/arm.c:19013 config/arm/arm.c:19038 config/arm/arm.c:19048
-+#: config/arm/arm.c:19057 config/arm/arm.c:19065
- #, c-format
- msgid "invalid shift operand"
- msgstr ""
+@@ -66815,14 +66716,14 @@
+ msgstr "不包含子目录注释"
--#: config/arm/arm.c:21835 config/arm/arm.c:21853
-+#: config/arm/arm.c:21834 config/arm/arm.c:21852
- #, c-format
- msgid "predicated Thumb instruction"
- msgstr ""
-
--#: config/arm/arm.c:21841
-+#: config/arm/arm.c:21840
- #, c-format
- msgid "predicated instruction in conditional sequence"
- msgstr ""
-
--#: config/arm/arm.c:22074 config/arm/arm.c:22096 config/arm/arm.c:22106
--#: config/arm/arm.c:22116 config/arm/arm.c:22126 config/arm/arm.c:22165
--#: config/arm/arm.c:22183 config/arm/arm.c:22208 config/arm/arm.c:22223
--#: config/arm/arm.c:22250 config/arm/arm.c:22257 config/arm/arm.c:22275
--#: config/arm/arm.c:22282 config/arm/arm.c:22290 config/arm/arm.c:22311
--#: config/arm/arm.c:22318 config/arm/arm.c:22451 config/arm/arm.c:22458
--#: config/arm/arm.c:22485 config/arm/arm.c:22492 config/bfin/bfin.c:1436
-+#: config/arm/arm.c:22073 config/arm/arm.c:22095 config/arm/arm.c:22105
-+#: config/arm/arm.c:22115 config/arm/arm.c:22125 config/arm/arm.c:22164
-+#: config/arm/arm.c:22182 config/arm/arm.c:22207 config/arm/arm.c:22222
-+#: config/arm/arm.c:22249 config/arm/arm.c:22256 config/arm/arm.c:22274
-+#: config/arm/arm.c:22281 config/arm/arm.c:22289 config/arm/arm.c:22310
-+#: config/arm/arm.c:22317 config/arm/arm.c:22450 config/arm/arm.c:22457
-+#: config/arm/arm.c:22484 config/arm/arm.c:22491 config/bfin/bfin.c:1436
- #: config/bfin/bfin.c:1443 config/bfin/bfin.c:1450 config/bfin/bfin.c:1457
- #: config/bfin/bfin.c:1466 config/bfin/bfin.c:1473 config/bfin/bfin.c:1480
- #: config/bfin/bfin.c:1487
-@@ -3142,22 +3142,22 @@
- msgid "invalid operand for code '%c'"
- msgstr ""
-
--#: config/arm/arm.c:22178
-+#: config/arm/arm.c:22177
- #, c-format
- msgid "instruction never executed"
- msgstr ""
-
- #. Former Maverick support, removed after GCC-4.7.
--#: config/arm/arm.c:22199
-+#: config/arm/arm.c:22198
- #, c-format
- msgid "obsolete Maverick format code '%c'"
- msgstr ""
-
--#: config/arm/arm.c:23618
-+#: config/arm/arm.c:23617
- msgid "function parameters cannot have __fp16 type"
- msgstr ""
-
--#: config/arm/arm.c:23628
-+#: config/arm/arm.c:23627
- msgid "functions cannot return __fp16 type"
- msgstr ""
-
-@@ -3199,32 +3199,32 @@
- msgid "internal compiler error. Unknown mode:"
- msgstr ""
-
--#: config/avr/avr.c:3419 config/avr/avr.c:4349 config/avr/avr.c:4798
-+#: config/avr/avr.c:3455 config/avr/avr.c:4385 config/avr/avr.c:4834
- msgid "invalid insn:"
- msgstr ""
-
--#: config/avr/avr.c:3473 config/avr/avr.c:3578 config/avr/avr.c:3636
--#: config/avr/avr.c:3682 config/avr/avr.c:3701 config/avr/avr.c:3893
--#: config/avr/avr.c:4201 config/avr/avr.c:4485 config/avr/avr.c:4691
--#: config/avr/avr.c:4855 config/avr/avr.c:4949 config/avr/avr.c:5145
-+#: config/avr/avr.c:3509 config/avr/avr.c:3614 config/avr/avr.c:3672
-+#: config/avr/avr.c:3718 config/avr/avr.c:3737 config/avr/avr.c:3929
-+#: config/avr/avr.c:4237 config/avr/avr.c:4521 config/avr/avr.c:4727
-+#: config/avr/avr.c:4891 config/avr/avr.c:4985 config/avr/avr.c:5181
- msgid "incorrect insn:"
- msgstr ""
-
--#: config/avr/avr.c:3717 config/avr/avr.c:3992 config/avr/avr.c:4272
--#: config/avr/avr.c:4557 config/avr/avr.c:4737 config/avr/avr.c:5005
--#: config/avr/avr.c:5203
-+#: config/avr/avr.c:3753 config/avr/avr.c:4028 config/avr/avr.c:4308
-+#: config/avr/avr.c:4593 config/avr/avr.c:4773 config/avr/avr.c:5041
-+#: config/avr/avr.c:5239
- msgid "unknown move insn:"
- msgstr ""
+ #: fortran/scanner.c:336
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "Nonexistent include directory %qs"
+-msgstr "忽略不存在的目录“%s”\n"
++msgstr "不存在的 include 目录 %qs"
--#: config/avr/avr.c:5634
-+#: config/avr/avr.c:5670
- msgid "bad shift insn:"
- msgstr ""
+ #: fortran/scanner.c:341
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "%qs is not a directory"
+-msgstr "不是目录"
++msgstr "%qs 不是目录"
--#: config/avr/avr.c:5742 config/avr/avr.c:6223 config/avr/avr.c:6638
-+#: config/avr/avr.c:5778 config/avr/avr.c:6259 config/avr/avr.c:6674
- msgid "internal compiler error. Incorrect shift:"
- msgstr ""
+ #: fortran/scanner.c:744
+ #, fuzzy, gcc-internal-format, gfc-internal-format
+@@ -66893,9 +66794,9 @@
+ msgstr "%s:%d:无效的预处理指令"
--#: config/avr/avr.c:7975
-+#: config/avr/avr.c:8011
- msgid "unsupported fixed-point conversion"
- msgstr ""
+ #: fortran/scanner.c:2471
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "Cannot open file %qs"
+-msgstr "无法打开文件 %s\n"
++msgstr "无法打开文件 %qs"
-@@ -3256,7 +3256,7 @@
- #: config/cris/cris.c:612 config/ft32/ft32.c:104 config/moxie/moxie.c:103
- #: final.c:3407 final.c:3409 fold-const.c:271 gcc.c:5211 gcc.c:5225
- #: loop-iv.c:3043 loop-iv.c:3052 rtl-error.c:101 toplev.c:333
--#: tree-ssa-loop-niter.c:2328 tree-vrp.c:7480 cp/typeck.c:6065 java/expr.c:382
-+#: tree-ssa-loop-niter.c:2328 tree-vrp.c:7508 cp/typeck.c:6065 java/expr.c:382
- #: lto/lto-object.c:184 lto/lto-object.c:281 lto/lto-object.c:338
- #: lto/lto-object.c:362
+ #: fortran/simplify.c:92
#, gcc-internal-format, gfc-internal-format
-@@ -3477,63 +3477,63 @@
- msgid "bad output_condmove_single operand"
- msgstr ""
-
--#: config/i386/i386.c:16060
-+#: config/i386/i386.c:16112
- #, c-format
- msgid "invalid UNSPEC as operand"
- msgstr ""
-
--#: config/i386/i386.c:16764
-+#: config/i386/i386.c:16816
- #, c-format
- msgid "invalid operand size for operand code 'O'"
- msgstr ""
-
--#: config/i386/i386.c:16799
-+#: config/i386/i386.c:16851
- #, c-format
- msgid "invalid operand size for operand code 'z'"
- msgstr ""
-
--#: config/i386/i386.c:16869
-+#: config/i386/i386.c:16921
- #, c-format
- msgid "invalid operand type used with operand code 'Z'"
- msgstr ""
-
--#: config/i386/i386.c:16874
-+#: config/i386/i386.c:16926
- #, c-format
- msgid "invalid operand size for operand code 'Z'"
- msgstr ""
-
--#: config/i386/i386.c:16950
-+#: config/i386/i386.c:17002
- #, c-format
- msgid "operand is not a condition code, invalid operand code 'Y'"
- msgstr ""
-
--#: config/i386/i386.c:17023
-+#: config/i386/i386.c:17075
- #, c-format
- msgid "operand is not a condition code, invalid operand code 'D'"
- msgstr ""
-
--#: config/i386/i386.c:17040
-+#: config/i386/i386.c:17092
- #, c-format
- msgid "operand is not a condition code, invalid operand code '%c'"
- msgstr ""
-
--#: config/i386/i386.c:17053
-+#: config/i386/i386.c:17105
- #, c-format
- msgid ""
- "operand is not an offsettable memory reference, invalid operand code 'H'"
- msgstr ""
-
--#: config/i386/i386.c:17218
-+#: config/i386/i386.c:17270
- #, c-format
- msgid "invalid operand code '%c'"
- msgstr ""
-
--#: config/i386/i386.c:17276
-+#: config/i386/i386.c:17328
- #, c-format
- msgid "invalid constraints for operand"
- msgstr ""
-
--#: config/i386/i386.c:27754
-+#: config/i386/i386.c:27807
- msgid "unknown insn mode"
- msgstr ""
-
-@@ -3572,13 +3572,13 @@
- msgid "invalid operation on %<__fpreg%>"
- msgstr ""
-
--#: config/iq2000/iq2000.c:3135 config/tilegx/tilegx.c:5308
-+#: config/iq2000/iq2000.c:3135 config/tilegx/tilegx.c:5311
- #: config/tilepro/tilepro.c:4703
- #, c-format
- msgid "invalid %%P operand"
- msgstr ""
-
--#: config/iq2000/iq2000.c:3143 config/rs6000/rs6000.c:20768
-+#: config/iq2000/iq2000.c:3143 config/rs6000/rs6000.c:20798
- #, c-format
- msgid "invalid %%p value"
- msgstr ""
-@@ -3641,7 +3641,7 @@
- msgid "post-increment address is not a register"
- msgstr ""
-
--#: config/m32r/m32r.c:2328 config/m32r/m32r.c:2343 config/rs6000/rs6000.c:32640
-+#: config/m32r/m32r.c:2328 config/m32r/m32r.c:2343 config/rs6000/rs6000.c:32707
- msgid "bad address"
- msgstr ""
-
-@@ -3766,277 +3766,277 @@
- msgid "Try running '%s' in the shell to raise its limit.\n"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3959
-+#: config/rs6000/rs6000.c:3967
- msgid "-maltivec=le not allowed for big-endian targets"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3971
-+#: config/rs6000/rs6000.c:3979
- msgid "-mvsx requires hardware floating point"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3979
-+#: config/rs6000/rs6000.c:3987
- msgid "-mvsx and -mpaired are incompatible"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3981
-+#: config/rs6000/rs6000.c:3989
- msgid "-mvsx needs indexed addressing"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3986
-+#: config/rs6000/rs6000.c:3994
- msgid "-mvsx and -mno-altivec are incompatible"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3988
-+#: config/rs6000/rs6000.c:3996
- msgid "-mno-altivec disables vsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4129
-+#: config/rs6000/rs6000.c:4137
- msgid "-mquad-memory requires 64-bit mode"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4132
-+#: config/rs6000/rs6000.c:4140
- msgid "-mquad-memory-atomic requires 64-bit mode"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4144
-+#: config/rs6000/rs6000.c:4152
- msgid "-mquad-memory is not available in little endian mode"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4212
-+#: config/rs6000/rs6000.c:4220
- msgid "-mtoc-fusion requires 64-bit"
- msgstr ""
+@@ -69343,9 +69244,9 @@
+ msgstr "已弃用%<-mfused-madd%>;请改用%<-ffp-contract=%>"
--#: config/rs6000/rs6000.c:4219
-+#: config/rs6000/rs6000.c:4227
- msgid "-mtoc-fusion requires medium/large code model"
- msgstr ""
-
--#: config/rs6000/rs6000.c:9919
-+#: config/rs6000/rs6000.c:9949
- msgid "bad move"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20411
-+#: config/rs6000/rs6000.c:20441
- msgid "Bad 128-bit move"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20602
-+#: config/rs6000/rs6000.c:20632
- #, c-format
- msgid "invalid %%e value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20623
-+#: config/rs6000/rs6000.c:20653
- #, c-format
- msgid "invalid %%f value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20632
-+#: config/rs6000/rs6000.c:20662
- #, c-format
- msgid "invalid %%F value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20641
-+#: config/rs6000/rs6000.c:20671
- #, c-format
- msgid "invalid %%G value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20676
-+#: config/rs6000/rs6000.c:20706
- #, c-format
- msgid "invalid %%j code"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20686
-+#: config/rs6000/rs6000.c:20716
- #, c-format
- msgid "invalid %%J code"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20696
-+#: config/rs6000/rs6000.c:20726
- #, c-format
- msgid "invalid %%k value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20711 config/xtensa/xtensa.c:2343
-+#: config/rs6000/rs6000.c:20741 config/xtensa/xtensa.c:2343
- #, c-format
- msgid "invalid %%K value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20758
-+#: config/rs6000/rs6000.c:20788
- #, c-format
- msgid "invalid %%O value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20805
-+#: config/rs6000/rs6000.c:20835
- #, c-format
- msgid "invalid %%q value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20858
-+#: config/rs6000/rs6000.c:20888
- #, c-format
- msgid "invalid %%T value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20870
-+#: config/rs6000/rs6000.c:20900
- #, c-format
- msgid "invalid %%u value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20884 config/xtensa/xtensa.c:2313
-+#: config/rs6000/rs6000.c:20914 config/xtensa/xtensa.c:2313
- #, c-format
- msgid "invalid %%v value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:20951 config/xtensa/xtensa.c:2364
-+#: config/rs6000/rs6000.c:20981 config/xtensa/xtensa.c:2364
- #, c-format
- msgid "invalid %%x value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:21099
-+#: config/rs6000/rs6000.c:21129
- #, c-format
- msgid "invalid %%y value, try using the 'Z' constraint"
- msgstr ""
-
--#: config/rs6000/rs6000.c:21814
-+#: config/rs6000/rs6000.c:21844
- msgid "__float128 and __ibm128 cannot be used in the same expression"
- msgstr ""
-
--#: config/rs6000/rs6000.c:21820
-+#: config/rs6000/rs6000.c:21850
- msgid "__ibm128 and long double cannot be used in the same expression"
- msgstr ""
-
--#: config/rs6000/rs6000.c:21826
-+#: config/rs6000/rs6000.c:21856
- msgid "__float128 and long double cannot be used in the same expression"
- msgstr ""
-
--#: config/rs6000/rs6000.c:35706
-+#: config/rs6000/rs6000.c:35773
- msgid "AltiVec argument passed to unprototyped function"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37429
-+#: config/rs6000/rs6000.c:37496
- msgid "Could not generate addis value for fusion"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37501
-+#: config/rs6000/rs6000.c:37568
- msgid "Unable to generate load/store offset for fusion"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37605
-+#: config/rs6000/rs6000.c:37672
- msgid "Bad GPR fusion"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37823
-+#: config/rs6000/rs6000.c:37890
- msgid "emit_fusion_p9_load, bad reg #1"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37860
-+#: config/rs6000/rs6000.c:37936
- msgid "emit_fusion_p9_load, bad reg #2"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37863
-+#: config/rs6000/rs6000.c:37939
- msgid "emit_fusion_p9_load not MEM"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37901
-+#: config/rs6000/rs6000.c:37977
- msgid "emit_fusion_p9_store, bad reg #1"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37938
-+#: config/rs6000/rs6000.c:38023
- msgid "emit_fusion_p9_store, bad reg #2"
- msgstr ""
-
--#: config/rs6000/rs6000.c:37941
-+#: config/rs6000/rs6000.c:38026
- msgid "emit_fusion_p9_store not MEM"
- msgstr ""
-
--#: config/s390/s390.c:7168
-+#: config/s390/s390.c:7170
- #, c-format
- msgid "symbolic memory references are only supported on z10 or later"
- msgstr ""
-
--#: config/s390/s390.c:7179
-+#: config/s390/s390.c:7181
- #, c-format
- msgid "cannot decompose address"
- msgstr ""
-
--#: config/s390/s390.c:7248
-+#: config/s390/s390.c:7250
- #, c-format
- msgid "invalid comparison operator for 'E' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7271
-+#: config/s390/s390.c:7273
- #, c-format
- msgid "invalid reference for 'J' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7289
-+#: config/s390/s390.c:7291
- #, c-format
- msgid "invalid address for 'O' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7311
-+#: config/s390/s390.c:7313
- #, c-format
- msgid "invalid address for 'R' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7329
-+#: config/s390/s390.c:7331
- #, c-format
- msgid "memory reference expected for 'S' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7339
-+#: config/s390/s390.c:7341
- #, c-format
- msgid "invalid address for 'S' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7360
-+#: config/s390/s390.c:7362
- #, c-format
- msgid "register or memory expression expected for 'N' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7371
-+#: config/s390/s390.c:7373
- #, c-format
- msgid "register or memory expression expected for 'M' output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7456 config/s390/s390.c:7477
-+#: config/s390/s390.c:7458 config/s390/s390.c:7479
- #, c-format
- msgid "invalid constant for output modifier '%c'"
- msgstr ""
-
--#: config/s390/s390.c:7474
-+#: config/s390/s390.c:7476
- #, c-format
- msgid "invalid constant - try using an output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7515
-+#: config/s390/s390.c:7517
- #, c-format
- msgid "invalid constant vector for output modifier '%c'"
- msgstr ""
-
--#: config/s390/s390.c:7522
-+#: config/s390/s390.c:7524
- #, c-format
- msgid "invalid expression - try using an output modifier"
- msgstr ""
-
--#: config/s390/s390.c:7525
-+#: config/s390/s390.c:7527
- #, c-format
- msgid "invalid expression for output modifier '%c'"
- msgstr ""
-
--#: config/s390/s390.c:11377
-+#: config/s390/s390.c:11379
- msgid "Vector argument passed to unprototyped function"
- msgstr ""
-
--#: config/s390/s390.c:15036
-+#: config/s390/s390.c:15038
- msgid "types differ in signess"
- msgstr ""
-
--#: config/s390/s390.c:15046
-+#: config/s390/s390.c:15048
- msgid "binary operator does not support two vector bool operands"
- msgstr ""
-
--#: config/s390/s390.c:15049
-+#: config/s390/s390.c:15051
- msgid "binary operator does not support vector bool operand"
- msgstr ""
-
--#: config/s390/s390.c:15057
-+#: config/s390/s390.c:15059
- msgid ""
- "binary operator does not support mixing vector bool with floating point "
- "vector operands"
-@@ -4064,43 +4064,43 @@
- msgid "created and used with different endianness"
- msgstr ""
-
--#: config/sparc/sparc.c:8758 config/sparc/sparc.c:8764
-+#: config/sparc/sparc.c:8757 config/sparc/sparc.c:8763
- #, c-format
- msgid "invalid %%Y operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8834
-+#: config/sparc/sparc.c:8833
- #, c-format
- msgid "invalid %%A operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8844
-+#: config/sparc/sparc.c:8843
- #, c-format
- msgid "invalid %%B operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8873 config/tilegx/tilegx.c:5095
-+#: config/sparc/sparc.c:8872 config/tilegx/tilegx.c:5098
- #: config/tilepro/tilepro.c:4510
- #, c-format
- msgid "invalid %%C operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8890 config/tilegx/tilegx.c:5128
-+#: config/sparc/sparc.c:8889 config/tilegx/tilegx.c:5131
- #, c-format
- msgid "invalid %%D operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8906
-+#: config/sparc/sparc.c:8905
- #, c-format
- msgid "invalid %%f operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8918
-+#: config/sparc/sparc.c:8917
- #, c-format
- msgid "invalid %%s operand"
- msgstr ""
-
--#: config/sparc/sparc.c:8963
-+#: config/sparc/sparc.c:8962
- #, c-format
- msgid "floating-point constant not a valid immediate operand"
- msgstr ""
-@@ -4125,57 +4125,57 @@
- msgid "xstormy16_print_operand: unknown code"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5080 config/tilepro/tilepro.c:4495
-+#: config/tilegx/tilegx.c:5083 config/tilepro/tilepro.c:4495
- #, c-format
- msgid "invalid %%c operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5111
-+#: config/tilegx/tilegx.c:5114
- #, c-format
- msgid "invalid %%d operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5208
-+#: config/tilegx/tilegx.c:5211
- #, c-format
- msgid "invalid %%H specifier"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5250 config/tilepro/tilepro.c:4524
-+#: config/tilegx/tilegx.c:5253 config/tilepro/tilepro.c:4524
- #, c-format
- msgid "invalid %%h operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5262 config/tilepro/tilepro.c:4588
-+#: config/tilegx/tilegx.c:5265 config/tilepro/tilepro.c:4588
- #, c-format
- msgid "invalid %%I operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5274 config/tilepro/tilepro.c:4600
-+#: config/tilegx/tilegx.c:5277 config/tilepro/tilepro.c:4600
- #, c-format
- msgid "invalid %%i operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5295 config/tilepro/tilepro.c:4621
-+#: config/tilegx/tilegx.c:5298 config/tilepro/tilepro.c:4621
- #, c-format
- msgid "invalid %%j operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5326
-+#: config/tilegx/tilegx.c:5329
- #, c-format
- msgid "invalid %%%c operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5341 config/tilepro/tilepro.c:4735
-+#: config/tilegx/tilegx.c:5344 config/tilepro/tilepro.c:4735
- #, c-format
- msgid "invalid %%N operand"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5385
-+#: config/tilegx/tilegx.c:5388
- #, c-format
- msgid "invalid operand for 'r' specifier"
- msgstr ""
-
--#: config/tilegx/tilegx.c:5409 config/tilepro/tilepro.c:4816
-+#: config/tilegx/tilegx.c:5412 config/tilepro/tilepro.c:4816
- #, c-format
- msgid "unable to print out operand yet; code == %d (%c)"
- msgstr ""
-@@ -4303,7 +4303,7 @@
- #: c/c-parser.c:8938 c/c-parser.c:9119 c/c-parser.c:9899 c/c-parser.c:9969
- #: c/c-parser.c:10012 c/c-parser.c:14492 c/c-parser.c:14516 c/c-parser.c:14534
- #: c/c-parser.c:14747 c/c-parser.c:14790 c/c-parser.c:2950 c/c-parser.c:9112
--#: cp/parser.c:26388 cp/parser.c:26961
-+#: cp/parser.c:26403 cp/parser.c:26976
- #, gcc-internal-format
- msgid "expected %<;%>"
- msgstr ""
-@@ -4323,13 +4323,13 @@
- #: c/c-parser.c:12632 c/c-parser.c:12714 c/c-parser.c:12822 c/c-parser.c:12857
- #: c/c-parser.c:12905 c/c-parser.c:12963 c/c-parser.c:14694 c/c-parser.c:16640
- #: c/c-parser.c:16850 c/c-parser.c:17291 c/c-parser.c:17349 c/c-parser.c:17775
--#: c/c-parser.c:10969 cp/parser.c:24120 cp/parser.c:26964
-+#: c/c-parser.c:10969 cp/parser.c:24134 cp/parser.c:26979
- #, gcc-internal-format
- msgid "expected %<(%>"
- msgstr ""
-
- #: c/c-parser.c:2192 c/c-parser.c:7230 c/c-parser.c:7636 c/c-parser.c:7677
--#: c/c-parser.c:7813 cp/parser.c:26386 cp/parser.c:26979
-+#: c/c-parser.c:7813 cp/parser.c:26401 cp/parser.c:26994
- #, gcc-internal-format
- msgid "expected %<,%>"
- msgstr ""
-@@ -4356,7 +4356,7 @@
- #: c/c-parser.c:12876 c/c-parser.c:12924 c/c-parser.c:12932 c/c-parser.c:12967
- #: c/c-parser.c:14576 c/c-parser.c:14755 c/c-parser.c:14801 c/c-parser.c:16829
- #: c/c-parser.c:16906 c/c-parser.c:17327 c/c-parser.c:17411 c/c-parser.c:17784
--#: cp/parser.c:24152 cp/parser.c:27009
-+#: cp/parser.c:24166 cp/parser.c:27024
- #, gcc-internal-format
- msgid "expected %<)%>"
- msgstr ""
-@@ -4363,8 +4363,8 @@
-
- #: c/c-parser.c:3583 c/c-parser.c:4514 c/c-parser.c:4550 c/c-parser.c:6136
- #: c/c-parser.c:7744 c/c-parser.c:8102 c/c-parser.c:8251 c/c-parser.c:10656
--#: c/c-parser.c:17687 c/c-parser.c:17689 c/c-parser.c:18028 cp/parser.c:7024
--#: cp/parser.c:26973
-+#: c/c-parser.c:17687 c/c-parser.c:17689 c/c-parser.c:18028 cp/parser.c:7034
-+#: cp/parser.c:26988
- #, gcc-internal-format
- msgid "expected %<]%>"
- msgstr ""
-@@ -4373,13 +4373,13 @@
- msgid "expected %<;%>, %<,%> or %<)%>"
- msgstr ""
-
--#: c/c-parser.c:4372 c/c-parser.c:14517 cp/parser.c:26967 cp/parser.c:28889
-+#: c/c-parser.c:4372 c/c-parser.c:14517 cp/parser.c:26982 cp/parser.c:28904
- #, gcc-internal-format
- msgid "expected %<}%>"
- msgstr ""
-
- #: c/c-parser.c:4684 c/c-parser.c:9453 c/c-parser.c:15237 c/c-parser.c:2768
--#: c/c-parser.c:2971 c/c-parser.c:9007 cp/parser.c:17162 cp/parser.c:26970
-+#: c/c-parser.c:2971 c/c-parser.c:9007 cp/parser.c:17172 cp/parser.c:26985
- #, gcc-internal-format
- msgid "expected %<{%>"
- msgstr ""
-@@ -4388,7 +4388,7 @@
- #: c/c-parser.c:7278 c/c-parser.c:9218 c/c-parser.c:9601 c/c-parser.c:9662
- #: c/c-parser.c:10643 c/c-parser.c:11440 c/c-parser.c:11574 c/c-parser.c:11946
- #: c/c-parser.c:12038 c/c-parser.c:12666 c/c-parser.c:16697 c/c-parser.c:16753
--#: c/c-parser.c:11063 cp/parser.c:27003 cp/parser.c:28100 cp/parser.c:30758
-+#: c/c-parser.c:11063 cp/parser.c:27018 cp/parser.c:28115 cp/parser.c:30773
- #, gcc-internal-format
- msgid "expected %<:%>"
- msgstr ""
-@@ -4409,7 +4409,7 @@
- msgid "Cilk array notation cannot be used as a condition for while statement"
- msgstr ""
-
--#: c/c-parser.c:5656 cp/parser.c:26897
-+#: c/c-parser.c:5656 cp/parser.c:26912
- #, gcc-internal-format
- msgid "expected %<while%>"
- msgstr ""
-@@ -4427,39 +4427,39 @@
- msgid "expected %<.%>"
- msgstr ""
-
--#: c/c-parser.c:8678 c/c-parser.c:8710 c/c-parser.c:8950 cp/parser.c:28674
--#: cp/parser.c:28748
-+#: c/c-parser.c:8678 c/c-parser.c:8710 c/c-parser.c:8950 cp/parser.c:28689
-+#: cp/parser.c:28763
- #, gcc-internal-format
- msgid "expected %<@end%>"
- msgstr ""
-
--#: c/c-parser.c:9367 cp/parser.c:26988
-+#: c/c-parser.c:9367 cp/parser.c:27003
- #, gcc-internal-format
- msgid "expected %<>%>"
- msgstr ""
-
--#: c/c-parser.c:12116 c/c-parser.c:12880 cp/parser.c:27012
-+#: c/c-parser.c:12116 c/c-parser.c:12880 cp/parser.c:27027
- #, gcc-internal-format
- msgid "expected %<,%> or %<)%>"
- msgstr ""
-
- #: c/c-parser.c:14229 c/c-parser.c:14273 c/c-parser.c:14501 c/c-parser.c:14736
--#: c/c-parser.c:16891 c/c-parser.c:17513 c/c-parser.c:4573 cp/parser.c:26991
-+#: c/c-parser.c:16891 c/c-parser.c:17513 c/c-parser.c:4573 cp/parser.c:27006
- #, gcc-internal-format
- msgid "expected %<=%>"
- msgstr ""
-
--#: c/c-parser.c:15280 c/c-parser.c:15270 cp/parser.c:34132
-+#: c/c-parser.c:15280 c/c-parser.c:15270 cp/parser.c:34147
- #, gcc-internal-format
- msgid "expected %<#pragma omp section%> or %<}%>"
- msgstr ""
-
--#: c/c-parser.c:17675 c/c-parser.c:10602 cp/parser.c:26976 cp/parser.c:30031
-+#: c/c-parser.c:17675 c/c-parser.c:10602 cp/parser.c:26991 cp/parser.c:30046
- #, gcc-internal-format
- msgid "expected %<[%>"
- msgstr ""
-
--#: c/c-typeck.c:7405
-+#: c/c-typeck.c:7415
- msgid "(anonymous)"
- msgstr ""
-
-@@ -4471,11 +4471,11 @@
- msgid "candidate 2:"
- msgstr ""
-
--#: cp/decl2.c:778
-+#: cp/decl2.c:779
- msgid "candidates are: %+#D"
- msgstr ""
-
--#: cp/decl2.c:780
-+#: cp/decl2.c:781
- msgid "candidate is: %+#D"
- msgstr ""
-
-@@ -4519,43 +4519,43 @@
- msgid "(static destructors for %s)"
- msgstr ""
-
--#: cp/error.c:1063
-+#: cp/error.c:1062
- msgid "vtable for "
- msgstr ""
-
--#: cp/error.c:1087
-+#: cp/error.c:1086
- msgid "<return value> "
- msgstr ""
-
--#: cp/error.c:1102
-+#: cp/error.c:1101
- msgid "{anonymous}"
- msgstr ""
-
--#: cp/error.c:1104
-+#: cp/error.c:1103
- msgid "(anonymous namespace)"
- msgstr ""
-
--#: cp/error.c:1220
-+#: cp/error.c:1219
- msgid "<template arguments error>"
- msgstr ""
-
--#: cp/error.c:1242
-+#: cp/error.c:1241
- msgid "<enumerator>"
- msgstr ""
-
--#: cp/error.c:1282
-+#: cp/error.c:1281
- msgid "<declaration error>"
- msgstr ""
-
--#: cp/error.c:1819 cp/error.c:1839
-+#: cp/error.c:1818 cp/error.c:1838
- msgid "<template parameter error>"
- msgstr ""
-
--#: cp/error.c:1969
-+#: cp/error.c:1968
- msgid "<statement>"
- msgstr ""
+ #: config/microblaze/microblaze.opt:87
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "%qs is deprecated; use -fstack-check"
+-msgstr "已弃用%qE:%s"
++msgstr "%qs 已弃用;请换用 -fstack-check"
--#: cp/error.c:1996 cp/error.c:3043 c-family/c-pretty-print.c:2182
-+#: cp/error.c:1995 cp/error.c:3042 c-family/c-pretty-print.c:2185
+ #: config/microblaze/microblaze.opt:95
#, gcc-internal-format
- msgid "<unknown>"
- msgstr ""
-@@ -4562,134 +4562,134 @@
-
- #. While waiting for caret diagnostics, avoid printing
- #. __cxa_allocate_exception, __cxa_throw, and the like.
--#: cp/error.c:2014
-+#: cp/error.c:2013
- msgid "<throw-expression>"
- msgstr ""
-
--#: cp/error.c:2115
-+#: cp/error.c:2114
- msgid "<ubsan routine call>"
- msgstr ""
-
--#: cp/error.c:2572
-+#: cp/error.c:2571
- msgid "<unparsed>"
- msgstr ""
-
--#: cp/error.c:2723
-+#: cp/error.c:2722
- msgid "<lambda>"
- msgstr ""
-
--#: cp/error.c:2766
-+#: cp/error.c:2765
- msgid "*this"
- msgstr ""
-
--#: cp/error.c:2776
-+#: cp/error.c:2775
- msgid "<expression error>"
- msgstr ""
-
--#: cp/error.c:2791
-+#: cp/error.c:2790
- msgid "<unknown operator>"
- msgstr ""
-
--#: cp/error.c:3087
-+#: cp/error.c:3086
- msgid "{unknown}"
- msgstr ""
-
--#: cp/error.c:3199
-+#: cp/error.c:3198
- msgid "At global scope:"
- msgstr ""
-
--#: cp/error.c:3305
-+#: cp/error.c:3304
- #, c-format
- msgid "In static member function %qs"
- msgstr ""
-
--#: cp/error.c:3307
-+#: cp/error.c:3306
- #, c-format
- msgid "In copy constructor %qs"
- msgstr ""
-
--#: cp/error.c:3309
-+#: cp/error.c:3308
- #, c-format
- msgid "In constructor %qs"
- msgstr ""
-
--#: cp/error.c:3311
-+#: cp/error.c:3310
- #, c-format
- msgid "In destructor %qs"
- msgstr ""
-
--#: cp/error.c:3313
-+#: cp/error.c:3312
- msgid "In lambda function"
- msgstr ""
-
--#: cp/error.c:3333
-+#: cp/error.c:3332
- #, c-format
- msgid "%s: In substitution of %qS:\n"
- msgstr ""
-
--#: cp/error.c:3334
-+#: cp/error.c:3333
- msgid "%s: In instantiation of %q#D:\n"
- msgstr ""
-
--#: cp/error.c:3359
-+#: cp/error.c:3358
- msgid "%r%s:%d:%d:%R "
- msgstr ""
-
--#: cp/error.c:3362
-+#: cp/error.c:3361
- msgid "%r%s:%d:%R "
- msgstr ""
-
--#: cp/error.c:3370
-+#: cp/error.c:3369
- #, c-format
- msgid "recursively required by substitution of %qS\n"
- msgstr ""
-
--#: cp/error.c:3371
-+#: cp/error.c:3370
- #, c-format
- msgid "required by substitution of %qS\n"
- msgstr ""
-
--#: cp/error.c:3376
-+#: cp/error.c:3375
- msgid "recursively required from %q#D\n"
- msgstr ""
-
--#: cp/error.c:3377
-+#: cp/error.c:3376
- msgid "required from %q#D\n"
- msgstr ""
-
--#: cp/error.c:3384
-+#: cp/error.c:3383
- msgid "recursively required from here\n"
- msgstr ""
-
--#: cp/error.c:3385
-+#: cp/error.c:3384
- msgid "required from here\n"
- msgstr ""
-
--#: cp/error.c:3437
-+#: cp/error.c:3436
- msgid ""
- "%r%s:%d:%d:%R [ skipping %d instantiation contexts, use -ftemplate-"
- "backtrace-limit=0 to disable ]\n"
- msgstr ""
-
--#: cp/error.c:3443
-+#: cp/error.c:3442
- msgid ""
- "%r%s:%d:%R [ skipping %d instantiation contexts, use -ftemplate-backtrace-"
- "limit=0 to disable ]\n"
- msgstr ""
-
--#: cp/error.c:3497
-+#: cp/error.c:3496
- msgid "%r%s:%d:%d:%R in constexpr expansion of %qs"
- msgstr ""
-
--#: cp/error.c:3501
-+#: cp/error.c:3500
- msgid "%r%s:%d:%R in constexpr expansion of %qs"
- msgstr ""
-
--#: cp/pt.c:1945 cp/semantics.c:5217
-+#: cp/pt.c:1945 cp/semantics.c:5218
- msgid "candidates are:"
- msgstr ""
-
--#: cp/pt.c:21086
-+#: cp/pt.c:21090
- msgid "candidate is:"
- msgid_plural "candidates are:"
- msgstr[0] ""
-@@ -4812,17 +4812,17 @@
- msgid "elemental binary operation"
- msgstr ""
-
--#: fortran/check.c:2124 fortran/check.c:3115 fortran/check.c:3169
-+#: fortran/check.c:2131 fortran/check.c:3122 fortran/check.c:3176
- #, c-format
- msgid "arguments '%s' and '%s' for intrinsic %s"
- msgstr ""
-
--#: fortran/check.c:2921
-+#: fortran/check.c:2928
- #, c-format
- msgid "arguments 'a%d' and 'a%d' for intrinsic '%s'"
- msgstr ""
-
--#: fortran/check.c:3444 fortran/intrinsic.c:4290
-+#: fortran/check.c:3451 fortran/intrinsic.c:4291
- #, c-format
- msgid "arguments '%s' and '%s' for intrinsic '%s'"
- msgstr ""
-@@ -4871,79 +4871,79 @@
- msgid "Driving:"
- msgstr ""
-
--#: fortran/interface.c:3048 fortran/intrinsic.c:3994
-+#: fortran/interface.c:3060 fortran/intrinsic.c:3995
- msgid "actual argument to INTENT = OUT/INOUT"
- msgstr ""
-
--#: fortran/io.c:550
-+#: fortran/io.c:537
- msgid "Positive width required"
- msgstr ""
-
--#: fortran/io.c:551
-+#: fortran/io.c:538
- msgid "Nonnegative width required"
- msgstr ""
-
--#: fortran/io.c:552
-+#: fortran/io.c:539
- msgid "Unexpected element %qc in format string at %L"
- msgstr ""
-
--#: fortran/io.c:554
-+#: fortran/io.c:541
- msgid "Unexpected end of format string"
- msgstr ""
-
--#: fortran/io.c:555
-+#: fortran/io.c:542
- msgid "Zero width in format descriptor"
- msgstr ""
-
--#: fortran/io.c:575
-+#: fortran/io.c:562
- msgid "Missing leading left parenthesis"
- msgstr ""
-
--#: fortran/io.c:604
-+#: fortran/io.c:591
- msgid "Left parenthesis required after %<*%>"
- msgstr ""
-
--#: fortran/io.c:635
-+#: fortran/io.c:622
- msgid "Expected P edit descriptor"
- msgstr ""
-
- #. P requires a prior number.
--#: fortran/io.c:643
-+#: fortran/io.c:630
- msgid "P descriptor requires leading scale factor"
- msgstr ""
-
--#: fortran/io.c:736 fortran/io.c:750
-+#: fortran/io.c:723 fortran/io.c:737
- msgid "Comma required after P descriptor"
- msgstr ""
-
--#: fortran/io.c:764
-+#: fortran/io.c:751
- msgid "Positive width required with T descriptor"
- msgstr ""
-
--#: fortran/io.c:843
-+#: fortran/io.c:830
- msgid "E specifier not allowed with g0 descriptor"
- msgstr ""
-
--#: fortran/io.c:913
-+#: fortran/io.c:900
- msgid "Positive exponent width required"
- msgstr ""
-
--#: fortran/io.c:943
-+#: fortran/io.c:930
- msgid "Period required in format specifier"
- msgstr ""
-
--#: fortran/io.c:1570
-+#: fortran/io.c:1557
- #, c-format
- msgid "%s tag"
- msgstr ""
-
--#: fortran/io.c:2966
-+#: fortran/io.c:2953
- msgid "internal unit in WRITE"
- msgstr ""
-
- #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition
- #. contexts. Thus, use an extended RESOLVE_TAG macro for that.
--#: fortran/io.c:4185
-+#: fortran/io.c:4172
- #, c-format
- msgid "%s tag with INQUIRE"
- msgstr ""
-@@ -5025,39 +5025,39 @@
- msgid "Unexpected end of module"
- msgstr ""
-
--#: fortran/parse.c:1671
-+#: fortran/parse.c:1665
- msgid "arithmetic IF"
- msgstr ""
-
--#: fortran/parse.c:1680
-+#: fortran/parse.c:1674
- msgid "attribute declaration"
- msgstr ""
-
--#: fortran/parse.c:1716
-+#: fortran/parse.c:1710
- msgid "data declaration"
- msgstr ""
-
--#: fortran/parse.c:1734
-+#: fortran/parse.c:1728
- msgid "derived type declaration"
- msgstr ""
-
--#: fortran/parse.c:1846
-+#: fortran/parse.c:1840
- msgid "block IF"
- msgstr ""
-
--#: fortran/parse.c:1855
-+#: fortran/parse.c:1849
- msgid "implied END DO"
- msgstr ""
-
--#: fortran/parse.c:1949 fortran/resolve.c:10537
-+#: fortran/parse.c:1943 fortran/resolve.c:10575
- msgid "assignment"
- msgstr ""
-
--#: fortran/parse.c:1952 fortran/resolve.c:10588 fortran/resolve.c:10591
-+#: fortran/parse.c:1946 fortran/resolve.c:10626 fortran/resolve.c:10629
- msgid "pointer assignment"
- msgstr ""
-
--#: fortran/parse.c:1970
-+#: fortran/parse.c:1964
- msgid "simple IF"
- msgstr ""
-
-@@ -5211,47 +5211,47 @@
- msgid "Inconsistent ranks for operator at %%L and %%L"
- msgstr ""
-
--#: fortran/resolve.c:6476
-+#: fortran/resolve.c:6481
- msgid "Loop variable"
- msgstr ""
-
--#: fortran/resolve.c:6480
-+#: fortran/resolve.c:6485
- msgid "iterator variable"
- msgstr ""
-
--#: fortran/resolve.c:6484
-+#: fortran/resolve.c:6489
- msgid "Start expression in DO loop"
- msgstr ""
-
--#: fortran/resolve.c:6488
-+#: fortran/resolve.c:6493
- msgid "End expression in DO loop"
- msgstr ""
-
--#: fortran/resolve.c:6492
-+#: fortran/resolve.c:6497
- msgid "Step expression in DO loop"
- msgstr ""
-
--#: fortran/resolve.c:6749 fortran/resolve.c:6752
-+#: fortran/resolve.c:6754 fortran/resolve.c:6757
- msgid "DEALLOCATE object"
- msgstr ""
-
--#: fortran/resolve.c:7119 fortran/resolve.c:7122
-+#: fortran/resolve.c:7124 fortran/resolve.c:7127
- msgid "ALLOCATE object"
- msgstr ""
-
--#: fortran/resolve.c:7351 fortran/resolve.c:8798
-+#: fortran/resolve.c:7356 fortran/resolve.c:8815
- msgid "STAT variable"
- msgstr ""
-
--#: fortran/resolve.c:7395 fortran/resolve.c:8810
-+#: fortran/resolve.c:7400 fortran/resolve.c:8827
- msgid "ERRMSG variable"
- msgstr ""
-
--#: fortran/resolve.c:8640
-+#: fortran/resolve.c:8657
- msgid "item in READ"
- msgstr ""
-
--#: fortran/resolve.c:8822
-+#: fortran/resolve.c:8839
- msgid "ACQUIRED_LOCK variable"
- msgstr ""
-
-@@ -5264,7 +5264,7 @@
- msgid "Integer overflow when calculating the amount of memory to allocate"
- msgstr ""
+@@ -69356,9 +69257,9 @@
+ #: config/arc/arc.opt:349 config/arc/arc.opt:353 config/arc/arc.opt:357
+ #: config/arc/arc.opt:361 config/arc/arc.opt:364 config/arc/arc.opt:367
+ #: config/arc/arc.opt:384
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "%qs is deprecated"
+-msgstr "已弃用%qE"
++msgstr "%qs 已弃用"
--#: fortran/trans-decl.c:5503
-+#: fortran/trans-decl.c:5513
- #, c-format
- msgid ""
- "Actual string length does not match the declared one for dummy argument "
-@@ -5271,7 +5271,7 @@
- "'%s' (%ld/%ld)"
- msgstr ""
+ #: lto/lang.opt:28
+ #, fuzzy, gcc-internal-format
+@@ -69392,9 +69293,9 @@
+ msgstr "未知的栈重用级别%qs"
--#: fortran/trans-decl.c:5511
-+#: fortran/trans-decl.c:5521
- #, c-format
- msgid ""
- "Actual string length is shorter than the declared one for dummy argument "
-@@ -5278,12 +5278,12 @@
- "'%s' (%ld/%ld)"
- msgstr ""
+ #: common.opt:1777
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "unknown IRA algorithm %qs"
+-msgstr "未知的 TLS 模型%qs"
++msgstr "未知的 IRA 算法 %qs"
+
+ #: common.opt:1790
+ #, fuzzy, gcc-internal-format
+@@ -69435,7 +69336,7 @@
+ #: common.opt:2530
+ #, gcc-internal-format
+ msgid "unknown TLS model %qs"
+-msgstr "未知的 TLS 模型%qs"
++msgstr "未知的 TLS 模型 %qs"
+
+ #: common.opt:2862
+ #, fuzzy, gcc-internal-format
+Index: gcc/tree-ssa-forwprop.c
+===================================================================
+--- a/src/gcc/tree-ssa-forwprop.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-forwprop.c (.../branches/gcc-9-branch)
+@@ -2496,6 +2496,8 @@
+ {
+ int did_something;
+ did_something = forward_propagate_into_comparison (&gsi);
++ if (maybe_clean_or_replace_eh_stmt (stmt, gsi_stmt (gsi)))
++ bitmap_set_bit (to_purge, bb->index);
+ if (did_something == 2)
+ cfg_changed = true;
+ changed = did_something != 0;
+Index: gcc/ggc-page.c
+===================================================================
+--- a/src/gcc/ggc-page.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ggc-page.c (.../branches/gcc-9-branch)
+@@ -1016,6 +1016,8 @@
+ static void
+ release_pages (void)
+ {
++ size_t n1 = 0;
++ size_t n2 = 0;
+ #ifdef USING_MADVISE
+ page_entry *p, *start_p;
+ char *start;
+@@ -1061,6 +1063,7 @@
+ else
+ G.free_pages = p;
+ G.bytes_mapped -= mapped_len;
++ n1 += len;
+ continue;
+ }
+ prev = newprev;
+@@ -1092,6 +1095,7 @@
+ /* Don't count those pages as mapped to not touch the garbage collector
+ unnecessarily. */
+ G.bytes_mapped -= len;
++ n2 += len;
+ while (start_p != p)
+ {
+ start_p->discarded = true;
+@@ -1124,6 +1128,7 @@
+ }
--#: fortran/trans-expr.c:8170
-+#: fortran/trans-expr.c:8196
- #, c-format
- msgid "Target of rank remapping is too small (%ld < %ld)"
- msgstr ""
+ munmap (start, len);
++ n1 += len;
+ G.bytes_mapped -= len;
+ }
--#: fortran/trans-expr.c:9375
-+#: fortran/trans-expr.c:9401
- msgid "Assignment of scalar to unallocated array"
- msgstr ""
+@@ -1151,11 +1156,21 @@
+ {
+ *gp = g->next;
+ G.bytes_mapped -= g->alloc_size;
++ n1 += g->alloc_size;
+ free (g->allocation);
+ }
+ else
+ gp = &g->next;
+ #endif
++ if (!quiet_flag && (n1 || n2))
++ {
++ fprintf (stderr, " {GC");
++ if (n1)
++ fprintf (stderr, " released %luk", (unsigned long)(n1 / 1024));
++ if (n2)
++ fprintf (stderr, " madv_dontneed %luk", (unsigned long)(n2 / 1024));
++ fprintf (stderr, "}");
++ }
+ }
-@@ -5292,12 +5292,12 @@
- msgid "Unequal character lengths (%ld/%ld) in %s"
- msgstr ""
+ /* This table provides a fast way to determine ceil(log_2(size)) for
+@@ -2178,13 +2193,12 @@
+ return;
--#: fortran/trans-intrinsic.c:7002
-+#: fortran/trans-intrinsic.c:7015
- #, c-format
- msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
- msgstr ""
+ timevar_push (TV_GC);
+- if (!quiet_flag)
+- fprintf (stderr, " {GC %luk -> ", (unsigned long) G.allocated / 1024);
+ if (GGC_DEBUG_LEVEL >= 2)
+ fprintf (G.debug_file, "BEGIN COLLECTING\n");
--#: fortran/trans-intrinsic.c:7034
-+#: fortran/trans-intrinsic.c:7047
- msgid "Argument NCOPIES of REPEAT intrinsic is too large"
- msgstr ""
+ /* Zero the total allocated bytes. This will be recalculated in the
+ sweep phase. */
++ size_t allocated = G.allocated;
+ G.allocated = 0;
-@@ -5601,35 +5601,39 @@
- msgid "-E or -x required when input is from standard input"
- msgstr ""
+ /* Release the pages we freed the last time we collected, but didn't
+@@ -2191,6 +2205,10 @@
+ reuse in the interim. */
+ release_pages ();
--#: config/darwin.h:252
-+#: config/darwin.h:171
-+msgid "rdynamic is not supported"
-+msgstr ""
++ /* Output this later so we do not interfere with release_pages. */
++ if (!quiet_flag)
++ fprintf (stderr, " {GC %luk -> ", (unsigned long) allocated / 1024);
+
-+#: config/darwin.h:260
- msgid "-current_version only allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:254
-+#: config/darwin.h:262
- msgid "-install_name only allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:259
-+#: config/darwin.h:267
- msgid "-bundle not allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:260
-+#: config/darwin.h:268
- msgid "-bundle_loader not allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:261
-+#: config/darwin.h:269
- msgid "-client_name not allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:266
-+#: config/darwin.h:274
- msgid "-force_flat_namespace not allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:268
-+#: config/darwin.h:276
- msgid "-keep_private_externs not allowed with -dynamiclib"
- msgstr ""
-
--#: config/darwin.h:269
-+#: config/darwin.h:277
- msgid "-private_bundle not allowed with -dynamiclib"
- msgstr ""
-
-@@ -5814,2038 +5818,1824 @@
- "objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead"
- msgstr ""
-
--#: fortran/lang.opt:146
--msgid "-J<directory>\tPut MODULE files in 'directory'."
-+#: config/alpha/alpha.opt:23 config/i386/i386.opt:430
-+msgid "Do not use hardware fp."
- msgstr ""
-
--#: fortran/lang.opt:198
--msgid "Warn about possible aliasing of dummy arguments."
-+#: config/alpha/alpha.opt:27
-+msgid "Use fp registers."
- msgstr ""
-
--#: fortran/lang.opt:202
--msgid "Warn about alignment of COMMON blocks."
-+#: config/alpha/alpha.opt:31 common.opt:732 common.opt:920 common.opt:924
-+#: common.opt:928 common.opt:932 common.opt:1421 common.opt:1570
-+#: common.opt:1574 common.opt:1800 common.opt:1946 common.opt:2598
-+#: fortran/lang.opt:445
-+msgid "Does nothing. Preserved for backward compatibility."
- msgstr ""
-
--#: fortran/lang.opt:206
--msgid "Warn about missing ampersand in continued character constants."
-+#: config/alpha/alpha.opt:35
-+msgid "Request IEEE-conformant math library routines (OSF/1)."
- msgstr ""
-
--#: fortran/lang.opt:210
--msgid "Warn about creation of array temporaries."
-+#: config/alpha/alpha.opt:39
-+msgid "Emit IEEE-conformant code, without inexact exceptions."
- msgstr ""
-
--#: fortran/lang.opt:214
--msgid "Warn if the type of a variable might be not interoperable with C."
-+#: config/alpha/alpha.opt:46
-+msgid "Do not emit complex integer constants to read-only memory."
- msgstr ""
-
--#: fortran/lang.opt:222
--msgid "Warn about truncated character expressions."
-+#: config/alpha/alpha.opt:50
-+msgid "Use VAX fp."
- msgstr ""
-
--#: fortran/lang.opt:226
--msgid "Warn about equality comparisons involving REAL or COMPLEX expressions."
-+#: config/alpha/alpha.opt:54
-+msgid "Do not use VAX fp."
- msgstr ""
-
--#: fortran/lang.opt:234
--msgid "Warn about most implicit conversions."
-+#: config/alpha/alpha.opt:58
-+msgid "Emit code for the byte/word ISA extension."
- msgstr ""
-
--#: fortran/lang.opt:242
--msgid "Warn about function call elimination."
-+#: config/alpha/alpha.opt:62
-+msgid "Emit code for the motion video ISA extension."
- msgstr ""
-
--#: fortran/lang.opt:246
--msgid "Warn about calls with implicit interface."
-+#: config/alpha/alpha.opt:66
-+msgid "Emit code for the fp move and sqrt ISA extension."
- msgstr ""
-
--#: fortran/lang.opt:250
--msgid "Warn about called procedures not explicitly declared."
-+#: config/alpha/alpha.opt:70
-+msgid "Emit code for the counting ISA extension."
- msgstr ""
-
--#: fortran/lang.opt:254
--msgid "Warn about constant integer divisions with truncated results."
-+#: config/alpha/alpha.opt:74
-+msgid "Emit code using explicit relocation directives."
- msgstr ""
-
--#: fortran/lang.opt:258
--msgid "Warn about truncated source lines."
-+#: config/alpha/alpha.opt:78
-+msgid "Emit 16-bit relocations to the small data areas."
- msgstr ""
-
--#: fortran/lang.opt:262
--msgid "Warn on intrinsics not part of the selected standard."
-+#: config/alpha/alpha.opt:82
-+msgid "Emit 32-bit relocations to the small data areas."
- msgstr ""
-
--#: fortran/lang.opt:274
--msgid "Warn about USE statements that have no ONLY qualifier."
-+#: config/alpha/alpha.opt:86
-+msgid "Emit direct branches to local functions."
- msgstr ""
-
--#: fortran/lang.opt:286
--msgid "Warn about real-literal-constants with 'q' exponent-letter."
-+#: config/alpha/alpha.opt:90
-+msgid "Emit indirect branches to local functions."
- msgstr ""
-
--#: fortran/lang.opt:290
--msgid "Warn when a left-hand-side array variable is reallocated."
-+#: config/alpha/alpha.opt:94
-+msgid "Emit rdval instead of rduniq for thread pointer."
- msgstr ""
-
--#: fortran/lang.opt:294
--msgid "Warn when a left-hand-side variable is reallocated."
-+#: config/alpha/alpha.opt:98 config/s390/s390.opt:126 config/i386/i386.opt:202
-+#: config/sparc/long-double-switch.opt:23
-+msgid "Use 128-bit long double."
- msgstr ""
-
--#: fortran/lang.opt:298
--msgid "Warn if the pointer in a pointer assignment might outlive its target."
-+#: config/alpha/alpha.opt:102 config/s390/s390.opt:130 config/i386/i386.opt:198
-+#: config/sparc/long-double-switch.opt:27
-+msgid "Use 64-bit long double."
- msgstr ""
-
--#: fortran/lang.opt:306
--msgid "Warn about \"suspicious\" constructs."
-+#: config/alpha/alpha.opt:106
-+msgid "Use features of and schedule given CPU."
- msgstr ""
-
--#: fortran/lang.opt:310
--msgid "Permit nonconforming uses of the tab character."
-+#: config/alpha/alpha.opt:110
-+msgid "Schedule given CPU."
- msgstr ""
-
--#: fortran/lang.opt:314
--msgid "Warn about underflow of numerical constant expressions."
-+#: config/alpha/alpha.opt:114
-+msgid "Control the generated fp rounding mode."
- msgstr ""
-
--#: fortran/lang.opt:322
--msgid "Warn if a user-procedure has the same name as an intrinsic."
-+#: config/alpha/alpha.opt:118
-+msgid "Control the IEEE trap mode."
- msgstr ""
-
--#: fortran/lang.opt:330
--msgid "Warn about unused dummy arguments."
-+#: config/alpha/alpha.opt:122
-+msgid "Control the precision given to fp exceptions."
- msgstr ""
-
--#: fortran/lang.opt:334
--msgid "Warn about zero-trip DO loops."
-+#: config/alpha/alpha.opt:126
-+msgid "Tune expected memory latency."
- msgstr ""
-
--#: fortran/lang.opt:338
--msgid "Enable preprocessing."
-+#: config/alpha/alpha.opt:130 config/ia64/ia64.opt:118
-+#: config/rs6000/sysv4.opt:32
-+msgid "Specify bit size of immediate TLS offsets."
- msgstr ""
-
--#: fortran/lang.opt:346
--msgid "Disable preprocessing."
-+#: config/fused-madd.opt:22
-+msgid "%<-mfused-madd%> is deprecated; use %<-ffp-contract=%> instead"
- msgstr ""
-
--#: fortran/lang.opt:354
--msgid "Eliminate multiple function invokations also for impure functions."
-+#: config/mips/mips-tables.opt:24
-+msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
- msgstr ""
-
--#: fortran/lang.opt:358
--msgid "Enable alignment of COMMON blocks."
-+#: config/mips/mips-tables.opt:28
-+msgid "Known MIPS ISA levels (for use with the -mips option):"
- msgstr ""
-
--#: fortran/lang.opt:362
--msgid ""
--"All intrinsics procedures are available regardless of selected standard."
-+#: config/mips/mips.opt:32
-+msgid "-mabi=ABI\tGenerate code that conforms to the given ABI."
- msgstr ""
-
--#: fortran/lang.opt:370
--msgid ""
--"Do not treat local variables and COMMON blocks as if they were named in SAVE "
--"statements."
-+#: config/mips/mips.opt:36
-+msgid "Known MIPS ABIs (for use with the -mabi= option):"
- msgstr ""
-
--#: fortran/lang.opt:374
--msgid "Specify that backslash in string introduces an escape character."
-+#: config/mips/mips.opt:55
-+msgid "Generate code that can be used in SVR4-style dynamic objects."
- msgstr ""
-
--#: fortran/lang.opt:378
--msgid "Produce a backtrace when a runtime error is encountered."
-+#: config/mips/mips.opt:59
-+msgid "Use PMC-style 'mad' instructions."
- msgstr ""
-
--#: fortran/lang.opt:382
--msgid ""
--"-fblas-matmul-limit=<n>\tSize of the smallest matrix for which matmul will "
--"use BLAS."
-+#: config/mips/mips.opt:63
-+msgid "Use integer madd/msub instructions."
- msgstr ""
-
--#: fortran/lang.opt:386
--msgid ""
--"Produce a warning at runtime if a array temporary has been created for a "
--"procedure argument."
-+#: config/mips/mips.opt:67
-+msgid "-march=ISA\tGenerate code for the given ISA."
- msgstr ""
-
--#: fortran/lang.opt:390
-+#: config/mips/mips.opt:71
- msgid ""
--"-fconvert=<big-endian|little-endian|native|swap> The endianness used for "
--"unformatted files."
-+"-mbranch-cost=COST\tSet the cost of branches to roughly COST instructions."
- msgstr ""
-
--#: fortran/lang.opt:393
--#, c-format
--msgid "Unrecognized option to endianess value: %qs"
-+#: config/mips/mips.opt:75
-+msgid "Use Branch Likely instructions, overriding the architecture default."
- msgstr ""
-
--#: fortran/lang.opt:409
--msgid "Use the Cray Pointer extension."
-+#: config/mips/mips.opt:79
-+msgid "Switch on/off MIPS16 ASE on alternating functions for compiler testing."
- msgstr ""
-
--#: fortran/lang.opt:413
--msgid "Ignore 'D' in column one in fixed form."
-+#: config/mips/mips.opt:83
-+msgid "Trap on integer divide by zero."
- msgstr ""
-
--#: fortran/lang.opt:417
--msgid "Treat lines with 'D' in column one as comments."
-+#: config/mips/mips.opt:87
-+msgid ""
-+"-mcode-readable=SETTING\tSpecify when instructions are allowed to access "
-+"code."
- msgstr ""
-
--#: fortran/lang.opt:421
--msgid "Enable all DEC language extensions."
-+#: config/mips/mips.opt:91
-+msgid "Valid arguments to -mcode-readable=:"
- msgstr ""
-
--#: fortran/lang.opt:425
--msgid "Enable support for DEC STRUCTURE/RECORD."
-+#: config/mips/mips.opt:104
-+msgid "Use branch-and-break sequences to check for integer divide by zero."
- msgstr ""
-
--#: fortran/lang.opt:429
--msgid "Set the default double precision kind to an 8 byte wide type."
-+#: config/mips/mips.opt:108
-+msgid "Use trap instructions to check for integer divide by zero."
- msgstr ""
-
--#: fortran/lang.opt:433
--msgid "Set the default integer kind to an 8 byte wide type."
-+#: config/mips/mips.opt:112
-+msgid "Allow the use of MDMX instructions."
- msgstr ""
-
--#: fortran/lang.opt:437
--msgid "Set the default real kind to an 8 byte wide type."
-+#: config/mips/mips.opt:116
-+msgid ""
-+"Allow hardware floating-point instructions to cover both 32-bit and 64-bit "
-+"operations."
- msgstr ""
-
--#: fortran/lang.opt:441
--msgid "Allow dollar signs in entity names."
-+#: config/mips/mips.opt:120
-+msgid "Use MIPS-DSP instructions."
- msgstr ""
-
--#: fortran/lang.opt:445 config/alpha/alpha.opt:31 common.opt:732 common.opt:920
--#: common.opt:924 common.opt:928 common.opt:932 common.opt:1421 common.opt:1570
--#: common.opt:1574 common.opt:1800 common.opt:1946 common.opt:2598
--msgid "Does nothing. Preserved for backward compatibility."
-+#: config/mips/mips.opt:124
-+msgid "Use MIPS-DSP REV 2 instructions."
- msgstr ""
-
--#: fortran/lang.opt:449
--msgid "Display the code tree after parsing."
-+#: config/mips/mips.opt:134 config/c6x/c6x.opt:30 config/nios2/nios2.opt:94
-+#: config/tilegx/tilegx.opt:45 config/mep/mep.opt:82
-+msgid "Use big-endian byte order."
- msgstr ""
-
--#: fortran/lang.opt:453
--msgid "Display the code tree after front end optimization."
-+#: config/mips/mips.opt:138 config/c6x/c6x.opt:34 config/nios2/nios2.opt:98
-+#: config/tilegx/tilegx.opt:49 config/mep/mep.opt:86
-+msgid "Use little-endian byte order."
- msgstr ""
-
--#: fortran/lang.opt:457
--msgid "Display the code tree after parsing; deprecated option."
-+#: config/mips/mips.opt:142 config/iq2000/iq2000.opt:61
-+msgid "Use ROM instead of RAM."
- msgstr ""
-
--#: fortran/lang.opt:461
--msgid ""
--"Specify that an external BLAS library should be used for matmul calls on "
--"large-size arrays."
-+#: config/mips/mips.opt:146
-+msgid "Use Enhanced Virtual Addressing instructions."
- msgstr ""
-
--#: fortran/lang.opt:465
--msgid "Use f2c calling convention."
-+#: config/mips/mips.opt:150
-+msgid "Use NewABI-style %reloc() assembly operators."
- msgstr ""
-
--#: fortran/lang.opt:469
--msgid "Assume that the source file is fixed form."
-+#: config/mips/mips.opt:154
-+msgid "Use -G for data that is not defined by the current object."
- msgstr ""
-
--#: fortran/lang.opt:473
--msgid "Interpret any INTEGER(4) as an INTEGER(8)."
-+#: config/mips/mips.opt:158
-+msgid "Work around certain 24K errata."
- msgstr ""
-
--#: fortran/lang.opt:477 fortran/lang.opt:481
--msgid "Specify where to find the compiled intrinsic modules."
-+#: config/mips/mips.opt:162
-+msgid "Work around certain R4000 errata."
- msgstr ""
-
--#: fortran/lang.opt:485
--msgid "Allow arbitrary character line width in fixed mode."
-+#: config/mips/mips.opt:166
-+msgid "Work around certain R4400 errata."
- msgstr ""
-
--#: fortran/lang.opt:489
--msgid "-ffixed-line-length-<n>\tUse n as character line width in fixed mode."
-+#: config/mips/mips.opt:170
-+msgid "Work around certain RM7000 errata."
- msgstr ""
-
--#: fortran/lang.opt:493
--msgid "-ffpe-trap=[...]\tStop on following floating point exceptions."
-+#: config/mips/mips.opt:174
-+msgid "Work around certain R10000 errata."
- msgstr ""
-
--#: fortran/lang.opt:497
--msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
-+#: config/mips/mips.opt:178
-+msgid "Work around errata for early SB-1 revision 2 cores."
- msgstr ""
-
--#: fortran/lang.opt:501
--msgid "Assume that the source file is free form."
-+#: config/mips/mips.opt:182
-+msgid "Work around certain VR4120 errata."
- msgstr ""
-
--#: fortran/lang.opt:505
--msgid "Allow arbitrary character line width in free mode."
-+#: config/mips/mips.opt:186
-+msgid "Work around VR4130 mflo/mfhi errata."
- msgstr ""
-
--#: fortran/lang.opt:509
--msgid "-ffree-line-length-<n>\tUse n as character line width in free mode."
-+#: config/mips/mips.opt:190
-+msgid "Work around an early 4300 hardware bug."
- msgstr ""
-
--#: fortran/lang.opt:513
--msgid "Enable front end optimization."
-+#: config/mips/mips.opt:194
-+msgid "FP exceptions are enabled."
- msgstr ""
-
--#: fortran/lang.opt:517
--msgid ""
--"Specify that no implicit typing is allowed, unless overridden by explicit "
--"IMPLICIT statements."
-+#: config/mips/mips.opt:198
-+msgid "Use 32-bit floating-point registers."
- msgstr ""
-
--#: fortran/lang.opt:521
--msgid ""
--"-finit-character=<n>\tInitialize local character variables to ASCII value n."
-+#: config/mips/mips.opt:202
-+msgid "Conform to the o32 FPXX ABI."
- msgstr ""
-
--#: fortran/lang.opt:525
--msgid "-finit-integer=<n>\tInitialize local integer variables to n."
-+#: config/mips/mips.opt:206
-+msgid "Use 64-bit floating-point registers."
- msgstr ""
-
--#: fortran/lang.opt:529
--msgid "Initialize local variables to zero (from g77)."
-+#: config/mips/mips.opt:210
-+msgid ""
-+"-mflush-func=FUNC\tUse FUNC to flush the cache before calling stack "
-+"trampolines."
- msgstr ""
-
--#: fortran/lang.opt:533
--msgid "-finit-logical=<true|false>\tInitialize local logical variables."
-+#: config/mips/mips.opt:214
-+msgid "-mabs=MODE\tSelect the IEEE 754 ABS/NEG instruction execution mode."
- msgstr ""
-
--#: fortran/lang.opt:537
--msgid "-finit-real=<zero|snan|nan|inf|-inf>\tInitialize local real variables."
-+#: config/mips/mips.opt:218
-+msgid "-mnan=ENCODING\tSelect the IEEE 754 NaN data encoding."
- msgstr ""
-
--#: fortran/lang.opt:540
--#, c-format
--msgid "Unrecognized option to floating-point init value: %qs"
--msgstr ""
--
--#: fortran/lang.opt:559
-+#: config/mips/mips.opt:222
- msgid ""
--"-finline-matmul-limit=<n>\tSpecify the size of the largest matrix for which "
--"matmul will be inlined."
-+"Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):"
- msgstr ""
-
--#: fortran/lang.opt:563
--msgid ""
--"-fmax-array-constructor=<n>\tMaximum number of objects in an array "
--"constructor."
-+#: config/mips/mips.opt:232
-+msgid "Use 32-bit general registers."
- msgstr ""
-
--#: fortran/lang.opt:567
--msgid "-fmax-identifier-length=<n>\tMaximum identifier length."
-+#: config/mips/mips.opt:236
-+msgid "Use 64-bit general registers."
- msgstr ""
-
--#: fortran/lang.opt:571
--msgid "-fmax-subrecord-length=<n>\tMaximum length for subrecords."
-+#: config/mips/mips.opt:240
-+msgid "Use GP-relative addressing to access small data."
- msgstr ""
-
--#: fortran/lang.opt:575
-+#: config/mips/mips.opt:244
- msgid ""
--"-fmax-stack-var-size=<n>\tSize in bytes of the largest array that will be "
--"put on the stack."
-+"When generating -mabicalls code, allow executables to use PLTs and copy "
-+"relocations."
- msgstr ""
-
--#: fortran/lang.opt:579
--msgid "Put all local arrays on stack."
-+#: config/mips/mips.opt:248
-+msgid "Allow the use of hardware floating-point ABI and instructions."
- msgstr ""
-
--#: fortran/lang.opt:583
--msgid "Set default accessibility of module entities to PRIVATE."
-+#: config/mips/mips.opt:252
-+msgid "Generate code that is link-compatible with MIPS16 and microMIPS code."
- msgstr ""
-
--#: fortran/lang.opt:603
--msgid "Try to lay out derived types as compactly as possible."
-+#: config/mips/mips.opt:256
-+msgid "An alias for minterlink-compressed provided for backward-compatibility."
- msgstr ""
-
--#: fortran/lang.opt:611
--msgid "Protect parentheses in expressions."
-+#: config/mips/mips.opt:260
-+msgid "-mipsN\tGenerate code for ISA level N."
- msgstr ""
-
--#: fortran/lang.opt:615
--msgid "Enable range checking during compilation."
-+#: config/mips/mips.opt:264
-+msgid "Generate MIPS16 code."
- msgstr ""
-
--#: fortran/lang.opt:619
--msgid "Interpret any REAL(4) as a REAL(8)."
-+#: config/mips/mips.opt:268
-+msgid "Use MIPS-3D instructions."
- msgstr ""
-
--#: fortran/lang.opt:623
--msgid "Interpret any REAL(4) as a REAL(10)."
-+#: config/mips/mips.opt:272
-+msgid "Use ll, sc and sync instructions."
- msgstr ""
-
--#: fortran/lang.opt:627
--msgid "Interpret any REAL(4) as a REAL(16)."
-+#: config/mips/mips.opt:276
-+msgid "Use -G for object-local data."
- msgstr ""
-
--#: fortran/lang.opt:631
--msgid "Interpret any REAL(8) as a REAL(4)."
-+#: config/mips/mips.opt:280
-+msgid "Use indirect calls."
- msgstr ""
-
--#: fortran/lang.opt:635
--msgid "Interpret any REAL(8) as a REAL(10)."
-+#: config/mips/mips.opt:284
-+msgid "Use a 32-bit long type."
- msgstr ""
-
--#: fortran/lang.opt:639
--msgid "Interpret any REAL(8) as a REAL(16)."
-+#: config/mips/mips.opt:288
-+msgid "Use a 64-bit long type."
- msgstr ""
-
--#: fortran/lang.opt:643
--msgid "Reallocate the LHS in assignments."
-+#: config/mips/mips.opt:292
-+msgid "Pass the address of the ra save location to _mcount in $12."
- msgstr ""
-
--#: fortran/lang.opt:647
--msgid "Use a 4-byte record marker for unformatted files."
-+#: config/mips/mips.opt:296
-+msgid "Don't optimize block moves."
- msgstr ""
-
--#: fortran/lang.opt:651
--msgid "Use an 8-byte record marker for unformatted files."
-+#: config/mips/mips.opt:300
-+msgid "Use microMIPS instructions."
- msgstr ""
-
--#: fortran/lang.opt:655
--msgid "Allocate local variables on the stack to allow indirect recursion."
-+#: config/mips/mips.opt:304
-+msgid "Allow the use of MT instructions."
- msgstr ""
-
--#: fortran/lang.opt:659
--msgid "Copy array sections into a contiguous block on procedure entry."
-+#: config/mips/mips.opt:308
-+msgid "Prevent the use of all floating-point operations."
- msgstr ""
-
--#: fortran/lang.opt:663
--msgid ""
--"-fcoarray=<none|single|lib>\tSpecify which coarray parallelization should be "
--"used."
-+#: config/mips/mips.opt:312
-+msgid "Use MCU instructions."
- msgstr ""
-
--#: fortran/lang.opt:666
--#, c-format
--msgid "Unrecognized option: %qs"
-+#: config/mips/mips.opt:316
-+msgid "Do not use a cache-flushing function before calling stack trampolines."
- msgstr ""
-
--#: fortran/lang.opt:679
--msgid "-fcheck=[...]\tSpecify which runtime checks are to be performed."
-+#: config/mips/mips.opt:320
-+msgid "Do not use MDMX instructions."
- msgstr ""
-
--#: fortran/lang.opt:683
--msgid "Append a second underscore if the name already contains an underscore."
-+#: config/mips/mips.opt:324
-+msgid "Generate normal-mode code."
- msgstr ""
-
--#: fortran/lang.opt:691
--msgid "Apply negative sign to zero values."
-+#: config/mips/mips.opt:328
-+msgid "Do not use MIPS-3D instructions."
- msgstr ""
-
--#: fortran/lang.opt:695
--msgid "Append underscores to externally visible names."
-+#: config/mips/mips.opt:332
-+msgid "Use paired-single floating-point instructions."
- msgstr ""
-
--#: fortran/lang.opt:699 c-family/c.opt:1155 c-family/c.opt:1179
--#: c-family/c.opt:1409 config/pa/pa.opt:42 config/pa/pa.opt:66
--#: config/sh/sh.opt:213 common.opt:1074 common.opt:1301 common.opt:1653
--#: common.opt:1999 common.opt:2035 common.opt:2124 common.opt:2128
--#: common.opt:2224 common.opt:2306 common.opt:2314 common.opt:2322
--#: common.opt:2330 common.opt:2431 common.opt:2558
--msgid "Does nothing. Preserved for backward compatibility."
-+#: config/mips/mips.opt:336
-+msgid ""
-+"-mr10k-cache-barrier=SETTING\tSpecify when r10k cache barriers should be "
-+"inserted."
- msgstr ""
-
--#: fortran/lang.opt:739
--msgid "Statically link the GNU Fortran helper library (libgfortran)."
-+#: config/mips/mips.opt:340
-+msgid "Valid arguments to -mr10k-cache-barrier=:"
- msgstr ""
-
--#: fortran/lang.opt:743
--msgid "Conform to the ISO Fortran 2003 standard."
-+#: config/mips/mips.opt:353
-+msgid "Try to allow the linker to turn PIC calls into direct calls."
- msgstr ""
-
--#: fortran/lang.opt:747
--msgid "Conform to the ISO Fortran 2008 standard."
-+#: config/mips/mips.opt:357
-+msgid ""
-+"When generating -mabicalls code, make the code suitable for use in shared "
-+"libraries."
- msgstr ""
-
--#: fortran/lang.opt:751
--msgid "Conform to the ISO Fortran 2008 standard including TS 29113."
-+#: config/mips/mips.opt:361
-+msgid ""
-+"Restrict the use of hardware floating-point instructions to 32-bit "
-+"operations."
- msgstr ""
-
--#: fortran/lang.opt:755
--msgid "Conform to the ISO Fortran 95 standard."
-+#: config/mips/mips.opt:365
-+msgid "Use SmartMIPS instructions."
- msgstr ""
-
--#: fortran/lang.opt:759
--msgid "Conform to nothing in particular."
-+#: config/mips/mips.opt:369
-+msgid "Prevent the use of all hardware floating-point instructions."
- msgstr ""
-
--#: fortran/lang.opt:763
--msgid "Accept extensions to support legacy code."
-+#: config/mips/mips.opt:373
-+msgid "Optimize lui/addiu address loads."
- msgstr ""
-
--#: c-family/c.opt:43 c-family/c.opt:46 c-family/c.opt:181
--#, c-format
--msgid "assertion missing after %qs"
-+#: config/mips/mips.opt:377
-+msgid "Assume all symbols have 32-bit values."
- msgstr ""
-
--#: c-family/c.opt:55 c-family/c.opt:58 c-family/c.opt:163 c-family/c.opt:166
--#: c-family/c.opt:193 c-family/c.opt:252
--#, c-format
--msgid "macro name missing after %qs"
-+#: config/mips/mips.opt:381
-+msgid "Use synci instruction to invalidate i-cache."
- msgstr ""
-
--#: c-family/c.opt:70 c-family/c.opt:73 c-family/c.opt:76 c-family/c.opt:79
--#: c-family/c.opt:175 c-family/c.opt:178 c-family/c.opt:216 c-family/c.opt:220
--#: c-family/c.opt:232 c-family/c.opt:1601 c-family/c.opt:1609
--#: config/darwin.opt:53 common.opt:336 common.opt:339 common.opt:2813
--#, c-format
--msgid "missing filename after %qs"
-+#: config/mips/mips.opt:385 config/s390/s390.opt:201 config/ft32/ft32.opt:27
-+msgid "Use LRA instead of reload."
- msgstr ""
-
--#: c-family/c.opt:85 c-family/c.opt:88 c-family/c.opt:91 c-family/c.opt:94
--#: c-family/c.opt:200 c-family/c.opt:208 c-family/c.opt:1597
--#: c-family/c.opt:1617 c-family/c.opt:1621 c-family/c.opt:1625
--#, c-format
--msgid "missing path after %qs"
-+#: config/mips/mips.opt:389
-+msgid "-mtune=PROCESSOR\tOptimize the output for PROCESSOR."
- msgstr ""
-
--#: c-family/c.opt:182
--msgid ""
--"-A<question>=<answer>\tAssert the <answer> to <question>. Putting '-' "
--"before <question> disables the <answer> to <question>."
-+#: config/mips/mips.opt:393 config/iq2000/iq2000.opt:74
-+msgid "Put uninitialized constants in ROM (needs -membedded-data)."
- msgstr ""
-
--#: c-family/c.opt:186
--msgid "Do not discard comments."
-+#: config/mips/mips.opt:397
-+msgid "Use Virtualization Application Specific instructions."
- msgstr ""
-
--#: c-family/c.opt:190
--msgid "Do not discard comments in macro expansions."
-+#: config/mips/mips.opt:401
-+msgid "Use eXtended Physical Address (XPA) instructions."
- msgstr ""
-
--#: c-family/c.opt:194
--msgid ""
--"-D<macro>[=<val>]\tDefine a <macro> with <val> as its value. If just "
--"<macro> is given, <val> is taken to be 1."
-+#: config/mips/mips.opt:405
-+msgid "Perform VR4130-specific alignment optimizations."
- msgstr ""
-
--#: c-family/c.opt:201
--msgid "-F <dir>\tAdd <dir> to the end of the main framework include path."
-+#: config/mips/mips.opt:409
-+msgid "Lift restrictions on GOT size."
- msgstr ""
-
--#: c-family/c.opt:205
--msgid "Print the name of header files as they are used."
-+#: config/mips/mips.opt:413
-+msgid "Enable use of odd-numbered single-precision registers."
- msgstr ""
+ /* Indicate that we've seen collections at this context depth. */
+ G.context_depth_collections = ((unsigned long)1 << (G.context_depth + 1)) - 1;
--#: c-family/c.opt:209
--msgid "-I <dir>\tAdd <dir> to the end of the main include path."
-+#: config/mips/mips.opt:417
-+msgid "Optimize frame header."
- msgstr ""
-
--#: c-family/c.opt:213
--msgid "Generate make dependencies."
-+#: config/mips/mips.opt:424
-+msgid "Enable load/store bonding."
- msgstr ""
-
--#: c-family/c.opt:217
--msgid "Generate make dependencies and compile."
-+#: config/mips/mips.opt:428
-+msgid "Specify the compact branch usage policy."
- msgstr ""
-
--#: c-family/c.opt:221
--msgid "-MF <file>\tWrite dependency output to the given file."
-+#: config/mips/mips.opt:432
-+msgid "Policies available for use with -mcompact-branches=:"
- msgstr ""
-
--#: c-family/c.opt:225
--msgid "Treat missing header files as generated files."
-+#: config/visium/visium.opt:25
-+msgid "Link with libc.a and libdebug.a."
- msgstr ""
-
--#: c-family/c.opt:229
--msgid "Like -M but ignore system header files."
-+#: config/visium/visium.opt:29
-+msgid "Link with libc.a and libsim.a."
- msgstr ""
-
--#: c-family/c.opt:233
--msgid "Like -MD but ignore system header files."
-+#: config/visium/visium.opt:33
-+msgid "Use hardware FP (default)."
- msgstr ""
-
--#: c-family/c.opt:237
--msgid "Generate phony targets for all headers."
-+#: config/visium/visium.opt:37 config/sparc/sparc.opt:30
-+#: config/sparc/sparc.opt:34
-+msgid "Use hardware FP."
- msgstr ""
-
--#: c-family/c.opt:240 c-family/c.opt:244
--#, c-format
--msgid "missing makefile target after %qs"
-+#: config/visium/visium.opt:41 config/sparc/sparc.opt:38
-+msgid "Do not use hardware FP."
- msgstr ""
-
--#: c-family/c.opt:241
--msgid "-MQ <target>\tAdd a MAKE-quoted target."
-+#: config/visium/visium.opt:45 config/sparc/sparc.opt:126
-+msgid "Use features of and schedule code for given CPU."
- msgstr ""
-
--#: c-family/c.opt:245
--msgid "-MT <target>\tAdd an unquoted target."
-+#: config/visium/visium.opt:49 config/spu/spu.opt:84 config/s390/s390.opt:170
-+#: config/i386/i386.opt:504 config/sparc/sparc.opt:130 config/ia64/ia64.opt:122
-+msgid "Schedule code for given CPU."
- msgstr ""
-
--#: c-family/c.opt:249
--msgid "Do not generate #line directives."
-+#: config/visium/visium.opt:65
-+msgid "Generate code for the supervisor mode (default)."
- msgstr ""
-
--#: c-family/c.opt:253
--msgid "-U<macro>\tUndefine <macro>."
-+#: config/visium/visium.opt:69
-+msgid "Generate code for the user mode."
- msgstr ""
-
--#: c-family/c.opt:257
--msgid ""
--"Warn about things that will change when compiling with an ABI-compliant "
--"compiler."
-+#: config/visium/visium.opt:73
-+msgid "Only retained for backward compatibility."
- msgstr ""
-
--#: c-family/c.opt:261
--msgid ""
--"Warn about things that change between the current -fabi-version and the "
--"specified version."
-+#: config/epiphany/epiphany.opt:24
-+msgid "Don't use any of r32..r63."
- msgstr ""
-
--#: c-family/c.opt:265
-+#: config/epiphany/epiphany.opt:28
- msgid ""
--"Warn if a subobject has an abi_tag attribute that the complete object type "
--"does not have."
-+"preferentially allocate registers that allow short instruction generation."
- msgstr ""
-
--#: c-family/c.opt:272
--msgid "Warn about suspicious uses of memory addresses."
-+#: config/epiphany/epiphany.opt:32
-+msgid "Set branch cost."
- msgstr ""
-
--#: c-family/c.opt:276 ada/gcc-interface/lang.opt:57
--msgid "Enable most warning messages."
-+#: config/epiphany/epiphany.opt:36
-+msgid "enable conditional move instruction usage."
- msgstr ""
-
--#: c-family/c.opt:288
--msgid ""
--"Warn whenever an Objective-C assignment is being intercepted by the garbage "
--"collector."
-+#: config/epiphany/epiphany.opt:40
-+msgid "set number of nops to emit before each insn pattern."
- msgstr ""
-
--#: c-family/c.opt:292
--msgid "Warn about casting functions to incompatible types."
-+#: config/epiphany/epiphany.opt:52
-+msgid "Use software floating point comparisons."
- msgstr ""
-
--#: c-family/c.opt:296
--msgid ""
--"Warn about boolean expression compared with an integer value different from "
--"true/false."
-+#: config/epiphany/epiphany.opt:56
-+msgid "Enable split of 32 bit immediate loads into low / high part."
- msgstr ""
-
--#: c-family/c.opt:300
--msgid ""
--"Warn when __builtin_frame_address or __builtin_return_address is used "
--"unsafely."
-+#: config/epiphany/epiphany.opt:60
-+msgid "Enable use of POST_INC / POST_DEC."
- msgstr ""
-
--#: c-family/c.opt:304
--msgid "Warn when a built-in preprocessor macro is undefined or redefined."
-+#: config/epiphany/epiphany.opt:64
-+msgid "Enable use of POST_MODIFY."
- msgstr ""
-
--#: c-family/c.opt:308
--msgid "Warn about features not present in ISO C90, but present in ISO C99."
-+#: config/epiphany/epiphany.opt:68
-+msgid "Set number of bytes on the stack preallocated for use by the callee."
- msgstr ""
-
--#: c-family/c.opt:312
--msgid "Warn about features not present in ISO C99, but present in ISO C11."
-+#: config/epiphany/epiphany.opt:72
-+msgid "Assume round to nearest is selected for purposes of scheduling."
- msgstr ""
-
--#: c-family/c.opt:316
--msgid "Warn about C constructs that are not in the common subset of C and C++."
-+#: config/epiphany/epiphany.opt:76
-+msgid "Generate call insns as indirect calls."
- msgstr ""
-
--#: c-family/c.opt:323
--msgid ""
--"Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO "
--"C++ 2011."
-+#: config/epiphany/epiphany.opt:80
-+msgid "Generate call insns as direct calls."
- msgstr ""
-
--#: c-family/c.opt:327
-+#: config/epiphany/epiphany.opt:84
- msgid ""
--"Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO "
--"C++ 2014."
-+"Assume labels and symbols can be addressed using 16 bit absolute addresses."
- msgstr ""
-
--#: c-family/c.opt:331
--msgid "Warn about casts which discard qualifiers."
-+#: config/epiphany/epiphany.opt:108
-+msgid ""
-+"A floatig point to integer truncation may be replaced with rounding to save "
-+"mode switching."
- msgstr ""
-
--#: c-family/c.opt:335
--msgid "Warn about subscripts whose type is \"char\"."
-+#: config/epiphany/epiphany.opt:112
-+msgid "Vectorize for double-word operations."
- msgstr ""
-
--#: c-family/c.opt:339
--msgid "Warn about memory access errors found by Pointer Bounds Checker."
-+#: config/epiphany/epiphany.opt:128
-+msgid ""
-+"Split unaligned 8 byte vector moves before post-modify address generation."
- msgstr ""
-
--#: c-family/c.opt:343
--msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"."
-+#: config/epiphany/epiphany.opt:132
-+msgid "Use the floating point unit for integer add/subtract."
- msgstr ""
-
--#: c-family/c.opt:347
--msgid ""
--"Warn about possibly nested block comments, and C++ comments spanning more "
--"than one physical line."
-+#: config/epiphany/epiphany.opt:136
-+msgid "Set register to hold -1."
- msgstr ""
-
--#: c-family/c.opt:351
--msgid "Synonym for -Wcomment."
-+#: config/mn10300/mn10300.opt:30
-+msgid "Target the AM33 processor."
- msgstr ""
-
--#: c-family/c.opt:355
--msgid "Warn for conditionally-supported constructs."
-+#: config/mn10300/mn10300.opt:34
-+msgid "Target the AM33/2.0 processor."
- msgstr ""
-
--#: c-family/c.opt:359
--msgid "Warn for implicit type conversions that may change a value."
-+#: config/mn10300/mn10300.opt:38
-+msgid "Target the AM34 processor."
- msgstr ""
-
--#: c-family/c.opt:363
--msgid "Warn for converting NULL from/to a non-pointer type."
-+#: config/mn10300/mn10300.opt:42 config/arm/arm.opt:227
-+msgid "Tune code for the given processor."
- msgstr ""
-
--#: c-family/c.opt:371
--msgid "Warn when all constructors and destructors are private."
-+#: config/mn10300/mn10300.opt:46
-+msgid "Work around hardware multiply bug."
- msgstr ""
-
--#: c-family/c.opt:375
--msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage."
-+#: config/mn10300/mn10300.opt:55
-+msgid "Enable linker relaxations."
- msgstr ""
-
--#: c-family/c.opt:379
--msgid "Warn when a declaration is found after a statement."
-+#: config/mn10300/mn10300.opt:59
-+msgid "Return pointers in both a0 and d0."
- msgstr ""
-
--#: c-family/c.opt:383
--msgid "Warn when deleting a pointer to incomplete type."
-+#: config/mn10300/mn10300.opt:63
-+msgid "Allow gcc to generate LIW instructions."
- msgstr ""
-
--#: c-family/c.opt:387
--msgid "Warn about deleting polymorphic objects with non-virtual destructors."
-+#: config/mn10300/mn10300.opt:67
-+msgid "Allow gcc to generate the SETLB and Lcc instructions."
- msgstr ""
-
--#: c-family/c.opt:391
--msgid "Warn if a deprecated compiler feature, class, method, or field is used."
-+#: config/microblaze/microblaze.opt:40
-+msgid "Use software emulation for floating point (default)."
- msgstr ""
-
--#: c-family/c.opt:395
--msgid ""
--"Warn about positional initialization of structs requiring designated "
--"initializers."
-+#: config/microblaze/microblaze.opt:44
-+msgid "Use hardware floating point instructions."
- msgstr ""
-
--#: c-family/c.opt:399
--msgid "Warn if qualifiers on arrays which are pointer targets are discarded."
-+#: config/microblaze/microblaze.opt:48
-+msgid "Use table lookup optimization for small signed integer divisions."
- msgstr ""
-
--#: c-family/c.opt:403
--msgid "Warn if type qualifiers on pointers are discarded."
-+#: config/microblaze/microblaze.opt:52
-+msgid "-mcpu=PROCESSOR\t\tUse features of and schedule code for given CPU."
- msgstr ""
-
--#: c-family/c.opt:407
--msgid "Warn about compile-time integer division by zero."
-+#: config/microblaze/microblaze.opt:56
-+msgid "Don't optimize block moves, use memcpy."
- msgstr ""
-
--#: c-family/c.opt:411
--msgid "Warn about duplicated conditions in an if-else-if chain."
-+#: config/microblaze/microblaze.opt:60 config/arm/arm.opt:94
-+#: config/aarch64/aarch64.opt:65
-+msgid "Assume target CPU is configured as big endian."
- msgstr ""
-
--#: c-family/c.opt:415
--msgid "Warn about violations of Effective C++ style rules."
-+#: config/microblaze/microblaze.opt:64 config/arm/arm.opt:155
-+#: config/aarch64/aarch64.opt:81
-+msgid "Assume target CPU is configured as little endian."
- msgstr ""
-
--#: c-family/c.opt:419
--msgid "Warn about an empty body in an if or else statement."
-+#: config/microblaze/microblaze.opt:68
-+msgid "Use the soft multiply emulation (default)."
- msgstr ""
-
--#: c-family/c.opt:423
--msgid "Warn about stray tokens after #elif and #endif."
-+#: config/microblaze/microblaze.opt:72
-+msgid "Use reorder instructions (swap and byte reversed load/store) (default)."
- msgstr ""
-
--#: c-family/c.opt:427
--msgid "Warn about comparison of different enum types."
-+#: config/microblaze/microblaze.opt:76
-+msgid "Use the software emulation for divides (default)."
- msgstr ""
-
--#: c-family/c.opt:435
--msgid ""
--"This switch is deprecated; use -Werror=implicit-function-declaration instead."
-+#: config/microblaze/microblaze.opt:80
-+msgid "Use the hardware barrel shifter instead of emulation."
- msgstr ""
-
--#: c-family/c.opt:439
--msgid ""
--"Warn for implicit type conversions that cause loss of floating point "
--"precision."
-+#: config/microblaze/microblaze.opt:84
-+msgid "Use pattern compare instructions."
- msgstr ""
-
--#: c-family/c.opt:443
--msgid "Warn if testing floating point numbers for equality."
-+#: config/microblaze/microblaze.opt:87
-+#, c-format
-+msgid "%qs is deprecated; use -fstack-check"
- msgstr ""
-
--#: c-family/c.opt:447 c-family/c.opt:479
--msgid "Warn about printf/scanf/strftime/strfmon format string anomalies."
-+#: config/microblaze/microblaze.opt:88
-+msgid "Check for stack overflow at runtime."
- msgstr ""
-
--#: c-family/c.opt:451
--msgid "Warn about format strings that contain NUL bytes."
-+#: config/microblaze/microblaze.opt:92 config/iq2000/iq2000.opt:65
-+msgid "Use GP relative sdata/sbss sections."
- msgstr ""
-
--#: c-family/c.opt:455
--msgid "Warn if passing too many arguments to a function for its format string."
-+#: config/microblaze/microblaze.opt:95
-+#, c-format
-+msgid "%qs is deprecated; use -fno-zero-initialized-in-bss"
- msgstr ""
-
--#: c-family/c.opt:459
--msgid "Warn about format strings that are not literals."
-+#: config/microblaze/microblaze.opt:96
-+msgid "Clear the BSS to zero and place zero initialized in BSS."
- msgstr ""
-
--#: c-family/c.opt:463
--msgid "Warn about possible security problems with format functions."
-+#: config/microblaze/microblaze.opt:100
-+msgid "Use multiply high instructions for high part of 32x32 multiply."
- msgstr ""
-
--#: c-family/c.opt:467
--msgid "Warn about sign differences with format functions."
-+#: config/microblaze/microblaze.opt:104
-+msgid "Use hardware floating point conversion instructions."
- msgstr ""
-
--#: c-family/c.opt:471
--msgid "Warn about strftime formats yielding 2-digit years."
-+#: config/microblaze/microblaze.opt:108
-+msgid "Use hardware floating point square root instruction."
- msgstr ""
-
--#: c-family/c.opt:475
--msgid "Warn about zero-length formats."
-+#: config/microblaze/microblaze.opt:112
-+msgid "Description for mxl-mode-executable."
- msgstr ""
-
--#: c-family/c.opt:483
--msgid "Warn whenever type qualifiers are ignored."
-+#: config/microblaze/microblaze.opt:116
-+msgid "Description for mxl-mode-xmdstub."
- msgstr ""
-
--#: c-family/c.opt:487
--msgid "Warn whenever attributes are ignored."
-+#: config/microblaze/microblaze.opt:120
-+msgid "Description for mxl-mode-bootstrap."
- msgstr ""
-
--#: c-family/c.opt:491
--msgid ""
--"Warn when there is a conversion between pointers that have incompatible "
--"types."
-+#: config/microblaze/microblaze.opt:124
-+msgid "Description for mxl-mode-novectors."
- msgstr ""
-
--#: c-family/c.opt:495
--msgid "Warn about variables which are initialized to themselves."
-+#: config/microblaze/microblaze.opt:128
-+msgid "Use hardware prefetch instruction"
- msgstr ""
-
--#: c-family/c.opt:499
--msgid "Warn about implicit declarations."
-+#: config/spu/spu.opt:20
-+msgid "Emit warnings when run-time relocations are generated."
- msgstr ""
-
--#: c-family/c.opt:503
--msgid "Warn about implicit conversions from \"float\" to \"double\"."
-+#: config/spu/spu.opt:24
-+msgid "Emit errors when run-time relocations are generated."
- msgstr ""
-
--#: c-family/c.opt:507
--msgid "Warn about implicit function declarations."
-+#: config/spu/spu.opt:28
-+msgid "Specify cost of branches (Default 20)."
- msgstr ""
-
--#: c-family/c.opt:511
--msgid "Warn when a declaration does not specify a type."
-+#: config/spu/spu.opt:32
-+msgid "Make sure loads and stores are not moved past DMA instructions."
- msgstr ""
-
--#: c-family/c.opt:518
--msgid ""
--"Warn about C++11 inheriting constructors when the base has a variadic "
--"constructor."
-+#: config/spu/spu.opt:36
-+msgid "volatile must be specified on any memory that is effected by DMA."
- msgstr ""
-
--#: c-family/c.opt:522
-+#: config/spu/spu.opt:40 config/spu/spu.opt:44
- msgid ""
--"Warn about incompatible integer to pointer and pointer to integer "
--"conversions."
-+"Insert nops when it might improve performance by allowing dual issue "
-+"(default)."
- msgstr ""
-
--#: c-family/c.opt:526
--msgid ""
--"Warn when there is a cast to a pointer from an integer of a different size."
-+#: config/spu/spu.opt:48
-+msgid "Use standard main function as entry for startup."
- msgstr ""
-
--#: c-family/c.opt:530
--msgid "Warn about invalid uses of the \"offsetof\" macro."
-+#: config/spu/spu.opt:52
-+msgid "Generate branch hints for branches."
- msgstr ""
-
--#: c-family/c.opt:534
--msgid "Warn about PCH files that are found but not used."
-+#: config/spu/spu.opt:56
-+msgid "Maximum number of nops to insert for a hint (Default 2)."
- msgstr ""
-
--#: c-family/c.opt:538
--msgid "Warn when a jump misses a variable initialization."
--msgstr ""
--
--#: c-family/c.opt:542
-+#: config/spu/spu.opt:60
- msgid ""
--"Warn when a string or character literal is followed by a ud-suffix which "
--"does not begin with an underscore."
-+"Approximate maximum number of instructions to allow between a hint and its "
-+"branch [125]."
- msgstr ""
-
--#: c-family/c.opt:546
--msgid ""
--"Warn when a logical operator is suspiciously always evaluating to true or "
--"false."
-+#: config/spu/spu.opt:64
-+msgid "Generate code for 18 bit addressing."
- msgstr ""
-
--#: c-family/c.opt:550
--msgid ""
--"Warn when logical not is used on the left hand side operand of a comparison."
-+#: config/spu/spu.opt:68
-+msgid "Generate code for 32 bit addressing."
- msgstr ""
-
--#: c-family/c.opt:554
--msgid "Do not warn about using \"long long\" when -pedantic."
-+#: config/spu/spu.opt:72 config/sh/sh.opt:273 config/ia64/ia64.opt:114
-+#: config/pa/pa.opt:58
-+msgid "Specify range of registers to make fixed."
- msgstr ""
-
--#: c-family/c.opt:558
--msgid "Warn about suspicious declarations of \"main\"."
--msgstr ""
--
--#: c-family/c.opt:566
-+#: config/spu/spu.opt:76
- msgid ""
--"Warn about suspicious calls to memset where the third argument is constant "
--"literal zero and the second is not."
-+"Insert hbrp instructions after hinted branch targets to avoid the SPU hang "
-+"issue."
- msgstr ""
-
--#: c-family/c.opt:570
--msgid ""
--"Warn when the indentation of the code does not reflect the block structure."
-+#: config/spu/spu.opt:80 config/s390/s390.opt:56 config/i386/i386.opt:247
-+msgid "Generate code for given CPU."
- msgstr ""
-
--#: c-family/c.opt:574
--msgid "Warn about possibly missing braces around initializers."
-+#: config/spu/spu.opt:88
-+msgid "Access variables in 32-bit PPU objects (default)."
- msgstr ""
-
--#: c-family/c.opt:578
--msgid "Warn about global functions without previous declarations."
-+#: config/spu/spu.opt:92
-+msgid "Access variables in 64-bit PPU objects."
- msgstr ""
-
--#: c-family/c.opt:582
--msgid "Warn about missing fields in struct initializers."
-+#: config/spu/spu.opt:96
-+msgid "Allow conversions between __ea and generic pointers (default)."
- msgstr ""
-
--#: c-family/c.opt:586
--msgid "Warn on direct multiple inheritance."
-+#: config/spu/spu.opt:100
-+msgid "Size (in KB) of software data cache."
- msgstr ""
-
--#: c-family/c.opt:590
--msgid "Warn on namespace definition."
-+#: config/spu/spu.opt:104
-+msgid "Atomically write back software data cache lines (default)."
- msgstr ""
-
--#: c-family/c.opt:594
--msgid "Warn about missing sized deallocation functions."
-+#: config/c6x/c6x-tables.opt:24
-+msgid "Known C6X ISAs (for use with the -march= option):"
- msgstr ""
-
--#: c-family/c.opt:598
--msgid ""
--"Warn about suspicious length parameters to certain string functions if the "
--"argument uses sizeof."
-+#: config/c6x/c6x.opt:38 config/msp430/msp430.opt:3 config/mep/mep.opt:143
-+#: config/bfin/bfin.opt:40
-+msgid "Use simulator runtime."
- msgstr ""
-
--#: c-family/c.opt:602
--msgid "Warn when sizeof is applied on a parameter declared as an array."
-+#: config/c6x/c6x.opt:42 config/rs6000/sysv4.opt:28
-+msgid "Select method for sdata handling."
- msgstr ""
-
--#: c-family/c.opt:606
--msgid "Warn about functions which might be candidates for format attributes."
-+#: config/c6x/c6x.opt:46
-+msgid "Valid arguments for the -msdata= option."
- msgstr ""
-
--#: c-family/c.opt:610
--msgid ""
--"Suggest that the override keyword be used when the declaration of a virtual"
-+#: config/c6x/c6x.opt:59
-+msgid "Compile for the DSBT shared library ABI."
- msgstr ""
-
--#: c-family/c.opt:615
--msgid "Warn about enumerated switches, with no default, missing a case."
-+#: config/c6x/c6x.opt:63 config/bfin/bfin.opt:82
-+msgid "Avoid generating pc-relative calls; use indirection."
- msgstr ""
-
--#: c-family/c.opt:619
--msgid "Warn about enumerated switches missing a \"default:\" statement."
-+#: config/c6x/c6x.opt:67 config/m68k/m68k.opt:103 config/arm/arm.opt:81
-+#: config/nios2/nios2.opt:570 config/nds32/nds32.opt:66
-+msgid "Specify the name of the target architecture."
- msgstr ""
-
--#: c-family/c.opt:623
--msgid "Warn about all enumerated switches missing a specific case."
-+#: config/mcore/mcore.opt:23
-+msgid "Generate code for the M*Core M210"
- msgstr ""
-
--#: c-family/c.opt:627
--msgid "Warn about switches with boolean controlling expression."
-+#: config/mcore/mcore.opt:27
-+msgid "Generate code for the M*Core M340"
- msgstr ""
-
--#: c-family/c.opt:631
--msgid "Warn on primary template declaration."
-+#: config/mcore/mcore.opt:31
-+msgid "Force functions to be aligned to a 4 byte boundary."
- msgstr ""
-
--#: c-family/c.opt:639
--msgid "Warn about user-specified include directories that do not exist."
-+#: config/mcore/mcore.opt:35 config/moxie/moxie.opt:23
-+msgid "Generate big-endian code."
- msgstr ""
-
--#: c-family/c.opt:643
--msgid ""
--"Warn about function parameters declared without a type specifier in K&R-"
--"style functions."
-+#: config/mcore/mcore.opt:39
-+msgid "Emit call graph information."
- msgstr ""
-
--#: c-family/c.opt:647
--msgid "Warn about global functions without prototypes."
-+#: config/mcore/mcore.opt:43
-+msgid "Use the divide instruction."
- msgstr ""
-
--#: c-family/c.opt:650 c-family/c.opt:1024 c-family/c.opt:1031
--#: c-family/c.opt:1205 c-family/c.opt:1224 c-family/c.opt:1247
--#: c-family/c.opt:1253 c-family/c.opt:1260 c-family/c.opt:1284
--#: c-family/c.opt:1295 c-family/c.opt:1298 c-family/c.opt:1301
--#: c-family/c.opt:1304 c-family/c.opt:1307 c-family/c.opt:1344
--#: c-family/c.opt:1475 c-family/c.opt:1499 c-family/c.opt:1517
--#: c-family/c.opt:1548 c-family/c.opt:1552 c-family/c.opt:1568
--#: config/ia64/ia64.opt:167 config/ia64/ia64.opt:170 c-family/c-opts.c:419
--#, gcc-internal-format
--msgid "switch %qs is no longer supported"
-+#: config/mcore/mcore.opt:47
-+msgid "Inline constants if it can be done in 2 insns or less."
- msgstr ""
-
--#: c-family/c.opt:654
--msgid "Warn about use of multi-character character constants."
-+#: config/mcore/mcore.opt:51 config/moxie/moxie.opt:27
-+msgid "Generate little-endian code."
- msgstr ""
-
--#: c-family/c.opt:658
-+#: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
- msgid ""
--"Warn about narrowing conversions within { } that are ill-formed in C++11."
-+"Assume that run-time support has been provided, so omit -lsim from the "
-+"linker command line."
- msgstr ""
-
--#: c-family/c.opt:662
--msgid "Warn about \"extern\" declarations not at file scope."
-+#: config/mcore/mcore.opt:60
-+msgid "Use arbitrary sized immediates in bit operations."
- msgstr ""
-
--#: c-family/c.opt:666
--msgid ""
--"Warn when a noexcept expression evaluates to false even though the "
--"expression can't actually throw."
-+#: config/mcore/mcore.opt:64
-+msgid "Prefer word accesses over byte accesses."
- msgstr ""
-
--#: c-family/c.opt:670
--msgid ""
--"Warn when non-templatized friend functions are declared within a template."
-+#: config/mcore/mcore.opt:71
-+msgid "Set the maximum amount for a single stack increment operation."
- msgstr ""
-
--#: c-family/c.opt:674
--msgid "Warn about non-virtual destructors."
-+#: config/mcore/mcore.opt:75
-+msgid "Always treat bitfields as int-sized."
- msgstr ""
+@@ -2221,11 +2239,27 @@
+ fprintf (G.debug_file, "END COLLECTING\n");
+ }
--#: c-family/c.opt:678
--msgid ""
--"Warn about NULL being passed to argument slots marked as requiring non-NULL."
-+#: config/arc/arc.opt:26
-+msgid "Compile code for big endian mode."
- msgstr ""
+-/* Assume that all GGC memory is reachable and grow the limits for next collection.
+- With checking, trigger GGC so -Q compilation outputs how much of memory really is
+- reachable. */
++/* Return free pages to the system. */
--#: c-family/c.opt:694
-+#: config/arc/arc.opt:30
-+msgid "Compile code for little endian mode. This is the default."
-+msgstr ""
+ void
++ggc_trim ()
++{
++ timevar_push (TV_GC);
++ G.allocated = 0;
++ sweep_pages ();
++ release_pages ();
++ if (!quiet_flag)
++ fprintf (stderr, " {GC trimmed to %luk, %luk mapped}",
++ (unsigned long) G.allocated / 1024,
++ (unsigned long) G.bytes_mapped / 1024);
++ timevar_pop (TV_GC);
++}
+
-+#: config/arc/arc.opt:34
- msgid ""
--"-Wnormalized=<none|id|nfc|nfkc>\tWarn about non-normalised Unicode strings."
-+"Disable ARCompact specific pass to generate conditional execution "
-+"instructions."
- msgstr ""
-
--#: c-family/c.opt:701
--msgid "argument %qs to %<-Wnormalized%> not recognized"
-+#: config/arc/arc.opt:38
-+msgid "Generate ARCompact 32-bit code for ARC600 processor."
- msgstr ""
-
--#: c-family/c.opt:717
--msgid "Warn if a C-style cast is used in a program."
-+#: config/arc/arc.opt:42
-+msgid "Same as -mA6."
- msgstr ""
-
--#: c-family/c.opt:721
--msgid "Warn for obsolescent usage in a declaration."
-+#: config/arc/arc.opt:46
-+msgid "Generate ARCompact 32-bit code for ARC601 processor."
- msgstr ""
-
--#: c-family/c.opt:725
--msgid "Warn if an old-style parameter definition is used."
-+#: config/arc/arc.opt:50
-+msgid "Generate ARCompact 32-bit code for ARC700 processor."
- msgstr ""
-
--#: c-family/c.opt:729
--msgid "Warn if a simd directive is overridden by the vectorizer cost model."
-+#: config/arc/arc.opt:54
-+msgid "Same as -mA7."
- msgstr ""
-
--#: c-family/c.opt:733
-+#: config/arc/arc.opt:58
- msgid ""
--"Warn if a string is longer than the maximum portable length specified by the "
--"standard."
-+"-mmpy-option={0,1,2,3,4,5,6,7,8,9} Compile ARCv2 code with a multiplier "
-+"design option. Option 2 is default on."
- msgstr ""
-
--#: c-family/c.opt:737
--msgid "Warn about overloaded virtual function names."
-+#: config/arc/arc.opt:62
-+msgid "Enable DIV-REM instructions for ARCv2."
- msgstr ""
-
--#: c-family/c.opt:741
--msgid "Warn about overriding initializers without side effects."
-+#: config/arc/arc.opt:66
-+msgid "Enable code density instructions for ARCv2."
- msgstr ""
-
--#: c-family/c.opt:745
--msgid "Warn about overriding initializers with side effects."
-+#: config/arc/arc.opt:70
-+msgid "Tweak register allocation to help 16-bit instruction generation."
- msgstr ""
-
--#: c-family/c.opt:749
--msgid "Warn about packed bit-fields whose offset changed in GCC 4.4."
-+#: config/arc/arc.opt:80
-+msgid "Use ordinarily cached memory accesses for volatile references."
- msgstr ""
-
--#: c-family/c.opt:753
--msgid "Warn about possibly missing parentheses."
-+#: config/arc/arc.opt:84
-+msgid "Enable cache bypass for volatile references."
- msgstr ""
-
--#: c-family/c.opt:761
--msgid "Warn when converting the type of pointers to member functions."
-+#: config/arc/arc.opt:88
-+msgid "Generate instructions supported by barrel shifter."
- msgstr ""
-
--#: c-family/c.opt:765
--msgid "Warn about function pointer arithmetic."
-+#: config/arc/arc.opt:92
-+msgid "Generate norm instruction."
- msgstr ""
-
--#: c-family/c.opt:769
--msgid "Warn when a pointer differs in signedness in an assignment."
-+#: config/arc/arc.opt:96
-+msgid "Generate swap instruction."
- msgstr ""
-
--#: c-family/c.opt:773
--msgid "Warn when a pointer is cast to an integer of a different size."
-+#: config/arc/arc.opt:100
-+msgid "Generate mul64 and mulu64 instructions."
- msgstr ""
-
--#: c-family/c.opt:777
--msgid "Warn about misuses of pragmas."
-+#: config/arc/arc.opt:104
-+msgid "Do not generate mpy instructions for ARC700."
- msgstr ""
-
--#: c-family/c.opt:781
-+#: config/arc/arc.opt:108
- msgid ""
--"Warn if a property for an Objective-C object has no assign semantics "
--"specified."
-+"Generate Extended arithmetic instructions. Currently only divaw, adds, subs "
-+"and sat16 are supported."
- msgstr ""
-
--#: c-family/c.opt:785
--msgid "Warn if inherited methods are unimplemented."
-+#: config/arc/arc.opt:112
-+msgid ""
-+"Dummy flag. This is the default unless FPX switches are provided explicitly."
- msgstr ""
-
--#: c-family/c.opt:789 c-family/c.opt:793
--msgid "Warn for placement new expressions with undefined behavior."
-+#: config/arc/arc.opt:116
-+msgid "Generate call insns as register indirect calls."
- msgstr ""
-
--#: c-family/c.opt:797
--msgid "Warn about multiple declarations of the same object."
-+#: config/arc/arc.opt:120
-+msgid "Do no generate BRcc instructions in arc_reorg."
- msgstr ""
-
--#: c-family/c.opt:801
--msgid "Warn when the compiler reorders code."
--msgstr ""
--
--#: c-family/c.opt:805
-+#: config/arc/arc.opt:124
- msgid ""
--"Warn whenever a function's return type defaults to \"int\" (C), or about "
--"inconsistent return types (C++)."
-+"Generate sdata references. This is the default, unless you compile for PIC."
- msgstr ""
-
--#: c-family/c.opt:809
--msgid "Warn on suspicious constructs involving reverse scalar storage order."
-+#: config/arc/arc.opt:128
-+msgid "Do not generate millicode thunks (needed only with -Os)."
- msgstr ""
-
--#: c-family/c.opt:813
--msgid "Warn if a selector has multiple methods."
-+#: config/arc/arc.opt:132 config/arc/arc.opt:136
-+msgid "FPX: Generate Single Precision FPX (compact) instructions."
- msgstr ""
-
--#: c-family/c.opt:817
--msgid "Warn about possible violations of sequence point rules."
-+#: config/arc/arc.opt:140
-+msgid "FPX: Generate Single Precision FPX (fast) instructions."
- msgstr ""
-
--#: c-family/c.opt:821
--msgid "Warn if a local declaration hides an instance variable."
-+#: config/arc/arc.opt:144
-+msgid ""
-+"FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions."
- msgstr ""
-
--#: c-family/c.opt:825 c-family/c.opt:829
--msgid "Warn if left shift of a signed value overflows."
-+#: config/arc/arc.opt:148 config/arc/arc.opt:152
-+msgid "FPX: Generate Double Precision FPX (compact) instructions."
- msgstr ""
-
--#: c-family/c.opt:833
--msgid "Warn if shift count is negative."
-+#: config/arc/arc.opt:156
-+msgid "FPX: Generate Double Precision FPX (fast) instructions."
- msgstr ""
-
--#: c-family/c.opt:837
--msgid "Warn if shift count >= width of type."
-+#: config/arc/arc.opt:160
-+msgid "Disable LR and SR instructions from using FPX extension aux registers."
- msgstr ""
-
--#: c-family/c.opt:841
--msgid "Warn if left shifting a negative value."
--msgstr ""
--
--#: c-family/c.opt:845
--msgid "Warn about signed-unsigned comparisons."
--msgstr ""
--
--#: c-family/c.opt:853
-+#: config/arc/arc.opt:164
- msgid ""
--"Warn for implicit type conversions between signed and unsigned integers."
-+"Enable generation of ARC SIMD instructions via target-specific builtins."
- msgstr ""
-
--#: c-family/c.opt:857
--msgid "Warn when overload promotes from unsigned to signed."
-+#: config/arc/arc.opt:168
-+msgid "-mcpu=CPU\tCompile code for ARC variant CPU."
- msgstr ""
-
--#: c-family/c.opt:861
--msgid "Warn about uncasted NULL used as sentinel."
--msgstr ""
--
--#: c-family/c.opt:865
--msgid "Warn about unprototyped function declarations."
--msgstr ""
--
--#: c-family/c.opt:877
--msgid "Warn if type signatures of candidate methods do not match exactly."
--msgstr ""
--
--#: c-family/c.opt:881
-+#: config/arc/arc.opt:205
- msgid ""
--"Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions "
--"are used."
-+"size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -"
-+"Os."
- msgstr ""
-
--#: c-family/c.opt:885
--msgid "Deprecated. This switch has no effect."
-+#: config/arc/arc.opt:209 config/sh/sh.opt:301
-+msgid "Annotate assembler instructions with estimated addresses."
- msgstr ""
-
--#: c-family/c.opt:893
--msgid "Warn if a comparison always evaluates to true or false."
--msgstr ""
--
--#: c-family/c.opt:897
--msgid "Warn if a throw expression will always result in a call to terminate()."
--msgstr ""
--
--#: c-family/c.opt:901
--msgid "Warn about features not present in traditional C."
--msgstr ""
--
--#: c-family/c.opt:905
-+#: config/arc/arc.opt:213
- msgid ""
--"Warn of prototypes causing type conversions different from what would happen "
--"in the absence of prototype."
-+"Cost to assume for a multiply instruction, with 4 being equal to a normal "
-+"insn."
- msgstr ""
-
--#: c-family/c.opt:909
--msgid ""
--"Warn if trigraphs are encountered that might affect the meaning of the "
--"program."
-+#: config/arc/arc.opt:217
-+msgid "Tune for ARC600 cpu."
- msgstr ""
-
--#: c-family/c.opt:913
--msgid "Warn about @selector()s without previously declared methods."
-+#: config/arc/arc.opt:221
-+msgid "Tune for ARC601 cpu."
- msgstr ""
-
--#: c-family/c.opt:917
--msgid "Warn if an undefined macro is used in an #if directive."
-+#: config/arc/arc.opt:225
-+msgid "Tune for ARC700 R4.2 Cpu with standard multiplier block."
- msgstr ""
-
--#: c-family/c.opt:929
--msgid "Warn about unrecognized pragmas."
-+#: config/arc/arc.opt:229 config/arc/arc.opt:233 config/arc/arc.opt:237
-+msgid "Tune for ARC700 R4.2 Cpu with XMAC block."
- msgstr ""
-
--#: c-family/c.opt:933
--msgid "Warn about unsuffixed float constants."
-+#: config/arc/arc.opt:241
-+msgid "Enable the use of indexed loads."
- msgstr ""
-
--#: c-family/c.opt:941
--msgid "Warn when typedefs locally defined in a function are not used."
-+#: config/arc/arc.opt:245
-+msgid "Enable the use of pre/post modify with register displacement."
- msgstr ""
-
--#: c-family/c.opt:945
--msgid "Warn about macros defined in the main file that are not used."
-+#: config/arc/arc.opt:249
-+msgid "Generate 32x16 multiply and mac instructions."
- msgstr ""
-
--#: c-family/c.opt:949
--msgid ""
--"Warn if a caller of a function, marked with attribute warn_unused_result, "
--"does not use its return value."
-+#: config/arc/arc.opt:255
-+msgid "Set probability threshold for unaligning branches."
- msgstr ""
-
--#: c-family/c.opt:957 c-family/c.opt:961
--msgid "Warn when a const variable is unused."
-+#: config/arc/arc.opt:259
-+msgid "Don't use less than 25 bit addressing range for calls."
- msgstr ""
-
--#: c-family/c.opt:965
--msgid "Warn about using variadic macros."
--msgstr ""
--
--#: c-family/c.opt:969
-+#: config/arc/arc.opt:263
- msgid ""
--"Warn about questionable usage of the macros used to retrieve variable "
--"arguments."
-+"Explain what alignment considerations lead to the decision to make an insn "
-+"short or long."
- msgstr ""
-
--#: c-family/c.opt:973
--msgid "Warn if a variable length array is used."
-+#: config/arc/arc.opt:267
-+msgid "Do alignment optimizations for call instructions."
- msgstr ""
-
--#: c-family/c.opt:977
--msgid "Warn when a register variable is declared volatile."
--msgstr ""
--
--#: c-family/c.opt:981
--msgid "Warn on direct virtual inheritance."
--msgstr ""
--
--#: c-family/c.opt:985
--msgid "Warn if a virtual base has a non-trivial move assignment operator."
--msgstr ""
--
--#: c-family/c.opt:989
-+#: config/arc/arc.opt:271
- msgid ""
--"In C++, nonzero means warn about deprecated conversion from string literals "
--"to 'char *'. In C, similar warning, except that the conversion is of course "
--"not deprecated by the ISO C standard."
-+"Enable Rcq constraint handling - most short code generation depends on this."
- msgstr ""
-
--#: c-family/c.opt:993
--msgid "Warn when a literal '0' is used as null pointer."
-+#: config/arc/arc.opt:275
-+msgid "Enable Rcw constraint handling - ccfsm condexec mostly depends on this."
- msgstr ""
-
--#: c-family/c.opt:997
--msgid "Warn about useless casts."
-+#: config/arc/arc.opt:279
-+msgid "Enable pre-reload use of cbranchsi pattern."
- msgstr ""
-
--#: c-family/c.opt:1001
--msgid ""
--"Warn if a class type has a base or a field whose type uses the anonymous "
--"namespace or depends on a type with no linkage."
-+#: config/arc/arc.opt:283
-+msgid "Enable bbit peephole2."
- msgstr ""
-
--#: c-family/c.opt:1005
--msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)."
--msgstr ""
--
--#: c-family/c.opt:1013
-+#: config/arc/arc.opt:287
- msgid ""
--"The version of the C++ ABI used for -Wabi warnings and link compatibility "
--"aliases."
-+"Use pc-relative switch case tables - this enables case table shortening."
- msgstr ""
-
--#: c-family/c.opt:1017
--msgid "Enforce class member access control semantics."
-+#: config/arc/arc.opt:291
-+msgid "Enable compact casesi pattern."
- msgstr ""
-
--#: c-family/c.opt:1021
--msgid "-fada-spec-parent=unit Dump Ada specs as child units of given parent."
-+#: config/arc/arc.opt:295
-+msgid "Enable 'q' instruction alternatives."
- msgstr ""
-
--#: c-family/c.opt:1028
--msgid "Allow variadic functions without named parameter."
-+#: config/arc/arc.opt:299
-+msgid "Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc."
- msgstr ""
-
--#: c-family/c.opt:1032 c-family/c.opt:1261 c-family/c.opt:1549
--#: c-family/c.opt:1553 c-family/c.opt:1569
--msgid "No longer supported."
-+#: config/arc/arc.opt:306
-+msgid "Enable variable polynomial CRC extension."
- msgstr ""
-
--#: c-family/c.opt:1036
--msgid "Recognize the \"asm\" keyword."
-+#: config/arc/arc.opt:310
-+msgid "Enable DSP 3.1 Pack A extensions."
- msgstr ""
-
--#: c-family/c.opt:1044
--msgid "Recognize built-in functions."
-+#: config/arc/arc.opt:314
-+msgid "Enable dual viterbi butterfly extension."
- msgstr ""
-
--#: c-family/c.opt:1051
--msgid "Where shorter, use canonicalized paths to systems headers."
-+#: config/arc/arc.opt:324
-+msgid "Enable Dual and Single Operand Instructions for Telephony."
- msgstr ""
-
--#: c-family/c.opt:1055
--msgid "Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to"
-+#: config/arc/arc.opt:328
-+msgid "Enable XY Memory extension (DSP version 3)."
- msgstr ""
-
--#: c-family/c.opt:1060
--msgid "Generate pointer bounds checks for variables with incomplete type."
-+#: config/arc/arc.opt:333
-+msgid "Enable Locked Load/Store Conditional extension."
- msgstr ""
-
--#: c-family/c.opt:1064
--msgid ""
--"Use zero bounds for all incoming arguments in 'main' function. It helps when"
-+#: config/arc/arc.opt:337
-+msgid "Enable swap byte ordering extension instruction."
- msgstr ""
-
--#: c-family/c.opt:1069
--msgid ""
--"Forces Pointer Bounds Checker to use narrowed bounds for address of the first"
-+#: config/arc/arc.opt:341
-+msgid "Enable 64-bit Time-Stamp Counter extension instruction."
- msgstr ""
-
--#: c-family/c.opt:1075
--msgid ""
--"Control how Pointer Bounds Checker handle pointers to object fields. When"
-+#: config/arc/arc.opt:345
-+msgid "Pass -EB option through to linker."
- msgstr ""
-
--#: c-family/c.opt:1080
--msgid ""
--"Forces Pointer Bounds Checker to use bounds of the innermost arrays in case "
--"of"
-+#: config/arc/arc.opt:349
-+msgid "Pass -EL option through to linker."
- msgstr ""
-
--#: c-family/c.opt:1085
--msgid "Allow Pointer Bounds Checker optimizations. By default allowed"
-+#: config/arc/arc.opt:353
-+msgid "Pass -marclinux option through to linker."
- msgstr ""
-
--#: c-family/c.opt:1090
--msgid ""
--"Allow to use *_nobnd versions of string functions by Pointer Bounds Checker."
-+#: config/arc/arc.opt:357
-+msgid "Pass -marclinux_prof option through to linker."
- msgstr ""
-
--#: c-family/c.opt:1094
--msgid ""
--"Allow to use *_nochk versions of string functions by Pointer Bounds Checker."
-+#: config/arc/arc.opt:365
-+msgid "Enable lra."
- msgstr ""
-
--#: c-family/c.opt:1098
--msgid "Use statically initialized variable for vars bounds instead of"
-+#: config/arc/arc.opt:369
-+msgid "Don't indicate any priority with TARGET_REGISTER_PRIORITY."
- msgstr ""
-
--#: c-family/c.opt:1103
--msgid "Use statically initialized variable for constant bounds instead of"
-+#: config/arc/arc.opt:373
-+msgid "Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
- msgstr ""
-
--#: c-family/c.opt:1108
--msgid "With this option zero size obtained dynamically for objects with"
-+#: config/arc/arc.opt:377
-+msgid "Reduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
- msgstr ""
-
--#: c-family/c.opt:1113
--msgid "Generate checks for all read accesses to memory."
-+#: config/arc/arc.opt:381
-+msgid "instrument with mcount calls as in the ucb code."
- msgstr ""
-
--#: c-family/c.opt:1117
--msgid "Generate checks for all write accesses to memory."
-+#: config/arc/arc.opt:411
-+msgid "Enable atomic instructions."
- msgstr ""
-
--#: c-family/c.opt:1121
--msgid "Generate bounds stores for pointer writes."
-+#: config/arc/arc.opt:415
-+msgid "Enable double load/store instructions for ARC HS."
- msgstr ""
-
--#: c-family/c.opt:1125
--msgid "Generate bounds passing for calls."
-+#: config/arc/arc.opt:419
-+msgid "Specify the name of the target floating point configuration."
- msgstr ""
-
--#: c-family/c.opt:1129
--msgid "Instrument only functions marked with bnd_instrument attribute."
-+#: config/m68k/m68k.opt:30
-+msgid "Generate code for a 520X."
- msgstr ""
-
--#: c-family/c.opt:1133
--msgid "Transform instrumented builtin calls into calls to wrappers."
-+#: config/m68k/m68k.opt:34
-+msgid "Generate code for a 5206e."
- msgstr ""
-
--#: c-family/c.opt:1143
--msgid "Enable Cilk Plus."
-+#: config/m68k/m68k.opt:38
-+msgid "Generate code for a 528x."
- msgstr ""
-
--#: c-family/c.opt:1147
--msgid "Enable support for C++ concepts."
-+#: config/m68k/m68k.opt:42
-+msgid "Generate code for a 5307."
- msgstr ""
-
--#: c-family/c.opt:1151
--msgid "Allow the arguments of the '?' operator to have different types."
-+#: config/m68k/m68k.opt:46
-+msgid "Generate code for a 5407."
- msgstr ""
-
--#: c-family/c.opt:1158
--#, c-format
--msgid "no class name specified with %qs"
-+#: config/m68k/m68k.opt:50 config/m68k/m68k.opt:111
-+msgid "Generate code for a 68000."
- msgstr ""
-
--#: c-family/c.opt:1159
--msgid "-fconst-string-class=<name>\tUse class <name> for constant strings."
-+#: config/m68k/m68k.opt:54
-+msgid "Generate code for a 68010."
- msgstr ""
-
--#: c-family/c.opt:1163
--msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth."
-+#: config/m68k/m68k.opt:58 config/m68k/m68k.opt:115
-+msgid "Generate code for a 68020."
- msgstr ""
-
--#: c-family/c.opt:1167
--msgid "Emit debug annotations during preprocessing."
-+#: config/m68k/m68k.opt:62
-+msgid "Generate code for a 68040, without any new instructions."
- msgstr ""
-
--#: c-family/c.opt:1171
--msgid ""
--"-fdeduce-init-list\tenable deduction of std::initializer_list for a template "
--"type parameter from a brace-enclosed initializer-list."
-+#: config/m68k/m68k.opt:66
-+msgid "Generate code for a 68060, without any new instructions."
- msgstr ""
-
--#: c-family/c.opt:1175
--msgid "Factor complex constructors and destructors to favor space over speed."
-+#: config/m68k/m68k.opt:70
-+msgid "Generate code for a 68030."
- msgstr ""
-
--#: c-family/c.opt:1183
--msgid "Preprocess directives only."
-+#: config/m68k/m68k.opt:74
-+msgid "Generate code for a 68040."
- msgstr ""
-
--#: c-family/c.opt:1187
--msgid "Permit '$' as an identifier character."
-+#: config/m68k/m68k.opt:78
-+msgid "Generate code for a 68060."
- msgstr ""
-
--#: c-family/c.opt:1191
--msgid "Write all declarations as Ada code transitively."
-+#: config/m68k/m68k.opt:82
-+msgid "Generate code for a 68302."
- msgstr ""
-
--#: c-family/c.opt:1195
--msgid "Write all declarations as Ada code for the given file only."
-+#: config/m68k/m68k.opt:86
-+msgid "Generate code for a 68332."
- msgstr ""
-
--#: c-family/c.opt:1202
--msgid "Generate code to check exception specifications."
-+#: config/m68k/m68k.opt:91
-+msgid "Generate code for a 68851."
- msgstr ""
-
--#: c-family/c.opt:1209
--msgid ""
--"-fexec-charset=<cset>\tConvert all strings and character constants to "
--"character set <cset>."
-+#: config/m68k/m68k.opt:95
-+msgid "Generate code that uses 68881 floating-point instructions."
- msgstr ""
-
--#: c-family/c.opt:1213
--msgid "Permit universal character names (\\u and \\U) in identifiers."
-+#: config/m68k/m68k.opt:99
-+msgid "Align variables on a 32-bit boundary."
- msgstr ""
-
--#: c-family/c.opt:1217
--msgid ""
--"-finput-charset=<cset>\tSpecify the default character set for source files."
-+#: config/m68k/m68k.opt:107
-+msgid "Use the bit-field instructions."
- msgstr ""
-
--#: c-family/c.opt:1221
--msgid ""
--"Support dynamic initialization of thread-local variables in a different "
--"translation unit."
-+#: config/m68k/m68k.opt:119
-+msgid "Generate code for a ColdFire v4e."
- msgstr ""
-
--#: c-family/c.opt:1228
--msgid "Scope of for-init-statement variables is local to the loop."
-+#: config/m68k/m68k.opt:123
-+msgid "Specify the target CPU."
- msgstr ""
-
--#: c-family/c.opt:1232
--msgid "Do not assume that standard C libraries and \"main\" exist."
-+#: config/m68k/m68k.opt:127
-+msgid "Generate code for a cpu32."
- msgstr ""
-
--#: c-family/c.opt:1236
--msgid "Recognize GNU-defined keywords."
-+#: config/m68k/m68k.opt:131
-+msgid "Use hardware division instructions on ColdFire."
- msgstr ""
-
--#: c-family/c.opt:1240
--msgid "Generate code for GNU runtime environment."
-+#: config/m68k/m68k.opt:135
-+msgid "Generate code for a Fido A."
- msgstr ""
-
--#: c-family/c.opt:1244
--msgid "Use traditional GNU semantics for inline functions."
-+#: config/m68k/m68k.opt:139
-+msgid "Generate code which uses hardware floating point instructions."
- msgstr ""
-
--#: c-family/c.opt:1250
--msgid ""
--"-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
-+#: config/m68k/m68k.opt:143
-+msgid "Enable ID based shared library."
- msgstr ""
-
--#: c-family/c.opt:1257
--msgid "Assume normal C execution environment."
-+#: config/m68k/m68k.opt:147
-+msgid "Do not use the bit-field instructions."
- msgstr ""
-
--#: c-family/c.opt:1265
--msgid "Export functions even if they can be inlined."
-+#: config/m68k/m68k.opt:151
-+msgid "Use normal calling convention."
- msgstr ""
-
--#: c-family/c.opt:1269
--msgid "Emit implicit instantiations of inline templates."
-+#: config/m68k/m68k.opt:155
-+msgid "Consider type 'int' to be 32 bits wide."
- msgstr ""
-
--#: c-family/c.opt:1273
--msgid "Emit implicit instantiations of templates."
-+#: config/m68k/m68k.opt:159
-+msgid "Generate pc-relative code."
- msgstr ""
-
--#: c-family/c.opt:1277
--msgid "Inject friend functions into enclosing namespace."
-+#: config/m68k/m68k.opt:163
-+msgid "Use different calling convention using 'rtd'."
- msgstr ""
-
--#: c-family/c.opt:1281
--msgid "Don't emit dllexported inline functions unless needed."
-+#: config/m68k/m68k.opt:167 config/bfin/bfin.opt:78
-+msgid "Enable separate data segment."
- msgstr ""
-
--#: c-family/c.opt:1288
--msgid ""
--"Allow implicit conversions between vectors with differing numbers of "
--"subparts and/or differing element types."
-+#: config/m68k/m68k.opt:171 config/bfin/bfin.opt:74
-+msgid "ID of shared library to build."
- msgstr ""
-
--#: c-family/c.opt:1292
--msgid "Don't warn about uses of Microsoft extensions."
-+#: config/m68k/m68k.opt:175
-+msgid "Consider type 'int' to be 16 bits wide."
- msgstr ""
-
--#: c-family/c.opt:1311
--msgid "Generate code for NeXT (Apple Mac OS X) runtime environment."
-+#: config/m68k/m68k.opt:179
-+msgid "Generate code with library calls for floating point."
- msgstr ""
-
--#: c-family/c.opt:1315
--msgid "Assume that receivers of Objective-C messages may be nil."
-+#: config/m68k/m68k.opt:183
-+msgid "Do not use unaligned memory references."
- msgstr ""
-
--#: c-family/c.opt:1319
--msgid ""
--"Allow access to instance variables as if they were local declarations within "
--"instance method implementations."
-+#: config/m68k/m68k.opt:187
-+msgid "Tune for the specified target CPU or architecture."
- msgstr ""
-
--#: c-family/c.opt:1323
--msgid ""
--"-fvisibility=[private|protected|public|package]\tSet the default symbol "
--"visibility."
-+#: config/m68k/m68k.opt:191
-+msgid "Support more than 8192 GOT entries on ColdFire."
- msgstr ""
-
--#: c-family/c.opt:1326
--#, c-format
--msgid "unrecognized ivar visibility value %qs"
-+#: config/m68k/m68k.opt:195
-+msgid "Support TLS segment larger than 64K."
- msgstr ""
-
--#: c-family/c.opt:1348
--msgid ""
--"Treat a throw() exception specification as noexcept to improve code size."
-+#: config/m68k/ieee.opt:24 config/i386/i386.opt:358
-+msgid "Use IEEE math for fp comparisons."
- msgstr ""
-
--#: c-family/c.opt:1352
--msgid ""
--"Specify which ABI to use for Objective-C family code and meta-data "
--"generation."
-+#: config/m68k/m68k-tables.opt:25
-+msgid "Known M68K CPUs (for use with the -mcpu= option):"
- msgstr ""
-
--#: c-family/c.opt:1358
--msgid ""
--"Generate special Objective-C methods to initialize/destroy non-POD C++ "
--"ivars, if needed."
-+#: config/m68k/m68k-tables.opt:365
-+msgid "Known M68K microarchitectures (for use with the -mtune= option):"
- msgstr ""
-
--#: c-family/c.opt:1362
--msgid "Allow fast jumps to the message dispatcher."
-+#: config/m68k/m68k-tables.opt:411
-+msgid "Known M68K ISAs (for use with the -march= option):"
- msgstr ""
-
--#: c-family/c.opt:1368
--msgid "Enable Objective-C exception and synchronization syntax."
-+#: config/v850/v850.opt:29
-+msgid "Use registers r2 and r5."
- msgstr ""
-
--#: c-family/c.opt:1372
--msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs."
-+#: config/v850/v850.opt:33
-+msgid "Use 4 byte entries in switch tables."
- msgstr ""
-
--#: c-family/c.opt:1376
--msgid ""
--"Enable inline checks for nil receivers with the NeXT runtime and ABI version "
--"2."
-+#: config/v850/v850.opt:37
-+msgid "Enable backend debugging."
- msgstr ""
-
--#: c-family/c.opt:1381
--msgid "Enable Objective-C setjmp exception handling runtime."
-+#: config/v850/v850.opt:41
-+msgid "Do not use the callt instruction (default)."
- msgstr ""
-
--#: c-family/c.opt:1385
--msgid "Conform to the Objective-C 1.0 language as implemented in GCC 4.0."
-+#: config/v850/v850.opt:45
-+msgid "Reuse r30 on a per function basis."
- msgstr ""
-
--#: c-family/c.opt:1389
--msgid "Enable OpenACC."
-+#: config/v850/v850.opt:52
-+msgid "Prohibit PC relative function calls."
- msgstr ""
-
--#: c-family/c.opt:1393
--msgid "Specify default OpenACC compute dimensions."
-+#: config/v850/v850.opt:56
-+msgid "Use stubs for function prologues."
- msgstr ""
-
--#: c-family/c.opt:1397
--msgid "Enable OpenMP (implies -frecursive in Fortran)."
-+#: config/v850/v850.opt:60
-+msgid "Set the max size of data eligible for the SDA area."
- msgstr ""
-
--#: c-family/c.opt:1401
--msgid "Enable OpenMP's SIMD directives."
-+#: config/v850/v850.opt:67
-+msgid "Enable the use of the short load instructions."
- msgstr ""
-
--#: c-family/c.opt:1405
--msgid "Recognize C++ keywords like \"compl\" and \"xor\"."
-+#: config/v850/v850.opt:71
-+msgid "Same as: -mep -mprolog-function."
- msgstr ""
-
--#: c-family/c.opt:1416
--msgid "Look for and use PCH files even when preprocessing."
-+#: config/v850/v850.opt:75
-+msgid "Set the max size of data eligible for the TDA area."
- msgstr ""
-
--#: c-family/c.opt:1420
--msgid "Downgrade conformance errors to warnings."
-+#: config/v850/v850.opt:82
-+msgid "Do not enforce strict alignment."
- msgstr ""
-
--#: c-family/c.opt:1424
--msgid "Enable Plan 9 language extensions."
--msgstr ""
--
--#: c-family/c.opt:1428
--msgid "Treat the input file as already preprocessed."
--msgstr ""
--
--#: c-family/c.opt:1436
-+#: config/v850/v850.opt:86
- msgid ""
--"-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro "
--"expansion and display them in error messages."
-+"Put jump tables for switch statements into the .data section rather than "
-+"the .code section."
- msgstr ""
-
--#: c-family/c.opt:1440
--msgid ""
--"-fno-pretty-templates Do not pretty-print template specializations as the "
--"template signature followed by the arguments."
-+#: config/v850/v850.opt:93
-+msgid "Compile for the v850 processor."
- msgstr ""
-
--#: c-family/c.opt:1444
--msgid ""
--"Used in Fix-and-Continue mode to indicate that object files may be swapped "
--"in at runtime."
-+#: config/v850/v850.opt:97
-+msgid "Compile for the v850e processor."
- msgstr ""
-
--#: c-family/c.opt:1448
--msgid "Enable automatic template instantiation."
-+#: config/v850/v850.opt:101
-+msgid "Compile for the v850e1 processor."
- msgstr ""
-
--#: c-family/c.opt:1452
--msgid "Generate run time type descriptor information."
-+#: config/v850/v850.opt:105
-+msgid "Compile for the v850es variant of the v850e1."
- msgstr ""
-
--#: c-family/c.opt:1456 ada/gcc-interface/lang.opt:77
--msgid "Use the narrowest integer type possible for enumeration types."
-+#: config/v850/v850.opt:109
-+msgid "Compile for the v850e2 processor."
- msgstr ""
-
--#: c-family/c.opt:1460
--msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"."
-+#: config/v850/v850.opt:113
-+msgid "Compile for the v850e2v3 processor."
- msgstr ""
-
--#: c-family/c.opt:1464
--msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed."
-+#: config/v850/v850.opt:117
-+msgid "Compile for the v850e3v5 processor."
- msgstr ""
-
--#: c-family/c.opt:1468 ada/gcc-interface/lang.opt:81
--msgid "Make \"char\" signed by default."
-+#: config/v850/v850.opt:124
-+msgid "Enable v850e3v5 loop instructions."
- msgstr ""
-
--#: c-family/c.opt:1472
--msgid "Enable C++14 sized deallocation support."
-+#: config/v850/v850.opt:128
-+msgid "Set the max size of data eligible for the ZDA area."
- msgstr ""
-
--#: c-family/c.opt:1479
--msgid ""
--"-fsso-struct=[big-endian|little-endian]\tSet the default scalar storage "
--"order."
-+#: config/v850/v850.opt:135
-+msgid "Enable relaxing in the assembler."
- msgstr ""
-
--#: c-family/c.opt:1482
--#, c-format
--msgid "unrecognized scalar storage order value %qs"
-+#: config/v850/v850.opt:139
-+msgid "Prohibit PC relative jumps."
- msgstr ""
-
--#: c-family/c.opt:1492
--msgid "Display statistics accumulated during compilation."
-+#: config/v850/v850.opt:143
-+msgid "Inhibit the use of hardware floating point instructions."
- msgstr ""
-
--#: c-family/c.opt:1496
-+#: config/v850/v850.opt:147
- msgid ""
--"Assume that values of enumeration type are always within the minimum range "
--"of that type."
-+"Allow the use of hardware floating point instructions for V850E2V3 and up."
- msgstr ""
-
--#: c-family/c.opt:1503
--msgid "-ftabstop=<number>\tDistance between tab stops for column reporting."
-+#: config/v850/v850.opt:151
-+msgid "Enable support for the RH850 ABI. This is the default."
- msgstr ""
-
--#: c-family/c.opt:1507
--msgid ""
--"Set the maximum number of template instantiation notes for a single warning "
--"or error."
-+#: config/v850/v850.opt:155
-+msgid "Enable support for the old GCC ABI."
- msgstr ""
-
--#: c-family/c.opt:1514
--msgid ""
--"-ftemplate-depth=<number>\tSpecify maximum template instantiation depth."
-+#: config/v850/v850.opt:159
-+msgid "Support alignments of up to 64-bits."
- msgstr ""
-
--#: c-family/c.opt:1521
--msgid ""
--"-fno-threadsafe-statics\tDo not generate thread-safe code for initializing "
--"local statics."
-+#: config/m32r/m32r.opt:34
-+msgid "Compile for the m32rx."
- msgstr ""
-
--#: c-family/c.opt:1525
--msgid ""
--"When \"signed\" or \"unsigned\" is not given make the bitfield unsigned."
-+#: config/m32r/m32r.opt:38
-+msgid "Compile for the m32r2."
- msgstr ""
-
--#: c-family/c.opt:1529
--msgid "Make \"char\" unsigned by default."
-+#: config/m32r/m32r.opt:42
-+msgid "Compile for the m32r."
- msgstr ""
-
--#: c-family/c.opt:1533
--msgid "Use __cxa_atexit to register destructors."
-+#: config/m32r/m32r.opt:46
-+msgid "Align all loops to 32 byte boundary."
- msgstr ""
-
--#: c-family/c.opt:1537
--msgid "Use __cxa_get_exception_ptr in exception handling."
-+#: config/m32r/m32r.opt:50
-+msgid "Prefer branches over conditional execution."
- msgstr ""
-
--#: c-family/c.opt:1541
--msgid "Marks all inlined functions and methods as having hidden visibility."
-+#: config/m32r/m32r.opt:54
-+msgid "Give branches their default cost."
- msgstr ""
-
--#: c-family/c.opt:1545
--msgid "Changes visibility to match Microsoft Visual Studio by default."
-+#: config/m32r/m32r.opt:58
-+msgid "Display compile time statistics."
- msgstr ""
-
--#: c-family/c.opt:1557
--msgid "Emit common-like symbols as weak symbols."
-+#: config/m32r/m32r.opt:62
-+msgid "Specify cache flush function."
- msgstr ""
-
--#: c-family/c.opt:1561
--msgid ""
--"-fwide-exec-charset=<cset>\tConvert all wide strings and character constants "
--"to character set <cset>."
-+#: config/m32r/m32r.opt:66
-+msgid "Specify cache flush trap number."
- msgstr ""
-
--#: c-family/c.opt:1565
--msgid "Generate a #line directive pointing at the current working directory."
-+#: config/m32r/m32r.opt:70
-+msgid "Only issue one instruction per cycle."
- msgstr ""
-
--#: c-family/c.opt:1573
--msgid ""
--"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode."
-+#: config/m32r/m32r.opt:74
-+msgid "Allow two instructions to be issued per cycle."
- msgstr ""
-
--#: c-family/c.opt:1577
--msgid "Dump declarations to a .decl file."
-+#: config/m32r/m32r.opt:78
-+msgid "Code size: small, medium or large."
- msgstr ""
-
--#: c-family/c.opt:1581
--msgid ""
--"-femit-struct-debug-baseonly\tAggressive reduced debug info for structs."
-+#: config/m32r/m32r.opt:94
-+msgid "Don't call any cache flush functions."
- msgstr ""
-
--#: c-family/c.opt:1585
--msgid ""
--"-femit-struct-debug-reduced\tConservative reduced debug info for structs."
-+#: config/m32r/m32r.opt:98
-+msgid "Don't call any cache flush trap."
- msgstr ""
-
--#: c-family/c.opt:1589
--msgid ""
--"-femit-struct-debug-detailed=<spec-list>\tDetailed reduced debug info for "
--"structs."
-+#: config/m32r/m32r.opt:105
-+msgid "Small data area: none, sdata, use."
- msgstr ""
-
--#: c-family/c.opt:1593
--msgid ""
--"Interpret imaginary, fixed-point, or other gnu number suffix as the "
--"corresponding"
-+#: config/arm/arm.opt:26
-+msgid "TLS dialect to use:"
- msgstr ""
-
--#: c-family/c.opt:1598
--msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path."
-+#: config/arm/arm.opt:36
-+msgid "Specify an ABI."
- msgstr ""
-
--#: c-family/c.opt:1602
--msgid "-imacros <file>\tAccept definition of macros in <file>."
-+#: config/arm/arm.opt:40
-+msgid "Known ARM ABIs (for use with the -mabi= option):"
- msgstr ""
-
--#: c-family/c.opt:1606
--msgid "-imultilib <dir>\tSet <dir> to be the multilib include subdirectory."
-+#: config/arm/arm.opt:59
-+msgid "Generate a call to abort if a noreturn function returns."
- msgstr ""
-
--#: c-family/c.opt:1610
--msgid "-include <file>\tInclude the contents of <file> before other files."
-+#: config/arm/arm.opt:66
-+msgid "Pass FP arguments in FP registers."
- msgstr ""
-
--#: c-family/c.opt:1614
--msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options."
-+#: config/arm/arm.opt:70
-+msgid "Generate APCS conformant stack frames."
- msgstr ""
-
--#: c-family/c.opt:1618
--msgid "-isysroot <dir>\tSet <dir> to be the system root directory."
-+#: config/arm/arm.opt:74
-+msgid "Generate re-entrant, PIC code."
- msgstr ""
-
--#: c-family/c.opt:1622
--msgid "-isystem <dir>\tAdd <dir> to the start of the system include path."
-+#: config/arm/arm.opt:90
-+msgid "Generate code in 32 bit ARM state."
- msgstr ""
-
--#: c-family/c.opt:1626
--msgid "-iquote <dir>\tAdd <dir> to the end of the quote include path."
-+#: config/arm/arm.opt:98
-+msgid "Thumb: Assume non-static functions may be called from ARM code."
- msgstr ""
-
--#: c-family/c.opt:1630
--msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path."
-+#: config/arm/arm.opt:102
-+msgid "Thumb: Assume function pointers may go to non-Thumb aware code."
- msgstr ""
-
--#: c-family/c.opt:1634
--msgid ""
--"-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path."
-+#: config/arm/arm.opt:106 config/bfin/bfin.opt:44
-+msgid "Specify the name of the target CPU."
- msgstr ""
-
--#: c-family/c.opt:1644
--msgid ""
--"Do not search standard system include directories (those specified with -"
--"isystem will still be used)."
-+#: config/arm/arm.opt:110
-+msgid "Specify if floating point hardware should be used."
- msgstr ""
-
--#: c-family/c.opt:1648
--msgid "Do not search standard system include directories for C++."
-+#: config/arm/arm.opt:114
-+msgid "Known floating-point ABIs (for use with the -mfloat-abi= option):"
- msgstr ""
-
--#: c-family/c.opt:1660
--msgid "Generate C header of platform-specific features."
-+#: config/arm/arm.opt:127
-+msgid "Switch ARM/Thumb modes on alternating functions for compiler testing."
- msgstr ""
-
--#: c-family/c.opt:1664
--msgid "Remap file names when including files."
-+#: config/arm/arm.opt:131
-+msgid "Specify the __fp16 floating-point format."
- msgstr ""
-
--#: c-family/c.opt:1668 c-family/c.opt:1672
--msgid ""
--"Conform to the ISO 1998 C++ standard revised by the 2003 technical "
--"corrigendum."
-+#: config/arm/arm.opt:135
-+msgid "Known __fp16 formats (for use with the -mfp16-format= option):"
- msgstr ""
-
--#: c-family/c.opt:1676
--msgid "Conform to the ISO 2011 C++ standard."
-+#: config/arm/arm.opt:148
-+msgid "Specify the name of the target floating point hardware/format."
- msgstr ""
-
--#: c-family/c.opt:1680
--msgid "Deprecated in favor of -std=c++11."
-+#: config/arm/arm.opt:159
-+msgid "Generate call insns as indirect calls, if necessary."
- msgstr ""
-
--#: c-family/c.opt:1684
--msgid "Deprecated in favor of -std=c++14."
-+#: config/arm/arm.opt:163
-+msgid "Assume data segments are relative to text segment."
- msgstr ""
-
--#: c-family/c.opt:1688
--msgid "Conform to the ISO 2014 C++ standard."
-+#: config/arm/arm.opt:167
-+msgid "Specify the register to be used for PIC addressing."
- msgstr ""
-
--#: c-family/c.opt:1692
--msgid ""
--"Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete "
--"support)."
-+#: config/arm/arm.opt:171
-+msgid "Store function names in object code."
- msgstr ""
-
--#: c-family/c.opt:1699 c-family/c.opt:1796
--msgid "Conform to the ISO 2011 C standard."
-+#: config/arm/arm.opt:175
-+msgid "Permit scheduling of a function's prologue sequence."
- msgstr ""
-
--#: c-family/c.opt:1703
--msgid "Deprecated in favor of -std=c11."
-+#: config/arm/arm.opt:179 config/rs6000/rs6000.opt:248
-+msgid "Do not load the PIC register in function prologues."
- msgstr ""
-
--#: c-family/c.opt:1707 c-family/c.opt:1711 c-family/c.opt:1780
--msgid "Conform to the ISO 1990 C standard."
-+#: config/arm/arm.opt:186
-+msgid "Specify the minimum bit alignment of structures."
- msgstr ""
-
--#: c-family/c.opt:1715 c-family/c.opt:1788
--msgid "Conform to the ISO 1999 C standard."
-+#: config/arm/arm.opt:190
-+msgid "Generate code for Thumb state."
- msgstr ""
-
--#: c-family/c.opt:1719
--msgid "Deprecated in favor of -std=c99."
-+#: config/arm/arm.opt:194
-+msgid "Support calls between Thumb and ARM instruction sets."
- msgstr ""
-
--#: c-family/c.opt:1723 c-family/c.opt:1728
--msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical"
-+#: config/arm/arm.opt:198
-+msgid "Specify thread local storage scheme."
- msgstr ""
-
--#: c-family/c.opt:1733
--msgid "Conform to the ISO 2011 C++ standard with GNU extensions."
-+#: config/arm/arm.opt:202
-+msgid "Specify how to access the thread pointer."
- msgstr ""
-
--#: c-family/c.opt:1737
--msgid "Deprecated in favor of -std=gnu++11."
-+#: config/arm/arm.opt:206
-+msgid "Valid arguments to -mtp=:"
- msgstr ""
-
--#: c-family/c.opt:1741
--msgid "Deprecated in favor of -std=gnu++14."
-+#: config/arm/arm.opt:219
-+msgid "Thumb: Generate (non-leaf) stack frames even if not needed."
- msgstr ""
-
--#: c-family/c.opt:1745
--msgid "Conform to the ISO 2014 C++ standard with GNU extensions."
-+#: config/arm/arm.opt:223
-+msgid "Thumb: Generate (leaf) stack frames even if not needed."
- msgstr ""
-
--#: c-family/c.opt:1749
-+#: config/arm/arm.opt:231
- msgid ""
--"Conform to the ISO 201z(7?) C++ draft standard with GNU extensions "
--"(experimental and incomplete support)."
-+"Print CPU tuning information as comment in assembler file. This is an "
-+"option used only for regression testing of the compiler and not intended for "
-+"ordinary use in compiling code."
- msgstr ""
-
--#: c-family/c.opt:1756
--msgid "Conform to the ISO 2011 C standard with GNU extensions."
-+#: config/arm/arm.opt:242
-+msgid ""
-+"Use Neon quad-word (rather than double-word) registers for vectorization."
- msgstr ""
-
--#: c-family/c.opt:1760
--msgid "Deprecated in favor of -std=gnu11."
-+#: config/arm/arm.opt:246
-+msgid ""
-+"Use Neon double-word (rather than quad-word) registers for vectorization."
- msgstr ""
-
--#: c-family/c.opt:1764 c-family/c.opt:1768
--msgid "Conform to the ISO 1990 C standard with GNU extensions."
-+#: config/arm/arm.opt:250
-+msgid "Only generate absolute relocations on word sized values."
- msgstr ""
-
--#: c-family/c.opt:1772
--msgid "Conform to the ISO 1999 C standard with GNU extensions."
-+#: config/arm/arm.opt:254
-+msgid "Generate IT blocks appropriate for ARMv8."
- msgstr ""
-
--#: c-family/c.opt:1776
--msgid "Deprecated in favor of -std=gnu99."
-+#: config/arm/arm.opt:258
-+msgid "Use the old RTX costing tables (transitional)."
- msgstr ""
-
--#: c-family/c.opt:1784
--msgid "Conform to the ISO 1990 C standard as amended in 1994."
-+#: config/arm/arm.opt:262
-+msgid ""
-+"Use the new generic RTX cost tables if new core-specific cost table not "
-+"available (transitional)."
- msgstr ""
-
--#: c-family/c.opt:1792
--msgid "Deprecated in favor of -std=iso9899:1999."
-+#: config/arm/arm.opt:266
-+msgid ""
-+"Avoid overlapping destination and address registers on LDRD instructions "
-+"that may trigger Cortex-M3 errata."
- msgstr ""
-
--#: c-family/c.opt:1803
--msgid "Enable traditional preprocessing."
-+#: config/arm/arm.opt:271
-+msgid "Enable unaligned word and halfword accesses to packed data."
- msgstr ""
-
--#: c-family/c.opt:1807
--msgid "-trigraphs\tSupport ISO C trigraphs."
-+#: config/arm/arm.opt:275
-+msgid "Use Neon to perform 64-bits operations rather than core registers."
- msgstr ""
-
--#: c-family/c.opt:1811
--msgid "Do not predefine system-specific and GCC-specific macros."
-+#: config/arm/arm.opt:279
-+msgid "Assume loading data from flash is slower than fetching instructions."
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:61
--msgid "Synonym of -gnatk8."
-+#: config/arm/arm.opt:283
-+msgid "Assume unified syntax for inline assembly code."
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:69
--msgid "Do not look for object files in standard path."
-+#: config/arm/arm-tables.opt:25
-+msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:73
--msgid "Select the runtime."
-+#: config/arm/arm-tables.opt:341
-+msgid "Known ARM architectures (for use with the -march= option):"
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:85
--msgid "Catch typos."
-+#: config/arm/arm-tables.opt:438
-+msgid "Known ARM FPUs (for use with the -mfpu= option):"
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:89
--msgid "Set name of output ALI file (internal switch)."
-+#: config/tilepro/tilepro.opt:23
-+msgid ""
-+"Compile with 32 bit longs and pointers, which is the only supported behavior "
-+"and thus the flag is ignored."
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:93
--msgid "-gnat<options>\tSpecify options to GNAT."
-+#: config/tilepro/tilepro.opt:28 config/tilegx/tilegx.opt:26
-+msgid "-mcpu=CPU\tUse features of and schedule code for given CPU."
- msgstr ""
-
--#: ada/gcc-interface/lang.opt:97
--msgid "Ignored."
-+#: config/tilepro/tilepro.opt:32
-+msgid "Known TILEPro CPUs (for use with the -mcpu= option):"
- msgstr ""
-
--#: go/lang.opt:42
--msgid "Add explicit checks for division by zero."
-+#: config/sol2.opt:32
-+msgid "Clear hardware capabilities when linking."
- msgstr ""
-
--#: go/lang.opt:46
--msgid "Add explicit checks for division overflow in INT_MIN / -1."
-+#: config/sol2.opt:36
-+msgid "Pass -z text to linker."
- msgstr ""
-
--#: go/lang.opt:50
--msgid "-fgo-dump-<type>\tDump Go frontend internal information."
--msgstr ""
--
--#: go/lang.opt:54
--msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend."
--msgstr ""
--
--#: go/lang.opt:58
--msgid "-fgo-pkgpath=<string>\tSet Go package path."
--msgstr ""
--
--#: go/lang.opt:62
--msgid ""
--"-fgo-prefix=<string>\tSet package-specific prefix for exported Go names."
--msgstr ""
--
--#: go/lang.opt:66
--msgid ""
--"-fgo-relative-import-path=<path> Treat a relative import as relative to path."
--msgstr ""
--
--#: go/lang.opt:70
--msgid "Functions which return values must end with return statements."
--msgstr ""
--
- #: config/vms/vms.opt:27
- msgid "Malloc data into P2 space."
- msgstr ""
-@@ -7867,1157 +7657,600 @@
- msgid "unknown pointer size model %qs"
- msgstr ""
-
--#: config/mcore/mcore.opt:23
--msgid "Generate code for the M*Core M210"
-+#: config/avr/avr.opt:23
-+msgid "Use subroutines for function prologues and epilogues."
- msgstr ""
-
--#: config/mcore/mcore.opt:27
--msgid "Generate code for the M*Core M340"
-+#: config/avr/avr.opt:26
-+#, c-format
-+msgid "missing device or architecture after %qs"
- msgstr ""
-
--#: config/mcore/mcore.opt:31
--msgid "Force functions to be aligned to a 4 byte boundary."
-+#: config/avr/avr.opt:27
-+msgid "-mmcu=MCU\tSelect the target MCU."
- msgstr ""
-
--#: config/mcore/mcore.opt:35 config/moxie/moxie.opt:23
--msgid "Generate big-endian code."
-+#: config/avr/avr.opt:31
-+msgid "Set the number of 64 KiB flash segments."
- msgstr ""
-
--#: config/mcore/mcore.opt:39
--msgid "Emit call graph information."
-+#: config/avr/avr.opt:35
-+msgid "Indicate presence of a processor erratum."
- msgstr ""
-
--#: config/mcore/mcore.opt:43
--msgid "Use the divide instruction."
-+#: config/avr/avr.opt:39
-+msgid "Enable Read-Modify-Write (RMW) instructions support/use."
- msgstr ""
-
--#: config/mcore/mcore.opt:47
--msgid "Inline constants if it can be done in 2 insns or less."
-+#: config/avr/avr.opt:49
-+msgid "Use an 8-bit 'int' type."
- msgstr ""
-
--#: config/mcore/mcore.opt:51 config/moxie/moxie.opt:27
--msgid "Generate little-endian code."
-+#: config/avr/avr.opt:53
-+msgid "Change the stack pointer without disabling interrupts."
- msgstr ""
-
--#: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
-+#: config/avr/avr.opt:57
- msgid ""
--"Assume that run-time support has been provided, so omit -lsim from the "
--"linker command line."
-+"Set the branch costs for conditional branch instructions. Reasonable values "
-+"are small, non-negative integers. The default branch cost is 0."
- msgstr ""
-
--#: config/mcore/mcore.opt:60
--msgid "Use arbitrary sized immediates in bit operations."
-+#: config/avr/avr.opt:67
-+msgid "Change only the low 8 bits of the stack pointer."
- msgstr ""
-
--#: config/mcore/mcore.opt:64
--msgid "Prefer word accesses over byte accesses."
-+#: config/avr/avr.opt:71
-+msgid "Relax branches."
- msgstr ""
-
--#: config/mcore/mcore.opt:71
--msgid "Set the maximum amount for a single stack increment operation."
-+#: config/avr/avr.opt:75
-+msgid ""
-+"Make the linker relaxation machine assume that a program counter wrap-around "
-+"occurs."
- msgstr ""
-
--#: config/mcore/mcore.opt:75
--msgid "Always treat bitfields as int-sized."
-+#: config/avr/avr.opt:79
-+msgid ""
-+"Accumulate outgoing function arguments and acquire/release the needed stack "
-+"space for outpoing function arguments in function prologue/epilogue. "
-+"Without this option, outgoing arguments are pushed before calling a function "
-+"and popped afterwards. This option can lead to reduced code size for "
-+"functions that call many functions that get their arguments on the stack "
-+"like, for example printf."
- msgstr ""
-
--#: config/linux-android.opt:23
--msgid "Generate code for the Android platform."
-+#: config/avr/avr.opt:83
-+msgid ""
-+"When accessing RAM, use X as imposed by the hardware, i.e. just use pre-"
-+"decrement, post-increment and indirect addressing with the X register. "
-+"Without this option, the compiler may assume that there is an addressing "
-+"mode X+const similar to Y+const and Z+const and emit instructions to emulate "
-+"such an addressing mode for X."
- msgstr ""
-
--#: config/mmix/mmix.opt:24
--msgid "For intrinsics library: pass all parameters in registers."
-+#: config/avr/avr.opt:88
-+msgid ""
-+"The device has no SPH special function register. This option will be "
-+"overridden by the compiler driver with the correct setting if presence/"
-+"absence of SPH can be deduced from -mmcu=MCU."
- msgstr ""
-
--#: config/mmix/mmix.opt:28
--msgid "Use register stack for parameters and return value."
-+#: config/avr/avr.opt:92
-+msgid "Warn if the address space of an address is changed."
- msgstr ""
-
--#: config/mmix/mmix.opt:32
--msgid "Use call-clobbered registers for parameters and return value."
--msgstr ""
--
--#: config/mmix/mmix.opt:37
--msgid "Use epsilon-respecting floating point compare instructions."
--msgstr ""
--
--#: config/mmix/mmix.opt:41
--msgid "Use zero-extending memory loads, not sign-extending ones."
--msgstr ""
--
--#: config/mmix/mmix.opt:45
-+#: config/avr/avr.opt:96
- msgid ""
--"Generate divide results with reminder having the same sign as the divisor "
--"(not the dividend)."
-+"Allow to use truncation instead of rounding towards 0 for fractional int "
-+"types."
- msgstr ""
-
--#: config/mmix/mmix.opt:49
--msgid "Prepend global symbols with \":\" (for use with PREFIX)."
-+#: config/avr/avr.opt:100
-+msgid "Do not link against the device-specific library lib<MCU>.a."
- msgstr ""
-
--#: config/mmix/mmix.opt:53
--msgid "Do not provide a default start-address 0x100 of the program."
-+#: config/s390/tpf.opt:23
-+msgid "Enable TPF-OS tracing code."
- msgstr ""
-
--#: config/mmix/mmix.opt:57
--msgid "Link to emit program in ELF format (rather than mmo)."
-+#: config/s390/tpf.opt:27
-+msgid "Specify main object for TPF-OS."
- msgstr ""
-
--#: config/mmix/mmix.opt:61
--msgid "Use P-mnemonics for branches statically predicted as taken."
-+#: config/s390/s390.opt:48
-+msgid "31 bit ABI."
- msgstr ""
-
--#: config/mmix/mmix.opt:65
--msgid "Don't use P-mnemonics for branches."
-+#: config/s390/s390.opt:52
-+msgid "64 bit ABI."
- msgstr ""
-
--#: config/mmix/mmix.opt:79
--msgid "Use addresses that allocate global registers."
-+#: config/s390/s390.opt:96
-+msgid "Maintain backchain pointer."
- msgstr ""
-
--#: config/mmix/mmix.opt:83
--msgid "Do not use addresses that allocate global registers."
-+#: config/s390/s390.opt:100
-+msgid "Additional debug prints."
- msgstr ""
-
--#: config/mmix/mmix.opt:87
--msgid "Generate a single exit point for each function."
-+#: config/s390/s390.opt:104
-+msgid "ESA/390 architecture."
- msgstr ""
-
--#: config/mmix/mmix.opt:91
--msgid "Do not generate a single exit point for each function."
-+#: config/s390/s390.opt:108
-+msgid "Enable decimal floating point hardware support."
- msgstr ""
-
--#: config/mmix/mmix.opt:95
--msgid "Set start-address of the program."
-+#: config/s390/s390.opt:112
-+msgid "Enable hardware floating point."
- msgstr ""
-
--#: config/mmix/mmix.opt:99
--msgid "Set start-address of data."
--msgstr ""
--
--#: config/darwin.opt:114
--msgid "Generate compile-time CFString objects."
--msgstr ""
--
--#: config/darwin.opt:211
--msgid "Warn if constant CFString objects contain non-portable characters."
--msgstr ""
--
--#: config/darwin.opt:216
--msgid "Generate AT&T-style stubs for Mach-O."
--msgstr ""
--
--#: config/darwin.opt:220
--msgid "Generate code suitable for executables (NOT shared libs)."
--msgstr ""
--
--#: config/darwin.opt:224
--msgid "Generate code suitable for fast turn around debugging."
--msgstr ""
--
--#: config/darwin.opt:232
--msgid "The earliest MacOS X version on which this program will run."
--msgstr ""
--
--#: config/darwin.opt:236
--msgid "Set sizeof(bool) to 1."
--msgstr ""
--
--#: config/darwin.opt:240
--msgid "Generate code for darwin loadable kernel extensions."
--msgstr ""
--
--#: config/darwin.opt:244
--msgid "Generate code for the kernel or loadable kernel extensions."
--msgstr ""
--
--#: config/darwin.opt:248
-+#: config/s390/s390.opt:116
- msgid ""
--"-iframework <dir>\tAdd <dir> to the end of the system framework include path."
-+"Takes two non-negative integer numbers separated by a comma. Prepend the "
-+"function label with the number of two-byte Nop instructions indicated by the "
-+"first. Append Nop instructions covering the number of halfwords indicated "
-+"by the second after the label. Nop instructions of the largest possible "
-+"size are used (six, four or two bytes), beginning with the largest possible "
-+"size. Using 0 for both values disables hotpatching."
- msgstr ""
-
--#: config/bfin/bfin.opt:40 config/msp430/msp430.opt:3 config/c6x/c6x.opt:38
--#: config/mep/mep.opt:143
--msgid "Use simulator runtime."
-+#: config/s390/s390.opt:134
-+msgid "Use hardware transactional execution instructions."
- msgstr ""
-
--#: config/bfin/bfin.opt:44 config/arm/arm.opt:106
--msgid "Specify the name of the target CPU."
-+#: config/s390/s390.opt:138
-+msgid "Use hardware vector facility instructions and enable the vector ABI."
- msgstr ""
-
--#: config/bfin/bfin.opt:48
--msgid "Omit frame pointer for leaf functions."
-+#: config/s390/s390.opt:142
-+msgid "Use packed stack layout."
- msgstr ""
-
--#: config/bfin/bfin.opt:52
--msgid "Program is entirely located in low 64k of memory."
-+#: config/s390/s390.opt:146
-+msgid "Use bras for executable < 64k."
- msgstr ""
-
--#: config/bfin/bfin.opt:56
--msgid "Work around a hardware anomaly by adding a number of NOPs before a"
-+#: config/s390/s390.opt:150
-+msgid "Disable hardware floating point."
- msgstr ""
-
--#: config/bfin/bfin.opt:61
--msgid "Avoid speculative loads to work around a hardware anomaly."
--msgstr ""
--
--#: config/bfin/bfin.opt:65
--msgid "Enabled ID based shared library."
--msgstr ""
--
--#: config/bfin/bfin.opt:69
-+#: config/s390/s390.opt:154
- msgid ""
--"Generate code that won't be linked against any other ID shared libraries,"
-+"Set the max. number of bytes which has to be left to stack size before a "
-+"trap instruction is triggered."
- msgstr ""
-
--#: config/bfin/bfin.opt:74 config/m68k/m68k.opt:171
--msgid "ID of shared library to build."
-+#: config/s390/s390.opt:158
-+msgid "Switches off the -mstack-guard= option."
- msgstr ""
-
--#: config/bfin/bfin.opt:78 config/m68k/m68k.opt:167
--msgid "Enable separate data segment."
--msgstr ""
--
--#: config/bfin/bfin.opt:82 config/c6x/c6x.opt:63
--msgid "Avoid generating pc-relative calls; use indirection."
--msgstr ""
--
--#: config/bfin/bfin.opt:86
--msgid "Link with the fast floating-point library."
--msgstr ""
--
--#: config/bfin/bfin.opt:90 config/frv/frv.opt:130
--msgid "Enable Function Descriptor PIC mode."
--msgstr ""
--
--#: config/bfin/bfin.opt:94 config/frv/frv.opt:162
--msgid "Enable inlining of PLT in function calls."
--msgstr ""
--
--#: config/bfin/bfin.opt:98
--msgid "Do stack checking using bounds in L1 scratch memory."
--msgstr ""
--
--#: config/bfin/bfin.opt:102
--msgid "Enable multicore support."
--msgstr ""
--
--#: config/bfin/bfin.opt:106
--msgid "Build for Core A."
--msgstr ""
--
--#: config/bfin/bfin.opt:110
--msgid "Build for Core B."
--msgstr ""
--
--#: config/bfin/bfin.opt:114
--msgid "Build for SDRAM."
--msgstr ""
--
--#: config/bfin/bfin.opt:118
--msgid "Assume ICPLBs are enabled at runtime."
--msgstr ""
--
--#: config/m68k/m68k-tables.opt:25
--msgid "Known M68K CPUs (for use with the -mcpu= option):"
--msgstr ""
--
--#: config/m68k/m68k-tables.opt:365
--msgid "Known M68K microarchitectures (for use with the -mtune= option):"
--msgstr ""
--
--#: config/m68k/m68k-tables.opt:411
--msgid "Known M68K ISAs (for use with the -march= option):"
--msgstr ""
--
--#: config/m68k/ieee.opt:24 config/i386/i386.opt:358
--msgid "Use IEEE math for fp comparisons."
--msgstr ""
--
--#: config/m68k/m68k.opt:30
--msgid "Generate code for a 520X."
--msgstr ""
--
--#: config/m68k/m68k.opt:34
--msgid "Generate code for a 5206e."
--msgstr ""
--
--#: config/m68k/m68k.opt:38
--msgid "Generate code for a 528x."
--msgstr ""
--
--#: config/m68k/m68k.opt:42
--msgid "Generate code for a 5307."
--msgstr ""
--
--#: config/m68k/m68k.opt:46
--msgid "Generate code for a 5407."
--msgstr ""
--
--#: config/m68k/m68k.opt:50 config/m68k/m68k.opt:111
--msgid "Generate code for a 68000."
--msgstr ""
--
--#: config/m68k/m68k.opt:54
--msgid "Generate code for a 68010."
--msgstr ""
--
--#: config/m68k/m68k.opt:58 config/m68k/m68k.opt:115
--msgid "Generate code for a 68020."
--msgstr ""
--
--#: config/m68k/m68k.opt:62
--msgid "Generate code for a 68040, without any new instructions."
--msgstr ""
--
--#: config/m68k/m68k.opt:66
--msgid "Generate code for a 68060, without any new instructions."
--msgstr ""
--
--#: config/m68k/m68k.opt:70
--msgid "Generate code for a 68030."
--msgstr ""
--
--#: config/m68k/m68k.opt:74
--msgid "Generate code for a 68040."
--msgstr ""
--
--#: config/m68k/m68k.opt:78
--msgid "Generate code for a 68060."
--msgstr ""
--
--#: config/m68k/m68k.opt:82
--msgid "Generate code for a 68302."
--msgstr ""
--
--#: config/m68k/m68k.opt:86
--msgid "Generate code for a 68332."
--msgstr ""
--
--#: config/m68k/m68k.opt:91
--msgid "Generate code for a 68851."
--msgstr ""
--
--#: config/m68k/m68k.opt:95
--msgid "Generate code that uses 68881 floating-point instructions."
--msgstr ""
--
--#: config/m68k/m68k.opt:99
--msgid "Align variables on a 32-bit boundary."
--msgstr ""
--
--#: config/m68k/m68k.opt:103 config/arm/arm.opt:81 config/nios2/nios2.opt:570
--#: config/nds32/nds32.opt:66 config/c6x/c6x.opt:67
--msgid "Specify the name of the target architecture."
--msgstr ""
--
--#: config/m68k/m68k.opt:107
--msgid "Use the bit-field instructions."
--msgstr ""
--
--#: config/m68k/m68k.opt:119
--msgid "Generate code for a ColdFire v4e."
--msgstr ""
--
--#: config/m68k/m68k.opt:123
--msgid "Specify the target CPU."
--msgstr ""
--
--#: config/m68k/m68k.opt:127
--msgid "Generate code for a cpu32."
--msgstr ""
--
--#: config/m68k/m68k.opt:131
--msgid "Use hardware division instructions on ColdFire."
--msgstr ""
--
--#: config/m68k/m68k.opt:135
--msgid "Generate code for a Fido A."
--msgstr ""
--
--#: config/m68k/m68k.opt:139
--msgid "Generate code which uses hardware floating point instructions."
--msgstr ""
--
--#: config/m68k/m68k.opt:143
--msgid "Enable ID based shared library."
--msgstr ""
--
--#: config/m68k/m68k.opt:147
--msgid "Do not use the bit-field instructions."
--msgstr ""
--
--#: config/m68k/m68k.opt:151
--msgid "Use normal calling convention."
--msgstr ""
--
--#: config/m68k/m68k.opt:155
--msgid "Consider type 'int' to be 32 bits wide."
--msgstr ""
--
--#: config/m68k/m68k.opt:159
--msgid "Generate pc-relative code."
--msgstr ""
--
--#: config/m68k/m68k.opt:163
--msgid "Use different calling convention using 'rtd'."
--msgstr ""
--
--#: config/m68k/m68k.opt:175
--msgid "Consider type 'int' to be 16 bits wide."
--msgstr ""
--
--#: config/m68k/m68k.opt:179
--msgid "Generate code with library calls for floating point."
--msgstr ""
--
--#: config/m68k/m68k.opt:183
--msgid "Do not use unaligned memory references."
--msgstr ""
--
--#: config/m68k/m68k.opt:187
--msgid "Tune for the specified target CPU or architecture."
--msgstr ""
--
--#: config/m68k/m68k.opt:191
--msgid "Support more than 8192 GOT entries on ColdFire."
--msgstr ""
--
--#: config/m68k/m68k.opt:195
--msgid "Support TLS segment larger than 64K."
--msgstr ""
--
--#: config/m32c/m32c.opt:23
--msgid "-msim\tUse simulator runtime."
--msgstr ""
--
--#: config/m32c/m32c.opt:27
--msgid "-mcpu=r8c\tCompile code for R8C variants."
--msgstr ""
--
--#: config/m32c/m32c.opt:31
--msgid "-mcpu=m16c\tCompile code for M16C variants."
--msgstr ""
--
--#: config/m32c/m32c.opt:35
--msgid "-mcpu=m32cm\tCompile code for M32CM variants."
--msgstr ""
--
--#: config/m32c/m32c.opt:39
--msgid "-mcpu=m32c\tCompile code for M32C variants."
--msgstr ""
--
--#: config/m32c/m32c.opt:43
--msgid "-memregs=\tNumber of memreg bytes (default: 16, range: 0..16)."
--msgstr ""
--
--#: config/msp430/msp430.opt:7
--msgid "Force assembly output to always use hex constants."
--msgstr ""
--
--#: config/msp430/msp430.opt:11
--msgid "Specify the MCU to build for."
--msgstr ""
--
--#: config/msp430/msp430.opt:15
-+#: config/s390/s390.opt:162
- msgid ""
--"Warn if an MCU name is unrecognised or conflicts with other options "
--"(default: on)."
-+"Emit extra code in the function prologue in order to trap if the stack size "
-+"exceeds the given limit."
- msgstr ""
-
--#: config/msp430/msp430.opt:19
--msgid "Specify the ISA to build for: msp430, msp430x, msp430xv2."
-+#: config/s390/s390.opt:166
-+msgid "Switches off the -mstack-size= option."
- msgstr ""
-
--#: config/msp430/msp430.opt:23
--msgid "Select large model - 20-bit addresses/pointers."
-+#: config/s390/s390.opt:174
-+msgid "Use the mvcle instruction for block moves."
- msgstr ""
-
--#: config/msp430/msp430.opt:27
--msgid "Select small model - 16-bit addresses/pointers (default)."
--msgstr ""
--
--#: config/msp430/msp430.opt:31
--msgid "Optimize opcode sizes at link time."
--msgstr ""
--
--#: config/msp430/msp430.opt:38
-+#: config/s390/s390.opt:178
- msgid ""
--"Use a minimum runtime (no static initializers or ctors) for memory-"
--"constrained devices."
-+"Enable the z vector language extension providing the context-sensitive "
-+"vector macro and enable the Altivec-style builtins in vecintrin.h."
- msgstr ""
-
--#: config/msp430/msp430.opt:45
--msgid "Specify the type of hardware multiply to support."
-+#: config/s390/s390.opt:183
-+msgid "Warn if a function uses alloca or creates an array with dynamic size."
- msgstr ""
-
--#: config/msp430/msp430.opt:67
--msgid "Specify whether functions should be placed into low or high memory."
-+#: config/s390/s390.opt:187
-+msgid "Warn if a single function's framesize exceeds the given framesize."
- msgstr ""
-
--#: config/msp430/msp430.opt:71
--msgid "Specify whether variables should be placed into low or high memory."
-+#: config/s390/s390.opt:191
-+msgid "z/Architecture."
- msgstr ""
-
--#: config/msp430/msp430.opt:90
-+#: config/s390/s390.opt:195
- msgid ""
--"Passes on a request to the assembler to enable fixes for various silicon "
--"errata."
-+"Set the branch costs for conditional branch instructions. Reasonable values "
-+"are small, non-negative integers. The default branch cost is 1."
- msgstr ""
-
--#: config/msp430/msp430.opt:94
--msgid ""
--"Passes on a request to the assembler to warn about various silicon errata."
-+#: config/darwin.opt:56 common.opt:336 common.opt:339 common.opt:2813
-+#: c-family/c.opt:70 c-family/c.opt:73 c-family/c.opt:76 c-family/c.opt:79
-+#: c-family/c.opt:175 c-family/c.opt:178 c-family/c.opt:216 c-family/c.opt:220
-+#: c-family/c.opt:232 c-family/c.opt:1601 c-family/c.opt:1609
-+#, c-format
-+msgid "missing filename after %qs"
- msgstr ""
-
--#: config/aarch64/aarch64.opt:40
--msgid "The possible TLS dialects:"
-+#: config/darwin.opt:117
-+msgid "Generate compile-time CFString objects."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:52
--msgid "The code model option names for -mcmodel:"
-+#: config/darwin.opt:214
-+msgid "Warn if constant CFString objects contain non-portable characters."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:65 config/arm/arm.opt:94
--#: config/microblaze/microblaze.opt:60
--msgid "Assume target CPU is configured as big endian."
-+#: config/darwin.opt:219
-+msgid "Generate AT&T-style stubs for Mach-O."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:69
--msgid "Generate code which uses only the general registers."
-+#: config/darwin.opt:223
-+msgid "Generate code suitable for executables (NOT shared libs)."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:73
--msgid "Workaround for ARM Cortex-A53 Erratum number 835769."
-+#: config/darwin.opt:227
-+msgid "Generate code suitable for fast turn around debugging."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:77
--msgid "Workaround for ARM Cortex-A53 Erratum number 843419."
-+#: config/darwin.opt:235
-+msgid "The earliest MacOS X version on which this program will run."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:81 config/arm/arm.opt:155
--#: config/microblaze/microblaze.opt:64
--msgid "Assume target CPU is configured as little endian."
-+#: config/darwin.opt:239
-+msgid "Set sizeof(bool) to 1."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:85
--msgid "Specify the code model."
-+#: config/darwin.opt:243
-+msgid "Generate code for darwin loadable kernel extensions."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:89
--msgid "Don't assume that unaligned accesses are handled by the system."
-+#: config/darwin.opt:247
-+msgid "Generate code for the kernel or loadable kernel extensions."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:93 config/i386/i386.opt:390
--msgid "Omit the frame pointer in leaf functions."
--msgstr ""
--
--#: config/aarch64/aarch64.opt:97
--msgid "Specify TLS dialect."
--msgstr ""
--
--#: config/aarch64/aarch64.opt:101
-+#: config/darwin.opt:251
- msgid ""
--"Specifies bit size of immediate TLS offsets. Valid values are 12, 24, 32, "
--"48."
-+"-iframework <dir>\tAdd <dir> to the end of the system framework include path."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:120
--msgid "-march=ARCH\tUse features of architecture ARCH."
-+#: config/darwin.opt:401
-+msgid "The version of ld64 in use for this toolchain."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:124
--msgid "-mcpu=CPU\tUse features of and optimize for CPU."
-+#: config/sh/superh.opt:6
-+msgid "Board name [and memory region]."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:128
--msgid "-mtune=CPU\tOptimize for CPU."
-+#: config/sh/superh.opt:10
-+msgid "Runtime name."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:132
--msgid "-mabi=ABI\tGenerate code that conforms to the specified ABI."
-+#: config/sh/sh.opt:48
-+msgid "Generate SH1 code."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:136
--msgid ""
--"-moverride=STRING\tPower users only! Override CPU optimization parameters."
-+#: config/sh/sh.opt:52
-+msgid "Generate SH2 code."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:140
--msgid "Known AArch64 ABIs (for use with the -mabi= option):"
-+#: config/sh/sh.opt:56
-+msgid "Generate default double-precision SH2a-FPU code."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:150
--msgid "PC relative literal loads."
-+#: config/sh/sh.opt:60
-+msgid "Generate SH2a FPU-less code."
- msgstr ""
-
--#: config/aarch64/aarch64.opt:154
--msgid "When calculating the reciprocal square root approximation,"
-+#: config/sh/sh.opt:64
-+msgid "Generate default single-precision SH2a-FPU code."
- msgstr ""
-
--#: config/linux.opt:24
--msgid "Use Bionic C library."
-+#: config/sh/sh.opt:68
-+msgid "Generate only single-precision SH2a-FPU code."
- msgstr ""
-
--#: config/linux.opt:28
--msgid "Use GNU C library."
-+#: config/sh/sh.opt:72
-+msgid "Generate SH2e code."
- msgstr ""
-
--#: config/linux.opt:32
--msgid "Use uClibc C library."
-+#: config/sh/sh.opt:76
-+msgid "Generate SH3 code."
- msgstr ""
-
--#: config/linux.opt:36
--msgid "Use musl C library."
-+#: config/sh/sh.opt:80
-+msgid "Generate SH3e code."
- msgstr ""
-
--#: config/ia64/ilp32.opt:3
--msgid "Generate ILP32 code."
-+#: config/sh/sh.opt:84
-+msgid "Generate SH4 code."
- msgstr ""
-
--#: config/ia64/ilp32.opt:7
--msgid "Generate LP64 code."
-+#: config/sh/sh.opt:88
-+msgid "Generate SH4-100 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:28
--msgid "Generate big endian code."
-+#: config/sh/sh.opt:92
-+msgid "Generate SH4-200 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:32
--msgid "Generate little endian code."
-+#: config/sh/sh.opt:98
-+msgid "Generate SH4-300 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:36
--msgid "Generate code for GNU as."
-+#: config/sh/sh.opt:102
-+msgid "Generate SH4 FPU-less code."
- msgstr ""
-
--#: config/ia64/ia64.opt:40
--msgid "Generate code for GNU ld."
-+#: config/sh/sh.opt:106
-+msgid "Generate SH4-100 FPU-less code."
- msgstr ""
-
--#: config/ia64/ia64.opt:44
--msgid "Emit stop bits before and after volatile extended asms."
-+#: config/sh/sh.opt:110
-+msgid "Generate SH4-200 FPU-less code."
- msgstr ""
-
--#: config/ia64/ia64.opt:48
--msgid "Use in/loc/out register names."
-+#: config/sh/sh.opt:114
-+msgid "Generate SH4-300 FPU-less code."
- msgstr ""
-
--#: config/ia64/ia64.opt:55
--msgid "Enable use of sdata/scommon/sbss."
-+#: config/sh/sh.opt:118
-+msgid "Generate code for SH4 340 series (MMU/FPU-less)."
- msgstr ""
-
--#: config/ia64/ia64.opt:59
--msgid "Generate code without GP reg."
-+#: config/sh/sh.opt:123
-+msgid "Generate code for SH4 400 series (MMU/FPU-less)."
- msgstr ""
-
--#: config/ia64/ia64.opt:63
--msgid "gp is constant (but save/restore gp on indirect calls)."
-+#: config/sh/sh.opt:128
-+msgid "Generate code for SH4 500 series (FPU-less)."
- msgstr ""
-
--#: config/ia64/ia64.opt:67
--msgid "Generate self-relocatable code."
-+#: config/sh/sh.opt:133
-+msgid "Generate default single-precision SH4 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:71
--msgid "Generate inline floating point division, optimize for latency."
-+#: config/sh/sh.opt:137
-+msgid "Generate default single-precision SH4-100 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:75
--msgid "Generate inline floating point division, optimize for throughput."
-+#: config/sh/sh.opt:141
-+msgid "Generate default single-precision SH4-200 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:82
--msgid "Generate inline integer division, optimize for latency."
-+#: config/sh/sh.opt:145
-+msgid "Generate default single-precision SH4-300 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:86
--msgid "Generate inline integer division, optimize for throughput."
-+#: config/sh/sh.opt:149
-+msgid "Generate only single-precision SH4 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:90
--msgid "Do not inline integer division."
-+#: config/sh/sh.opt:153
-+msgid "Generate only single-precision SH4-100 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:94
--msgid "Generate inline square root, optimize for latency."
-+#: config/sh/sh.opt:157
-+msgid "Generate only single-precision SH4-200 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:98
--msgid "Generate inline square root, optimize for throughput."
-+#: config/sh/sh.opt:161
-+msgid "Generate only single-precision SH4-300 code."
- msgstr ""
-
--#: config/ia64/ia64.opt:102
--msgid "Do not inline square root."
-+#: config/sh/sh.opt:165
-+msgid "Generate SH4a code."
- msgstr ""
-
--#: config/ia64/ia64.opt:106
--msgid "Enable DWARF line debug info via GNU as."
-+#: config/sh/sh.opt:169
-+msgid "Generate SH4a FPU-less code."
- msgstr ""
-
--#: config/ia64/ia64.opt:110
--msgid "Enable earlier placing stop bits for better scheduling."
-+#: config/sh/sh.opt:173
-+msgid "Generate default single-precision SH4a code."
- msgstr ""
-
--#: config/ia64/ia64.opt:114 config/spu/spu.opt:72 config/pa/pa.opt:58
--#: config/sh/sh.opt:273
--msgid "Specify range of registers to make fixed."
-+#: config/sh/sh.opt:177
-+msgid "Generate only single-precision SH4a code."
- msgstr ""
-
--#: config/ia64/ia64.opt:118 config/rs6000/sysv4.opt:32
--#: config/alpha/alpha.opt:130
--msgid "Specify bit size of immediate TLS offsets."
-+#: config/sh/sh.opt:181
-+msgid "Generate SH4al-dsp code."
- msgstr ""
-
--#: config/ia64/ia64.opt:122 config/spu/spu.opt:84 config/i386/i386.opt:504
--#: config/s390/s390.opt:170 config/sparc/sparc.opt:130
--#: config/visium/visium.opt:49
--msgid "Schedule code for given CPU."
-+#: config/sh/sh.opt:185
-+msgid "Generate 32-bit SHmedia code."
- msgstr ""
-
--#: config/ia64/ia64.opt:126
--msgid "Known Itanium CPUs (for use with the -mtune= option):"
-+#: config/sh/sh.opt:189
-+msgid "Generate 32-bit FPU-less SHmedia code."
- msgstr ""
-
--#: config/ia64/ia64.opt:136
--msgid "Use data speculation before reload."
-+#: config/sh/sh.opt:193
-+msgid "Generate 64-bit SHmedia code."
- msgstr ""
-
--#: config/ia64/ia64.opt:140
--msgid "Use data speculation after reload."
-+#: config/sh/sh.opt:197
-+msgid "Generate 64-bit FPU-less SHmedia code."
- msgstr ""
-
--#: config/ia64/ia64.opt:144
--msgid "Use control speculation."
-+#: config/sh/sh.opt:201
-+msgid "Generate SHcompact code."
- msgstr ""
-
--#: config/ia64/ia64.opt:148
--msgid "Use in block data speculation before reload."
-+#: config/sh/sh.opt:205
-+msgid "Generate FPU-less SHcompact code."
- msgstr ""
-
--#: config/ia64/ia64.opt:152
--msgid "Use in block data speculation after reload."
-+#: config/sh/sh.opt:209 config/i386/i386.opt:206
-+msgid "Reserve space for outgoing arguments in the function prologue."
- msgstr ""
-
--#: config/ia64/ia64.opt:156
--msgid "Use in block control speculation."
-+#: config/sh/sh.opt:213 config/pa/pa.opt:42 config/pa/pa.opt:66 common.opt:1074
-+#: common.opt:1301 common.opt:1653 common.opt:1999 common.opt:2035
-+#: common.opt:2124 common.opt:2128 common.opt:2224 common.opt:2306
-+#: common.opt:2314 common.opt:2322 common.opt:2330 common.opt:2431
-+#: common.opt:2558 c-family/c.opt:1155 c-family/c.opt:1179 c-family/c.opt:1409
-+#: fortran/lang.opt:699
-+msgid "Does nothing. Preserved for backward compatibility."
- msgstr ""
-
--#: config/ia64/ia64.opt:160
--msgid "Use simple data speculation check."
-+#: config/sh/sh.opt:217
-+msgid "Generate code in big endian mode."
- msgstr ""
-
--#: config/ia64/ia64.opt:164
--msgid "Use simple data speculation check for control speculation."
-+#: config/sh/sh.opt:221
-+msgid "Generate 32-bit offsets in switch tables."
- msgstr ""
-
--#: config/ia64/ia64.opt:174
--msgid ""
--"Count speculative dependencies while calculating priority of instructions."
-+#: config/sh/sh.opt:225
-+msgid "Generate bit instructions."
- msgstr ""
-
--#: config/ia64/ia64.opt:178
--msgid "Place a stop bit after every cycle when scheduling."
-+#: config/sh/sh.opt:229
-+msgid "Cost to assume for a branch insn."
- msgstr ""
-
--#: config/ia64/ia64.opt:182
--msgid ""
--"Assume that floating-point stores and loads are not likely to cause conflict "
--"when placed into one instruction group."
-+#: config/sh/sh.opt:233
-+msgid "Assume that zero displacement conditional branches are fast."
- msgstr ""
-
--#: config/ia64/ia64.opt:186
--msgid ""
--"Soft limit on number of memory insns per instruction group, giving lower "
--"priority to subsequent memory insns attempting to schedule in the same insn "
--"group. Frequently useful to prevent cache bank conflicts. Default value is "
--"1."
-+#: config/sh/sh.opt:236 config/sh/sh.opt:240
-+#, c-format
-+msgid "%qs is deprecated and has no effect"
- msgstr ""
-
--#: config/ia64/ia64.opt:190
--msgid ""
--"Disallow more than 'msched-max-memory-insns' in instruction group. "
--"Otherwise, limit is 'soft' (prefer non-memory operations when limit is "
--"reached)."
-+#: config/sh/sh.opt:237
-+msgid "Enable cbranchdi4 pattern."
- msgstr ""
-
--#: config/ia64/ia64.opt:194
--msgid "Don't generate checks for control speculation in selective scheduling."
-+#: config/sh/sh.opt:241
-+msgid "Emit cmpeqdi_t pattern even when -mcbranchdi is in effect."
- msgstr ""
-
--#: config/spu/spu.opt:20
--msgid "Emit warnings when run-time relocations are generated."
-+#: config/sh/sh.opt:245
-+msgid "Force the usage of delay slots for conditional branches."
- msgstr ""
-
--#: config/spu/spu.opt:24
--msgid "Emit errors when run-time relocations are generated."
-+#: config/sh/sh.opt:249
-+msgid "Enable SH5 cut2 workaround."
- msgstr ""
-
--#: config/spu/spu.opt:28
--msgid "Specify cost of branches (Default 20)."
-+#: config/sh/sh.opt:253
-+msgid "Align doubles at 64-bit boundaries."
- msgstr ""
-
--#: config/spu/spu.opt:32
--msgid "Make sure loads and stores are not moved past DMA instructions."
--msgstr ""
--
--#: config/spu/spu.opt:36
--msgid "volatile must be specified on any memory that is effected by DMA."
--msgstr ""
--
--#: config/spu/spu.opt:40 config/spu/spu.opt:44
-+#: config/sh/sh.opt:257
- msgid ""
--"Insert nops when it might improve performance by allowing dual issue "
--"(default)."
-+"Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, "
-+"inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table."
- msgstr ""
-
--#: config/spu/spu.opt:48
--msgid "Use standard main function as entry for startup."
-+#: config/sh/sh.opt:261
-+msgid "Specify name for 32 bit signed division function."
- msgstr ""
-
--#: config/spu/spu.opt:52
--msgid "Generate branch hints for branches."
-+#: config/sh/sh.opt:265
-+msgid "Generate ELF FDPIC code."
- msgstr ""
-
--#: config/spu/spu.opt:56
--msgid "Maximum number of nops to insert for a hint (Default 2)."
--msgstr ""
--
--#: config/spu/spu.opt:60
-+#: config/sh/sh.opt:269
- msgid ""
--"Approximate maximum number of instructions to allow between a hint and its "
--"branch [125]."
-+"Enable the use of 64-bit floating point registers in fmov instructions. See "
-+"-mdalign if 64-bit alignment is required."
- msgstr ""
-
--#: config/spu/spu.opt:64
--msgid "Generate code for 18 bit addressing."
-+#: config/sh/sh.opt:277
-+msgid "Cost to assume for gettr insn."
- msgstr ""
-
--#: config/spu/spu.opt:68
--msgid "Generate code for 32 bit addressing."
-+#: config/sh/sh.opt:281 config/sh/sh.opt:331
-+msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions."
- msgstr ""
-
--#: config/spu/spu.opt:76
--msgid ""
--"Insert hbrp instructions after hinted branch targets to avoid the SPU hang "
--"issue."
-+#: config/sh/sh.opt:285
-+msgid "Increase the IEEE compliance for floating-point comparisons."
- msgstr ""
-
--#: config/spu/spu.opt:80 config/i386/i386.opt:247 config/s390/s390.opt:56
--msgid "Generate code for given CPU."
-+#: config/sh/sh.opt:289
-+msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact."
- msgstr ""
-
--#: config/spu/spu.opt:88
--msgid "Access variables in 32-bit PPU objects (default)."
--msgstr ""
--
--#: config/spu/spu.opt:92
--msgid "Access variables in 64-bit PPU objects."
--msgstr ""
--
--#: config/spu/spu.opt:96
--msgid "Allow conversions between __ea and generic pointers (default)."
--msgstr ""
--
--#: config/spu/spu.opt:100
--msgid "Size (in KB) of software data cache."
--msgstr ""
--
--#: config/spu/spu.opt:104
--msgid "Atomically write back software data cache lines (default)."
--msgstr ""
--
--#: config/epiphany/epiphany.opt:24
--msgid "Don't use any of r32..r63."
--msgstr ""
--
--#: config/epiphany/epiphany.opt:28
-+#: config/sh/sh.opt:293
- msgid ""
--"preferentially allocate registers that allow short instruction generation."
-+"inline code to invalidate instruction cache entries after setting up nested "
-+"function trampolines."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:32
--msgid "Set branch cost."
-+#: config/sh/sh.opt:297
-+msgid "Assume symbols might be invalid."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:36
--msgid "enable conditional move instruction usage."
-+#: config/sh/sh.opt:305
-+msgid "Generate code in little endian mode."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:40
--msgid "set number of nops to emit before each insn pattern."
-+#: config/sh/sh.opt:309
-+msgid "Mark MAC register as call-clobbered."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:52
--msgid "Use software floating point comparisons."
-+#: config/sh/sh.opt:315
-+msgid "Make structs a multiple of 4 bytes (warning: ABI altered)."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:56
--msgid "Enable split of 32 bit immediate loads into low / high part."
-+#: config/sh/sh.opt:319
-+msgid "Emit function-calls using global offset table when generating PIC."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:60
--msgid "Enable use of POST_INC / POST_DEC."
-+#: config/sh/sh.opt:323
-+msgid "Assume pt* instructions won't trap"
- msgstr ""
-
--#: config/epiphany/epiphany.opt:64
--msgid "Enable use of POST_MODIFY."
-+#: config/sh/sh.opt:327
-+msgid "Shorten address references during linking."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:68
--msgid "Set number of bytes on the stack preallocated for use by the callee."
-+#: config/sh/sh.opt:335
-+msgid "Deprecated. Use -matomic= instead to select the atomic model."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:72
--msgid "Assume round to nearest is selected for purposes of scheduling."
-+#: config/sh/sh.opt:339
-+msgid "Specify the model for atomic operations."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:76
--msgid "Generate call insns as indirect calls."
-+#: config/sh/sh.opt:343
-+msgid "Use tas.b instruction for __atomic_test_and_set."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:80
--msgid "Generate call insns as direct calls."
-+#: config/sh/sh.opt:347
-+msgid "Deprecated. Use -Os instead."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:84
--msgid ""
--"Assume labels and symbols can be addressed using 16 bit absolute addresses."
-+#: config/sh/sh.opt:351
-+msgid "Cost to assume for a multiply insn."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:108
-+#: config/sh/sh.opt:355
- msgid ""
--"A floatig point to integer truncation may be replaced with rounding to save "
--"mode switching."
-+"Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate "
-+"if the inline code would not work in user mode."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:112
--msgid "Vectorize for double-word operations."
-+#: config/sh/sh.opt:361
-+msgid "Pretend a branch-around-a-move is a conditional move."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:128
--msgid ""
--"Split unaligned 8 byte vector moves before post-modify address generation."
-+#: config/sh/sh.opt:365
-+msgid "Enable the use of the fsca instruction."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:132
--msgid "Use the floating point unit for integer add/subtract."
-+#: config/sh/sh.opt:369
-+msgid "Enable the use of the fsrra instruction."
- msgstr ""
-
--#: config/epiphany/epiphany.opt:136
--msgid "Set register to hold -1."
-+#: config/sh/sh.opt:373
-+msgid "Use LRA instead of reload (transitional)."
- msgstr ""
-
--#: config/ft32/ft32.opt:23
--msgid "target the software simulator."
--msgstr ""
--
--#: config/ft32/ft32.opt:27 config/s390/s390.opt:201 config/mips/mips.opt:385
--msgid "Use LRA instead of reload."
--msgstr ""
--
--#: config/ft32/ft32.opt:31
--msgid "Avoid use of the DIV and MOD instructions"
--msgstr ""
--
--#: config/h8300/h8300.opt:23
--msgid "Generate H8S code."
--msgstr ""
--
--#: config/h8300/h8300.opt:27
--msgid "Generate H8SX code."
--msgstr ""
--
--#: config/h8300/h8300.opt:31
--msgid "Generate H8S/2600 code."
--msgstr ""
--
--#: config/h8300/h8300.opt:35
--msgid "Make integers 32 bits wide."
--msgstr ""
--
--#: config/h8300/h8300.opt:42
--msgid "Use registers for argument passing."
--msgstr ""
--
--#: config/h8300/h8300.opt:46
--msgid "Consider access to byte sized memory slow."
--msgstr ""
--
--#: config/h8300/h8300.opt:50
--msgid "Enable linker relaxing."
--msgstr ""
--
--#: config/h8300/h8300.opt:54
--msgid "Generate H8/300H code."
--msgstr ""
--
--#: config/h8300/h8300.opt:58
--msgid "Enable the normal mode."
--msgstr ""
--
--#: config/h8300/h8300.opt:62
--msgid "Use H8/300 alignment rules."
--msgstr ""
--
--#: config/h8300/h8300.opt:66
--msgid "Push extended registers on stack in monitor functions."
--msgstr ""
--
--#: config/h8300/h8300.opt:70
--msgid "Do not push extended registers on stack in monitor functions."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:23
--msgid "Generate code for an 11/10."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:27
--msgid "Generate code for an 11/40."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:31
--msgid "Generate code for an 11/45."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:35
--msgid "Return floating-point results in ac0 (fr0 in Unix assembler syntax)."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:39
--msgid "Do not use inline patterns for copying memory."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:43
--msgid "Use inline patterns for copying memory."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:47
--msgid "Do not pretend that branches are expensive."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:51
--msgid "Pretend that branches are expensive."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:55
--msgid "Use the DEC assembler syntax."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:59
--msgid "Use 32 bit float."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:63
--msgid "Use 64 bit float."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:67 config/rs6000/rs6000.opt:177
--#: config/frv/frv.opt:158
--msgid "Use hardware floating point."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:71
--msgid "Use 16 bit int."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:75
--msgid "Use 32 bit int."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:79 config/rs6000/rs6000.opt:173
--msgid "Do not use hardware floating point."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:83
--msgid "Target has split I&D."
--msgstr ""
--
--#: config/pdp11/pdp11.opt:87
--msgid "Use UNIX assembler syntax."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:23
--msgid "Use CONST16 instruction to load constants."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:27
--msgid "Disable position-independent code (PIC) for use in OS kernel code."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:31
--msgid "Use indirect CALLXn instructions for large programs."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:35
--msgid "Automatically align branch targets to reduce branch penalties."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:39
--msgid "Intersperse literal pools with code in the text section."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:43
--msgid ""
--"Relax literals in assembler and place them automatically in the text section."
--msgstr ""
--
--#: config/xtensa/xtensa.opt:47
--msgid ""
--"-mno-serialize-volatile\tDo not serialize volatile memory references with "
--"MEMW instructions."
--msgstr ""
--
--#: config/i386/cygming.opt:23
--msgid "Create console application."
--msgstr ""
--
--#: config/i386/cygming.opt:27
--msgid "Generate code for a DLL."
--msgstr ""
--
--#: config/i386/cygming.opt:31
--msgid "Ignore dllimport for functions."
--msgstr ""
--
--#: config/i386/cygming.opt:35
--msgid "Use Mingw-specific thread support."
--msgstr ""
--
--#: config/i386/cygming.opt:39
--msgid "Set Windows defines."
--msgstr ""
--
--#: config/i386/cygming.opt:43
--msgid "Create GUI application."
--msgstr ""
--
--#: config/i386/cygming.opt:47 config/i386/interix.opt:32
--msgid "Use the GNU extension to the PE format for aligned common data."
--msgstr ""
--
--#: config/i386/cygming.opt:51
--msgid ""
--"Compile code that relies on Cygwin DLL wrappers to support C++ operator new/"
--"delete replacement."
--msgstr ""
--
--#: config/i386/cygming.opt:58
--msgid "Put relocated read-only data into .data section."
--msgstr ""
--
--#: config/i386/mingw.opt:29
--msgid "Warn about none ISO msvcrt scanf/printf width extensions."
--msgstr ""
--
--#: config/i386/mingw.opt:33
--msgid "For nested functions on stack executable permission is set."
--msgstr ""
--
--#: config/i386/mingw-w64.opt:23
--msgid "Use unicode startup and define UNICODE macro."
--msgstr ""
--
- #: config/i386/i386.opt:182
- msgid "sizeof(long double) is 16."
- msgstr ""
-@@ -9034,20 +8267,6 @@
- msgid "Use 80-bit long double."
- msgstr ""
-
--#: config/i386/i386.opt:198 config/s390/s390.opt:130
--#: config/sparc/long-double-switch.opt:27 config/alpha/alpha.opt:102
--msgid "Use 64-bit long double."
--msgstr ""
--
--#: config/i386/i386.opt:202 config/s390/s390.opt:126
--#: config/sparc/long-double-switch.opt:23 config/alpha/alpha.opt:98
--msgid "Use 128-bit long double."
--msgstr ""
--
--#: config/i386/i386.opt:206 config/sh/sh.opt:209
--msgid "Reserve space for outgoing arguments in the function prologue."
--msgstr ""
--
- #: config/i386/i386.opt:210
- msgid "Align some doubles on dword boundary."
- msgstr ""
-@@ -9098,8 +8317,8 @@
- msgid "Use given x86-64 code model."
- msgstr ""
-
--#: config/i386/i386.opt:277 config/rs6000/aix64.opt:36
--#: config/rs6000/linux64.opt:32 config/tilegx/tilegx.opt:57
-+#: config/i386/i386.opt:277 config/tilegx/tilegx.opt:57
-+#: config/rs6000/aix64.opt:36 config/rs6000/linux64.opt:32
- msgid "Known code models (for use with the -mcmodel= option):"
- msgstr ""
-
-@@ -9155,6 +8374,10 @@
- msgid "Use native (MS) bitfield layout."
- msgstr ""
-
-+#: config/i386/i386.opt:390 config/aarch64/aarch64.opt:93
-+msgid "Omit the frame pointer in leaf functions."
-+msgstr ""
++/* Assume that all GGC memory is reachable and grow the limits for next
++ collection. With checking, trigger GGC so -Q compilation outputs how much
++ of memory really is reachable. */
+
- #: config/i386/i386.opt:394
- msgid "Set 80387 floating-point precision to 32-bit."
- msgstr ""
-@@ -9191,10 +8414,6 @@
- msgid "Alternate calling convention."
- msgstr ""
-
--#: config/i386/i386.opt:430 config/alpha/alpha.opt:23
--msgid "Do not use hardware fp."
--msgstr ""
--
- #: config/i386/i386.opt:434
- msgid "Use SSE register passing conventions for SF and DF mode."
- msgstr ""
-@@ -9283,15 +8502,20 @@
-
- #: config/i386/i386.opt:567
- msgid ""
--"Generate vzeroupper instruction before a transfer of control flow out of"
-+"Generate vzeroupper instruction before a transfer of control flow out of the "
-+"function."
- msgstr ""
-
- #: config/i386/i386.opt:572
--msgid "Disable Scalar to Vector optimization pass transforming 64-bit integer"
-+msgid ""
-+"Disable Scalar to Vector optimization pass transforming 64-bit integer "
-+"computations into a vector ones."
- msgstr ""
-
- #: config/i386/i386.opt:577
--msgid "Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4"
-+msgid ""
-+"Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4 or "
-+"znver1 and Haifa scheduling is selected."
- msgstr ""
-
- #: config/i386/i386.opt:582
-@@ -9502,8 +8726,8 @@
- msgid "Support CLWB instruction."
- msgstr ""
-
--#: config/i386/i386.opt:760
--msgid "Support PCOMMIT instruction."
-+#: config/i386/i386.opt:759
-+msgid "%<-mpcommit%> was deprecated"
- msgstr ""
-
- #: config/i386/i386.opt:764
-@@ -9587,7 +8811,9 @@
- msgstr ""
-
- #: config/i386/i386.opt:844
--msgid "Generate mcount/__fentry__ calls as nops. To activate they need to be"
-+msgid ""
-+"Generate mcount/__fentry__ calls as nops. To activate they need to be "
-+"patched in."
- msgstr ""
-
- #: config/i386/i386.opt:849
-@@ -9642,790 +8868,91 @@
- msgid "Attempt to avoid generating instruction sequences containing ret bytes."
- msgstr ""
-
--#: config/i386/stringop.opt:8
--msgid "the Free Software Foundation; either version 3, or (at your option)"
-+#: config/i386/interix.opt:32 config/i386/cygming.opt:47
-+msgid "Use the GNU extension to the PE format for aligned common data."
- msgstr ""
-
--#: config/i386/stringop.opt:13
--msgid "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
-+#: config/i386/cygming.opt:23
-+msgid "Create console application."
- msgstr ""
-
--#: config/i386/stringop.opt:18
--msgid "see <http://www.gnu.org/licenses/>. */"
-+#: config/i386/cygming.opt:27
-+msgid "Generate code for a DLL."
- msgstr ""
-
--#: config/pa/pa64-hpux.opt:23
--msgid "Assume code will be linked by GNU ld."
-+#: config/i386/cygming.opt:31
-+msgid "Ignore dllimport for functions."
- msgstr ""
-
--#: config/pa/pa64-hpux.opt:27
--msgid "Assume code will be linked by HP ld."
-+#: config/i386/cygming.opt:35
-+msgid "Use Mingw-specific thread support."
- msgstr ""
-
--#: config/pa/pa-hpux1010.opt:23 config/pa/pa-hpux.opt:31
--#: config/pa/pa-hpux1131.opt:23 config/pa/pa-hpux1111.opt:23
--msgid "Specify UNIX standard for predefines and linking."
-+#: config/i386/cygming.opt:39
-+msgid "Set Windows defines."
- msgstr ""
-
--#: config/pa/pa-hpux.opt:27
--msgid "Generate cpp defines for server IO."
-+#: config/i386/cygming.opt:43
-+msgid "Create GUI application."
- msgstr ""
-
--#: config/pa/pa-hpux.opt:35
--msgid "Generate cpp defines for workstation IO."
--msgstr ""
--
--#: config/pa/pa.opt:30 config/pa/pa.opt:83 config/pa/pa.opt:91
--msgid "Generate PA1.0 code."
--msgstr ""
--
--#: config/pa/pa.opt:34 config/pa/pa.opt:95 config/pa/pa.opt:136
--msgid "Generate PA1.1 code."
--msgstr ""
--
--#: config/pa/pa.opt:38 config/pa/pa.opt:99
--msgid "Generate PA2.0 code (requires binutils 2.10 or later)."
--msgstr ""
--
--#: config/pa/pa.opt:46
--msgid "Disable FP regs."
--msgstr ""
--
--#: config/pa/pa.opt:50
--msgid "Disable indexed addressing."
--msgstr ""
--
--#: config/pa/pa.opt:54
--msgid "Generate fast indirect calls."
--msgstr ""
--
--#: config/pa/pa.opt:62
--msgid "Assume code will be assembled by GAS."
--msgstr ""
--
--#: config/pa/pa.opt:71
--msgid "Enable linker optimizations."
--msgstr ""
--
--#: config/pa/pa.opt:75
--msgid "Always generate long calls."
--msgstr ""
--
--#: config/pa/pa.opt:79
--msgid "Emit long load/store sequences."
--msgstr ""
--
--#: config/pa/pa.opt:87
--msgid "Disable space regs."
--msgstr ""
--
--#: config/pa/pa.opt:103
--msgid "Use portable calling conventions."
--msgstr ""
--
--#: config/pa/pa.opt:107
-+#: config/i386/cygming.opt:51
- msgid ""
--"Specify CPU for scheduling purposes. Valid arguments are 700, 7100, 7100LC, "
--"7200, 7300, and 8000."
-+"Compile code that relies on Cygwin DLL wrappers to support C++ operator new/"
-+"delete replacement."
- msgstr ""
-
--#: config/pa/pa.opt:132 config/frv/frv.opt:215
--msgid "Use software floating point."
-+#: config/i386/cygming.opt:58
-+msgid "Put relocated read-only data into .data section."
- msgstr ""
-
--#: config/pa/pa.opt:140
--msgid "Do not disable space regs."
-+#: config/i386/mingw-w64.opt:23
-+msgid "Use unicode startup and define UNICODE macro."
- msgstr ""
-
--#: config/v850/v850.opt:29
--msgid "Use registers r2 and r5."
-+#: config/i386/mingw.opt:29
-+msgid "Warn about none ISO msvcrt scanf/printf width extensions."
- msgstr ""
-
--#: config/v850/v850.opt:33
--msgid "Use 4 byte entries in switch tables."
-+#: config/i386/mingw.opt:33
-+msgid "For nested functions on stack executable permission is set."
- msgstr ""
-
--#: config/v850/v850.opt:37
--msgid "Enable backend debugging."
-+#: config/moxie/moxie.opt:31
-+msgid "Enable MUL.X and UMUL.X instructions."
- msgstr ""
-
--#: config/v850/v850.opt:41
--msgid "Do not use the callt instruction (default)."
-+#: config/xtensa/xtensa.opt:23
-+msgid "Use CONST16 instruction to load constants."
- msgstr ""
-
--#: config/v850/v850.opt:45
--msgid "Reuse r30 on a per function basis."
-+#: config/xtensa/xtensa.opt:27
-+msgid "Disable position-independent code (PIC) for use in OS kernel code."
- msgstr ""
-
--#: config/v850/v850.opt:52
--msgid "Prohibit PC relative function calls."
-+#: config/xtensa/xtensa.opt:31
-+msgid "Use indirect CALLXn instructions for large programs."
- msgstr ""
-
--#: config/v850/v850.opt:56
--msgid "Use stubs for function prologues."
-+#: config/xtensa/xtensa.opt:35
-+msgid "Automatically align branch targets to reduce branch penalties."
- msgstr ""
-
--#: config/v850/v850.opt:60
--msgid "Set the max size of data eligible for the SDA area."
-+#: config/xtensa/xtensa.opt:39
-+msgid "Intersperse literal pools with code in the text section."
- msgstr ""
-
--#: config/v850/v850.opt:67
--msgid "Enable the use of the short load instructions."
--msgstr ""
--
--#: config/v850/v850.opt:71
--msgid "Same as: -mep -mprolog-function."
--msgstr ""
--
--#: config/v850/v850.opt:75
--msgid "Set the max size of data eligible for the TDA area."
--msgstr ""
--
--#: config/v850/v850.opt:82
--msgid "Do not enforce strict alignment."
--msgstr ""
--
--#: config/v850/v850.opt:86
-+#: config/xtensa/xtensa.opt:43
- msgid ""
--"Put jump tables for switch statements into the .data section rather than "
--"the .code section."
-+"Relax literals in assembler and place them automatically in the text section."
- msgstr ""
-
--#: config/v850/v850.opt:93
--msgid "Compile for the v850 processor."
--msgstr ""
--
--#: config/v850/v850.opt:97
--msgid "Compile for the v850e processor."
--msgstr ""
--
--#: config/v850/v850.opt:101
--msgid "Compile for the v850e1 processor."
--msgstr ""
--
--#: config/v850/v850.opt:105
--msgid "Compile for the v850es variant of the v850e1."
--msgstr ""
--
--#: config/v850/v850.opt:109
--msgid "Compile for the v850e2 processor."
--msgstr ""
--
--#: config/v850/v850.opt:113
--msgid "Compile for the v850e2v3 processor."
--msgstr ""
--
--#: config/v850/v850.opt:117
--msgid "Compile for the v850e3v5 processor."
--msgstr ""
--
--#: config/v850/v850.opt:124
--msgid "Enable v850e3v5 loop instructions."
--msgstr ""
--
--#: config/v850/v850.opt:128
--msgid "Set the max size of data eligible for the ZDA area."
--msgstr ""
--
--#: config/v850/v850.opt:135
--msgid "Enable relaxing in the assembler."
--msgstr ""
--
--#: config/v850/v850.opt:139
--msgid "Prohibit PC relative jumps."
--msgstr ""
--
--#: config/v850/v850.opt:143
--msgid "Inhibit the use of hardware floating point instructions."
--msgstr ""
--
--#: config/v850/v850.opt:147
-+#: config/xtensa/xtensa.opt:47
- msgid ""
--"Allow the use of hardware floating point instructions for V850E2V3 and up."
-+"-mno-serialize-volatile\tDo not serialize volatile memory references with "
-+"MEMW instructions."
- msgstr ""
-
--#: config/v850/v850.opt:151
--msgid "Enable support for the RH850 ABI. This is the default."
--msgstr ""
--
--#: config/v850/v850.opt:155
--msgid "Enable support for the old GCC ABI."
--msgstr ""
--
--#: config/v850/v850.opt:159
--msgid "Support alignments of up to 64-bits."
--msgstr ""
--
--#: config/g.opt:27
--msgid ""
--"-G<number>\tPut global and static data smaller than <number> bytes into a "
--"special section (on some targets)."
--msgstr ""
--
--#: config/lynx.opt:23
--msgid "Support legacy multi-threading."
--msgstr ""
--
--#: config/lynx.opt:27
--msgid "Use shared libraries."
--msgstr ""
--
--#: config/lynx.opt:31
--msgid "Support multi-threading."
--msgstr ""
--
--#: config/nvptx/nvptx.opt:22
--msgid "Generate code for a 32-bit ABI."
--msgstr ""
--
--#: config/nvptx/nvptx.opt:26
--msgid "Generate code for a 64-bit ABI."
--msgstr ""
--
--#: config/nvptx/nvptx.opt:30
--msgid "Link in code for a __main kernel."
--msgstr ""
--
--#: config/nvptx/nvptx.opt:34
--msgid "Optimize partition neutering."
--msgstr ""
--
--#: config/vxworks.opt:36
--msgid "Assume the VxWorks RTP environment."
--msgstr ""
--
--#: config/vxworks.opt:43
--msgid "Assume the VxWorks vThreads environment."
--msgstr ""
--
--#: config/cr16/cr16.opt:23
--msgid "-msim Use simulator runtime."
--msgstr ""
--
--#: config/cr16/cr16.opt:27
--msgid "Generate SBIT, CBIT instructions."
--msgstr ""
--
--#: config/cr16/cr16.opt:31
--msgid "Support multiply accumulate instructions."
--msgstr ""
--
--#: config/cr16/cr16.opt:38
--msgid "Treat data references as near, far or medium. medium is default."
--msgstr ""
--
--#: config/cr16/cr16.opt:42
--msgid "Generate code for CR16C architecture."
--msgstr ""
--
--#: config/cr16/cr16.opt:46
--msgid "Generate code for CR16C+ architecture (Default)."
--msgstr ""
--
--#: config/cr16/cr16.opt:50
--msgid "Treat integers as 32-bit."
--msgstr ""
--
--#: config/avr/avr.opt:23
--msgid "Use subroutines for function prologues and epilogues."
--msgstr ""
--
--#: config/avr/avr.opt:26
--#, c-format
--msgid "missing device or architecture after %qs"
--msgstr ""
--
--#: config/avr/avr.opt:27
--msgid "-mmcu=MCU\tSelect the target MCU."
--msgstr ""
--
--#: config/avr/avr.opt:31
--msgid "Set the number of 64 KiB flash segments."
--msgstr ""
--
--#: config/avr/avr.opt:35
--msgid "Indicate presence of a processor erratum."
--msgstr ""
--
--#: config/avr/avr.opt:39
--msgid "Enable Read-Modify-Write (RMW) instructions support/use."
--msgstr ""
--
--#: config/avr/avr.opt:49
--msgid "Use an 8-bit 'int' type."
--msgstr ""
--
--#: config/avr/avr.opt:53
--msgid "Change the stack pointer without disabling interrupts."
--msgstr ""
--
--#: config/avr/avr.opt:57
--msgid ""
--"Set the branch costs for conditional branch instructions. Reasonable values "
--"are small, non-negative integers. The default branch cost is 0."
--msgstr ""
--
--#: config/avr/avr.opt:67
--msgid "Change only the low 8 bits of the stack pointer."
--msgstr ""
--
--#: config/avr/avr.opt:71
--msgid "Relax branches."
--msgstr ""
--
--#: config/avr/avr.opt:75
--msgid ""
--"Make the linker relaxation machine assume that a program counter wrap-around "
--"occurs."
--msgstr ""
--
--#: config/avr/avr.opt:79
--msgid ""
--"Accumulate outgoing function arguments and acquire/release the needed stack "
--"space for outpoing function arguments in function prologue/epilogue. "
--"Without this option, outgoing arguments are pushed before calling a function "
--"and popped afterwards. This option can lead to reduced code size for "
--"functions that call many functions that get their arguments on the stack "
--"like, for example printf."
--msgstr ""
--
--#: config/avr/avr.opt:83
--msgid ""
--"When accessing RAM, use X as imposed by the hardware, i.e. just use pre-"
--"decrement, post-increment and indirect addressing with the X register. "
--"Without this option, the compiler may assume that there is an addressing "
--"mode X+const similar to Y+const and Z+const and emit instructions to emulate "
--"such an addressing mode for X."
--msgstr ""
--
--#: config/avr/avr.opt:88
--msgid ""
--"The device has no SPH special function register. This option will be "
--"overridden by the compiler driver with the correct setting if presence/"
--"absence of SPH can be deduced from -mmcu=MCU."
--msgstr ""
--
--#: config/avr/avr.opt:92
--msgid "Warn if the address space of an address is changed."
--msgstr ""
--
--#: config/avr/avr.opt:96
--msgid ""
--"Allow to use truncation instead of rounding towards 0 for fractional int "
--"types."
--msgstr ""
--
--#: config/avr/avr.opt:100
--msgid "Do not link against the device-specific library lib<MCU>.a."
--msgstr ""
--
--#: config/m32r/m32r.opt:34
--msgid "Compile for the m32rx."
--msgstr ""
--
--#: config/m32r/m32r.opt:38
--msgid "Compile for the m32r2."
--msgstr ""
--
--#: config/m32r/m32r.opt:42
--msgid "Compile for the m32r."
--msgstr ""
--
--#: config/m32r/m32r.opt:46
--msgid "Align all loops to 32 byte boundary."
--msgstr ""
--
--#: config/m32r/m32r.opt:50
--msgid "Prefer branches over conditional execution."
--msgstr ""
--
--#: config/m32r/m32r.opt:54
--msgid "Give branches their default cost."
--msgstr ""
--
--#: config/m32r/m32r.opt:58
--msgid "Display compile time statistics."
--msgstr ""
--
--#: config/m32r/m32r.opt:62
--msgid "Specify cache flush function."
--msgstr ""
--
--#: config/m32r/m32r.opt:66
--msgid "Specify cache flush trap number."
--msgstr ""
--
--#: config/m32r/m32r.opt:70
--msgid "Only issue one instruction per cycle."
--msgstr ""
--
--#: config/m32r/m32r.opt:74
--msgid "Allow two instructions to be issued per cycle."
--msgstr ""
--
--#: config/m32r/m32r.opt:78
--msgid "Code size: small, medium or large."
--msgstr ""
--
--#: config/m32r/m32r.opt:94
--msgid "Don't call any cache flush functions."
--msgstr ""
--
--#: config/m32r/m32r.opt:98
--msgid "Don't call any cache flush trap."
--msgstr ""
--
--#: config/m32r/m32r.opt:105
--msgid "Small data area: none, sdata, use."
--msgstr ""
--
--#: config/s390/tpf.opt:23
--msgid "Enable TPF-OS tracing code."
--msgstr ""
--
--#: config/s390/tpf.opt:27
--msgid "Specify main object for TPF-OS."
--msgstr ""
--
--#: config/s390/s390.opt:48
--msgid "31 bit ABI."
--msgstr ""
--
--#: config/s390/s390.opt:52
--msgid "64 bit ABI."
--msgstr ""
--
--#: config/s390/s390.opt:96
--msgid "Maintain backchain pointer."
--msgstr ""
--
--#: config/s390/s390.opt:100
--msgid "Additional debug prints."
--msgstr ""
--
--#: config/s390/s390.opt:104
--msgid "ESA/390 architecture."
--msgstr ""
--
--#: config/s390/s390.opt:108
--msgid "Enable decimal floating point hardware support."
--msgstr ""
--
--#: config/s390/s390.opt:112
--msgid "Enable hardware floating point."
--msgstr ""
--
--#: config/s390/s390.opt:116
--msgid "Takes two non-negative integer numbers separated by a comma."
--msgstr ""
--
--#: config/s390/s390.opt:134
--msgid "Use hardware transactional execution instructions."
--msgstr ""
--
--#: config/s390/s390.opt:138
--msgid "Use hardware vector facility instructions and enable the vector ABI."
--msgstr ""
--
--#: config/s390/s390.opt:142
--msgid "Use packed stack layout."
--msgstr ""
--
--#: config/s390/s390.opt:146
--msgid "Use bras for executable < 64k."
--msgstr ""
--
--#: config/s390/s390.opt:150
--msgid "Disable hardware floating point."
--msgstr ""
--
--#: config/s390/s390.opt:154
--msgid ""
--"Set the max. number of bytes which has to be left to stack size before a "
--"trap instruction is triggered."
--msgstr ""
--
--#: config/s390/s390.opt:158
--msgid "Switches off the -mstack-guard= option."
--msgstr ""
--
--#: config/s390/s390.opt:162
--msgid ""
--"Emit extra code in the function prologue in order to trap if the stack size "
--"exceeds the given limit."
--msgstr ""
--
--#: config/s390/s390.opt:166
--msgid "Switches off the -mstack-size= option."
--msgstr ""
--
--#: config/s390/s390.opt:174
--msgid "Use the mvcle instruction for block moves."
--msgstr ""
--
--#: config/s390/s390.opt:178
--msgid "Enable the z vector language extension providing the context-sensitive"
--msgstr ""
--
--#: config/s390/s390.opt:183
--msgid "Warn if a function uses alloca or creates an array with dynamic size."
--msgstr ""
--
--#: config/s390/s390.opt:187
--msgid "Warn if a single function's framesize exceeds the given framesize."
--msgstr ""
--
--#: config/s390/s390.opt:191
--msgid "z/Architecture."
--msgstr ""
--
--#: config/s390/s390.opt:195
--msgid "Set the branch costs for conditional branch instructions. Reasonable"
--msgstr ""
--
--#: config/rl78/rl78.opt:27 config/rx/rx.opt:87
--msgid "Use the simulator runtime."
--msgstr ""
--
--#: config/rl78/rl78.opt:31
--msgid ""
--"Selects the type of hardware multiplication and division to use (none/g13/"
--"g14)."
--msgstr ""
--
--#: config/rl78/rl78.opt:50
--msgid "Use all registers, reserving none for interrupt handlers."
--msgstr ""
--
--#: config/rl78/rl78.opt:54
--msgid "Enable assembler and linker relaxation. Enabled by default at -Os."
--msgstr ""
--
--#: config/rl78/rl78.opt:58
--msgid ""
--"Selects the type of RL78 core being targeted (g10/g13/g14). The default is "
--"the G14. If set, also selects the hardware multiply support to be used."
--msgstr ""
--
--#: config/rl78/rl78.opt:77
--msgid "Alias for -mcpu=g10."
--msgstr ""
--
--#: config/rl78/rl78.opt:81
--msgid "Alias for -mcpu=g13."
--msgstr ""
--
--#: config/rl78/rl78.opt:85 config/rl78/rl78.opt:89
--msgid "Alias for -mcpu=g14."
--msgstr ""
--
--#: config/rl78/rl78.opt:93
--msgid ""
--"Assume ES is zero throughout program execution, use ES: for read-only data."
--msgstr ""
--
--#: config/stormy16/stormy16.opt:24
--msgid "Provide libraries for the simulator."
--msgstr ""
--
--#: config/arm/arm-tables.opt:25
--msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
--msgstr ""
--
--#: config/arm/arm-tables.opt:341
--msgid "Known ARM architectures (for use with the -march= option):"
--msgstr ""
--
--#: config/arm/arm-tables.opt:438
--msgid "Known ARM FPUs (for use with the -mfpu= option):"
--msgstr ""
--
--#: config/arm/arm.opt:26
--msgid "TLS dialect to use:"
--msgstr ""
--
--#: config/arm/arm.opt:36
--msgid "Specify an ABI."
--msgstr ""
--
--#: config/arm/arm.opt:40
--msgid "Known ARM ABIs (for use with the -mabi= option):"
--msgstr ""
--
--#: config/arm/arm.opt:59
--msgid "Generate a call to abort if a noreturn function returns."
--msgstr ""
--
--#: config/arm/arm.opt:66
--msgid "Pass FP arguments in FP registers."
--msgstr ""
--
--#: config/arm/arm.opt:70
--msgid "Generate APCS conformant stack frames."
--msgstr ""
--
--#: config/arm/arm.opt:74
--msgid "Generate re-entrant, PIC code."
--msgstr ""
--
--#: config/arm/arm.opt:90
--msgid "Generate code in 32 bit ARM state."
--msgstr ""
--
--#: config/arm/arm.opt:98
--msgid "Thumb: Assume non-static functions may be called from ARM code."
--msgstr ""
--
--#: config/arm/arm.opt:102
--msgid "Thumb: Assume function pointers may go to non-Thumb aware code."
--msgstr ""
--
--#: config/arm/arm.opt:110
--msgid "Specify if floating point hardware should be used."
--msgstr ""
--
--#: config/arm/arm.opt:114
--msgid "Known floating-point ABIs (for use with the -mfloat-abi= option):"
--msgstr ""
--
--#: config/arm/arm.opt:127
--msgid "Switch ARM/Thumb modes on alternating functions for compiler testing."
--msgstr ""
--
--#: config/arm/arm.opt:131
--msgid "Specify the __fp16 floating-point format."
--msgstr ""
--
--#: config/arm/arm.opt:135
--msgid "Known __fp16 formats (for use with the -mfp16-format= option):"
--msgstr ""
--
--#: config/arm/arm.opt:148
--msgid "Specify the name of the target floating point hardware/format."
--msgstr ""
--
--#: config/arm/arm.opt:159
--msgid "Generate call insns as indirect calls, if necessary."
--msgstr ""
--
--#: config/arm/arm.opt:163
--msgid "Assume data segments are relative to text segment."
--msgstr ""
--
--#: config/arm/arm.opt:167
--msgid "Specify the register to be used for PIC addressing."
--msgstr ""
--
--#: config/arm/arm.opt:171
--msgid "Store function names in object code."
--msgstr ""
--
--#: config/arm/arm.opt:175
--msgid "Permit scheduling of a function's prologue sequence."
--msgstr ""
--
--#: config/arm/arm.opt:179 config/rs6000/rs6000.opt:248
--msgid "Do not load the PIC register in function prologues."
--msgstr ""
--
--#: config/arm/arm.opt:186
--msgid "Specify the minimum bit alignment of structures."
--msgstr ""
--
--#: config/arm/arm.opt:190
--msgid "Generate code for Thumb state."
--msgstr ""
--
--#: config/arm/arm.opt:194
--msgid "Support calls between Thumb and ARM instruction sets."
--msgstr ""
--
--#: config/arm/arm.opt:198
--msgid "Specify thread local storage scheme."
--msgstr ""
--
--#: config/arm/arm.opt:202
--msgid "Specify how to access the thread pointer."
--msgstr ""
--
--#: config/arm/arm.opt:206
--msgid "Valid arguments to -mtp=:"
--msgstr ""
--
--#: config/arm/arm.opt:219
--msgid "Thumb: Generate (non-leaf) stack frames even if not needed."
--msgstr ""
--
--#: config/arm/arm.opt:223
--msgid "Thumb: Generate (leaf) stack frames even if not needed."
--msgstr ""
--
--#: config/arm/arm.opt:227 config/mn10300/mn10300.opt:42
--msgid "Tune code for the given processor."
--msgstr ""
--
--#: config/arm/arm.opt:231
--msgid "Print CPU tuning information as comment in assembler file. This is"
--msgstr ""
--
--#: config/arm/arm.opt:242
--msgid ""
--"Use Neon quad-word (rather than double-word) registers for vectorization."
--msgstr ""
--
--#: config/arm/arm.opt:246
--msgid ""
--"Use Neon double-word (rather than quad-word) registers for vectorization."
--msgstr ""
--
--#: config/arm/arm.opt:250
--msgid "Only generate absolute relocations on word sized values."
--msgstr ""
--
--#: config/arm/arm.opt:254
--msgid "Generate IT blocks appropriate for ARMv8."
--msgstr ""
--
--#: config/arm/arm.opt:258
--msgid "Use the old RTX costing tables (transitional)."
--msgstr ""
--
--#: config/arm/arm.opt:262
--msgid ""
--"Use the new generic RTX cost tables if new core-specific cost table not "
--"available (transitional)."
--msgstr ""
--
--#: config/arm/arm.opt:266
--msgid ""
--"Avoid overlapping destination and address registers on LDRD instructions"
--msgstr ""
--
--#: config/arm/arm.opt:271
--msgid "Enable unaligned word and halfword accesses to packed data."
--msgstr ""
--
--#: config/arm/arm.opt:275
--msgid "Use Neon to perform 64-bits operations rather than core registers."
--msgstr ""
--
--#: config/arm/arm.opt:279
--msgid "Assume loading data from flash is slower than fetching instructions."
--msgstr ""
--
--#: config/arm/arm.opt:283
--msgid "Assume unified syntax for inline assembly code."
--msgstr ""
--
--#: config/sparc/sparc.opt:30 config/sparc/sparc.opt:34
--#: config/visium/visium.opt:37
--msgid "Use hardware FP."
--msgstr ""
--
--#: config/sparc/sparc.opt:38 config/visium/visium.opt:41
--msgid "Do not use hardware FP."
--msgstr ""
--
- #: config/sparc/sparc.opt:42
- msgid "Use flat register window model."
- msgstr ""
-@@ -10510,10 +9037,6 @@
- msgid "Do not generate code that can only run in supervisor mode (default)."
- msgstr ""
-
--#: config/sparc/sparc.opt:126 config/visium/visium.opt:45
--msgid "Use features of and schedule code for given CPU."
--msgstr ""
--
- #: config/sparc/sparc.opt:206
- msgid "Use given SPARC-V9 code model."
- msgstr ""
-@@ -10527,7 +9050,9 @@
- msgstr ""
-
- #: config/sparc/sparc.opt:218
--msgid "Enable workaround for single erratum of AT697F processor"
-+msgid ""
-+"Enable workaround for single erratum of AT697F processor (corresponding to "
-+"erratum #13 of AT697E processor)."
- msgstr ""
-
- #: config/sparc/sparc.opt:223
-@@ -10538,683 +9063,226 @@
- msgid "Specify the memory model in effect for the program."
- msgstr ""
-
--#: config/rs6000/darwin.opt:38 config/rs6000/sysv4.opt:141
--msgid "Generate 64-bit code."
-+#: config/m32c/m32c.opt:23
-+msgid "-msim\tUse simulator runtime."
- msgstr ""
-
--#: config/rs6000/darwin.opt:42 config/rs6000/sysv4.opt:145
--msgid "Generate 32-bit code."
-+#: config/m32c/m32c.opt:27
-+msgid "-mcpu=r8c\tCompile code for R8C variants."
- msgstr ""
-
--#: config/rs6000/rs6000-tables.opt:24
--msgid "Known CPUs (for use with the -mcpu= and -mtune= options):"
-+#: config/m32c/m32c.opt:31
-+msgid "-mcpu=m16c\tCompile code for M16C variants."
- msgstr ""
-
--#: config/rs6000/476.opt:24
--msgid ""
--"Preserve the PowerPC 476's link stack by matching up a blr with the bcl/bl "
--"insns used for GOT accesses."
-+#: config/m32c/m32c.opt:35
-+msgid "-mcpu=m32cm\tCompile code for M32CM variants."
- msgstr ""
-
--#: config/rs6000/aix64.opt:24
--msgid "Compile for 64-bit pointers."
-+#: config/m32c/m32c.opt:39
-+msgid "-mcpu=m32c\tCompile code for M32C variants."
- msgstr ""
-
--#: config/rs6000/aix64.opt:28
--msgid "Compile for 32-bit pointers."
-+#: config/m32c/m32c.opt:43
-+msgid "-memregs=\tNumber of memreg bytes (default: 16, range: 0..16)."
- msgstr ""
-
--#: config/rs6000/aix64.opt:32 config/rs6000/linux64.opt:28
--msgid "Select code model."
-+#: config/iq2000/iq2000.opt:31
-+msgid "Specify CPU for code generation purposes."
- msgstr ""
-
--#: config/rs6000/aix64.opt:49
--msgid "Support message passing with the Parallel Environment."
-+#: config/iq2000/iq2000.opt:47
-+msgid "Specify CPU for scheduling purposes."
- msgstr ""
-
--#: config/rs6000/linux64.opt:24
--msgid "Call mcount for profiling before a function prologue."
-+#: config/iq2000/iq2000.opt:51
-+msgid "Known IQ2000 CPUs (for use with the -mcpu= option):"
- msgstr ""
-
--#: config/rs6000/rs6000.opt:109
--msgid "Use PowerPC-64 instruction set."
-+#: config/iq2000/iq2000.opt:70
-+msgid "No default crt0.o."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:113
--msgid "Use PowerPC General Purpose group optional instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:117
--msgid "Use PowerPC Graphics group optional instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:121
--msgid "Use PowerPC V2.01 single field mfcr instruction."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:125
--msgid "Use PowerPC V2.02 popcntb instruction."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:129
--msgid "Use PowerPC V2.02 floating point rounding instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:133
--msgid "Use PowerPC V2.05 compare bytes instruction."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:137
-+#: config/g.opt:27
- msgid ""
--"Use extended PowerPC V2.05 move floating point to/from GPR instructions."
-+"-G<number>\tPut global and static data smaller than <number> bytes into a "
-+"special section (on some targets)."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:141
--msgid "Use AltiVec instructions."
-+#: config/linux-android.opt:23
-+msgid "Generate code for the Android platform."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:145
--msgid "Generate Altivec instructions using little-endian element order."
-+#: config/ia64/ilp32.opt:3
-+msgid "Generate ILP32 code."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:149
--msgid "Generate Altivec instructions using big-endian element order."
-+#: config/ia64/ilp32.opt:7
-+msgid "Generate LP64 code."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:153
--msgid "Use decimal floating point instructions."
-+#: config/ia64/ia64.opt:28
-+msgid "Generate big endian code."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:157
--msgid "Use 4xx half-word multiply instructions."
-+#: config/ia64/ia64.opt:32
-+msgid "Generate little endian code."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:161
--msgid "Use 4xx string-search dlmzb instruction."
-+#: config/ia64/ia64.opt:36
-+msgid "Generate code for GNU as."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:165
--msgid "Generate load/store multiple instructions."
-+#: config/ia64/ia64.opt:40
-+msgid "Generate code for GNU ld."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:169
--msgid "Generate string instructions for block moves."
-+#: config/ia64/ia64.opt:44
-+msgid "Emit stop bits before and after volatile extended asms."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:181
--msgid "Use PowerPC V2.06 popcntd instruction."
-+#: config/ia64/ia64.opt:48
-+msgid "Use in/loc/out register names."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:185
--msgid ""
--"Under -ffast-math, generate a FRIZ instruction for (double)(long long) "
--"conversions."
-+#: config/ia64/ia64.opt:55
-+msgid "Enable use of sdata/scommon/sbss."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:193
--msgid "Use vector/scalar (VSX) instructions."
-+#: config/ia64/ia64.opt:59
-+msgid "Generate code without GP reg."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:240
--msgid "Do not generate load/store with update instructions."
-+#: config/ia64/ia64.opt:63
-+msgid "gp is constant (but save/restore gp on indirect calls)."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:244
--msgid "Generate load/store with update instructions."
-+#: config/ia64/ia64.opt:67
-+msgid "Generate self-relocatable code."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:252
--msgid "Avoid generation of indexed load/store instructions when possible."
-+#: config/ia64/ia64.opt:71
-+msgid "Generate inline floating point division, optimize for latency."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:256
--msgid "Mark __tls_get_addr calls with argument info."
-+#: config/ia64/ia64.opt:75
-+msgid "Generate inline floating point division, optimize for throughput."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:263
--msgid "Schedule the start and end of the procedure."
-+#: config/ia64/ia64.opt:82
-+msgid "Generate inline integer division, optimize for latency."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:267
--msgid "Return all structures in memory (AIX default)."
-+#: config/ia64/ia64.opt:86
-+msgid "Generate inline integer division, optimize for throughput."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:271
--msgid "Return small structures in registers (SVR4 default)."
-+#: config/ia64/ia64.opt:90
-+msgid "Do not inline integer division."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:275
--msgid "Conform more closely to IBM XLC semantics."
-+#: config/ia64/ia64.opt:94
-+msgid "Generate inline square root, optimize for latency."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:279 config/rs6000/rs6000.opt:283
--msgid ""
--"Generate software reciprocal divide and square root for better throughput."
-+#: config/ia64/ia64.opt:98
-+msgid "Generate inline square root, optimize for throughput."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:287
--msgid "Assume that the reciprocal estimate instructions provide more accuracy."
-+#: config/ia64/ia64.opt:102
-+msgid "Do not inline square root."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:291
--msgid "Do not place floating point constants in TOC."
-+#: config/ia64/ia64.opt:106
-+msgid "Enable DWARF line debug info via GNU as."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:295
--msgid "Place floating point constants in TOC."
-+#: config/ia64/ia64.opt:110
-+msgid "Enable earlier placing stop bits for better scheduling."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:299
--msgid "Do not place symbol+offset constants in TOC."
-+#: config/ia64/ia64.opt:126
-+msgid "Known Itanium CPUs (for use with the -mtune= option):"
- msgstr ""
-
--#: config/rs6000/rs6000.opt:303
--msgid "Place symbol+offset constants in TOC."
-+#: config/ia64/ia64.opt:136
-+msgid "Use data speculation before reload."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:314
--msgid "Use only one TOC entry per procedure."
-+#: config/ia64/ia64.opt:140
-+msgid "Use data speculation after reload."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:318
--msgid "Put everything in the regular TOC."
-+#: config/ia64/ia64.opt:144
-+msgid "Use control speculation."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:322
--msgid "Generate VRSAVE instructions when generating AltiVec code."
-+#: config/ia64/ia64.opt:148
-+msgid "Use in block data speculation before reload."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:326
--msgid "Deprecated option. Use -mno-vrsave instead."
-+#: config/ia64/ia64.opt:152
-+msgid "Use in block data speculation after reload."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:330
--msgid "Deprecated option. Use -mvrsave instead."
-+#: config/ia64/ia64.opt:156
-+msgid "Use in block control speculation."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:334
--msgid ""
--"Specify how many bytes should be moved inline before calling out to memcpy/"
--"memmove."
-+#: config/ia64/ia64.opt:160
-+msgid "Use simple data speculation check."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:338
--msgid "Generate isel instructions."
-+#: config/ia64/ia64.opt:164
-+msgid "Use simple data speculation check for control speculation."
- msgstr ""
-
--#: config/rs6000/rs6000.opt:342
--msgid "Deprecated option. Use -mno-isel instead."
-+#: config/ia64/ia64.opt:167 config/ia64/ia64.opt:170 c-family/c.opt:650
-+#: c-family/c.opt:1024 c-family/c.opt:1031 c-family/c.opt:1205
-+#: c-family/c.opt:1224 c-family/c.opt:1247 c-family/c.opt:1253
-+#: c-family/c.opt:1260 c-family/c.opt:1284 c-family/c.opt:1295
-+#: c-family/c.opt:1298 c-family/c.opt:1301 c-family/c.opt:1304
-+#: c-family/c.opt:1307 c-family/c.opt:1344 c-family/c.opt:1475
-+#: c-family/c.opt:1499 c-family/c.opt:1517 c-family/c.opt:1548
-+#: c-family/c.opt:1552 c-family/c.opt:1568 c-family/c-opts.c:419
-+#, gcc-internal-format
-+msgid "switch %qs is no longer supported"
- msgstr ""
-
--#: config/rs6000/rs6000.opt:346
--msgid "Deprecated option. Use -misel instead."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:350
--msgid "Generate SPE SIMD instructions on E500."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:354
--msgid "Generate PPC750CL paired-single instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:358
--msgid "Deprecated option. Use -mno-spe instead."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:362
--msgid "Deprecated option. Use -mspe instead."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:366
--msgid "-mdebug=\tEnable debug output."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:370
--msgid "Use the AltiVec ABI extensions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:374
--msgid "Do not use the AltiVec ABI extensions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:378
--msgid "Use the SPE ABI extensions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:382
--msgid "Do not use the SPE ABI extensions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:386
--msgid "Use the ELFv1 ABI."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:390
--msgid "Use the ELFv2 ABI."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:397
--msgid "using darwin64 ABI"
--msgstr ""
--
--#: config/rs6000/rs6000.opt:400
--msgid "using old darwin ABI"
--msgstr ""
--
--#: config/rs6000/rs6000.opt:403
--msgid "using IEEE extended precision long double"
--msgstr ""
--
--#: config/rs6000/rs6000.opt:406
--msgid "using IBM extended precision long double"
--msgstr ""
--
--#: config/rs6000/rs6000.opt:410
--msgid "-mcpu=\tUse features of and schedule code for given CPU."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:414
--msgid "-mtune=\tSchedule code for given CPU."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:418
--msgid "-mtraceback=\tSelect full, part, or no traceback table."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:434
--msgid "Avoid all range limits on call instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:438
--msgid "Generate Cell microcode."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:442
--msgid "Warn when a Cell microcoded instruction is emitted."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:446
--msgid "Warn about deprecated 'vector long ...' AltiVec type usage."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:450
--msgid "-mfloat-gprs=\tSelect GPR floating point method."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:454
--msgid "Valid arguments to -mfloat-gprs=:"
--msgstr ""
--
--#: config/rs6000/rs6000.opt:470
--msgid "-mlong-double-<n>\tSpecify size of long double (64 or 128 bits)."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:474
--msgid "Enable Local Register Allocation."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:478
--msgid "Determine which dependences between insns are considered costly."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:482
--msgid "Specify which post scheduling nop insertion scheme to apply."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:486
--msgid "Specify alignment of structure fields default/natural."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:490
--msgid "Valid arguments to -malign-:"
--msgstr ""
--
--#: config/rs6000/rs6000.opt:500
--msgid "Specify scheduling priority for dispatch slot restricted insns."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:504
--msgid "Single-precision floating point unit."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:508
--msgid "Double-precision floating point unit."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:512
--msgid "Floating point unit does not support divide & sqrt."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:516
--msgid "-mfpu=\tSpecify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:538
--msgid "Specify Xilinx FPU."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:542
-+#: config/ia64/ia64.opt:174
- msgid ""
--"Use/do not use r11 to hold the static link in calls to functions via "
--"pointers."
-+"Count speculative dependencies while calculating priority of instructions."
- msgstr ""
++void
+ ggc_grow (void)
+ {
+ if (!flag_checking)
+@@ -2556,6 +2590,9 @@
--#: config/rs6000/rs6000.opt:546
--msgid ""
--"Control whether we save the TOC in the prologue for indirect calls or "
--"generate the save inline."
-+#: config/ia64/ia64.opt:178
-+msgid "Place a stop bit after every cycle when scheduling."
- msgstr ""
+ count_old_page_tables = G.by_depth_in_use;
--#: config/rs6000/rs6000.opt:550
--msgid "Allow 128-bit integers in VSX registers."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:554
-+#: config/ia64/ia64.opt:182
- msgid ""
--"Fuse certain integer operations together for better performance on power8."
-+"Assume that floating-point stores and loads are not likely to cause conflict "
-+"when placed into one instruction group."
- msgstr ""
++ if (fread (&d, sizeof (d), 1, f) != 1)
++ fatal_error (input_location, "cannot read PCH file: %m");
++
+ /* We've just read in a PCH file. So, every object that used to be
+ allocated is now free. */
+ clear_marks ();
+@@ -2584,8 +2621,6 @@
--#: config/rs6000/rs6000.opt:558
--msgid "Allow sign extension in fusion operations."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:562
--msgid "Use/do not use vector and scalar instructions added in ISA 2.07."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:566
--msgid "Use ISA 2.07 Category:Vector.AES and Category:Vector.SHA2 instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:570
--msgid "Use ISA 2.07 direct move between GPR & VSX register instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:574
--msgid "Use ISA 2.07 transactional memory (HTM) instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:578
--msgid "Generate the quad word memory instructions (lq/stq)."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:582
--msgid "Generate the quad word memory atomic instructions (lqarx/stqcx)."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:586
-+#: config/ia64/ia64.opt:186
- msgid ""
--"Generate aggregate parameter passing code with at most 64-bit alignment."
-+"Soft limit on number of memory insns per instruction group, giving lower "
-+"priority to subsequent memory insns attempting to schedule in the same insn "
-+"group. Frequently useful to prevent cache bank conflicts. Default value is "
-+"1."
- msgstr ""
+ /* Allocate the appropriate page-table entries for the pages read from
+ the PCH file. */
+- if (fread (&d, sizeof (d), 1, f) != 1)
+- fatal_error (input_location, "can%'t read PCH file: %m");
--#: config/rs6000/rs6000.opt:590
--msgid "Allow double variables in upper registers with -mcpu=power7 or -mvsx."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:594
-+#: config/ia64/ia64.opt:190
- msgid ""
--"Allow float variables in upper registers with -mcpu=power8 or -mpower8-"
--"vector."
-+"Disallow more than 'msched-max-memory-insns' in instruction group. "
-+"Otherwise, limit is 'soft' (prefer non-memory operations when limit is "
-+"reached)."
- msgstr ""
+ for (i = 0; i < NUM_ORDERS; i++)
+ {
+Index: gcc/ira.c
+===================================================================
+--- a/src/gcc/ira.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ira.c (.../branches/gcc-9-branch)
+@@ -5198,6 +5198,8 @@
+ int ira_max_point_before_emit;
+ bool saved_flag_caller_saves = flag_caller_saves;
+ enum ira_region saved_flag_ira_region = flag_ira_region;
++ unsigned int i;
++ int num_used_regs = 0;
--#: config/rs6000/rs6000.opt:598
--msgid "Allow float/double variables in upper registers if cpu allows it."
-+#: config/ia64/ia64.opt:194
-+msgid "Don't generate checks for control speculation in selective scheduling."
- msgstr ""
+ clear_bb_flags ();
--#: config/rs6000/rs6000.opt:602
--msgid "Analyze and remove doubleword swaps from VSX computations."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:606
--msgid "Fuse certain operations together for better performance on power9."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:610
--msgid "Use/do not use certain scalar instructions added in ISA 3.0."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:614
--msgid "Use/do not use vector instructions added in ISA 3.0."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:618
--msgid ""
--"Use/do not use scalar register+offset memory instructions added in ISA 3.0."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:622
--msgid ""
--"Use/do not use vector register+offset memory instructions added in ISA 3.0."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:626
--msgid "Use/do not use register+offset memory instructions added in ISA 3.0."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:630
--msgid "Use/do not use the new min/max instructions defined in ISA 3.0."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:634
--msgid ""
--"Fuse medium/large code model toc references with the memory instruction."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:638
--msgid "Generate the integer modulo instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:642
--msgid "Enable/disable IEEE 128-bit floating point via the __float128 keyword."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:646
--msgid "Enable/disable using IEEE 128-bit floating point instructions."
--msgstr ""
--
--#: config/rs6000/rs6000.opt:650
--msgid "Enable/disable default conversions between __float128 & long double."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:24
--msgid "Select ABI calling convention."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:28 config/c6x/c6x.opt:42
--msgid "Select method for sdata handling."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:48 config/rs6000/sysv4.opt:52
--msgid "Align to the base type of the bit-field."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:57 config/rs6000/sysv4.opt:61
--msgid "Produce code relocatable at runtime."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:65 config/rs6000/sysv4.opt:69
--msgid "Produce little endian code."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:73 config/rs6000/sysv4.opt:77
--msgid "Produce big endian code."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:82 config/rs6000/sysv4.opt:86
--#: config/rs6000/sysv4.opt:95 config/rs6000/sysv4.opt:137
--#: config/rs6000/sysv4.opt:149
--msgid "no description yet."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:90
--msgid "Assume all variable arg functions are prototyped."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:99
--msgid "Use EABI."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:103
--msgid "Allow bit-fields to cross word boundaries."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:107
--msgid "Use alternate register names."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:113
--msgid "Use default method for sdata handling."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:117
--msgid "Link with libsim.a, libc.a and sim-crt0.o."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:121
--msgid "Link with libads.a, libc.a and crt0.o."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:125
--msgid "Link with libyk.a, libc.a and crt0.o."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:129
--msgid "Link with libmvme.a, libc.a and crt0.o."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:133
--msgid "Set the PPC_EMB bit in the ELF flags header."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:153
--msgid "Generate code to use a non-exec PLT and GOT."
--msgstr ""
--
--#: config/rs6000/sysv4.opt:157
--msgid "Generate code for old exec BSS PLT."
--msgstr ""
--
--#: config/alpha/alpha.opt:27
--msgid "Use fp registers."
--msgstr ""
--
--#: config/alpha/alpha.opt:35
--msgid "Request IEEE-conformant math library routines (OSF/1)."
--msgstr ""
--
--#: config/alpha/alpha.opt:39
--msgid "Emit IEEE-conformant code, without inexact exceptions."
--msgstr ""
--
--#: config/alpha/alpha.opt:46
--msgid "Do not emit complex integer constants to read-only memory."
--msgstr ""
--
--#: config/alpha/alpha.opt:50
--msgid "Use VAX fp."
--msgstr ""
--
--#: config/alpha/alpha.opt:54
--msgid "Do not use VAX fp."
--msgstr ""
--
--#: config/alpha/alpha.opt:58
--msgid "Emit code for the byte/word ISA extension."
--msgstr ""
--
--#: config/alpha/alpha.opt:62
--msgid "Emit code for the motion video ISA extension."
--msgstr ""
--
--#: config/alpha/alpha.opt:66
--msgid "Emit code for the fp move and sqrt ISA extension."
--msgstr ""
--
--#: config/alpha/alpha.opt:70
--msgid "Emit code for the counting ISA extension."
--msgstr ""
--
--#: config/alpha/alpha.opt:74
--msgid "Emit code using explicit relocation directives."
--msgstr ""
--
--#: config/alpha/alpha.opt:78
--msgid "Emit 16-bit relocations to the small data areas."
--msgstr ""
--
--#: config/alpha/alpha.opt:82
--msgid "Emit 32-bit relocations to the small data areas."
--msgstr ""
--
--#: config/alpha/alpha.opt:86
--msgid "Emit direct branches to local functions."
--msgstr ""
--
--#: config/alpha/alpha.opt:90
--msgid "Emit indirect branches to local functions."
--msgstr ""
--
--#: config/alpha/alpha.opt:94
--msgid "Emit rdval instead of rduniq for thread pointer."
--msgstr ""
--
--#: config/alpha/alpha.opt:106
--msgid "Use features of and schedule given CPU."
--msgstr ""
--
--#: config/alpha/alpha.opt:110
--msgid "Schedule given CPU."
--msgstr ""
--
--#: config/alpha/alpha.opt:114
--msgid "Control the generated fp rounding mode."
--msgstr ""
--
--#: config/alpha/alpha.opt:118
--msgid "Control the IEEE trap mode."
--msgstr ""
--
--#: config/alpha/alpha.opt:122
--msgid "Control the precision given to fp exceptions."
--msgstr ""
--
--#: config/alpha/alpha.opt:126
--msgid "Tune expected memory latency."
--msgstr ""
--
--#: config/tilepro/tilepro.opt:23
--msgid "Compile with 32 bit longs and pointers, which is the only supported"
--msgstr ""
--
--#: config/tilepro/tilepro.opt:28 config/tilegx/tilegx.opt:26
--msgid "-mcpu=CPU\tUse features of and schedule code for given CPU."
--msgstr ""
--
--#: config/tilepro/tilepro.opt:32
--msgid "Known TILEPro CPUs (for use with the -mcpu= option):"
--msgstr ""
--
--#: config/lm32/lm32.opt:24
--msgid "Enable multiply instructions."
--msgstr ""
--
--#: config/lm32/lm32.opt:28
--msgid "Enable divide and modulus instructions."
--msgstr ""
--
--#: config/lm32/lm32.opt:32
--msgid "Enable barrel shift instructions."
--msgstr ""
--
--#: config/lm32/lm32.opt:36
--msgid "Enable sign extend instructions."
--msgstr ""
--
--#: config/lm32/lm32.opt:40
--msgid "Enable user-defined instructions."
--msgstr ""
--
- #: config/nios2/elf.opt:26
- msgid "Link with a limited version of the C library."
- msgstr ""
-@@ -11275,16 +9343,6 @@
- msgid "Equivalent to -mgpopt=none."
- msgstr ""
+@@ -5213,12 +5215,17 @@
--#: config/nios2/nios2.opt:94 config/c6x/c6x.opt:30 config/mep/mep.opt:82
--#: config/mips/mips.opt:134 config/tilegx/tilegx.opt:45
--msgid "Use big-endian byte order."
--msgstr ""
--
--#: config/nios2/nios2.opt:98 config/c6x/c6x.opt:34 config/mep/mep.opt:86
--#: config/mips/mips.opt:138 config/tilegx/tilegx.opt:49
--msgid "Use little-endian byte order."
--msgstr ""
--
- #: config/nios2/nios2.opt:102
- msgid "Floating point custom instruction configuration name."
- msgstr ""
-@@ -11765,6 +9823,85 @@
- msgid "Enable generation of R2 CDX instructions."
- msgstr ""
+ ira_conflicts_p = optimize > 0;
-+#: config/lm32/lm32.opt:24
-+msgid "Enable multiply instructions."
-+msgstr ""
++ /* Determine the number of pseudos actually requiring coloring. */
++ for (i = FIRST_PSEUDO_REGISTER; i < DF_REG_SIZE (df); i++)
++ num_used_regs += !!(DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i));
+
-+#: config/lm32/lm32.opt:28
-+msgid "Enable divide and modulus instructions."
-+msgstr ""
+ /* If there are too many pseudos and/or basic blocks (e.g. 10K
+ pseudos and 10K blocks or 100K pseudos and 1K blocks), we will
+ use simplified and faster algorithms in LRA. */
+ lra_simple_p
+ = (ira_use_lra_p
+- && max_reg_num () >= (1 << 26) / last_basic_block_for_fn (cfun));
++ && num_used_regs >= (1 << 26) / last_basic_block_for_fn (cfun));
+
-+#: config/lm32/lm32.opt:32
-+msgid "Enable barrel shift instructions."
-+msgstr ""
-+
-+#: config/lm32/lm32.opt:36
-+msgid "Enable sign extend instructions."
-+msgstr ""
-+
-+#: config/lm32/lm32.opt:40
-+msgid "Enable user-defined instructions."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:7
-+msgid "Force assembly output to always use hex constants."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:11
-+msgid "Specify the MCU to build for."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:15
-+msgid ""
-+"Warn if an MCU name is unrecognised or conflicts with other options "
-+"(default: on)."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:19
-+msgid "Specify the ISA to build for: msp430, msp430x, msp430xv2."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:23
-+msgid "Select large model - 20-bit addresses/pointers."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:27
-+msgid "Select small model - 16-bit addresses/pointers (default)."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:31
-+msgid "Optimize opcode sizes at link time."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:38
-+msgid ""
-+"Use a minimum runtime (no static initializers or ctors) for memory-"
-+"constrained devices."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:45
-+msgid "Specify the type of hardware multiply to support."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:67
-+msgid "Specify whether functions should be placed into low or high memory."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:71
-+msgid "Specify whether variables should be placed into low or high memory."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:90
-+msgid ""
-+"Passes on a request to the assembler to enable fixes for various silicon "
-+"errata."
-+msgstr ""
-+
-+#: config/msp430/msp430.opt:94
-+msgid ""
-+"Passes on a request to the assembler to warn about various silicon errata."
-+msgstr ""
-+
- #: config/rx/rx.opt:29
- msgid "Store doubles in 64 bits."
- msgstr ""
-@@ -11799,6 +9936,10 @@
- "small data area."
- msgstr ""
-
-+#: config/rx/rx.opt:87 config/rl78/rl78.opt:27
-+msgid "Use the simulator runtime."
-+msgstr ""
-+
- #: config/rx/rx.opt:93
- msgid ""
- "Generate assembler output that is compatible with the Renesas AS100 "
-@@ -11860,861 +10001,615 @@
- msgid "Always use JSR, never BSR, for calls."
- msgstr ""
-
--#: config/visium/visium.opt:25
--msgid "Link with libc.a and libdebug.a."
-+#: config/cr16/cr16.opt:23
-+msgid "-msim Use simulator runtime."
- msgstr ""
-
--#: config/visium/visium.opt:29
--msgid "Link with libc.a and libsim.a."
-+#: config/cr16/cr16.opt:27
-+msgid "Generate SBIT, CBIT instructions."
- msgstr ""
-
--#: config/visium/visium.opt:33
--msgid "Use hardware FP (default)."
-+#: config/cr16/cr16.opt:31
-+msgid "Support multiply accumulate instructions."
- msgstr ""
-
--#: config/visium/visium.opt:65
--msgid "Generate code for the supervisor mode (default)."
-+#: config/cr16/cr16.opt:38
-+msgid "Treat data references as near, far or medium. medium is default."
- msgstr ""
-
--#: config/visium/visium.opt:69
--msgid "Generate code for the user mode."
-+#: config/cr16/cr16.opt:42
-+msgid "Generate code for CR16C architecture."
- msgstr ""
-
--#: config/visium/visium.opt:73
--msgid "Only retained for backward compatibility."
-+#: config/cr16/cr16.opt:46
-+msgid "Generate code for CR16C+ architecture (Default)."
- msgstr ""
-
--#: config/fused-madd.opt:22
--msgid "%<-mfused-madd%> is deprecated; use %<-ffp-contract=%> instead"
-+#: config/cr16/cr16.opt:50
-+msgid "Treat integers as 32-bit."
- msgstr ""
-
--#: config/sol2.opt:32
--msgid "Clear hardware capabilities when linking."
-+#: config/pa/pa-hpux.opt:27
-+msgid "Generate cpp defines for server IO."
- msgstr ""
-
--#: config/sol2.opt:36
--msgid "Pass -z text to linker."
-+#: config/pa/pa-hpux.opt:31 config/pa/pa-hpux1131.opt:23
-+#: config/pa/pa-hpux1111.opt:23 config/pa/pa-hpux1010.opt:23
-+msgid "Specify UNIX standard for predefines and linking."
- msgstr ""
-
--#: config/moxie/moxie.opt:31
--msgid "Enable MUL.X and UMUL.X instructions."
-+#: config/pa/pa-hpux.opt:35
-+msgid "Generate cpp defines for workstation IO."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:40
--msgid "Use software emulation for floating point (default)."
-+#: config/pa/pa.opt:30 config/pa/pa.opt:83 config/pa/pa.opt:91
-+msgid "Generate PA1.0 code."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:44
--msgid "Use hardware floating point instructions."
-+#: config/pa/pa.opt:34 config/pa/pa.opt:95 config/pa/pa.opt:136
-+msgid "Generate PA1.1 code."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:48
--msgid "Use table lookup optimization for small signed integer divisions."
-+#: config/pa/pa.opt:38 config/pa/pa.opt:99
-+msgid "Generate PA2.0 code (requires binutils 2.10 or later)."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:52
--msgid "-mcpu=PROCESSOR\t\tUse features of and schedule code for given CPU."
-+#: config/pa/pa.opt:46
-+msgid "Disable FP regs."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:56
--msgid "Don't optimize block moves, use memcpy."
-+#: config/pa/pa.opt:50
-+msgid "Disable indexed addressing."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:68
--msgid "Use the soft multiply emulation (default)."
-+#: config/pa/pa.opt:54
-+msgid "Generate fast indirect calls."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:72
--msgid "Use reorder instructions (swap and byte reversed load/store) (default)."
-+#: config/pa/pa.opt:62
-+msgid "Assume code will be assembled by GAS."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:76
--msgid "Use the software emulation for divides (default)."
-+#: config/pa/pa.opt:71
-+msgid "Enable linker optimizations."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:80
--msgid "Use the hardware barrel shifter instead of emulation."
-+#: config/pa/pa.opt:75
-+msgid "Always generate long calls."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:84
--msgid "Use pattern compare instructions."
-+#: config/pa/pa.opt:79
-+msgid "Emit long load/store sequences."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:87
--#, c-format
--msgid "%qs is deprecated; use -fstack-check"
-+#: config/pa/pa.opt:87
-+msgid "Disable space regs."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:88
--msgid "Check for stack overflow at runtime."
-+#: config/pa/pa.opt:103
-+msgid "Use portable calling conventions."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:92 config/iq2000/iq2000.opt:65
--msgid "Use GP relative sdata/sbss sections."
-+#: config/pa/pa.opt:107
-+msgid ""
-+"Specify CPU for scheduling purposes. Valid arguments are 700, 7100, 7100LC, "
-+"7200, 7300, and 8000."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:95
--#, c-format
--msgid "%qs is deprecated; use -fno-zero-initialized-in-bss"
-+#: config/pa/pa.opt:132 config/frv/frv.opt:215
-+msgid "Use software floating point."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:96
--msgid "Clear the BSS to zero and place zero initialized in BSS."
-+#: config/pa/pa.opt:140
-+msgid "Do not disable space regs."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:100
--msgid "Use multiply high instructions for high part of 32x32 multiply."
-+#: config/pa/pa64-hpux.opt:23
-+msgid "Assume code will be linked by GNU ld."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:104
--msgid "Use hardware floating point conversion instructions."
-+#: config/pa/pa64-hpux.opt:27
-+msgid "Assume code will be linked by HP ld."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:108
--msgid "Use hardware floating point square root instruction."
-+#: config/vxworks.opt:36
-+msgid "Assume the VxWorks RTP environment."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:112
--msgid "Description for mxl-mode-executable."
-+#: config/vxworks.opt:43
-+msgid "Assume the VxWorks vThreads environment."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:116
--msgid "Description for mxl-mode-xmdstub."
-+#: config/aarch64/aarch64.opt:40
-+msgid "The possible TLS dialects:"
- msgstr ""
-
--#: config/microblaze/microblaze.opt:120
--msgid "Description for mxl-mode-bootstrap."
-+#: config/aarch64/aarch64.opt:52
-+msgid "The code model option names for -mcmodel:"
- msgstr ""
-
--#: config/microblaze/microblaze.opt:124
--msgid "Description for mxl-mode-novectors."
-+#: config/aarch64/aarch64.opt:69
-+msgid "Generate code which uses only the general registers."
- msgstr ""
-
--#: config/microblaze/microblaze.opt:128
--msgid "Use hardware prefetch instruction"
-+#: config/aarch64/aarch64.opt:73
-+msgid "Workaround for ARM Cortex-A53 Erratum number 835769."
- msgstr ""
-
--#: config/vax/vax.opt:23 config/vax/vax.opt:27
--msgid "Target DFLOAT double precision code."
-+#: config/aarch64/aarch64.opt:77
-+msgid "Workaround for ARM Cortex-A53 Erratum number 843419."
- msgstr ""
-
--#: config/vax/vax.opt:31 config/vax/vax.opt:35
--msgid "Generate GFLOAT double precision code."
-+#: config/aarch64/aarch64.opt:85
-+msgid "Specify the code model."
- msgstr ""
-
--#: config/vax/vax.opt:39
--msgid "Generate code for GNU assembler (gas)."
-+#: config/aarch64/aarch64.opt:89
-+msgid "Don't assume that unaligned accesses are handled by the system."
- msgstr ""
-
--#: config/vax/vax.opt:43
--msgid "Generate code for UNIX assembler."
-+#: config/aarch64/aarch64.opt:97
-+msgid "Specify TLS dialect."
- msgstr ""
-
--#: config/vax/vax.opt:47
--msgid "Use VAXC structure conventions."
-+#: config/aarch64/aarch64.opt:101
-+msgid ""
-+"Specifies bit size of immediate TLS offsets. Valid values are 12, 24, 32, "
-+"48."
- msgstr ""
-
--#: config/vax/vax.opt:51
--msgid "Use new adddi3/subdi3 patterns."
-+#: config/aarch64/aarch64.opt:120
-+msgid "-march=ARCH\tUse features of architecture ARCH."
- msgstr ""
-
--#: config/frv/frv.opt:30
--msgid "Use 4 media accumulators."
-+#: config/aarch64/aarch64.opt:124
-+msgid "-mcpu=CPU\tUse features of and optimize for CPU."
- msgstr ""
-
--#: config/frv/frv.opt:34
--msgid "Use 8 media accumulators."
-+#: config/aarch64/aarch64.opt:128
-+msgid "-mtune=CPU\tOptimize for CPU."
- msgstr ""
-
--#: config/frv/frv.opt:38
--msgid "Enable label alignment optimizations."
-+#: config/aarch64/aarch64.opt:132
-+msgid "-mabi=ABI\tGenerate code that conforms to the specified ABI."
- msgstr ""
-
--#: config/frv/frv.opt:42
--msgid "Dynamically allocate cc registers."
--msgstr ""
--
--#: config/frv/frv.opt:49
--msgid "Set the cost of branches."
--msgstr ""
--
--#: config/frv/frv.opt:53
--msgid "Enable conditional execution other than moves/scc."
--msgstr ""
--
--#: config/frv/frv.opt:57
--msgid "Change the maximum length of conditionally-executed sequences."
--msgstr ""
--
--#: config/frv/frv.opt:61
-+#: config/aarch64/aarch64.opt:136
- msgid ""
--"Change the number of temporary registers that are available to conditionally-"
--"executed sequences."
-+"-moverride=STRING\tPower users only! Override CPU optimization parameters."
- msgstr ""
-
--#: config/frv/frv.opt:65
--msgid "Enable conditional moves."
-+#: config/aarch64/aarch64.opt:140
-+msgid "Known AArch64 ABIs (for use with the -mabi= option):"
- msgstr ""
-
--#: config/frv/frv.opt:69
--msgid "Set the target CPU type."
-+#: config/aarch64/aarch64.opt:150
-+msgid "PC relative literal loads."
- msgstr ""
-
--#: config/frv/frv.opt:73
--msgid "Known FR-V CPUs (for use with the -mcpu= option):"
--msgstr ""
--
--#: config/frv/frv.opt:122
--msgid "Use fp double instructions."
--msgstr ""
--
--#: config/frv/frv.opt:126
--msgid "Change the ABI to allow double word insns."
--msgstr ""
--
--#: config/frv/frv.opt:134
--msgid "Just use icc0/fcc0."
--msgstr ""
--
--#: config/frv/frv.opt:138
--msgid "Only use 32 FPRs."
--msgstr ""
--
--#: config/frv/frv.opt:142
--msgid "Use 64 FPRs."
--msgstr ""
--
--#: config/frv/frv.opt:146
--msgid "Only use 32 GPRs."
--msgstr ""
--
--#: config/frv/frv.opt:150
--msgid "Use 64 GPRs."
--msgstr ""
--
--#: config/frv/frv.opt:154
--msgid "Enable use of GPREL for read-only data in FDPIC."
--msgstr ""
--
--#: config/frv/frv.opt:166
--msgid "Enable PIC support for building libraries."
--msgstr ""
--
--#: config/frv/frv.opt:170
--msgid "Follow the EABI linkage requirements."
--msgstr ""
--
--#: config/frv/frv.opt:174
--msgid "Disallow direct calls to global functions."
--msgstr ""
--
--#: config/frv/frv.opt:178
--msgid "Use media instructions."
--msgstr ""
--
--#: config/frv/frv.opt:182
--msgid "Use multiply add/subtract instructions."
--msgstr ""
--
--#: config/frv/frv.opt:186
--msgid "Enable optimizing &&/|| in conditional execution."
--msgstr ""
--
--#: config/frv/frv.opt:190
--msgid "Enable nested conditional execution optimizations."
--msgstr ""
--
--#: config/frv/frv.opt:195
--msgid "Do not mark ABI switches in e_flags."
--msgstr ""
--
--#: config/frv/frv.opt:199
--msgid "Remove redundant membars."
--msgstr ""
--
--#: config/frv/frv.opt:203
--msgid "Pack VLIW instructions."
--msgstr ""
--
--#: config/frv/frv.opt:207
--msgid "Enable setting GPRs to the result of comparisons."
--msgstr ""
--
--#: config/frv/frv.opt:211
--msgid "Change the amount of scheduler lookahead."
--msgstr ""
--
--#: config/frv/frv.opt:219
--msgid "Assume a large TLS segment."
--msgstr ""
--
--#: config/frv/frv.opt:223
--msgid "Do not assume a large TLS segment."
--msgstr ""
--
--#: config/frv/frv.opt:228
--msgid "Cause gas to print tomcat statistics."
--msgstr ""
--
--#: config/frv/frv.opt:233
--msgid "Link with the library-pic libraries."
--msgstr ""
--
--#: config/frv/frv.opt:237
--msgid "Allow branches to be packed with other instructions."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:30
--msgid "Target the AM33 processor."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:34
--msgid "Target the AM33/2.0 processor."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:38
--msgid "Target the AM34 processor."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:46
--msgid "Work around hardware multiply bug."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:55
--msgid "Enable linker relaxations."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:59
--msgid "Return pointers in both a0 and d0."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:63
--msgid "Allow gcc to generate LIW instructions."
--msgstr ""
--
--#: config/mn10300/mn10300.opt:67
--msgid "Allow gcc to generate the SETLB and Lcc instructions."
--msgstr ""
--
--#: config/nds32/nds32.opt:26
--msgid "Generate code in big-endian mode."
--msgstr ""
--
--#: config/nds32/nds32.opt:30
--msgid "Generate code in little-endian mode."
--msgstr ""
--
--#: config/nds32/nds32.opt:34
--msgid "Use reduced-set registers for register allocation."
--msgstr ""
--
--#: config/nds32/nds32.opt:38
--msgid "Use full-set registers for register allocation."
--msgstr ""
--
--#: config/nds32/nds32.opt:42
--msgid "Generate conditional move instructions."
--msgstr ""
--
--#: config/nds32/nds32.opt:46
--msgid "Generate performance extension instructions."
--msgstr ""
--
--#: config/nds32/nds32.opt:50
--msgid "Generate v3 push25/pop25 instructions."
--msgstr ""
--
--#: config/nds32/nds32.opt:54
--msgid "Generate 16-bit instructions."
--msgstr ""
+ if (lra_simple_p)
+ {
+ /* It permits to skip live range splitting in LRA. */
+Index: gcc/tree-vect-stmts.c
+===================================================================
+--- a/src/gcc/tree-vect-stmts.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-vect-stmts.c (.../branches/gcc-9-branch)
+@@ -3279,7 +3279,7 @@
+ if (!vectype_in)
+ vectype_in = vectypes[i];
+ else if (vectypes[i]
+- && vectypes[i] != vectype_in)
++ && !types_compatible_p (vectypes[i], vectype_in))
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+@@ -8276,7 +8276,9 @@
+ || alignment_support_scheme == dr_explicit_realign)
+ && !compute_in_loop)
+ {
+- msq = vect_setup_realignment (first_stmt_info, gsi, &realignment_token,
++ msq = vect_setup_realignment (first_stmt_info_for_drptr
++ ? first_stmt_info_for_drptr
++ : first_stmt_info, gsi, &realignment_token,
+ alignment_support_scheme, NULL_TREE,
+ &at_loop);
+ if (alignment_support_scheme == dr_explicit_realign_optimized)
+Index: gcc/omp-simd-clone.c
+===================================================================
+--- a/src/gcc/omp-simd-clone.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/omp-simd-clone.c (.../branches/gcc-9-branch)
+@@ -498,7 +498,6 @@
+ /* Adjust the function return type. */
+ if (orig_rettype == void_type_node)
+ return NULL_TREE;
+- TREE_TYPE (fndecl) = build_distinct_type_copy (TREE_TYPE (fndecl));
+ t = TREE_TYPE (TREE_TYPE (fndecl));
+ if (INTEGRAL_TYPE_P (t) || POINTER_TYPE_P (t))
+ veclen = node->simdclone->vecsize_int;
+@@ -724,11 +723,7 @@
+ else
+ new_reversed = void_list_node;
+ }
-
--#: config/nds32/nds32.opt:58
--msgid "Specify the size of each interrupt vector, which must be 4 or 16."
--msgstr ""
+- tree new_type = build_distinct_type_copy (TREE_TYPE (node->decl));
+- TYPE_ARG_TYPES (new_type) = new_reversed;
+- TREE_TYPE (node->decl) = new_type;
-
--#: config/nds32/nds32.opt:62
-+#: config/aarch64/aarch64.opt:154
- msgid ""
--"Specify the size of each cache block, which must be a power of 2 between 4 "
--"and 512."
-+"When calculating the reciprocal square root approximation, uses one less "
-+"step than otherwise, thus reducing latency and precision."
- msgstr ""
-
--#: config/nds32/nds32.opt:70
--msgid "Known arch types (for use with the -march= option):"
-+#: config/h8300/h8300.opt:23
-+msgid "Generate H8S code."
- msgstr ""
-
--#: config/nds32/nds32.opt:83
--msgid "Specify the address generation strategy for code model."
-+#: config/h8300/h8300.opt:27
-+msgid "Generate H8SX code."
- msgstr ""
-
--#: config/nds32/nds32.opt:87
--msgid "Known cmodel types (for use with the -mcmodel= option):"
-+#: config/h8300/h8300.opt:31
-+msgid "Generate H8S/2600 code."
- msgstr ""
-
--#: config/nds32/nds32.opt:100
--msgid "Enable constructor/destructor feature."
-+#: config/h8300/h8300.opt:35
-+msgid "Make integers 32 bits wide."
- msgstr ""
-
--#: config/nds32/nds32.opt:104
--msgid "Guide linker to relax instructions."
-+#: config/h8300/h8300.opt:42
-+msgid "Use registers for argument passing."
- msgstr ""
-
--#: config/iq2000/iq2000.opt:31
--msgid "Specify CPU for code generation purposes."
-+#: config/h8300/h8300.opt:46
-+msgid "Consider access to byte sized memory slow."
- msgstr ""
-
--#: config/iq2000/iq2000.opt:47
--msgid "Specify CPU for scheduling purposes."
-+#: config/h8300/h8300.opt:50
-+msgid "Enable linker relaxing."
- msgstr ""
-
--#: config/iq2000/iq2000.opt:51
--msgid "Known IQ2000 CPUs (for use with the -mcpu= option):"
-+#: config/h8300/h8300.opt:54
-+msgid "Generate H8/300H code."
- msgstr ""
-
--#: config/iq2000/iq2000.opt:61 config/mips/mips.opt:142
--msgid "Use ROM instead of RAM."
-+#: config/h8300/h8300.opt:58
-+msgid "Enable the normal mode."
- msgstr ""
-
--#: config/iq2000/iq2000.opt:70
--msgid "No default crt0.o."
-+#: config/h8300/h8300.opt:62
-+msgid "Use H8/300 alignment rules."
- msgstr ""
-
--#: config/iq2000/iq2000.opt:74 config/mips/mips.opt:393
--msgid "Put uninitialized constants in ROM (needs -membedded-data)."
-+#: config/h8300/h8300.opt:66
-+msgid "Push extended registers on stack in monitor functions."
- msgstr ""
-
--#: config/c6x/c6x-tables.opt:24
--msgid "Known C6X ISAs (for use with the -march= option):"
-+#: config/h8300/h8300.opt:70
-+msgid "Do not push extended registers on stack in monitor functions."
- msgstr ""
-
--#: config/c6x/c6x.opt:46
--msgid "Valid arguments for the -msdata= option."
-+#: config/nvptx/nvptx.opt:22
-+msgid "Generate code for a 32-bit ABI."
- msgstr ""
-
--#: config/c6x/c6x.opt:59
--msgid "Compile for the DSBT shared library ABI."
-+#: config/nvptx/nvptx.opt:26
-+msgid "Generate code for a 64-bit ABI."
- msgstr ""
-
--#: config/cris/linux.opt:27
--msgid "Together with -fpic and -fPIC, do not use GOTPLT references."
-+#: config/nvptx/nvptx.opt:30
-+msgid "Link in code for a __main kernel."
- msgstr ""
-
--#: config/cris/cris.opt:45
--msgid "Work around bug in multiplication instruction."
-+#: config/nvptx/nvptx.opt:34
-+msgid "Optimize partition neutering."
- msgstr ""
-
--#: config/cris/cris.opt:51
--msgid "Compile for ETRAX 4 (CRIS v3)."
-+#: config/vax/vax.opt:23 config/vax/vax.opt:27
-+msgid "Target DFLOAT double precision code."
- msgstr ""
-
--#: config/cris/cris.opt:56
--msgid "Compile for ETRAX 100 (CRIS v8)."
-+#: config/vax/vax.opt:31 config/vax/vax.opt:35
-+msgid "Generate GFLOAT double precision code."
- msgstr ""
-
--#: config/cris/cris.opt:64
--msgid "Emit verbose debug information in assembly code."
-+#: config/vax/vax.opt:39
-+msgid "Generate code for GNU assembler (gas)."
- msgstr ""
-
--#: config/cris/cris.opt:71
--msgid "Do not use condition codes from normal instructions."
-+#: config/vax/vax.opt:43
-+msgid "Generate code for UNIX assembler."
- msgstr ""
-
--#: config/cris/cris.opt:80
--msgid "Do not emit addressing modes with side-effect assignment."
-+#: config/vax/vax.opt:47
-+msgid "Use VAXC structure conventions."
- msgstr ""
-
--#: config/cris/cris.opt:89
--msgid "Do not tune stack alignment."
-+#: config/vax/vax.opt:51
-+msgid "Use new adddi3/subdi3 patterns."
- msgstr ""
-
--#: config/cris/cris.opt:98
--msgid "Do not tune writable data alignment."
-+#: config/linux.opt:24
-+msgid "Use Bionic C library."
- msgstr ""
-
--#: config/cris/cris.opt:107
--msgid "Do not tune code and read-only data alignment."
-+#: config/linux.opt:28
-+msgid "Use GNU C library."
- msgstr ""
-
--#: config/cris/cris.opt:116
--msgid "Align code and data to 32 bits."
-+#: config/linux.opt:32
-+msgid "Use uClibc C library."
- msgstr ""
-
--#: config/cris/cris.opt:133
--msgid "Don't align items in code or data."
-+#: config/linux.opt:36
-+msgid "Use musl C library."
- msgstr ""
-
--#: config/cris/cris.opt:142
--msgid "Do not emit function prologue or epilogue."
-+#: config/mmix/mmix.opt:24
-+msgid "For intrinsics library: pass all parameters in registers."
- msgstr ""
-
--#: config/cris/cris.opt:149
--msgid "Use the most feature-enabling options allowed by other options."
-+#: config/mmix/mmix.opt:28
-+msgid "Use register stack for parameters and return value."
- msgstr ""
-
--#: config/cris/cris.opt:158
--msgid "Override -mbest-lib-options."
-+#: config/mmix/mmix.opt:32
-+msgid "Use call-clobbered registers for parameters and return value."
- msgstr ""
-
--#: config/cris/cris.opt:165
--msgid "-march=ARCH\tGenerate code for the specified chip or CPU version."
-+#: config/mmix/mmix.opt:37
-+msgid "Use epsilon-respecting floating point compare instructions."
- msgstr ""
-
--#: config/cris/cris.opt:169
--msgid "-mtune=ARCH\tTune alignment for the specified chip or CPU version."
-+#: config/mmix/mmix.opt:41
-+msgid "Use zero-extending memory loads, not sign-extending ones."
- msgstr ""
-
--#: config/cris/cris.opt:173
-+#: config/mmix/mmix.opt:45
- msgid ""
--"-mmax-stackframe=SIZE\tWarn when a stackframe is larger than the specified "
--"size."
-+"Generate divide results with reminder having the same sign as the divisor "
-+"(not the dividend)."
- msgstr ""
-
--#: config/cris/cris.opt:180
--msgid ""
--"Emit traps as \"break 8\", default for CRIS v3 and up. If disabled, calls "
--"to abort() are used."
-+#: config/mmix/mmix.opt:49
-+msgid "Prepend global symbols with \":\" (for use with PREFIX)."
- msgstr ""
-
--#: config/cris/cris.opt:184
--msgid ""
--"Emit checks causing \"break 8\" instructions to execute when applying atomic "
--"builtins on misaligned memory."
-+#: config/mmix/mmix.opt:53
-+msgid "Do not provide a default start-address 0x100 of the program."
- msgstr ""
-
--#: config/cris/cris.opt:188
--msgid ""
--"Handle atomic builtins that may be applied to unaligned data by calling "
--"library functions. Overrides -mtrap-unaligned-atomic."
-+#: config/mmix/mmix.opt:57
-+msgid "Link to emit program in ELF format (rather than mmo)."
- msgstr ""
-
--#: config/sh/superh.opt:6
--msgid "Board name [and memory region]."
-+#: config/mmix/mmix.opt:61
-+msgid "Use P-mnemonics for branches statically predicted as taken."
- msgstr ""
-
--#: config/sh/superh.opt:10
--msgid "Runtime name."
-+#: config/mmix/mmix.opt:65
-+msgid "Don't use P-mnemonics for branches."
- msgstr ""
-
--#: config/sh/sh.opt:48
--msgid "Generate SH1 code."
-+#: config/mmix/mmix.opt:79
-+msgid "Use addresses that allocate global registers."
- msgstr ""
-
--#: config/sh/sh.opt:52
--msgid "Generate SH2 code."
-+#: config/mmix/mmix.opt:83
-+msgid "Do not use addresses that allocate global registers."
- msgstr ""
-
--#: config/sh/sh.opt:56
--msgid "Generate default double-precision SH2a-FPU code."
-+#: config/mmix/mmix.opt:87
-+msgid "Generate a single exit point for each function."
- msgstr ""
-
--#: config/sh/sh.opt:60
--msgid "Generate SH2a FPU-less code."
-+#: config/mmix/mmix.opt:91
-+msgid "Do not generate a single exit point for each function."
- msgstr ""
-
--#: config/sh/sh.opt:64
--msgid "Generate default single-precision SH2a-FPU code."
-+#: config/mmix/mmix.opt:95
-+msgid "Set start-address of the program."
- msgstr ""
-
--#: config/sh/sh.opt:68
--msgid "Generate only single-precision SH2a-FPU code."
-+#: config/mmix/mmix.opt:99
-+msgid "Set start-address of data."
- msgstr ""
-
--#: config/sh/sh.opt:72
--msgid "Generate SH2e code."
-+#: config/fr30/fr30.opt:23
-+msgid "Assume small address space."
- msgstr ""
-
--#: config/sh/sh.opt:76
--msgid "Generate SH3 code."
-+#: config/pdp11/pdp11.opt:23
-+msgid "Generate code for an 11/10."
- msgstr ""
-
--#: config/sh/sh.opt:80
--msgid "Generate SH3e code."
-+#: config/pdp11/pdp11.opt:27
-+msgid "Generate code for an 11/40."
- msgstr ""
-
--#: config/sh/sh.opt:84
--msgid "Generate SH4 code."
-+#: config/pdp11/pdp11.opt:31
-+msgid "Generate code for an 11/45."
- msgstr ""
-
--#: config/sh/sh.opt:88
--msgid "Generate SH4-100 code."
-+#: config/pdp11/pdp11.opt:35
-+msgid "Return floating-point results in ac0 (fr0 in Unix assembler syntax)."
- msgstr ""
-
--#: config/sh/sh.opt:92
--msgid "Generate SH4-200 code."
-+#: config/pdp11/pdp11.opt:39
-+msgid "Do not use inline patterns for copying memory."
- msgstr ""
-
--#: config/sh/sh.opt:98
--msgid "Generate SH4-300 code."
-+#: config/pdp11/pdp11.opt:43
-+msgid "Use inline patterns for copying memory."
- msgstr ""
-
--#: config/sh/sh.opt:102
--msgid "Generate SH4 FPU-less code."
-+#: config/pdp11/pdp11.opt:47
-+msgid "Do not pretend that branches are expensive."
- msgstr ""
-
--#: config/sh/sh.opt:106
--msgid "Generate SH4-100 FPU-less code."
-+#: config/pdp11/pdp11.opt:51
-+msgid "Pretend that branches are expensive."
- msgstr ""
-
--#: config/sh/sh.opt:110
--msgid "Generate SH4-200 FPU-less code."
-+#: config/pdp11/pdp11.opt:55
-+msgid "Use the DEC assembler syntax."
- msgstr ""
-
--#: config/sh/sh.opt:114
--msgid "Generate SH4-300 FPU-less code."
-+#: config/pdp11/pdp11.opt:59
-+msgid "Use 32 bit float."
- msgstr ""
-
--#: config/sh/sh.opt:118
--msgid "Generate code for SH4 340 series (MMU/FPU-less)."
-+#: config/pdp11/pdp11.opt:63
-+msgid "Use 64 bit float."
- msgstr ""
-
--#: config/sh/sh.opt:123
--msgid "Generate code for SH4 400 series (MMU/FPU-less)."
-+#: config/pdp11/pdp11.opt:67 config/frv/frv.opt:158
-+#: config/rs6000/rs6000.opt:177
-+msgid "Use hardware floating point."
- msgstr ""
-
--#: config/sh/sh.opt:128
--msgid "Generate code for SH4 500 series (FPU-less)."
-+#: config/pdp11/pdp11.opt:71
-+msgid "Use 16 bit int."
- msgstr ""
-
--#: config/sh/sh.opt:133
--msgid "Generate default single-precision SH4 code."
-+#: config/pdp11/pdp11.opt:75
-+msgid "Use 32 bit int."
- msgstr ""
-
--#: config/sh/sh.opt:137
--msgid "Generate default single-precision SH4-100 code."
-+#: config/pdp11/pdp11.opt:79 config/rs6000/rs6000.opt:173
-+msgid "Do not use hardware floating point."
- msgstr ""
-
--#: config/sh/sh.opt:141
--msgid "Generate default single-precision SH4-200 code."
-+#: config/pdp11/pdp11.opt:83
-+msgid "Target has split I&D."
- msgstr ""
-
--#: config/sh/sh.opt:145
--msgid "Generate default single-precision SH4-300 code."
-+#: config/pdp11/pdp11.opt:87
-+msgid "Use UNIX assembler syntax."
- msgstr ""
-
--#: config/sh/sh.opt:149
--msgid "Generate only single-precision SH4 code."
-+#: config/frv/frv.opt:30
-+msgid "Use 4 media accumulators."
- msgstr ""
-
--#: config/sh/sh.opt:153
--msgid "Generate only single-precision SH4-100 code."
-+#: config/frv/frv.opt:34
-+msgid "Use 8 media accumulators."
- msgstr ""
-
--#: config/sh/sh.opt:157
--msgid "Generate only single-precision SH4-200 code."
-+#: config/frv/frv.opt:38
-+msgid "Enable label alignment optimizations."
- msgstr ""
-
--#: config/sh/sh.opt:161
--msgid "Generate only single-precision SH4-300 code."
-+#: config/frv/frv.opt:42
-+msgid "Dynamically allocate cc registers."
- msgstr ""
-
--#: config/sh/sh.opt:165
--msgid "Generate SH4a code."
-+#: config/frv/frv.opt:49
-+msgid "Set the cost of branches."
- msgstr ""
-
--#: config/sh/sh.opt:169
--msgid "Generate SH4a FPU-less code."
-+#: config/frv/frv.opt:53
-+msgid "Enable conditional execution other than moves/scc."
- msgstr ""
-
--#: config/sh/sh.opt:173
--msgid "Generate default single-precision SH4a code."
-+#: config/frv/frv.opt:57
-+msgid "Change the maximum length of conditionally-executed sequences."
- msgstr ""
-
--#: config/sh/sh.opt:177
--msgid "Generate only single-precision SH4a code."
-+#: config/frv/frv.opt:61
-+msgid ""
-+"Change the number of temporary registers that are available to conditionally-"
-+"executed sequences."
- msgstr ""
-
--#: config/sh/sh.opt:181
--msgid "Generate SH4al-dsp code."
-+#: config/frv/frv.opt:65
-+msgid "Enable conditional moves."
- msgstr ""
-
--#: config/sh/sh.opt:185
--msgid "Generate 32-bit SHmedia code."
-+#: config/frv/frv.opt:69
-+msgid "Set the target CPU type."
- msgstr ""
-
--#: config/sh/sh.opt:189
--msgid "Generate 32-bit FPU-less SHmedia code."
-+#: config/frv/frv.opt:73
-+msgid "Known FR-V CPUs (for use with the -mcpu= option):"
- msgstr ""
-
--#: config/sh/sh.opt:193
--msgid "Generate 64-bit SHmedia code."
-+#: config/frv/frv.opt:122
-+msgid "Use fp double instructions."
- msgstr ""
-
--#: config/sh/sh.opt:197
--msgid "Generate 64-bit FPU-less SHmedia code."
-+#: config/frv/frv.opt:126
-+msgid "Change the ABI to allow double word insns."
- msgstr ""
-
--#: config/sh/sh.opt:201
--msgid "Generate SHcompact code."
-+#: config/frv/frv.opt:130 config/bfin/bfin.opt:90
-+msgid "Enable Function Descriptor PIC mode."
- msgstr ""
-
--#: config/sh/sh.opt:205
--msgid "Generate FPU-less SHcompact code."
-+#: config/frv/frv.opt:134
-+msgid "Just use icc0/fcc0."
- msgstr ""
-
--#: config/sh/sh.opt:217
--msgid "Generate code in big endian mode."
-+#: config/frv/frv.opt:138
-+msgid "Only use 32 FPRs."
- msgstr ""
-
--#: config/sh/sh.opt:221
--msgid "Generate 32-bit offsets in switch tables."
-+#: config/frv/frv.opt:142
-+msgid "Use 64 FPRs."
- msgstr ""
-
--#: config/sh/sh.opt:225
--msgid "Generate bit instructions."
-+#: config/frv/frv.opt:146
-+msgid "Only use 32 GPRs."
- msgstr ""
-
--#: config/sh/sh.opt:229
--msgid "Cost to assume for a branch insn."
-+#: config/frv/frv.opt:150
-+msgid "Use 64 GPRs."
- msgstr ""
-
--#: config/sh/sh.opt:233
--msgid "Assume that zero displacement conditional branches are fast."
-+#: config/frv/frv.opt:154
-+msgid "Enable use of GPREL for read-only data in FDPIC."
- msgstr ""
-
--#: config/sh/sh.opt:236 config/sh/sh.opt:240
--#, c-format
--msgid "%qs is deprecated and has no effect"
-+#: config/frv/frv.opt:162 config/bfin/bfin.opt:94
-+msgid "Enable inlining of PLT in function calls."
- msgstr ""
-
--#: config/sh/sh.opt:237
--msgid "Enable cbranchdi4 pattern."
-+#: config/frv/frv.opt:166
-+msgid "Enable PIC support for building libraries."
- msgstr ""
-
--#: config/sh/sh.opt:241
--msgid "Emit cmpeqdi_t pattern even when -mcbranchdi is in effect."
-+#: config/frv/frv.opt:170
-+msgid "Follow the EABI linkage requirements."
- msgstr ""
-
--#: config/sh/sh.opt:245
--msgid "Force the usage of delay slots for conditional branches."
-+#: config/frv/frv.opt:174
-+msgid "Disallow direct calls to global functions."
- msgstr ""
-
--#: config/sh/sh.opt:249
--msgid "Enable SH5 cut2 workaround."
-+#: config/frv/frv.opt:178
-+msgid "Use media instructions."
- msgstr ""
-
--#: config/sh/sh.opt:253
--msgid "Align doubles at 64-bit boundaries."
-+#: config/frv/frv.opt:182
-+msgid "Use multiply add/subtract instructions."
- msgstr ""
-
--#: config/sh/sh.opt:257
--msgid ""
--"Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, "
--"inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table."
-+#: config/frv/frv.opt:186
-+msgid "Enable optimizing &&/|| in conditional execution."
- msgstr ""
-
--#: config/sh/sh.opt:261
--msgid "Specify name for 32 bit signed division function."
-+#: config/frv/frv.opt:190
-+msgid "Enable nested conditional execution optimizations."
- msgstr ""
-
--#: config/sh/sh.opt:265
--msgid "Generate ELF FDPIC code."
-+#: config/frv/frv.opt:195
-+msgid "Do not mark ABI switches in e_flags."
- msgstr ""
-
--#: config/sh/sh.opt:269
--msgid ""
--"Enable the use of 64-bit floating point registers in fmov instructions. See "
--"-mdalign if 64-bit alignment is required."
-+#: config/frv/frv.opt:199
-+msgid "Remove redundant membars."
- msgstr ""
-
--#: config/sh/sh.opt:277
--msgid "Cost to assume for gettr insn."
-+#: config/frv/frv.opt:203
-+msgid "Pack VLIW instructions."
- msgstr ""
-
--#: config/sh/sh.opt:281 config/sh/sh.opt:331
--msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions."
-+#: config/frv/frv.opt:207
-+msgid "Enable setting GPRs to the result of comparisons."
- msgstr ""
-
--#: config/sh/sh.opt:285
--msgid "Increase the IEEE compliance for floating-point comparisons."
-+#: config/frv/frv.opt:211
-+msgid "Change the amount of scheduler lookahead."
- msgstr ""
-
--#: config/sh/sh.opt:289
--msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact."
-+#: config/frv/frv.opt:219
-+msgid "Assume a large TLS segment."
- msgstr ""
-
--#: config/sh/sh.opt:293
--msgid ""
--"inline code to invalidate instruction cache entries after setting up nested "
--"function trampolines."
-+#: config/frv/frv.opt:223
-+msgid "Do not assume a large TLS segment."
- msgstr ""
++ TYPE_ARG_TYPES (TREE_TYPE (node->decl)) = new_reversed;
+ adjustments.release ();
+ }
+ args.release ();
+@@ -1164,6 +1159,7 @@
+ {
+ push_cfun (DECL_STRUCT_FUNCTION (node->decl));
--#: config/sh/sh.opt:297
--msgid "Assume symbols might be invalid."
-+#: config/frv/frv.opt:228
-+msgid "Cause gas to print tomcat statistics."
- msgstr ""
++ TREE_TYPE (node->decl) = build_distinct_type_copy (TREE_TYPE (node->decl));
+ targetm.simd_clone.adjust (node);
--#: config/sh/sh.opt:301 config/arc/arc.opt:209
--msgid "Annotate assembler instructions with estimated addresses."
-+#: config/frv/frv.opt:233
-+msgid "Link with the library-pic libraries."
- msgstr ""
+ tree retval = simd_clone_adjust_return_type (node);
+@@ -1737,6 +1733,8 @@
+ simd_clone_adjust (n);
+ else
+ {
++ TREE_TYPE (n->decl)
++ = build_distinct_type_copy (TREE_TYPE (n->decl));
+ targetm.simd_clone.adjust (n);
+ simd_clone_adjust_return_type (n);
+ simd_clone_adjust_argument_types (n);
+Index: gcc/tree-ssa-scopedtables.c
+===================================================================
+--- a/src/gcc/tree-ssa-scopedtables.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-scopedtables.c (.../branches/gcc-9-branch)
+@@ -298,7 +298,7 @@
+ && TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME
+ && (ao_ref_init (&ref, gimple_assign_rhs1 (stmt)),
+ ref.base_alias_set = ref.ref_alias_set = tbaa_p ? -1 : 0, true)
+- && walk_non_aliased_vuses (&ref, vuse2, vuse_eq, NULL, NULL,
++ && walk_non_aliased_vuses (&ref, vuse2, true, vuse_eq, NULL, NULL,
+ limit, vuse1) != NULL))
+ {
+ if (insert)
+Index: gcc/symtab.c
+===================================================================
+--- a/src/gcc/symtab.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/symtab.c (.../branches/gcc-9-branch)
+@@ -2328,10 +2328,18 @@
+ first place. */
+ if (VAR_P (decl) && DECL_HARD_REGISTER (decl))
+ return false;
+- /* FIXME: Builtins corresponding to real functions probably should have
+- symbol table entries. */
+- if (TREE_CODE (decl) == FUNCTION_DECL && fndecl_built_in_p (decl))
+- return false;
++ if (TREE_CODE (decl) == FUNCTION_DECL && !definition
++ && fndecl_built_in_p (decl))
++ {
++ /* Builtins like those for most math functions have actual implementations
++ in libraries so make sure to output references into the symbol table to
++ make those libraries referenced. Note this is incomplete handling for
++ now and only covers math functions. */
++ if (builtin_with_linkage_p (decl))
++ return true;
++ else
++ return false;
++ }
--#: config/sh/sh.opt:305
--msgid "Generate code in little endian mode."
-+#: config/frv/frv.opt:237
-+msgid "Allow branches to be packed with other instructions."
- msgstr ""
+ /* We have real symbol that should be in symbol table. However try to trim
+ down the refernces to libraries bit more because linker will otherwise
+Index: gcc/tree-ssa-phiprop.c
+===================================================================
+--- a/src/gcc/tree-ssa-phiprop.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-ssa-phiprop.c (.../branches/gcc-9-branch)
+@@ -338,8 +338,15 @@
+ && (!type
+ || types_compatible_p
+ (TREE_TYPE (gimple_assign_lhs (use_stmt)), type))
+- /* We cannot replace a load that may throw or is volatile. */
+- && !stmt_can_throw_internal (cfun, use_stmt)))
++ /* We cannot replace a load that may throw or is volatile.
++ For volatiles the transform can change the number of
++ executions if the load is inside a loop but the address
++ computations outside (PR91812). We could relax this
++ if we guard against that appropriately. For loads that can
++ throw we could relax things if the moved loads all are
++ known to not throw. */
++ && !stmt_can_throw_internal (cfun, use_stmt)
++ && !gimple_has_volatile_ops (use_stmt)))
+ continue;
--#: config/sh/sh.opt:309
--msgid "Mark MAC register as call-clobbered."
-+#: config/tilegx/tilegx.opt:30
-+msgid "Known TILE-Gx CPUs (for use with the -mcpu= option):"
- msgstr ""
+ /* Check if we can move the loads. The def stmt of the virtual use
+Index: gcc/tree-object-size.c
+===================================================================
+--- a/src/gcc/tree-object-size.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-object-size.c (.../branches/gcc-9-branch)
+@@ -890,6 +890,9 @@
+ else
+ expr_object_size (osi, var, then_);
--#: config/sh/sh.opt:315
--msgid "Make structs a multiple of 4 bytes (warning: ABI altered)."
-+#: config/tilegx/tilegx.opt:37
-+msgid "Compile with 32 bit longs and pointers."
- msgstr ""
++ if (object_sizes[object_size_type][varno] == unknown[object_size_type])
++ return reexamine;
++
+ if (TREE_CODE (else_) == SSA_NAME)
+ reexamine |= merge_object_sizes (osi, var, else_, 0);
+ else
+Index: gcc/ggc-none.c
+===================================================================
+--- a/src/gcc/ggc-none.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/ggc-none.c (.../branches/gcc-9-branch)
+@@ -72,3 +72,8 @@
+ ggc_grow (void)
+ {
+ }
++
++void
++ggc_trim (void)
++{
++}
+Index: gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config.gcc (.../branches/gcc-9-branch)
+@@ -4700,14 +4700,12 @@
+ echo "#undef LINK_OS_EXTRA_SPEC32"
+ echo "#define LINK_OS_EXTRA_SPEC32" \
+ "\"%(link_os_new_dtags)" \
+- "-rpath $prefix/lib -rpath $at/lib" \
+- "-L $prefix/lib -L $at/lib\""
++ "-rpath $prefix/lib -rpath $at/lib\""
+ echo
+ echo "#undef LINK_OS_EXTRA_SPEC64"
+ echo "#define LINK_OS_EXTRA_SPEC64" \
+ "\"%(link_os_new_dtags)" \
+- "-rpath $prefix/lib64 -rpath $at/lib64" \
+- "-L $prefix/lib64 -L $at/lib64\""
++ "-rpath $prefix/lib64 -rpath $at/lib64\""
+ echo
+ echo "#undef LINK_OS_NEW_DTAGS_SPEC"
+ echo "#define LINK_OS_NEW_DTAGS_SPEC" \
+@@ -4720,7 +4718,10 @@
+ echo "#define MD_EXEC_PREFIX \"$at/bin/\""
+ echo
+ echo "#undef MD_STARTFILE_PREFIX"
+- echo "#define MD_STARTFILE_PREFIX \"$at/lib/\"") \
++ echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
++ echo
++ echo "#undef MD_STARTFILE_PREFIX_1"
++ echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
+ > advance-toolchain.h
+ else
+ echo "Unknown advance-toolchain $with_advance_toolchain"
+@@ -4743,7 +4744,7 @@
+ for which in arch tune; do
+ eval "val=\$with_$which"
+ case ${val} in
+- "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 )
++ "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 )
+ # OK
+ ;;
+ *)
+Index: gcc/tree-switch-conversion.c
+===================================================================
+--- a/src/gcc/tree-switch-conversion.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-switch-conversion.c (.../branches/gcc-9-branch)
+@@ -605,7 +605,9 @@
+ vec<constructor_elt, va_gc> *constructor = m_constructors[num];
+ wide_int coeff_a, coeff_b;
+ bool linear_p = contains_linear_function_p (constructor, &coeff_a, &coeff_b);
+- if (linear_p)
++ tree type;
++ if (linear_p
++ && (type = range_check_type (TREE_TYPE ((*constructor)[0].value))))
+ {
+ if (dump_file && coeff_a.to_uhwi () > 0)
+ fprintf (dump_file, "Linear transformation with A = %" PRId64
+@@ -613,13 +615,12 @@
+ coeff_b.to_shwi ());
+
+ /* We must use type of constructor values. */
+- tree t = unsigned_type_for (TREE_TYPE ((*constructor)[0].value));
+ gimple_seq seq = NULL;
+- tree tmp = gimple_convert (&seq, t, m_index_expr);
+- tree tmp2 = gimple_build (&seq, MULT_EXPR, t,
+- wide_int_to_tree (t, coeff_a), tmp);
+- tree tmp3 = gimple_build (&seq, PLUS_EXPR, t, tmp2,
+- wide_int_to_tree (t, coeff_b));
++ tree tmp = gimple_convert (&seq, type, m_index_expr);
++ tree tmp2 = gimple_build (&seq, MULT_EXPR, type,
++ wide_int_to_tree (type, coeff_a), tmp);
++ tree tmp3 = gimple_build (&seq, PLUS_EXPR, type, tmp2,
++ wide_int_to_tree (type, coeff_b));
+ tree tmp4 = gimple_convert (&seq, TREE_TYPE (name), tmp3);
+ gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT);
+ load = gimple_build_assign (name, tmp4);
+@@ -1350,7 +1351,7 @@
+ entire));
+ }
+ else
+- for (int i = end - 1; i >= start; i--)
++ for (int i = end - 1; i >= start; i--)
+ output.safe_push (clusters[i]);
+
+ end = start;
+@@ -1483,7 +1484,7 @@
+ unsigned int i, j, k;
+ unsigned int count;
+
+- tree unsigned_index_type = unsigned_type_for (index_type);
++ tree unsigned_index_type = range_check_type (index_type);
+
+ gimple_stmt_iterator gsi;
+ gassign *shift_stmt;
+@@ -1793,7 +1794,8 @@
+ tree index_type = TREE_TYPE (index_expr);
+ basic_block bb = gimple_bb (m_switch);
+
+- if (gimple_switch_num_labels (m_switch) == 1)
++ if (gimple_switch_num_labels (m_switch) == 1
++ || range_check_type (index_type) == NULL_TREE)
+ return false;
--#: config/sh/sh.opt:319
--msgid "Emit function-calls using global offset table when generating PIC."
-+#: config/tilegx/tilegx.opt:41
-+msgid "Compile with 64 bit longs and pointers."
- msgstr ""
+ /* Find the default case target label. */
+Index: gcc/tree-cfg.c
+===================================================================
+--- a/src/gcc/tree-cfg.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-cfg.c (.../branches/gcc-9-branch)
+@@ -9151,7 +9151,7 @@
+ tree *lhs, tree *rhs)
+ {
+ tree type = TREE_TYPE (index);
+- tree utype = unsigned_type_for (type);
++ tree utype = range_check_type (type);
--#: config/sh/sh.opt:323
--msgid "Assume pt* instructions won't trap"
-+#: config/tilegx/tilegx.opt:53
-+msgid "Use given TILE-Gx code model."
- msgstr ""
+ low = fold_convert (utype, low);
+ high = fold_convert (utype, high);
+Index: gcc/passes.c
+===================================================================
+--- a/src/gcc/passes.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/passes.c (.../branches/gcc-9-branch)
+@@ -1646,14 +1646,6 @@
+ }
+ }
--#: config/sh/sh.opt:327
--msgid "Shorten address references during linking."
--msgstr ""
--
--#: config/sh/sh.opt:335
--msgid "Deprecated. Use -matomic= instead to select the atomic model."
--msgstr ""
--
--#: config/sh/sh.opt:339
--msgid "Specify the model for atomic operations."
--msgstr ""
--
--#: config/sh/sh.opt:343
--msgid "Use tas.b instruction for __atomic_test_and_set."
--msgstr ""
--
--#: config/sh/sh.opt:347
--msgid "Deprecated. Use -Os instead."
--msgstr ""
--
--#: config/sh/sh.opt:351
--msgid "Cost to assume for a multiply insn."
--msgstr ""
--
--#: config/sh/sh.opt:355
--msgid ""
--"Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate "
--"if the inline code would not work in user mode."
--msgstr ""
--
--#: config/sh/sh.opt:361
--msgid "Pretend a branch-around-a-move is a conditional move."
--msgstr ""
--
--#: config/sh/sh.opt:365
--msgid "Enable the use of the fsca instruction."
--msgstr ""
--
--#: config/sh/sh.opt:369
--msgid "Enable the use of the fsrra instruction."
--msgstr ""
--
--#: config/sh/sh.opt:373
--msgid "Use LRA instead of reload (transitional)."
--msgstr ""
+-/* Because inlining might remove no-longer reachable nodes, we need to
+- keep the array visible to garbage collector to avoid reading collected
+- out nodes. */
+-static int nnodes;
+-static GTY ((length ("nnodes"))) cgraph_node **order;
-
--#: config/fr30/fr30.opt:23
--msgid "Assume small address space."
--msgstr ""
--
- #: config/mep/mep.opt:23
- msgid "Enable absolute difference instructions."
- msgstr ""
-@@ -12827,839 +10722,914 @@
- msgid "Variables this size and smaller go in the tiny section. (default 4)."
- msgstr ""
-
--#: config/mips/mips.opt:32
--msgid "-mabi=ABI\tGenerate code that conforms to the given ABI."
-+#: config/lynx.opt:23
-+msgid "Support legacy multi-threading."
- msgstr ""
-
--#: config/mips/mips.opt:36
--msgid "Known MIPS ABIs (for use with the -mabi= option):"
-+#: config/lynx.opt:27
-+msgid "Use shared libraries."
- msgstr ""
-
--#: config/mips/mips.opt:55
--msgid "Generate code that can be used in SVR4-style dynamic objects."
-+#: config/lynx.opt:31
-+msgid "Support multi-threading."
- msgstr ""
-
--#: config/mips/mips.opt:59
--msgid "Use PMC-style 'mad' instructions."
-+#: config/stormy16/stormy16.opt:24
-+msgid "Provide libraries for the simulator."
- msgstr ""
-
--#: config/mips/mips.opt:63
--msgid "Use integer madd/msub instructions."
-+#: config/bfin/bfin.opt:48
-+msgid "Omit frame pointer for leaf functions."
- msgstr ""
-
--#: config/mips/mips.opt:67
--msgid "-march=ISA\tGenerate code for the given ISA."
-+#: config/bfin/bfin.opt:52
-+msgid "Program is entirely located in low 64k of memory."
- msgstr ""
-
--#: config/mips/mips.opt:71
-+#: config/bfin/bfin.opt:56
- msgid ""
--"-mbranch-cost=COST\tSet the cost of branches to roughly COST instructions."
-+"Work around a hardware anomaly by adding a number of NOPs before a CSYNC or "
-+"SSYNC instruction."
- msgstr ""
-
--#: config/mips/mips.opt:75
--msgid "Use Branch Likely instructions, overriding the architecture default."
-+#: config/bfin/bfin.opt:61
-+msgid "Avoid speculative loads to work around a hardware anomaly."
- msgstr ""
-
--#: config/mips/mips.opt:79
--msgid "Switch on/off MIPS16 ASE on alternating functions for compiler testing."
-+#: config/bfin/bfin.opt:65
-+msgid "Enabled ID based shared library."
- msgstr ""
-
--#: config/mips/mips.opt:83
--msgid "Trap on integer divide by zero."
--msgstr ""
+-#define uid_hash_t hash_set<int_hash <int, 0, -1> >
-
--#: config/mips/mips.opt:87
-+#: config/bfin/bfin.opt:69
- msgid ""
--"-mcode-readable=SETTING\tSpecify when instructions are allowed to access "
--"code."
-+"Generate code that won't be linked against any other ID shared libraries, "
-+"but may be used as a shared library."
- msgstr ""
-
--#: config/mips/mips.opt:91
--msgid "Valid arguments to -mcode-readable=:"
-+#: config/bfin/bfin.opt:86
-+msgid "Link with the fast floating-point library."
- msgstr ""
-
--#: config/mips/mips.opt:104
--msgid "Use branch-and-break sequences to check for integer divide by zero."
-+#: config/bfin/bfin.opt:98
-+msgid "Do stack checking using bounds in L1 scratch memory."
- msgstr ""
-
--#: config/mips/mips.opt:108
--msgid "Use trap instructions to check for integer divide by zero."
-+#: config/bfin/bfin.opt:102
-+msgid "Enable multicore support."
- msgstr ""
-
--#: config/mips/mips.opt:112
--msgid "Allow the use of MDMX instructions."
-+#: config/bfin/bfin.opt:106
-+msgid "Build for Core A."
- msgstr ""
-
--#: config/mips/mips.opt:116
--msgid ""
--"Allow hardware floating-point instructions to cover both 32-bit and 64-bit "
--"operations."
-+#: config/bfin/bfin.opt:110
-+msgid "Build for Core B."
- msgstr ""
-
--#: config/mips/mips.opt:120
--msgid "Use MIPS-DSP instructions."
-+#: config/bfin/bfin.opt:114
-+msgid "Build for SDRAM."
- msgstr ""
-
--#: config/mips/mips.opt:124
--msgid "Use MIPS-DSP REV 2 instructions."
-+#: config/bfin/bfin.opt:118
-+msgid "Assume ICPLBs are enabled at runtime."
- msgstr ""
-
--#: config/mips/mips.opt:146
--msgid "Use Enhanced Virtual Addressing instructions."
-+#: config/cris/cris.opt:45
-+msgid "Work around bug in multiplication instruction."
- msgstr ""
-
--#: config/mips/mips.opt:150
--msgid "Use NewABI-style %reloc() assembly operators."
-+#: config/cris/cris.opt:51
-+msgid "Compile for ETRAX 4 (CRIS v3)."
- msgstr ""
-
--#: config/mips/mips.opt:154
--msgid "Use -G for data that is not defined by the current object."
-+#: config/cris/cris.opt:56
-+msgid "Compile for ETRAX 100 (CRIS v8)."
- msgstr ""
-
--#: config/mips/mips.opt:158
--msgid "Work around certain 24K errata."
-+#: config/cris/cris.opt:64
-+msgid "Emit verbose debug information in assembly code."
- msgstr ""
-
--#: config/mips/mips.opt:162
--msgid "Work around certain R4000 errata."
-+#: config/cris/cris.opt:71
-+msgid "Do not use condition codes from normal instructions."
- msgstr ""
-
--#: config/mips/mips.opt:166
--msgid "Work around certain R4400 errata."
-+#: config/cris/cris.opt:80
-+msgid "Do not emit addressing modes with side-effect assignment."
- msgstr ""
-
--#: config/mips/mips.opt:170
--msgid "Work around certain RM7000 errata."
-+#: config/cris/cris.opt:89
-+msgid "Do not tune stack alignment."
- msgstr ""
-
--#: config/mips/mips.opt:174
--msgid "Work around certain R10000 errata."
-+#: config/cris/cris.opt:98
-+msgid "Do not tune writable data alignment."
- msgstr ""
-
--#: config/mips/mips.opt:178
--msgid "Work around errata for early SB-1 revision 2 cores."
-+#: config/cris/cris.opt:107
-+msgid "Do not tune code and read-only data alignment."
- msgstr ""
-
--#: config/mips/mips.opt:182
--msgid "Work around certain VR4120 errata."
-+#: config/cris/cris.opt:116
-+msgid "Align code and data to 32 bits."
- msgstr ""
-
--#: config/mips/mips.opt:186
--msgid "Work around VR4130 mflo/mfhi errata."
-+#: config/cris/cris.opt:133
-+msgid "Don't align items in code or data."
- msgstr ""
-
--#: config/mips/mips.opt:190
--msgid "Work around an early 4300 hardware bug."
-+#: config/cris/cris.opt:142
-+msgid "Do not emit function prologue or epilogue."
- msgstr ""
-
--#: config/mips/mips.opt:194
--msgid "FP exceptions are enabled."
-+#: config/cris/cris.opt:149
-+msgid "Use the most feature-enabling options allowed by other options."
- msgstr ""
-
--#: config/mips/mips.opt:198
--msgid "Use 32-bit floating-point registers."
-+#: config/cris/cris.opt:158
-+msgid "Override -mbest-lib-options."
- msgstr ""
-
--#: config/mips/mips.opt:202
--msgid "Conform to the o32 FPXX ABI."
-+#: config/cris/cris.opt:165
-+msgid "-march=ARCH\tGenerate code for the specified chip or CPU version."
- msgstr ""
-
--#: config/mips/mips.opt:206
--msgid "Use 64-bit floating-point registers."
-+#: config/cris/cris.opt:169
-+msgid "-mtune=ARCH\tTune alignment for the specified chip or CPU version."
- msgstr ""
-
--#: config/mips/mips.opt:210
-+#: config/cris/cris.opt:173
- msgid ""
--"-mflush-func=FUNC\tUse FUNC to flush the cache before calling stack "
--"trampolines."
-+"-mmax-stackframe=SIZE\tWarn when a stackframe is larger than the specified "
-+"size."
- msgstr ""
-
--#: config/mips/mips.opt:214
--msgid "-mabs=MODE\tSelect the IEEE 754 ABS/NEG instruction execution mode."
-+#: config/cris/cris.opt:180
-+msgid ""
-+"Emit traps as \"break 8\", default for CRIS v3 and up. If disabled, calls "
-+"to abort() are used."
- msgstr ""
-
--#: config/mips/mips.opt:218
--msgid "-mnan=ENCODING\tSelect the IEEE 754 NaN data encoding."
-+#: config/cris/cris.opt:184
-+msgid ""
-+"Emit checks causing \"break 8\" instructions to execute when applying atomic "
-+"builtins on misaligned memory."
- msgstr ""
-
--#: config/mips/mips.opt:222
-+#: config/cris/cris.opt:188
- msgid ""
--"Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):"
-+"Handle atomic builtins that may be applied to unaligned data by calling "
-+"library functions. Overrides -mtrap-unaligned-atomic."
- msgstr ""
-
--#: config/mips/mips.opt:232
--msgid "Use 32-bit general registers."
-+#: config/cris/linux.opt:27
-+msgid "Together with -fpic and -fPIC, do not use GOTPLT references."
- msgstr ""
-
--#: config/mips/mips.opt:236
--msgid "Use 64-bit general registers."
-+#: config/rs6000/rs6000-tables.opt:24
-+msgid "Known CPUs (for use with the -mcpu= and -mtune= options):"
- msgstr ""
-
--#: config/mips/mips.opt:240
--msgid "Use GP-relative addressing to access small data."
-+#: config/rs6000/rs6000.opt:109
-+msgid "Use PowerPC-64 instruction set."
- msgstr ""
-
--#: config/mips/mips.opt:244
--msgid ""
--"When generating -mabicalls code, allow executables to use PLTs and copy "
--"relocations."
-+#: config/rs6000/rs6000.opt:113
-+msgid "Use PowerPC General Purpose group optional instructions."
- msgstr ""
-
--#: config/mips/mips.opt:248
--msgid "Allow the use of hardware floating-point ABI and instructions."
-+#: config/rs6000/rs6000.opt:117
-+msgid "Use PowerPC Graphics group optional instructions."
- msgstr ""
-
--#: config/mips/mips.opt:252
--msgid "Generate code that is link-compatible with MIPS16 and microMIPS code."
-+#: config/rs6000/rs6000.opt:121
-+msgid "Use PowerPC V2.01 single field mfcr instruction."
- msgstr ""
-
--#: config/mips/mips.opt:256
--msgid "An alias for minterlink-compressed provided for backward-compatibility."
-+#: config/rs6000/rs6000.opt:125
-+msgid "Use PowerPC V2.02 popcntb instruction."
- msgstr ""
-
--#: config/mips/mips.opt:260
--msgid "-mipsN\tGenerate code for ISA level N."
-+#: config/rs6000/rs6000.opt:129
-+msgid "Use PowerPC V2.02 floating point rounding instructions."
- msgstr ""
-
--#: config/mips/mips.opt:264
--msgid "Generate MIPS16 code."
-+#: config/rs6000/rs6000.opt:133
-+msgid "Use PowerPC V2.05 compare bytes instruction."
- msgstr ""
-
--#: config/mips/mips.opt:268
--msgid "Use MIPS-3D instructions."
-+#: config/rs6000/rs6000.opt:137
-+msgid ""
-+"Use extended PowerPC V2.05 move floating point to/from GPR instructions."
- msgstr ""
-
--#: config/mips/mips.opt:272
--msgid "Use ll, sc and sync instructions."
-+#: config/rs6000/rs6000.opt:141
-+msgid "Use AltiVec instructions."
- msgstr ""
-
--#: config/mips/mips.opt:276
--msgid "Use -G for object-local data."
-+#: config/rs6000/rs6000.opt:145
-+msgid "Generate Altivec instructions using little-endian element order."
- msgstr ""
-
--#: config/mips/mips.opt:280
--msgid "Use indirect calls."
-+#: config/rs6000/rs6000.opt:149
-+msgid "Generate Altivec instructions using big-endian element order."
- msgstr ""
-
--#: config/mips/mips.opt:284
--msgid "Use a 32-bit long type."
-+#: config/rs6000/rs6000.opt:153
-+msgid "Use decimal floating point instructions."
- msgstr ""
-
--#: config/mips/mips.opt:288
--msgid "Use a 64-bit long type."
-+#: config/rs6000/rs6000.opt:157
-+msgid "Use 4xx half-word multiply instructions."
- msgstr ""
-
--#: config/mips/mips.opt:292
--msgid "Pass the address of the ra save location to _mcount in $12."
-+#: config/rs6000/rs6000.opt:161
-+msgid "Use 4xx string-search dlmzb instruction."
- msgstr ""
-
--#: config/mips/mips.opt:296
--msgid "Don't optimize block moves."
-+#: config/rs6000/rs6000.opt:165
-+msgid "Generate load/store multiple instructions."
- msgstr ""
-
--#: config/mips/mips.opt:300
--msgid "Use microMIPS instructions."
-+#: config/rs6000/rs6000.opt:169
-+msgid "Generate string instructions for block moves."
- msgstr ""
-
--#: config/mips/mips.opt:304
--msgid "Allow the use of MT instructions."
-+#: config/rs6000/rs6000.opt:181
-+msgid "Use PowerPC V2.06 popcntd instruction."
- msgstr ""
-
--#: config/mips/mips.opt:308
--msgid "Prevent the use of all floating-point operations."
-+#: config/rs6000/rs6000.opt:185
-+msgid ""
-+"Under -ffast-math, generate a FRIZ instruction for (double)(long long) "
-+"conversions."
- msgstr ""
-
--#: config/mips/mips.opt:312
--msgid "Use MCU instructions."
-+#: config/rs6000/rs6000.opt:193
-+msgid "Use vector/scalar (VSX) instructions."
- msgstr ""
-
--#: config/mips/mips.opt:316
--msgid "Do not use a cache-flushing function before calling stack trampolines."
-+#: config/rs6000/rs6000.opt:240
-+msgid "Do not generate load/store with update instructions."
- msgstr ""
+ /* Hook called when NODE is removed and therefore should be
+ excluded from order vector. DATA is a hash set with removed nodes. */
--#: config/mips/mips.opt:320
--msgid "Do not use MDMX instructions."
-+#: config/rs6000/rs6000.opt:244
-+msgid "Generate load/store with update instructions."
- msgstr ""
-
--#: config/mips/mips.opt:324
--msgid "Generate normal-mode code."
-+#: config/rs6000/rs6000.opt:252
-+msgid "Avoid generation of indexed load/store instructions when possible."
- msgstr ""
-
--#: config/mips/mips.opt:328
--msgid "Do not use MIPS-3D instructions."
-+#: config/rs6000/rs6000.opt:256
-+msgid "Mark __tls_get_addr calls with argument info."
- msgstr ""
-
--#: config/mips/mips.opt:332
--msgid "Use paired-single floating-point instructions."
-+#: config/rs6000/rs6000.opt:263
-+msgid "Schedule the start and end of the procedure."
- msgstr ""
-
--#: config/mips/mips.opt:336
--msgid ""
--"-mr10k-cache-barrier=SETTING\tSpecify when r10k cache barriers should be "
--"inserted."
-+#: config/rs6000/rs6000.opt:267
-+msgid "Return all structures in memory (AIX default)."
- msgstr ""
-
--#: config/mips/mips.opt:340
--msgid "Valid arguments to -mr10k-cache-barrier=:"
-+#: config/rs6000/rs6000.opt:271
-+msgid "Return small structures in registers (SVR4 default)."
- msgstr ""
-
--#: config/mips/mips.opt:353
--msgid "Try to allow the linker to turn PIC calls into direct calls."
-+#: config/rs6000/rs6000.opt:275
-+msgid "Conform more closely to IBM XLC semantics."
- msgstr ""
-
--#: config/mips/mips.opt:357
-+#: config/rs6000/rs6000.opt:279 config/rs6000/rs6000.opt:283
- msgid ""
--"When generating -mabicalls code, make the code suitable for use in shared "
--"libraries."
-+"Generate software reciprocal divide and square root for better throughput."
- msgstr ""
+@@ -1660,10 +1652,33 @@
+ static void
+ remove_cgraph_node_from_order (cgraph_node *node, void *data)
+ {
+- uid_hash_t *removed_nodes = (uid_hash_t *)data;
+- removed_nodes->add (node->get_uid ());
++ hash_set<cgraph_node *> *removed_nodes = (hash_set<cgraph_node *> *)data;
++ removed_nodes->add (node);
+ }
--#: config/mips/mips.opt:361
-+#: config/rs6000/rs6000.opt:287
-+msgid "Assume that the reciprocal estimate instructions provide more accuracy."
-+msgstr ""
-+
-+#: config/rs6000/rs6000.opt:291
-+msgid "Do not place floating point constants in TOC."
-+msgstr ""
-+
-+#: config/rs6000/rs6000.opt:295
-+msgid "Place floating point constants in TOC."
-+msgstr ""
-+
-+#: config/rs6000/rs6000.opt:299
-+msgid "Do not place symbol+offset constants in TOC."
-+msgstr ""
++/* Hook called when NODE is insert and therefore should be
++ excluded from removed_nodes. DATA is a hash set with removed nodes. */
+
-+#: config/rs6000/rs6000.opt:303
-+msgid "Place symbol+offset constants in TOC."
-+msgstr ""
-+
-+#: config/rs6000/rs6000.opt:314
-+msgid "Use only one TOC entry per procedure."
-+msgstr ""
++static void
++insert_cgraph_node_to_order (cgraph_node *node, void *data)
++{
++ hash_set<cgraph_node *> *removed_nodes = (hash_set<cgraph_node *> *)data;
++ removed_nodes->remove (node);
++}
+
-+#: config/rs6000/rs6000.opt:318
-+msgid "Put everything in the regular TOC."
-+msgstr ""
++/* Hook called when NODE is duplicated and therefore should be
++ excluded from removed_nodes. DATA is a hash set with removed nodes. */
+
-+#: config/rs6000/rs6000.opt:322
-+msgid "Generate VRSAVE instructions when generating AltiVec code."
-+msgstr ""
++static void
++duplicate_cgraph_node_to_order (cgraph_node *node, cgraph_node *node2,
++ void *data)
++{
++ hash_set<cgraph_node *> *removed_nodes = (hash_set<cgraph_node *> *)data;
++ gcc_checking_assert (!removed_nodes->contains (node));
++ removed_nodes->remove (node2);
++}
+
-+#: config/rs6000/rs6000.opt:326
-+msgid "Deprecated option. Use -mno-vrsave instead."
-+msgstr ""
+
-+#: config/rs6000/rs6000.opt:330
-+msgid "Deprecated option. Use -mvrsave instead."
-+msgstr ""
-+
-+#: config/rs6000/rs6000.opt:334
- msgid ""
--"Restrict the use of hardware floating-point instructions to 32-bit "
--"operations."
-+"Specify how many bytes should be moved inline before calling out to memcpy/"
-+"memmove."
- msgstr ""
-
--#: config/mips/mips.opt:365
--msgid "Use SmartMIPS instructions."
-+#: config/rs6000/rs6000.opt:338
-+msgid "Generate isel instructions."
- msgstr ""
-
--#: config/mips/mips.opt:369
--msgid "Prevent the use of all hardware floating-point instructions."
-+#: config/rs6000/rs6000.opt:342
-+msgid "Deprecated option. Use -mno-isel instead."
- msgstr ""
-
--#: config/mips/mips.opt:373
--msgid "Optimize lui/addiu address loads."
-+#: config/rs6000/rs6000.opt:346
-+msgid "Deprecated option. Use -misel instead."
- msgstr ""
-
--#: config/mips/mips.opt:377
--msgid "Assume all symbols have 32-bit values."
-+#: config/rs6000/rs6000.opt:350
-+msgid "Generate SPE SIMD instructions on E500."
- msgstr ""
-
--#: config/mips/mips.opt:381
--msgid "Use synci instruction to invalidate i-cache."
-+#: config/rs6000/rs6000.opt:354
-+msgid "Generate PPC750CL paired-single instructions."
- msgstr ""
-
--#: config/mips/mips.opt:389
--msgid "-mtune=PROCESSOR\tOptimize the output for PROCESSOR."
-+#: config/rs6000/rs6000.opt:358
-+msgid "Deprecated option. Use -mno-spe instead."
- msgstr ""
-
--#: config/mips/mips.opt:397
--msgid "Use Virtualization Application Specific instructions."
-+#: config/rs6000/rs6000.opt:362
-+msgid "Deprecated option. Use -mspe instead."
- msgstr ""
-
--#: config/mips/mips.opt:401
--msgid "Use eXtended Physical Address (XPA) instructions."
-+#: config/rs6000/rs6000.opt:366
-+msgid "-mdebug=\tEnable debug output."
- msgstr ""
-
--#: config/mips/mips.opt:405
--msgid "Perform VR4130-specific alignment optimizations."
-+#: config/rs6000/rs6000.opt:370
-+msgid "Use the AltiVec ABI extensions."
- msgstr ""
-
--#: config/mips/mips.opt:409
--msgid "Lift restrictions on GOT size."
-+#: config/rs6000/rs6000.opt:374
-+msgid "Do not use the AltiVec ABI extensions."
- msgstr ""
-
--#: config/mips/mips.opt:413
--msgid "Enable use of odd-numbered single-precision registers."
-+#: config/rs6000/rs6000.opt:378
-+msgid "Use the SPE ABI extensions."
- msgstr ""
-
--#: config/mips/mips.opt:417
--msgid "Optimize frame header."
-+#: config/rs6000/rs6000.opt:382
-+msgid "Do not use the SPE ABI extensions."
- msgstr ""
-
--#: config/mips/mips.opt:424
--msgid "Enable load/store bonding."
-+#: config/rs6000/rs6000.opt:386
-+msgid "Use the ELFv1 ABI."
- msgstr ""
-
--#: config/mips/mips.opt:428
--msgid "Specify the compact branch usage policy."
-+#: config/rs6000/rs6000.opt:390
-+msgid "Use the ELFv2 ABI."
- msgstr ""
-
--#: config/mips/mips.opt:432
--msgid "Policies available for use with -mcompact-branches=:"
-+#: config/rs6000/rs6000.opt:397
-+msgid "using darwin64 ABI"
- msgstr ""
-
--#: config/mips/mips-tables.opt:24
--msgid "Known MIPS CPUs (for use with the -march= and -mtune= options):"
-+#: config/rs6000/rs6000.opt:400
-+msgid "using old darwin ABI"
- msgstr ""
-
--#: config/mips/mips-tables.opt:28
--msgid "Known MIPS ISA levels (for use with the -mips option):"
-+#: config/rs6000/rs6000.opt:403
-+msgid "using IEEE extended precision long double"
- msgstr ""
-
--#: config/tilegx/tilegx.opt:30
--msgid "Known TILE-Gx CPUs (for use with the -mcpu= option):"
-+#: config/rs6000/rs6000.opt:406
-+msgid "using IBM extended precision long double"
- msgstr ""
-
--#: config/tilegx/tilegx.opt:37
--msgid "Compile with 32 bit longs and pointers."
-+#: config/rs6000/rs6000.opt:410
-+msgid "-mcpu=\tUse features of and schedule code for given CPU."
- msgstr ""
-
--#: config/tilegx/tilegx.opt:41
--msgid "Compile with 64 bit longs and pointers."
-+#: config/rs6000/rs6000.opt:414
-+msgid "-mtune=\tSchedule code for given CPU."
- msgstr ""
-
--#: config/tilegx/tilegx.opt:53
--msgid "Use given TILE-Gx code model."
-+#: config/rs6000/rs6000.opt:418
-+msgid "-mtraceback=\tSelect full, part, or no traceback table."
- msgstr ""
-
--#: config/arc/arc.opt:26
--msgid "Compile code for big endian mode."
-+#: config/rs6000/rs6000.opt:434
-+msgid "Avoid all range limits on call instructions."
- msgstr ""
-
--#: config/arc/arc.opt:30
--msgid "Compile code for little endian mode. This is the default."
-+#: config/rs6000/rs6000.opt:438
-+msgid "Generate Cell microcode."
- msgstr ""
-
--#: config/arc/arc.opt:34
--msgid ""
--"Disable ARCompact specific pass to generate conditional execution "
--"instructions."
-+#: config/rs6000/rs6000.opt:442
-+msgid "Warn when a Cell microcoded instruction is emitted."
- msgstr ""
-
--#: config/arc/arc.opt:38
--msgid "Generate ARCompact 32-bit code for ARC600 processor."
-+#: config/rs6000/rs6000.opt:446
-+msgid "Warn about deprecated 'vector long ...' AltiVec type usage."
- msgstr ""
-
--#: config/arc/arc.opt:42
--msgid "Same as -mA6."
-+#: config/rs6000/rs6000.opt:450
-+msgid "-mfloat-gprs=\tSelect GPR floating point method."
- msgstr ""
-
--#: config/arc/arc.opt:46
--msgid "Generate ARCompact 32-bit code for ARC601 processor."
-+#: config/rs6000/rs6000.opt:454
-+msgid "Valid arguments to -mfloat-gprs=:"
- msgstr ""
-
--#: config/arc/arc.opt:50
--msgid "Generate ARCompact 32-bit code for ARC700 processor."
-+#: config/rs6000/rs6000.opt:470
-+msgid "-mlong-double-<n>\tSpecify size of long double (64 or 128 bits)."
- msgstr ""
-
--#: config/arc/arc.opt:54
--msgid "Same as -mA7."
-+#: config/rs6000/rs6000.opt:474
-+msgid "Enable Local Register Allocation."
- msgstr ""
-
--#: config/arc/arc.opt:58
--msgid ""
--"-mmpy-option={0,1,2,3,4,5,6,7,8,9} Compile ARCv2 code with a multiplier "
--"design option. Option 2 is default on."
-+#: config/rs6000/rs6000.opt:478
-+msgid "Determine which dependences between insns are considered costly."
- msgstr ""
-
--#: config/arc/arc.opt:62
--msgid "Enable DIV-REM instructions for ARCv2."
-+#: config/rs6000/rs6000.opt:482
-+msgid "Specify which post scheduling nop insertion scheme to apply."
- msgstr ""
-
--#: config/arc/arc.opt:66
--msgid "Enable code density instructions for ARCv2."
-+#: config/rs6000/rs6000.opt:486
-+msgid "Specify alignment of structure fields default/natural."
- msgstr ""
-
--#: config/arc/arc.opt:70
--msgid "Tweak register allocation to help 16-bit instruction generation."
-+#: config/rs6000/rs6000.opt:490
-+msgid "Valid arguments to -malign-:"
- msgstr ""
-
--#: config/arc/arc.opt:80
--msgid "Use ordinarily cached memory accesses for volatile references."
-+#: config/rs6000/rs6000.opt:500
-+msgid "Specify scheduling priority for dispatch slot restricted insns."
- msgstr ""
-
--#: config/arc/arc.opt:84
--msgid "Enable cache bypass for volatile references."
-+#: config/rs6000/rs6000.opt:504
-+msgid "Single-precision floating point unit."
- msgstr ""
-
--#: config/arc/arc.opt:88
--msgid "Generate instructions supported by barrel shifter."
-+#: config/rs6000/rs6000.opt:508
-+msgid "Double-precision floating point unit."
- msgstr ""
-
--#: config/arc/arc.opt:92
--msgid "Generate norm instruction."
-+#: config/rs6000/rs6000.opt:512
-+msgid "Floating point unit does not support divide & sqrt."
- msgstr ""
-
--#: config/arc/arc.opt:96
--msgid "Generate swap instruction."
-+#: config/rs6000/rs6000.opt:516
-+msgid "-mfpu=\tSpecify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)."
- msgstr ""
-
--#: config/arc/arc.opt:100
--msgid "Generate mul64 and mulu64 instructions."
-+#: config/rs6000/rs6000.opt:538
-+msgid "Specify Xilinx FPU."
- msgstr ""
-
--#: config/arc/arc.opt:104
--msgid "Do not generate mpy instructions for ARC700."
-+#: config/rs6000/rs6000.opt:542
-+msgid ""
-+"Use/do not use r11 to hold the static link in calls to functions via "
-+"pointers."
- msgstr ""
+ /* If we are in IPA mode (i.e., current_function_decl is NULL), call
+ function CALLBACK for every function in the call graph. Otherwise,
+ call CALLBACK on the current function.
+@@ -1677,26 +1692,30 @@
+ callback (cfun, data);
+ else
+ {
+- cgraph_node_hook_list *hook;
+- uid_hash_t removed_nodes;
+- gcc_assert (!order);
+- order = ggc_vec_alloc<cgraph_node *> (symtab->cgraph_count);
++ hash_set<cgraph_node *> removed_nodes;
++ unsigned nnodes = symtab->cgraph_count;
++ cgraph_node **order = XNEWVEC (cgraph_node *, nnodes);
+
+ nnodes = ipa_reverse_postorder (order);
+ for (i = nnodes - 1; i >= 0; i--)
+ order[i]->process = 1;
+- hook = symtab->add_cgraph_removal_hook (remove_cgraph_node_from_order,
+- &removed_nodes);
++ cgraph_node_hook_list *removal_hook
++ = symtab->add_cgraph_removal_hook (remove_cgraph_node_from_order,
++ &removed_nodes);
++ cgraph_node_hook_list *insertion_hook
++ = symtab->add_cgraph_insertion_hook (insert_cgraph_node_to_order,
++ &removed_nodes);
++ cgraph_2node_hook_list *duplication_hook
++ = symtab->add_cgraph_duplication_hook (duplicate_cgraph_node_to_order,
++ &removed_nodes);
+ for (i = nnodes - 1; i >= 0; i--)
+ {
+ cgraph_node *node = order[i];
--#: config/arc/arc.opt:108
-+#: config/rs6000/rs6000.opt:546
- msgid ""
--"Generate Extended arithmetic instructions. Currently only divaw, adds, subs "
--"and sat16 are supported."
-+"Control whether we save the TOC in the prologue for indirect calls or "
-+"generate the save inline."
- msgstr ""
+ /* Function could be inlined and removed as unreachable. */
+- if (node == NULL || removed_nodes.contains (node->get_uid ()))
++ if (node == NULL || removed_nodes.contains (node))
+ continue;
--#: config/arc/arc.opt:112
-+#: config/rs6000/rs6000.opt:550
-+msgid "Allow 128-bit integers in VSX registers."
-+msgstr ""
+- /* Allow possibly removed nodes to be garbage collected. */
+- order[i] = NULL;
+ node->process = 0;
+ if (node->has_gimple_body_p ())
+ {
+@@ -1706,11 +1725,12 @@
+ pop_cfun ();
+ }
+ }
+- symtab->remove_cgraph_removal_hook (hook);
++ symtab->remove_cgraph_removal_hook (removal_hook);
++ symtab->remove_cgraph_insertion_hook (insertion_hook);
++ symtab->remove_cgraph_duplication_hook (duplication_hook);
+
-+#: config/rs6000/rs6000.opt:554
- msgid ""
--"Dummy flag. This is the default unless FPX switches are provided explicitly."
-+"Fuse certain integer operations together for better performance on power8."
- msgstr ""
-
--#: config/arc/arc.opt:116
--msgid "Generate call insns as register indirect calls."
-+#: config/rs6000/rs6000.opt:558
-+msgid "Allow sign extension in fusion operations."
- msgstr ""
-
--#: config/arc/arc.opt:120
--msgid "Do no generate BRcc instructions in arc_reorg."
-+#: config/rs6000/rs6000.opt:562
-+msgid "Use/do not use vector and scalar instructions added in ISA 2.07."
- msgstr ""
++ free (order);
+ }
+- ggc_free (order);
+- order = NULL;
+- nnodes = 0;
+ }
--#: config/arc/arc.opt:124
--msgid ""
--"Generate sdata references. This is the default, unless you compile for PIC."
-+#: config/rs6000/rs6000.opt:566
-+msgid "Use ISA 2.07 Category:Vector.AES and Category:Vector.SHA2 instructions."
- msgstr ""
+ /* Helper function to perform function body dump. */
+@@ -2699,20 +2719,12 @@
+ {
+ struct cgraph_node *node = order[i];
--#: config/arc/arc.opt:128
--msgid "Do not generate millicode thunks (needed only with -Os)."
-+#: config/rs6000/rs6000.opt:570
-+msgid "Use ISA 2.07 direct move between GPR & VSX register instructions."
- msgstr ""
+- if (gimple_has_body_p (node->decl))
++ if (node->definition && node->need_lto_streaming)
+ {
+- /* When streaming out references to statements as part of some IPA
+- pass summary, the statements need to have uids assigned and the
+- following does that for all the IPA passes here. Naturally, this
+- ordering then matches the one IPA-passes get in their stmt_fixup
+- hooks. */
+-
+- push_cfun (DECL_STRUCT_FUNCTION (node->decl));
+- renumber_gimple_stmt_uids ();
+- pop_cfun ();
++ if (gimple_has_body_p (node->decl))
++ lto_prepare_function_for_streaming (node);
++ lto_set_symtab_encoder_in_partition (encoder, node);
+ }
+- if (node->definition && node->need_lto_streaming)
+- lto_set_symtab_encoder_in_partition (encoder, node);
+ }
--#: config/arc/arc.opt:132 config/arc/arc.opt:136
--msgid "FPX: Generate Single Precision FPX (compact) instructions."
-+#: config/rs6000/rs6000.opt:574
-+msgid "Use ISA 2.07 transactional memory (HTM) instructions."
- msgstr ""
+ FOR_EACH_DEFINED_FUNCTION (node)
+@@ -2780,28 +2792,13 @@
+ ipa_write_optimization_summaries (lto_symtab_encoder_t encoder)
+ {
+ struct lto_out_decl_state *state = lto_new_out_decl_state ();
+- lto_symtab_encoder_iterator lsei;
+ state->symtab_node_encoder = encoder;
+
+ lto_output_init_mode_table ();
+ lto_push_out_decl_state (state);
+- for (lsei = lsei_start_function_in_partition (encoder);
+- !lsei_end_p (lsei); lsei_next_function_in_partition (&lsei))
+- {
+- struct cgraph_node *node = lsei_cgraph_node (lsei);
+- /* When streaming out references to statements as part of some IPA
+- pass summary, the statements need to have uids assigned.
+
+- For functions newly born at WPA stage we need to initialize
+- the uids here. */
+- if (node->definition
+- && gimple_has_body_p (node->decl))
+- {
+- push_cfun (DECL_STRUCT_FUNCTION (node->decl));
+- renumber_gimple_stmt_uids ();
+- pop_cfun ();
+- }
+- }
++ /* Be sure that we did not forget to renumber stmt uids. */
++ gcc_checking_assert (flag_wpa);
--#: config/arc/arc.opt:140
--msgid "FPX: Generate Single Precision FPX (fast) instructions."
-+#: config/rs6000/rs6000.opt:578
-+msgid "Generate the quad word memory instructions (lq/stq)."
- msgstr ""
+ gcc_assert (flag_wpa);
+ pass_manager *passes = g->get_passes ();
+@@ -3060,5 +3057,3 @@
+ }
+ return e != NULL;
+ }
+-
+-#include "gt-passes.h"
+Index: gcc/config/alpha/alpha.c
+===================================================================
+--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-9-branch)
+@@ -8839,6 +8839,9 @@
+ case CODE_LABEL:
+ goto close_shadow;
--#: config/arc/arc.opt:144
-+#: config/rs6000/rs6000.opt:582
-+msgid "Generate the quad word memory atomic instructions (lqarx/stqcx)."
-+msgstr ""
++ case DEBUG_INSN:
++ break;
+
-+#: config/rs6000/rs6000.opt:586
- msgid ""
--"FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions."
-+"Generate aggregate parameter passing code with at most 64-bit alignment."
- msgstr ""
-
--#: config/arc/arc.opt:148 config/arc/arc.opt:152
--msgid "FPX: Generate Double Precision FPX (compact) instructions."
-+#: config/rs6000/rs6000.opt:590
-+msgid "Allow double variables in upper registers with -mcpu=power7 or -mvsx."
- msgstr ""
-
--#: config/arc/arc.opt:156
--msgid "FPX: Generate Double Precision FPX (fast) instructions."
-+#: config/rs6000/rs6000.opt:594
-+msgid ""
-+"Allow float variables in upper registers with -mcpu=power8 or -mpower8-"
-+"vector."
- msgstr ""
-
--#: config/arc/arc.opt:160
--msgid "Disable LR and SR instructions from using FPX extension aux registers."
-+#: config/rs6000/rs6000.opt:598
-+msgid "Allow float/double variables in upper registers if cpu allows it."
- msgstr ""
-
--#: config/arc/arc.opt:164
--msgid ""
--"Enable generation of ARC SIMD instructions via target-specific builtins."
-+#: config/rs6000/rs6000.opt:602
-+msgid "Analyze and remove doubleword swaps from VSX computations."
- msgstr ""
-
--#: config/arc/arc.opt:168
--msgid "-mcpu=CPU\tCompile code for ARC variant CPU."
-+#: config/rs6000/rs6000.opt:606
-+msgid "Fuse certain operations together for better performance on power9."
- msgstr ""
+ default:
+ gcc_unreachable ();
+ }
+Index: gcc/config/s390/s390.md
+===================================================================
+--- a/src/gcc/config/s390/s390.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390.md (.../branches/gcc-9-branch)
+@@ -513,11 +513,11 @@
+ ;; Processor type. This attribute must exactly match the processor_type
+ ;; enumeration in s390.h.
+
+-(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,arch13"
++(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15"
+ (const (symbol_ref "s390_tune_attr")))
+
+ (define_attr "cpu_facility"
+- "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,arch13,vxe2"
++ "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,z15,vxe2"
+ (const_string "standard"))
+
+ (define_attr "enabled" ""
+@@ -575,8 +575,8 @@
+ (match_test "TARGET_VXE"))
+ (const_int 1)
+
+- (and (eq_attr "cpu_facility" "arch13")
+- (match_test "TARGET_ARCH13"))
++ (and (eq_attr "cpu_facility" "z15")
++ (match_test "TARGET_Z15"))
+ (const_int 1)
+
+ (and (eq_attr "cpu_facility" "vxe2")
+@@ -613,7 +613,7 @@
+ ;; Pipeline description for z14
+ (include "3906.md")
+
+-;; Pipeline description for arch13
++;; Pipeline description for z15
+ (include "8561.md")
+
+ ;; Predicates
+@@ -642,7 +642,7 @@
+ (define_mode_iterator DD_DF [DF DD])
+ (define_mode_iterator TD_TF [TF TD])
+
+-; 32 bit int<->fp conversion instructions are available since VXE2 (arch13).
++; 32 bit int<->fp conversion instructions are available since VXE2 (z15).
+ (define_mode_iterator VX_CONV_BFP [DF (SF "TARGET_VXE2")])
+ (define_mode_iterator VX_CONV_INT [DI (SI "TARGET_VXE2")])
+
+@@ -6749,7 +6749,7 @@
+ stoc<g>%C1\t%3,%0
+ stoc<g>%D1\t%4,%0"
+ [(set_attr "op_type" "RRF,RRF,RRF,RSY,RSY,RIE,RIE,RSY,RSY")
+- (set_attr "cpu_facility" "*,*,arch13,*,*,z13,z13,*,*")])
++ (set_attr "cpu_facility" "*,*,z15,*,*,z13,z13,*,*")])
+
+ ;;
+ ;;- Multiply instructions.
+@@ -7568,7 +7568,7 @@
+ (and:GPR (not:GPR (match_operand:GPR 1 "nonimmediate_operand" ""))
+ (match_operand:GPR 2 "general_operand" "")))
+ (clobber (reg:CC CC_REGNUM))]
+- "!TARGET_ARCH13
++ "!TARGET_Z15
+ && ! reload_completed
+ && (GET_CODE (operands[0]) != MEM
+ /* Ensure that s390_logical_operator_ok_p will succeed even
+@@ -7925,7 +7925,7 @@
+ (set (match_operand:GPR 0 "register_operand" "=d")
+ (ANDOR:GPR (not:GPR (match_dup 1))
+ (match_dup 2)))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "<ANDOR:noxa>c<GPR:g>rk\t%0,%2,%1"
+ [(set_attr "op_type" "RRF")])
+
+@@ -7937,7 +7937,7 @@
+ (match_operand:GPR 2 "register_operand" "d"))
+ (const_int 0)))
+ (clobber (match_scratch:GPR 0 "=d"))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "<ANDOR:noxa>c<GPR:g>rk\t%0,%2,%1"
+ [(set_attr "op_type" "RRF")])
+
+@@ -7947,7 +7947,7 @@
+ (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
+ (match_operand:GPR 2 "register_operand" "d")))
+ (clobber (reg:CC CC_REGNUM))]
+- "TARGET_ARCH13"
++ "TARGET_Z15"
+ "<ANDOR:noxa>c<GPR:g>rk\t%0,%2,%1"
+ [(set_attr "op_type" "RRF")])
+
+@@ -7965,7 +7965,7 @@
+ (set (match_operand:GPR 0 "register_operand" "=d")
+ (ANDOR:GPR (not:GPR (match_dup 1))
+ (not:GPR (match_dup 2))))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
+ [(set_attr "op_type" "RRF")])
+
+@@ -7977,7 +7977,7 @@
+ (not:GPR (match_operand:GPR 2 "register_operand" "d")))
+ (const_int 0)))
+ (clobber (match_scratch:GPR 0 "=d"))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
+ [(set_attr "op_type" "RRF")])
+
+@@ -7987,7 +7987,7 @@
+ (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))
+ (not:GPR (match_operand:GPR 2 "register_operand" "d"))))
+ (clobber (reg:CC CC_REGNUM))]
+- "TARGET_ARCH13"
++ "TARGET_Z15"
+ "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
+ [(set_attr "op_type" "RRF")])
+
+@@ -8371,7 +8371,7 @@
+ (set (match_operand:GPR 0 "register_operand" "=d")
+ (xor:GPR (not:GPR (match_dup 1))
+ (match_dup 2)))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "nx<GPR:g>rk\t%0,%1,%2"
+ [(set_attr "op_type" "RRF")])
+
+@@ -8383,7 +8383,7 @@
+ (match_operand:GPR 2 "register_operand" "d")))
+ (const_int 0)))
+ (clobber (match_scratch:GPR 0 "=d"))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "nx<GPR:g>rk\t%0,%1,%2"
+ [(set_attr "op_type" "RRF")])
+
+@@ -8393,7 +8393,7 @@
+ (not:GPR (xor:GPR (match_operand:GPR 1 "register_operand" "d")
+ (match_operand:GPR 2 "register_operand" "d"))))
+ (clobber (reg:CC CC_REGNUM))]
+- "TARGET_ARCH13"
++ "TARGET_Z15"
+ "nx<GPR:g>rk\t%0,%1,%2"
+ [(set_attr "op_type" "RRF")])
+
+@@ -11351,34 +11351,34 @@
+ ; Population count instruction
+ ;
+
+-(define_insn "*popcountdi_arch13_cc"
++(define_insn "*popcountdi_z15_cc"
+ [(set (reg CC_REGNUM)
+ (compare (popcount:DI (match_operand:DI 1 "register_operand" "d"))
+ (const_int 0)))
+ (set (match_operand:DI 0 "register_operand" "=d")
+ (match_dup 1))]
+- "TARGET_ARCH13 && s390_match_ccmode (insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode (insn, CCTmode)"
+ "popcnt\t%0,%1,8"
+ [(set_attr "op_type" "RRF")])
+
+-(define_insn "*popcountdi_arch13_cconly"
++(define_insn "*popcountdi_z15_cconly"
+ [(set (reg CC_REGNUM)
+ (compare (popcount:DI (match_operand:DI 1 "register_operand" "d"))
+ (const_int 0)))
+ (clobber (match_scratch:DI 0 "=d"))]
+- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)"
++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)"
+ "popcnt\t%0,%1,8"
+ [(set_attr "op_type" "RRF")])
+
+-(define_insn "*popcountdi_arch13"
++(define_insn "*popcountdi_z15"
+ [(set (match_operand:DI 0 "register_operand" "=d")
+ (popcount:DI (match_operand:DI 1 "register_operand" "d")))
+ (clobber (reg:CC CC_REGNUM))]
+- "TARGET_ARCH13"
++ "TARGET_Z15"
+ "popcnt\t%0,%1,8"
+ [(set_attr "op_type" "RRF")])
+
+-; The pre-arch13 popcount instruction counts the bits of op1 in 8 byte
++; The pre-z15 popcount instruction counts the bits of op1 in 8 byte
+ ; portions and stores the result in the corresponding bytes in op0.
+ (define_insn "*popcount<mode>_z196"
+ [(set (match_operand:INT 0 "register_operand" "=d")
+@@ -11422,7 +11422,7 @@
+ (clobber (reg:CC CC_REGNUM))])]
+ "TARGET_Z196"
+ {
+- if (!TARGET_ARCH13)
++ if (!TARGET_Z15)
+ {
+ emit_insn (gen_popcountdi2_z196 (operands[0], operands[1]));
+ DONE;
+@@ -11453,7 +11453,7 @@
+
+ ; popcount always counts on the full 64 bit. With the z196 version
+ ; counting bits per byte we just ignore the upper 4 bytes. With the
+-; arch13 version we have to zero out the upper 32 bits first.
++; z15 version we have to zero out the upper 32 bits first.
+ (define_expand "popcountsi2"
+ [(set (match_dup 2)
+ (zero_extend:DI (match_operand:SI 1 "register_operand")))
+@@ -11463,7 +11463,7 @@
+ (subreg:SI (match_dup 3) 4))]
+ "TARGET_Z196"
+ {
+- if (!TARGET_ARCH13)
++ if (!TARGET_Z15)
+ {
+ emit_insn (gen_popcountsi2_z196 (operands[0], operands[1]));
+ DONE;
+@@ -11501,7 +11501,7 @@
+ (subreg:HI (match_dup 3) 6))]
+ "TARGET_Z196"
+ {
+- if (!TARGET_ARCH13)
++ if (!TARGET_Z15)
+ {
+ emit_insn (gen_popcounthi2_z196 (operands[0], operands[1]));
+ DONE;
+@@ -11516,7 +11516,7 @@
+ ; For popcount on a single byte the old z196 style popcount
+ ; instruction is ideal. Since it anyway does a byte-wise popcount we
+ ; just use it instead of zero extending the QImode input to DImode and
+-; using the arch13 popcount variant.
++; using the z15 popcount variant.
+ (define_expand "popcountqi2"
+ [; popcnt op0, op1
+ (parallel [(set (match_operand:QI 0 "register_operand" "")
+Index: gcc/config/s390/s390.opt
+===================================================================
+--- a/src/gcc/config/s390/s390.opt (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390.opt (.../branches/gcc-9-branch)
+@@ -110,9 +110,12 @@
+ Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14)
+
+ EnumValue
+-Enum(processor_type) String(arch13) Value(PROCESSOR_8561_ARCH13)
++Enum(processor_type) String(z15) Value(PROCESSOR_8561_Z15)
+
+ EnumValue
++Enum(processor_type) String(arch13) Value(PROCESSOR_8561_Z15)
++
++EnumValue
+ Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly
+
+ mbackchain
+Index: gcc/config/s390/s390-c.c
+===================================================================
+--- a/src/gcc/config/s390/s390-c.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390-c.c (.../branches/gcc-9-branch)
+@@ -905,6 +905,12 @@
+ return error_mark_node;
+ }
--#: config/arc/arc.opt:205
-+#: config/rs6000/rs6000.opt:610
-+msgid "Use/do not use certain scalar instructions added in ISA 3.0."
-+msgstr ""
-+
-+#: config/rs6000/rs6000.opt:614
-+msgid "Use/do not use vector instructions added in ISA 3.0."
-+msgstr ""
++ if (!TARGET_VXE2 && (ob_flags & B_VXE2))
++ {
++ error_at (loc, "%qF requires z15 or higher", ob_fndecl);
++ return error_mark_node;
++ }
+
-+#: config/rs6000/rs6000.opt:618
- msgid ""
--"size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -"
--"Os."
-+"Use/do not use scalar register+offset memory instructions added in ISA 3.0."
- msgstr ""
-
--#: config/arc/arc.opt:213
-+#: config/rs6000/rs6000.opt:622
- msgid ""
--"Cost to assume for a multiply instruction, with 4 being equal to a normal "
--"insn."
-+"Use/do not use vector register+offset memory instructions added in ISA 3.0."
- msgstr ""
-
--#: config/arc/arc.opt:217
--msgid "Tune for ARC600 cpu."
-+#: config/rs6000/rs6000.opt:626
-+msgid "Use/do not use register+offset memory instructions added in ISA 3.0."
- msgstr ""
-
--#: config/arc/arc.opt:221
--msgid "Tune for ARC601 cpu."
-+#: config/rs6000/rs6000.opt:630
-+msgid "Use/do not use the new min/max instructions defined in ISA 3.0."
- msgstr ""
-
--#: config/arc/arc.opt:225
--msgid "Tune for ARC700 R4.2 Cpu with standard multiplier block."
-+#: config/rs6000/rs6000.opt:634
-+msgid ""
-+"Fuse medium/large code model toc references with the memory instruction."
- msgstr ""
-
--#: config/arc/arc.opt:229 config/arc/arc.opt:233 config/arc/arc.opt:237
--msgid "Tune for ARC700 R4.2 Cpu with XMAC block."
-+#: config/rs6000/rs6000.opt:638
-+msgid "Generate the integer modulo instructions."
- msgstr ""
+ ob_fcode -= S390_BUILTIN_MAX;
--#: config/arc/arc.opt:241
--msgid "Enable the use of indexed loads."
-+#: config/rs6000/rs6000.opt:642
-+msgid "Enable/disable IEEE 128-bit floating point via the __float128 keyword."
- msgstr ""
-
--#: config/arc/arc.opt:245
--msgid "Enable the use of pre/post modify with register displacement."
-+#: config/rs6000/rs6000.opt:646
-+msgid "Enable/disable using IEEE 128-bit floating point instructions."
- msgstr ""
-
--#: config/arc/arc.opt:249
--msgid "Generate 32x16 multiply and mac instructions."
-+#: config/rs6000/rs6000.opt:650
-+msgid "Enable/disable default conversions between __float128 & long double."
- msgstr ""
-
--#: config/arc/arc.opt:255
--msgid "Set probability threshold for unaligning branches."
-+#: config/rs6000/darwin.opt:38 config/rs6000/sysv4.opt:141
-+msgid "Generate 64-bit code."
- msgstr ""
-
--#: config/arc/arc.opt:259
--msgid "Don't use less than 25 bit addressing range for calls."
-+#: config/rs6000/darwin.opt:42 config/rs6000/sysv4.opt:145
-+msgid "Generate 32-bit code."
- msgstr ""
-
--#: config/arc/arc.opt:263
--msgid ""
--"Explain what alignment considerations lead to the decision to make an insn "
--"short or long."
-+#: config/rs6000/sysv4.opt:24
-+msgid "Select ABI calling convention."
- msgstr ""
-
--#: config/arc/arc.opt:267
--msgid "Do alignment optimizations for call instructions."
-+#: config/rs6000/sysv4.opt:48
-+msgid "Align to the base type of the bit-field."
- msgstr ""
-
--#: config/arc/arc.opt:271
-+#: config/rs6000/sysv4.opt:52
- msgid ""
--"Enable Rcq constraint handling - most short code generation depends on this."
-+"Align to the base type of the bit-field. Don't assume that unaligned "
-+"accesses are handled by the system."
- msgstr ""
-
--#: config/arc/arc.opt:275
--msgid "Enable Rcw constraint handling - ccfsm condexec mostly depends on this."
-+#: config/rs6000/sysv4.opt:57 config/rs6000/sysv4.opt:61
-+msgid "Produce code relocatable at runtime."
- msgstr ""
-
--#: config/arc/arc.opt:279
--msgid "Enable pre-reload use of cbranchsi pattern."
-+#: config/rs6000/sysv4.opt:65 config/rs6000/sysv4.opt:69
-+msgid "Produce little endian code."
- msgstr ""
-
--#: config/arc/arc.opt:283
--msgid "Enable bbit peephole2."
-+#: config/rs6000/sysv4.opt:73 config/rs6000/sysv4.opt:77
-+msgid "Produce big endian code."
- msgstr ""
-
--#: config/arc/arc.opt:287
--msgid ""
--"Use pc-relative switch case tables - this enables case table shortening."
-+#: config/rs6000/sysv4.opt:82 config/rs6000/sysv4.opt:86
-+#: config/rs6000/sysv4.opt:95 config/rs6000/sysv4.opt:137
-+#: config/rs6000/sysv4.opt:149
-+msgid "no description yet."
- msgstr ""
-
--#: config/arc/arc.opt:291
--msgid "Enable compact casesi pattern."
-+#: config/rs6000/sysv4.opt:90
-+msgid "Assume all variable arg functions are prototyped."
- msgstr ""
-
--#: config/arc/arc.opt:295
--msgid "Enable 'q' instruction alternatives."
-+#: config/rs6000/sysv4.opt:99
-+msgid "Use EABI."
- msgstr ""
-
--#: config/arc/arc.opt:299
--msgid "Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc."
-+#: config/rs6000/sysv4.opt:103
-+msgid "Allow bit-fields to cross word boundaries."
- msgstr ""
-
--#: config/arc/arc.opt:306
--msgid "Enable variable polynomial CRC extension."
-+#: config/rs6000/sysv4.opt:107
-+msgid "Use alternate register names."
- msgstr ""
-
--#: config/arc/arc.opt:310
--msgid "Enable DSP 3.1 Pack A extensions."
-+#: config/rs6000/sysv4.opt:113
-+msgid "Use default method for sdata handling."
- msgstr ""
-
--#: config/arc/arc.opt:314
--msgid "Enable dual viterbi butterfly extension."
-+#: config/rs6000/sysv4.opt:117
-+msgid "Link with libsim.a, libc.a and sim-crt0.o."
- msgstr ""
-
--#: config/arc/arc.opt:324
--msgid "Enable Dual and Single Operand Instructions for Telephony."
-+#: config/rs6000/sysv4.opt:121
-+msgid "Link with libads.a, libc.a and crt0.o."
- msgstr ""
-
--#: config/arc/arc.opt:328
--msgid "Enable XY Memory extension (DSP version 3)."
-+#: config/rs6000/sysv4.opt:125
-+msgid "Link with libyk.a, libc.a and crt0.o."
- msgstr ""
-
--#: config/arc/arc.opt:333
--msgid "Enable Locked Load/Store Conditional extension."
-+#: config/rs6000/sysv4.opt:129
-+msgid "Link with libmvme.a, libc.a and crt0.o."
- msgstr ""
-
--#: config/arc/arc.opt:337
--msgid "Enable swap byte ordering extension instruction."
-+#: config/rs6000/sysv4.opt:133
-+msgid "Set the PPC_EMB bit in the ELF flags header."
- msgstr ""
-
--#: config/arc/arc.opt:341
--msgid "Enable 64-bit Time-Stamp Counter extension instruction."
-+#: config/rs6000/sysv4.opt:153
-+msgid "Generate code to use a non-exec PLT and GOT."
- msgstr ""
-
--#: config/arc/arc.opt:345
--msgid "Pass -EB option through to linker."
-+#: config/rs6000/sysv4.opt:157
-+msgid "Generate code for old exec BSS PLT."
- msgstr ""
-
--#: config/arc/arc.opt:349
--msgid "Pass -EL option through to linker."
-+#: config/rs6000/aix64.opt:24
-+msgid "Compile for 64-bit pointers."
- msgstr ""
-
--#: config/arc/arc.opt:353
--msgid "Pass -marclinux option through to linker."
-+#: config/rs6000/aix64.opt:28
-+msgid "Compile for 32-bit pointers."
- msgstr ""
-
--#: config/arc/arc.opt:357
--msgid "Pass -marclinux_prof option through to linker."
-+#: config/rs6000/aix64.opt:32 config/rs6000/linux64.opt:28
-+msgid "Select code model."
- msgstr ""
-
--#: config/arc/arc.opt:365
--msgid "Enable lra."
-+#: config/rs6000/aix64.opt:49
-+msgid "Support message passing with the Parallel Environment."
- msgstr ""
-
--#: config/arc/arc.opt:369
--msgid "Don't indicate any priority with TARGET_REGISTER_PRIORITY."
-+#: config/rs6000/linux64.opt:24
-+msgid "Call mcount for profiling before a function prologue."
- msgstr ""
-
--#: config/arc/arc.opt:373
--msgid "Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
-+#: config/rs6000/476.opt:24
-+msgid ""
-+"Preserve the PowerPC 476's link stack by matching up a blr with the bcl/bl "
-+"insns used for GOT accesses."
- msgstr ""
-
--#: config/arc/arc.opt:377
--msgid "Reduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
-+#: config/rl78/rl78.opt:31
-+msgid ""
-+"Selects the type of hardware multiplication and division to use (none/g13/"
-+"g14)."
- msgstr ""
-
--#: config/arc/arc.opt:381
--msgid "instrument with mcount calls as in the ucb code."
-+#: config/rl78/rl78.opt:50
-+msgid "Use all registers, reserving none for interrupt handlers."
- msgstr ""
-
--#: config/arc/arc.opt:411
--msgid "Enable atomic instructions."
-+#: config/rl78/rl78.opt:54
-+msgid "Enable assembler and linker relaxation. Enabled by default at -Os."
- msgstr ""
-
--#: config/arc/arc.opt:415
--msgid "Enable double load/store instructions for ARC HS."
-+#: config/rl78/rl78.opt:58
-+msgid ""
-+"Selects the type of RL78 core being targeted (g10/g13/g14). The default is "
-+"the G14. If set, also selects the hardware multiply support to be used."
- msgstr ""
-
--#: config/arc/arc.opt:419
--msgid "Specify the name of the target floating point configuration."
-+#: config/rl78/rl78.opt:77
-+msgid "Alias for -mcpu=g10."
- msgstr ""
-
--#: java/lang.opt:122
--msgid "Warn if deprecated empty statements are found."
-+#: config/rl78/rl78.opt:81
-+msgid "Alias for -mcpu=g13."
- msgstr ""
-
--#: java/lang.opt:126
--msgid "Warn if .class files are out of date."
-+#: config/rl78/rl78.opt:85 config/rl78/rl78.opt:89
-+msgid "Alias for -mcpu=g14."
- msgstr ""
-
--#: java/lang.opt:130
--msgid "Warn if modifiers are specified when not necessary."
-+#: config/rl78/rl78.opt:93
-+msgid ""
-+"Assume ES is zero throughout program execution, use ES: for read-only data."
- msgstr ""
-
--#: java/lang.opt:150
--msgid "--CLASSPATH\tDeprecated; use --classpath instead."
-+#: config/nds32/nds32.opt:26
-+msgid "Generate code in big-endian mode."
- msgstr ""
-
--#: java/lang.opt:157
--msgid "Permit the use of the assert keyword."
-+#: config/nds32/nds32.opt:30
-+msgid "Generate code in little-endian mode."
- msgstr ""
-
--#: java/lang.opt:179
--msgid "--bootclasspath=<path>\tReplace system path."
-+#: config/nds32/nds32.opt:34
-+msgid "Use reduced-set registers for register allocation."
- msgstr ""
-
--#: java/lang.opt:183
--msgid "Generate checks for references to NULL."
-+#: config/nds32/nds32.opt:38
-+msgid "Use full-set registers for register allocation."
- msgstr ""
-
--#: java/lang.opt:187
--msgid "--classpath=<path>\tSet class path."
-+#: config/nds32/nds32.opt:42
-+msgid "Generate conditional move instructions."
- msgstr ""
-
--#: java/lang.opt:194
--msgid "Output a class file."
-+#: config/nds32/nds32.opt:46
-+msgid "Generate performance extension instructions."
- msgstr ""
-
--#: java/lang.opt:198
--msgid "Alias for -femit-class-file."
-+#: config/nds32/nds32.opt:50
-+msgid "Generate v3 push25/pop25 instructions."
- msgstr ""
+ for (b_arg_chain = TYPE_ARG_TYPES (TREE_TYPE (ob_fndecl));
+@@ -983,6 +989,15 @@
+ return error_mark_node;
+ }
--#: java/lang.opt:202
-+#: config/nds32/nds32.opt:54
-+msgid "Generate 16-bit instructions."
-+msgstr ""
-+
-+#: config/nds32/nds32.opt:58
-+msgid "Specify the size of each interrupt vector, which must be 4 or 16."
-+msgstr ""
+
-+#: config/nds32/nds32.opt:62
- msgid ""
--"--encoding=<encoding>\tChoose input encoding (defaults from your locale)."
-+"Specify the size of each cache block, which must be a power of 2 between 4 "
-+"and 512."
- msgstr ""
-
--#: java/lang.opt:206
--msgid "--extdirs=<path>\tSet the extension directory path."
-+#: config/nds32/nds32.opt:70
-+msgid "Known arch types (for use with the -march= option):"
- msgstr ""
-
--#: java/lang.opt:216
--msgid "Input file is a file with a list of filenames to compile."
-+#: config/nds32/nds32.opt:83
-+msgid "Specify the address generation strategy for code model."
- msgstr ""
-
--#: java/lang.opt:223
--msgid "Always check for non gcj generated classes archives."
-+#: config/nds32/nds32.opt:87
-+msgid "Known cmodel types (for use with the -mcmodel= option):"
- msgstr ""
-
--#: java/lang.opt:227
--msgid ""
--"Assume the runtime uses a hash table to map an object to its synchronization "
--"structure."
-+#: config/nds32/nds32.opt:100
-+msgid "Enable constructor/destructor feature."
- msgstr ""
-
--#: java/lang.opt:231
--msgid "Generate instances of Class at runtime."
-+#: config/nds32/nds32.opt:104
-+msgid "Guide linker to relax instructions."
- msgstr ""
-
--#: java/lang.opt:235
--msgid "Use offset tables for virtual method calls."
-+#: config/ft32/ft32.opt:23
-+msgid "target the software simulator."
- msgstr ""
-
--#: java/lang.opt:242
--msgid "Assume native functions are implemented using JNI."
-+#: config/ft32/ft32.opt:31
-+msgid "Avoid use of the DIV and MOD instructions"
- msgstr ""
-
--#: java/lang.opt:246
--msgid "Enable optimization of static class initialization code."
-+#: ada/gcc-interface/lang.opt:57 c-family/c.opt:276
-+msgid "Enable most warning messages."
- msgstr ""
-
--#: java/lang.opt:253
--msgid "Reduce the amount of reflection meta-data generated."
-+#: ada/gcc-interface/lang.opt:61
-+msgid "Synonym of -gnatk8."
- msgstr ""
-
--#: java/lang.opt:257
--msgid "Enable assignability checks for stores into object arrays."
-+#: ada/gcc-interface/lang.opt:69
-+msgid "Do not look for object files in standard path."
- msgstr ""
-
--#: java/lang.opt:261
--msgid "Generate code for the Boehm GC."
-+#: ada/gcc-interface/lang.opt:73
-+msgid "Select the runtime."
- msgstr ""
-
--#: java/lang.opt:265
--msgid "Call a library routine to do integer divisions."
-+#: ada/gcc-interface/lang.opt:77 c-family/c.opt:1456
-+msgid "Use the narrowest integer type possible for enumeration types."
- msgstr ""
-
--#: java/lang.opt:269
--msgid "Generate code for built-in atomic operations."
-+#: ada/gcc-interface/lang.opt:81 c-family/c.opt:1468
-+msgid "Make \"char\" signed by default."
- msgstr ""
-
--#: java/lang.opt:273
--msgid "Generated should be loaded by bootstrap loader."
-+#: ada/gcc-interface/lang.opt:85
-+msgid "Catch typos."
- msgstr ""
-
--#: java/lang.opt:277
--msgid "Set the source language version."
-+#: ada/gcc-interface/lang.opt:89
-+msgid "Set name of output ALI file (internal switch)."
- msgstr ""
-
--#: java/lang.opt:281
--msgid "Set the target VM version."
-+#: ada/gcc-interface/lang.opt:93
-+msgid "-gnat<options>\tSpecify options to GNAT."
- msgstr ""
-
--#: lto/lang.opt:28
--#, c-format
--msgid "unknown linker output %qs"
-+#: ada/gcc-interface/lang.opt:97
-+msgid "Ignored."
- msgstr ""
-
--#: lto/lang.opt:47
--msgid "Set linker output type (used internally during LTO optimization)"
-+#: go/lang.opt:42
-+msgid "Add explicit checks for division by zero."
- msgstr ""
-
--#: lto/lang.opt:52
--msgid "Run the link-time optimizer in local transformation (LTRANS) mode."
-+#: go/lang.opt:46
-+msgid "Add explicit checks for division overflow in INT_MIN / -1."
- msgstr ""
-
--#: lto/lang.opt:56
--msgid "Specify a file to which a list of files output by LTRANS is written."
-+#: go/lang.opt:50
-+msgid "-fgo-dump-<type>\tDump Go frontend internal information."
- msgstr ""
-
--#: lto/lang.opt:60
--msgid "Run the link-time optimizer in whole program analysis (WPA) mode."
-+#: go/lang.opt:54
-+msgid "-fgo-optimize-<type>\tTurn on optimization passes in the frontend."
- msgstr ""
-
--#: lto/lang.opt:64
-+#: go/lang.opt:58
-+msgid "-fgo-pkgpath=<string>\tSet Go package path."
-+msgstr ""
++ if (!TARGET_VXE2
++ && bflags_overloaded_builtin_var[last_match_index] & B_VXE2)
++ {
++ error_at (loc, "%qs matching variant requires z15 or higher",
++ IDENTIFIER_POINTER (DECL_NAME (ob_fndecl)));
++ return error_mark_node;
++ }
+
-+#: go/lang.opt:62
- msgid ""
--"Whole program analysis (WPA) mode with number of parallel jobs specified."
-+"-fgo-prefix=<string>\tSet package-specific prefix for exported Go names."
- msgstr ""
+ if (bflags_overloaded_builtin_var[last_match_index] & B_DEP)
+ warning_at (loc, 0, "%qs matching variant is deprecated.",
+ IDENTIFIER_POINTER (DECL_NAME (ob_fndecl)));
+Index: gcc/config/s390/driver-native.c
+===================================================================
+--- a/src/gcc/config/s390/driver-native.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/driver-native.c (.../branches/gcc-9-branch)
+@@ -121,10 +121,10 @@
+ break;
+ case 0x8561:
+ case 0x8562:
+- cpu = "arch13";
++ cpu = "z15";
+ break;
+ default:
+- cpu = "arch13";
++ cpu = "z15";
+ break;
+ }
+ }
+Index: gcc/config/s390/vector.md
+===================================================================
+--- a/src/gcc/config/s390/vector.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/vector.md (.../branches/gcc-9-branch)
+@@ -70,7 +70,7 @@
--#: lto/lang.opt:68
--msgid "The resolution file."
-+#: go/lang.opt:66
-+msgid ""
-+"-fgo-relative-import-path=<path> Treat a relative import as relative to path."
- msgstr ""
+ (define_mode_iterator V_128_NOSINGLE [V16QI V8HI V4SI V4SF V2DI V2DF])
+
+-; 32 bit int<->fp vector conversion instructions are available since VXE2 (arch13).
++; 32 bit int<->fp vector conversion instructions are available since VXE2 (z15).
+ (define_mode_iterator VX_VEC_CONV_BFP [V2DF (V4SF "TARGET_VXE2")])
+ (define_mode_iterator VX_VEC_CONV_INT [V2DI (V4SI "TARGET_VXE2")])
+
+Index: gcc/config/s390/s390-opts.h
+===================================================================
+--- a/src/gcc/config/s390/s390-opts.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390-opts.h (.../branches/gcc-9-branch)
+@@ -37,7 +37,7 @@
+ PROCESSOR_2827_ZEC12,
+ PROCESSOR_2964_Z13,
+ PROCESSOR_3906_Z14,
+- PROCESSOR_8561_ARCH13,
++ PROCESSOR_8561_Z15,
+ PROCESSOR_NATIVE,
+ PROCESSOR_max
+ };
+Index: gcc/config/s390/s390.c
+===================================================================
+--- a/src/gcc/config/s390/s390.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390.c (.../branches/gcc-9-branch)
+@@ -337,7 +337,7 @@
+ { "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 },
+ { "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 },
+ { "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 },
+- { "arch13", "", PROCESSOR_8561_ARCH13, &zEC12_cost, 13 },
++ { "z15", "arch13", PROCESSOR_8561_Z15, &zEC12_cost, 13 },
+ { "native", "", PROCESSOR_NATIVE, NULL, 0 }
+ };
-+#: go/lang.opt:70
-+msgid "Functions which return values must end with return statements."
-+msgstr ""
+@@ -811,6 +811,12 @@
+ error ("Builtin %qF requires z14 or higher.", fndecl);
+ return const0_rtx;
+ }
+
- #: common.opt:235
--msgid "Enable coverage-guided fuzzing code instrumentation."
-+msgid ""
-+"Enable coverage-guided fuzzing code instrumentation. Inserts call to "
-+"__sanitizer_cov_trace_pc into every basic block."
- msgstr ""
-
- #: common.opt:302
-@@ -13986,7 +11956,9 @@
- msgstr ""
-
- #: common.opt:944
--msgid "-fsanitize-sections=<sec1,sec2,...>\tSanitize global variables"
-+msgid ""
-+"-fsanitize-sections=<sec1,sec2,...>\tSanitize global variables in user-"
-+"defined sections."
- msgstr ""
-
- #: common.opt:949
-@@ -14011,11 +11983,15 @@
- msgstr ""
-
- #: common.opt:969
--msgid "Use sample profile information for call graph node weights. The default"
-+msgid ""
-+"Use sample profile information for call graph node weights. The default "
-+"profile file is fbdata.afdo in 'pwd'."
- msgstr ""
-
- #: common.opt:974
--msgid "Use sample profile information for call graph node weights. The profile"
-+msgid ""
-+"Use sample profile information for call graph node weights. The profile file "
-+"is specified in the argument."
- msgstr ""
-
- #: common.opt:983
-@@ -14219,7 +12195,9 @@
- msgstr ""
-
- #: common.opt:1212
--msgid "Collect and dump debug information into temporary file if ICE in C/C++"
-+msgid ""
-+"Collect and dump debug information into temporary file if ICE in C/C++ "
-+"compiler occured."
- msgstr ""
++ if ((bflags & B_VXE2) && !TARGET_VXE2)
++ {
++ error ("Builtin %qF requires z15 or higher.", fndecl);
++ return const0_rtx;
++ }
+ }
+ if (fcode >= S390_OVERLOADED_BUILTIN_VAR_OFFSET
+ && fcode < S390_ALL_BUILTIN_MAX)
+@@ -1782,7 +1788,7 @@
+ if (*code == EQ)
+ new_code = reversed_comparison_code_parts (GET_CODE (*op0),
+ XEXP (*op0, 0),
+- XEXP (*op1, 0), NULL);
++ XEXP (*op0, 1), NULL);
+ else
+ new_code = GET_CODE (*op0);
- #: common.opt:1217
-@@ -14345,12 +12323,14 @@
+@@ -1795,7 +1801,7 @@
+ }
- #: common.opt:1349
- msgid ""
--"Perform redundant load after store elimination in global common subexpression"
-+"Perform redundant load after store elimination in global common "
-+"subexpression elimination."
- msgstr ""
+ /* ~a==b -> ~(a^b)==0 ~a!=b -> ~(a^b)!=0 */
+- if (TARGET_ARCH13
++ if (TARGET_Z15
+ && (*code == EQ || *code == NE)
+ && (GET_MODE (*op0) == DImode || GET_MODE (*op0) == SImode)
+ && GET_CODE (*op0) == NOT)
+@@ -1807,7 +1813,7 @@
+ }
- #: common.opt:1354
- msgid ""
--"Perform global common subexpression elimination after register allocation has"
-+"Perform global common subexpression elimination after register allocation "
-+"has finished."
- msgstr ""
+ /* a&b == -1 -> ~a|~b == 0 a|b == -1 -> ~a&~b == 0 */
+- if (TARGET_ARCH13
++ if (TARGET_Z15
+ && (*code == EQ || *code == NE)
+ && (GET_CODE (*op0) == AND || GET_CODE (*op0) == IOR)
+ && (GET_MODE (*op0) == DImode || GET_MODE (*op0) == SImode)
+@@ -3529,7 +3535,7 @@
+
+ /* It is a real IF-THEN-ELSE. An additional move will be
+ needed to implement that. */
+- if (!TARGET_ARCH13
++ if (!TARGET_Z15
+ && reload_completed
+ && !rtx_equal_p (dst, then)
+ && !rtx_equal_p (dst, els))
+@@ -3551,7 +3557,7 @@
+ case IOR:
+
+ /* nnrk, nngrk */
+- if (TARGET_ARCH13
++ if (TARGET_Z15
+ && (mode == SImode || mode == DImode)
+ && GET_CODE (XEXP (x, 0)) == NOT
+ && GET_CODE (XEXP (x, 1)) == NOT)
+@@ -3598,7 +3604,7 @@
+
+ case AND:
+ /* nork, nogrk */
+- if (TARGET_ARCH13
++ if (TARGET_Z15
+ && (mode == SImode || mode == DImode)
+ && GET_CODE (XEXP (x, 0)) == NOT
+ && GET_CODE (XEXP (x, 1)) == NOT)
+@@ -3770,7 +3776,7 @@
+ *total = COSTS_N_INSNS (1);
+
+ /* nxrk, nxgrk ~(a^b)==0 */
+- if (TARGET_ARCH13
++ if (TARGET_Z15
+ && GET_CODE (XEXP (x, 0)) == NOT
+ && XEXP (x, 1) == const0_rtx
+ && GET_CODE (XEXP (XEXP (x, 0), 0)) == XOR
+@@ -3785,7 +3791,7 @@
+ }
- #: common.opt:1371
-@@ -14368,7 +12348,9 @@
- msgstr ""
+ /* nnrk, nngrk, nork, nogrk */
+- if (TARGET_ARCH13
++ if (TARGET_Z15
+ && (GET_CODE (XEXP (x, 0)) == AND || GET_CODE (XEXP (x, 0)) == IOR)
+ && XEXP (x, 1) == const0_rtx
+ && (GET_MODE (XEXP (x, 0)) == SImode || GET_MODE (XEXP (x, 0)) == DImode)
+@@ -14440,16 +14446,16 @@
+ if (get_attr_z14_groupoftwo (insn))
+ mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
+ break;
+- case PROCESSOR_8561_ARCH13:
+- if (get_attr_arch13_cracked (insn))
++ case PROCESSOR_8561_Z15:
++ if (get_attr_z15_cracked (insn))
+ mask |= S390_SCHED_ATTR_MASK_CRACKED;
+- if (get_attr_arch13_expanded (insn))
++ if (get_attr_z15_expanded (insn))
+ mask |= S390_SCHED_ATTR_MASK_EXPANDED;
+- if (get_attr_arch13_endgroup (insn))
++ if (get_attr_z15_endgroup (insn))
+ mask |= S390_SCHED_ATTR_MASK_ENDGROUP;
+- if (get_attr_arch13_groupalone (insn))
++ if (get_attr_z15_groupalone (insn))
+ mask |= S390_SCHED_ATTR_MASK_GROUPALONE;
+- if (get_attr_arch13_groupoftwo (insn))
++ if (get_attr_z15_groupoftwo (insn))
+ mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
+ break;
+ default:
+@@ -14487,15 +14493,15 @@
+ if (get_attr_z14_unit_vfu (insn))
+ mask |= 1 << 3;
+ break;
+- case PROCESSOR_8561_ARCH13:
++ case PROCESSOR_8561_Z15:
+ *units = 4;
+- if (get_attr_arch13_unit_lsu (insn))
++ if (get_attr_z15_unit_lsu (insn))
+ mask |= 1 << 0;
+- if (get_attr_arch13_unit_fxa (insn))
++ if (get_attr_z15_unit_fxa (insn))
+ mask |= 1 << 1;
+- if (get_attr_arch13_unit_fxb (insn))
++ if (get_attr_z15_unit_fxb (insn))
+ mask |= 1 << 2;
+- if (get_attr_arch13_unit_vfu (insn))
++ if (get_attr_z15_unit_vfu (insn))
+ mask |= 1 << 3;
+ break;
+ default:
+@@ -14511,7 +14517,7 @@
+ return false;
- #: common.opt:1384
--msgid "Enable hoisting adjacent loads to encourage generating conditional move"
-+msgid ""
-+"Enable hoisting adjacent loads to encourage generating conditional move "
-+"instructions."
- msgstr ""
+ return get_attr_z13_unit_fpd (insn) || get_attr_z14_unit_fpd (insn)
+- || get_attr_arch13_unit_fpd (insn);
++ || get_attr_z15_unit_fpd (insn);
+ }
- #: common.opt:1393
-@@ -14547,10 +12529,14 @@
- msgid "unknown IRA region %qs"
- msgstr ""
+ static bool
+@@ -14521,7 +14527,7 @@
+ return false;
--#: common.opt:1607 common.opt:1612
--msgid "Use IRA based register pressure calculation"
-+#: common.opt:1607
-+msgid "Use IRA based register pressure calculation in RTL hoist optimizations."
- msgstr ""
+ return get_attr_z13_unit_fxd (insn) || get_attr_z14_unit_fxd (insn)
+- || get_attr_arch13_unit_fxd (insn);
++ || get_attr_z15_unit_fxd (insn);
+ }
-+#: common.opt:1612
-+msgid "Use IRA based register pressure calculation in RTL loop optimizations."
-+msgstr ""
+ /* Returns TRUE if INSN is a long-running instruction. */
+@@ -15968,6 +15974,8 @@
+ static HOST_WIDE_INT
+ s390_vector_alignment (const_tree type)
+ {
++ tree size = TYPE_SIZE (type);
+
- #: common.opt:1617
- msgid "Share slots for saving different hard registers."
- msgstr ""
-@@ -14808,7 +12794,9 @@
- msgstr ""
-
- #: common.opt:1888
--msgid "Set the top-level directory for storing the profile data."
-+msgid ""
-+"Set the top-level directory for storing the profile data. The default is "
-+"'pwd'."
- msgstr ""
-
- #: common.opt:1893
-@@ -14863,7 +12851,9 @@
- msgstr ""
-
- #: common.opt:1950
--msgid "Tell DSE that the storage for a C++ object is dead when the constructor"
-+msgid ""
-+"Tell DSE that the storage for a C++ object is dead when the constructor "
-+"starts and when the destructor finishes."
- msgstr ""
-
- #: common.opt:1958
-@@ -15029,7 +13019,9 @@
- msgstr ""
-
- #: common.opt:2140
--msgid "Emit function prologues only before parts of the function that need it,"
-+msgid ""
-+"Emit function prologues only before parts of the function that need it, "
-+"rather than at the top of the function."
- msgstr ""
-
- #: common.opt:2145
-@@ -15228,12 +13220,18 @@
- msgstr ""
-
- #: common.opt:2370
--msgid "Detect paths that trigger erroneous or undefined behavior due to"
-+msgid ""
-+"Detect paths that trigger erroneous or undefined behavior due to "
-+"dereferencing a null pointer. Isolate those paths from the main control "
-+"flow and turn the statement with erroneous or undefined behavior into a trap."
- msgstr ""
+ if (!TARGET_VX_ABI)
+ return default_vector_alignment (type);
- #: common.opt:2376
- msgid ""
--"Detect paths that trigger erroneous or undefined behavior due a null value"
-+"Detect paths that trigger erroneous or undefined behavior due a null value "
-+"being used in a way forbidden by a returns_nonnull or nonnull attribute. "
-+"Isolate those paths from the main control flow and turn the statement with "
-+"erroneous or undefined behavior into a trap."
- msgstr ""
-
- #: common.opt:2383
-@@ -15311,7 +13309,9 @@
- msgstr ""
+@@ -15974,7 +15982,11 @@
+ if (TYPE_USER_ALIGN (type))
+ return TYPE_ALIGN (type);
- #: common.opt:2463
--msgid "Assume common declarations may be overridden with ones with a larger"
-+msgid ""
-+"Assume common declarations may be overridden with ones with a larger "
-+"trailing array."
- msgstr ""
-
- #: common.opt:2468
-@@ -15331,7 +13331,9 @@
- msgstr ""
-
- #: common.opt:2487
--msgid "Allow optimization for floating-point arithmetic which may change the"
-+msgid ""
-+"Allow optimization for floating-point arithmetic which may change the result "
-+"of the operation due to rounding."
- msgstr ""
-
- #: common.opt:2492
-@@ -15613,6 +13615,2088 @@
- msgid "Use caller save register across calls if possible."
- msgstr ""
-
-+#: java/lang.opt:122
-+msgid "Warn if deprecated empty statements are found."
-+msgstr ""
-+
-+#: java/lang.opt:126
-+msgid "Warn if .class files are out of date."
-+msgstr ""
-+
-+#: java/lang.opt:130
-+msgid "Warn if modifiers are specified when not necessary."
-+msgstr ""
-+
-+#: java/lang.opt:150
-+msgid "--CLASSPATH\tDeprecated; use --classpath instead."
-+msgstr ""
-+
-+#: java/lang.opt:157
-+msgid "Permit the use of the assert keyword."
-+msgstr ""
-+
-+#: java/lang.opt:179
-+msgid "--bootclasspath=<path>\tReplace system path."
-+msgstr ""
-+
-+#: java/lang.opt:183
-+msgid "Generate checks for references to NULL."
-+msgstr ""
-+
-+#: java/lang.opt:187
-+msgid "--classpath=<path>\tSet class path."
-+msgstr ""
-+
-+#: java/lang.opt:194
-+msgid "Output a class file."
-+msgstr ""
-+
-+#: java/lang.opt:198
-+msgid "Alias for -femit-class-file."
-+msgstr ""
-+
-+#: java/lang.opt:202
-+msgid ""
-+"--encoding=<encoding>\tChoose input encoding (defaults from your locale)."
-+msgstr ""
-+
-+#: java/lang.opt:206
-+msgid "--extdirs=<path>\tSet the extension directory path."
-+msgstr ""
-+
-+#: java/lang.opt:216
-+msgid "Input file is a file with a list of filenames to compile."
-+msgstr ""
-+
-+#: java/lang.opt:223
-+msgid "Always check for non gcj generated classes archives."
-+msgstr ""
-+
-+#: java/lang.opt:227
-+msgid ""
-+"Assume the runtime uses a hash table to map an object to its synchronization "
-+"structure."
-+msgstr ""
-+
-+#: java/lang.opt:231
-+msgid "Generate instances of Class at runtime."
-+msgstr ""
-+
-+#: java/lang.opt:235
-+msgid "Use offset tables for virtual method calls."
-+msgstr ""
-+
-+#: java/lang.opt:242
-+msgid "Assume native functions are implemented using JNI."
-+msgstr ""
-+
-+#: java/lang.opt:246
-+msgid "Enable optimization of static class initialization code."
-+msgstr ""
-+
-+#: java/lang.opt:253
-+msgid "Reduce the amount of reflection meta-data generated."
-+msgstr ""
-+
-+#: java/lang.opt:257
-+msgid "Enable assignability checks for stores into object arrays."
-+msgstr ""
-+
-+#: java/lang.opt:261
-+msgid "Generate code for the Boehm GC."
-+msgstr ""
-+
-+#: java/lang.opt:265
-+msgid "Call a library routine to do integer divisions."
-+msgstr ""
-+
-+#: java/lang.opt:269
-+msgid "Generate code for built-in atomic operations."
-+msgstr ""
-+
-+#: java/lang.opt:273
-+msgid "Generated should be loaded by bootstrap loader."
-+msgstr ""
-+
-+#: java/lang.opt:277
-+msgid "Set the source language version."
-+msgstr ""
-+
-+#: java/lang.opt:281
-+msgid "Set the target VM version."
-+msgstr ""
-+
-+#: c-family/c.opt:43 c-family/c.opt:46 c-family/c.opt:181
-+#, c-format
-+msgid "assertion missing after %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:55 c-family/c.opt:58 c-family/c.opt:163 c-family/c.opt:166
-+#: c-family/c.opt:193 c-family/c.opt:252
-+#, c-format
-+msgid "macro name missing after %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:85 c-family/c.opt:88 c-family/c.opt:91 c-family/c.opt:94
-+#: c-family/c.opt:200 c-family/c.opt:208 c-family/c.opt:1597
-+#: c-family/c.opt:1617 c-family/c.opt:1621 c-family/c.opt:1625
-+#, c-format
-+msgid "missing path after %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:182
-+msgid ""
-+"-A<question>=<answer>\tAssert the <answer> to <question>. Putting '-' "
-+"before <question> disables the <answer> to <question>."
-+msgstr ""
-+
-+#: c-family/c.opt:186
-+msgid "Do not discard comments."
-+msgstr ""
-+
-+#: c-family/c.opt:190
-+msgid "Do not discard comments in macro expansions."
-+msgstr ""
-+
-+#: c-family/c.opt:194
-+msgid ""
-+"-D<macro>[=<val>]\tDefine a <macro> with <val> as its value. If just "
-+"<macro> is given, <val> is taken to be 1."
-+msgstr ""
-+
-+#: c-family/c.opt:201
-+msgid "-F <dir>\tAdd <dir> to the end of the main framework include path."
-+msgstr ""
-+
-+#: c-family/c.opt:205
-+msgid "Print the name of header files as they are used."
-+msgstr ""
-+
-+#: c-family/c.opt:209
-+msgid "-I <dir>\tAdd <dir> to the end of the main include path."
-+msgstr ""
-+
-+#: c-family/c.opt:213
-+msgid "Generate make dependencies."
-+msgstr ""
-+
-+#: c-family/c.opt:217
-+msgid "Generate make dependencies and compile."
-+msgstr ""
-+
-+#: c-family/c.opt:221
-+msgid "-MF <file>\tWrite dependency output to the given file."
-+msgstr ""
-+
-+#: c-family/c.opt:225
-+msgid "Treat missing header files as generated files."
-+msgstr ""
-+
-+#: c-family/c.opt:229
-+msgid "Like -M but ignore system header files."
-+msgstr ""
-+
-+#: c-family/c.opt:233
-+msgid "Like -MD but ignore system header files."
-+msgstr ""
-+
-+#: c-family/c.opt:237
-+msgid "Generate phony targets for all headers."
-+msgstr ""
-+
-+#: c-family/c.opt:240 c-family/c.opt:244
-+#, c-format
-+msgid "missing makefile target after %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:241
-+msgid "-MQ <target>\tAdd a MAKE-quoted target."
-+msgstr ""
-+
-+#: c-family/c.opt:245
-+msgid "-MT <target>\tAdd an unquoted target."
-+msgstr ""
-+
-+#: c-family/c.opt:249
-+msgid "Do not generate #line directives."
-+msgstr ""
-+
-+#: c-family/c.opt:253
-+msgid "-U<macro>\tUndefine <macro>."
-+msgstr ""
-+
-+#: c-family/c.opt:257
-+msgid ""
-+"Warn about things that will change when compiling with an ABI-compliant "
-+"compiler."
-+msgstr ""
-+
-+#: c-family/c.opt:261
-+msgid ""
-+"Warn about things that change between the current -fabi-version and the "
-+"specified version."
-+msgstr ""
-+
-+#: c-family/c.opt:265
-+msgid ""
-+"Warn if a subobject has an abi_tag attribute that the complete object type "
-+"does not have."
-+msgstr ""
-+
-+#: c-family/c.opt:272
-+msgid "Warn about suspicious uses of memory addresses."
-+msgstr ""
-+
-+#: c-family/c.opt:288
-+msgid ""
-+"Warn whenever an Objective-C assignment is being intercepted by the garbage "
-+"collector."
-+msgstr ""
-+
-+#: c-family/c.opt:292
-+msgid "Warn about casting functions to incompatible types."
-+msgstr ""
-+
-+#: c-family/c.opt:296
-+msgid ""
-+"Warn about boolean expression compared with an integer value different from "
-+"true/false."
-+msgstr ""
-+
-+#: c-family/c.opt:300
-+msgid ""
-+"Warn when __builtin_frame_address or __builtin_return_address is used "
-+"unsafely."
-+msgstr ""
-+
-+#: c-family/c.opt:304
-+msgid "Warn when a built-in preprocessor macro is undefined or redefined."
-+msgstr ""
-+
-+#: c-family/c.opt:308
-+msgid "Warn about features not present in ISO C90, but present in ISO C99."
-+msgstr ""
-+
-+#: c-family/c.opt:312
-+msgid "Warn about features not present in ISO C99, but present in ISO C11."
-+msgstr ""
-+
-+#: c-family/c.opt:316
-+msgid "Warn about C constructs that are not in the common subset of C and C++."
-+msgstr ""
-+
-+#: c-family/c.opt:323
-+msgid ""
-+"Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO "
-+"C++ 2011."
-+msgstr ""
-+
-+#: c-family/c.opt:327
-+msgid ""
-+"Warn about C++ constructs whose meaning differs between ISO C++ 2011 and ISO "
-+"C++ 2014."
-+msgstr ""
-+
-+#: c-family/c.opt:331
-+msgid "Warn about casts which discard qualifiers."
-+msgstr ""
-+
-+#: c-family/c.opt:335
-+msgid "Warn about subscripts whose type is \"char\"."
-+msgstr ""
-+
-+#: c-family/c.opt:339
-+msgid "Warn about memory access errors found by Pointer Bounds Checker."
-+msgstr ""
-+
-+#: c-family/c.opt:343
-+msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"."
-+msgstr ""
-+
-+#: c-family/c.opt:347
-+msgid ""
-+"Warn about possibly nested block comments, and C++ comments spanning more "
-+"than one physical line."
-+msgstr ""
-+
-+#: c-family/c.opt:351
-+msgid "Synonym for -Wcomment."
-+msgstr ""
-+
-+#: c-family/c.opt:355
-+msgid "Warn for conditionally-supported constructs."
-+msgstr ""
-+
-+#: c-family/c.opt:359
-+msgid "Warn for implicit type conversions that may change a value."
-+msgstr ""
-+
-+#: c-family/c.opt:363
-+msgid "Warn for converting NULL from/to a non-pointer type."
-+msgstr ""
-+
-+#: c-family/c.opt:371
-+msgid "Warn when all constructors and destructors are private."
-+msgstr ""
-+
-+#: c-family/c.opt:375
-+msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage."
-+msgstr ""
-+
-+#: c-family/c.opt:379
-+msgid "Warn when a declaration is found after a statement."
-+msgstr ""
-+
-+#: c-family/c.opt:383
-+msgid "Warn when deleting a pointer to incomplete type."
-+msgstr ""
-+
-+#: c-family/c.opt:387
-+msgid "Warn about deleting polymorphic objects with non-virtual destructors."
-+msgstr ""
-+
-+#: c-family/c.opt:391
-+msgid "Warn if a deprecated compiler feature, class, method, or field is used."
-+msgstr ""
-+
-+#: c-family/c.opt:395
-+msgid ""
-+"Warn about positional initialization of structs requiring designated "
-+"initializers."
-+msgstr ""
-+
-+#: c-family/c.opt:399
-+msgid "Warn if qualifiers on arrays which are pointer targets are discarded."
-+msgstr ""
-+
-+#: c-family/c.opt:403
-+msgid "Warn if type qualifiers on pointers are discarded."
-+msgstr ""
-+
-+#: c-family/c.opt:407
-+msgid "Warn about compile-time integer division by zero."
-+msgstr ""
-+
-+#: c-family/c.opt:411
-+msgid "Warn about duplicated conditions in an if-else-if chain."
-+msgstr ""
-+
-+#: c-family/c.opt:415
-+msgid "Warn about violations of Effective C++ style rules."
-+msgstr ""
-+
-+#: c-family/c.opt:419
-+msgid "Warn about an empty body in an if or else statement."
-+msgstr ""
-+
-+#: c-family/c.opt:423
-+msgid "Warn about stray tokens after #elif and #endif."
-+msgstr ""
-+
-+#: c-family/c.opt:427
-+msgid "Warn about comparison of different enum types."
-+msgstr ""
-+
-+#: c-family/c.opt:435
-+msgid ""
-+"This switch is deprecated; use -Werror=implicit-function-declaration instead."
-+msgstr ""
-+
-+#: c-family/c.opt:439
-+msgid ""
-+"Warn for implicit type conversions that cause loss of floating point "
-+"precision."
-+msgstr ""
-+
-+#: c-family/c.opt:443
-+msgid "Warn if testing floating point numbers for equality."
-+msgstr ""
-+
-+#: c-family/c.opt:447 c-family/c.opt:479
-+msgid "Warn about printf/scanf/strftime/strfmon format string anomalies."
-+msgstr ""
-+
-+#: c-family/c.opt:451
-+msgid "Warn about format strings that contain NUL bytes."
-+msgstr ""
-+
-+#: c-family/c.opt:455
-+msgid "Warn if passing too many arguments to a function for its format string."
-+msgstr ""
-+
-+#: c-family/c.opt:459
-+msgid "Warn about format strings that are not literals."
-+msgstr ""
-+
-+#: c-family/c.opt:463
-+msgid "Warn about possible security problems with format functions."
-+msgstr ""
-+
-+#: c-family/c.opt:467
-+msgid "Warn about sign differences with format functions."
-+msgstr ""
-+
-+#: c-family/c.opt:471
-+msgid "Warn about strftime formats yielding 2-digit years."
-+msgstr ""
-+
-+#: c-family/c.opt:475
-+msgid "Warn about zero-length formats."
-+msgstr ""
-+
-+#: c-family/c.opt:483
-+msgid "Warn whenever type qualifiers are ignored."
-+msgstr ""
-+
-+#: c-family/c.opt:487
-+msgid "Warn whenever attributes are ignored."
-+msgstr ""
-+
-+#: c-family/c.opt:491
-+msgid ""
-+"Warn when there is a conversion between pointers that have incompatible "
-+"types."
-+msgstr ""
-+
-+#: c-family/c.opt:495
-+msgid "Warn about variables which are initialized to themselves."
-+msgstr ""
-+
-+#: c-family/c.opt:499
-+msgid "Warn about implicit declarations."
-+msgstr ""
-+
-+#: c-family/c.opt:503
-+msgid "Warn about implicit conversions from \"float\" to \"double\"."
-+msgstr ""
-+
-+#: c-family/c.opt:507
-+msgid "Warn about implicit function declarations."
-+msgstr ""
-+
-+#: c-family/c.opt:511
-+msgid "Warn when a declaration does not specify a type."
-+msgstr ""
-+
-+#: c-family/c.opt:518
-+msgid ""
-+"Warn about C++11 inheriting constructors when the base has a variadic "
-+"constructor."
-+msgstr ""
-+
-+#: c-family/c.opt:522
-+msgid ""
-+"Warn about incompatible integer to pointer and pointer to integer "
-+"conversions."
-+msgstr ""
-+
-+#: c-family/c.opt:526
-+msgid ""
-+"Warn when there is a cast to a pointer from an integer of a different size."
-+msgstr ""
-+
-+#: c-family/c.opt:530
-+msgid "Warn about invalid uses of the \"offsetof\" macro."
-+msgstr ""
-+
-+#: c-family/c.opt:534
-+msgid "Warn about PCH files that are found but not used."
-+msgstr ""
-+
-+#: c-family/c.opt:538
-+msgid "Warn when a jump misses a variable initialization."
-+msgstr ""
-+
-+#: c-family/c.opt:542
-+msgid ""
-+"Warn when a string or character literal is followed by a ud-suffix which "
-+"does not begin with an underscore."
-+msgstr ""
-+
-+#: c-family/c.opt:546
-+msgid ""
-+"Warn when a logical operator is suspiciously always evaluating to true or "
-+"false."
-+msgstr ""
-+
-+#: c-family/c.opt:550
-+msgid ""
-+"Warn when logical not is used on the left hand side operand of a comparison."
-+msgstr ""
-+
-+#: c-family/c.opt:554
-+msgid "Do not warn about using \"long long\" when -pedantic."
-+msgstr ""
-+
-+#: c-family/c.opt:558
-+msgid "Warn about suspicious declarations of \"main\"."
-+msgstr ""
-+
-+#: c-family/c.opt:566
-+msgid ""
-+"Warn about suspicious calls to memset where the third argument is constant "
-+"literal zero and the second is not."
-+msgstr ""
-+
-+#: c-family/c.opt:570
-+msgid ""
-+"Warn when the indentation of the code does not reflect the block structure."
-+msgstr ""
-+
-+#: c-family/c.opt:574
-+msgid "Warn about possibly missing braces around initializers."
-+msgstr ""
-+
-+#: c-family/c.opt:578
-+msgid "Warn about global functions without previous declarations."
-+msgstr ""
-+
-+#: c-family/c.opt:582
-+msgid "Warn about missing fields in struct initializers."
-+msgstr ""
-+
-+#: c-family/c.opt:586
-+msgid "Warn on direct multiple inheritance."
-+msgstr ""
-+
-+#: c-family/c.opt:590
-+msgid "Warn on namespace definition."
-+msgstr ""
-+
-+#: c-family/c.opt:594
-+msgid "Warn about missing sized deallocation functions."
-+msgstr ""
-+
-+#: c-family/c.opt:598
-+msgid ""
-+"Warn about suspicious length parameters to certain string functions if the "
-+"argument uses sizeof."
-+msgstr ""
-+
-+#: c-family/c.opt:602
-+msgid "Warn when sizeof is applied on a parameter declared as an array."
-+msgstr ""
-+
-+#: c-family/c.opt:606
-+msgid "Warn about functions which might be candidates for format attributes."
-+msgstr ""
-+
-+#: c-family/c.opt:610
-+msgid ""
-+"Suggest that the override keyword be used when the declaration of a virtual "
-+"function overrides another."
-+msgstr ""
-+
-+#: c-family/c.opt:615
-+msgid "Warn about enumerated switches, with no default, missing a case."
-+msgstr ""
-+
-+#: c-family/c.opt:619
-+msgid "Warn about enumerated switches missing a \"default:\" statement."
-+msgstr ""
-+
-+#: c-family/c.opt:623
-+msgid "Warn about all enumerated switches missing a specific case."
-+msgstr ""
-+
-+#: c-family/c.opt:627
-+msgid "Warn about switches with boolean controlling expression."
-+msgstr ""
-+
-+#: c-family/c.opt:631
-+msgid "Warn on primary template declaration."
-+msgstr ""
-+
-+#: c-family/c.opt:639
-+msgid "Warn about user-specified include directories that do not exist."
-+msgstr ""
-+
-+#: c-family/c.opt:643
-+msgid ""
-+"Warn about function parameters declared without a type specifier in K&R-"
-+"style functions."
-+msgstr ""
-+
-+#: c-family/c.opt:647
-+msgid "Warn about global functions without prototypes."
-+msgstr ""
-+
-+#: c-family/c.opt:654
-+msgid "Warn about use of multi-character character constants."
-+msgstr ""
-+
-+#: c-family/c.opt:658
-+msgid ""
-+"Warn about narrowing conversions within { } that are ill-formed in C++11."
-+msgstr ""
-+
-+#: c-family/c.opt:662
-+msgid "Warn about \"extern\" declarations not at file scope."
-+msgstr ""
-+
-+#: c-family/c.opt:666
-+msgid ""
-+"Warn when a noexcept expression evaluates to false even though the "
-+"expression can't actually throw."
-+msgstr ""
-+
-+#: c-family/c.opt:670
-+msgid ""
-+"Warn when non-templatized friend functions are declared within a template."
-+msgstr ""
-+
-+#: c-family/c.opt:674
-+msgid "Warn about non-virtual destructors."
-+msgstr ""
-+
-+#: c-family/c.opt:678
-+msgid ""
-+"Warn about NULL being passed to argument slots marked as requiring non-NULL."
-+msgstr ""
-+
-+#: c-family/c.opt:694
-+msgid ""
-+"-Wnormalized=<none|id|nfc|nfkc>\tWarn about non-normalised Unicode strings."
-+msgstr ""
-+
-+#: c-family/c.opt:701
-+msgid "argument %qs to %<-Wnormalized%> not recognized"
-+msgstr ""
-+
-+#: c-family/c.opt:717
-+msgid "Warn if a C-style cast is used in a program."
-+msgstr ""
-+
-+#: c-family/c.opt:721
-+msgid "Warn for obsolescent usage in a declaration."
-+msgstr ""
-+
-+#: c-family/c.opt:725
-+msgid "Warn if an old-style parameter definition is used."
-+msgstr ""
-+
-+#: c-family/c.opt:729
-+msgid "Warn if a simd directive is overridden by the vectorizer cost model."
-+msgstr ""
-+
-+#: c-family/c.opt:733
-+msgid ""
-+"Warn if a string is longer than the maximum portable length specified by the "
-+"standard."
-+msgstr ""
-+
-+#: c-family/c.opt:737
-+msgid "Warn about overloaded virtual function names."
-+msgstr ""
-+
-+#: c-family/c.opt:741
-+msgid "Warn about overriding initializers without side effects."
-+msgstr ""
-+
-+#: c-family/c.opt:745
-+msgid "Warn about overriding initializers with side effects."
-+msgstr ""
-+
-+#: c-family/c.opt:749
-+msgid "Warn about packed bit-fields whose offset changed in GCC 4.4."
-+msgstr ""
-+
-+#: c-family/c.opt:753
-+msgid "Warn about possibly missing parentheses."
-+msgstr ""
-+
-+#: c-family/c.opt:761
-+msgid "Warn when converting the type of pointers to member functions."
-+msgstr ""
-+
-+#: c-family/c.opt:765
-+msgid "Warn about function pointer arithmetic."
-+msgstr ""
-+
-+#: c-family/c.opt:769
-+msgid "Warn when a pointer differs in signedness in an assignment."
-+msgstr ""
-+
-+#: c-family/c.opt:773
-+msgid "Warn when a pointer is cast to an integer of a different size."
-+msgstr ""
-+
-+#: c-family/c.opt:777
-+msgid "Warn about misuses of pragmas."
-+msgstr ""
-+
-+#: c-family/c.opt:781
-+msgid ""
-+"Warn if a property for an Objective-C object has no assign semantics "
-+"specified."
-+msgstr ""
-+
-+#: c-family/c.opt:785
-+msgid "Warn if inherited methods are unimplemented."
-+msgstr ""
-+
-+#: c-family/c.opt:789 c-family/c.opt:793
-+msgid "Warn for placement new expressions with undefined behavior."
-+msgstr ""
-+
-+#: c-family/c.opt:797
-+msgid "Warn about multiple declarations of the same object."
-+msgstr ""
-+
-+#: c-family/c.opt:801
-+msgid "Warn when the compiler reorders code."
-+msgstr ""
-+
-+#: c-family/c.opt:805
-+msgid ""
-+"Warn whenever a function's return type defaults to \"int\" (C), or about "
-+"inconsistent return types (C++)."
-+msgstr ""
-+
-+#: c-family/c.opt:809
-+msgid "Warn on suspicious constructs involving reverse scalar storage order."
-+msgstr ""
-+
-+#: c-family/c.opt:813
-+msgid "Warn if a selector has multiple methods."
-+msgstr ""
-+
-+#: c-family/c.opt:817
-+msgid "Warn about possible violations of sequence point rules."
-+msgstr ""
-+
-+#: c-family/c.opt:821
-+msgid "Warn if a local declaration hides an instance variable."
-+msgstr ""
-+
-+#: c-family/c.opt:825 c-family/c.opt:829
-+msgid "Warn if left shift of a signed value overflows."
-+msgstr ""
-+
-+#: c-family/c.opt:833
-+msgid "Warn if shift count is negative."
-+msgstr ""
-+
-+#: c-family/c.opt:837
-+msgid "Warn if shift count >= width of type."
-+msgstr ""
-+
-+#: c-family/c.opt:841
-+msgid "Warn if left shifting a negative value."
-+msgstr ""
-+
-+#: c-family/c.opt:845
-+msgid "Warn about signed-unsigned comparisons."
-+msgstr ""
-+
-+#: c-family/c.opt:853
-+msgid ""
-+"Warn for implicit type conversions between signed and unsigned integers."
-+msgstr ""
-+
-+#: c-family/c.opt:857
-+msgid "Warn when overload promotes from unsigned to signed."
-+msgstr ""
-+
-+#: c-family/c.opt:861
-+msgid "Warn about uncasted NULL used as sentinel."
-+msgstr ""
-+
-+#: c-family/c.opt:865
-+msgid "Warn about unprototyped function declarations."
-+msgstr ""
-+
-+#: c-family/c.opt:877
-+msgid "Warn if type signatures of candidate methods do not match exactly."
-+msgstr ""
-+
-+#: c-family/c.opt:881
-+msgid ""
-+"Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions "
-+"are used."
-+msgstr ""
-+
-+#: c-family/c.opt:885
-+msgid "Deprecated. This switch has no effect."
-+msgstr ""
-+
-+#: c-family/c.opt:893
-+msgid "Warn if a comparison always evaluates to true or false."
-+msgstr ""
-+
-+#: c-family/c.opt:897
-+msgid "Warn if a throw expression will always result in a call to terminate()."
-+msgstr ""
-+
-+#: c-family/c.opt:901
-+msgid "Warn about features not present in traditional C."
-+msgstr ""
-+
-+#: c-family/c.opt:905
-+msgid ""
-+"Warn of prototypes causing type conversions different from what would happen "
-+"in the absence of prototype."
-+msgstr ""
-+
-+#: c-family/c.opt:909
-+msgid ""
-+"Warn if trigraphs are encountered that might affect the meaning of the "
-+"program."
-+msgstr ""
-+
-+#: c-family/c.opt:913
-+msgid "Warn about @selector()s without previously declared methods."
-+msgstr ""
-+
-+#: c-family/c.opt:917
-+msgid "Warn if an undefined macro is used in an #if directive."
-+msgstr ""
-+
-+#: c-family/c.opt:929
-+msgid "Warn about unrecognized pragmas."
-+msgstr ""
-+
-+#: c-family/c.opt:933
-+msgid "Warn about unsuffixed float constants."
-+msgstr ""
-+
-+#: c-family/c.opt:941
-+msgid "Warn when typedefs locally defined in a function are not used."
-+msgstr ""
-+
-+#: c-family/c.opt:945
-+msgid "Warn about macros defined in the main file that are not used."
-+msgstr ""
-+
-+#: c-family/c.opt:949
-+msgid ""
-+"Warn if a caller of a function, marked with attribute warn_unused_result, "
-+"does not use its return value."
-+msgstr ""
-+
-+#: c-family/c.opt:957 c-family/c.opt:961
-+msgid "Warn when a const variable is unused."
-+msgstr ""
-+
-+#: c-family/c.opt:965
-+msgid "Warn about using variadic macros."
-+msgstr ""
-+
-+#: c-family/c.opt:969
-+msgid ""
-+"Warn about questionable usage of the macros used to retrieve variable "
-+"arguments."
-+msgstr ""
-+
-+#: c-family/c.opt:973
-+msgid "Warn if a variable length array is used."
-+msgstr ""
-+
-+#: c-family/c.opt:977
-+msgid "Warn when a register variable is declared volatile."
-+msgstr ""
-+
-+#: c-family/c.opt:981
-+msgid "Warn on direct virtual inheritance."
-+msgstr ""
-+
-+#: c-family/c.opt:985
-+msgid "Warn if a virtual base has a non-trivial move assignment operator."
-+msgstr ""
-+
-+#: c-family/c.opt:989
-+msgid ""
-+"In C++, nonzero means warn about deprecated conversion from string literals "
-+"to 'char *'. In C, similar warning, except that the conversion is of course "
-+"not deprecated by the ISO C standard."
-+msgstr ""
-+
-+#: c-family/c.opt:993
-+msgid "Warn when a literal '0' is used as null pointer."
-+msgstr ""
-+
-+#: c-family/c.opt:997
-+msgid "Warn about useless casts."
-+msgstr ""
-+
-+#: c-family/c.opt:1001
-+msgid ""
-+"Warn if a class type has a base or a field whose type uses the anonymous "
-+"namespace or depends on a type with no linkage."
-+msgstr ""
-+
-+#: c-family/c.opt:1005
-+msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)."
-+msgstr ""
-+
-+#: c-family/c.opt:1013
-+msgid ""
-+"The version of the C++ ABI used for -Wabi warnings and link compatibility "
-+"aliases."
-+msgstr ""
-+
-+#: c-family/c.opt:1017
-+msgid "Enforce class member access control semantics."
-+msgstr ""
-+
-+#: c-family/c.opt:1021
-+msgid "-fada-spec-parent=unit Dump Ada specs as child units of given parent."
-+msgstr ""
-+
-+#: c-family/c.opt:1028
-+msgid "Allow variadic functions without named parameter."
-+msgstr ""
-+
-+#: c-family/c.opt:1032 c-family/c.opt:1261 c-family/c.opt:1549
-+#: c-family/c.opt:1553 c-family/c.opt:1569
-+msgid "No longer supported."
-+msgstr ""
-+
-+#: c-family/c.opt:1036
-+msgid "Recognize the \"asm\" keyword."
-+msgstr ""
-+
-+#: c-family/c.opt:1044
-+msgid "Recognize built-in functions."
-+msgstr ""
-+
-+#: c-family/c.opt:1051
-+msgid "Where shorter, use canonicalized paths to systems headers."
-+msgstr ""
-+
-+#: c-family/c.opt:1055
-+msgid ""
-+"Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to "
-+"control instrumentation. Currently available for C, C++ and ObjC."
-+msgstr ""
-+
-+#: c-family/c.opt:1060
-+msgid "Generate pointer bounds checks for variables with incomplete type."
-+msgstr ""
-+
-+#: c-family/c.opt:1064
-+msgid ""
-+"Use zero bounds for all incoming arguments in 'main' function. It helps "
-+"when instrumented binaries are used with legacy libs."
-+msgstr ""
-+
-+#: c-family/c.opt:1069
-+msgid ""
-+"Forces Pointer Bounds Checker to use narrowed bounds for address of the "
-+"first field in the structure. By default pointer to the first field has the "
-+"same bounds as pointer to the whole structure."
-+msgstr ""
-+
-+#: c-family/c.opt:1075
-+msgid ""
-+"Control how Pointer Bounds Checker handle pointers to object fields. When "
-+"narrowing is on, field bounds are used. Otherwise full object bounds are "
-+"used."
-+msgstr ""
-+
-+#: c-family/c.opt:1080
-+msgid ""
-+"Forces Pointer Bounds Checker to use bounds of the innermost arrays in case "
-+"of nested static arryas access. By default outermost array is used."
-+msgstr ""
-+
-+#: c-family/c.opt:1085
-+msgid ""
-+"Allow Pointer Bounds Checker optimizations. By default allowed on "
-+"optimization levels >0."
-+msgstr ""
-+
-+#: c-family/c.opt:1090
-+msgid ""
-+"Allow to use *_nobnd versions of string functions by Pointer Bounds Checker."
-+msgstr ""
-+
-+#: c-family/c.opt:1094
-+msgid ""
-+"Allow to use *_nochk versions of string functions by Pointer Bounds Checker."
-+msgstr ""
-+
-+#: c-family/c.opt:1098
-+msgid ""
-+"Use statically initialized variable for vars bounds instead of generating "
-+"them each time it is required."
-+msgstr ""
-+
-+#: c-family/c.opt:1103
-+msgid ""
-+"Use statically initialized variable for constant bounds instead of "
-+"generating them each time it is required."
-+msgstr ""
-+
-+#: c-family/c.opt:1108
-+msgid ""
-+"With this option zero size obtained dynamically for objects with incomplete "
-+"type will be treated as infinite."
-+msgstr ""
-+
-+#: c-family/c.opt:1113
-+msgid "Generate checks for all read accesses to memory."
-+msgstr ""
-+
-+#: c-family/c.opt:1117
-+msgid "Generate checks for all write accesses to memory."
-+msgstr ""
-+
-+#: c-family/c.opt:1121
-+msgid "Generate bounds stores for pointer writes."
-+msgstr ""
-+
-+#: c-family/c.opt:1125
-+msgid "Generate bounds passing for calls."
-+msgstr ""
-+
-+#: c-family/c.opt:1129
-+msgid "Instrument only functions marked with bnd_instrument attribute."
-+msgstr ""
-+
-+#: c-family/c.opt:1133
-+msgid "Transform instrumented builtin calls into calls to wrappers."
-+msgstr ""
-+
-+#: c-family/c.opt:1143
-+msgid "Enable Cilk Plus."
-+msgstr ""
-+
-+#: c-family/c.opt:1147
-+msgid "Enable support for C++ concepts."
-+msgstr ""
-+
-+#: c-family/c.opt:1151
-+msgid "Allow the arguments of the '?' operator to have different types."
-+msgstr ""
-+
-+#: c-family/c.opt:1158
-+#, c-format
-+msgid "no class name specified with %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:1159
-+msgid "-fconst-string-class=<name>\tUse class <name> for constant strings."
-+msgstr ""
-+
-+#: c-family/c.opt:1163
-+msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth."
-+msgstr ""
-+
-+#: c-family/c.opt:1167
-+msgid "Emit debug annotations during preprocessing."
-+msgstr ""
-+
-+#: c-family/c.opt:1171
-+msgid ""
-+"-fdeduce-init-list\tenable deduction of std::initializer_list for a template "
-+"type parameter from a brace-enclosed initializer-list."
-+msgstr ""
-+
-+#: c-family/c.opt:1175
-+msgid "Factor complex constructors and destructors to favor space over speed."
-+msgstr ""
-+
-+#: c-family/c.opt:1183
-+msgid "Preprocess directives only."
-+msgstr ""
-+
-+#: c-family/c.opt:1187
-+msgid "Permit '$' as an identifier character."
-+msgstr ""
-+
-+#: c-family/c.opt:1191
-+msgid "Write all declarations as Ada code transitively."
-+msgstr ""
-+
-+#: c-family/c.opt:1195
-+msgid "Write all declarations as Ada code for the given file only."
-+msgstr ""
-+
-+#: c-family/c.opt:1202
-+msgid "Generate code to check exception specifications."
-+msgstr ""
-+
-+#: c-family/c.opt:1209
-+msgid ""
-+"-fexec-charset=<cset>\tConvert all strings and character constants to "
-+"character set <cset>."
-+msgstr ""
-+
-+#: c-family/c.opt:1213
-+msgid "Permit universal character names (\\u and \\U) in identifiers."
-+msgstr ""
-+
-+#: c-family/c.opt:1217
-+msgid ""
-+"-finput-charset=<cset>\tSpecify the default character set for source files."
-+msgstr ""
-+
-+#: c-family/c.opt:1221
-+msgid ""
-+"Support dynamic initialization of thread-local variables in a different "
-+"translation unit."
-+msgstr ""
-+
-+#: c-family/c.opt:1228
-+msgid "Scope of for-init-statement variables is local to the loop."
-+msgstr ""
-+
-+#: c-family/c.opt:1232
-+msgid "Do not assume that standard C libraries and \"main\" exist."
-+msgstr ""
-+
-+#: c-family/c.opt:1236
-+msgid "Recognize GNU-defined keywords."
-+msgstr ""
-+
-+#: c-family/c.opt:1240
-+msgid "Generate code for GNU runtime environment."
-+msgstr ""
-+
-+#: c-family/c.opt:1244
-+msgid "Use traditional GNU semantics for inline functions."
-+msgstr ""
-+
-+#: c-family/c.opt:1250
-+msgid ""
-+"-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
-+msgstr ""
-+
-+#: c-family/c.opt:1257
-+msgid "Assume normal C execution environment."
-+msgstr ""
-+
-+#: c-family/c.opt:1265
-+msgid "Export functions even if they can be inlined."
-+msgstr ""
-+
-+#: c-family/c.opt:1269
-+msgid "Emit implicit instantiations of inline templates."
-+msgstr ""
-+
-+#: c-family/c.opt:1273
-+msgid "Emit implicit instantiations of templates."
-+msgstr ""
-+
-+#: c-family/c.opt:1277
-+msgid "Inject friend functions into enclosing namespace."
-+msgstr ""
-+
-+#: c-family/c.opt:1281
-+msgid "Don't emit dllexported inline functions unless needed."
-+msgstr ""
-+
-+#: c-family/c.opt:1288
-+msgid ""
-+"Allow implicit conversions between vectors with differing numbers of "
-+"subparts and/or differing element types."
-+msgstr ""
-+
-+#: c-family/c.opt:1292
-+msgid "Don't warn about uses of Microsoft extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1311
-+msgid "Generate code for NeXT (Apple Mac OS X) runtime environment."
-+msgstr ""
-+
-+#: c-family/c.opt:1315
-+msgid "Assume that receivers of Objective-C messages may be nil."
-+msgstr ""
-+
-+#: c-family/c.opt:1319
-+msgid ""
-+"Allow access to instance variables as if they were local declarations within "
-+"instance method implementations."
-+msgstr ""
-+
-+#: c-family/c.opt:1323
-+msgid ""
-+"-fvisibility=[private|protected|public|package]\tSet the default symbol "
-+"visibility."
-+msgstr ""
-+
-+#: c-family/c.opt:1326
-+#, c-format
-+msgid "unrecognized ivar visibility value %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:1348
-+msgid ""
-+"Treat a throw() exception specification as noexcept to improve code size."
-+msgstr ""
-+
-+#: c-family/c.opt:1352
-+msgid ""
-+"Specify which ABI to use for Objective-C family code and meta-data "
-+"generation."
-+msgstr ""
-+
-+#: c-family/c.opt:1358
-+msgid ""
-+"Generate special Objective-C methods to initialize/destroy non-POD C++ "
-+"ivars, if needed."
-+msgstr ""
-+
-+#: c-family/c.opt:1362
-+msgid "Allow fast jumps to the message dispatcher."
-+msgstr ""
-+
-+#: c-family/c.opt:1368
-+msgid "Enable Objective-C exception and synchronization syntax."
-+msgstr ""
-+
-+#: c-family/c.opt:1372
-+msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs."
-+msgstr ""
-+
-+#: c-family/c.opt:1376
-+msgid ""
-+"Enable inline checks for nil receivers with the NeXT runtime and ABI version "
-+"2."
-+msgstr ""
-+
-+#: c-family/c.opt:1381
-+msgid "Enable Objective-C setjmp exception handling runtime."
-+msgstr ""
-+
-+#: c-family/c.opt:1385
-+msgid "Conform to the Objective-C 1.0 language as implemented in GCC 4.0."
-+msgstr ""
-+
-+#: c-family/c.opt:1389
-+msgid "Enable OpenACC."
-+msgstr ""
-+
-+#: c-family/c.opt:1393
-+msgid "Specify default OpenACC compute dimensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1397
-+msgid "Enable OpenMP (implies -frecursive in Fortran)."
-+msgstr ""
-+
-+#: c-family/c.opt:1401
-+msgid "Enable OpenMP's SIMD directives."
-+msgstr ""
-+
-+#: c-family/c.opt:1405
-+msgid "Recognize C++ keywords like \"compl\" and \"xor\"."
-+msgstr ""
-+
-+#: c-family/c.opt:1416
-+msgid "Look for and use PCH files even when preprocessing."
-+msgstr ""
-+
-+#: c-family/c.opt:1420
-+msgid "Downgrade conformance errors to warnings."
-+msgstr ""
-+
-+#: c-family/c.opt:1424
-+msgid "Enable Plan 9 language extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1428
-+msgid "Treat the input file as already preprocessed."
-+msgstr ""
-+
-+#: c-family/c.opt:1436
-+msgid ""
-+"-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro "
-+"expansion and display them in error messages."
-+msgstr ""
-+
-+#: c-family/c.opt:1440
-+msgid ""
-+"-fno-pretty-templates Do not pretty-print template specializations as the "
-+"template signature followed by the arguments."
-+msgstr ""
-+
-+#: c-family/c.opt:1444
-+msgid ""
-+"Used in Fix-and-Continue mode to indicate that object files may be swapped "
-+"in at runtime."
-+msgstr ""
-+
-+#: c-family/c.opt:1448
-+msgid "Enable automatic template instantiation."
-+msgstr ""
+- return MIN (64, tree_to_shwi (TYPE_SIZE (type)));
++ if (tree_fits_uhwi_p (size)
++ && tree_to_uhwi (size) < BIGGEST_ALIGNMENT)
++ return tree_to_uhwi (size);
+
-+#: c-family/c.opt:1452
-+msgid "Generate run time type descriptor information."
-+msgstr ""
-+
-+#: c-family/c.opt:1460
-+msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"."
-+msgstr ""
-+
-+#: c-family/c.opt:1464
-+msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed."
-+msgstr ""
-+
-+#: c-family/c.opt:1472
-+msgid "Enable C++14 sized deallocation support."
-+msgstr ""
-+
-+#: c-family/c.opt:1479
-+msgid ""
-+"-fsso-struct=[big-endian|little-endian]\tSet the default scalar storage "
-+"order."
-+msgstr ""
-+
-+#: c-family/c.opt:1482
-+#, c-format
-+msgid "unrecognized scalar storage order value %qs"
-+msgstr ""
-+
-+#: c-family/c.opt:1492
-+msgid "Display statistics accumulated during compilation."
-+msgstr ""
-+
-+#: c-family/c.opt:1496
-+msgid ""
-+"Assume that values of enumeration type are always within the minimum range "
-+"of that type."
-+msgstr ""
-+
-+#: c-family/c.opt:1503
-+msgid "-ftabstop=<number>\tDistance between tab stops for column reporting."
-+msgstr ""
-+
-+#: c-family/c.opt:1507
-+msgid ""
-+"Set the maximum number of template instantiation notes for a single warning "
-+"or error."
-+msgstr ""
-+
-+#: c-family/c.opt:1514
-+msgid ""
-+"-ftemplate-depth=<number>\tSpecify maximum template instantiation depth."
-+msgstr ""
-+
-+#: c-family/c.opt:1521
-+msgid ""
-+"-fno-threadsafe-statics\tDo not generate thread-safe code for initializing "
-+"local statics."
-+msgstr ""
-+
-+#: c-family/c.opt:1525
-+msgid ""
-+"When \"signed\" or \"unsigned\" is not given make the bitfield unsigned."
-+msgstr ""
-+
-+#: c-family/c.opt:1529
-+msgid "Make \"char\" unsigned by default."
-+msgstr ""
-+
-+#: c-family/c.opt:1533
-+msgid "Use __cxa_atexit to register destructors."
-+msgstr ""
-+
-+#: c-family/c.opt:1537
-+msgid "Use __cxa_get_exception_ptr in exception handling."
-+msgstr ""
-+
-+#: c-family/c.opt:1541
-+msgid "Marks all inlined functions and methods as having hidden visibility."
-+msgstr ""
-+
-+#: c-family/c.opt:1545
-+msgid "Changes visibility to match Microsoft Visual Studio by default."
-+msgstr ""
-+
-+#: c-family/c.opt:1557
-+msgid "Emit common-like symbols as weak symbols."
-+msgstr ""
-+
-+#: c-family/c.opt:1561
-+msgid ""
-+"-fwide-exec-charset=<cset>\tConvert all wide strings and character constants "
-+"to character set <cset>."
-+msgstr ""
-+
-+#: c-family/c.opt:1565
-+msgid "Generate a #line directive pointing at the current working directory."
-+msgstr ""
-+
-+#: c-family/c.opt:1573
-+msgid ""
-+"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode."
-+msgstr ""
-+
-+#: c-family/c.opt:1577
-+msgid "Dump declarations to a .decl file."
-+msgstr ""
-+
-+#: c-family/c.opt:1581
-+msgid ""
-+"-femit-struct-debug-baseonly\tAggressive reduced debug info for structs."
-+msgstr ""
-+
-+#: c-family/c.opt:1585
-+msgid ""
-+"-femit-struct-debug-reduced\tConservative reduced debug info for structs."
-+msgstr ""
-+
-+#: c-family/c.opt:1589
-+msgid ""
-+"-femit-struct-debug-detailed=<spec-list>\tDetailed reduced debug info for "
-+"structs."
-+msgstr ""
-+
-+#: c-family/c.opt:1593
-+msgid ""
-+"Interpret imaginary, fixed-point, or other gnu number suffix as the "
-+"corresponding number literal rather than a user-defined number literal."
-+msgstr ""
-+
-+#: c-family/c.opt:1598
-+msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path."
-+msgstr ""
-+
-+#: c-family/c.opt:1602
-+msgid "-imacros <file>\tAccept definition of macros in <file>."
-+msgstr ""
-+
-+#: c-family/c.opt:1606
-+msgid "-imultilib <dir>\tSet <dir> to be the multilib include subdirectory."
-+msgstr ""
-+
-+#: c-family/c.opt:1610
-+msgid "-include <file>\tInclude the contents of <file> before other files."
-+msgstr ""
-+
-+#: c-family/c.opt:1614
-+msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options."
-+msgstr ""
-+
-+#: c-family/c.opt:1618
-+msgid "-isysroot <dir>\tSet <dir> to be the system root directory."
-+msgstr ""
-+
-+#: c-family/c.opt:1622
-+msgid "-isystem <dir>\tAdd <dir> to the start of the system include path."
-+msgstr ""
-+
-+#: c-family/c.opt:1626
-+msgid "-iquote <dir>\tAdd <dir> to the end of the quote include path."
-+msgstr ""
-+
-+#: c-family/c.opt:1630
-+msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path."
-+msgstr ""
-+
-+#: c-family/c.opt:1634
-+msgid ""
-+"-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path."
-+msgstr ""
-+
-+#: c-family/c.opt:1644
-+msgid ""
-+"Do not search standard system include directories (those specified with -"
-+"isystem will still be used)."
-+msgstr ""
-+
-+#: c-family/c.opt:1648
-+msgid "Do not search standard system include directories for C++."
-+msgstr ""
-+
-+#: c-family/c.opt:1660
-+msgid "Generate C header of platform-specific features."
-+msgstr ""
-+
-+#: c-family/c.opt:1664
-+msgid "Remap file names when including files."
-+msgstr ""
-+
-+#: c-family/c.opt:1668 c-family/c.opt:1672
-+msgid ""
-+"Conform to the ISO 1998 C++ standard revised by the 2003 technical "
-+"corrigendum."
-+msgstr ""
-+
-+#: c-family/c.opt:1676
-+msgid "Conform to the ISO 2011 C++ standard."
-+msgstr ""
-+
-+#: c-family/c.opt:1680
-+msgid "Deprecated in favor of -std=c++11."
-+msgstr ""
-+
-+#: c-family/c.opt:1684
-+msgid "Deprecated in favor of -std=c++14."
-+msgstr ""
-+
-+#: c-family/c.opt:1688
-+msgid "Conform to the ISO 2014 C++ standard."
-+msgstr ""
-+
-+#: c-family/c.opt:1692
-+msgid ""
-+"Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete "
-+"support)."
-+msgstr ""
-+
-+#: c-family/c.opt:1699 c-family/c.opt:1796
-+msgid "Conform to the ISO 2011 C standard."
-+msgstr ""
-+
-+#: c-family/c.opt:1703
-+msgid "Deprecated in favor of -std=c11."
-+msgstr ""
-+
-+#: c-family/c.opt:1707 c-family/c.opt:1711 c-family/c.opt:1780
-+msgid "Conform to the ISO 1990 C standard."
-+msgstr ""
-+
-+#: c-family/c.opt:1715 c-family/c.opt:1788
-+msgid "Conform to the ISO 1999 C standard."
-+msgstr ""
-+
-+#: c-family/c.opt:1719
-+msgid "Deprecated in favor of -std=c99."
-+msgstr ""
-+
-+#: c-family/c.opt:1723 c-family/c.opt:1728
-+msgid ""
-+"Conform to the ISO 1998 C++ standard revised by the 2003 technical "
-+"corrigendum with GNU extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1733
-+msgid "Conform to the ISO 2011 C++ standard with GNU extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1737
-+msgid "Deprecated in favor of -std=gnu++11."
-+msgstr ""
-+
-+#: c-family/c.opt:1741
-+msgid "Deprecated in favor of -std=gnu++14."
-+msgstr ""
-+
-+#: c-family/c.opt:1745
-+msgid "Conform to the ISO 2014 C++ standard with GNU extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1749
-+msgid ""
-+"Conform to the ISO 201z(7?) C++ draft standard with GNU extensions "
-+"(experimental and incomplete support)."
-+msgstr ""
-+
-+#: c-family/c.opt:1756
-+msgid "Conform to the ISO 2011 C standard with GNU extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1760
-+msgid "Deprecated in favor of -std=gnu11."
-+msgstr ""
-+
-+#: c-family/c.opt:1764 c-family/c.opt:1768
-+msgid "Conform to the ISO 1990 C standard with GNU extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1772
-+msgid "Conform to the ISO 1999 C standard with GNU extensions."
-+msgstr ""
-+
-+#: c-family/c.opt:1776
-+msgid "Deprecated in favor of -std=gnu99."
-+msgstr ""
-+
-+#: c-family/c.opt:1784
-+msgid "Conform to the ISO 1990 C standard as amended in 1994."
-+msgstr ""
-+
-+#: c-family/c.opt:1792
-+msgid "Deprecated in favor of -std=iso9899:1999."
-+msgstr ""
-+
-+#: c-family/c.opt:1803
-+msgid "Enable traditional preprocessing."
-+msgstr ""
-+
-+#: c-family/c.opt:1807
-+msgid "-trigraphs\tSupport ISO C trigraphs."
-+msgstr ""
-+
-+#: c-family/c.opt:1811
-+msgid "Do not predefine system-specific and GCC-specific macros."
-+msgstr ""
-+
-+#: fortran/lang.opt:146
-+msgid "-J<directory>\tPut MODULE files in 'directory'."
-+msgstr ""
-+
-+#: fortran/lang.opt:198
-+msgid "Warn about possible aliasing of dummy arguments."
-+msgstr ""
-+
-+#: fortran/lang.opt:202
-+msgid "Warn about alignment of COMMON blocks."
-+msgstr ""
-+
-+#: fortran/lang.opt:206
-+msgid "Warn about missing ampersand in continued character constants."
-+msgstr ""
-+
-+#: fortran/lang.opt:210
-+msgid "Warn about creation of array temporaries."
-+msgstr ""
-+
-+#: fortran/lang.opt:214
-+msgid "Warn if the type of a variable might be not interoperable with C."
-+msgstr ""
-+
-+#: fortran/lang.opt:222
-+msgid "Warn about truncated character expressions."
-+msgstr ""
-+
-+#: fortran/lang.opt:226
-+msgid "Warn about equality comparisons involving REAL or COMPLEX expressions."
-+msgstr ""
-+
-+#: fortran/lang.opt:234
-+msgid "Warn about most implicit conversions."
-+msgstr ""
-+
-+#: fortran/lang.opt:242
-+msgid "Warn about function call elimination."
-+msgstr ""
-+
-+#: fortran/lang.opt:246
-+msgid "Warn about calls with implicit interface."
-+msgstr ""
-+
-+#: fortran/lang.opt:250
-+msgid "Warn about called procedures not explicitly declared."
-+msgstr ""
-+
-+#: fortran/lang.opt:254
-+msgid "Warn about constant integer divisions with truncated results."
-+msgstr ""
-+
-+#: fortran/lang.opt:258
-+msgid "Warn about truncated source lines."
-+msgstr ""
-+
-+#: fortran/lang.opt:262
-+msgid "Warn on intrinsics not part of the selected standard."
-+msgstr ""
-+
-+#: fortran/lang.opt:274
-+msgid "Warn about USE statements that have no ONLY qualifier."
-+msgstr ""
-+
-+#: fortran/lang.opt:286
-+msgid "Warn about real-literal-constants with 'q' exponent-letter."
-+msgstr ""
-+
-+#: fortran/lang.opt:290
-+msgid "Warn when a left-hand-side array variable is reallocated."
-+msgstr ""
-+
-+#: fortran/lang.opt:294
-+msgid "Warn when a left-hand-side variable is reallocated."
-+msgstr ""
-+
-+#: fortran/lang.opt:298
-+msgid "Warn if the pointer in a pointer assignment might outlive its target."
-+msgstr ""
-+
-+#: fortran/lang.opt:306
-+msgid "Warn about \"suspicious\" constructs."
-+msgstr ""
-+
-+#: fortran/lang.opt:310
-+msgid "Permit nonconforming uses of the tab character."
-+msgstr ""
-+
-+#: fortran/lang.opt:314
-+msgid "Warn about underflow of numerical constant expressions."
-+msgstr ""
-+
-+#: fortran/lang.opt:322
-+msgid "Warn if a user-procedure has the same name as an intrinsic."
-+msgstr ""
-+
-+#: fortran/lang.opt:330
-+msgid "Warn about unused dummy arguments."
-+msgstr ""
-+
-+#: fortran/lang.opt:334
-+msgid "Warn about zero-trip DO loops."
-+msgstr ""
-+
-+#: fortran/lang.opt:338
-+msgid "Enable preprocessing."
-+msgstr ""
-+
-+#: fortran/lang.opt:346
-+msgid "Disable preprocessing."
-+msgstr ""
-+
-+#: fortran/lang.opt:354
-+msgid "Eliminate multiple function invokations also for impure functions."
-+msgstr ""
-+
-+#: fortran/lang.opt:358
-+msgid "Enable alignment of COMMON blocks."
-+msgstr ""
-+
-+#: fortran/lang.opt:362
-+msgid ""
-+"All intrinsics procedures are available regardless of selected standard."
-+msgstr ""
-+
-+#: fortran/lang.opt:370
-+msgid ""
-+"Do not treat local variables and COMMON blocks as if they were named in SAVE "
-+"statements."
-+msgstr ""
-+
-+#: fortran/lang.opt:374
-+msgid "Specify that backslash in string introduces an escape character."
-+msgstr ""
-+
-+#: fortran/lang.opt:378
-+msgid "Produce a backtrace when a runtime error is encountered."
-+msgstr ""
-+
-+#: fortran/lang.opt:382
-+msgid ""
-+"-fblas-matmul-limit=<n>\tSize of the smallest matrix for which matmul will "
-+"use BLAS."
-+msgstr ""
-+
-+#: fortran/lang.opt:386
-+msgid ""
-+"Produce a warning at runtime if a array temporary has been created for a "
-+"procedure argument."
-+msgstr ""
-+
-+#: fortran/lang.opt:390
-+msgid ""
-+"-fconvert=<big-endian|little-endian|native|swap> The endianness used for "
-+"unformatted files."
-+msgstr ""
-+
-+#: fortran/lang.opt:393
-+#, c-format
-+msgid "Unrecognized option to endianess value: %qs"
-+msgstr ""
-+
-+#: fortran/lang.opt:409
-+msgid "Use the Cray Pointer extension."
-+msgstr ""
-+
-+#: fortran/lang.opt:413
-+msgid "Ignore 'D' in column one in fixed form."
-+msgstr ""
-+
-+#: fortran/lang.opt:417
-+msgid "Treat lines with 'D' in column one as comments."
-+msgstr ""
-+
-+#: fortran/lang.opt:421
-+msgid "Enable all DEC language extensions."
-+msgstr ""
-+
-+#: fortran/lang.opt:425
-+msgid "Enable support for DEC STRUCTURE/RECORD."
-+msgstr ""
-+
-+#: fortran/lang.opt:429
-+msgid "Set the default double precision kind to an 8 byte wide type."
-+msgstr ""
-+
-+#: fortran/lang.opt:433
-+msgid "Set the default integer kind to an 8 byte wide type."
-+msgstr ""
-+
-+#: fortran/lang.opt:437
-+msgid "Set the default real kind to an 8 byte wide type."
-+msgstr ""
-+
-+#: fortran/lang.opt:441
-+msgid "Allow dollar signs in entity names."
-+msgstr ""
-+
-+#: fortran/lang.opt:449
-+msgid "Display the code tree after parsing."
-+msgstr ""
-+
-+#: fortran/lang.opt:453
-+msgid "Display the code tree after front end optimization."
-+msgstr ""
-+
-+#: fortran/lang.opt:457
-+msgid "Display the code tree after parsing; deprecated option."
-+msgstr ""
-+
-+#: fortran/lang.opt:461
-+msgid ""
-+"Specify that an external BLAS library should be used for matmul calls on "
-+"large-size arrays."
-+msgstr ""
-+
-+#: fortran/lang.opt:465
-+msgid "Use f2c calling convention."
-+msgstr ""
-+
-+#: fortran/lang.opt:469
-+msgid "Assume that the source file is fixed form."
-+msgstr ""
-+
-+#: fortran/lang.opt:473
-+msgid "Interpret any INTEGER(4) as an INTEGER(8)."
-+msgstr ""
-+
-+#: fortran/lang.opt:477 fortran/lang.opt:481
-+msgid "Specify where to find the compiled intrinsic modules."
-+msgstr ""
-+
-+#: fortran/lang.opt:485
-+msgid "Allow arbitrary character line width in fixed mode."
-+msgstr ""
-+
-+#: fortran/lang.opt:489
-+msgid "-ffixed-line-length-<n>\tUse n as character line width in fixed mode."
-+msgstr ""
-+
-+#: fortran/lang.opt:493
-+msgid "-ffpe-trap=[...]\tStop on following floating point exceptions."
-+msgstr ""
-+
-+#: fortran/lang.opt:497
-+msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions."
-+msgstr ""
-+
-+#: fortran/lang.opt:501
-+msgid "Assume that the source file is free form."
-+msgstr ""
-+
-+#: fortran/lang.opt:505
-+msgid "Allow arbitrary character line width in free mode."
-+msgstr ""
-+
-+#: fortran/lang.opt:509
-+msgid "-ffree-line-length-<n>\tUse n as character line width in free mode."
-+msgstr ""
-+
-+#: fortran/lang.opt:513
-+msgid "Enable front end optimization."
-+msgstr ""
-+
-+#: fortran/lang.opt:517
-+msgid ""
-+"Specify that no implicit typing is allowed, unless overridden by explicit "
-+"IMPLICIT statements."
-+msgstr ""
-+
-+#: fortran/lang.opt:521
-+msgid ""
-+"-finit-character=<n>\tInitialize local character variables to ASCII value n."
-+msgstr ""
-+
-+#: fortran/lang.opt:525
-+msgid "-finit-integer=<n>\tInitialize local integer variables to n."
-+msgstr ""
-+
-+#: fortran/lang.opt:529
-+msgid "Initialize local variables to zero (from g77)."
-+msgstr ""
-+
-+#: fortran/lang.opt:533
-+msgid "-finit-logical=<true|false>\tInitialize local logical variables."
-+msgstr ""
-+
-+#: fortran/lang.opt:537
-+msgid "-finit-real=<zero|snan|nan|inf|-inf>\tInitialize local real variables."
-+msgstr ""
-+
-+#: fortran/lang.opt:540
-+#, c-format
-+msgid "Unrecognized option to floating-point init value: %qs"
-+msgstr ""
-+
-+#: fortran/lang.opt:559
-+msgid ""
-+"-finline-matmul-limit=<n>\tSpecify the size of the largest matrix for which "
-+"matmul will be inlined."
-+msgstr ""
-+
-+#: fortran/lang.opt:563
-+msgid ""
-+"-fmax-array-constructor=<n>\tMaximum number of objects in an array "
-+"constructor."
-+msgstr ""
-+
-+#: fortran/lang.opt:567
-+msgid "-fmax-identifier-length=<n>\tMaximum identifier length."
-+msgstr ""
-+
-+#: fortran/lang.opt:571
-+msgid "-fmax-subrecord-length=<n>\tMaximum length for subrecords."
-+msgstr ""
-+
-+#: fortran/lang.opt:575
-+msgid ""
-+"-fmax-stack-var-size=<n>\tSize in bytes of the largest array that will be "
-+"put on the stack."
-+msgstr ""
-+
-+#: fortran/lang.opt:579
-+msgid "Put all local arrays on stack."
-+msgstr ""
-+
-+#: fortran/lang.opt:583
-+msgid "Set default accessibility of module entities to PRIVATE."
-+msgstr ""
-+
-+#: fortran/lang.opt:603
-+msgid "Try to lay out derived types as compactly as possible."
-+msgstr ""
-+
-+#: fortran/lang.opt:611
-+msgid "Protect parentheses in expressions."
-+msgstr ""
-+
-+#: fortran/lang.opt:615
-+msgid "Enable range checking during compilation."
-+msgstr ""
-+
-+#: fortran/lang.opt:619
-+msgid "Interpret any REAL(4) as a REAL(8)."
-+msgstr ""
-+
-+#: fortran/lang.opt:623
-+msgid "Interpret any REAL(4) as a REAL(10)."
-+msgstr ""
-+
-+#: fortran/lang.opt:627
-+msgid "Interpret any REAL(4) as a REAL(16)."
-+msgstr ""
-+
-+#: fortran/lang.opt:631
-+msgid "Interpret any REAL(8) as a REAL(4)."
-+msgstr ""
-+
-+#: fortran/lang.opt:635
-+msgid "Interpret any REAL(8) as a REAL(10)."
-+msgstr ""
-+
-+#: fortran/lang.opt:639
-+msgid "Interpret any REAL(8) as a REAL(16)."
-+msgstr ""
-+
-+#: fortran/lang.opt:643
-+msgid "Reallocate the LHS in assignments."
-+msgstr ""
-+
-+#: fortran/lang.opt:647
-+msgid "Use a 4-byte record marker for unformatted files."
-+msgstr ""
-+
-+#: fortran/lang.opt:651
-+msgid "Use an 8-byte record marker for unformatted files."
-+msgstr ""
-+
-+#: fortran/lang.opt:655
-+msgid "Allocate local variables on the stack to allow indirect recursion."
-+msgstr ""
-+
-+#: fortran/lang.opt:659
-+msgid "Copy array sections into a contiguous block on procedure entry."
-+msgstr ""
-+
-+#: fortran/lang.opt:663
-+msgid ""
-+"-fcoarray=<none|single|lib>\tSpecify which coarray parallelization should be "
-+"used."
-+msgstr ""
-+
-+#: fortran/lang.opt:666
-+#, c-format
-+msgid "Unrecognized option: %qs"
-+msgstr ""
-+
-+#: fortran/lang.opt:679
-+msgid "-fcheck=[...]\tSpecify which runtime checks are to be performed."
-+msgstr ""
-+
-+#: fortran/lang.opt:683
-+msgid "Append a second underscore if the name already contains an underscore."
-+msgstr ""
-+
-+#: fortran/lang.opt:691
-+msgid "Apply negative sign to zero values."
-+msgstr ""
-+
-+#: fortran/lang.opt:695
-+msgid "Append underscores to externally visible names."
-+msgstr ""
-+
-+#: fortran/lang.opt:739
-+msgid "Statically link the GNU Fortran helper library (libgfortran)."
-+msgstr ""
-+
-+#: fortran/lang.opt:743
-+msgid "Conform to the ISO Fortran 2003 standard."
-+msgstr ""
-+
-+#: fortran/lang.opt:747
-+msgid "Conform to the ISO Fortran 2008 standard."
-+msgstr ""
-+
-+#: fortran/lang.opt:751
-+msgid "Conform to the ISO Fortran 2008 standard including TS 29113."
-+msgstr ""
-+
-+#: fortran/lang.opt:755
-+msgid "Conform to the ISO Fortran 95 standard."
-+msgstr ""
-+
-+#: fortran/lang.opt:759
-+msgid "Conform to nothing in particular."
-+msgstr ""
-+
-+#: fortran/lang.opt:763
-+msgid "Accept extensions to support legacy code."
-+msgstr ""
-+
-+#: lto/lang.opt:28
-+#, c-format
-+msgid "unknown linker output %qs"
-+msgstr ""
-+
-+#: lto/lang.opt:47
-+msgid "Set linker output type (used internally during LTO optimization)"
-+msgstr ""
-+
-+#: lto/lang.opt:52
-+msgid "Run the link-time optimizer in local transformation (LTRANS) mode."
-+msgstr ""
-+
-+#: lto/lang.opt:56
-+msgid "Specify a file to which a list of files output by LTRANS is written."
-+msgstr ""
-+
-+#: lto/lang.opt:60
-+msgid "Run the link-time optimizer in whole program analysis (WPA) mode."
-+msgstr ""
-+
-+#: lto/lang.opt:64
-+msgid ""
-+"Whole program analysis (WPA) mode with number of parallel jobs specified."
-+msgstr ""
-+
-+#: lto/lang.opt:68
-+msgid "The resolution file."
-+msgstr ""
-+
- #: go/gofrontend/expressions.cc:93 c-family/c-common.c:1524 cp/cvt.c:1175
- #: cp/cvt.c:1424
- #, gcc-internal-format
-@@ -15641,7 +15725,7 @@
- msgstr ""
-
- #: go/gofrontend/expressions.cc:4015 c/c-parser.c:12578 c/c-parser.c:12585
--#: cp/parser.c:31735 cp/parser.c:31742
-+#: cp/parser.c:31750 cp/parser.c:31757
- #, gcc-internal-format
- msgid "expected integer"
- msgstr ""
-@@ -16227,22 +16311,22 @@
- msgid "invalid memory model for %<__atomic_store%>"
- msgstr ""
-
--#: builtins.c:5448
-+#: builtins.c:5450
- #, gcc-internal-format
- msgid "non-constant argument 1 to __atomic_always_lock_free"
- msgstr ""
-
--#: builtins.c:5490
-+#: builtins.c:5492
- #, gcc-internal-format
- msgid "non-integer argument 1 to __atomic_is_lock_free"
- msgstr ""
-
--#: builtins.c:5554
-+#: builtins.c:5556
- #, gcc-internal-format
- msgid "__builtin_thread_pointer is not supported on this target"
- msgstr ""
-
--#: builtins.c:5574
-+#: builtins.c:5576
- #, gcc-internal-format
- msgid "__builtin_set_thread_pointer is not supported on this target"
- msgstr ""
-@@ -16249,7 +16333,7 @@
-
- #. All valid uses of __builtin_va_arg_pack () are removed during
- #. inlining.
--#: builtins.c:5831 expr.c:10565
-+#: builtins.c:5833 expr.c:10598
- #, gcc-internal-format
- msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
- msgstr ""
-@@ -16256,12 +16340,12 @@
-
- #. All valid uses of __builtin_va_arg_pack_len () are removed during
- #. inlining.
--#: builtins.c:5837
-+#: builtins.c:5839
- #, gcc-internal-format
- msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>"
- msgstr ""
-
--#: builtins.c:6056
-+#: builtins.c:6058
- #, gcc-internal-format
- msgid "%<__builtin_longjmp%> second argument must be 1"
- msgstr ""
-@@ -16268,42 +16352,42 @@
-
- #. Software implementation of Pointer Bounds Checker is NYI.
- #. Target support is required.
--#: builtins.c:6693
-+#: builtins.c:6695
- #, gcc-internal-format
- msgid "Your target platform does not support -fcheck-pointer-bounds"
- msgstr ""
-
--#: builtins.c:7014
-+#: builtins.c:7016
- #, gcc-internal-format
- msgid "target format does not support infinity"
- msgstr ""
-
--#: builtins.c:8916
-+#: builtins.c:8918
- #, gcc-internal-format
- msgid "%<va_start%> used in function with fixed args"
- msgstr ""
-
--#: builtins.c:8924
-+#: builtins.c:8926
- #, gcc-internal-format
- msgid "wrong number of arguments to function %<va_start%>"
- msgstr ""
-
--#: builtins.c:8939
-+#: builtins.c:8941
- #, gcc-internal-format
- msgid "%<__builtin_next_arg%> called without an argument"
- msgstr ""
-
--#: builtins.c:8944
-+#: builtins.c:8946
- #, gcc-internal-format
- msgid "wrong number of arguments to function %<__builtin_next_arg%>"
- msgstr ""
-
--#: builtins.c:8976
-+#: builtins.c:8978
- #, gcc-internal-format
- msgid "second parameter of %<va_start%> not last named argument"
- msgstr ""
-
--#: builtins.c:8989
-+#: builtins.c:8991
- #, gcc-internal-format
- msgid ""
- "undefined behavior when second parameter of %<va_start%> is declared with "
-@@ -16310,32 +16394,32 @@
- "%<register%> storage"
- msgstr ""
-
--#: builtins.c:9018
-+#: builtins.c:9020
- #, gcc-internal-format
- msgid "%Kfirst argument of %D must be a pointer, second integer constant"
- msgstr ""
-
--#: builtins.c:9031
-+#: builtins.c:9033
- #, gcc-internal-format
- msgid "%Klast argument of %D is not integer constant between 0 and 3"
- msgstr ""
-
--#: builtins.c:9076 builtins.c:9227 builtins.c:9284
-+#: builtins.c:9078 builtins.c:9229 builtins.c:9286
- #, gcc-internal-format
- msgid "%Kcall to %D will always overflow destination buffer"
- msgstr ""
-
--#: builtins.c:9217
-+#: builtins.c:9219
- #, gcc-internal-format
- msgid "%Kcall to %D might overflow destination buffer"
- msgstr ""
-
--#: builtins.c:9305
-+#: builtins.c:9307
- #, gcc-internal-format
- msgid "%Kattempt to free a non-heap object %qD"
- msgstr ""
-
--#: builtins.c:9308
-+#: builtins.c:9310
- #, gcc-internal-format
- msgid "%Kattempt to free a non-heap object"
- msgstr ""
-@@ -16919,62 +17003,62 @@
- msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
- msgstr ""
-
--#: cgraph.c:2739
-+#: cgraph.c:2742
- #, gcc-internal-format
- msgid "caller edge count is negative"
- msgstr ""
-
--#: cgraph.c:2744
-+#: cgraph.c:2747
- #, gcc-internal-format
- msgid "caller edge frequency is negative"
- msgstr ""
-
--#: cgraph.c:2749
-+#: cgraph.c:2752
- #, gcc-internal-format
- msgid "caller edge frequency is too large"
- msgstr ""
-
--#: cgraph.c:2833
-+#: cgraph.c:2836
- #, gcc-internal-format, gfc-internal-format
- msgid "aux field set for edge %s->%s"
- msgstr ""
-
--#: cgraph.c:2840
-+#: cgraph.c:2843
- #, gcc-internal-format
- msgid "execution count is negative"
- msgstr ""
-
--#: cgraph.c:2845
-+#: cgraph.c:2848
- #, gcc-internal-format
- msgid "inline clone in same comdat group list"
- msgstr ""
-
--#: cgraph.c:2850
-+#: cgraph.c:2853
- #, gcc-internal-format
- msgid "local symbols must be defined"
- msgstr ""
-
--#: cgraph.c:2855
-+#: cgraph.c:2858
- #, gcc-internal-format
- msgid "externally visible inline clone"
- msgstr ""
-
--#: cgraph.c:2860
-+#: cgraph.c:2863
- #, gcc-internal-format
- msgid "inline clone with address taken"
- msgstr ""
-
--#: cgraph.c:2865
-+#: cgraph.c:2868
- #, gcc-internal-format
- msgid "inline clone is forced to output"
- msgstr ""
-
--#: cgraph.c:2872
-+#: cgraph.c:2875
- #, gcc-internal-format, gfc-internal-format
- msgid "aux field set for indirect edge from %s"
- msgstr ""
-
--#: cgraph.c:2879
-+#: cgraph.c:2882
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "An indirect edge from %s is not marked as indirect or has associated "
-@@ -16981,157 +17065,157 @@
- "indirect_info, the corresponding statement is: "
- msgstr ""
-
--#: cgraph.c:2894
-+#: cgraph.c:2897
- #, gcc-internal-format, gfc-internal-format
- msgid "comdat-local function called by %s outside its comdat"
- msgstr ""
-
--#: cgraph.c:2904
-+#: cgraph.c:2907
- #, gcc-internal-format
- msgid "inlined_to pointer is wrong"
- msgstr ""
-
--#: cgraph.c:2909
-+#: cgraph.c:2912
- #, gcc-internal-format
- msgid "multiple inline callers"
- msgstr ""
-
--#: cgraph.c:2916
-+#: cgraph.c:2919
- #, gcc-internal-format
- msgid "inlined_to pointer set for noninline callers"
- msgstr ""
-
--#: cgraph.c:2935
-+#: cgraph.c:2938
- #, gcc-internal-format, gfc-internal-format
- msgid "caller edge frequency %i does not match BB frequency %i"
- msgstr ""
-
--#: cgraph.c:2953
-+#: cgraph.c:2956
- #, gcc-internal-format, gfc-internal-format
- msgid "indirect call frequency %i does not match BB frequency %i"
- msgstr ""
-
--#: cgraph.c:2962
-+#: cgraph.c:2965
- #, gcc-internal-format
- msgid "inlined_to pointer is set but no predecessors found"
- msgstr ""
-
--#: cgraph.c:2967
-+#: cgraph.c:2970
- #, gcc-internal-format
- msgid "inlined_to pointer refers to itself"
- msgstr ""
-
--#: cgraph.c:2979
-+#: cgraph.c:2982
- #, gcc-internal-format
- msgid "cgraph_node has wrong clone_of"
- msgstr ""
-
--#: cgraph.c:2991
-+#: cgraph.c:2994
- #, gcc-internal-format
- msgid "cgraph_node has wrong clone list"
- msgstr ""
-
--#: cgraph.c:2997
-+#: cgraph.c:3000
- #, gcc-internal-format
- msgid "cgraph_node is in clone list but it is not clone"
- msgstr ""
-
--#: cgraph.c:3002
-+#: cgraph.c:3005
- #, gcc-internal-format
- msgid "cgraph_node has wrong prev_clone pointer"
- msgstr ""
-
--#: cgraph.c:3007
-+#: cgraph.c:3010
- #, gcc-internal-format
- msgid "double linked list of clones corrupted"
- msgstr ""
-
--#: cgraph.c:3019
-+#: cgraph.c:3022
- #, gcc-internal-format
- msgid "Alias has call edges"
- msgstr ""
-
--#: cgraph.c:3027
-+#: cgraph.c:3030
- #, gcc-internal-format
- msgid "Alias has non-alias reference"
- msgstr ""
-
--#: cgraph.c:3032
-+#: cgraph.c:3035
- #, gcc-internal-format
- msgid "Alias has more than one alias reference"
- msgstr ""
-
--#: cgraph.c:3039
-+#: cgraph.c:3042
- #, gcc-internal-format
- msgid "Analyzed alias has no reference"
- msgstr ""
-
--#: cgraph.c:3048
-+#: cgraph.c:3051
- #, gcc-internal-format
- msgid "Instrumentation clone does not reference original node"
- msgstr ""
-
--#: cgraph.c:3055
-+#: cgraph.c:3058
- #, gcc-internal-format
- msgid "Not instrumented node has non-NULL original declaration"
- msgstr ""
-
--#: cgraph.c:3065
-+#: cgraph.c:3068
- #, gcc-internal-format
- msgid "Instrumented node has wrong original declaration"
- msgstr ""
-
--#: cgraph.c:3083
-+#: cgraph.c:3086
- #, gcc-internal-format
- msgid "Node has more than one chkp reference"
- msgstr ""
-
--#: cgraph.c:3088
-+#: cgraph.c:3091
- #, gcc-internal-format
- msgid "Wrong node is referenced with chkp reference"
- msgstr ""
-
--#: cgraph.c:3096
-+#: cgraph.c:3099
- #, gcc-internal-format
- msgid "Analyzed node has no reference to instrumented version"
- msgstr ""
-
--#: cgraph.c:3110
-+#: cgraph.c:3113
- #, gcc-internal-format
- msgid "Alias chain for instrumented node is broken"
- msgstr ""
-
--#: cgraph.c:3119
-+#: cgraph.c:3122
- #, gcc-internal-format
- msgid "No edge out of thunk node"
- msgstr ""
-
--#: cgraph.c:3124
-+#: cgraph.c:3127
- #, gcc-internal-format
- msgid "More than one edge out of thunk node"
- msgstr ""
-
--#: cgraph.c:3129
-+#: cgraph.c:3132
- #, gcc-internal-format
- msgid "Thunk is not supposed to have body"
- msgstr ""
-
--#: cgraph.c:3135
-+#: cgraph.c:3138
- #, gcc-internal-format
- msgid "Instrumentation thunk has wrong edge callee"
- msgstr ""
-
--#: cgraph.c:3171
-+#: cgraph.c:3174
- #, gcc-internal-format
- msgid "shared call_stmt:"
- msgstr ""
-
--#: cgraph.c:3179
-+#: cgraph.c:3182
- #, gcc-internal-format
- msgid "edge points to wrong declaration:"
- msgstr ""
-
--#: cgraph.c:3188
-+#: cgraph.c:3191
- #, gcc-internal-format
- msgid ""
- "an indirect edge with unknown callee corresponding to a call_stmt with a "
-@@ -17138,32 +17222,32 @@
- "known declaration:"
- msgstr ""
-
--#: cgraph.c:3198
-+#: cgraph.c:3201
- #, gcc-internal-format
- msgid "missing callgraph edge for call stmt:"
- msgstr ""
-
--#: cgraph.c:3208
-+#: cgraph.c:3211
- #, gcc-internal-format
- msgid "reference to dead statement"
- msgstr ""
-
--#: cgraph.c:3221
-+#: cgraph.c:3224
- #, gcc-internal-format, gfc-internal-format
- msgid "edge %s->%s has no corresponding call_stmt"
- msgstr ""
-
--#: cgraph.c:3233
-+#: cgraph.c:3236
- #, gcc-internal-format, gfc-internal-format
- msgid "an indirect edge from %s has no corresponding call_stmt"
- msgstr ""
-
--#: cgraph.c:3244
-+#: cgraph.c:3247
- #, gcc-internal-format
- msgid "verify_cgraph_node failed"
- msgstr ""
-
--#: cgraph.c:3343 varpool.c:304
-+#: cgraph.c:3346 varpool.c:304
- #, gcc-internal-format, gfc-internal-format
- msgid "%s: section %s is missing"
- msgstr ""
-@@ -17194,12 +17278,12 @@
- msgstr ""
-
- #. include_self=
--#: cgraphunit.c:936 c/c-decl.c:10762
-+#: cgraphunit.c:936 c/c-decl.c:10772
- #, gcc-internal-format
- msgid "%q+F used but never defined"
- msgstr ""
-
--#: cgraphunit.c:938 c/c-decl.c:10771 cp/decl.c:918
-+#: cgraphunit.c:938 c/c-decl.c:10781 cp/decl.c:918
- #, gcc-internal-format
- msgid "%q+F declared %<static%> but never defined"
- msgstr ""
-@@ -17420,28 +17504,28 @@
- msgid "conversion to incomplete type"
- msgstr ""
-
--#: convert.c:942
-+#: convert.c:943
- #, gcc-internal-format
- msgid ""
- "can%'t convert a vector of type %qT to type %qT which has different size"
- msgstr ""
-
--#: convert.c:950
-+#: convert.c:951
- #, gcc-internal-format
- msgid "aggregate value used where an integer was expected"
- msgstr ""
-
--#: convert.c:1035
-+#: convert.c:1036
- #, gcc-internal-format
- msgid "pointer value used where a complex was expected"
- msgstr ""
-
--#: convert.c:1039
-+#: convert.c:1040
- #, gcc-internal-format
- msgid "aggregate value used where a complex was expected"
- msgstr ""
-
--#: convert.c:1073
-+#: convert.c:1074
- #, gcc-internal-format
- msgid ""
- "can%'t convert a value of type %qT to vector type %qT which has different "
-@@ -17448,12 +17532,12 @@
- "size"
- msgstr ""
-
--#: convert.c:1081
-+#: convert.c:1082
- #, gcc-internal-format
- msgid "can%'t convert value to a vector"
- msgstr ""
-
--#: convert.c:1120
-+#: convert.c:1121
- #, gcc-internal-format
- msgid "aggregate value used where a fixed-point was expected"
- msgstr ""
-@@ -17609,12 +17693,12 @@
- "cfi_personality directive"
- msgstr ""
-
--#: dwarf2out.c:12435
-+#: dwarf2out.c:12436
- #, gcc-internal-format, gfc-internal-format
- msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
- msgstr ""
-
--#: dwarf2out.c:25399
-+#: dwarf2out.c:25400
- #, gcc-internal-format
- msgid "-feliminate-dwarf2-dups is broken for C++, ignoring"
- msgstr ""
-@@ -17699,7 +17783,7 @@
- msgid "verify_eh_tree failed"
- msgstr ""
-
--#: explow.c:1449
-+#: explow.c:1457
- #, gcc-internal-format
- msgid "stack limits not supported on this target"
- msgstr ""
-@@ -17726,12 +17810,12 @@
- "truncated into %wu-bit"
- msgstr ""
-
--#: expr.c:10572
-+#: expr.c:10605
- #, gcc-internal-format
- msgid "%Kcall to %qs declared with attribute error: %s"
- msgstr ""
-
--#: expr.c:10579
-+#: expr.c:10612
- #, gcc-internal-format
- msgid "%Kcall to %qs declared with attribute warning: %s"
- msgstr ""
-@@ -17746,12 +17830,12 @@
- msgid "the frame size of %wd bytes is larger than %wd bytes"
- msgstr ""
-
--#: final.c:4589 toplev.c:1372 tree-cfgcleanup.c:1122
-+#: final.c:4589 toplev.c:1372 tree-cfgcleanup.c:1140
- #, gcc-internal-format
- msgid "could not open final insn dump file %qs: %m"
- msgstr ""
-
--#: final.c:4642 tree-cfgcleanup.c:1138
-+#: final.c:4642 tree-cfgcleanup.c:1156
- #, gcc-internal-format
- msgid "could not close final insn dump file %qs: %m"
- msgstr ""
-@@ -17761,38 +17845,38 @@
- msgid "large fixed-point constant implicitly truncated to fixed-point type"
- msgstr ""
-
--#: fold-const.c:3945 fold-const.c:3955
-+#: fold-const.c:3946 fold-const.c:3956
- #, gcc-internal-format, gfc-internal-format
- msgid "comparison is always %d due to width of bit-field"
- msgstr ""
-
--#: fold-const.c:5321 tree-ssa-reassoc.c:2144
-+#: fold-const.c:5322 tree-ssa-reassoc.c:2144
- #, gcc-internal-format
- msgid "assuming signed overflow does not occur when simplifying range test"
- msgstr ""
-
--#: fold-const.c:5770 fold-const.c:5784
-+#: fold-const.c:5771 fold-const.c:5785
- #, gcc-internal-format, gfc-internal-format
- msgid "comparison is always %d"
- msgstr ""
-
--#: fold-const.c:5921
-+#: fold-const.c:5922
- #, gcc-internal-format
- msgid "%<or%> of unmatched not-equal tests is always 1"
- msgstr ""
-
--#: fold-const.c:5926
-+#: fold-const.c:5927
- #, gcc-internal-format
- msgid "%<and%> of mutually exclusive equal-tests is always 0"
- msgstr ""
-
--#: fold-const.c:8277
-+#: fold-const.c:8278
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when reducing constant in comparison"
- msgstr ""
-
--#: fold-const.c:8447
-+#: fold-const.c:8448
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when changing X +- C1 cmp C2 to X "
-@@ -17799,7 +17883,7 @@
- "cmp C2 -+ C1"
- msgstr ""
-
--#: fold-const.c:8719
-+#: fold-const.c:8720
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when combining constants around a "
-@@ -17806,7 +17890,7 @@
- "comparison"
- msgstr ""
-
--#: fold-const.c:12289
-+#: fold-const.c:12290
- #, gcc-internal-format
- msgid "fold check: original tree changed by fold"
- msgstr ""
-@@ -17816,7 +17900,7 @@
- msgid "total size of local objects too large"
- msgstr ""
-
--#: function.c:1758 gimplify.c:5335
-+#: function.c:1758 gimplify.c:5334
- #, gcc-internal-format
- msgid "impossible constraint in %<asm%>"
- msgstr ""
-@@ -18319,10 +18403,10 @@
- msgid "can%'t write PCH file"
- msgstr ""
-
--#: gimple-ssa-isolate-paths.c:290 gimple-ssa-isolate-paths.c:447 tree.c:12589
--#: tree.c:12626 c/c-typeck.c:2847 c/c-typeck.c:2931 c/c-typeck.c:9680
--#: c/c-typeck.c:9697 cp/call.c:6161 cp/constexpr.c:762 cp/constexpr.c:1969
--#: cp/decl2.c:5112 cp/pt.c:7593 cp/semantics.c:1756 cp/typeck.c:1640
-+#: gimple-ssa-isolate-paths.c:290 gimple-ssa-isolate-paths.c:447 tree.c:12600
-+#: tree.c:12637 c/c-typeck.c:2847 c/c-typeck.c:2931 c/c-typeck.c:9690
-+#: c/c-typeck.c:9707 cp/call.c:6161 cp/constexpr.c:762 cp/constexpr.c:2057
-+#: cp/decl2.c:5145 cp/pt.c:7593 cp/semantics.c:1756 cp/typeck.c:1640
- #: cp/typeck.c:1833 cp/typeck.c:3660
- #, gcc-internal-format
- msgid "declared here"
-@@ -18358,117 +18442,117 @@
- msgid "using result of function returning %<void%>"
- msgstr ""
-
--#: gimplify.c:5194
-+#: gimplify.c:5193
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid lvalue in asm output %d"
- msgstr ""
-
--#: gimplify.c:5336
-+#: gimplify.c:5335
- #, gcc-internal-format, gfc-internal-format
- msgid "non-memory input %d must stay in memory"
- msgstr ""
-
--#: gimplify.c:5376 gimplify.c:5385
-+#: gimplify.c:5375 gimplify.c:5384
- #, gcc-internal-format, gfc-internal-format
- msgid "memory input %d is not directly addressable"
- msgstr ""
-
--#: gimplify.c:5956
-+#: gimplify.c:5955
- #, gcc-internal-format
- msgid "threadprivate variable %qE used in target region"
- msgstr ""
-
--#: gimplify.c:5958
-+#: gimplify.c:5957
- #, gcc-internal-format
- msgid "enclosing target region"
- msgstr ""
-
--#: gimplify.c:5970
-+#: gimplify.c:5969
- #, gcc-internal-format
- msgid "threadprivate variable %qE used in untied task"
- msgstr ""
-
--#: gimplify.c:5972
-+#: gimplify.c:5971
- #, gcc-internal-format
- msgid "enclosing task"
- msgstr ""
-
--#: gimplify.c:6034
-+#: gimplify.c:6033
- #, gcc-internal-format
- msgid "%qE not specified in enclosing %s"
- msgstr ""
-
--#: gimplify.c:6036
-+#: gimplify.c:6035
- #, gcc-internal-format, gfc-internal-format
- msgid "enclosing %s"
- msgstr ""
-
--#: gimplify.c:6146
-+#: gimplify.c:6145
- #, gcc-internal-format
- msgid "%qE not specified in enclosing OpenACC %qs construct"
- msgstr ""
-
--#: gimplify.c:6148
-+#: gimplify.c:6147
- #, gcc-internal-format
- msgid "enclosing OpenACC %qs construct"
- msgstr ""
-
--#: gimplify.c:6199
-+#: gimplify.c:6198
- #, gcc-internal-format
- msgid "%qE with %<link%> clause used in %<routine%> function"
- msgstr ""
-
--#: gimplify.c:6207
-+#: gimplify.c:6206
- #, gcc-internal-format
- msgid "%qE requires a %<declare%> directive for use in a %<routine%> function"
- msgstr ""
-
--#: gimplify.c:6283 gimplify.c:6887
-+#: gimplify.c:6282 gimplify.c:6886
- #, gcc-internal-format
- msgid "variable %qE declared in enclosing %<host_data%> region"
- msgstr ""
-
--#: gimplify.c:6301
-+#: gimplify.c:6300
- #, gcc-internal-format
- msgid "%qD referenced in target region does not have a mappable type"
- msgstr ""
-
--#: gimplify.c:6419 gimplify.c:6451
-+#: gimplify.c:6418 gimplify.c:6450
- #, gcc-internal-format
- msgid "iteration variable %qE is predetermined linear"
- msgstr ""
-
--#: gimplify.c:6422
-+#: gimplify.c:6421
- #, gcc-internal-format
- msgid "iteration variable %qE should be private"
- msgstr ""
-
--#: gimplify.c:6436
-+#: gimplify.c:6435
- #, gcc-internal-format
- msgid "iteration variable %qE should not be firstprivate"
- msgstr ""
-
--#: gimplify.c:6439
-+#: gimplify.c:6438
- #, gcc-internal-format
- msgid "iteration variable %qE should not be reduction"
- msgstr ""
-
--#: gimplify.c:6442
-+#: gimplify.c:6441
- #, gcc-internal-format
- msgid "iteration variable %qE should not be linear"
- msgstr ""
-
--#: gimplify.c:6445
-+#: gimplify.c:6444
- #, gcc-internal-format
- msgid "iteration variable %qE should not be lastprivate"
- msgstr ""
-
--#: gimplify.c:6448
-+#: gimplify.c:6447
- #, gcc-internal-format
- msgid "iteration variable %qE should not be private"
- msgstr ""
-
--#: gimplify.c:6761
-+#: gimplify.c:6760
- #, gcc-internal-format
- msgid ""
- "%<linear%> clause for variable other than loop iterator specified on "
-@@ -18475,33 +18559,33 @@
- "construct combined with %<distribute%>"
- msgstr ""
-
--#: gimplify.c:6963
-+#: gimplify.c:6962
- #, gcc-internal-format
- msgid "mapping field %qE of variable length structure"
- msgstr ""
-
--#: gimplify.c:7175
-+#: gimplify.c:7174
- #, gcc-internal-format
- msgid "%qE appears more than once in map clauses"
- msgstr ""
-
--#: gimplify.c:7467
-+#: gimplify.c:7466
- #, gcc-internal-format
- msgid ""
- "copyprivate variable %qE is not threadprivate or private in outer context"
- msgstr ""
-
--#: gimplify.c:7487
-+#: gimplify.c:7486
- #, gcc-internal-format
- msgid "%s variable %qE is private in outer context"
- msgstr ""
-
--#: gimplify.c:7513
-+#: gimplify.c:7512
- #, gcc-internal-format
- msgid "expected %qs %<if%> clause modifier rather than %qs"
- msgstr ""
-
--#: gimplify.c:8015
-+#: gimplify.c:8021
- #, gcc-internal-format
- msgid ""
- "same variable used in %<firstprivate%> and %<lastprivate%> clauses on "
-@@ -18508,18 +18592,18 @@
- "%<distribute%> construct"
- msgstr ""
-
--#: gimplify.c:8097
-+#: gimplify.c:8103
- #, gcc-internal-format
- msgid ""
- "incompatible data clause with reduction on %qE; promoting to present_or_copy"
- msgstr ""
-
--#: gimplify.c:8241
-+#: gimplify.c:8247
- #, gcc-internal-format
- msgid "invalid private reduction on %qE"
- msgstr ""
-
--#: gimplify.c:10047 omp-low.c:3616
-+#: gimplify.c:10053 omp-low.c:3623
- #, gcc-internal-format
- msgid ""
- "%<ordered%> construct with %<depend%> clause must be closely nested inside a "
-@@ -18526,12 +18610,12 @@
- "loop with %<ordered%> clause with a parameter"
- msgstr ""
-
--#: gimplify.c:10065
-+#: gimplify.c:10071
- #, gcc-internal-format
- msgid "variable %qE is not an iteration of outermost loop %d, expected %qE"
- msgstr ""
-
--#: gimplify.c:10078
-+#: gimplify.c:10084
- #, gcc-internal-format
- msgid ""
- "number of variables in %<depend(sink)%> clause does not match number of "
-@@ -18538,12 +18622,12 @@
- "iteration variables"
- msgstr ""
-
--#: gimplify.c:10091
-+#: gimplify.c:10097
- #, gcc-internal-format
- msgid "more than one %<depend(source)%> clause on an %<ordered%> construct"
- msgstr ""
-
--#: gimplify.c:10102
-+#: gimplify.c:10108
- #, gcc-internal-format
- msgid ""
- "%<depend(source)%> clause specified together with %<depend(sink:)%> clauses "
-@@ -18550,32 +18634,32 @@
- "on the same construct"
- msgstr ""
-
--#: gimplify.c:11030
-+#: gimplify.c:11036
- #, gcc-internal-format
- msgid "expected %<_Cilk_spawn%> before %<_Cilk_sync%>"
- msgstr ""
-
--#: gimplify.c:11326
-+#: gimplify.c:11332
- #, gcc-internal-format
- msgid "gimplification failed"
- msgstr ""
-
--#: gimplify.c:11796 c-family/c-common.c:5731 c-family/c-common.c:5804
-+#: gimplify.c:11806 c-family/c-common.c:5731 c-family/c-common.c:5804
- #, gcc-internal-format
- msgid "first argument to %<va_arg%> not of type %<va_list%>"
- msgstr ""
-
--#: gimplify.c:11816
-+#: gimplify.c:11826
- #, gcc-internal-format
- msgid "%qT is promoted to %qT when passed through %<...%>"
- msgstr ""
-
--#: gimplify.c:11821
-+#: gimplify.c:11831
- #, gcc-internal-format
- msgid "(so you should pass %qT not %qT to %<va_arg%>)"
- msgstr ""
-
--#: gimplify.c:11828
-+#: gimplify.c:11838
- #, gcc-internal-format
- msgid "if this code is reached, the program will abort"
- msgstr ""
-@@ -19091,12 +19175,12 @@
- msgid "Maximum number of LRA assignment passes is achieved (%d)\n"
- msgstr ""
++ return BIGGEST_ALIGNMENT;
+ }
--#: lra-constraints.c:3566 reload.c:3831 reload.c:4086
-+#: lra-constraints.c:3591 reload.c:3831 reload.c:4086
- #, gcc-internal-format
- msgid "inconsistent operand constraints in an %<asm%>"
- msgstr ""
+ /* Implement TARGET_CONSTANT_ALIGNMENT. Alignment on even addresses for
+Index: gcc/config/s390/s390-builtins.def
+===================================================================
+--- a/src/gcc/config/s390/s390-builtins.def (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390-builtins.def (.../branches/gcc-9-branch)
+@@ -281,7 +281,7 @@
+ #define B_HTM (1 << 1) /* Builtins requiring the transactional execution facility. */
+ #define B_VX (1 << 2) /* Builtins requiring the z13 vector extensions. */
+ #define B_VXE (1 << 3) /* Builtins requiring the z14 vector extensions. */
+-#define B_VXE2 (1 << 4) /* Builtins requiring the arch13 vector extensions. */
++#define B_VXE2 (1 << 4) /* Builtins requiring the z15 vector extensions. */
+ #define B_DEP (1 << 5) /* Builtin has been deprecated and a warning should be issued. */
+
+ /* B_DEF defines a standard (not overloaded) builtin
+Index: gcc/config/s390/vx-builtins.md
+===================================================================
+--- a/src/gcc/config/s390/vx-builtins.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/vx-builtins.md (.../branches/gcc-9-branch)
+@@ -2147,7 +2147,7 @@
+ "<vw>fmax<sdx>b\t%v0,%v1,%v2,%b3"
+ [(set_attr "op_type" "VRR")])
+
+-; The element reversal builtins introduced with arch13 have been made
++; The element reversal builtins introduced with z15 have been made
+ ; available also for older CPUs down to z13.
+ (define_expand "eltswap<mode>"
+ [(set (match_operand:VEC_HW 0 "nonimmediate_operand" "")
+@@ -2181,8 +2181,8 @@
+ vster<bhfgq>\t%v1,%v0"
+ [(set_attr "op_type" "*,VRX,VRX")])
+
+-; arch13 has instructions for doing element reversal from mem to reg
+-; or the other way around. For reg to reg or on pre arch13 machines
++; z15 has instructions for doing element reversal from mem to reg
++; or the other way around. For reg to reg or on pre z15 machines
+ ; we have to emulate it with vector permute.
+ (define_insn_and_split "*eltswap<mode>_emu"
+ [(set (match_operand:VEC_HW 0 "nonimmediate_operand" "=vR")
+Index: gcc/config/s390/s390.h
+===================================================================
+--- a/src/gcc/config/s390/s390.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/s390.h (.../branches/gcc-9-branch)
+@@ -41,12 +41,12 @@
+ PF_Z14 = 2048,
+ PF_VXE = 4096,
+ PF_VXE2 = 8192,
+- PF_ARCH13 = 16384
++ PF_Z15 = 16384
+ };
--#: lra-constraints.c:4429
-+#: lra-constraints.c:4466
- #, gcc-internal-format, gfc-internal-format
- msgid "Max. number of generated reload insns per insn is achieved (%d)\n"
- msgstr ""
-@@ -19295,63 +19379,53 @@
- msgid "default target_clones attribute was not set"
- msgstr ""
+ /* This is necessary to avoid a warning about comparing different enum
+ types. */
+-#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_8561_ARCH13 ? PROCESSOR_8561_ARCH13 : s390_tune ))
++#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_8561_Z15 ? PROCESSOR_8561_Z15 : s390_tune ))
+
+ /* These flags indicate that the generated code should run on a cpu
+ providing the respective hardware facility regardless of the
+@@ -100,10 +100,10 @@
+ (s390_arch_flags & PF_VXE)
+ #define TARGET_CPU_VXE_P(opts) \
+ (opts->x_s390_arch_flags & PF_VXE)
+-#define TARGET_CPU_ARCH13 \
+- (s390_arch_flags & PF_ARCH13)
+-#define TARGET_CPU_ARCH13_P(opts) \
+- (opts->x_s390_arch_flags & PF_ARCH13)
++#define TARGET_CPU_Z15 \
++ (s390_arch_flags & PF_Z15)
++#define TARGET_CPU_Z15_P(opts) \
++ (opts->x_s390_arch_flags & PF_Z15)
+ #define TARGET_CPU_VXE2 \
+ (s390_arch_flags & PF_VXE2)
+ #define TARGET_CPU_VXE2_P(opts) \
+@@ -160,9 +160,9 @@
+ (TARGET_VX && TARGET_CPU_VXE)
+ #define TARGET_VXE_P(opts) \
+ (TARGET_VX_P (opts) && TARGET_CPU_VXE_P (opts))
+-#define TARGET_ARCH13 (TARGET_ZARCH && TARGET_CPU_ARCH13)
+-#define TARGET_ARCH13_P(opts) \
+- (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_ARCH13_P (opts))
++#define TARGET_Z15 (TARGET_ZARCH && TARGET_CPU_Z15)
++#define TARGET_Z15_P(opts) \
++ (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z15_P (opts))
+ #define TARGET_VXE2 \
+ (TARGET_VX && TARGET_CPU_VXE2)
+ #define TARGET_VXE2_P(opts) \
+Index: gcc/config/s390/8561.md
+===================================================================
+--- a/src/gcc/config/s390/8561.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/s390/8561.md (.../branches/gcc-9-branch)
+@@ -1,4 +1,4 @@
+-;; Scheduling description for arch13.
++;; Scheduling description for z15.
+ ;; Copyright (C) 2019 Free Software Foundation, Inc.
+ ;; Contributed by Robin Dapp (rdapp@linux.ibm.com)
+ ;; This file is part of GCC.
+@@ -17,12 +17,12 @@
+ ;; along with GCC; see the file COPYING3. If not see
+ ;; <http://www.gnu.org/licenses/>.
+
+-(define_attr "arch13_unit_fpd" ""
++(define_attr "z15_unit_fpd" ""
+ (cond [(eq_attr "mnemonic" "ddb,ddbr,deb,debr,dxbr,sqdb,sqdbr,sqeb,\
+ sqebr,sqxbr,vfddb,vfdsb,vfsqdb,vfsqsb,wfddb,wfdsb,wfdxb,wfsqdb,wfsqxb")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_unit_fxa" ""
++(define_attr "z15_unit_fxa" ""
+ (cond [(eq_attr "mnemonic" "a,afi,ag,agf,agfi,agfr,agh,aghi,aghik,\
+ agr,agrk,ah,ahi,ahik,ahy,al,alc,alcg,alcgr,alcr,alfi,alg,algf,algfi,algfr,\
+ alghsik,algr,algrk,alhsik,alr,alrk,aly,ar,ark,ay,bras,brasl,etnd,exrl,flogr,\
+@@ -39,7 +39,7 @@
+ xgr,xgrk,xihf,xilf,xr,xrk,xy")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_unit_fxb" ""
++(define_attr "z15_unit_fxb" ""
+ (cond [(eq_attr "mnemonic" "agsi,algsi,alsi,asi,b,bc,bcr,bi,br,brcl,\
+ c,cfi,cg,cgf,cgfi,cgfr,cgfrl,cgh,cghi,cghrl,cghsi,cgit,cgr,cgrl,cgrt,ch,\
+ chi,chrl,chsi,chy,cit,cl,clfhsi,clfi,clfit,clg,clgf,clgfi,clgfr,clgfrl,\
+@@ -52,11 +52,11 @@
+ vlvgp,vst,vstef,vsteg,vstl,vstrl,vstrlr,xi,xiy")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_unit_fxd" ""
++(define_attr "z15_unit_fxd" ""
+ (cond [(eq_attr "mnemonic" "dlgr,dlr,dr,dsgfr,dsgr")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_unit_lsu" ""
++(define_attr "z15_unit_lsu" ""
+ (cond [(eq_attr "mnemonic" "a,adb,aeb,ag,agf,agh,agsi,ah,ahy,al,alc,\
+ alcg,alg,algf,algsi,alsi,aly,asi,ay,c,cdb,ceb,cg,cgf,cgfrl,cgh,cghrl,cghsi,\
+ cgrl,ch,chrl,chsi,chy,cl,clc,clfhsi,clg,clgf,clgfrl,clghrl,clghsi,clgrl,\
+@@ -73,7 +73,7 @@
+ vstef,vsteg,vstl,vstrl,vstrlr,x,xg,xi,xiy,xy")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_unit_vfu" ""
++(define_attr "z15_unit_vfu" ""
+ (cond [(eq_attr "mnemonic" "adb,adbr,adtr,aeb,aebr,axbr,axtr,cdb,\
+ cdbr,cdtr,ceb,cebr,cpsdr,cxbr,cxtr,ddtr,dxtr,fidbr,fidbra,fidtr,fiebr,\
+ fiebra,fixbr,fixbra,fixtr,lcdbr,lcebr,lcxbr,ldeb,ldebr,ldetr,le,ledbr,ledtr,\
+@@ -115,7 +115,7 @@
+ wfmxb,wfnmaxb,wfnmsxb,wfsdb,wfssb,wfsxb,wldeb,wledb")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_cracked" ""
++(define_attr "z15_cracked" ""
+ (cond [(eq_attr "mnemonic" "bas,basr,cdfbr,cdftr,cdgbr,cdgtr,cdlfbr,\
+ cdlftr,cdlgbr,cdlgtr,cefbr,cegbr,celfbr,celgbr,cfdbr,cfebr,cfxbr,cgdbr,cgdtr,\
+ cgebr,cgxbr,cgxtr,chhsi,clfdbr,clfdtr,clfebr,clfxbr,clfxtr,clgdbr,clgdtr,\
+@@ -123,13 +123,13 @@
+ rxsbg,stpq,vgef,vgeg,vscef,vsceg,vsteb,vsteh")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_expanded" ""
++(define_attr "z15_expanded" ""
+ (cond [(eq_attr "mnemonic" "cds,cdsg,cdsy,cxfbr,cxftr,cxgbr,cxgtr,\
+ cxlfbr,cxlftr,cxlgbr,cxlgtr,dl,dlg,dsg,dsgf,lam,lm,lmg,lmy,sldl,srda,srdl,\
+ stam,stm,stmg,stmy,tbegin,tbeginc")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_groupalone" ""
++(define_attr "z15_groupalone" ""
+ (cond [(eq_attr "mnemonic" "alc,alcg,alcgr,alcr,axbr,axtr,clc,cxbr,\
+ cxtr,dlgr,dlr,dr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\
+ lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,m,madb,maeb,maebr,mfy,mg,mgrk,\
+@@ -137,11 +137,11 @@
+ slbgr,slbr,sqxbr,sxbr,sxtr,tabort,tcxb,tdcxt,tend,xc")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_endgroup" ""
++(define_attr "z15_endgroup" ""
+ (cond [(eq_attr "mnemonic" "bras,brasl,exrl,ipm")
+ (const_int 1)] (const_int 0)))
+
+-(define_attr "arch13_groupoftwo" ""
++(define_attr "z15_groupoftwo" ""
+ (cond [(eq_attr "mnemonic" "vacccq,vacq,vfmadb,vfmasb,vfmsdb,vfmssb,\
+ vfnmadb,vfnmasb,vfnmsdb,vfnmssb,vgfmab,vgfmaf,vgfmag,vgfmah,vmaeb,vmaef,vmaeh,\
+ vmahb,vmahf,vmahh,vmalb,vmaleb,vmalef,vmaleh,vmalf,vmalhb,vmalhf,vmalhh,\
+@@ -149,8 +149,8 @@
+ wfmadb,wfmasb,wfmaxb,wfmsdb,wfmssb,wfmsxb,wfnmaxb,wfnmsxb")
+ (const_int 1)] (const_int 0)))
+
+-(define_insn_reservation "arch13_0" 0
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_0" 0
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "a,afi,ag,agfi,aghi,aghik,agr,agrk,ahi,ahik,al,\
+ alfi,alg,algf,algfi,algfr,alghsik,algr,algrk,alhsik,alr,alrk,aly,ar,ark,ay,\
+ b,bc,bcr,bi,br,bras,brasl,brcl,c,cfi,cg,cgfi,cghi,cghsi,cgit,cgr,cgrl,\
+@@ -168,8 +168,8 @@
+ tmhh,tmhl,tml,tmlh,tmll,tmy,vlr,vlvgb,vlvgf,vlvgg,vlvgh,x,xg,xgr,xgrk,xihf,\
+ xilf,xr,xrk,xy")) "nothing")
+
+-(define_insn_reservation "arch13_1" 1
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_1" 1
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "agf,agfr,agh,agsi,ah,ahy,algsi,alsi,asi,cgf,\
+ cgfr,cgfrl,cgh,cghrl,ch,chrl,chy,clm,clmy,cpsdr,laa,laag,lan,lang,lao,laog,\
+ lax,laxg,le,ler,ley,loc,locg,locghi,locgr,lochi,locr,mvghi,mvhhi,mvhi,mvi,\
+@@ -196,8 +196,8 @@
+ wflcsb,wflcxb,wflndb,wflnsb,wflnxb,wflpdb,wflpsb,wflpxb,wfmaxxb,wfminxb,xi,\
+ xiy")) "nothing")
+
+-(define_insn_reservation "arch13_2" 2
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_2" 2
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cdb,cdbr,ceb,cebr,ear,ipm,l,lcbb,lcdbr,lcebr,ld,\
+ lde,ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lm,\
+ lmg,lmy,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\
+@@ -208,8 +208,8 @@
+ vlrepf,vlrepg,vlreph,vlrl,vlvgp,vpklsfs,vpklsgs,vpklshs,vpksfs,vpksgs,vpkshs,\
+ wfcdb,wfcexbs,wfchexbs,wfchxbs,wfcsb")) "nothing")
+
+-(define_insn_reservation "arch13_3" 3
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_3" 3
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cds,cdsy,mgh,mghi,mh,mhi,mhy,std,stdy,ste,stey,\
+ vcksm,vfeezbs,vfeezfs,vfeezhs,vgfmab,vgfmaf,vgfmag,vgfmah,vgfmb,vgfmf,vgfmg,\
+ vgfmh,vistrbs,vistrfs,vistrhs,vl,vlbb,vll,vlrlr,vmaeb,vmaef,vmaeh,vmahb,\
+@@ -218,14 +218,14 @@
+ vmleb,vmlef,vmleh,vmlf,vmlhb,vmlhf,vmlhh,vmlhw,vmlob,vmlof,vmloh,vmob,vmof,\
+ vmoh,vsumb,vsumgf,vsumgh,vsumh,vsumqf,vsumqg,vtm")) "nothing")
+
+-(define_insn_reservation "arch13_4" 4
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_4" 4
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "bas,basr,chhsi,clc,ex,lam,lcgfr,lngfr,lpgfr,lxr,\
+ lzxr,ms,msfi,msgf,msgfi,msgfr,msr,msy,mvc,nc,oc,ppa,rxsbg,tabort,tbegin,\
+ tbeginc,tend,vst,vstef,vsteg,vstl,vstrl,vstrlr,xc")) "nothing")
+
+-(define_insn_reservation "arch13_5" 5
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_5" 5
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "adb,adbr,aeb,aebr,alc,alcg,alcgr,alcr,cs,csg,\
+ csy,fidbr,fidbra,fiebr,fiebra,ldeb,ldebr,ledbr,madbr,mdb,mdbr,meeb,meebr,\
+ msdbr,msrkc,sdb,sdbr,seb,sebr,slb,slbg,slbgr,slbr,stm,stmg,stmy,vfadb,vfasb,\
+@@ -233,53 +233,53 @@
+ vfnmssb,vfsdb,vfssb,vldeb,vledb,vmslg,wfadb,wfasb,wfidb,wfisb,wflld,wfmadb,\
+ wfmasb,wfmdb,wfmsb,wfmsdb,wfmssb,wfsdb,wfssb,wldeb,wledb")) "nothing")
+
+-(define_insn_reservation "arch13_6" 6
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_6" 6
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "msg,msgr,sfpc")) "nothing")
+
+-(define_insn_reservation "arch13_7" 7
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_7" 7
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "adtr,cdtr,fidtr,ldetr,ltdtr,msgrkc,sdtr,tdcdt,\
+ tdcet,vgef,vgeg")) "nothing")
+
+-(define_insn_reservation "arch13_8" 8
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_8" 8
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cdsg,flogr,lpq,stpq,vsteb,vsteh")) "nothing")
+
+-(define_insn_reservation "arch13_9" 9
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_9" 9
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cdfbr,cdgbr,cdlfbr,cdlgbr,cefbr,cegbr,celfbr,\
+ celgbr,cxfbr,cxgbr,cxlfbr,cxlgbr,m,madb,maeb,maebr,mfy,ml,mlr,mr,msdb,mseb,\
+ msebr,stam,wfaxb,wfixb,wfsxb")) "nothing")
+
+-(define_insn_reservation "arch13_10" 10
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_10" 10
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "lxdb,lxdbr,lxeb,lxebr,vscef,vsceg")) "nothing")
+
+-(define_insn_reservation "arch13_11" 11
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_11" 11
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cfdbr,cfebr,cgdbr,cgebr,clfdbr,clfebr,clgdbr,\
+ clgebr,mg,mgrk,mlg,mlgr")) "nothing")
+
+-(define_insn_reservation "arch13_12" 12
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_12" 12
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cxbr,cxftr,cxlftr,cxtr,tcxb,tdcxt")) "nothing")
+
+-(define_insn_reservation "arch13_13" 13
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_13" 13
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "axbr,axtr,fixbr,fixbra,fixtr,lcxbr,lnxbr,lpxbr,\
+ ltxbr,ltxtr,lxdtr,sxbr,sxtr")) "nothing")
+
+-(define_insn_reservation "arch13_14" 14
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_14" 14
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cfxbr,cgxbr,clfxbr,clgxbr,ledtr")) "nothing")
+
+-(define_insn_reservation "arch13_16" 16
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_16" 16
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cdftr,cdlftr")) "nothing")
+
+-(define_insn_reservation "arch13_20" 20
+- (and (eq_attr "cpu" "arch13")
++(define_insn_reservation "z15_20" 20
++ (and (eq_attr "cpu" "z15")
+ (eq_attr "mnemonic" "cdgtr,cdlgtr,cgdtr,cgxtr,clfdtr,clfxtr,clgdtr,\
+ clgxtr,cxgtr,cxlgtr,d,ddb,ddbr,ddtr,deb,debr,dl,dlg,dlgr,dlr,dr,dsg,dsgf,\
+ dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,sqebr,sqxbr,vfddb,\
+Index: gcc/config/sparc/sparc.md
+===================================================================
+--- a/src/gcc/config/sparc/sparc.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sparc/sparc.md (.../branches/gcc-9-branch)
+@@ -1604,10 +1604,7 @@
+ (clobber (reg:P O7_REG))]
+ "REGNO (operands[0]) == INTVAL (operands[3])"
+ {
+- if (flag_delayed_branch)
+- return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
+- else
+- return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
++ return output_load_pcrel_sym (operands);
+ }
+ [(set (attr "type") (const_string "multi"))
+ (set (attr "length")
+Index: gcc/config/sparc/sparc-protos.h
+===================================================================
+--- a/src/gcc/config/sparc/sparc-protos.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sparc/sparc-protos.h (.../branches/gcc-9-branch)
+@@ -69,6 +69,7 @@
+ extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
+ extern int sparc_split_reg_reg_legitimate (rtx, rtx);
+ extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
++extern const char *output_load_pcrel_sym (rtx *);
+ extern const char *output_ubranch (rtx, rtx_insn *);
+ extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
+ extern const char *output_return (rtx_insn *);
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-9-branch)
+@@ -4243,10 +4243,12 @@
+ }
+
+ /* Global Offset Table support. */
++static GTY(()) rtx got_symbol_rtx = NULL_RTX;
++static GTY(()) rtx got_register_rtx = NULL_RTX;
+ static GTY(()) rtx got_helper_rtx = NULL_RTX;
+-static GTY(()) rtx got_register_rtx = NULL_RTX;
+-static GTY(()) rtx got_symbol_rtx = NULL_RTX;
--#: multiple_target.c:256
-+#: multiple_target.c:250
- #, gcc-internal-format
- msgid "single target_clones attribute is ignored"
- msgstr ""
++static GTY(()) bool got_helper_needed = false;
++
+ /* Return the SYMBOL_REF for the Global Offset Table. */
--#: multiple_target.c:268
-+#: multiple_target.c:262
- #, gcc-internal-format
- msgid "default target was not set"
- msgstr ""
+ static rtx
+@@ -4258,27 +4260,6 @@
+ return got_symbol_rtx;
+ }
--#: multiple_target.c:300
--#, gcc-internal-format, gfc-internal-format
--msgid "attribute(target_clones(\"%s\")) is not valid for current target"
--msgstr ""
+-#ifdef HAVE_GAS_HIDDEN
+-# define USE_HIDDEN_LINKONCE 1
+-#else
+-# define USE_HIDDEN_LINKONCE 0
+-#endif
-
--#: multiple_target.c:331
-+#: omp-low.c:2972 omp-low.c:19397
- #, gcc-internal-format
--msgid "attribute(target_clones(\"default\")) is not valid for current target"
--msgstr ""
+-static void
+-get_pc_thunk_name (char name[32], unsigned int regno)
+-{
+- const char *reg_name = reg_names[regno];
-
--#: omp-low.c:2965 omp-low.c:19388
--#, gcc-internal-format
- msgid "%<seq%> overrides other OpenACC loop specifiers"
- msgstr ""
-
--#: omp-low.c:2968
-+#: omp-low.c:2975
- #, gcc-internal-format
- msgid "%<auto%> conflicts with other OpenACC loop specifiers"
- msgstr ""
-
--#: omp-low.c:2972
-+#: omp-low.c:2979
- #, gcc-internal-format
- msgid "inner loop uses same OpenACC parallelism as containing loop"
- msgstr ""
-
--#: omp-low.c:3019
-+#: omp-low.c:3026
- #, gcc-internal-format
- msgid "argument not permitted on %qs clause in OpenACC %<parallel%>"
- msgstr ""
-
--#: omp-low.c:3245
-+#: omp-low.c:3252
- #, gcc-internal-format
- msgid "non-OpenACC construct inside of OpenACC routine"
- msgstr ""
-
--#: omp-low.c:3254
-+#: omp-low.c:3261
- #, gcc-internal-format
- msgid "non-OpenACC construct inside of OpenACC region"
- msgstr ""
-
--#: omp-low.c:3279
-+#: omp-low.c:3286
- #, gcc-internal-format
- msgid ""
- "%<ordered simd threads%> must be closely nested inside of %<for simd%> region"
- msgstr ""
-
--#: omp-low.c:3287
-+#: omp-low.c:3294
- #, gcc-internal-format
- msgid ""
- "OpenMP constructs other than %<#pragma omp ordered simd%> may not be nested "
-@@ -19358,7 +19432,7 @@
- "inside %<simd%> region"
- msgstr ""
-
--#: omp-low.c:3299
-+#: omp-low.c:3306
- #, gcc-internal-format
- msgid ""
- "only %<distribute%> or %<parallel%> regions are allowed to be strictly "
-@@ -19365,55 +19439,55 @@
- "nested inside %<teams%> region"
- msgstr ""
-
--#: omp-low.c:3316
-+#: omp-low.c:3323
- #, gcc-internal-format
- msgid ""
- "%<distribute%> region must be strictly nested inside %<teams%> construct"
- msgstr ""
-
--#: omp-low.c:3357
-+#: omp-low.c:3364
- #, gcc-internal-format
- msgid ""
- "OpenACC loop directive must be associated with an OpenACC compute region"
- msgstr ""
-
--#: omp-low.c:3379
-+#: omp-low.c:3386
- #, gcc-internal-format
- msgid "orphaned %qs construct"
- msgstr ""
-
--#: omp-low.c:3408
-+#: omp-low.c:3415
- #, gcc-internal-format
- msgid "%<#pragma omp cancel for%> inside %<nowait%> for construct"
- msgstr ""
-
--#: omp-low.c:3413
-+#: omp-low.c:3420
- #, gcc-internal-format
- msgid "%<#pragma omp cancel for%> inside %<ordered%> for construct"
- msgstr ""
-
--#: omp-low.c:3433 omp-low.c:3446
-+#: omp-low.c:3440 omp-low.c:3453
- #, gcc-internal-format
- msgid "%<#pragma omp cancel sections%> inside %<nowait%> sections construct"
- msgstr ""
-
--#: omp-low.c:3472
-+#: omp-low.c:3479
- #, gcc-internal-format
- msgid ""
- "%<%s taskgroup%> construct not closely nested inside of %<taskgroup%> region"
- msgstr ""
-
--#: omp-low.c:3486
-+#: omp-low.c:3493
- #, gcc-internal-format
- msgid "invalid arguments"
- msgstr ""
-
--#: omp-low.c:3492
-+#: omp-low.c:3499
- #, gcc-internal-format
- msgid "%<%s %s%> construct not closely nested inside of %qs"
- msgstr ""
-
--#: omp-low.c:3520
-+#: omp-low.c:3527
- #, gcc-internal-format
- msgid ""
- "barrier region may not be closely nested inside of work-sharing, %<critical"
-@@ -19420,7 +19494,7 @@
- "%>, %<ordered%>, %<master%>, explicit %<task%> or %<taskloop%> region"
- msgstr ""
-
--#: omp-low.c:3527
-+#: omp-low.c:3534
- #, gcc-internal-format
- msgid ""
- "work-sharing region may not be closely nested inside of work-sharing, "
-@@ -19428,7 +19502,7 @@
- "region"
- msgstr ""
-
--#: omp-low.c:3556
-+#: omp-low.c:3563
- #, gcc-internal-format
- msgid ""
- "%<master%> region may not be closely nested inside of work-sharing, explicit "
-@@ -19435,12 +19509,12 @@
- "%<task%> or %<taskloop%> region"
- msgstr ""
-
--#: omp-low.c:3580 omp-low.c:3719
-+#: omp-low.c:3587 omp-low.c:3726
- #, gcc-internal-format
- msgid "%<depend(%s)%> is only allowed in %<omp ordered%>"
- msgstr ""
-
--#: omp-low.c:3608
-+#: omp-low.c:3615
- #, gcc-internal-format
- msgid ""
- "%<ordered%> construct with %<depend%> clause must be closely nested inside "
-@@ -19447,17 +19521,17 @@
- "an %<ordered%> loop"
- msgstr ""
-
--#: omp-low.c:3625
-+#: omp-low.c:3632
- #, gcc-internal-format
- msgid "invalid depend kind in omp %<ordered%> %<depend%>"
- msgstr ""
-
--#: omp-low.c:3640
-+#: omp-low.c:3647
- #, gcc-internal-format
- msgid "%<ordered%> %<simd%> must be closely nested inside %<simd%> region"
- msgstr ""
-
--#: omp-low.c:3653
-+#: omp-low.c:3660
- #, gcc-internal-format
- msgid ""
- "%<ordered%> region may not be closely nested inside of %<critical%>, "
-@@ -19464,7 +19538,7 @@
- "%<ordered%>, explicit %<task%> or %<taskloop%> region"
- msgstr ""
-
--#: omp-low.c:3664 omp-low.c:3677
-+#: omp-low.c:3671 omp-low.c:3684
- #, gcc-internal-format
- msgid ""
- "%<ordered%> region must be closely nested inside a loop region with an "
-@@ -19471,7 +19545,7 @@
- "%<ordered%> clause"
- msgstr ""
-
--#: omp-low.c:3694
-+#: omp-low.c:3701
- #, gcc-internal-format
- msgid ""
- "%<critical%> region may not be nested inside a %<critical%> region with the "
-@@ -19478,12 +19552,12 @@
- "same name"
- msgstr ""
-
--#: omp-low.c:3706
-+#: omp-low.c:3713
- #, gcc-internal-format
- msgid "%<teams%> construct not closely nested inside of %<target%> construct"
- msgstr ""
-
--#: omp-low.c:3727
-+#: omp-low.c:3734
- #, gcc-internal-format
- msgid ""
- "OpenACC region inside of OpenACC routine, nested parallelism not supported "
-@@ -19490,99 +19564,99 @@
- "yet"
- msgstr ""
-
--#: omp-low.c:3740
-+#: omp-low.c:3747
- #, gcc-internal-format
- msgid "OpenACC construct inside of non-OpenACC region"
- msgstr ""
-
--#: omp-low.c:3785
-+#: omp-low.c:3792
- #, gcc-internal-format
- msgid "%s %qs construct inside of %s %qs region"
- msgstr ""
-
--#: omp-low.c:3798 omp-low.c:3805
-+#: omp-low.c:3805 omp-low.c:3812
- #, gcc-internal-format
- msgid "%qs construct inside of %qs region"
- msgstr ""
-
--#: omp-low.c:3917
-+#: omp-low.c:3924
- #, gcc-internal-format
- msgid "setjmp/longjmp inside simd construct"
- msgstr ""
-
--#: omp-low.c:8002
-+#: omp-low.c:8011
- #, gcc-internal-format
- msgid "%<depend(sink)%> clause waiting for lexically later iteration"
- msgstr ""
-
--#: omp-low.c:8089
-+#: omp-low.c:8098
- #, gcc-internal-format
- msgid "%<depend(sink)%> refers to iteration never in the iteration space"
- msgstr ""
-
--#: omp-low.c:12629
-+#: omp-low.c:12638
- #, gcc-internal-format
- msgid "multiple loop axes specified for routine"
- msgstr ""
-
--#: omp-low.c:14650
-+#: omp-low.c:14659
- #, gcc-internal-format
- msgid ""
- "ignoring sink clause with offset that is not a multiple of the loop step"
- msgstr ""
-
--#: omp-low.c:14673
-+#: omp-low.c:14682
- #, gcc-internal-format
- msgid "first offset must be in opposite direction of loop iterations"
- msgstr ""
-
--#: omp-low.c:18016
-+#: omp-low.c:18025
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid exit from %s structured block"
- msgstr ""
-
--#: omp-low.c:18018 omp-low.c:18023
-+#: omp-low.c:18027 omp-low.c:18032
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid entry to %s structured block"
- msgstr ""
-
- #. Otherwise, be vague and lazy, but efficient.
--#: omp-low.c:18027
-+#: omp-low.c:18036
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid branch to/from %s structured block"
- msgstr ""
-
--#: omp-low.c:18828
-+#: omp-low.c:18837
- #, gcc-internal-format, gfc-internal-format
- msgid "-fopenacc-dim operand is malformed at '%s'"
- msgstr ""
-
--#: omp-low.c:19415
-+#: omp-low.c:19424
- #, gcc-internal-format, gfc-internal-format
- msgid "%s uses same OpenACC parallelism as containing loop"
- msgstr ""
-
--#: omp-low.c:19417 omp-low.c:19446
-+#: omp-low.c:19426 omp-low.c:19455
- #, gcc-internal-format
- msgid "containing loop here"
- msgstr ""
-
--#: omp-low.c:19421
-+#: omp-low.c:19430
- #, gcc-internal-format, gfc-internal-format
- msgid "%s uses OpenACC parallelism disallowed by containing routine"
- msgstr ""
-
--#: omp-low.c:19426
-+#: omp-low.c:19435
- #, gcc-internal-format
- msgid "routine %qD declared here"
- msgstr ""
-
--#: omp-low.c:19439
-+#: omp-low.c:19448
- #, gcc-internal-format
- msgid "incorrectly nested OpenACC loop parallelism"
- msgstr ""
-
--#: omp-low.c:19503
-+#: omp-low.c:19512
- #, gcc-internal-format
- msgid "insufficient partitioning available to parallelize loop"
- msgstr ""
-@@ -19711,7 +19785,7 @@
- msgid "section anchors must be disabled when toplevel reorder is disabled"
- msgstr ""
-
--#: opts.c:813 config/darwin.c:3113
-+#: opts.c:813 config/darwin.c:3164
- #, gcc-internal-format
- msgid ""
- "-freorder-blocks-and-partition does not work with exceptions on this "
-@@ -20157,7 +20231,7 @@
- msgid "register of %qD used for multiple global register variables"
- msgstr ""
-
--#: reginfo.c:777 config/rs6000/rs6000.c:28752
-+#: reginfo.c:777 config/rs6000/rs6000.c:28816
- #, gcc-internal-format
- msgid "conflicts with %qD"
- msgstr ""
-@@ -21675,12 +21749,12 @@
- msgid "BB %i has incorrect fallthru edge"
- msgstr ""
-
--#: tree-inline.c:3528
-+#: tree-inline.c:3536
- #, gcc-internal-format
- msgid "function %q+F can never be copied because it receives a non-local goto"
- msgstr ""
-
--#: tree-inline.c:3535
-+#: tree-inline.c:3543
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be copied because it saves address of local label in "
-@@ -21687,7 +21761,7 @@
- "a static variable"
- msgstr ""
-
--#: tree-inline.c:3575
-+#: tree-inline.c:3583
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be inlined because it uses alloca (override using "
-@@ -21694,18 +21768,18 @@
- "the always_inline attribute)"
- msgstr ""
-
--#: tree-inline.c:3589
-+#: tree-inline.c:3597
- #, gcc-internal-format
- msgid "function %q+F can never be inlined because it uses setjmp"
- msgstr ""
-
--#: tree-inline.c:3603
-+#: tree-inline.c:3611
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be inlined because it uses variable argument lists"
- msgstr ""
-
--#: tree-inline.c:3615
-+#: tree-inline.c:3623
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be inlined because it uses setjmp-longjmp exception "
-@@ -21712,12 +21786,12 @@
- "handling"
- msgstr ""
-
--#: tree-inline.c:3623
-+#: tree-inline.c:3631
- #, gcc-internal-format
- msgid "function %q+F can never be inlined because it uses non-local goto"
- msgstr ""
-
--#: tree-inline.c:3635
-+#: tree-inline.c:3643
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be inlined because it uses __builtin_return or "
-@@ -21724,18 +21798,18 @@
- "__builtin_apply_args"
- msgstr ""
-
--#: tree-inline.c:3655
-+#: tree-inline.c:3663
- #, gcc-internal-format
- msgid "function %q+F can never be inlined because it contains a computed goto"
- msgstr ""
-
--#: tree-inline.c:3756
-+#: tree-inline.c:3764
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be inlined because it is suppressed using -fno-inline"
- msgstr ""
-
--#: tree-inline.c:3764
-+#: tree-inline.c:3772
- #, gcc-internal-format
- msgid ""
- "function %q+F can never be inlined because it uses attributes conflicting "
-@@ -21742,22 +21816,22 @@
- "with inlining"
- msgstr ""
-
--#: tree-inline.c:4425
-+#: tree-inline.c:4433
- #, gcc-internal-format
- msgid "inlining failed in call to always_inline %q+F: %s"
- msgstr ""
-
--#: tree-inline.c:4428 tree-inline.c:4448
-+#: tree-inline.c:4436 tree-inline.c:4456
- #, gcc-internal-format
- msgid "called from here"
- msgstr ""
-
--#: tree-inline.c:4431 tree-inline.c:4451
-+#: tree-inline.c:4439 tree-inline.c:4459
- #, gcc-internal-format
- msgid "called from this function"
- msgstr ""
-
--#: tree-inline.c:4444
-+#: tree-inline.c:4452
- #, gcc-internal-format
- msgid "inlining failed in call to %q+F: %s"
- msgstr ""
-@@ -22015,22 +22089,22 @@
- msgid "vectorization did not happen for a simd loop"
- msgstr ""
-
--#: tree-vrp.c:6500 tree-vrp.c:6540 tree-vrp.c:6621
-+#: tree-vrp.c:6532 tree-vrp.c:6572 tree-vrp.c:6653
- #, gcc-internal-format
- msgid "array subscript is above array bounds"
- msgstr ""
-
--#: tree-vrp.c:6524
-+#: tree-vrp.c:6556
- #, gcc-internal-format
- msgid "array subscript is outside array bounds"
- msgstr ""
-
--#: tree-vrp.c:6553 tree-vrp.c:6608
-+#: tree-vrp.c:6585 tree-vrp.c:6640
- #, gcc-internal-format
- msgid "array subscript is below array bounds"
- msgstr ""
-
--#: tree-vrp.c:7462
-+#: tree-vrp.c:7490
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when simplifying conditional to "
-@@ -22037,22 +22111,22 @@
- "constant"
- msgstr ""
-
--#: tree-vrp.c:7468 tree-vrp.c:9432 tree-vrp.c:9476 tree-vrp.c:9539
-+#: tree-vrp.c:7496 tree-vrp.c:9459 tree-vrp.c:9503 tree-vrp.c:9566
- #, gcc-internal-format
- msgid "assuming signed overflow does not occur when simplifying conditional"
- msgstr ""
-
--#: tree-vrp.c:7512
-+#: tree-vrp.c:7540
- #, gcc-internal-format
- msgid "comparison always false due to limited range of data type"
- msgstr ""
-
--#: tree-vrp.c:7514
-+#: tree-vrp.c:7542
- #, gcc-internal-format
- msgid "comparison always true due to limited range of data type"
- msgstr ""
-
--#: tree-vrp.c:9031
-+#: tree-vrp.c:9058
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to "
-@@ -22059,7 +22133,7 @@
- "%<>>%> or %<&%>"
- msgstr ""
-
--#: tree-vrp.c:9096
-+#: tree-vrp.c:9123
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when simplifying %<min/max (X,Y)%> "
-@@ -22066,7 +22140,7 @@
- "to %<X%> or %<Y%>"
- msgstr ""
-
--#: tree-vrp.c:9149
-+#: tree-vrp.c:9176
- #, gcc-internal-format
- msgid ""
- "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X"
-@@ -22123,12 +22197,12 @@
- #: c-family/c-common.c:8827 c-family/c-common.c:8940 c-family/c-common.c:8967
- #: c-family/c-common.c:9280 c-family/c-common.c:9303 c-family/c-common.c:9342
- #: c-family/c-common.c:9424 c-family/c-common.c:9467 c-family/c-common.c:9604
--#: config/darwin.c:2021 config/arm/arm.c:6488 config/arm/arm.c:6516
--#: config/arm/arm.c:6533 config/avr/avr.c:8968 config/h8300/h8300.c:5477
--#: config/h8300/h8300.c:5501 config/i386/i386.c:6862 config/i386/i386.c:44609
--#: config/ia64/ia64.c:756 config/rs6000/rs6000.c:32417 config/spu/spu.c:3738
--#: ada/gcc-interface/utils.c:6004 ada/gcc-interface/utils.c:6021
--#: ada/gcc-interface/utils.c:6037 ada/gcc-interface/utils.c:6063
-+#: config/darwin.c:2062 config/arm/arm.c:6488 config/arm/arm.c:6516
-+#: config/arm/arm.c:6533 config/avr/avr.c:9004 config/h8300/h8300.c:5477
-+#: config/h8300/h8300.c:5501 config/i386/i386.c:6855 config/i386/i386.c:44781
-+#: config/ia64/ia64.c:756 config/rs6000/rs6000.c:32484 config/spu/spu.c:3738
-+#: ada/gcc-interface/utils.c:6030 ada/gcc-interface/utils.c:6047
-+#: ada/gcc-interface/utils.c:6063 ada/gcc-interface/utils.c:6089
- #: lto/lto-lang.c:243
- #, gcc-internal-format
- msgid "%qE attribute ignored"
-@@ -22171,32 +22245,32 @@
- msgid "function return type cannot be function"
- msgstr ""
-
--#: tree.c:9641 tree.c:9726 tree.c:9787
-+#: tree.c:9651 tree.c:9736 tree.c:9797
- #, gcc-internal-format, gfc-internal-format
- msgid "tree check: %s, have %s in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9678
-+#: tree.c:9688
- #, gcc-internal-format, gfc-internal-format
- msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9691
-+#: tree.c:9701
- #, gcc-internal-format
- msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9740
-+#: tree.c:9750
- #, gcc-internal-format
- msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9753
-+#: tree.c:9763
- #, gcc-internal-format, gfc-internal-format
- msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9813
-+#: tree.c:9823
- #, gcc-internal-format
- msgid ""
- "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:"
-@@ -22203,23 +22277,23 @@
- "%d"
- msgstr ""
-
--#: tree.c:9827
-+#: tree.c:9837
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "tree check: accessed elt %d of tree_int_cst with %d elts in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9839
-+#: tree.c:9849
- #, gcc-internal-format, gfc-internal-format
- msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9852
-+#: tree.c:9862
- #, gcc-internal-format, gfc-internal-format
- msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
- msgstr ""
-
--#: tree.c:9865
-+#: tree.c:9875
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at "
-@@ -22226,32 +22300,32 @@
- "%s:%d"
- msgstr ""
-
--#: tree.c:12584
-+#: tree.c:12595
- #, gcc-internal-format
- msgid "%qD is deprecated: %s"
- msgstr ""
-
--#: tree.c:12587
-+#: tree.c:12598
- #, gcc-internal-format
- msgid "%qD is deprecated"
- msgstr ""
-
--#: tree.c:12611 tree.c:12633
-+#: tree.c:12622 tree.c:12644
- #, gcc-internal-format
- msgid "%qE is deprecated: %s"
- msgstr ""
-
--#: tree.c:12614 tree.c:12636
-+#: tree.c:12625 tree.c:12647
- #, gcc-internal-format
- msgid "%qE is deprecated"
- msgstr ""
-
--#: tree.c:12620 tree.c:12641
-+#: tree.c:12631 tree.c:12652
- #, gcc-internal-format, gfc-internal-format
- msgid "type is deprecated: %s"
- msgstr ""
-
--#: tree.c:12623 tree.c:12644
-+#: tree.c:12634 tree.c:12655
- #, gcc-internal-format
- msgid "type is deprecated"
- msgstr ""
-@@ -22278,252 +22352,252 @@
- #. main variant only.
- #.
- #. Convenience macro for matching individual fields.
--#: tree.c:13048
-+#: tree.c:13059
- #, gcc-internal-format
- msgid "type variant differs by "
- msgstr ""
-
--#: tree.c:13088
-+#: tree.c:13099
- #, gcc-internal-format
- msgid "type variant has different TYPE_SIZE_UNIT"
- msgstr ""
-
--#: tree.c:13090
-+#: tree.c:13101
- #, gcc-internal-format
- msgid "type variant's TYPE_SIZE_UNIT"
- msgstr ""
-
--#: tree.c:13092
-+#: tree.c:13103
- #, gcc-internal-format
- msgid "type's TYPE_SIZE_UNIT"
- msgstr ""
-
--#: tree.c:13112
-+#: tree.c:13123
- #, gcc-internal-format
- msgid "type variant with TYPE_ALIAS_SET_KNOWN_P"
- msgstr ""
-
--#: tree.c:13125
-+#: tree.c:13136
- #, gcc-internal-format
- msgid "type variant has different TYPE_VFIELD"
- msgstr ""
-
--#: tree.c:13142
-+#: tree.c:13153
- #, gcc-internal-format
- msgid "type variant has TYPE_METHODS"
- msgstr ""
-
--#: tree.c:13167
-+#: tree.c:13178
- #, gcc-internal-format
- msgid "type variant has different TYPE_BINFO"
- msgstr ""
-
--#: tree.c:13169
-+#: tree.c:13180
- #, gcc-internal-format
- msgid "type variant's TYPE_BINFO"
- msgstr ""
-
--#: tree.c:13171
-+#: tree.c:13182
- #, gcc-internal-format
- msgid "type's TYPE_BINFO"
- msgstr ""
-
--#: tree.c:13209
-+#: tree.c:13220
- #, gcc-internal-format
- msgid "type variant has different TYPE_FIELDS"
- msgstr ""
-
--#: tree.c:13211
-+#: tree.c:13222
- #, gcc-internal-format
- msgid "first mismatch is field"
- msgstr ""
-
--#: tree.c:13213
-+#: tree.c:13224
- #, gcc-internal-format
- msgid "and field"
- msgstr ""
-
--#: tree.c:13230
-+#: tree.c:13241
- #, gcc-internal-format
- msgid "type variant has different TREE_TYPE"
- msgstr ""
-
--#: tree.c:13232 tree.c:13243
-+#: tree.c:13243 tree.c:13254
- #, gcc-internal-format
- msgid "type variant's TREE_TYPE"
- msgstr ""
-
--#: tree.c:13234 tree.c:13245
-+#: tree.c:13245 tree.c:13256
- #, gcc-internal-format
- msgid "type's TREE_TYPE"
- msgstr ""
-
--#: tree.c:13241
-+#: tree.c:13252
- #, gcc-internal-format
- msgid "type is not compatible with its vairant"
- msgstr ""
-
--#: tree.c:13540
-+#: tree.c:13555
- #, gcc-internal-format
- msgid "Main variant is not defined"
- msgstr ""
-
--#: tree.c:13545
-+#: tree.c:13560
- #, gcc-internal-format
- msgid "TYPE_MAIN_VARIANT has different TYPE_MAIN_VARIANT"
- msgstr ""
-
--#: tree.c:13557
-+#: tree.c:13572
- #, gcc-internal-format
- msgid "TYPE_CANONICAL has different TYPE_CANONICAL"
- msgstr ""
-
--#: tree.c:13575
-+#: tree.c:13590
- #, gcc-internal-format
- msgid "TYPE_CANONICAL is not compatible"
- msgstr ""
-
--#: tree.c:13583
-+#: tree.c:13598
- #, gcc-internal-format
- msgid "TYPE_MODE of TYPE_CANONICAL is not compatible"
- msgstr ""
-
--#: tree.c:13591
-+#: tree.c:13606
- #, gcc-internal-format
- msgid "TYPE_CANONICAL of main variant is not main variant"
- msgstr ""
-
--#: tree.c:13607
-+#: tree.c:13622
- #, gcc-internal-format
- msgid "TYPE_VFIELD is not FIELD_DECL nor TREE_LIST"
- msgstr ""
-
--#: tree.c:13617
-+#: tree.c:13632
- #, gcc-internal-format
- msgid "TYPE_NEXT_PTR_TO is not POINTER_TYPE"
- msgstr ""
-
--#: tree.c:13627
-+#: tree.c:13642
- #, gcc-internal-format
- msgid "TYPE_NEXT_REF_TO is not REFERENCE_TYPE"
- msgstr ""
-
--#: tree.c:13645
-+#: tree.c:13660
- #, gcc-internal-format
- msgid "TYPE_MINVAL non-NULL"
- msgstr ""
-
--#: tree.c:13657
-+#: tree.c:13672
- #, gcc-internal-format
- msgid "TYPE_METHODS is not FUNCTION_DECL, TEMPLATE_DECL nor error_mark_node"
- msgstr ""
-
--#: tree.c:13668
-+#: tree.c:13683
- #, gcc-internal-format
- msgid "TYPE_METHOD_BASETYPE is not record nor union"
- msgstr ""
-
--#: tree.c:13679
-+#: tree.c:13694
- #, gcc-internal-format
- msgid "TYPE_OFFSET_BASETYPE is not record nor union"
- msgstr ""
-
--#: tree.c:13697
-+#: tree.c:13712
- #, gcc-internal-format
- msgid "TYPE_ARRAY_MAX_SIZE not INTEGER_CST"
- msgstr ""
-
--#: tree.c:13704
-+#: tree.c:13719
- #, gcc-internal-format
- msgid "TYPE_MAXVAL non-NULL"
- msgstr ""
-
--#: tree.c:13716
-+#: tree.c:13731
- #, gcc-internal-format
- msgid "TYPE_BINFO is not TREE_BINFO"
- msgstr ""
-
--#: tree.c:13724
-+#: tree.c:13739
- #, gcc-internal-format
- msgid "TYPE_BINFO type is not TYPE_MAIN_VARIANT"
- msgstr ""
-
--#: tree.c:13731
-+#: tree.c:13746
- #, gcc-internal-format
- msgid "TYPE_LANG_SLOT_1 (binfo) field is non-NULL"
- msgstr ""
-
--#: tree.c:13747
-+#: tree.c:13762
- #, gcc-internal-format
- msgid "Enum value is not CONST_DECL or INTEGER_CST"
- msgstr ""
-
--#: tree.c:13755
-+#: tree.c:13770
- #, gcc-internal-format
- msgid "Enum value type is not INTEGER_TYPE nor convertible to the enum"
- msgstr ""
-
--#: tree.c:13762
-+#: tree.c:13777
- #, gcc-internal-format
- msgid "Enum value name is not IDENTIFIER_NODE"
- msgstr ""
-
--#: tree.c:13772
-+#: tree.c:13787
- #, gcc-internal-format
- msgid "Array TYPE_DOMAIN is not integer type"
- msgstr ""
-
--#: tree.c:13781
-+#: tree.c:13796
- #, gcc-internal-format
- msgid "TYPE_FIELDS defined in incomplete type"
- msgstr ""
-
--#: tree.c:13801
-+#: tree.c:13816
- #, gcc-internal-format
- msgid "Wrong tree in TYPE_FIELDS list"
- msgstr ""
-
--#: tree.c:13816
-+#: tree.c:13831
- #, gcc-internal-format
- msgid "TYPE_CACHED_VALUES_P is %i while TYPE_CACHED_VALUES is %p"
- msgstr ""
-
--#: tree.c:13822
-+#: tree.c:13837
- #, gcc-internal-format
- msgid "TYPE_CACHED_VALUES is not TREE_VEC"
- msgstr ""
-
--#: tree.c:13835
-+#: tree.c:13850
- #, gcc-internal-format
- msgid "wrong TYPE_CACHED_VALUES entry"
- msgstr ""
-
--#: tree.c:13848
-+#: tree.c:13863
- #, gcc-internal-format
- msgid "TREE_PURPOSE is non-NULL in TYPE_ARG_TYPES list"
- msgstr ""
-
--#: tree.c:13854
-+#: tree.c:13869
- #, gcc-internal-format
- msgid "Wrong entry in TYPE_ARG_TYPES list"
- msgstr ""
-
--#: tree.c:13861
-+#: tree.c:13876
- #, gcc-internal-format
- msgid "TYPE_VALUES_RAW field is non-NULL"
- msgstr ""
-
--#: tree.c:13873
-+#: tree.c:13888
- #, gcc-internal-format
- msgid "TYPE_CACHED_VALUES_P is set while it should not"
- msgstr ""
-
--#: tree.c:13879
-+#: tree.c:13894
- #, gcc-internal-format
- msgid "TYPE_STRING_FLAG is set on wrong type code"
- msgstr ""
-
--#: tree.c:13891
-+#: tree.c:13906
- #, gcc-internal-format
- msgid ""
- "TYPE_STRING_FLAG is set on type that does not look like char nor array of "
-@@ -22530,12 +22604,12 @@
- "chars"
- msgstr ""
-
--#: tree.c:13903
-+#: tree.c:13918
- #, gcc-internal-format
- msgid "TYPE_METHOD_BASETYPE is not main variant"
- msgstr ""
-
--#: tree.c:13910
-+#: tree.c:13925
- #, gcc-internal-format
- msgid "verify_type failed"
- msgstr ""
-@@ -22810,8 +22884,8 @@
- "required to support"
- msgstr ""
-
--#: c-family/c-common.c:1126 c-family/c-common.c:1138 cp/constexpr.c:1619
--#: cp/constexpr.c:3520
-+#: c-family/c-common.c:1126 c-family/c-common.c:1138 cp/constexpr.c:1647
-+#: cp/constexpr.c:3618
- #, gcc-internal-format
- msgid "overflow in constant expression"
- msgstr ""
-@@ -23218,7 +23292,7 @@
- msgid "suggest parentheses around assignment used as truth value"
- msgstr ""
-
--#: c-family/c-common.c:4668 c/c-decl.c:4126 c/c-typeck.c:13534
-+#: c-family/c-common.c:4668 c/c-decl.c:4126 c/c-typeck.c:13544
- #, gcc-internal-format
- msgid "invalid use of %<restrict%>"
- msgstr ""
-@@ -23293,7 +23367,7 @@
- msgid "duplicate case value"
- msgstr ""
-
--#: c-family/c-common.c:6133 c-family/c-common.c:12710
-+#: c-family/c-common.c:6133 c-family/c-common.c:12712
- #, gcc-internal-format
- msgid "previously used here"
- msgstr ""
-@@ -23344,7 +23418,7 @@
- msgstr ""
-
- #: c-family/c-common.c:6684 c-family/c-common.c:6712 c-family/c-common.c:6808
--#: ada/gcc-interface/utils.c:5995
-+#: ada/gcc-interface/utils.c:6021
- #, gcc-internal-format
- msgid "%qE attribute ignored due to conflict with attribute %qs"
- msgstr ""
-@@ -23683,7 +23757,7 @@
- msgid "type was previously declared %qE"
- msgstr ""
-
--#: c-family/c-common.c:8777 cp/class.c:4626
-+#: c-family/c-common.c:8777 cp/class.c:4630
- #, gcc-internal-format
- msgid ""
- "%<transaction_safe_dynamic%> may only be specified for a virtual function"
-@@ -23719,12 +23793,12 @@
- msgid "invalid vector type for attribute %qE"
- msgstr ""
-
--#: c-family/c-common.c:9007 ada/gcc-interface/utils.c:3772
-+#: c-family/c-common.c:9007 ada/gcc-interface/utils.c:3790
- #, gcc-internal-format
- msgid "vector size not an integral multiple of component size"
- msgstr ""
-
--#: c-family/c-common.c:9013 ada/gcc-interface/utils.c:3779
-+#: c-family/c-common.c:9013 ada/gcc-interface/utils.c:3797
- #, gcc-internal-format
- msgid "zero vector size"
- msgstr ""
-@@ -23734,23 +23808,23 @@
- msgid "number of components of the vector not a power of two"
- msgstr ""
-
--#: c-family/c-common.c:9049 ada/gcc-interface/utils.c:5852
-+#: c-family/c-common.c:9049 ada/gcc-interface/utils.c:5878
- #, gcc-internal-format
- msgid "nonnull attribute without arguments on a non-prototype"
- msgstr ""
-
--#: c-family/c-common.c:9068 ada/gcc-interface/utils.c:5866
-+#: c-family/c-common.c:9068 ada/gcc-interface/utils.c:5892
- #, gcc-internal-format, gfc-internal-format
- msgid "nonnull argument has invalid operand number (argument %lu)"
- msgstr ""
-
--#: c-family/c-common.c:9090 ada/gcc-interface/utils.c:5888
-+#: c-family/c-common.c:9090 ada/gcc-interface/utils.c:5914
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
- msgstr ""
-
--#: c-family/c-common.c:9098 ada/gcc-interface/utils.c:5897
-+#: c-family/c-common.c:9098 ada/gcc-interface/utils.c:5923
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
-@@ -23791,12 +23865,12 @@
- msgid "%qE attribute only applies to variadic functions"
- msgstr ""
-
--#: c-family/c-common.c:9382 ada/gcc-interface/utils.c:5939
-+#: c-family/c-common.c:9382 ada/gcc-interface/utils.c:5965
- #, gcc-internal-format
- msgid "requested position is not an integer constant"
- msgstr ""
-
--#: c-family/c-common.c:9390 ada/gcc-interface/utils.c:5946
-+#: c-family/c-common.c:9390 ada/gcc-interface/utils.c:5972
- #, gcc-internal-format
- msgid "requested position is less than zero"
- msgstr ""
-@@ -23826,7 +23900,7 @@
- msgid "not enough arguments to function %qE"
- msgstr ""
-
--#: c-family/c-common.c:9815 c-family/c-common.c:10816 c/c-typeck.c:3213
-+#: c-family/c-common.c:9815 c-family/c-common.c:10818 c/c-typeck.c:3213
- #, gcc-internal-format
- msgid "too many arguments to function %qE"
- msgstr ""
-@@ -24096,102 +24170,102 @@
- msgid "invalid type argument of implicit conversion (have %qT)"
- msgstr ""
-
--#: c-family/c-common.c:10666 cp/init.c:2801 cp/init.c:2820
-+#: c-family/c-common.c:10666 cp/init.c:2806 cp/init.c:2825
- #, gcc-internal-format
- msgid "size of array is too large"
- msgstr ""
-
--#: c-family/c-common.c:10719 c-family/c-common.c:10790 c/c-typeck.c:3459
-+#: c-family/c-common.c:10721 c-family/c-common.c:10792 c/c-typeck.c:3459
- #, gcc-internal-format
- msgid "too few arguments to function %qE"
- msgstr ""
-
--#: c-family/c-common.c:10749
-+#: c-family/c-common.c:10751
- #, gcc-internal-format
- msgid "operand type %qT is incompatible with argument %d of %qE"
- msgstr ""
-
--#: c-family/c-common.c:10883
-+#: c-family/c-common.c:10885
- #, gcc-internal-format
- msgid "incorrect number of arguments to function %qE"
- msgstr ""
-
--#: c-family/c-common.c:10898
-+#: c-family/c-common.c:10900
- #, gcc-internal-format
- msgid "argument 1 of %qE must be a non-void pointer type"
- msgstr ""
-
--#: c-family/c-common.c:10907
-+#: c-family/c-common.c:10909
- #, gcc-internal-format
- msgid "argument 1 of %qE must be a pointer to a constant size type"
- msgstr ""
-
--#: c-family/c-common.c:10918
-+#: c-family/c-common.c:10920
- #, gcc-internal-format
- msgid "argument 1 of %qE must be a pointer to a nonzero size object"
- msgstr ""
-
--#: c-family/c-common.c:10933
-+#: c-family/c-common.c:10935
- #, gcc-internal-format
- msgid "argument %d of %qE must be a pointer type"
- msgstr ""
-
--#: c-family/c-common.c:10941
-+#: c-family/c-common.c:10943
- #, gcc-internal-format
- msgid "size mismatch in argument %d of %qE"
- msgstr ""
-
--#: c-family/c-common.c:10957
-+#: c-family/c-common.c:10959
- #, gcc-internal-format
- msgid "invalid memory model argument %d of %qE"
- msgstr ""
-
--#: c-family/c-common.c:10964
-+#: c-family/c-common.c:10966
- #, gcc-internal-format
- msgid "non-integer memory model argument %d of %qE"
- msgstr ""
-
--#: c-family/c-common.c:11562
-+#: c-family/c-common.c:11564
- #, gcc-internal-format
- msgid "array subscript has type %<char%>"
- msgstr ""
-
--#: c-family/c-common.c:11597 c-family/c-common.c:11600
-+#: c-family/c-common.c:11599 c-family/c-common.c:11602
- #, gcc-internal-format
- msgid "suggest parentheses around %<+%> inside %<<<%>"
- msgstr ""
-
--#: c-family/c-common.c:11603 c-family/c-common.c:11606
-+#: c-family/c-common.c:11605 c-family/c-common.c:11608
- #, gcc-internal-format
- msgid "suggest parentheses around %<-%> inside %<<<%>"
- msgstr ""
-
--#: c-family/c-common.c:11612 c-family/c-common.c:11615
-+#: c-family/c-common.c:11614 c-family/c-common.c:11617
- #, gcc-internal-format
- msgid "suggest parentheses around %<+%> inside %<>>%>"
- msgstr ""
-
--#: c-family/c-common.c:11618 c-family/c-common.c:11621
-+#: c-family/c-common.c:11620 c-family/c-common.c:11623
- #, gcc-internal-format
- msgid "suggest parentheses around %<-%> inside %<>>%>"
- msgstr ""
-
--#: c-family/c-common.c:11627 c-family/c-common.c:11630
-+#: c-family/c-common.c:11629 c-family/c-common.c:11632
- #, gcc-internal-format
- msgid "suggest parentheses around %<&&%> within %<||%>"
- msgstr ""
-
--#: c-family/c-common.c:11637 c-family/c-common.c:11641
-+#: c-family/c-common.c:11639 c-family/c-common.c:11643
- #, gcc-internal-format
- msgid "suggest parentheses around arithmetic in operand of %<|%>"
- msgstr ""
-
--#: c-family/c-common.c:11645 c-family/c-common.c:11648
-+#: c-family/c-common.c:11647 c-family/c-common.c:11650
- #, gcc-internal-format
- msgid "suggest parentheses around comparison in operand of %<|%>"
- msgstr ""
-
--#: c-family/c-common.c:11653
-+#: c-family/c-common.c:11655
- #, gcc-internal-format
- msgid ""
- "suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!"
-@@ -24198,32 +24272,32 @@
- "%> to %<~%>"
- msgstr ""
-
--#: c-family/c-common.c:11661 c-family/c-common.c:11665
-+#: c-family/c-common.c:11663 c-family/c-common.c:11667
- #, gcc-internal-format
- msgid "suggest parentheses around arithmetic in operand of %<^%>"
- msgstr ""
-
--#: c-family/c-common.c:11669 c-family/c-common.c:11672
-+#: c-family/c-common.c:11671 c-family/c-common.c:11674
- #, gcc-internal-format
- msgid "suggest parentheses around comparison in operand of %<^%>"
- msgstr ""
-
--#: c-family/c-common.c:11678 c-family/c-common.c:11681
-+#: c-family/c-common.c:11680 c-family/c-common.c:11683
- #, gcc-internal-format
- msgid "suggest parentheses around %<+%> in operand of %<&%>"
- msgstr ""
-
--#: c-family/c-common.c:11684 c-family/c-common.c:11687
-+#: c-family/c-common.c:11686 c-family/c-common.c:11689
- #, gcc-internal-format
- msgid "suggest parentheses around %<-%> in operand of %<&%>"
- msgstr ""
-
--#: c-family/c-common.c:11691 c-family/c-common.c:11694
-+#: c-family/c-common.c:11693 c-family/c-common.c:11696
- #, gcc-internal-format
- msgid "suggest parentheses around comparison in operand of %<&%>"
- msgstr ""
-
--#: c-family/c-common.c:11699
-+#: c-family/c-common.c:11701
- #, gcc-internal-format
- msgid ""
- "suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!"
-@@ -24230,94 +24304,94 @@
- "%> to %<~%>"
- msgstr ""
-
--#: c-family/c-common.c:11706 c-family/c-common.c:11709
-+#: c-family/c-common.c:11708 c-family/c-common.c:11711
- #, gcc-internal-format
- msgid "suggest parentheses around comparison in operand of %<==%>"
- msgstr ""
-
--#: c-family/c-common.c:11714 c-family/c-common.c:11717
-+#: c-family/c-common.c:11716 c-family/c-common.c:11719
- #, gcc-internal-format
- msgid "suggest parentheses around comparison in operand of %<!=%>"
- msgstr ""
-
--#: c-family/c-common.c:11727 c-family/c-common.c:11733
-+#: c-family/c-common.c:11729 c-family/c-common.c:11735
- #, gcc-internal-format
- msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning"
- msgstr ""
-
--#: c-family/c-common.c:11749
-+#: c-family/c-common.c:11751
- #, gcc-internal-format
- msgid "label %q+D defined but not used"
- msgstr ""
-
--#: c-family/c-common.c:11751
-+#: c-family/c-common.c:11753
- #, gcc-internal-format
- msgid "label %q+D declared but not defined"
- msgstr ""
-
--#: c-family/c-common.c:11767
-+#: c-family/c-common.c:11769
- #, gcc-internal-format
- msgid "division by zero"
- msgstr ""
-
--#: c-family/c-common.c:11799 c/c-typeck.c:11048 c/c-typeck.c:11205
-+#: c-family/c-common.c:11801 c/c-typeck.c:11058 c/c-typeck.c:11215
- #: cp/typeck.c:4820
- #, gcc-internal-format
- msgid "comparison between types %qT and %qT"
- msgstr ""
-
--#: c-family/c-common.c:11850
-+#: c-family/c-common.c:11852
- #, gcc-internal-format
- msgid "comparison between signed and unsigned integer expressions"
- msgstr ""
-
--#: c-family/c-common.c:11901
-+#: c-family/c-common.c:11903
- #, gcc-internal-format
- msgid "promoted ~unsigned is always non-zero"
- msgstr ""
-
--#: c-family/c-common.c:11904
-+#: c-family/c-common.c:11906
- #, gcc-internal-format
- msgid "comparison of promoted ~unsigned with constant"
- msgstr ""
-
--#: c-family/c-common.c:11914
-+#: c-family/c-common.c:11916
- #, gcc-internal-format
- msgid "comparison of promoted ~unsigned with unsigned"
- msgstr ""
-
--#: c-family/c-common.c:11965
-+#: c-family/c-common.c:11967
- #, gcc-internal-format
- msgid "unused parameter %qD"
- msgstr ""
-
--#: c-family/c-common.c:12109
-+#: c-family/c-common.c:12111
- #, gcc-internal-format
- msgid "typedef %qD locally defined but not used"
- msgstr ""
-
--#: c-family/c-common.c:12146 c-family/c-common.c:12172
-+#: c-family/c-common.c:12148 c-family/c-common.c:12174
- #, gcc-internal-format
- msgid "comparison of constant %qE with boolean expression is always false"
- msgstr ""
-
--#: c-family/c-common.c:12149 c-family/c-common.c:12169
-+#: c-family/c-common.c:12151 c-family/c-common.c:12171
- #, gcc-internal-format
- msgid "comparison of constant %qE with boolean expression is always true"
- msgstr ""
-
--#: c-family/c-common.c:12218
-+#: c-family/c-common.c:12220
- #, gcc-internal-format
- msgid "result of %qE requires %u bits to represent, but %qT only has %u bits"
- msgstr ""
-
--#: c-family/c-common.c:12467
-+#: c-family/c-common.c:12469
- #, gcc-internal-format
- msgid "index value is out of bound"
- msgstr ""
-
--#: c-family/c-common.c:12539 c-family/c-common.c:12587
--#: c-family/c-common.c:12602 cp/call.c:4701 cp/call.c:4708
-+#: c-family/c-common.c:12541 c-family/c-common.c:12589
-+#: c-family/c-common.c:12604 cp/call.c:4701 cp/call.c:4708
- #, gcc-internal-format
- msgid "conversion of scalar %qT to vector %qT involves truncation"
- msgstr ""
-@@ -24324,22 +24398,22 @@
-
- #. Reject arguments that are built-in functions with
- #. no library fallback.
--#: c-family/c-common.c:12673
-+#: c-family/c-common.c:12675
- #, gcc-internal-format
- msgid "built-in function %qE must be directly called"
- msgstr ""
-
--#: c-family/c-common.c:12709
-+#: c-family/c-common.c:12711
- #, gcc-internal-format
- msgid "duplicated %<if%> condition"
- msgstr ""
-
--#: c-family/c-common.c:12736 c/c-decl.c:5913
-+#: c-family/c-common.c:12738 c/c-decl.c:5923
- #, gcc-internal-format
- msgid "size of array %qE is too large"
- msgstr ""
-
--#: c-family/c-common.c:12738 c/c-decl.c:5916
-+#: c-family/c-common.c:12740 c/c-decl.c:5926
- #, gcc-internal-format
- msgid "size of unnamed array is too large"
- msgstr ""
-@@ -24811,7 +24885,7 @@
- msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
- msgstr ""
-
--#: c-family/c-omp.c:480 cp/semantics.c:8081
-+#: c-family/c-omp.c:480 cp/semantics.c:8082
- #, gcc-internal-format
- msgid "invalid type for iteration variable %qE"
- msgstr ""
-@@ -24821,22 +24895,22 @@
- msgid "%qE is not initialized"
- msgstr ""
-
--#: c-family/c-omp.c:514 cp/semantics.c:7969
-+#: c-family/c-omp.c:514 cp/semantics.c:7970
- #, gcc-internal-format
- msgid "missing controlling predicate"
- msgstr ""
-
--#: c-family/c-omp.c:599 cp/semantics.c:7633
-+#: c-family/c-omp.c:599 cp/semantics.c:7634
- #, gcc-internal-format
- msgid "invalid controlling predicate"
- msgstr ""
-
--#: c-family/c-omp.c:606 cp/semantics.c:7975
-+#: c-family/c-omp.c:606 cp/semantics.c:7976
- #, gcc-internal-format
- msgid "missing increment expression"
- msgstr ""
-
--#: c-family/c-omp.c:670 cp/semantics.c:7748
-+#: c-family/c-omp.c:670 cp/semantics.c:7749
- #, gcc-internal-format
- msgid "invalid increment expression"
- msgstr ""
-@@ -25348,37 +25422,37 @@
- msgid "<type-error>"
- msgstr ""
-
--#: c-family/c-pretty-print.c:366
-+#: c-family/c-pretty-print.c:369
- #, gcc-internal-format
- msgid "<unnamed-unsigned:"
- msgstr ""
-
--#: c-family/c-pretty-print.c:370
-+#: c-family/c-pretty-print.c:373
- #, gcc-internal-format
- msgid "<unnamed-float:"
- msgstr ""
-
--#: c-family/c-pretty-print.c:373
-+#: c-family/c-pretty-print.c:376
- #, gcc-internal-format
- msgid "<unnamed-fixed:"
- msgstr ""
-
--#: c-family/c-pretty-print.c:388
-+#: c-family/c-pretty-print.c:391
- #, gcc-internal-format
- msgid "<typedef-error>"
- msgstr ""
-
--#: c-family/c-pretty-print.c:403
-+#: c-family/c-pretty-print.c:406
- #, gcc-internal-format
- msgid "<tag-error>"
- msgstr ""
-
--#: c-family/c-pretty-print.c:1241
-+#: c-family/c-pretty-print.c:1244
- #, gcc-internal-format
- msgid "<erroneous-expression>"
- msgstr ""
-
--#: c-family/c-pretty-print.c:1245 cp/cxx-pretty-print.c:140
-+#: c-family/c-pretty-print.c:1248 cp/cxx-pretty-print.c:140
- #, gcc-internal-format
- msgid "<return-value>"
- msgstr ""
-@@ -25388,7 +25462,7 @@
- msgid "wrong type argument to %s"
- msgstr ""
-
--#: c-family/cilk.c:93 cp/parser.c:6518
-+#: c-family/cilk.c:93 cp/parser.c:6523
- #, gcc-internal-format
- msgid "%<_Cilk_spawn%> may only be used inside a function"
- msgstr ""
-@@ -25468,47 +25542,47 @@
- msgid "-mcpu=%s has invalid silicon revision"
- msgstr ""
-
--#: common/config/i386/i386-common.c:985
-+#: common/config/i386/i386-common.c:970
- #, gcc-internal-format
- msgid "-malign-loops is obsolete, use -falign-loops"
- msgstr ""
-
--#: common/config/i386/i386-common.c:987
-+#: common/config/i386/i386-common.c:972
- #, gcc-internal-format, gfc-internal-format
- msgid "-malign-loops=%d is not between 0 and %d"
- msgstr ""
-
--#: common/config/i386/i386-common.c:994
-+#: common/config/i386/i386-common.c:979
- #, gcc-internal-format
- msgid "-malign-jumps is obsolete, use -falign-jumps"
- msgstr ""
-
--#: common/config/i386/i386-common.c:996
-+#: common/config/i386/i386-common.c:981
- #, gcc-internal-format, gfc-internal-format
- msgid "-malign-jumps=%d is not between 0 and %d"
- msgstr ""
-
--#: common/config/i386/i386-common.c:1004
-+#: common/config/i386/i386-common.c:989
- #, gcc-internal-format
- msgid "-malign-functions is obsolete, use -falign-functions"
- msgstr ""
-
--#: common/config/i386/i386-common.c:1006
-+#: common/config/i386/i386-common.c:991
- #, gcc-internal-format, gfc-internal-format
- msgid "-malign-functions=%d is not between 0 and %d"
- msgstr ""
-
--#: common/config/i386/i386-common.c:1015
-+#: common/config/i386/i386-common.c:1000
- #, gcc-internal-format, gfc-internal-format
- msgid "-mbranch-cost=%d is not between 0 and 5"
- msgstr ""
-
--#: common/config/i386/i386-common.c:1069
-+#: common/config/i386/i386-common.c:1054
- #, gcc-internal-format
- msgid "%<-fsplit-stack%> currently only supported on GNU/Linux"
- msgstr ""
-
--#: common/config/i386/i386-common.c:1075
-+#: common/config/i386/i386-common.c:1060
- #, gcc-internal-format
- msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
- msgstr ""
-@@ -25653,53 +25727,53 @@
- msgid "sysctl for kern.osversion failed: %m"
- msgstr ""
-
--#: config/darwin-driver.c:84
-+#: config/darwin-driver.c:85
- #, gcc-internal-format
- msgid "couldn%'t understand kern.osversion %q.*s"
- msgstr ""
-
- #. Arbitrary limit, number should be like xx.yy.zz
--#: config/darwin-driver.c:124
-+#: config/darwin-driver.c:125
- #, gcc-internal-format
- msgid "couldn%'t understand version %s\n"
- msgstr ""
-
--#: config/darwin-driver.c:177
-+#: config/darwin-driver.c:178
- #, gcc-internal-format, gfc-internal-format
- msgid "this compiler does not support %s"
- msgstr ""
-
--#: config/darwin-driver.c:232
-+#: config/darwin-driver.c:233
- #, gcc-internal-format
- msgid "this compiler does not support PowerPC (arch flags ignored)"
- msgstr ""
-
--#: config/darwin-driver.c:236
-+#: config/darwin-driver.c:237
- #, gcc-internal-format, gfc-internal-format
- msgid "%s conflicts with i386 (arch flags ignored)"
- msgstr ""
-
--#: config/darwin-driver.c:244
-+#: config/darwin-driver.c:245
- #, gcc-internal-format, gfc-internal-format
- msgid "%s conflicts with x86_64 (arch flags ignored)"
- msgstr ""
-
--#: config/darwin-driver.c:251
-+#: config/darwin-driver.c:252
- #, gcc-internal-format
- msgid "this compiler does not support X86 (arch flags ignored)"
- msgstr ""
-
--#: config/darwin-driver.c:255
-+#: config/darwin-driver.c:256
- #, gcc-internal-format, gfc-internal-format
- msgid "%s conflicts with ppc (arch flags ignored)"
- msgstr ""
-
--#: config/darwin-driver.c:263
-+#: config/darwin-driver.c:264
- #, gcc-internal-format, gfc-internal-format
- msgid "%s conflicts with ppc64 (arch flags ignored)"
- msgstr ""
-
--#: config/darwin.c:1650
-+#: config/darwin.c:1691
- #, gcc-internal-format
- msgid ""
- "the use of _OBJC_-prefixed variable names to select meta-data sections is "
-@@ -25706,34 +25780,34 @@
- "deprecated at 4.6 and will be removed in 4.7"
- msgstr ""
-
--#: config/darwin.c:1905
-+#: config/darwin.c:1946
- #, gcc-internal-format, gfc-internal-format
- msgid "failed to open temporary file %s for LTO output"
- msgstr ""
-
--#: config/darwin.c:1994
-+#: config/darwin.c:2035
- #, gcc-internal-format
- msgid ""
- "%qE 2.95 vtable-compatibility attribute applies only when compiling a kext"
- msgstr ""
-
--#: config/darwin.c:2001
-+#: config/darwin.c:2042
- #, gcc-internal-format
- msgid "%qE 2.95 vtable-compatibility attribute applies only to C++ classes"
- msgstr ""
-
--#: config/darwin.c:2713
-+#: config/darwin.c:2758
- #, gcc-internal-format
- msgid ""
- "protected visibility attribute not supported in this configuration; ignored"
- msgstr ""
-
--#: config/darwin.c:2899
-+#: config/darwin.c:2944
- #, gcc-internal-format, gfc-internal-format
- msgid "failed to open temporary file %s with LTO output"
- msgstr ""
-
--#: config/darwin.c:3072
-+#: config/darwin.c:3123
- #, gcc-internal-format
- msgid ""
- "%<-fobjc-abi-version%> >= 2 must be used for %<-m64%> targets with %<-fnext-"
-@@ -25740,7 +25814,7 @@
- "runtime%>"
- msgstr ""
-
--#: config/darwin.c:3076
-+#: config/darwin.c:3127
- #, gcc-internal-format
- msgid ""
- "%<-fobjc-abi-version%> >= 2 is not supported on %<-m32%> targets with %<-"
-@@ -25747,33 +25821,33 @@
- "fnext-runtime%>"
- msgstr ""
-
--#: config/darwin.c:3161
-+#: config/darwin.c:3212
- #, gcc-internal-format
- msgid ""
- "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>"
- msgstr ""
-
--#: config/darwin.c:3349
-+#: config/darwin.c:3400
- #, gcc-internal-format
- msgid "built-in function %qD requires the %<-mconstant-cfstrings%> flag"
- msgstr ""
-
--#: config/darwin.c:3356
-+#: config/darwin.c:3407
- #, gcc-internal-format
- msgid "built-in function %qD takes one argument only"
- msgstr ""
-
--#: config/darwin.c:3442
-+#: config/darwin.c:3493
- #, gcc-internal-format
- msgid "CFString literal is missing"
- msgstr ""
-
--#: config/darwin.c:3453
-+#: config/darwin.c:3504
- #, gcc-internal-format
- msgid "CFString literal expression is not a string constant"
- msgstr ""
-
--#: config/darwin.c:3476
-+#: config/darwin.c:3527
- #, gcc-internal-format, gfc-internal-format
- msgid "%s in CFString literal"
- msgstr ""
-@@ -25853,7 +25927,7 @@
- #. coalesced sections. Weak aliases (or any other kind of aliases) are
- #. not supported. Weak symbols that aren't visible outside the .s file
- #. are not supported.
--#: config/darwin.h:453
-+#: config/darwin.h:478
- #, gcc-internal-format
- msgid "alias definitions not supported in Mach-O; ignored"
- msgstr ""
-@@ -26039,12 +26113,12 @@
- msgid "malformed target %s list %qs"
- msgstr ""
-
--#: config/aarch64/aarch64.c:10813
-+#: config/aarch64/aarch64.c:10811
- #, gcc-internal-format
- msgid "%Klane %wd out of range %wd - %wd"
- msgstr ""
-
--#: config/aarch64/aarch64.c:10815
-+#: config/aarch64/aarch64.c:10813
- #, gcc-internal-format
- msgid "lane %wd out of range %wd - %wd"
- msgstr ""
-@@ -26692,14 +26766,14 @@
- msgid "Thumb-1 hard-float VFP ABI"
- msgstr ""
-
--#: config/arm/arm.c:6456 config/arm/arm.c:6474 config/avr/avr.c:8988
--#: config/avr/avr.c:9004 config/bfin/bfin.c:4672 config/bfin/bfin.c:4733
-+#: config/arm/arm.c:6456 config/arm/arm.c:6474 config/avr/avr.c:9024
-+#: config/avr/avr.c:9040 config/bfin/bfin.c:4672 config/bfin/bfin.c:4733
- #: config/bfin/bfin.c:4762 config/epiphany/epiphany.c:472
--#: config/h8300/h8300.c:5453 config/i386/i386.c:6817 config/i386/i386.c:12002
--#: config/i386/i386.c:44513 config/i386/i386.c:44563 config/i386/i386.c:44633
-+#: config/h8300/h8300.c:5453 config/i386/i386.c:6810 config/i386/i386.c:12020
-+#: config/i386/i386.c:44685 config/i386/i386.c:44735 config/i386/i386.c:44805
- #: config/m68k/m68k.c:748 config/mcore/mcore.c:3052 config/mep/mep.c:3884
- #: config/mep/mep.c:3898 config/mep/mep.c:3972 config/nvptx/nvptx.c:3794
--#: config/rl78/rl78.c:756 config/rs6000/rs6000.c:32343 config/rx/rx.c:2695
-+#: config/rl78/rl78.c:756 config/rs6000/rs6000.c:32410 config/rx/rx.c:2695
- #: config/rx/rx.c:2721 config/s390/s390.c:1061 config/sh/sh.c:9780
- #: config/sh/sh.c:9798 config/sh/sh.c:9827 config/sh/sh.c:9909
- #: config/sh/sh.c:9932 config/spu/spu.c:3680 config/stormy16/stormy16.c:2211
-@@ -26708,27 +26782,27 @@
- msgid "%qE attribute only applies to functions"
- msgstr ""
-
--#: config/arm/arm.c:12912
-+#: config/arm/arm.c:12907
- #, gcc-internal-format
- msgid "%K%s %wd out of range %wd - %wd"
- msgstr ""
-
--#: config/arm/arm.c:12915
-+#: config/arm/arm.c:12910
- #, gcc-internal-format
- msgid "%s %wd out of range %wd - %wd"
- msgstr ""
-
--#: config/arm/arm.c:23605
-+#: config/arm/arm.c:23604
- #, gcc-internal-format
- msgid "unable to compute real location of stacked parameter"
- msgstr ""
-
--#: config/arm/arm.c:24216
-+#: config/arm/arm.c:24215
- #, gcc-internal-format
- msgid "Unexpected thumb1 far jump"
- msgstr ""
-
--#: config/arm/arm.c:24483
-+#: config/arm/arm.c:24482
- #, gcc-internal-format
- msgid "no low registers available for popping high registers"
- msgstr ""
-@@ -26738,23 +26812,23 @@
- msgid "interrupt Service Routines cannot be coded in Thumb mode"
- msgstr ""
-
--#: config/arm/arm.c:24956
-+#: config/arm/arm.c:24960
- #, gcc-internal-format
- msgid "-fstack-check=specific for Thumb-1"
- msgstr ""
-
--#: config/arm/arm.c:30017 config/i386/i386.c:6041 config/s390/s390.c:14532
-+#: config/arm/arm.c:30021 config/i386/i386.c:6034 config/s390/s390.c:14534
- #, gcc-internal-format
- msgid "attribute %<target%> argument not a string"
- msgstr ""
-
--#: config/arm/arm.c:30040
-+#: config/arm/arm.c:30044
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid fpu for attribute(target(\"%s\"))"
- msgstr ""
-
--#: config/arm/arm.c:30046 config/i386/i386.c:6107 config/i386/i386.c:6154
--#: config/s390/s390.c:14598 config/s390/s390.c:14648 config/s390/s390.c:14665
-+#: config/arm/arm.c:30050 config/i386/i386.c:6100 config/i386/i386.c:6147
-+#: config/s390/s390.c:14600 config/s390/s390.c:14650 config/s390/s390.c:14667
- #, gcc-internal-format, gfc-internal-format
- msgid "attribute(target(\"%s\")) is unknown"
- msgstr ""
-@@ -26883,68 +26957,68 @@
- msgid "accessing program memory with data memory address"
- msgstr ""
-
--#: config/avr/avr.c:2850
-+#: config/avr/avr.c:2886
- #, gcc-internal-format, gfc-internal-format
- msgid "fixed register %s used to pass parameter to function"
- msgstr ""
-
--#: config/avr/avr.c:3121
-+#: config/avr/avr.c:3157
- #, gcc-internal-format
- msgid "writing to address space %qs not supported"
- msgstr ""
-
--#: config/avr/avr.c:9021 config/bfin/bfin.c:4794 config/i386/winnt.c:58
-+#: config/avr/avr.c:9057 config/bfin/bfin.c:4794 config/i386/winnt.c:58
- #: config/mep/mep.c:3788 config/mep/mep.c:3926
- #, gcc-internal-format
- msgid "%qE attribute only applies to variables"
- msgstr ""
-
--#: config/avr/avr.c:9032 config/mep/mep.c:3936
-+#: config/avr/avr.c:9068 config/mep/mep.c:3936
- #, gcc-internal-format
- msgid "%qE attribute allows only an integer constant argument"
- msgstr ""
-
--#: config/avr/avr.c:9042
-+#: config/avr/avr.c:9078
- #, gcc-internal-format
- msgid "%qE attribute address out of range"
- msgstr ""
-
--#: config/avr/avr.c:9055
-+#: config/avr/avr.c:9091
- #, gcc-internal-format
- msgid "both %s and %qE attribute provide address"
- msgstr ""
-
--#: config/avr/avr.c:9065
-+#: config/avr/avr.c:9101
- #, gcc-internal-format
- msgid "%qE attribute on non-volatile variable"
- msgstr ""
-
--#: config/avr/avr.c:9269
-+#: config/avr/avr.c:9305
- #, gcc-internal-format
- msgid "%qT uses address space %qs beyond flash of %d KiB"
- msgstr ""
-
--#: config/avr/avr.c:9272
-+#: config/avr/avr.c:9308
- #, gcc-internal-format
- msgid "%s %q+D uses address space %qs beyond flash of %d KiB"
- msgstr ""
-
--#: config/avr/avr.c:9278
-+#: config/avr/avr.c:9314
- #, gcc-internal-format
- msgid "pointer targeting address space %qs must be const in %qT"
- msgstr ""
-
--#: config/avr/avr.c:9281
-+#: config/avr/avr.c:9317
- #, gcc-internal-format
- msgid "pointer targeting address space %qs must be const in %s %q+D"
- msgstr ""
-
--#: config/avr/avr.c:9319
-+#: config/avr/avr.c:9355
- #, gcc-internal-format
- msgid "variable %q+D located in address space %qs beyond flash of %d KiB"
- msgstr ""
-
--#: config/avr/avr.c:9324
-+#: config/avr/avr.c:9360
- #, gcc-internal-format
- msgid ""
- "variable %q+D located in address space %qs which is not supported for "
-@@ -26951,7 +27025,7 @@
- "architecture %qs"
- msgstr ""
-
--#: config/avr/avr.c:9340
-+#: config/avr/avr.c:9376
- #, gcc-internal-format
- msgid ""
- "variable %q+D must be const in order to be put into read-only section by "
-@@ -26958,47 +27032,47 @@
- "means of %qs"
- msgstr ""
-
--#: config/avr/avr.c:9380
-+#: config/avr/avr.c:9416
- #, gcc-internal-format
- msgid "static IO declaration for %q+D needs an address"
- msgstr ""
-
--#: config/avr/avr.c:9412
-+#: config/avr/avr.c:9448
- #, gcc-internal-format
- msgid "IO definition for %q+D needs an address"
- msgstr ""
-
--#: config/avr/avr.c:9519
-+#: config/avr/avr.c:9555
- #, gcc-internal-format
- msgid "only uninitialized variables can be placed in the .noinit section"
- msgstr ""
-
--#: config/avr/avr.c:9560
-+#: config/avr/avr.c:9596
- #, gcc-internal-format
- msgid "uninitialized variable %q+D put into program memory area"
- msgstr ""
-
--#: config/avr/avr.c:9672
-+#: config/avr/avr.c:9708
- #, gcc-internal-format
- msgid "architecture %qs supported for assembler only"
- msgstr ""
-
--#: config/avr/avr.c:12191
-+#: config/avr/avr.c:12231
- #, gcc-internal-format
- msgid "conversion from address space %qs to address space %qs"
- msgstr ""
-
--#: config/avr/avr.c:13247
-+#: config/avr/avr.c:13287
- #, gcc-internal-format, gfc-internal-format
- msgid "%s expects a compile time integer constant"
- msgstr ""
-
--#: config/avr/avr.c:13261
-+#: config/avr/avr.c:13301
- #, gcc-internal-format, gfc-internal-format
- msgid "%s expects a compile time long integer constant as first argument"
- msgstr ""
-
--#: config/avr/avr.c:13289
-+#: config/avr/avr.c:13329
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "rounding to %d bits has no effect for fixed-point value with %d fractional "
-@@ -27005,7 +27079,7 @@
- "bits"
- msgstr ""
-
--#: config/avr/avr.c:13298
-+#: config/avr/avr.c:13338
- #, gcc-internal-format
- msgid "rounding result will always be 0"
- msgstr ""
-@@ -27408,23 +27482,23 @@
- msgid "can%'t set position in PCH file: %m"
- msgstr ""
-
--#: config/i386/i386.c:4088
-+#: config/i386/i386.c:4089
- #, gcc-internal-format, gfc-internal-format
- msgid "wrong arg %s to option %s"
- msgstr ""
-
--#: config/i386/i386.c:4095
-+#: config/i386/i386.c:4096
- #, gcc-internal-format, gfc-internal-format
- msgid "size ranges of option %s should be increasing"
- msgstr ""
-
--#: config/i386/i386.c:4106
-+#: config/i386/i386.c:4107
- #, gcc-internal-format, gfc-internal-format
- msgid "wrong stringop strategy name %s specified for option %s"
- msgstr ""
-
- #. rep; movq isn't available in 32-bit code.
--#: config/i386/i386.c:4116
-+#: config/i386/i386.c:4117
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "stringop strategy name %s specified for option %s not supported for 32-bit "
-@@ -27431,22 +27505,22 @@
- "code"
- msgstr ""
-
--#: config/i386/i386.c:4131
-+#: config/i386/i386.c:4132
- #, gcc-internal-format, gfc-internal-format
- msgid "unknown alignment %s specified for option %s"
- msgstr ""
-
--#: config/i386/i386.c:4142
-+#: config/i386/i386.c:4143
- #, gcc-internal-format, gfc-internal-format
- msgid "the max value for the last size range should be -1 for option %s"
- msgstr ""
-
--#: config/i386/i386.c:4150
-+#: config/i386/i386.c:4151
- #, gcc-internal-format, gfc-internal-format
- msgid "too many size ranges specified in option %s"
- msgstr ""
-
--#: config/i386/i386.c:4204
-+#: config/i386/i386.c:4205
- #, gcc-internal-format, gfc-internal-format
- msgid "Unknown parameter to option -mtune-ctrl: %s"
- msgstr ""
-@@ -27485,7 +27559,7 @@
- msgid "code model %qs not supported in x32 mode"
- msgstr ""
-
--#: config/i386/i386.c:4739 config/i386/i386.c:4748 config/i386/i386.c:5837
-+#: config/i386/i386.c:4739 config/i386/i386.c:4748 config/i386/i386.c:5831
- #, gcc-internal-format, gfc-internal-format
- msgid "code model %s does not support PIC mode"
- msgstr ""
-@@ -27500,284 +27574,284 @@
- msgid "%i-bit mode not compiled in"
- msgstr ""
-
--#: config/i386/i386.c:4794 config/i386/i386.c:5025
-+#: config/i386/i386.c:4794 config/i386/i386.c:5022
- #, gcc-internal-format
- msgid "CPU you selected does not support x86-64 instruction set"
- msgstr ""
-
--#: config/i386/i386.c:4986 config/i386/i386.c:4989
-+#: config/i386/i386.c:4983 config/i386/i386.c:4986
- #, gcc-internal-format
- msgid "Intel MPX does not support x32"
- msgstr ""
-
--#: config/i386/i386.c:4992
-+#: config/i386/i386.c:4989
- #, gcc-internal-format, gfc-internal-format
- msgid "generic CPU can be used only for %stune=%s %s"
- msgstr ""
-
--#: config/i386/i386.c:4995
-+#: config/i386/i386.c:4992
- #, gcc-internal-format, gfc-internal-format
- msgid "intel CPU can be used only for %stune=%s %s"
- msgstr ""
-
--#: config/i386/i386.c:4998
-+#: config/i386/i386.c:4995
- #, gcc-internal-format, gfc-internal-format
- msgid "bad value (%s) for %sarch=%s %s"
- msgstr ""
-
--#: config/i386/i386.c:5041
-+#: config/i386/i386.c:5038
- #, gcc-internal-format, gfc-internal-format
- msgid "bad value (%s) for %stune=%s %s"
- msgstr ""
-
--#: config/i386/i386.c:5105
-+#: config/i386/i386.c:5102
- #, gcc-internal-format
- msgid "-mregparm is ignored in 64-bit mode"
- msgstr ""
-
--#: config/i386/i386.c:5107
-+#: config/i386/i386.c:5104
- #, gcc-internal-format
- msgid "-mregparm is ignored for Intel MCU psABI"
- msgstr ""
-
--#: config/i386/i386.c:5110
-+#: config/i386/i386.c:5107
- #, gcc-internal-format, gfc-internal-format
- msgid "-mregparm=%d is not between 0 and %d"
- msgstr ""
-
--#: config/i386/i386.c:5141
-+#: config/i386/i386.c:5138
- #, gcc-internal-format, gfc-internal-format
- msgid "%srtd%s is ignored in 64bit mode"
- msgstr ""
-
--#: config/i386/i386.c:5219
-+#: config/i386/i386.c:5212
- #, gcc-internal-format
- msgid "-mpreferred-stack-boundary is not supported for this target"
- msgstr ""
-
--#: config/i386/i386.c:5222
-+#: config/i386/i386.c:5215
- #, gcc-internal-format, gfc-internal-format
- msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
- msgstr ""
-
--#: config/i386/i386.c:5245
-+#: config/i386/i386.c:5238
- #, gcc-internal-format, gfc-internal-format
- msgid "-mincoming-stack-boundary=%d is not between %d and 12"
- msgstr ""
-
--#: config/i386/i386.c:5258
-+#: config/i386/i386.c:5251
- #, gcc-internal-format
- msgid "-mnop-mcount is not compatible with this target"
- msgstr ""
-
--#: config/i386/i386.c:5261
-+#: config/i386/i386.c:5254
- #, gcc-internal-format
- msgid "-mnop-mcount is not implemented for -fPIC"
- msgstr ""
-
--#: config/i386/i386.c:5266
-+#: config/i386/i386.c:5259
- #, gcc-internal-format, gfc-internal-format
- msgid "%ssseregparm%s used without SSE enabled"
- msgstr ""
-
--#: config/i386/i386.c:5276
-+#: config/i386/i386.c:5269
- #, gcc-internal-format
- msgid "SSE instruction set disabled, using 387 arithmetics"
- msgstr ""
-
--#: config/i386/i386.c:5283
-+#: config/i386/i386.c:5276
- #, gcc-internal-format
- msgid "387 instruction set disabled, using SSE arithmetics"
- msgstr ""
-
--#: config/i386/i386.c:5331
-+#: config/i386/i386.c:5324
- #, gcc-internal-format, gfc-internal-format
- msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
- msgstr ""
-
--#: config/i386/i386.c:5342
-+#: config/i386/i386.c:5335
- #, gcc-internal-format, gfc-internal-format
- msgid "fixed ebp register requires %saccumulate-outgoing-args%s"
- msgstr ""
-
--#: config/i386/i386.c:5455
-+#: config/i386/i386.c:5448
- #, gcc-internal-format
- msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
- msgstr ""
-
--#: config/i386/i386.c:5462
-+#: config/i386/i386.c:5455
- #, gcc-internal-format
- msgid "-mno-fentry isn%'t compatible with SEH"
- msgstr ""
-
--#: config/i386/i386.c:5528 config/rs6000/rs6000.c:4932
-+#: config/i386/i386.c:5522 config/rs6000/rs6000.c:4940
- #, gcc-internal-format, gfc-internal-format
- msgid "unknown option for -mrecip=%s"
- msgstr ""
-
--#: config/i386/i386.c:6135
-+#: config/i386/i386.c:6128
- #, gcc-internal-format, gfc-internal-format
- msgid "option(\"%s\") was already specified"
- msgstr ""
-
--#: config/i386/i386.c:6830 config/i386/i386.c:6881
-+#: config/i386/i386.c:6823 config/i386/i386.c:6874
- #, gcc-internal-format
- msgid "fastcall and regparm attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6835
-+#: config/i386/i386.c:6828
- #, gcc-internal-format
- msgid "regparam and thiscall attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6842 config/i386/i386.c:44533
-+#: config/i386/i386.c:6835 config/i386/i386.c:44705
- #, gcc-internal-format
- msgid "%qE attribute requires an integer constant argument"
- msgstr ""
-
--#: config/i386/i386.c:6848
-+#: config/i386/i386.c:6841
- #, gcc-internal-format
- msgid "argument to %qE attribute larger than %d"
- msgstr ""
-
--#: config/i386/i386.c:6873 config/i386/i386.c:6916
-+#: config/i386/i386.c:6866 config/i386/i386.c:6909
- #, gcc-internal-format
- msgid "fastcall and cdecl attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6877
-+#: config/i386/i386.c:6870
- #, gcc-internal-format
- msgid "fastcall and stdcall attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6885 config/i386/i386.c:6934
-+#: config/i386/i386.c:6878 config/i386/i386.c:6927
- #, gcc-internal-format
- msgid "fastcall and thiscall attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6895 config/i386/i386.c:6912
-+#: config/i386/i386.c:6888 config/i386/i386.c:6905
- #, gcc-internal-format
- msgid "stdcall and cdecl attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6899
-+#: config/i386/i386.c:6892
- #, gcc-internal-format
- msgid "stdcall and fastcall attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6903 config/i386/i386.c:6930
-+#: config/i386/i386.c:6896 config/i386/i386.c:6923
- #, gcc-internal-format
- msgid "stdcall and thiscall attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6920 config/i386/i386.c:6938
-+#: config/i386/i386.c:6913 config/i386/i386.c:6931
- #, gcc-internal-format
- msgid "cdecl and thiscall attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:6926
-+#: config/i386/i386.c:6919
- #, gcc-internal-format
- msgid "%qE attribute is used for non-class method"
- msgstr ""
-
--#: config/i386/i386.c:7164
-+#: config/i386/i386.c:7157
- #, gcc-internal-format
- msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled"
- msgstr ""
-
--#: config/i386/i386.c:7167
-+#: config/i386/i386.c:7160
- #, gcc-internal-format
- msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled"
- msgstr ""
-
--#: config/i386/i386.c:7495
-+#: config/i386/i386.c:7488
- #, gcc-internal-format
- msgid "X32 does not support ms_abi attribute"
- msgstr ""
-
--#: config/i386/i386.c:7527
-+#: config/i386/i386.c:7520
- #, gcc-internal-format
- msgid "ms_hook_prologue is not compatible with nested function"
- msgstr ""
-
--#: config/i386/i386.c:7840
-+#: config/i386/i386.c:7833
- #, gcc-internal-format
- msgid "AVX512F vector argument without AVX512F enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7846
-+#: config/i386/i386.c:7839
- #, gcc-internal-format
- msgid "AVX512F vector return without AVX512F enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7860
-+#: config/i386/i386.c:7853
- #, gcc-internal-format
- msgid "AVX vector argument without AVX enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7866
-+#: config/i386/i386.c:7859
- #, gcc-internal-format
- msgid "AVX vector return without AVX enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7882
-+#: config/i386/i386.c:7875
- #, gcc-internal-format
- msgid "SSE vector argument without SSE enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7888
-+#: config/i386/i386.c:7881
- #, gcc-internal-format
- msgid "SSE vector return without SSE enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7902
-+#: config/i386/i386.c:7895
- #, gcc-internal-format
- msgid "MMX vector argument without MMX enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:7908
-+#: config/i386/i386.c:7901
- #, gcc-internal-format
- msgid "MMX vector return without MMX enabled changes the ABI"
- msgstr ""
-
--#: config/i386/i386.c:8090
-+#: config/i386/i386.c:8083
- #, gcc-internal-format
- msgid ""
- "the ABI of passing struct with a flexible array member has changed in GCC 4.4"
- msgstr ""
-
--#: config/i386/i386.c:8207
-+#: config/i386/i386.c:8200
- #, gcc-internal-format
- msgid "the ABI of passing union with long double has changed in GCC 4.4"
- msgstr ""
-
--#: config/i386/i386.c:8325
-+#: config/i386/i386.c:8318
- #, gcc-internal-format
- msgid ""
- "the ABI of passing structure with complex float member has changed in GCC 4.4"
- msgstr ""
-
--#: config/i386/i386.c:8488
-+#: config/i386/i386.c:8481
- #, gcc-internal-format
- msgid "SSE register return with SSE disabled"
- msgstr ""
-
--#: config/i386/i386.c:8494
-+#: config/i386/i386.c:8487
- #, gcc-internal-format
- msgid "SSE register argument with SSE disabled"
- msgstr ""
-
--#: config/i386/i386.c:8510
-+#: config/i386/i386.c:8503
- #, gcc-internal-format
- msgid "x87 register return with x87 disabled"
- msgstr ""
-
--#: config/i386/i386.c:8805 config/i386/i386.c:9070
-+#: config/i386/i386.c:8798 config/i386/i386.c:9063
- #, gcc-internal-format
- msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled"
- msgstr ""
-
--#: config/i386/i386.c:8807 config/i386/i386.c:9072 config/i386/i386.c:9565
-+#: config/i386/i386.c:8800 config/i386/i386.c:9065 config/i386/i386.c:9558
- #, gcc-internal-format
- msgid ""
- "this is a GCC bug that can be worked around by adding attribute used to "
-@@ -27784,28 +27858,28 @@
- "function called"
- msgstr ""
-
--#: config/i386/i386.c:9465
-+#: config/i386/i386.c:9458
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6"
- msgstr ""
-
--#: config/i386/i386.c:9563
-+#: config/i386/i386.c:9556
- #, gcc-internal-format
- msgid "calling %qD with SSE caling convention without SSE/SSE2 enabled"
- msgstr ""
-
--#: config/i386/i386.c:12691
-+#: config/i386/i386.c:12709
- #, gcc-internal-format
- msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit"
- msgstr ""
-
--#: config/i386/i386.c:13757
-+#: config/i386/i386.c:13807
- #, gcc-internal-format
- msgid "-fsplit-stack does not support fastcall with nested function"
- msgstr ""
-
--#: config/i386/i386.c:13777
-+#: config/i386/i386.c:13827
- #, gcc-internal-format
- msgid ""
- "-fsplit-stack does not support 2 register parameters for a nested function"
-@@ -27813,268 +27887,268 @@
-
- #. FIXME: We could make this work by pushing a register
- #. around the addition and comparison.
--#: config/i386/i386.c:13788
-+#: config/i386/i386.c:13838
- #, gcc-internal-format
- msgid "-fsplit-stack does not support 3 register parameters"
- msgstr ""
-
--#: config/i386/i386.c:16599
-+#: config/i386/i386.c:16651
- #, gcc-internal-format
- msgid "extended registers have no high halves"
- msgstr ""
-
--#: config/i386/i386.c:16614
-+#: config/i386/i386.c:16666
- #, gcc-internal-format
- msgid "unsupported operand size for extended register"
- msgstr ""
-
--#: config/i386/i386.c:16806
-+#: config/i386/i386.c:16858
- #, gcc-internal-format
- msgid "non-integer operand used with operand code 'z'"
- msgstr ""
-
--#: config/i386/i386.c:36446
-+#: config/i386/i386.c:36510
- #, gcc-internal-format
- msgid "No dispatcher found for the versioning attributes"
- msgstr ""
-
--#: config/i386/i386.c:36496
-+#: config/i386/i386.c:36560
- #, gcc-internal-format, gfc-internal-format
- msgid "No dispatcher found for %s"
- msgstr ""
-
--#: config/i386/i386.c:36506
-+#: config/i386/i386.c:36570
- #, gcc-internal-format, gfc-internal-format
- msgid "No dispatcher found for the versioning attributes : %s"
- msgstr ""
-
--#: config/i386/i386.c:36754
-+#: config/i386/i386.c:36818
- #, gcc-internal-format
- msgid ""
- "Function versions cannot be marked as gnu_inline, bodies have to be generated"
- msgstr ""
-
--#: config/i386/i386.c:36759 config/i386/i386.c:37187
-+#: config/i386/i386.c:36823 config/i386/i386.c:37251
- #, gcc-internal-format
- msgid "Virtual function multiversioning not supported"
- msgstr ""
-
--#: config/i386/i386.c:36822
-+#: config/i386/i386.c:36886
- #, gcc-internal-format
- msgid "missing %<target%> attribute for multi-versioned %D"
- msgstr ""
-
--#: config/i386/i386.c:36825
-+#: config/i386/i386.c:36889
- #, gcc-internal-format
- msgid "previous declaration of %D"
- msgstr ""
-
--#: config/i386/i386.c:37044
-+#: config/i386/i386.c:37108
- #, gcc-internal-format
- msgid "multiversioning needs ifunc which is not supported on this target"
- msgstr ""
-
--#: config/i386/i386.c:37430
-+#: config/i386/i386.c:37494
- #, gcc-internal-format
- msgid "Parameter to builtin must be a string constant or literal"
- msgstr ""
-
--#: config/i386/i386.c:37455 config/i386/i386.c:37505
-+#: config/i386/i386.c:37519 config/i386/i386.c:37569
- #, gcc-internal-format, gfc-internal-format
- msgid "Parameter to builtin not valid: %s"
- msgstr ""
-
--#: config/i386/i386.c:37916 config/i386/i386.c:39271
-+#: config/i386/i386.c:38086 config/i386/i386.c:39443
- #, gcc-internal-format
- msgid "the last argument must be a 2-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:38311
-+#: config/i386/i386.c:38481
- #, gcc-internal-format
- msgid "the fifth argument must be an 8-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:38406
-+#: config/i386/i386.c:38576
- #, gcc-internal-format
- msgid "the third argument must be an 8-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39202
-+#: config/i386/i386.c:39374
- #, gcc-internal-format
- msgid "the last argument must be an 1-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39217
-+#: config/i386/i386.c:39389
- #, gcc-internal-format
- msgid "the last argument must be a 3-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39250
-+#: config/i386/i386.c:39422
- #, gcc-internal-format
- msgid "the last argument must be a 4-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39290
-+#: config/i386/i386.c:39462
- #, gcc-internal-format
- msgid "the last argument must be a 1-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39303
-+#: config/i386/i386.c:39475
- #, gcc-internal-format
- msgid "the last argument must be a 5-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39313
-+#: config/i386/i386.c:39485
- #, gcc-internal-format
- msgid "the next to last argument must be an 8-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39317 config/i386/i386.c:40083
-+#: config/i386/i386.c:39489 config/i386/i386.c:40255
- #, gcc-internal-format
- msgid "the last argument must be an 8-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39485
-+#: config/i386/i386.c:39657
- #, gcc-internal-format
- msgid "the third argument must be comparison constant"
- msgstr ""
-
--#: config/i386/i386.c:39490
-+#: config/i386/i386.c:39662
- #, gcc-internal-format
- msgid "incorrect comparison mode"
- msgstr ""
-
--#: config/i386/i386.c:39496 config/i386/i386.c:39697
-+#: config/i386/i386.c:39668 config/i386/i386.c:39869
- #, gcc-internal-format
- msgid "incorrect rounding operand"
- msgstr ""
-
--#: config/i386/i386.c:39679
-+#: config/i386/i386.c:39851
- #, gcc-internal-format
- msgid "the immediate argument must be a 4-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39685
-+#: config/i386/i386.c:39857
- #, gcc-internal-format
- msgid "the immediate argument must be a 5-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:39688
-+#: config/i386/i386.c:39860
- #, gcc-internal-format
- msgid "the immediate argument must be an 8-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:40081
-+#: config/i386/i386.c:40253
- #, gcc-internal-format
- msgid "the last argument must be a 32-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:40163 config/rs6000/rs6000.c:14475
-+#: config/i386/i386.c:40335 config/rs6000/rs6000.c:14505
- #, gcc-internal-format
- msgid "selector must be an integer constant in the range 0..%wi"
- msgstr ""
-
--#: config/i386/i386.c:40357
-+#: config/i386/i386.c:40529
- #, gcc-internal-format
- msgid "%qE needs unknown isa option"
- msgstr ""
-
--#: config/i386/i386.c:40361
-+#: config/i386/i386.c:40533
- #, gcc-internal-format
- msgid "%qE needs isa option %s"
- msgstr ""
-
--#: config/i386/i386.c:41123
-+#: config/i386/i386.c:41295
- #, gcc-internal-format
- msgid "last argument must be an immediate"
- msgstr ""
-
--#: config/i386/i386.c:41732 config/i386/i386.c:41914
-+#: config/i386/i386.c:41904 config/i386/i386.c:42086
- #, gcc-internal-format
- msgid "the last argument must be scale 1, 2, 4, 8"
- msgstr ""
-
--#: config/i386/i386.c:41967
-+#: config/i386/i386.c:42139
- #, gcc-internal-format
- msgid "the forth argument must be scale 1, 2, 4, 8"
- msgstr ""
-
--#: config/i386/i386.c:41973
-+#: config/i386/i386.c:42145
- #, gcc-internal-format
- msgid "incorrect hint operand"
- msgstr ""
-
--#: config/i386/i386.c:41992
-+#: config/i386/i386.c:42164
- #, gcc-internal-format
- msgid "the xabort's argument must be an 8-bit immediate"
- msgstr ""
-
--#: config/i386/i386.c:44520
-+#: config/i386/i386.c:44692
- #, gcc-internal-format
- msgid "%qE attribute only available for 32-bit"
- msgstr ""
-
--#: config/i386/i386.c:44541
-+#: config/i386/i386.c:44713
- #, gcc-internal-format
- msgid "argument to %qE attribute is neither zero, nor one"
- msgstr ""
-
--#: config/i386/i386.c:44574 config/i386/i386.c:44583
-+#: config/i386/i386.c:44746 config/i386/i386.c:44755
- #, gcc-internal-format
- msgid "ms_abi and sysv_abi attributes are not compatible"
- msgstr ""
-
--#: config/i386/i386.c:44619 config/rs6000/rs6000.c:32426
-+#: config/i386/i386.c:44791 config/rs6000/rs6000.c:32493
- #, gcc-internal-format
- msgid "%qE incompatible attribute ignored"
- msgstr ""
-
--#: config/i386/i386.c:47556
-+#: config/i386/i386.c:47728
- #, gcc-internal-format
- msgid "alternatives not allowed in asm flag output"
- msgstr ""
-
--#: config/i386/i386.c:47620
-+#: config/i386/i386.c:47792
- #, gcc-internal-format
- msgid "unknown asm flag output %qs"
- msgstr ""
-
--#: config/i386/i386.c:47649
-+#: config/i386/i386.c:47821
- #, gcc-internal-format
- msgid "invalid type for asm flag output"
- msgstr ""
-
--#: config/i386/i386.c:53809
-+#: config/i386/i386.c:53945
- #, gcc-internal-format
- msgid "Unknown architecture specific memory model"
- msgstr ""
-
--#: config/i386/i386.c:53816
-+#: config/i386/i386.c:53952
- #, gcc-internal-format
- msgid "HLE_ACQUIRE not used with ACQUIRE or stronger memory model"
- msgstr ""
-
--#: config/i386/i386.c:53822
-+#: config/i386/i386.c:53958
- #, gcc-internal-format
- msgid "HLE_RELEASE not used with RELEASE or stronger memory model"
- msgstr ""
-
--#: config/i386/i386.c:53846 config/i386/i386.c:53967
-+#: config/i386/i386.c:53982 config/i386/i386.c:54103
- #, gcc-internal-format, gfc-internal-format
- msgid "unsupported simdlen %d"
- msgstr ""
-
--#: config/i386/i386.c:53865
-+#: config/i386/i386.c:54001
- #, gcc-internal-format
- msgid "unsupported return type %qT for simd\n"
- msgstr ""
-
--#: config/i386/i386.c:53887
-+#: config/i386/i386.c:54023
- #, gcc-internal-format
- msgid "unsupported argument type %qT for simd\n"
- msgstr ""
-
--#: config/i386/i386.c:54214
-+#: config/i386/i386.c:54350
- #, gcc-internal-format
- msgid ""
- "Pointer Checker requires MPX support on this target. Use -mmpx options to "
-@@ -28308,7 +28382,7 @@
- msgid "interrupt_thread is available only on fido"
- msgstr ""
-
--#: config/m68k/m68k.c:1096 config/rs6000/rs6000.c:25350
-+#: config/m68k/m68k.c:1096 config/rs6000/rs6000.c:25380
- #, gcc-internal-format
- msgid "stack limit expression is not supported"
- msgstr ""
-@@ -28547,7 +28621,7 @@
- msgid "argument %d of %qE must be a multiple of %d"
- msgstr ""
-
--#: config/mep/mep.c:6144 c/c-typeck.c:6630
-+#: config/mep/mep.c:6144 c/c-typeck.c:6640
- #, gcc-internal-format
- msgid "incompatible type for argument %d of %qE"
- msgstr ""
-@@ -29490,27 +29564,27 @@
- msgid "invalid parameter combination for AltiVec intrinsic"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3512
-+#: config/rs6000/rs6000.c:3520
- #, gcc-internal-format
- msgid "-mrecip requires -ffinite-math or -ffast-math"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3514
-+#: config/rs6000/rs6000.c:3522
- #, gcc-internal-format
- msgid "-mrecip requires -fno-trapping-math or -ffast-math"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3516
-+#: config/rs6000/rs6000.c:3524
- #, gcc-internal-format
- msgid "-mrecip requires -freciprocal-math or -ffast-math"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3616
-+#: config/rs6000/rs6000.c:3624
- #, gcc-internal-format
- msgid "-m64 requires PowerPC64 architecture, enabling"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3734
-+#: config/rs6000/rs6000.c:3742
- #, gcc-internal-format
- msgid ""
- "-malign-power is not supported for 64-bit Darwin; it is incompatible with "
-@@ -29517,177 +29591,177 @@
- "the installed C and C++ libraries"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3881
-+#: config/rs6000/rs6000.c:3889
- #, gcc-internal-format
- msgid "not configured for SPE ABI"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3886
-+#: config/rs6000/rs6000.c:3894
- #, gcc-internal-format
- msgid "not configured for SPE instruction set"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3892
-+#: config/rs6000/rs6000.c:3900
- #, gcc-internal-format
- msgid "target attribute or pragma changes SPE ABI"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3899
-+#: config/rs6000/rs6000.c:3907
- #, gcc-internal-format
- msgid "AltiVec not supported in this target"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3901 config/rs6000/rs6000.c:3906
-+#: config/rs6000/rs6000.c:3909 config/rs6000/rs6000.c:3914
- #, gcc-internal-format
- msgid "SPE not supported in this target"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3934
-+#: config/rs6000/rs6000.c:3942
- #, gcc-internal-format
- msgid "-mmultiple is not supported on little endian systems"
- msgstr ""
-
--#: config/rs6000/rs6000.c:3941
-+#: config/rs6000/rs6000.c:3949
- #, gcc-internal-format
- msgid "-mstring is not supported on little endian systems"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4037
-+#: config/rs6000/rs6000.c:4045
- #, gcc-internal-format
- msgid "-mcrypto requires -maltivec"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4044
-+#: config/rs6000/rs6000.c:4052
- #, gcc-internal-format
- msgid "-mdirect-move requires -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4051
-+#: config/rs6000/rs6000.c:4059
- #, gcc-internal-format
- msgid "-mpower8-vector requires -maltivec"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4058
-+#: config/rs6000/rs6000.c:4066
- #, gcc-internal-format
- msgid "-mpower8-vector requires -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4065
-+#: config/rs6000/rs6000.c:4073
- #, gcc-internal-format
- msgid "-mvsx-timode requires -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4072
-+#: config/rs6000/rs6000.c:4080
- #, gcc-internal-format
- msgid "-mhard-dfp requires -mhard-float"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4113
-+#: config/rs6000/rs6000.c:4121
- #, gcc-internal-format
- msgid "-mupper-regs-df requires -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4120
-+#: config/rs6000/rs6000.c:4128
- #, gcc-internal-format
- msgid "-mupper-regs-sf requires -mpower8-vector"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4169
-+#: config/rs6000/rs6000.c:4177
- #, gcc-internal-format
- msgid "-mpower8-fusion-sign requires -mpower8-fusion"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4172
-+#: config/rs6000/rs6000.c:4180
- #, gcc-internal-format
- msgid "-mtoc-fusion requires -mpower8-fusion"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4185
-+#: config/rs6000/rs6000.c:4193
- #, gcc-internal-format
- msgid "-mpower9-fusion requires -mpower8-fusion"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4233
-+#: config/rs6000/rs6000.c:4241
- #, gcc-internal-format
- msgid "-mpower9-vector requires -mpower8-vector"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4260
-+#: config/rs6000/rs6000.c:4268
- #, gcc-internal-format
- msgid "-mpower9-dform requires -mpower9-vector"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4268
-+#: config/rs6000/rs6000.c:4276
- #, gcc-internal-format
- msgid "-mpower9-dform requires -mupper-regs-df"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4275
-+#: config/rs6000/rs6000.c:4283
- #, gcc-internal-format
- msgid "-mpower9-dform requires -mupper-regs-sf"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4291
-+#: config/rs6000/rs6000.c:4299
- #, gcc-internal-format
- msgid "-mvsx-timode might need -mlra"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4316
-+#: config/rs6000/rs6000.c:4324
- #, gcc-internal-format
- msgid "-mallow-movmisalign requires -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4331
-+#: config/rs6000/rs6000.c:4339
- #, gcc-internal-format
- msgid "-mefficient-unaligned-vsx requires -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4339
-+#: config/rs6000/rs6000.c:4347
- #, gcc-internal-format
- msgid "-mefficient-unaligned-vsx requires -mallow-movmisalign"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4349
-+#: config/rs6000/rs6000.c:4357
- #, gcc-internal-format
- msgid "-mfloat128 requires VSX support"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4371
-+#: config/rs6000/rs6000.c:4379
- #, gcc-internal-format
- msgid "-mfloat128-hardware requires full ISA 3.0 support"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4434
-+#: config/rs6000/rs6000.c:4442
- #, gcc-internal-format, gfc-internal-format
- msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4446
-+#: config/rs6000/rs6000.c:4454
- #, gcc-internal-format
- msgid "target attribute or pragma changes long double size"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4469 config/rs6000/rs6000.c:4484
-+#: config/rs6000/rs6000.c:4477 config/rs6000/rs6000.c:4492
- #, gcc-internal-format
- msgid "target attribute or pragma changes AltiVec ABI"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4497
-+#: config/rs6000/rs6000.c:4505
- #, gcc-internal-format
- msgid "target attribute or pragma changes darwin64 ABI"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4563
-+#: config/rs6000/rs6000.c:4571
- #, gcc-internal-format
- msgid "target attribute or pragma changes single precision floating point"
- msgstr ""
-
--#: config/rs6000/rs6000.c:4566
-+#: config/rs6000/rs6000.c:4574
- #, gcc-internal-format
- msgid "target attribute or pragma changes double precision floating point"
- msgstr ""
-
--#: config/rs6000/rs6000.c:7010
-+#: config/rs6000/rs6000.c:7036
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "the layout of aggregates containing vectors with %d-byte alignment has "
-@@ -29694,7 +29768,7 @@
- "changed in GCC 5"
- msgstr ""
-
--#: config/rs6000/rs6000.c:10258
-+#: config/rs6000/rs6000.c:10288
- #, gcc-internal-format
- msgid ""
- "GCC vector returned by reference: non-standard ABI extension with no "
-@@ -29701,7 +29775,7 @@
- "compatibility guarantee"
- msgstr ""
-
--#: config/rs6000/rs6000.c:10411
-+#: config/rs6000/rs6000.c:10441
- #, gcc-internal-format
- msgid ""
- "cannot return value in vector register because altivec instructions are "
-@@ -29708,13 +29782,13 @@
- "disabled, use -maltivec to enable them"
- msgstr ""
-
--#: config/rs6000/rs6000.c:10611
-+#: config/rs6000/rs6000.c:10641
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "the ABI of passing aggregates with %d-byte alignment has changed in GCC 5"
- msgstr ""
-
--#: config/rs6000/rs6000.c:10873
-+#: config/rs6000/rs6000.c:10903
- #, gcc-internal-format
- msgid ""
- "cannot pass argument in vector register because altivec instructions are "
-@@ -29721,12 +29795,12 @@
- "disabled, use -maltivec to enable them"
- msgstr ""
-
--#: config/rs6000/rs6000.c:11725
-+#: config/rs6000/rs6000.c:11755
- #, gcc-internal-format
- msgid "the ABI of passing homogeneous float aggregates has changed in GCC 5"
- msgstr ""
-
--#: config/rs6000/rs6000.c:11900
-+#: config/rs6000/rs6000.c:11930
- #, gcc-internal-format
- msgid ""
- "GCC vector passed by reference: non-standard ABI extension with no "
-@@ -29733,235 +29807,235 @@
- "compatibility guarantee"
- msgstr ""
-
--#: config/rs6000/rs6000.c:12684
-+#: config/rs6000/rs6000.c:12714
- #, gcc-internal-format, gfc-internal-format
- msgid "internal error: builtin function %s already processed"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13182
-+#: config/rs6000/rs6000.c:13212
- #, gcc-internal-format
- msgid "argument 1 must be an 8-bit field value"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13229
-+#: config/rs6000/rs6000.c:13259
- #, gcc-internal-format
- msgid "argument 1 must be a 5-bit signed literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13332 config/rs6000/rs6000.c:15019
-+#: config/rs6000/rs6000.c:13362 config/rs6000/rs6000.c:15049
- #, gcc-internal-format
- msgid "argument 2 must be a 5-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13350
-+#: config/rs6000/rs6000.c:13380
- #, gcc-internal-format
- msgid "argument 1 must be a 6-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13389
-+#: config/rs6000/rs6000.c:13419
- #, gcc-internal-format
- msgid "argument 1 of __builtin_altivec_predicate must be a constant"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13441
-+#: config/rs6000/rs6000.c:13471
- #, gcc-internal-format
- msgid "argument 1 of __builtin_altivec_predicate is out of range"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13815
-+#: config/rs6000/rs6000.c:13845
- #, gcc-internal-format, gfc-internal-format
- msgid "builtin %s is only valid in 64-bit mode"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13864
-+#: config/rs6000/rs6000.c:13894
- #, gcc-internal-format, gfc-internal-format
- msgid "argument %d must be an unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:13866
-+#: config/rs6000/rs6000.c:13896
- #, gcc-internal-format, gfc-internal-format
- msgid "argument %d is an unsigned literal that is out of range"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14004
-+#: config/rs6000/rs6000.c:14034
- #, gcc-internal-format, gfc-internal-format
- msgid "builtin %s only accepts a string argument"
- msgstr ""
-
- #. Invalid CPU argument.
--#: config/rs6000/rs6000.c:14023
-+#: config/rs6000/rs6000.c:14053
- #, gcc-internal-format, gfc-internal-format
- msgid "cpu %s is an invalid argument to builtin %s"
- msgstr ""
-
- #. Invalid HWCAP argument.
--#: config/rs6000/rs6000.c:14051
-+#: config/rs6000/rs6000.c:14081
- #, gcc-internal-format, gfc-internal-format
- msgid "hwcap %s is an invalid argument to builtin %s"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14124
-+#: config/rs6000/rs6000.c:14154
- #, gcc-internal-format
- msgid "argument 3 must be a 4-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14142
-+#: config/rs6000/rs6000.c:14172
- #, gcc-internal-format
- msgid "argument 3 must be a 2-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14162
-+#: config/rs6000/rs6000.c:14192
- #, gcc-internal-format
- msgid "argument 3 must be a 1-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14174
-+#: config/rs6000/rs6000.c:14204
- #, gcc-internal-format
- msgid "argument 1 must be 0 or 2"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14186
-+#: config/rs6000/rs6000.c:14216
- #, gcc-internal-format
- msgid "argument 1 must be a 1-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14200
-+#: config/rs6000/rs6000.c:14230
- #, gcc-internal-format
- msgid "argument 2 must be a 6-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14212
-+#: config/rs6000/rs6000.c:14242
- #, gcc-internal-format
- msgid "argument 2 must be 0 or 1"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14219
-+#: config/rs6000/rs6000.c:14249
- #, gcc-internal-format
- msgid "argument 3 must be in the range 0..15"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14408
-+#: config/rs6000/rs6000.c:14438
- #, gcc-internal-format
- msgid "argument to %qs must be a 2-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14561
-+#: config/rs6000/rs6000.c:14591
- #, gcc-internal-format
- msgid "unresolved overload for Altivec builtin %qF"
- msgstr ""
-
--#: config/rs6000/rs6000.c:14732
-+#: config/rs6000/rs6000.c:14762
- #, gcc-internal-format
- msgid "argument to dss must be a 2-bit unsigned literal"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15139
-+#: config/rs6000/rs6000.c:15169
- #, gcc-internal-format
- msgid "argument 1 of __builtin_paired_predicate must be a constant"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15186
-+#: config/rs6000/rs6000.c:15216
- #, gcc-internal-format
- msgid "argument 1 of __builtin_paired_predicate is out of range"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15211
-+#: config/rs6000/rs6000.c:15241
- #, gcc-internal-format
- msgid "argument 1 of __builtin_spe_predicate must be a constant"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15283
-+#: config/rs6000/rs6000.c:15313
- #, gcc-internal-format
- msgid "argument 1 of __builtin_spe_predicate is out of range"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15365
-+#: config/rs6000/rs6000.c:15395
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s is only valid for the cell processor"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15367
-+#: config/rs6000/rs6000.c:15397
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mvsx option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15369
-+#: config/rs6000/rs6000.c:15399
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mhtm option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15371
-+#: config/rs6000/rs6000.c:15401
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -maltivec option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15373
-+#: config/rs6000/rs6000.c:15403
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mpaired option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15375
-+#: config/rs6000/rs6000.c:15405
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mspe option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15378
-+#: config/rs6000/rs6000.c:15408
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mhard-dfp and -mpower8-vector options"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15381
-+#: config/rs6000/rs6000.c:15411
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mhard-dfp option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15383
-+#: config/rs6000/rs6000.c:15413
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mpower8-vector option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15385
-+#: config/rs6000/rs6000.c:15415
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mpower9-vector option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15388
-+#: config/rs6000/rs6000.c:15418
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mpower9-misc and -m64 options"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15391
-+#: config/rs6000/rs6000.c:15421
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mpower9-misc option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15394
-+#: config/rs6000/rs6000.c:15424
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Builtin function %s requires the -mhard-float and -mlong-double-128 options"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15397
-+#: config/rs6000/rs6000.c:15427
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mhard-float option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15399
-+#: config/rs6000/rs6000.c:15429
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s requires the -mfloat128 option"
- msgstr ""
-
--#: config/rs6000/rs6000.c:15401
-+#: config/rs6000/rs6000.c:15431
- #, gcc-internal-format, gfc-internal-format
- msgid "Builtin function %s is not supported with the current options"
- msgstr ""
-
--#: config/rs6000/rs6000.c:17064
-+#: config/rs6000/rs6000.c:17094
- #, gcc-internal-format, gfc-internal-format
- msgid "internal error: builtin function %s had an unexpected return type %s"
- msgstr ""
-
--#: config/rs6000/rs6000.c:17081
-+#: config/rs6000/rs6000.c:17111
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "internal error: builtin function %s, argument %d had unexpected argument "
-@@ -29968,27 +30042,27 @@
- "type %s"
- msgstr ""
-
--#: config/rs6000/rs6000.c:25320
-+#: config/rs6000/rs6000.c:25350
- #, gcc-internal-format
- msgid "stack frame too large"
- msgstr ""
-
--#: config/rs6000/rs6000.c:28750
-+#: config/rs6000/rs6000.c:28814
- #, gcc-internal-format
- msgid "-fsplit-stack uses register r29"
- msgstr ""
-
--#: config/rs6000/rs6000.c:28758
-+#: config/rs6000/rs6000.c:28822
- #, gcc-internal-format
- msgid "Stack frame larger than 2G is not supported for -fsplit-stack"
- msgstr ""
-
--#: config/rs6000/rs6000.c:29761
-+#: config/rs6000/rs6000.c:29828
- #, gcc-internal-format
- msgid "no profiling of 64-bit code for this ABI"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32113
-+#: config/rs6000/rs6000.c:32180
- #, gcc-internal-format
- msgid ""
- "You cannot take the address of a nested function if you use the -mno-"
-@@ -29995,68 +30069,68 @@
- "pointers-to-nested-functions option."
- msgstr ""
-
--#: config/rs6000/rs6000.c:32195
-+#: config/rs6000/rs6000.c:32262
- #, gcc-internal-format
- msgid "use of %<long double%> in AltiVec types is invalid"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32197
-+#: config/rs6000/rs6000.c:32264
- #, gcc-internal-format
- msgid "use of boolean types in AltiVec types is invalid"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32199
-+#: config/rs6000/rs6000.c:32266
- #, gcc-internal-format
- msgid "use of %<complex%> in AltiVec types is invalid"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32201
-+#: config/rs6000/rs6000.c:32268
- #, gcc-internal-format
- msgid "use of decimal floating point types in AltiVec types is invalid"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32207
-+#: config/rs6000/rs6000.c:32274
- #, gcc-internal-format
- msgid ""
- "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32210
-+#: config/rs6000/rs6000.c:32277
- #, gcc-internal-format
- msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32215
-+#: config/rs6000/rs6000.c:32282
- #, gcc-internal-format
- msgid "use of %<long long%> in AltiVec types is invalid without -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:32218
-+#: config/rs6000/rs6000.c:32285
- #, gcc-internal-format
- msgid "use of %<double%> in AltiVec types is invalid without -mvsx"
- msgstr ""
-
--#: config/rs6000/rs6000.c:35741
-+#: config/rs6000/rs6000.c:35808
- #, gcc-internal-format, gfc-internal-format
- msgid "emitting microcode insn %s\t[%s] #%d"
- msgstr ""
-
--#: config/rs6000/rs6000.c:35745
-+#: config/rs6000/rs6000.c:35812
- #, gcc-internal-format, gfc-internal-format
- msgid "emitting conditional microcode insn %s\t[%s] #%d"
- msgstr ""
-
--#: config/rs6000/rs6000.c:36050
-+#: config/rs6000/rs6000.c:36117
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid cpu \"%s\" for %s\"%s\"%s"
- msgstr ""
-
--#: config/rs6000/rs6000.c:36053
-+#: config/rs6000/rs6000.c:36120
- #, gcc-internal-format, gfc-internal-format
- msgid "%s\"%s\"%s is not allowed"
- msgstr ""
-
--#: config/rs6000/rs6000.c:36055
-+#: config/rs6000/rs6000.c:36122
- #, gcc-internal-format, gfc-internal-format
- msgid "%s\"%s\"%s is invalid"
- msgstr ""
-@@ -30419,12 +30493,12 @@
- "integer constants or too large (max. %d)"
- msgstr ""
-
--#: config/s390/s390.c:9662
-+#: config/s390/s390.c:9664
- #, gcc-internal-format
- msgid "total size of local variables exceeds architecture limit"
- msgstr ""
-
--#: config/s390/s390.c:10768
-+#: config/s390/s390.c:10770
- #, gcc-internal-format
- msgid ""
- "frame size of function %qs is %wd bytes exceeding user provided stack limit "
-@@ -30431,7 +30505,7 @@
- "of %d bytes. An unconditional trap is added."
- msgstr ""
-
--#: config/s390/s390.c:10784
-+#: config/s390/s390.c:10786
- #, gcc-internal-format
- msgid ""
- "frame size of function %qs is %wd bytes which is more than half the stack "
-@@ -30439,22 +30513,22 @@
- "function."
- msgstr ""
-
--#: config/s390/s390.c:10812
-+#: config/s390/s390.c:10814
- #, gcc-internal-format
- msgid "frame size of %qs is %wd bytes"
- msgstr ""
-
--#: config/s390/s390.c:10816
-+#: config/s390/s390.c:10818
- #, gcc-internal-format
- msgid "%qs uses dynamic stack allocation"
- msgstr ""
-
--#: config/s390/s390.c:11194
-+#: config/s390/s390.c:11196
- #, gcc-internal-format
- msgid "CPUs older than z900 are not supported for -fsplit-stack"
- msgstr ""
-
--#: config/s390/s390.c:14185
-+#: config/s390/s390.c:14187
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "%sarch=%s%s is deprecated and will be removed in future releases; use at "
-@@ -30461,7 +30535,7 @@
- "least %sarch=z900%s"
- msgstr ""
-
--#: config/s390/s390.c:14197
-+#: config/s390/s390.c:14199
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "%stune=%s%s is deprecated and will be removed in future releases; use at "
-@@ -30468,76 +30542,76 @@
- "least %stune=z900%s"
- msgstr ""
-
--#: config/s390/s390.c:14209
-+#: config/s390/s390.c:14211
- #, gcc-internal-format, gfc-internal-format
- msgid "z/Architecture mode not supported on %s"
- msgstr ""
-
--#: config/s390/s390.c:14212
-+#: config/s390/s390.c:14214
- #, gcc-internal-format
- msgid "64-bit ABI not supported in ESA/390 mode"
- msgstr ""
-
--#: config/s390/s390.c:14229
-+#: config/s390/s390.c:14231
- #, gcc-internal-format, gfc-internal-format
- msgid "hardware vector support not available on %s"
- msgstr ""
-
--#: config/s390/s390.c:14232
-+#: config/s390/s390.c:14234
- #, gcc-internal-format
- msgid "hardware vector support not available with -msoft-float"
- msgstr ""
-
--#: config/s390/s390.c:14260
-+#: config/s390/s390.c:14262
- #, gcc-internal-format, gfc-internal-format
- msgid "hardware decimal floating point instructions not available on %s"
- msgstr ""
-
--#: config/s390/s390.c:14264
-+#: config/s390/s390.c:14266
- #, gcc-internal-format
- msgid ""
- "hardware decimal floating point instructions not available in ESA/390 mode"
- msgstr ""
-
--#: config/s390/s390.c:14276
-+#: config/s390/s390.c:14278
- #, gcc-internal-format
- msgid "-mhard-dfp can%'t be used in conjunction with -msoft-float"
- msgstr ""
-
--#: config/s390/s390.c:14284
-+#: config/s390/s390.c:14286
- #, gcc-internal-format
- msgid ""
- "-mbackchain -mpacked-stack -mhard-float are not supported in combination"
- msgstr ""
-
--#: config/s390/s390.c:14290
-+#: config/s390/s390.c:14292
- #, gcc-internal-format
- msgid "stack size must be greater than the stack guard value"
- msgstr ""
-
--#: config/s390/s390.c:14292
-+#: config/s390/s390.c:14294
- #, gcc-internal-format
- msgid "stack size must not be greater than 64k"
- msgstr ""
-
--#: config/s390/s390.c:14295
-+#: config/s390/s390.c:14297
- #, gcc-internal-format
- msgid "-mstack-guard implies use of -mstack-size"
- msgstr ""
-
- #. argument is not a plain number
--#: config/s390/s390.c:14389
-+#: config/s390/s390.c:14391
- #, gcc-internal-format
- msgid "arguments to %qs should be non-negative integers"
- msgstr ""
-
--#: config/s390/s390.c:14396
-+#: config/s390/s390.c:14398
- #, gcc-internal-format
- msgid "argument to %qs is too large (max. %d)"
- msgstr ""
-
- #. Value is not allowed for the target attribute.
--#: config/s390/s390.c:14604
-+#: config/s390/s390.c:14606
- #, gcc-internal-format
- msgid "Value %qs is not supported by attribute %<target%>"
- msgstr ""
-@@ -30983,38 +31057,38 @@
- msgid "containing loop"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:3763
-+#: ada/gcc-interface/utils.c:3781
- #, gcc-internal-format
- msgid "invalid element type for attribute %qs"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:3787
-+#: ada/gcc-interface/utils.c:3805
- #, gcc-internal-format
- msgid "number of components of vector not a power of two"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:5801 ada/gcc-interface/utils.c:5975
--#: ada/gcc-interface/utils.c:6082
-+#: ada/gcc-interface/utils.c:5827 ada/gcc-interface/utils.c:6001
-+#: ada/gcc-interface/utils.c:6108
- #, gcc-internal-format
- msgid "%qs attribute ignored"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:5918
-+#: ada/gcc-interface/utils.c:5944
- #, gcc-internal-format
- msgid "%qs attribute requires prototypes with named arguments"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:5927
-+#: ada/gcc-interface/utils.c:5953
- #, gcc-internal-format
- msgid "%qs attribute only applies to variadic functions"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:6042
-+#: ada/gcc-interface/utils.c:6068
- #, gcc-internal-format
- msgid "%qE attribute has no effect"
- msgstr ""
-
--#: ada/gcc-interface/utils.c:6166
-+#: ada/gcc-interface/utils.c:6192
- #, gcc-internal-format
- msgid "attribute %qs applies to array types only"
- msgstr ""
-@@ -31077,7 +31151,7 @@
- #. an unprototyped function, it is compile-time undefined;
- #. making it a constraint in that case was rejected in
- #. DR#252.
--#: c/c-convert.c:98 c/c-typeck.c:2116 c/c-typeck.c:6137 c/c-typeck.c:11655
-+#: c/c-convert.c:98 c/c-typeck.c:2116 c/c-typeck.c:6147 c/c-typeck.c:11665
- #: cp/typeck.c:1956 cp/typeck.c:7557 cp/typeck.c:8284
- #, gcc-internal-format
- msgid "void value not ignored as it ought to be"
-@@ -31138,7 +31212,7 @@
- msgid "type of array %q+D completed incompatibly with implicit initialization"
- msgstr ""
-
--#: c/c-decl.c:1559 c/c-decl.c:6391 c/c-decl.c:7265 c/c-decl.c:8004
-+#: c/c-decl.c:1559 c/c-decl.c:6401 c/c-decl.c:7275 c/c-decl.c:8014
- #, gcc-internal-format
- msgid "originally defined here"
- msgstr ""
-@@ -31435,9 +31509,9 @@
- msgid "label %qD defined here"
- msgstr ""
-
--#: c/c-decl.c:3544 c/c-decl.c:3815 c/c-typeck.c:7884 cp/class.c:1438
--#: cp/class.c:3303 cp/decl.c:3795 cp/friend.c:340 cp/friend.c:349
--#: cp/parser.c:3146 cp/parser.c:3227 cp/parser.c:3255 cp/parser.c:5994
-+#: c/c-decl.c:3544 c/c-decl.c:3815 c/c-typeck.c:7894 cp/class.c:1440
-+#: cp/class.c:3307 cp/decl.c:3795 cp/friend.c:340 cp/friend.c:349
-+#: cp/parser.c:3146 cp/parser.c:3227 cp/parser.c:3255 cp/parser.c:5996
- #, gcc-internal-format
- msgid "%qD declared here"
- msgstr ""
-@@ -31568,12 +31642,12 @@
- #. C99 6.7.5.2p4
- #. A function definition isn't function prototype scope C99 6.2.1p4.
- #. C99 6.7.5.2p4
--#: c/c-decl.c:4349 c/c-decl.c:6833
-+#: c/c-decl.c:4349 c/c-decl.c:6843
- #, gcc-internal-format
- msgid "%<[*]%> not allowed in other than function prototype scope"
- msgstr ""
-
--#: c/c-decl.c:4436 cp/decl2.c:1463
-+#: c/c-decl.c:4436 cp/decl2.c:1464
- #, gcc-internal-format
- msgid "%q+D in declare target directive does not have mappable type"
- msgstr ""
-@@ -31603,7 +31677,7 @@
- #. of VLAs themselves count as VLAs, it does not make
- #. sense to permit them to be initialized given that
- #. ordinary VLAs may not be initialized.
--#: c/c-decl.c:4524 c/c-decl.c:4539 c/c-typeck.c:7191
-+#: c/c-decl.c:4524 c/c-decl.c:4539 c/c-typeck.c:7201
- #, gcc-internal-format
- msgid "variable-sized object may not be initialized"
- msgstr ""
-@@ -31733,127 +31807,127 @@
- msgid "ISO C90 forbids variable length array"
- msgstr ""
-
--#: c/c-decl.c:5480 c/c-decl.c:5843 c/c-decl.c:5853
-+#: c/c-decl.c:5490 c/c-decl.c:5853 c/c-decl.c:5863
- #, gcc-internal-format
- msgid "variably modified %qE at file scope"
- msgstr ""
-
--#: c/c-decl.c:5482
-+#: c/c-decl.c:5492
- #, gcc-internal-format
- msgid "variably modified field at file scope"
- msgstr ""
-
--#: c/c-decl.c:5502
-+#: c/c-decl.c:5512
- #, gcc-internal-format
- msgid "type defaults to %<int%> in declaration of %qE"
- msgstr ""
-
--#: c/c-decl.c:5506
-+#: c/c-decl.c:5516
- #, gcc-internal-format
- msgid "type defaults to %<int%> in type name"
- msgstr ""
-
--#: c/c-decl.c:5538
-+#: c/c-decl.c:5548
- #, gcc-internal-format
- msgid "duplicate %<const%>"
- msgstr ""
-
--#: c/c-decl.c:5540
-+#: c/c-decl.c:5550
- #, gcc-internal-format
- msgid "duplicate %<restrict%>"
- msgstr ""
-
--#: c/c-decl.c:5542
-+#: c/c-decl.c:5552
- #, gcc-internal-format
- msgid "duplicate %<volatile%>"
- msgstr ""
-
--#: c/c-decl.c:5544
-+#: c/c-decl.c:5554
- #, gcc-internal-format
- msgid "duplicate %<_Atomic%>"
- msgstr ""
-
--#: c/c-decl.c:5547
-+#: c/c-decl.c:5557
- #, gcc-internal-format, gfc-internal-format
- msgid "conflicting named address spaces (%s vs %s)"
- msgstr ""
-
--#: c/c-decl.c:5570 c/c-parser.c:2584
-+#: c/c-decl.c:5580 c/c-parser.c:2584
- #, gcc-internal-format
- msgid "%<_Atomic%>-qualified array type"
- msgstr ""
-
--#: c/c-decl.c:5584
-+#: c/c-decl.c:5594
- #, gcc-internal-format
- msgid "function definition declared %<auto%>"
- msgstr ""
-
--#: c/c-decl.c:5586
-+#: c/c-decl.c:5596
- #, gcc-internal-format
- msgid "function definition declared %<register%>"
- msgstr ""
-
--#: c/c-decl.c:5588
-+#: c/c-decl.c:5598
- #, gcc-internal-format
- msgid "function definition declared %<typedef%>"
- msgstr ""
-
--#: c/c-decl.c:5590
-+#: c/c-decl.c:5600
- #, gcc-internal-format
- msgid "function definition declared %qs"
- msgstr ""
-
--#: c/c-decl.c:5608
-+#: c/c-decl.c:5618
- #, gcc-internal-format
- msgid "storage class specified for structure field %qE"
- msgstr ""
-
--#: c/c-decl.c:5611
-+#: c/c-decl.c:5621
- #, gcc-internal-format
- msgid "storage class specified for structure field"
- msgstr ""
-
--#: c/c-decl.c:5615
-+#: c/c-decl.c:5625
- #, gcc-internal-format
- msgid "storage class specified for parameter %qE"
- msgstr ""
-
--#: c/c-decl.c:5618
-+#: c/c-decl.c:5628
- #, gcc-internal-format
- msgid "storage class specified for unnamed parameter"
- msgstr ""
-
--#: c/c-decl.c:5621 cp/decl.c:9953
-+#: c/c-decl.c:5631 cp/decl.c:9953
- #, gcc-internal-format
- msgid "storage class specified for typename"
- msgstr ""
-
--#: c/c-decl.c:5638
-+#: c/c-decl.c:5648
- #, gcc-internal-format
- msgid "%qE initialized and declared %<extern%>"
- msgstr ""
-
--#: c/c-decl.c:5642
-+#: c/c-decl.c:5652
- #, gcc-internal-format
- msgid "%qE has both %<extern%> and initializer"
- msgstr ""
-
--#: c/c-decl.c:5647
-+#: c/c-decl.c:5657
- #, gcc-internal-format
- msgid "file-scope declaration of %qE specifies %<auto%>"
- msgstr ""
-
--#: c/c-decl.c:5651
-+#: c/c-decl.c:5661
- #, gcc-internal-format
- msgid "file-scope declaration of %qE specifies %<register%>"
- msgstr ""
-
--#: c/c-decl.c:5656
-+#: c/c-decl.c:5666
- #, gcc-internal-format
- msgid "nested function %qE declared %<extern%>"
- msgstr ""
-
--#: c/c-decl.c:5659
-+#: c/c-decl.c:5669
- #, gcc-internal-format
- msgid "function-scope %qE implicitly auto and declared %qs"
- msgstr ""
-@@ -31861,83 +31935,83 @@
- #. Only the innermost declarator (making a parameter be of
- #. array type which is converted to pointer type)
- #. may have static or type qualifiers.
--#: c/c-decl.c:5706 c/c-decl.c:6064
-+#: c/c-decl.c:5716 c/c-decl.c:6074
- #, gcc-internal-format
- msgid "static or type qualifiers in non-parameter array declarator"
- msgstr ""
-
--#: c/c-decl.c:5754
-+#: c/c-decl.c:5764
- #, gcc-internal-format
- msgid "declaration of %qE as array of voids"
- msgstr ""
-
--#: c/c-decl.c:5756
-+#: c/c-decl.c:5766
- #, gcc-internal-format
- msgid "declaration of type name as array of voids"
- msgstr ""
-
--#: c/c-decl.c:5763
-+#: c/c-decl.c:5773
- #, gcc-internal-format
- msgid "declaration of %qE as array of functions"
- msgstr ""
-
--#: c/c-decl.c:5766
-+#: c/c-decl.c:5776
- #, gcc-internal-format
- msgid "declaration of type name as array of functions"
- msgstr ""
-
--#: c/c-decl.c:5774 c/c-decl.c:7759
-+#: c/c-decl.c:5784 c/c-decl.c:7769
- #, gcc-internal-format
- msgid "invalid use of structure with flexible array member"
- msgstr ""
-
--#: c/c-decl.c:5800
-+#: c/c-decl.c:5810
- #, gcc-internal-format
- msgid "size of array %qE has non-integer type"
- msgstr ""
-
--#: c/c-decl.c:5804
-+#: c/c-decl.c:5814
- #, gcc-internal-format
- msgid "size of unnamed array has non-integer type"
- msgstr ""
-
--#: c/c-decl.c:5814
-+#: c/c-decl.c:5824
- #, gcc-internal-format
- msgid "ISO C forbids zero-size array %qE"
- msgstr ""
-
--#: c/c-decl.c:5817
-+#: c/c-decl.c:5827
- #, gcc-internal-format
- msgid "ISO C forbids zero-size array"
- msgstr ""
-
--#: c/c-decl.c:5826
-+#: c/c-decl.c:5836
- #, gcc-internal-format
- msgid "size of array %qE is negative"
- msgstr ""
-
--#: c/c-decl.c:5828
-+#: c/c-decl.c:5838
- #, gcc-internal-format
- msgid "size of unnamed array is negative"
- msgstr ""
-
--#: c/c-decl.c:5952 c/c-decl.c:6561
-+#: c/c-decl.c:5962 c/c-decl.c:6571
- #, gcc-internal-format
- msgid "ISO C90 does not support flexible array members"
- msgstr ""
-
- #. C99 6.7.5.2p4
--#: c/c-decl.c:5974
-+#: c/c-decl.c:5984
- #, gcc-internal-format
- msgid "%<[*]%> not in a declaration"
- msgstr ""
-
--#: c/c-decl.c:5987
-+#: c/c-decl.c:5997
- #, gcc-internal-format
- msgid "array type has incomplete element type %qT"
- msgstr ""
-
--#: c/c-decl.c:5993
-+#: c/c-decl.c:6003
- #, gcc-internal-format
- msgid ""
- "declaration of %qE as multidimensional array must have bounds for all "
-@@ -31944,7 +32018,7 @@
- "dimensions except the first"
- msgstr ""
-
--#: c/c-decl.c:5997
-+#: c/c-decl.c:6007
- #, gcc-internal-format
- msgid ""
- "declaration of multidimensional array must have bounds for all dimensions "
-@@ -31951,289 +32025,289 @@
- "except the first"
- msgstr ""
-
--#: c/c-decl.c:6100
-+#: c/c-decl.c:6110
- #, gcc-internal-format
- msgid "%qE declared as function returning a function"
- msgstr ""
-
--#: c/c-decl.c:6103
-+#: c/c-decl.c:6113
- #, gcc-internal-format
- msgid "type name declared as function returning a function"
- msgstr ""
-
--#: c/c-decl.c:6110
-+#: c/c-decl.c:6120
- #, gcc-internal-format
- msgid "%qE declared as function returning an array"
- msgstr ""
-
--#: c/c-decl.c:6113
-+#: c/c-decl.c:6123
- #, gcc-internal-format
- msgid "type name declared as function returning an array"
- msgstr ""
-
--#: c/c-decl.c:6141
-+#: c/c-decl.c:6151
- #, gcc-internal-format
- msgid "function definition has qualified void return type"
- msgstr ""
-
--#: c/c-decl.c:6144 cp/decl.c:10083
-+#: c/c-decl.c:6154 cp/decl.c:10083
- #, gcc-internal-format
- msgid "type qualifiers ignored on function return type"
- msgstr ""
-
--#: c/c-decl.c:6173 c/c-decl.c:6357 c/c-decl.c:6411 c/c-decl.c:6495
--#: c/c-decl.c:6613 c/c-parser.c:2586
-+#: c/c-decl.c:6183 c/c-decl.c:6367 c/c-decl.c:6421 c/c-decl.c:6505
-+#: c/c-decl.c:6623 c/c-parser.c:2586
- #, gcc-internal-format
- msgid "%<_Atomic%>-qualified function type"
- msgstr ""
-
--#: c/c-decl.c:6179 c/c-decl.c:6363 c/c-decl.c:6500 c/c-decl.c:6618
-+#: c/c-decl.c:6189 c/c-decl.c:6373 c/c-decl.c:6510 c/c-decl.c:6628
- #, gcc-internal-format
- msgid "ISO C forbids qualified function types"
- msgstr ""
-
--#: c/c-decl.c:6248
-+#: c/c-decl.c:6258
- #, gcc-internal-format
- msgid "%qs combined with %<auto%> qualifier for %qE"
- msgstr ""
-
--#: c/c-decl.c:6252
-+#: c/c-decl.c:6262
- #, gcc-internal-format
- msgid "%qs combined with %<register%> qualifier for %qE"
- msgstr ""
-
--#: c/c-decl.c:6258
-+#: c/c-decl.c:6268
- #, gcc-internal-format
- msgid "%qs specified for auto variable %qE"
- msgstr ""
-
--#: c/c-decl.c:6274
-+#: c/c-decl.c:6284
- #, gcc-internal-format
- msgid "%qs specified for parameter %qE"
- msgstr ""
-
--#: c/c-decl.c:6277
-+#: c/c-decl.c:6287
- #, gcc-internal-format
- msgid "%qs specified for unnamed parameter"
- msgstr ""
-
--#: c/c-decl.c:6283
-+#: c/c-decl.c:6293
- #, gcc-internal-format
- msgid "%qs specified for structure field %qE"
- msgstr ""
-
--#: c/c-decl.c:6286
-+#: c/c-decl.c:6296
- #, gcc-internal-format
- msgid "%qs specified for structure field"
- msgstr ""
-
--#: c/c-decl.c:6301
-+#: c/c-decl.c:6311
- #, gcc-internal-format
- msgid "bit-field %qE has atomic type"
- msgstr ""
-
--#: c/c-decl.c:6303
-+#: c/c-decl.c:6313
- #, gcc-internal-format
- msgid "bit-field has atomic type"
- msgstr ""
-
--#: c/c-decl.c:6312
-+#: c/c-decl.c:6322
- #, gcc-internal-format
- msgid "alignment specified for typedef %qE"
- msgstr ""
-
--#: c/c-decl.c:6314
-+#: c/c-decl.c:6324
- #, gcc-internal-format
- msgid "alignment specified for %<register%> object %qE"
- msgstr ""
-
--#: c/c-decl.c:6319
-+#: c/c-decl.c:6329
- #, gcc-internal-format
- msgid "alignment specified for parameter %qE"
- msgstr ""
-
--#: c/c-decl.c:6321
-+#: c/c-decl.c:6331
- #, gcc-internal-format
- msgid "alignment specified for unnamed parameter"
- msgstr ""
-
--#: c/c-decl.c:6326
-+#: c/c-decl.c:6336
- #, gcc-internal-format
- msgid "alignment specified for bit-field %qE"
- msgstr ""
-
--#: c/c-decl.c:6328
-+#: c/c-decl.c:6338
- #, gcc-internal-format
- msgid "alignment specified for unnamed bit-field"
- msgstr ""
-
--#: c/c-decl.c:6331
-+#: c/c-decl.c:6341
- #, gcc-internal-format
- msgid "alignment specified for function %qE"
- msgstr ""
-
--#: c/c-decl.c:6338
-+#: c/c-decl.c:6348
- #, gcc-internal-format
- msgid "%<_Alignas%> specifiers cannot reduce alignment of %qE"
- msgstr ""
-
--#: c/c-decl.c:6341
-+#: c/c-decl.c:6351
- #, gcc-internal-format
- msgid "%<_Alignas%> specifiers cannot reduce alignment of unnamed field"
- msgstr ""
-
--#: c/c-decl.c:6372
-+#: c/c-decl.c:6382
- #, gcc-internal-format
- msgid "typedef %q+D declared %<inline%>"
- msgstr ""
-
--#: c/c-decl.c:6374
-+#: c/c-decl.c:6384
- #, gcc-internal-format
- msgid "typedef %q+D declared %<_Noreturn%>"
- msgstr ""
-
--#: c/c-decl.c:6417
-+#: c/c-decl.c:6427
- #, gcc-internal-format
- msgid "ISO C forbids const or volatile function types"
- msgstr ""
-
- #. C99 6.7.2.1p8
--#: c/c-decl.c:6428
-+#: c/c-decl.c:6438
- #, gcc-internal-format
- msgid "a member of a structure or union cannot have a variably modified type"
- msgstr ""
-
--#: c/c-decl.c:6445 cp/decl.c:9158
-+#: c/c-decl.c:6455 cp/decl.c:9158
- #, gcc-internal-format
- msgid "variable or field %qE declared void"
- msgstr ""
-
--#: c/c-decl.c:6485
-+#: c/c-decl.c:6495
- #, gcc-internal-format
- msgid "attributes in parameter array declarator ignored"
- msgstr ""
-
--#: c/c-decl.c:6527
-+#: c/c-decl.c:6537
- #, gcc-internal-format
- msgid "parameter %q+D declared %<inline%>"
- msgstr ""
-
--#: c/c-decl.c:6529
-+#: c/c-decl.c:6539
- #, gcc-internal-format
- msgid "parameter %q+D declared %<_Noreturn%>"
- msgstr ""
-
--#: c/c-decl.c:6542
-+#: c/c-decl.c:6552
- #, gcc-internal-format
- msgid "field %qE declared as a function"
- msgstr ""
-
--#: c/c-decl.c:6549
-+#: c/c-decl.c:6559
- #, gcc-internal-format
- msgid "field %qE has incomplete type"
- msgstr ""
-
--#: c/c-decl.c:6551
-+#: c/c-decl.c:6561
- #, gcc-internal-format
- msgid "unnamed field has incomplete type"
- msgstr ""
-
--#: c/c-decl.c:6584 c/c-decl.c:6595 c/c-decl.c:6598
-+#: c/c-decl.c:6594 c/c-decl.c:6605 c/c-decl.c:6608
- #, gcc-internal-format
- msgid "invalid storage class for function %qE"
- msgstr ""
-
--#: c/c-decl.c:6655
-+#: c/c-decl.c:6665
- #, gcc-internal-format
- msgid "cannot inline function %<main%>"
- msgstr ""
-
--#: c/c-decl.c:6657
-+#: c/c-decl.c:6667
- #, gcc-internal-format
- msgid "%<main%> declared %<_Noreturn%>"
- msgstr ""
-
--#: c/c-decl.c:6668
-+#: c/c-decl.c:6678
- #, gcc-internal-format
- msgid "ISO C99 does not support %<_Noreturn%>"
- msgstr ""
-
--#: c/c-decl.c:6671
-+#: c/c-decl.c:6681
- #, gcc-internal-format
- msgid "ISO C90 does not support %<_Noreturn%>"
- msgstr ""
-
--#: c/c-decl.c:6700
-+#: c/c-decl.c:6710
- #, gcc-internal-format
- msgid "variable previously declared %<static%> redeclared %<extern%>"
- msgstr ""
-
--#: c/c-decl.c:6710
-+#: c/c-decl.c:6720
- #, gcc-internal-format
- msgid "variable %q+D declared %<inline%>"
- msgstr ""
-
--#: c/c-decl.c:6712
-+#: c/c-decl.c:6722
- #, gcc-internal-format
- msgid "variable %q+D declared %<_Noreturn%>"
- msgstr ""
-
--#: c/c-decl.c:6747
-+#: c/c-decl.c:6757
- #, gcc-internal-format
- msgid "non-nested function with variably modified type"
- msgstr ""
-
--#: c/c-decl.c:6749
-+#: c/c-decl.c:6759
- #, gcc-internal-format
- msgid "object with variably modified type must have no linkage"
- msgstr ""
-
--#: c/c-decl.c:6839 c/c-decl.c:8444
-+#: c/c-decl.c:6849 c/c-decl.c:8454
- #, gcc-internal-format
- msgid "function declaration isn%'t a prototype"
- msgstr ""
-
--#: c/c-decl.c:6848
-+#: c/c-decl.c:6858
- #, gcc-internal-format
- msgid "parameter names (without types) in function declaration"
- msgstr ""
-
--#: c/c-decl.c:6886
-+#: c/c-decl.c:6896
- #, gcc-internal-format
- msgid "parameter %u (%q+D) has incomplete type"
- msgstr ""
-
--#: c/c-decl.c:6890
-+#: c/c-decl.c:6900
- #, gcc-internal-format, gfc-internal-format
- msgid "parameter %u has incomplete type"
- msgstr ""
-
--#: c/c-decl.c:6901
-+#: c/c-decl.c:6911
- #, gcc-internal-format
- msgid "parameter %u (%q+D) has void type"
- msgstr ""
-
--#: c/c-decl.c:6905
-+#: c/c-decl.c:6915
- #, gcc-internal-format, gfc-internal-format
- msgid "parameter %u has void type"
- msgstr ""
-
--#: c/c-decl.c:6988
-+#: c/c-decl.c:6998
- #, gcc-internal-format
- msgid "%<void%> as only parameter may not be qualified"
- msgstr ""
-
--#: c/c-decl.c:6992 c/c-decl.c:7028
-+#: c/c-decl.c:7002 c/c-decl.c:7038
- #, gcc-internal-format
- msgid "%<void%> must be the only parameter"
- msgstr ""
-
--#: c/c-decl.c:7022
-+#: c/c-decl.c:7032
- #, gcc-internal-format
- msgid "parameter %q+D has just a forward declaration"
- msgstr ""
-
--#: c/c-decl.c:7068
-+#: c/c-decl.c:7078
- #, gcc-internal-format
- msgid ""
- "%<%s %E%> declared inside parameter list will not be visible outside of this "
-@@ -32240,7 +32314,7 @@
- "definition or declaration"
- msgstr ""
-
--#: c/c-decl.c:7074
-+#: c/c-decl.c:7084
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "anonymous %s declared inside parameter list will not be visible outside of "
-@@ -32247,313 +32321,313 @@
- "this definition or declaration"
- msgstr ""
-
--#: c/c-decl.c:7176
-+#: c/c-decl.c:7186
- #, gcc-internal-format
- msgid "enum type defined here"
- msgstr ""
-
--#: c/c-decl.c:7182
-+#: c/c-decl.c:7192
- #, gcc-internal-format
- msgid "struct defined here"
- msgstr ""
-
--#: c/c-decl.c:7188
-+#: c/c-decl.c:7198
- #, gcc-internal-format
- msgid "union defined here"
- msgstr ""
-
--#: c/c-decl.c:7261
-+#: c/c-decl.c:7271
- #, gcc-internal-format
- msgid "redefinition of %<union %E%>"
- msgstr ""
-
--#: c/c-decl.c:7263
-+#: c/c-decl.c:7273
- #, gcc-internal-format
- msgid "redefinition of %<struct %E%>"
- msgstr ""
-
--#: c/c-decl.c:7272
-+#: c/c-decl.c:7282
- #, gcc-internal-format
- msgid "nested redefinition of %<union %E%>"
- msgstr ""
-
--#: c/c-decl.c:7274
-+#: c/c-decl.c:7284
- #, gcc-internal-format
- msgid "nested redefinition of %<struct %E%>"
- msgstr ""
-
--#: c/c-decl.c:7307 c/c-decl.c:8023
-+#: c/c-decl.c:7317 c/c-decl.c:8033
- #, gcc-internal-format
- msgid "defining type in %qs expression is invalid in C++"
- msgstr ""
-
--#: c/c-decl.c:7375 cp/decl.c:4616
-+#: c/c-decl.c:7385 cp/decl.c:4616
- #, gcc-internal-format
- msgid "declaration does not declare anything"
- msgstr ""
-
--#: c/c-decl.c:7380
-+#: c/c-decl.c:7390
- #, gcc-internal-format
- msgid "ISO C99 doesn%'t support unnamed structs/unions"
- msgstr ""
-
--#: c/c-decl.c:7383
-+#: c/c-decl.c:7393
- #, gcc-internal-format
- msgid "ISO C90 doesn%'t support unnamed structs/unions"
- msgstr ""
-
--#: c/c-decl.c:7474 c/c-decl.c:7492 c/c-decl.c:7553
-+#: c/c-decl.c:7484 c/c-decl.c:7502 c/c-decl.c:7563
- #, gcc-internal-format
- msgid "duplicate member %q+D"
- msgstr ""
-
--#: c/c-decl.c:7579
-+#: c/c-decl.c:7589
- #, gcc-internal-format
- msgid "empty struct has size 0 in C, size 1 in C++"
- msgstr ""
-
--#: c/c-decl.c:7582
-+#: c/c-decl.c:7592
- #, gcc-internal-format
- msgid "empty union has size 0 in C, size 1 in C++"
- msgstr ""
-
--#: c/c-decl.c:7668
-+#: c/c-decl.c:7678
- #, gcc-internal-format
- msgid "union has no named members"
- msgstr ""
-
--#: c/c-decl.c:7670
-+#: c/c-decl.c:7680
- #, gcc-internal-format
- msgid "union has no members"
- msgstr ""
-
--#: c/c-decl.c:7675
-+#: c/c-decl.c:7685
- #, gcc-internal-format
- msgid "struct has no named members"
- msgstr ""
-
--#: c/c-decl.c:7677
-+#: c/c-decl.c:7687
- #, gcc-internal-format
- msgid "struct has no members"
- msgstr ""
-
--#: c/c-decl.c:7739 cp/decl.c:11032
-+#: c/c-decl.c:7749 cp/decl.c:11032
- #, gcc-internal-format
- msgid "flexible array member in union"
- msgstr ""
-
--#: c/c-decl.c:7745
-+#: c/c-decl.c:7755
- #, gcc-internal-format
- msgid "flexible array member not at end of struct"
- msgstr ""
-
--#: c/c-decl.c:7751
-+#: c/c-decl.c:7761
- #, gcc-internal-format
- msgid "flexible array member in otherwise empty struct"
- msgstr ""
-
--#: c/c-decl.c:7781
-+#: c/c-decl.c:7791
- #, gcc-internal-format
- msgid "type %qT is too large"
- msgstr ""
-
--#: c/c-decl.c:7904
-+#: c/c-decl.c:7914
- #, gcc-internal-format
- msgid "union cannot be made transparent"
- msgstr ""
-
--#: c/c-decl.c:7995
-+#: c/c-decl.c:8005
- #, gcc-internal-format
- msgid "nested redefinition of %<enum %E%>"
- msgstr ""
-
- #. This enum is a named one that has been declared already.
--#: c/c-decl.c:8002
-+#: c/c-decl.c:8012
- #, gcc-internal-format
- msgid "redeclaration of %<enum %E%>"
- msgstr ""
-
--#: c/c-decl.c:8081 cp/decl.c:13403
-+#: c/c-decl.c:8091 cp/decl.c:13403
- #, gcc-internal-format
- msgid "specified mode too small for enumeral values"
- msgstr ""
-
--#: c/c-decl.c:8096
-+#: c/c-decl.c:8106
- #, gcc-internal-format
- msgid "enumeration values exceed range of largest integer"
- msgstr ""
-
--#: c/c-decl.c:8210 c/c-decl.c:8226
-+#: c/c-decl.c:8220 c/c-decl.c:8236
- #, gcc-internal-format
- msgid "enumerator value for %qE is not an integer constant"
- msgstr ""
-
--#: c/c-decl.c:8221
-+#: c/c-decl.c:8231
- #, gcc-internal-format
- msgid "enumerator value for %qE is not an integer constant expression"
- msgstr ""
-
--#: c/c-decl.c:8245
-+#: c/c-decl.c:8255
- #, gcc-internal-format
- msgid "overflow in enumeration values"
- msgstr ""
-
--#: c/c-decl.c:8253
-+#: c/c-decl.c:8263
- #, gcc-internal-format
- msgid "ISO C restricts enumerator values to range of %<int%>"
- msgstr ""
-
--#: c/c-decl.c:8339 cp/decl.c:4918 cp/decl.c:13899
-+#: c/c-decl.c:8349 cp/decl.c:4918 cp/decl.c:13902
- #, gcc-internal-format
- msgid "inline function %qD given attribute noinline"
- msgstr ""
-
--#: c/c-decl.c:8357
-+#: c/c-decl.c:8367
- #, gcc-internal-format
- msgid "return type is an incomplete type"
- msgstr ""
-
--#: c/c-decl.c:8368
-+#: c/c-decl.c:8378
- #, gcc-internal-format
- msgid "return type defaults to %<int%>"
- msgstr ""
-
--#: c/c-decl.c:8394
-+#: c/c-decl.c:8404
- #, gcc-internal-format
- msgid "%q+D defined as variadic function without prototype"
- msgstr ""
-
--#: c/c-decl.c:8453
-+#: c/c-decl.c:8463
- #, gcc-internal-format
- msgid "no previous prototype for %qD"
- msgstr ""
-
--#: c/c-decl.c:8462
-+#: c/c-decl.c:8472
- #, gcc-internal-format
- msgid "%qD was used with no prototype before its definition"
- msgstr ""
-
--#: c/c-decl.c:8470 cp/decl.c:14042
-+#: c/c-decl.c:8480 cp/decl.c:14045
- #, gcc-internal-format
- msgid "no previous declaration for %qD"
- msgstr ""
-
--#: c/c-decl.c:8480
-+#: c/c-decl.c:8490
- #, gcc-internal-format
- msgid "%qD was used with no declaration before its definition"
- msgstr ""
-
--#: c/c-decl.c:8499
-+#: c/c-decl.c:8509
- #, gcc-internal-format
- msgid "return type of %qD is not %<int%>"
- msgstr ""
-
--#: c/c-decl.c:8501
-+#: c/c-decl.c:8511
- #, gcc-internal-format
- msgid "%<_Atomic%>-qualified return type of %qD"
- msgstr ""
-
--#: c/c-decl.c:8508
-+#: c/c-decl.c:8518
- #, gcc-internal-format
- msgid "%qD is normally a non-static function"
- msgstr ""
-
--#: c/c-decl.c:8545
-+#: c/c-decl.c:8555
- #, gcc-internal-format
- msgid "old-style parameter declarations in prototyped function definition"
- msgstr ""
-
--#: c/c-decl.c:8560
-+#: c/c-decl.c:8570
- #, gcc-internal-format
- msgid "traditional C rejects ISO C style function definitions"
- msgstr ""
-
--#: c/c-decl.c:8576
-+#: c/c-decl.c:8586
- #, gcc-internal-format
- msgid "parameter name omitted"
- msgstr ""
-
--#: c/c-decl.c:8613
-+#: c/c-decl.c:8623
- #, gcc-internal-format
- msgid "old-style function definition"
- msgstr ""
-
--#: c/c-decl.c:8622
-+#: c/c-decl.c:8632
- #, gcc-internal-format
- msgid "parameter name missing from parameter list"
- msgstr ""
-
--#: c/c-decl.c:8637
-+#: c/c-decl.c:8647
- #, gcc-internal-format
- msgid "%qD declared as a non-parameter"
- msgstr ""
-
--#: c/c-decl.c:8643
-+#: c/c-decl.c:8653
- #, gcc-internal-format
- msgid "multiple parameters named %qD"
- msgstr ""
-
--#: c/c-decl.c:8652
-+#: c/c-decl.c:8662
- #, gcc-internal-format
- msgid "parameter %qD declared with void type"
- msgstr ""
-
--#: c/c-decl.c:8681 c/c-decl.c:8686
-+#: c/c-decl.c:8691 c/c-decl.c:8696
- #, gcc-internal-format
- msgid "type of %qD defaults to %<int%>"
- msgstr ""
-
--#: c/c-decl.c:8706
-+#: c/c-decl.c:8716
- #, gcc-internal-format
- msgid "parameter %qD has incomplete type"
- msgstr ""
-
--#: c/c-decl.c:8713
-+#: c/c-decl.c:8723
- #, gcc-internal-format
- msgid "declaration for parameter %qD but no such parameter"
- msgstr ""
-
--#: c/c-decl.c:8763
-+#: c/c-decl.c:8773
- #, gcc-internal-format
- msgid "number of arguments doesn%'t match built-in prototype"
- msgstr ""
-
--#: c/c-decl.c:8774
-+#: c/c-decl.c:8784
- #, gcc-internal-format
- msgid "number of arguments doesn%'t match prototype"
- msgstr ""
-
--#: c/c-decl.c:8777 c/c-decl.c:8824 c/c-decl.c:8838
-+#: c/c-decl.c:8787 c/c-decl.c:8834 c/c-decl.c:8848
- #, gcc-internal-format
- msgid "prototype declaration"
- msgstr ""
-
--#: c/c-decl.c:8816
-+#: c/c-decl.c:8826
- #, gcc-internal-format
- msgid "promoted argument %qD doesn%'t match built-in prototype"
- msgstr ""
-
--#: c/c-decl.c:8821
-+#: c/c-decl.c:8831
- #, gcc-internal-format
- msgid "promoted argument %qD doesn%'t match prototype"
- msgstr ""
-
--#: c/c-decl.c:8831
-+#: c/c-decl.c:8841
- #, gcc-internal-format
- msgid "argument %qD doesn%'t match built-in prototype"
- msgstr ""
-
--#: c/c-decl.c:8836
-+#: c/c-decl.c:8846
- #, gcc-internal-format
- msgid "argument %qD doesn%'t match prototype"
- msgstr ""
-
--#: c/c-decl.c:9093 cp/decl.c:14796
-+#: c/c-decl.c:9103 cp/decl.c:14799
- #, gcc-internal-format
- msgid "no return statement in function returning non-void"
- msgstr ""
-
--#: c/c-decl.c:9113 cp/decl.c:14828
-+#: c/c-decl.c:9123 cp/decl.c:14831
- #, gcc-internal-format
- msgid "parameter %qD set but not used"
- msgstr ""
-@@ -32561,194 +32635,194 @@
- #. If we get here, declarations have been used in a for loop without
- #. the C99 for loop scope. This doesn't make much sense, so don't
- #. allow it.
--#: c/c-decl.c:9207
-+#: c/c-decl.c:9217
- #, gcc-internal-format
- msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
- msgstr ""
-
--#: c/c-decl.c:9212
-+#: c/c-decl.c:9222
- #, gcc-internal-format
- msgid ""
- "use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code"
- msgstr ""
-
--#: c/c-decl.c:9247
-+#: c/c-decl.c:9257
- #, gcc-internal-format
- msgid "declaration of static variable %qD in %<for%> loop initial declaration"
- msgstr ""
-
--#: c/c-decl.c:9251
-+#: c/c-decl.c:9261
- #, gcc-internal-format
- msgid ""
- "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
- msgstr ""
-
--#: c/c-decl.c:9258
-+#: c/c-decl.c:9268
- #, gcc-internal-format
- msgid "%<struct %E%> declared in %<for%> loop initial declaration"
- msgstr ""
-
--#: c/c-decl.c:9263
-+#: c/c-decl.c:9273
- #, gcc-internal-format
- msgid "%<union %E%> declared in %<for%> loop initial declaration"
- msgstr ""
-
--#: c/c-decl.c:9267
-+#: c/c-decl.c:9277
- #, gcc-internal-format
- msgid "%<enum %E%> declared in %<for%> loop initial declaration"
- msgstr ""
-
--#: c/c-decl.c:9271
-+#: c/c-decl.c:9281
- #, gcc-internal-format
- msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
- msgstr ""
-
--#: c/c-decl.c:9519
-+#: c/c-decl.c:9529
- #, gcc-internal-format
- msgid "incompatible address space qualifiers %qs and %qs"
- msgstr ""
-
--#: c/c-decl.c:9569 c/c-decl.c:9926 c/c-decl.c:10416
-+#: c/c-decl.c:9579 c/c-decl.c:9936 c/c-decl.c:10426
- #, gcc-internal-format
- msgid "duplicate %qE"
- msgstr ""
-
--#: c/c-decl.c:9595 c/c-decl.c:9938 c/c-decl.c:10259
-+#: c/c-decl.c:9605 c/c-decl.c:9948 c/c-decl.c:10269
- #, gcc-internal-format
- msgid "two or more data types in declaration specifiers"
- msgstr ""
-
--#: c/c-decl.c:9607 cp/parser.c:26808
-+#: c/c-decl.c:9617 cp/parser.c:26823
- #, gcc-internal-format
- msgid "%<long long long%> is too long for GCC"
- msgstr ""
-
--#: c/c-decl.c:9620
-+#: c/c-decl.c:9630
- #, gcc-internal-format
- msgid "ISO C90 does not support %<long long%>"
- msgstr ""
-
--#: c/c-decl.c:9817 c/c-parser.c:7943
-+#: c/c-decl.c:9827 c/c-parser.c:7943
- #, gcc-internal-format
- msgid "ISO C90 does not support complex types"
- msgstr ""
-
--#: c/c-decl.c:9863
-+#: c/c-decl.c:9873
- #, gcc-internal-format
- msgid "ISO C does not support saturating types"
- msgstr ""
-
--#: c/c-decl.c:9981
-+#: c/c-decl.c:9991
- #, gcc-internal-format
- msgid "ISO C does not support %<__int%d%> types"
- msgstr ""
-
--#: c/c-decl.c:10001
-+#: c/c-decl.c:10011
- #, gcc-internal-format
- msgid "%<__int%d%> is not supported on this target"
- msgstr ""
-
--#: c/c-decl.c:10043
-+#: c/c-decl.c:10053
- #, gcc-internal-format
- msgid "ISO C90 does not support boolean types"
- msgstr ""
-
--#: c/c-decl.c:10217
-+#: c/c-decl.c:10227
- #, gcc-internal-format
- msgid "ISO C does not support decimal floating point"
- msgstr ""
-
--#: c/c-decl.c:10240 c/c-decl.c:10506 c/c-parser.c:7446
-+#: c/c-decl.c:10250 c/c-decl.c:10516 c/c-parser.c:7446
- #, gcc-internal-format
- msgid "fixed-point types not supported for this target"
- msgstr ""
-
--#: c/c-decl.c:10242
-+#: c/c-decl.c:10252
- #, gcc-internal-format
- msgid "ISO C does not support fixed-point types"
- msgstr ""
-
--#: c/c-decl.c:10277
-+#: c/c-decl.c:10287
- #, gcc-internal-format
- msgid "C++ lookup of %qD would return a field, not a type"
- msgstr ""
-
--#: c/c-decl.c:10290
-+#: c/c-decl.c:10300
- #, gcc-internal-format
- msgid "%qE fails to be a typedef or built in type"
- msgstr ""
-
--#: c/c-decl.c:10338
-+#: c/c-decl.c:10348
- #, gcc-internal-format
- msgid "%qE is not at beginning of declaration"
- msgstr ""
-
--#: c/c-decl.c:10359
-+#: c/c-decl.c:10369
- #, gcc-internal-format
- msgid "%qE used with %<auto%>"
- msgstr ""
-
--#: c/c-decl.c:10361
-+#: c/c-decl.c:10371
- #, gcc-internal-format
- msgid "%qE used with %<register%>"
- msgstr ""
-
--#: c/c-decl.c:10363
-+#: c/c-decl.c:10373
- #, gcc-internal-format
- msgid "%qE used with %<typedef%>"
- msgstr ""
-
--#: c/c-decl.c:10377 c/c-parser.c:7023
-+#: c/c-decl.c:10387 c/c-parser.c:7023
- #, gcc-internal-format
- msgid "ISO C99 does not support %qE"
- msgstr ""
-
--#: c/c-decl.c:10380 c/c-parser.c:7026
-+#: c/c-decl.c:10390 c/c-parser.c:7026
- #, gcc-internal-format
- msgid "ISO C90 does not support %qE"
- msgstr ""
-
--#: c/c-decl.c:10392
-+#: c/c-decl.c:10402
- #, gcc-internal-format
- msgid "%<__thread%> before %<extern%>"
- msgstr ""
-
--#: c/c-decl.c:10401
-+#: c/c-decl.c:10411
- #, gcc-internal-format
- msgid "%<__thread%> before %<static%>"
- msgstr ""
-
--#: c/c-decl.c:10414
-+#: c/c-decl.c:10424
- #, gcc-internal-format
- msgid "duplicate %<_Thread_local%> or %<__thread%>"
- msgstr ""
-
--#: c/c-decl.c:10422
-+#: c/c-decl.c:10432
- #, gcc-internal-format
- msgid "multiple storage classes in declaration specifiers"
- msgstr ""
-
--#: c/c-decl.c:10430
-+#: c/c-decl.c:10440
- #, gcc-internal-format
- msgid "%qs used with %qE"
- msgstr ""
-
--#: c/c-decl.c:10503
-+#: c/c-decl.c:10513
- #, gcc-internal-format
- msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
- msgstr ""
-
--#: c/c-decl.c:10518
-+#: c/c-decl.c:10528
- #, gcc-internal-format
- msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
- msgstr ""
-
--#: c/c-decl.c:10569 c/c-decl.c:10582 c/c-decl.c:10608
-+#: c/c-decl.c:10579 c/c-decl.c:10592 c/c-decl.c:10618
- #, gcc-internal-format
- msgid "ISO C does not support complex integer types"
- msgstr ""
-
--#: c/c-decl.c:11006 cp/semantics.c:5297
-+#: c/c-decl.c:11016 cp/semantics.c:5298
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp declare reduction%> combiner refers to variable %qD which is "
-@@ -32755,7 +32829,7 @@
- "not %<omp_out%> nor %<omp_in%>"
- msgstr ""
-
--#: c/c-decl.c:11010 cp/semantics.c:5301
-+#: c/c-decl.c:11020 cp/semantics.c:5302
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp declare reduction%> initializer refers to variable %qD which "
-@@ -32762,27 +32836,27 @@
- "is not %<omp_priv%> nor %<omp_orig%>"
- msgstr ""
-
--#: c/c-fold.c:319 c/c-typeck.c:10988 cp/typeck.c:4465
-+#: c/c-fold.c:319 c/c-typeck.c:10998 cp/typeck.c:4465
- #, gcc-internal-format
- msgid "left shift of negative value"
- msgstr ""
-
--#: c/c-fold.c:331 c/c-typeck.c:10997 cp/typeck.c:4473
-+#: c/c-fold.c:331 c/c-typeck.c:11007 cp/typeck.c:4473
- #, gcc-internal-format
- msgid "left shift count is negative"
- msgstr ""
-
--#: c/c-fold.c:332 c/c-typeck.c:10936 cp/typeck.c:4419
-+#: c/c-fold.c:332 c/c-typeck.c:10946 cp/typeck.c:4419
- #, gcc-internal-format
- msgid "right shift count is negative"
- msgstr ""
-
--#: c/c-fold.c:338 c/c-typeck.c:11004 cp/typeck.c:4481
-+#: c/c-fold.c:338 c/c-typeck.c:11014 cp/typeck.c:4481
- #, gcc-internal-format
- msgid "left shift count >= width of type"
- msgstr ""
-
--#: c/c-fold.c:339 c/c-typeck.c:10948 cp/typeck.c:4427
-+#: c/c-fold.c:339 c/c-typeck.c:10958 cp/typeck.c:4427
- #, gcc-internal-format
- msgid "right shift count >= width of type"
- msgstr ""
-@@ -32797,7 +32871,7 @@
- msgid "version control conflict marker in file"
- msgstr ""
-
--#: c/c-parser.c:1086 cp/parser.c:27015
-+#: c/c-parser.c:1086 cp/parser.c:27030
- #, gcc-internal-format
- msgid "expected end of line"
- msgstr ""
-@@ -32833,7 +32907,7 @@
- msgstr ""
-
- #: c/c-parser.c:1686 c/c-parser.c:10203 c/c-parser.c:15182 c/c-parser.c:16077
--#: cp/parser.c:34050 cp/parser.c:34949 cp/parser.c:37474
-+#: cp/parser.c:34065 cp/parser.c:34964 cp/parser.c:37489
- #, gcc-internal-format
- msgid "expected declaration specifiers"
- msgstr ""
-@@ -32848,7 +32922,7 @@
- msgid "expected %<;%>, identifier or %<(%>"
- msgstr ""
-
--#: c/c-parser.c:1735 cp/parser.c:28663 cp/parser.c:28737
-+#: c/c-parser.c:1735 cp/parser.c:28678 cp/parser.c:28752
- #, gcc-internal-format
- msgid "prefix attributes are ignored for methods"
- msgstr ""
-@@ -32897,7 +32971,7 @@
- msgid "%<__auto_type%> may only be used with a single declarator"
- msgstr ""
-
--#: c/c-parser.c:2036 cp/parser.c:12465
-+#: c/c-parser.c:2036 cp/parser.c:12475
- #, gcc-internal-format
- msgid "expected %<,%> or %<;%>"
- msgstr ""
-@@ -32925,7 +32999,7 @@
- msgid "ISO C90 does not support %<_Static_assert%>"
- msgstr ""
-
--#: c/c-parser.c:2209 c/c-parser.c:3877 c/c-parser.c:10261 cp/parser.c:37179
-+#: c/c-parser.c:2209 c/c-parser.c:3877 c/c-parser.c:10261 cp/parser.c:37194
- #, gcc-internal-format
- msgid "expected string literal"
- msgstr ""
-@@ -32988,14 +33062,14 @@
- #: c/c-parser.c:9232 c/c-parser.c:9356 c/c-parser.c:9796 c/c-parser.c:9831
- #: c/c-parser.c:9884 c/c-parser.c:9937 c/c-parser.c:9953 c/c-parser.c:9999
- #: c/c-parser.c:10575 c/c-parser.c:10616 c/c-parser.c:12546 c/c-parser.c:12780
--#: c/c-parser.c:14579 c/c-parser.c:17356 c/c-parser.c:17685 cp/parser.c:27018
--#: cp/parser.c:29506 cp/parser.c:29536 cp/parser.c:29606 cp/parser.c:31701
--#: cp/parser.c:36893 cp/parser.c:37618
-+#: c/c-parser.c:14579 c/c-parser.c:17356 c/c-parser.c:17685 cp/parser.c:27033
-+#: cp/parser.c:29521 cp/parser.c:29551 cp/parser.c:29621 cp/parser.c:31716
-+#: cp/parser.c:36908 cp/parser.c:37633
- #, gcc-internal-format
- msgid "expected identifier"
- msgstr ""
-
--#: c/c-parser.c:2745 cp/parser.c:17380
-+#: c/c-parser.c:2745 cp/parser.c:17390
- #, gcc-internal-format
- msgid "comma at end of enumerator list"
- msgstr ""
-@@ -33130,7 +33204,7 @@
- msgid "expected %<}%> before %<else%>"
- msgstr ""
-
--#: c/c-parser.c:4847 cp/parser.c:10803
-+#: c/c-parser.c:4847 cp/parser.c:10813
- #, gcc-internal-format
- msgid "%<else%> without a previous %<if%>"
- msgstr ""
-@@ -33151,12 +33225,12 @@
- "a label can only be part of a statement and a declaration is not a statement"
- msgstr ""
-
--#: c/c-parser.c:5156 cp/parser.c:10404
-+#: c/c-parser.c:5156 cp/parser.c:10414
- #, gcc-internal-format
- msgid "-fcilkplus must be enabled to use %<_Cilk_for%>"
- msgstr ""
-
--#: c/c-parser.c:5166 cp/parser.c:10430
-+#: c/c-parser.c:5166 cp/parser.c:10440
- #, gcc-internal-format
- msgid "-fcilkplus must be enabled to use %<_Cilk_sync%>"
- msgstr ""
-@@ -33170,17 +33244,17 @@
- #. c_parser_skip_until_found stops at a closing nesting
- #. delimiter without consuming it, but here we need to consume
- #. it to proceed further.
--#: c/c-parser.c:5276 cp/parser.c:10508
-+#: c/c-parser.c:5276 cp/parser.c:10518
- #, gcc-internal-format
- msgid "expected statement"
- msgstr ""
-
--#: c/c-parser.c:5380 cp/parser.c:11918
-+#: c/c-parser.c:5380 cp/parser.c:11928
- #, gcc-internal-format
- msgid "suggest braces around empty body in an %<if%> statement"
- msgstr ""
-
--#: c/c-parser.c:5414 cp/parser.c:11921
-+#: c/c-parser.c:5414 cp/parser.c:11931
- #, gcc-internal-format
- msgid "suggest braces around empty body in an %<else%> statement"
- msgstr ""
-@@ -33190,7 +33264,7 @@
- msgid "if statement cannot contain %<Cilk_spawn%>"
- msgstr ""
-
--#: c/c-parser.c:5509 cp/parser.c:10957
-+#: c/c-parser.c:5509 cp/parser.c:10967
- #, gcc-internal-format
- msgid "suggest explicit braces to avoid ambiguous %<else%>"
- msgstr ""
-@@ -33210,7 +33284,7 @@
- msgid "invalid iterating variable in fast enumeration"
- msgstr ""
-
--#: c/c-parser.c:5852 cp/parser.c:11158
-+#: c/c-parser.c:5852 cp/parser.c:11168
- #, gcc-internal-format
- msgid "missing loop condition in loop with %<GCC ivdep%> pragma"
- msgstr ""
-@@ -33385,17 +33459,17 @@
- msgid "%<__builtin_complex%> operands of different types"
- msgstr ""
-
--#: c/c-parser.c:7986 cp/parser.c:6590
-+#: c/c-parser.c:7986 cp/parser.c:6600
- #, gcc-internal-format
- msgid "wrong number of arguments to %<__builtin_shuffle%>"
- msgstr ""
-
--#: c/c-parser.c:8067 cp/parser.c:6535
-+#: c/c-parser.c:8067 cp/parser.c:6540
- #, gcc-internal-format
- msgid "-fcilkplus must be enabled to use %<_Cilk_spawn%>"
- msgstr ""
-
--#: c/c-parser.c:8074 cp/parser.c:6541
-+#: c/c-parser.c:8074 cp/parser.c:6546
- #, gcc-internal-format
- msgid "consecutive %<_Cilk_spawn%> keywords are not permitted"
- msgstr ""
-@@ -33415,7 +33489,7 @@
- msgid "ISO C90 forbids compound literals"
- msgstr ""
-
--#: c/c-parser.c:8295 cp/parser.c:6843
-+#: c/c-parser.c:8295 cp/parser.c:6853
- #, gcc-internal-format
- msgid ""
- "%<memset%> used with constant zero length parameter; this could be due to "
-@@ -33457,32 +33531,32 @@
- msgid "no type or storage class may be specified here,"
- msgstr ""
-
--#: c/c-parser.c:9800 c/c-parser.c:9857 cp/parser.c:29566
-+#: c/c-parser.c:9800 c/c-parser.c:9857 cp/parser.c:29581
- #, gcc-internal-format
- msgid "unknown property attribute"
- msgstr ""
-
--#: c/c-parser.c:9821 cp/parser.c:29526
-+#: c/c-parser.c:9821 cp/parser.c:29541
- #, gcc-internal-format
- msgid "missing %<=%> (after %<getter%> attribute)"
- msgstr ""
-
--#: c/c-parser.c:9824 cp/parser.c:29529
-+#: c/c-parser.c:9824 cp/parser.c:29544
- #, gcc-internal-format
- msgid "missing %<=%> (after %<setter%> attribute)"
- msgstr ""
-
--#: c/c-parser.c:9838 cp/parser.c:29544
-+#: c/c-parser.c:9838 cp/parser.c:29559
- #, gcc-internal-format
- msgid "the %<setter%> attribute may only be specified once"
- msgstr ""
-
--#: c/c-parser.c:9843 cp/parser.c:29550
-+#: c/c-parser.c:9843 cp/parser.c:29565
- #, gcc-internal-format
- msgid "setter name must terminate with %<:%>"
- msgstr ""
-
--#: c/c-parser.c:9850 cp/parser.c:29558
-+#: c/c-parser.c:9850 cp/parser.c:29573
- #, gcc-internal-format
- msgid "the %<getter%> attribute may only be specified once"
- msgstr ""
-@@ -33492,38 +33566,38 @@
- msgid "%<#pragma acc update%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10063 cp/parser.c:37257
-+#: c/c-parser.c:10063 cp/parser.c:37272
- #, gcc-internal-format
- msgid "%<#pragma omp barrier%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10074 cp/parser.c:37272
-+#: c/c-parser.c:10074 cp/parser.c:37287
- #, gcc-internal-format
- msgid "%<#pragma omp flush%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10085 cp/parser.c:37288
-+#: c/c-parser.c:10085 cp/parser.c:37303
- #, gcc-internal-format
- msgid "%<#pragma omp taskwait%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10096 cp/parser.c:37304
-+#: c/c-parser.c:10096 cp/parser.c:37319
- #, gcc-internal-format
- msgid "%<#pragma omp taskyield%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10107 cp/parser.c:37320
-+#: c/c-parser.c:10107 cp/parser.c:37335
- #, gcc-internal-format
- msgid "%<#pragma omp cancel%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10118 cp/parser.c:37336
-+#: c/c-parser.c:10118 cp/parser.c:37351
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp cancellation point%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:10138 cp/parser.c:37409
-+#: c/c-parser.c:10138 cp/parser.c:37424
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
-@@ -33530,12 +33604,12 @@
- "construct"
- msgstr ""
-
--#: c/c-parser.c:10157 cp/parser.c:37428
-+#: c/c-parser.c:10157 cp/parser.c:37443
- #, gcc-internal-format
- msgid "for, while or do statement expected"
- msgstr ""
-
--#: c/c-parser.c:10169 cp/parser.c:37247
-+#: c/c-parser.c:10169 cp/parser.c:37262
- #, gcc-internal-format
- msgid "%<#pragma GCC pch_preprocess%> must be first"
- msgstr ""
-@@ -33550,12 +33624,12 @@
- msgid "%<#pragma grainsize%> must be inside a function"
- msgstr ""
-
--#: c/c-parser.c:10501 cp/parser.c:29956
-+#: c/c-parser.c:10501 cp/parser.c:29971
- #, gcc-internal-format
- msgid "too many %qs clauses"
- msgstr ""
-
--#: c/c-parser.c:10522 cp/parser.c:30485
-+#: c/c-parser.c:10522 cp/parser.c:30500
- #, gcc-internal-format
- msgid "expected integer expression before ')'"
- msgstr ""
-@@ -33570,53 +33644,53 @@
- msgid "%qD is not a variable"
- msgstr ""
-
--#: c/c-parser.c:10813 cp/semantics.c:6719
-+#: c/c-parser.c:10813 cp/semantics.c:6720
- #, gcc-internal-format
- msgid "%qD is not a pointer variable"
- msgstr ""
-
--#: c/c-parser.c:10853 cp/parser.c:30563
-+#: c/c-parser.c:10853 cp/parser.c:30578
- #, gcc-internal-format
- msgid "collapse argument needs positive constant integer expression"
- msgstr ""
-
--#: c/c-parser.c:10923 cp/parser.c:30619
-+#: c/c-parser.c:10923 cp/parser.c:30634
- #, gcc-internal-format
- msgid "expected %<none%>"
- msgstr ""
-
--#: c/c-parser.c:10925 cp/parser.c:30621
-+#: c/c-parser.c:10925 cp/parser.c:30636
- #, gcc-internal-format
- msgid "expected %<none%> or %<shared%>"
- msgstr ""
-
--#: c/c-parser.c:11025 cp/parser.c:30721
-+#: c/c-parser.c:11025 cp/parser.c:30736
- #, gcc-internal-format
- msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>"
- msgstr ""
-
--#: c/c-parser.c:11045 c/c-parser.c:15906 c/c-parser.c:15991 cp/parser.c:30739
--#: cp/parser.c:34733 cp/parser.c:34821
-+#: c/c-parser.c:11045 c/c-parser.c:15906 c/c-parser.c:15991 cp/parser.c:30754
-+#: cp/parser.c:34748 cp/parser.c:34836
- #, gcc-internal-format
- msgid "expected %<data%>"
- msgstr ""
-
--#: c/c-parser.c:11092 cp/parser.c:30792
-+#: c/c-parser.c:11092 cp/parser.c:30807
- #, gcc-internal-format
- msgid "too many %<if%> clauses with %qs modifier"
- msgstr ""
-
--#: c/c-parser.c:11099 cp/parser.c:30799
-+#: c/c-parser.c:11099 cp/parser.c:30814
- #, gcc-internal-format
- msgid "too many %<if%> clauses"
- msgstr ""
-
--#: c/c-parser.c:11101 cp/parser.c:30801
-+#: c/c-parser.c:11101 cp/parser.c:30816
- #, gcc-internal-format
- msgid "too many %<if%> clauses without modifier"
- msgstr ""
-
--#: c/c-parser.c:11107 cp/parser.c:30807
-+#: c/c-parser.c:11107 cp/parser.c:30822
- #, gcc-internal-format
- msgid ""
- "if any %<if%> clause has modifier, then all %<if%> clauses have to use "
-@@ -33646,22 +33720,22 @@
- msgid "%<num_tasks%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:11324 cp/semantics.c:6895
-+#: c/c-parser.c:11324 cp/semantics.c:6896
- #, gcc-internal-format
- msgid "%<grainsize%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:11369 cp/semantics.c:6924
-+#: c/c-parser.c:11369 cp/semantics.c:6925
- #, gcc-internal-format
- msgid "%<priority%> value must be non-negative"
- msgstr ""
-
--#: c/c-parser.c:11430 c/c-parser.c:11436 cp/parser.c:31018 cp/parser.c:31025
-+#: c/c-parser.c:11430 c/c-parser.c:11436 cp/parser.c:31033 cp/parser.c:31040
- #, gcc-internal-format
- msgid "expected %<tofrom%>"
- msgstr ""
-
--#: c/c-parser.c:11444 c/c-parser.c:11450 cp/parser.c:31034 cp/parser.c:31041
-+#: c/c-parser.c:11444 c/c-parser.c:11450 cp/parser.c:31049 cp/parser.c:31056
- #, gcc-internal-format
- msgid "expected %<scalar%>"
- msgstr ""
-@@ -33671,12 +33745,12 @@
- msgid "%<num_workers%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:11580 cp/parser.c:30347
-+#: c/c-parser.c:11580 cp/parser.c:30362
- #, gcc-internal-format
- msgid "too many %<static%> arguments"
- msgstr ""
-
--#: c/c-parser.c:11614 cp/parser.c:30380
-+#: c/c-parser.c:11614 cp/parser.c:30395
- #, gcc-internal-format
- msgid "unexpected argument"
- msgstr ""
-@@ -33686,17 +33760,17 @@
- msgid "%<%s%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:11769 cp/semantics.c:7008
-+#: c/c-parser.c:11769 cp/semantics.c:7009
- #, gcc-internal-format
- msgid "%<tile%> value must be integral"
- msgstr ""
-
--#: c/c-parser.c:11782 cp/semantics.c:7022
-+#: c/c-parser.c:11782 cp/semantics.c:7023
- #, gcc-internal-format
- msgid "%<tile%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:11848 cp/parser.c:31098
-+#: c/c-parser.c:11848 cp/parser.c:31113
- #, gcc-internal-format
- msgid "ordered argument needs positive constant integer expression"
- msgstr ""
-@@ -33708,22 +33782,22 @@
- "or %<max%>"
- msgstr ""
-
--#: c/c-parser.c:12048 cp/parser.c:31311
-+#: c/c-parser.c:12048 cp/parser.c:31326
- #, gcc-internal-format
- msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified"
- msgstr ""
-
--#: c/c-parser.c:12101 cp/parser.c:31327
-+#: c/c-parser.c:12101 cp/parser.c:31342
- #, gcc-internal-format
- msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
- msgstr ""
-
--#: c/c-parser.c:12105 cp/parser.c:31330
-+#: c/c-parser.c:12105 cp/parser.c:31345
- #, gcc-internal-format
- msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
- msgstr ""
-
--#: c/c-parser.c:12127 cp/parser.c:31350
-+#: c/c-parser.c:12127 cp/parser.c:31365
- #, gcc-internal-format
- msgid "invalid schedule kind"
- msgstr ""
-@@ -33738,12 +33812,12 @@
- msgid "%<num_teams%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:12333 cp/semantics.c:6393
-+#: c/c-parser.c:12333 cp/semantics.c:6394
- #, gcc-internal-format
- msgid "%<thread_limit%> value must be positive"
- msgstr ""
-
--#: c/c-parser.c:12375 cp/semantics.c:6503
-+#: c/c-parser.c:12375 cp/semantics.c:6504
- #, gcc-internal-format
- msgid ""
- "%<aligned%> clause alignment expression must be positive constant integer "
-@@ -33750,7 +33824,7 @@
- "expression"
- msgstr ""
-
--#: c/c-parser.c:12436 cp/parser.c:31608
-+#: c/c-parser.c:12436 cp/parser.c:31623
- #, gcc-internal-format
- msgid "using parameters for %<linear%> step is not supported yet"
- msgstr ""
-@@ -33772,17 +33846,17 @@
- "%<simdlen%> clause expression must be positive constant integer expression"
- msgstr ""
-
--#: c/c-parser.c:12684 cp/parser.c:31844 cp/parser.c:32067
-+#: c/c-parser.c:12684 cp/parser.c:31859 cp/parser.c:32082
- #, gcc-internal-format
- msgid "invalid depend kind"
- msgstr ""
-
--#: c/c-parser.c:12768 cp/parser.c:31917
-+#: c/c-parser.c:12768 cp/parser.c:31932
- #, gcc-internal-format
- msgid "invalid map kind"
- msgstr ""
-
--#: c/c-parser.c:12862 cp/parser.c:32014
-+#: c/c-parser.c:12862 cp/parser.c:32029
- #, gcc-internal-format
- msgid "invalid dist_schedule kind"
- msgstr ""
-@@ -33792,77 +33866,77 @@
- msgid "invalid proc_bind kind"
- msgstr ""
-
--#: c/c-parser.c:13144 cp/parser.c:32292
-+#: c/c-parser.c:13144 cp/parser.c:32307
- #, gcc-internal-format
- msgid "expected %<#pragma acc%> clause"
- msgstr ""
-
--#: c/c-parser.c:13155 c/c-parser.c:13438 cp/parser.c:32303 cp/parser.c:32619
-+#: c/c-parser.c:13155 c/c-parser.c:13438 cp/parser.c:32318 cp/parser.c:32634
- #, gcc-internal-format
- msgid "%qs is not valid for %qs"
- msgstr ""
-
--#: c/c-parser.c:13301 cp/parser.c:32479
-+#: c/c-parser.c:13301 cp/parser.c:32494
- #, gcc-internal-format
- msgid "%qs must be the first clause of %qs"
- msgstr ""
-
--#: c/c-parser.c:13427 cp/parser.c:32608
-+#: c/c-parser.c:13427 cp/parser.c:32623
- #, gcc-internal-format
- msgid "expected %<#pragma omp%> clause"
- msgstr ""
-
--#: c/c-parser.c:13565 cp/parser.c:35247
-+#: c/c-parser.c:13565 cp/parser.c:35262
- #, gcc-internal-format
- msgid "no valid clauses specified in %<#pragma acc declare%>"
- msgstr ""
-
--#: c/c-parser.c:13575 cp/parser.c:35257
-+#: c/c-parser.c:13575 cp/parser.c:35272
- #, gcc-internal-format
- msgid "array section in %<#pragma acc declare%>"
- msgstr ""
-
--#: c/c-parser.c:13599 cp/parser.c:35281
-+#: c/c-parser.c:13599 cp/parser.c:35296
- #, gcc-internal-format
- msgid "%qD must be a global variable in%<#pragma acc declare link%>"
- msgstr ""
-
--#: c/c-parser.c:13610 cp/parser.c:35292
-+#: c/c-parser.c:13610 cp/parser.c:35307
- #, gcc-internal-format
- msgid "invalid OpenACC clause at file scope"
- msgstr ""
-
--#: c/c-parser.c:13617 cp/parser.c:35299
-+#: c/c-parser.c:13617 cp/parser.c:35314
- #, gcc-internal-format
- msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>"
- msgstr ""
-
--#: c/c-parser.c:13625 cp/parser.c:35307
-+#: c/c-parser.c:13625 cp/parser.c:35322
- #, gcc-internal-format
- msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>"
- msgstr ""
-
--#: c/c-parser.c:13637 cp/parser.c:35319
-+#: c/c-parser.c:13637 cp/parser.c:35334
- #, gcc-internal-format
- msgid "variable %qD used more than once with %<#pragma acc declare%>"
- msgstr ""
-
--#: c/c-parser.c:13723 cp/parser.c:35402
-+#: c/c-parser.c:13723 cp/parser.c:35417
- #, gcc-internal-format
- msgid "expected %<data%> in %<#pragma acc enter data%>"
- msgstr ""
-
--#: c/c-parser.c:13732 cp/parser.c:35412
-+#: c/c-parser.c:13732 cp/parser.c:35427
- #, gcc-internal-format
- msgid "invalid pragma"
- msgstr ""
-
--#: c/c-parser.c:13749 cp/parser.c:35429
-+#: c/c-parser.c:13749 cp/parser.c:35444
- #, gcc-internal-format
- msgid "%<#pragma acc enter data%> has no data movement clause"
- msgstr ""
-
--#: c/c-parser.c:13953 cp/parser.c:36513
-+#: c/c-parser.c:13953 cp/parser.c:36528
- #, gcc-internal-format
- msgid "%<#pragma acc routine%> not at file scope"
- msgstr ""
-@@ -33882,17 +33956,17 @@
- msgid "%<#pragma acc routine%> %s"
- msgstr ""
-
--#: c/c-parser.c:14022 cp/parser.c:36726
-+#: c/c-parser.c:14022 cp/parser.c:36741
- #, gcc-internal-format
- msgid "%<#pragma acc routine%> already applied to %D"
- msgstr ""
-
--#: c/c-parser.c:14025 cp/parser.c:36733
-+#: c/c-parser.c:14025 cp/parser.c:36748
- #, gcc-internal-format
- msgid "%<#pragma acc routine%> must be applied before %s"
- msgstr ""
-
--#: c/c-parser.c:14062 cp/parser.c:35603
-+#: c/c-parser.c:14062 cp/parser.c:35618
- #, gcc-internal-format
- msgid ""
- "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or "
-@@ -33899,17 +33973,17 @@
- "%<self%> clause"
- msgstr ""
-
--#: c/c-parser.c:14470 cp/parser.c:32990 cp/parser.c:33016
-+#: c/c-parser.c:14470 cp/parser.c:33005 cp/parser.c:33031
- #, gcc-internal-format
- msgid "invalid form of %<#pragma omp atomic%>"
- msgstr ""
-
--#: c/c-parser.c:14474 cp/parser.c:33047 cp/parser.c:33063
-+#: c/c-parser.c:14474 cp/parser.c:33062 cp/parser.c:33078
- #, gcc-internal-format
- msgid "invalid operator for %<#pragma omp atomic%>"
- msgstr ""
-
--#: c/c-parser.c:14523 cp/semantics.c:8409 cp/semantics.c:8419
-+#: c/c-parser.c:14523 cp/semantics.c:8410 cp/semantics.c:8420
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp atomic capture%> uses two different expressions for memory"
-@@ -33920,12 +33994,12 @@
- msgid "expected %<(%> or end of line"
- msgstr ""
-
--#: c/c-parser.c:14648 cp/parser.c:33561
-+#: c/c-parser.c:14648 cp/parser.c:33576
- #, gcc-internal-format
- msgid "%<ordered%> clause parameter is less than %<collapse%>"
- msgstr ""
-
--#: c/c-parser.c:14659 cp/parser.c:33572
-+#: c/c-parser.c:14659 cp/parser.c:33587
- #, gcc-internal-format
- msgid ""
- "%<linear%> clause may not be specified together with %<ordered%> clause with "
-@@ -33932,17 +34006,17 @@
- "a parameter"
- msgstr ""
-
--#: c/c-parser.c:14678 cp/parser.c:33599 cp/parser.c:37795
-+#: c/c-parser.c:14678 cp/parser.c:33614 cp/parser.c:37810
- #, gcc-internal-format
- msgid "for statement expected"
- msgstr ""
-
--#: c/c-parser.c:14684 cp/parser.c:33605
-+#: c/c-parser.c:14684 cp/parser.c:33620
- #, gcc-internal-format
- msgid "_Cilk_for statement expected"
- msgstr ""
-
--#: c/c-parser.c:14753 cp/semantics.c:7959 cp/semantics.c:8046
-+#: c/c-parser.c:14753 cp/semantics.c:7960 cp/semantics.c:8047
- #, gcc-internal-format
- msgid "expected iteration declaration or initialization"
- msgstr ""
-@@ -33952,17 +34026,17 @@
- msgid "not enough perfectly nested loops"
- msgstr ""
-
--#: c/c-parser.c:14897 cp/parser.c:33832
-+#: c/c-parser.c:14897 cp/parser.c:33847
- #, gcc-internal-format
- msgid "collapsed loops not perfectly nested"
- msgstr ""
-
--#: c/c-parser.c:14944 cp/parser.c:33648 cp/parser.c:33690 cp/pt.c:15026
-+#: c/c-parser.c:14944 cp/parser.c:33663 cp/parser.c:33705 cp/pt.c:15026
- #, gcc-internal-format
- msgid "iteration variable %qD should not be firstprivate"
- msgstr ""
-
--#: c/c-parser.c:15035 cp/parser.c:33899
-+#: c/c-parser.c:15035 cp/parser.c:33914
- #, gcc-internal-format
- msgid "%<ordered%> clause with parameter may not be specified on %qs construct"
- msgstr ""
-@@ -33974,17 +34048,17 @@
- "statements"
- msgstr ""
-
--#: c/c-parser.c:15399 cp/parser.c:34257
-+#: c/c-parser.c:15399 cp/parser.c:34272
- #, gcc-internal-format
- msgid "expected %<for%> after %qs"
- msgstr ""
-
--#: c/c-parser.c:15598 cp/parser.c:34452
-+#: c/c-parser.c:15598 cp/parser.c:34467
- #, gcc-internal-format
- msgid "expected %<point%>"
- msgstr ""
-
--#: c/c-parser.c:15806 cp/parser.c:34675
-+#: c/c-parser.c:15806 cp/parser.c:34690
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, "
-@@ -33991,17 +34065,17 @@
- "%<tofrom%> or %<alloc%> on %<map%> clause"
- msgstr ""
-
--#: c/c-parser.c:15819 cp/parser.c:34688
-+#: c/c-parser.c:15819 cp/parser.c:34703
- #, gcc-internal-format
- msgid "%<#pragma omp target data%> must contain at least one %<map%> clause"
- msgstr ""
-
--#: c/c-parser.c:15854 cp/parser.c:34900
-+#: c/c-parser.c:15854 cp/parser.c:34915
- #, gcc-internal-format
- msgid "%<#pragma omp target update%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:15867 cp/parser.c:34913
-+#: c/c-parser.c:15867 cp/parser.c:34928
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> "
-@@ -34008,13 +34082,13 @@
- "clauses"
- msgstr ""
-
--#: c/c-parser.c:15914 cp/parser.c:34741
-+#: c/c-parser.c:15914 cp/parser.c:34756
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target enter data%> may only be used in compound statements"
- msgstr ""
-
--#: c/c-parser.c:15940 cp/parser.c:34768
-+#: c/c-parser.c:15940 cp/parser.c:34783
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target enter data%> with map-type other than %<to%> or %<alloc"
-@@ -34021,13 +34095,13 @@
- "%> on %<map%> clause"
- msgstr ""
-
--#: c/c-parser.c:15952 cp/parser.c:34780
-+#: c/c-parser.c:15952 cp/parser.c:34795
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target enter data%> must contain at least one %<map%> clause"
- msgstr ""
-
--#: c/c-parser.c:15999 cp/parser.c:34829
-+#: c/c-parser.c:15999 cp/parser.c:34844
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target exit data%> may only be used in compound statements"
-@@ -34040,13 +34114,13 @@
- "%<release> or %<delete%> on %<map%> clause"
- msgstr ""
-
--#: c/c-parser.c:16040 cp/parser.c:34870
-+#: c/c-parser.c:16040 cp/parser.c:34885
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target exit data%> must contain at least one %<map%> clause"
- msgstr ""
-
--#: c/c-parser.c:16249 cp/parser.c:35124
-+#: c/c-parser.c:16249 cp/parser.c:35139
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> "
-@@ -34081,7 +34155,7 @@
- "declaration or definition"
- msgstr ""
-
--#: c/c-parser.c:16422 cp/parser.c:35779
-+#: c/c-parser.c:16422 cp/parser.c:35794
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp declare simd%> not immediately followed by a single function "
-@@ -34088,7 +34162,7 @@
- "declaration or definition"
- msgstr ""
-
--#: c/c-parser.c:16538 cp/parser.c:35850
-+#: c/c-parser.c:16538 cp/parser.c:35865
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp declare target%> with clauses in between %<#pragma omp declare "
-@@ -34095,22 +34169,22 @@
- "target%> without clauses and %<#pragma omp end declare target%>"
- msgstr ""
-
--#: c/c-parser.c:16557 cp/parser.c:35869
-+#: c/c-parser.c:16557 cp/parser.c:35884
- #, gcc-internal-format
- msgid "%qD specified both in declare target %<link%> and %<to%> clauses"
- msgstr ""
-
--#: c/c-parser.c:16595 cp/parser.c:35913
-+#: c/c-parser.c:16595 cp/parser.c:35928
- #, gcc-internal-format
- msgid "expected %<target%>"
- msgstr ""
-
--#: c/c-parser.c:16602 cp/parser.c:35920
-+#: c/c-parser.c:16602 cp/parser.c:35935
- #, gcc-internal-format
- msgid "expected %<declare%>"
- msgstr ""
-
--#: c/c-parser.c:16608 cp/parser.c:35927
-+#: c/c-parser.c:16608 cp/parser.c:35942
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp end declare target%> without corresponding %<#pragma omp "
-@@ -34171,22 +34245,22 @@
- msgid "one of the initializer call arguments should be %<&omp_priv%>"
- msgstr ""
-
--#: c/c-parser.c:17004 cp/parser.c:36372
-+#: c/c-parser.c:17004 cp/parser.c:36387
- #, gcc-internal-format
- msgid "expected %<simd%> or %<reduction%> or %<target%>"
- msgstr ""
-
--#: c/c-parser.c:17219 cp/semantics.c:7432
-+#: c/c-parser.c:17219 cp/semantics.c:7433
- #, gcc-internal-format
- msgid "%qE declared %<threadprivate%> after first use"
- msgstr ""
-
--#: c/c-parser.c:17221 cp/semantics.c:7434
-+#: c/c-parser.c:17221 cp/semantics.c:7435
- #, gcc-internal-format
- msgid "automatic variable %qE cannot be %<threadprivate%>"
- msgstr ""
-
--#: c/c-parser.c:17225 cp/semantics.c:7436
-+#: c/c-parser.c:17225 cp/semantics.c:7437
- #, gcc-internal-format
- msgid "%<threadprivate%> %qE has incomplete type"
- msgstr ""
-@@ -34201,53 +34275,53 @@
- msgid "pragma simd must be inside a function"
- msgstr ""
-
--#: c/c-parser.c:17306 cp/parser.c:37566
-+#: c/c-parser.c:17306 cp/parser.c:37581
- #, gcc-internal-format
- msgid "vectorlength must be an integer constant"
- msgstr ""
-
--#: c/c-parser.c:17308 cp/parser.c:37569
-+#: c/c-parser.c:17308 cp/parser.c:37584
- #, gcc-internal-format
- msgid "vectorlength must be a power of 2"
- msgstr ""
-
--#: c/c-parser.c:17391 cp/parser.c:37676
-+#: c/c-parser.c:17391 cp/parser.c:37691
- #, gcc-internal-format
- msgid "step size must be an integer constant expression or an integer variable"
- msgstr ""
-
--#: c/c-parser.c:17490 cp/parser.c:37769
-+#: c/c-parser.c:17490 cp/parser.c:37784
- #, gcc-internal-format
- msgid "expected %<#pragma simd%> clause"
- msgstr ""
-
--#: c/c-parser.c:17534 cp/parser.c:37218
-+#: c/c-parser.c:17534 cp/parser.c:37233
- #, gcc-internal-format
- msgid "%<#pragma cilk grainsize%> is not followed by %<_Cilk_for%>"
- msgstr ""
-
--#: c/c-parser.c:17834 cp/parser.c:37110
-+#: c/c-parser.c:17834 cp/parser.c:37125
- #, gcc-internal-format
- msgid "%<__transaction_cancel%> without transactional memory support enabled"
- msgstr ""
-
--#: c/c-parser.c:17840 cp/parser.c:37116
-+#: c/c-parser.c:17840 cp/parser.c:37131
- #, gcc-internal-format
- msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>"
- msgstr ""
-
--#: c/c-parser.c:17849 cp/parser.c:37125
-+#: c/c-parser.c:17849 cp/parser.c:37140
- #, gcc-internal-format
- msgid ""
- "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>"
- msgstr ""
-
--#: c/c-parser.c:17851 cp/parser.c:37128
-+#: c/c-parser.c:17851 cp/parser.c:37143
- #, gcc-internal-format
- msgid " or a %<transaction_may_cancel_outer%> function"
- msgstr ""
-
--#: c/c-parser.c:17857 cp/parser.c:37134
-+#: c/c-parser.c:17857 cp/parser.c:37149
- #, gcc-internal-format
- msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>"
- msgstr ""
-@@ -34257,7 +34331,7 @@
- msgid "base of array section must be pointer or array type"
- msgstr ""
-
--#: c/c-parser.c:17934 cp/parser.c:7013
-+#: c/c-parser.c:17934 cp/parser.c:7023
- #, gcc-internal-format
- msgid "expected %<:%> or numeral"
- msgstr ""
-@@ -34297,7 +34371,7 @@
- msgid "%qD has an incomplete type %qT"
- msgstr ""
-
--#: c/c-typeck.c:231 c/c-typeck.c:9508 c/c-typeck.c:9550 cp/call.c:3976
-+#: c/c-typeck.c:231 c/c-typeck.c:9518 c/c-typeck.c:9560 cp/call.c:3976
- #, gcc-internal-format
- msgid "invalid use of void expression"
- msgstr ""
-@@ -34725,7 +34799,7 @@
- msgid "left-hand operand of comma expression has no effect"
- msgstr ""
-
--#: c/c-typeck.c:5116 c/c-typeck.c:10199
-+#: c/c-typeck.c:5116 c/c-typeck.c:10209
- #, gcc-internal-format
- msgid "right-hand operand of comma expression has no effect"
- msgstr ""
-@@ -34827,17 +34901,17 @@
- msgid "assignment to expression with array type"
- msgstr ""
-
--#: c/c-typeck.c:5678 c/c-typeck.c:6118
-+#: c/c-typeck.c:5678 c/c-typeck.c:6128
- #, gcc-internal-format
- msgid "enum conversion in assignment is invalid in C++"
- msgstr ""
-
--#: c/c-typeck.c:5870 c/c-typeck.c:5888 c/c-typeck.c:5907
-+#: c/c-typeck.c:5870 c/c-typeck.c:5893 c/c-typeck.c:5917
- #, gcc-internal-format
- msgid "(near initialization for %qs)"
- msgstr ""
-
--#: c/c-typeck.c:5922
-+#: c/c-typeck.c:5932
- #, gcc-internal-format
- msgid "array initialized from parenthesized string constant"
- msgstr ""
-@@ -34853,118 +34927,118 @@
- #. strings are complete sentences, visible to gettext and checked at
- #. compile time. It is the same as PEDWARN_FOR_QUALIFIERS but uses
- #. warning_at instead of pedwarn.
--#: c/c-typeck.c:5998 c/c-typeck.c:6027 c/c-typeck.c:6056 c/c-typeck.c:6634
-+#: c/c-typeck.c:6008 c/c-typeck.c:6037 c/c-typeck.c:6066 c/c-typeck.c:6644
- #, gcc-internal-format
- msgid "expected %qT but argument is of type %qT"
- msgstr ""
-
--#: c/c-typeck.c:6116
-+#: c/c-typeck.c:6126
- #, gcc-internal-format
- msgid "enum conversion when passing argument %d of %qE is invalid in C++"
- msgstr ""
-
--#: c/c-typeck.c:6120 c/c-typeck.c:8718
-+#: c/c-typeck.c:6130 c/c-typeck.c:8728
- #, gcc-internal-format
- msgid "enum conversion in initialization is invalid in C++"
- msgstr ""
-
--#: c/c-typeck.c:6122
-+#: c/c-typeck.c:6132
- #, gcc-internal-format
- msgid "enum conversion in return is invalid in C++"
- msgstr ""
-
--#: c/c-typeck.c:6153
-+#: c/c-typeck.c:6163
- #, gcc-internal-format
- msgid "cannot pass rvalue to reference parameter"
- msgstr ""
-
--#: c/c-typeck.c:6286 c/c-typeck.c:6551
-+#: c/c-typeck.c:6296 c/c-typeck.c:6561
- msgid ""
- "passing argument %d of %qE makes %q#v qualified function pointer from "
- "unqualified"
- msgstr ""
-
--#: c/c-typeck.c:6289 c/c-typeck.c:6554
-+#: c/c-typeck.c:6299 c/c-typeck.c:6564
- msgid "assignment makes %q#v qualified function pointer from unqualified"
- msgstr ""
-
--#: c/c-typeck.c:6292 c/c-typeck.c:6556
-+#: c/c-typeck.c:6302 c/c-typeck.c:6566
- msgid "initialization makes %q#v qualified function pointer from unqualified"
- msgstr ""
-
--#: c/c-typeck.c:6295 c/c-typeck.c:6558
-+#: c/c-typeck.c:6305 c/c-typeck.c:6568
- msgid "return makes %q#v qualified function pointer from unqualified"
- msgstr ""
-
--#: c/c-typeck.c:6303 c/c-typeck.c:6470 c/c-typeck.c:6513
-+#: c/c-typeck.c:6313 c/c-typeck.c:6480 c/c-typeck.c:6523
- msgid ""
- "passing argument %d of %qE discards %qv qualifier from pointer target type"
- msgstr ""
-
--#: c/c-typeck.c:6305 c/c-typeck.c:6472 c/c-typeck.c:6515
-+#: c/c-typeck.c:6315 c/c-typeck.c:6482 c/c-typeck.c:6525
- msgid "assignment discards %qv qualifier from pointer target type"
- msgstr ""
-
--#: c/c-typeck.c:6307 c/c-typeck.c:6474 c/c-typeck.c:6517
-+#: c/c-typeck.c:6317 c/c-typeck.c:6484 c/c-typeck.c:6527
- msgid "initialization discards %qv qualifier from pointer target type"
- msgstr ""
-
--#: c/c-typeck.c:6309 c/c-typeck.c:6476 c/c-typeck.c:6519
-+#: c/c-typeck.c:6319 c/c-typeck.c:6486 c/c-typeck.c:6529
- msgid "return discards %qv qualifier from pointer target type"
- msgstr ""
-
--#: c/c-typeck.c:6318
-+#: c/c-typeck.c:6328
- #, gcc-internal-format
- msgid "ISO C prohibits argument conversion to union type"
- msgstr ""
-
--#: c/c-typeck.c:6380
-+#: c/c-typeck.c:6390
- #, gcc-internal-format
- msgid "request for implicit conversion from %qT to %qT not permitted in C++"
- msgstr ""
-
--#: c/c-typeck.c:6392
-+#: c/c-typeck.c:6402
- #, gcc-internal-format
- msgid "passing argument %d of %qE from pointer to non-enclosed address space"
- msgstr ""
-
--#: c/c-typeck.c:6396
-+#: c/c-typeck.c:6406
- #, gcc-internal-format
- msgid "assignment from pointer to non-enclosed address space"
- msgstr ""
-
--#: c/c-typeck.c:6400
-+#: c/c-typeck.c:6410
- #, gcc-internal-format
- msgid "initialization from pointer to non-enclosed address space"
- msgstr ""
-
--#: c/c-typeck.c:6404
-+#: c/c-typeck.c:6414
- #, gcc-internal-format
- msgid "return from pointer to non-enclosed address space"
- msgstr ""
-
--#: c/c-typeck.c:6422
-+#: c/c-typeck.c:6432
- #, gcc-internal-format
- msgid "argument %d of %qE might be a candidate for a format attribute"
- msgstr ""
-
--#: c/c-typeck.c:6428
-+#: c/c-typeck.c:6438
- #, gcc-internal-format
- msgid "assignment left-hand side might be a candidate for a format attribute"
- msgstr ""
-
--#: c/c-typeck.c:6433
-+#: c/c-typeck.c:6443
- #, gcc-internal-format
- msgid ""
- "initialization left-hand side might be a candidate for a format attribute"
- msgstr ""
-
--#: c/c-typeck.c:6438 cp/typeck.c:8422
-+#: c/c-typeck.c:6448 cp/typeck.c:8422
- #, gcc-internal-format
- msgid "return type might be a candidate for a format attribute"
- msgstr ""
-
--#: c/c-typeck.c:6487
-+#: c/c-typeck.c:6497
- #, gcc-internal-format
- msgid ""
- "ISO C forbids passing argument %d of %qE between function pointer and %<void "
-@@ -34971,57 +35045,57 @@
- "*%>"
- msgstr ""
-
--#: c/c-typeck.c:6490
-+#: c/c-typeck.c:6500
- #, gcc-internal-format
- msgid "ISO C forbids assignment between function pointer and %<void *%>"
- msgstr ""
-
--#: c/c-typeck.c:6492
-+#: c/c-typeck.c:6502
- #, gcc-internal-format
- msgid "ISO C forbids initialization between function pointer and %<void *%>"
- msgstr ""
-
--#: c/c-typeck.c:6494
-+#: c/c-typeck.c:6504
- #, gcc-internal-format
- msgid "ISO C forbids return between function pointer and %<void *%>"
- msgstr ""
-
--#: c/c-typeck.c:6531
-+#: c/c-typeck.c:6541
- #, gcc-internal-format
- msgid "pointer targets in passing argument %d of %qE differ in signedness"
- msgstr ""
-
--#: c/c-typeck.c:6533
-+#: c/c-typeck.c:6543
- #, gcc-internal-format
- msgid "pointer targets in assignment differ in signedness"
- msgstr ""
-
--#: c/c-typeck.c:6535
-+#: c/c-typeck.c:6545
- #, gcc-internal-format
- msgid "pointer targets in initialization differ in signedness"
- msgstr ""
-
--#: c/c-typeck.c:6537
-+#: c/c-typeck.c:6547
- #, gcc-internal-format
- msgid "pointer targets in return differ in signedness"
- msgstr ""
-
--#: c/c-typeck.c:6568
-+#: c/c-typeck.c:6578
- #, gcc-internal-format
- msgid "passing argument %d of %qE from incompatible pointer type"
- msgstr ""
-
--#: c/c-typeck.c:6570
-+#: c/c-typeck.c:6580
- #, gcc-internal-format
- msgid "assignment from incompatible pointer type"
- msgstr ""
-
--#: c/c-typeck.c:6571
-+#: c/c-typeck.c:6581
- #, gcc-internal-format
- msgid "initialization from incompatible pointer type"
- msgstr ""
-
--#: c/c-typeck.c:6573
-+#: c/c-typeck.c:6583
- #, gcc-internal-format
- msgid "return from incompatible pointer type"
- msgstr ""
-@@ -35028,228 +35102,228 @@
-
- #. ??? This should not be an error when inlining calls to
- #. unprototyped functions.
--#: c/c-typeck.c:6581 c/c-typeck.c:7075 cp/typeck.c:1992
-+#: c/c-typeck.c:6591 c/c-typeck.c:7085 cp/typeck.c:1992
- #, gcc-internal-format
- msgid "invalid use of non-lvalue array"
- msgstr ""
-
--#: c/c-typeck.c:6592
-+#: c/c-typeck.c:6602
- #, gcc-internal-format
- msgid "passing argument %d of %qE makes pointer from integer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6594
-+#: c/c-typeck.c:6604
- #, gcc-internal-format
- msgid "assignment makes pointer from integer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6596
-+#: c/c-typeck.c:6606
- #, gcc-internal-format
- msgid "initialization makes pointer from integer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6598
-+#: c/c-typeck.c:6608
- #, gcc-internal-format
- msgid "return makes pointer from integer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6607
-+#: c/c-typeck.c:6617
- #, gcc-internal-format
- msgid "passing argument %d of %qE makes integer from pointer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6609
-+#: c/c-typeck.c:6619
- #, gcc-internal-format
- msgid "assignment makes integer from pointer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6611
-+#: c/c-typeck.c:6621
- #, gcc-internal-format
- msgid "initialization makes integer from pointer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6613
-+#: c/c-typeck.c:6623
- #, gcc-internal-format
- msgid "return makes integer from pointer without a cast"
- msgstr ""
-
--#: c/c-typeck.c:6637
-+#: c/c-typeck.c:6647
- #, gcc-internal-format
- msgid "incompatible types when assigning to type %qT from type %qT"
- msgstr ""
-
--#: c/c-typeck.c:6642
-+#: c/c-typeck.c:6652
- #, gcc-internal-format
- msgid "incompatible types when initializing type %qT using type %qT"
- msgstr ""
-
--#: c/c-typeck.c:6647
-+#: c/c-typeck.c:6657
- #, gcc-internal-format
- msgid "incompatible types when returning type %qT but %qT was expected"
- msgstr ""
-
--#: c/c-typeck.c:6711
-+#: c/c-typeck.c:6721
- #, gcc-internal-format
- msgid "traditional C rejects automatic aggregate initialization"
- msgstr ""
-
--#: c/c-typeck.c:6948 c/c-typeck.c:7827 cp/typeck2.c:1023
-+#: c/c-typeck.c:6958 c/c-typeck.c:7837 cp/typeck2.c:1023
- #, gcc-internal-format
- msgid "initialization of a flexible array member"
- msgstr ""
-
--#: c/c-typeck.c:6958 cp/typeck2.c:1038
-+#: c/c-typeck.c:6968 cp/typeck2.c:1038
- #, gcc-internal-format
- msgid "char-array initialized from wide string"
- msgstr ""
-
--#: c/c-typeck.c:6967
-+#: c/c-typeck.c:6977
- #, gcc-internal-format
- msgid "wide character array initialized from non-wide string"
- msgstr ""
-
--#: c/c-typeck.c:6973
-+#: c/c-typeck.c:6983
- #, gcc-internal-format
- msgid "wide character array initialized from incompatible wide string"
- msgstr ""
-
--#: c/c-typeck.c:7007
-+#: c/c-typeck.c:7017
- #, gcc-internal-format
- msgid "array of inappropriate type initialized from string constant"
- msgstr ""
-
--#: c/c-typeck.c:7094 c/c-typeck.c:7118 c/c-typeck.c:7121 c/c-typeck.c:7129
--#: c/c-typeck.c:7169 c/c-typeck.c:8657 c/c-typeck.c:8691
-+#: c/c-typeck.c:7104 c/c-typeck.c:7128 c/c-typeck.c:7131 c/c-typeck.c:7139
-+#: c/c-typeck.c:7179 c/c-typeck.c:8667 c/c-typeck.c:8701
- #, gcc-internal-format
- msgid "initializer element is not constant"
- msgstr ""
-
--#: c/c-typeck.c:7103
-+#: c/c-typeck.c:7113
- #, gcc-internal-format
- msgid "array initialized from non-constant array expression"
- msgstr ""
-
--#: c/c-typeck.c:7134 c/c-typeck.c:7182 c/c-typeck.c:8701
-+#: c/c-typeck.c:7144 c/c-typeck.c:7192 c/c-typeck.c:8711
- #, gcc-internal-format
- msgid "initializer element is not a constant expression"
- msgstr ""
-
--#: c/c-typeck.c:7176 c/c-typeck.c:8696
-+#: c/c-typeck.c:7186 c/c-typeck.c:8706
- #, gcc-internal-format
- msgid "initializer element is not computable at load time"
- msgstr ""
-
--#: c/c-typeck.c:7195
-+#: c/c-typeck.c:7205
- #, gcc-internal-format
- msgid "invalid initializer"
- msgstr ""
-
--#: c/c-typeck.c:7470 cp/decl.c:6115
-+#: c/c-typeck.c:7480 cp/decl.c:6115
- #, gcc-internal-format
- msgid "opaque vector types cannot be initialized"
- msgstr ""
-
--#: c/c-typeck.c:7686
-+#: c/c-typeck.c:7696
- #, gcc-internal-format
- msgid "extra brace group at end of initializer"
- msgstr ""
-
--#: c/c-typeck.c:7764
-+#: c/c-typeck.c:7774
- #, gcc-internal-format
- msgid "braces around scalar initializer"
- msgstr ""
-
--#: c/c-typeck.c:7824 c/c-typeck.c:9130
-+#: c/c-typeck.c:7834 c/c-typeck.c:9140
- #, gcc-internal-format
- msgid "initialization of flexible array member in a nested context"
- msgstr ""
-
--#: c/c-typeck.c:7858
-+#: c/c-typeck.c:7868
- #, gcc-internal-format
- msgid "missing braces around initializer"
- msgstr ""
-
--#: c/c-typeck.c:7880
-+#: c/c-typeck.c:7890
- #, gcc-internal-format
- msgid "missing initializer for field %qD of %qT"
- msgstr ""
-
--#: c/c-typeck.c:7904
-+#: c/c-typeck.c:7914
- #, gcc-internal-format
- msgid "empty scalar initializer"
- msgstr ""
-
--#: c/c-typeck.c:7909
-+#: c/c-typeck.c:7919
- #, gcc-internal-format
- msgid "extra elements in scalar initializer"
- msgstr ""
-
--#: c/c-typeck.c:8021 c/c-typeck.c:8103
-+#: c/c-typeck.c:8031 c/c-typeck.c:8113
- #, gcc-internal-format
- msgid "array index in non-array initializer"
- msgstr ""
-
--#: c/c-typeck.c:8026 c/c-typeck.c:8165
-+#: c/c-typeck.c:8036 c/c-typeck.c:8175
- #, gcc-internal-format
- msgid "field name not in record or union initializer"
- msgstr ""
-
--#: c/c-typeck.c:8076
-+#: c/c-typeck.c:8086
- #, gcc-internal-format
- msgid "array index in initializer not of integer type"
- msgstr ""
-
--#: c/c-typeck.c:8085 c/c-typeck.c:8094
-+#: c/c-typeck.c:8095 c/c-typeck.c:8104
- #, gcc-internal-format
- msgid "array index in initializer is not an integer constant expression"
- msgstr ""
-
--#: c/c-typeck.c:8099 c/c-typeck.c:8101
-+#: c/c-typeck.c:8109 c/c-typeck.c:8111
- #, gcc-internal-format
- msgid "nonconstant array index in initializer"
- msgstr ""
-
--#: c/c-typeck.c:8105 c/c-typeck.c:8108
-+#: c/c-typeck.c:8115 c/c-typeck.c:8118
- #, gcc-internal-format
- msgid "array index in initializer exceeds array bounds"
- msgstr ""
-
--#: c/c-typeck.c:8127
-+#: c/c-typeck.c:8137
- #, gcc-internal-format
- msgid "empty index range in initializer"
- msgstr ""
-
--#: c/c-typeck.c:8136
-+#: c/c-typeck.c:8146
- #, gcc-internal-format
- msgid "array index range in initializer exceeds array bounds"
- msgstr ""
-
--#: c/c-typeck.c:8172
-+#: c/c-typeck.c:8182
- #, gcc-internal-format
- msgid "unknown field %qE specified in initializer"
- msgstr ""
-
--#: c/c-typeck.c:8225 c/c-typeck.c:8255 c/c-typeck.c:8791
-+#: c/c-typeck.c:8235 c/c-typeck.c:8265 c/c-typeck.c:8801
- #, gcc-internal-format
- msgid "initialized field with side-effects overwritten"
- msgstr ""
-
--#: c/c-typeck.c:8229 c/c-typeck.c:8259 c/c-typeck.c:8794
-+#: c/c-typeck.c:8239 c/c-typeck.c:8269 c/c-typeck.c:8804
- #, gcc-internal-format
- msgid "initialized field overwritten"
- msgstr ""
-
--#: c/c-typeck.c:9013
-+#: c/c-typeck.c:9023
- #, gcc-internal-format
- msgid "excess elements in char array initializer"
- msgstr ""
-
--#: c/c-typeck.c:9020 c/c-typeck.c:9089
-+#: c/c-typeck.c:9030 c/c-typeck.c:9099
- #, gcc-internal-format
- msgid "excess elements in struct initializer"
- msgstr ""
-
--#: c/c-typeck.c:9035
-+#: c/c-typeck.c:9045
- #, gcc-internal-format
- msgid ""
- "positional initialization of field in %<struct%> declared with "
-@@ -35256,162 +35330,162 @@
- "%<designated_init%> attribute"
- msgstr ""
-
--#: c/c-typeck.c:9104
-+#: c/c-typeck.c:9114
- #, gcc-internal-format
- msgid "non-static initialization of a flexible array member"
- msgstr ""
-
--#: c/c-typeck.c:9203
-+#: c/c-typeck.c:9213
- #, gcc-internal-format
- msgid "excess elements in union initializer"
- msgstr ""
-
--#: c/c-typeck.c:9225
-+#: c/c-typeck.c:9235
- #, gcc-internal-format
- msgid "traditional C rejects initialization of unions"
- msgstr ""
-
--#: c/c-typeck.c:9293
-+#: c/c-typeck.c:9303
- #, gcc-internal-format
- msgid "excess elements in array initializer"
- msgstr ""
-
--#: c/c-typeck.c:9327
-+#: c/c-typeck.c:9337
- #, gcc-internal-format
- msgid "excess elements in vector initializer"
- msgstr ""
-
--#: c/c-typeck.c:9359
-+#: c/c-typeck.c:9369
- #, gcc-internal-format
- msgid "excess elements in scalar initializer"
- msgstr ""
-
--#: c/c-typeck.c:9599
-+#: c/c-typeck.c:9609
- #, gcc-internal-format
- msgid "ISO C forbids %<goto *expr;%>"
- msgstr ""
-
--#: c/c-typeck.c:9627 cp/typeck.c:8651
-+#: c/c-typeck.c:9637 cp/typeck.c:8652
- #, gcc-internal-format
- msgid "function declared %<noreturn%> has a %<return%> statement"
- msgstr ""
-
--#: c/c-typeck.c:9637 cp/cp-array-notation.c:1087
-+#: c/c-typeck.c:9647 cp/cp-array-notation.c:1087
- #, gcc-internal-format
- msgid "array notation expression cannot be used as a return value"
- msgstr ""
-
--#: c/c-typeck.c:9644 cp/typeck.c:8642
-+#: c/c-typeck.c:9654 cp/typeck.c:8643
- #, gcc-internal-format
- msgid "use of %<_Cilk_spawn%> in a return statement is not allowed"
- msgstr ""
-
--#: c/c-typeck.c:9672 c/c-typeck.c:9676
-+#: c/c-typeck.c:9682 c/c-typeck.c:9686
- #, gcc-internal-format
- msgid "%<return%> with no value, in function returning non-void"
- msgstr ""
-
--#: c/c-typeck.c:9690
-+#: c/c-typeck.c:9700
- #, gcc-internal-format
- msgid "%<return%> with a value, in function returning void"
- msgstr ""
-
--#: c/c-typeck.c:9693
-+#: c/c-typeck.c:9703
- #, gcc-internal-format
- msgid "ISO C forbids %<return%> with expression, in function returning void"
- msgstr ""
-
--#: c/c-typeck.c:9769
-+#: c/c-typeck.c:9779
- #, gcc-internal-format
- msgid "function returns address of label"
- msgstr ""
-
--#: c/c-typeck.c:9860 cp/semantics.c:1146
-+#: c/c-typeck.c:9870 cp/semantics.c:1146
- #, gcc-internal-format
- msgid "switch quantity not an integer"
- msgstr ""
-
--#: c/c-typeck.c:9885
-+#: c/c-typeck.c:9895
- #, gcc-internal-format
- msgid "%<long%> switch expression not converted to %<int%> in ISO C"
- msgstr ""
-
--#: c/c-typeck.c:9923 c/c-typeck.c:9931
-+#: c/c-typeck.c:9933 c/c-typeck.c:9941
- #, gcc-internal-format
- msgid "case label is not an integer constant expression"
- msgstr ""
-
--#: c/c-typeck.c:9937 cp/parser.c:10626
-+#: c/c-typeck.c:9947 cp/parser.c:10636
- #, gcc-internal-format
- msgid "case label not within a switch statement"
- msgstr ""
-
--#: c/c-typeck.c:9939
-+#: c/c-typeck.c:9949
- #, gcc-internal-format
- msgid "%<default%> label not within a switch statement"
- msgstr ""
-
--#: c/c-typeck.c:10010
-+#: c/c-typeck.c:10020
- #, gcc-internal-format
- msgid "rank-mismatch between if-statement%'s condition and the then-block"
- msgstr ""
-
--#: c/c-typeck.c:10016
-+#: c/c-typeck.c:10026
- #, gcc-internal-format
- msgid "rank-mismatch between if-statement%'s condition and the else-block"
- msgstr ""
-
--#: c/c-typeck.c:10141 cp/parser.c:11756
-+#: c/c-typeck.c:10151 cp/parser.c:11766
- #, gcc-internal-format
- msgid "break statement not within loop or switch"
- msgstr ""
-
--#: c/c-typeck.c:10143 cp/parser.c:11782
-+#: c/c-typeck.c:10153 cp/parser.c:11792
- #, gcc-internal-format
- msgid "continue statement not within a loop"
- msgstr ""
-
--#: c/c-typeck.c:10148 cp/parser.c:11769
-+#: c/c-typeck.c:10158 cp/parser.c:11779
- #, gcc-internal-format
- msgid "break statement used with OpenMP for loop"
- msgstr ""
-
--#: c/c-typeck.c:10153
-+#: c/c-typeck.c:10163
- #, gcc-internal-format
- msgid "break statement within %<#pragma simd%> loop body"
- msgstr ""
-
--#: c/c-typeck.c:10155 cp/parser.c:11786
-+#: c/c-typeck.c:10165 cp/parser.c:11796
- #, gcc-internal-format
- msgid "continue statement within %<#pragma simd%> loop body"
- msgstr ""
-
--#: c/c-typeck.c:10181 cp/cp-gimplify.c:444
-+#: c/c-typeck.c:10191 cp/cp-gimplify.c:444
- #, gcc-internal-format
- msgid "statement with no effect"
- msgstr ""
-
--#: c/c-typeck.c:10225
-+#: c/c-typeck.c:10235
- #, gcc-internal-format
- msgid "expression statement has incomplete type"
- msgstr ""
-
--#: c/c-typeck.c:11026 c/c-typeck.c:11183 cp/typeck.c:4790
-+#: c/c-typeck.c:11036 c/c-typeck.c:11193 cp/typeck.c:4790
- #, gcc-internal-format
- msgid "comparing vectors with different element types"
- msgstr ""
-
--#: c/c-typeck.c:11033 c/c-typeck.c:11190 cp/typeck.c:4802
-+#: c/c-typeck.c:11043 c/c-typeck.c:11200 cp/typeck.c:4802
- #, gcc-internal-format
- msgid "comparing vectors with different number of elements"
- msgstr ""
-
--#: c/c-typeck.c:11064 cp/typeck.c:4528
-+#: c/c-typeck.c:11074 cp/typeck.c:4528
- #, gcc-internal-format
- msgid "comparing floating point with == or != is unsafe"
- msgstr ""
-
--#: c/c-typeck.c:11081 c/c-typeck.c:11101
-+#: c/c-typeck.c:11091 c/c-typeck.c:11111
- #, gcc-internal-format
- msgid ""
- "the comparison will always evaluate as %<false%> for the address of %qD will "
-@@ -35418,7 +35492,7 @@
- "never be NULL"
- msgstr ""
-
--#: c/c-typeck.c:11087 c/c-typeck.c:11107
-+#: c/c-typeck.c:11097 c/c-typeck.c:11117
- #, gcc-internal-format
- msgid ""
- "the comparison will always evaluate as %<true%> for the address of %qD will "
-@@ -35425,48 +35499,48 @@
- "never be NULL"
- msgstr ""
-
--#: c/c-typeck.c:11128 c/c-typeck.c:11248
-+#: c/c-typeck.c:11138 c/c-typeck.c:11258
- #, gcc-internal-format
- msgid "comparison of pointers to disjoint address spaces"
- msgstr ""
-
--#: c/c-typeck.c:11135 c/c-typeck.c:11141
-+#: c/c-typeck.c:11145 c/c-typeck.c:11151
- #, gcc-internal-format
- msgid "ISO C forbids comparison of %<void *%> with function pointer"
- msgstr ""
-
--#: c/c-typeck.c:11148 c/c-typeck.c:11258
-+#: c/c-typeck.c:11158 c/c-typeck.c:11268
- #, gcc-internal-format
- msgid "comparison of distinct pointer types lacks a cast"
- msgstr ""
-
--#: c/c-typeck.c:11160 c/c-typeck.c:11165 c/c-typeck.c:11284 c/c-typeck.c:11289
-+#: c/c-typeck.c:11170 c/c-typeck.c:11175 c/c-typeck.c:11294 c/c-typeck.c:11299
- #, gcc-internal-format
- msgid "comparison between pointer and integer"
- msgstr ""
-
--#: c/c-typeck.c:11236
-+#: c/c-typeck.c:11246
- #, gcc-internal-format
- msgid "comparison of complete and incomplete pointers"
- msgstr ""
-
--#: c/c-typeck.c:11238
-+#: c/c-typeck.c:11248
- #, gcc-internal-format
- msgid "ISO C forbids ordered comparisons of pointers to functions"
- msgstr ""
-
--#: c/c-typeck.c:11243
-+#: c/c-typeck.c:11253
- #, gcc-internal-format
- msgid "ordered comparison of pointer with null pointer"
- msgstr ""
-
--#: c/c-typeck.c:11266 c/c-typeck.c:11269 c/c-typeck.c:11276 c/c-typeck.c:11279
-+#: c/c-typeck.c:11276 c/c-typeck.c:11279 c/c-typeck.c:11286 c/c-typeck.c:11289
- #: cp/typeck.c:4853 cp/typeck.c:4860
- #, gcc-internal-format
- msgid "ordered comparison of pointer with integer zero"
- msgstr ""
-
--#: c/c-typeck.c:11330 cp/typeck.c:4939
-+#: c/c-typeck.c:11340 cp/typeck.c:4939
- #, gcc-internal-format
- msgid ""
- "implicit conversion from %qT to %qT to match other operand of binary "
-@@ -35473,27 +35547,27 @@
- "expression"
- msgstr ""
-
--#: c/c-typeck.c:11643
-+#: c/c-typeck.c:11653
- #, gcc-internal-format
- msgid "used array that cannot be converted to pointer where scalar is required"
- msgstr ""
-
--#: c/c-typeck.c:11647
-+#: c/c-typeck.c:11657
- #, gcc-internal-format
- msgid "used struct type value where scalar is required"
- msgstr ""
-
--#: c/c-typeck.c:11651
-+#: c/c-typeck.c:11661
- #, gcc-internal-format
- msgid "used union type value where scalar is required"
- msgstr ""
-
--#: c/c-typeck.c:11667
-+#: c/c-typeck.c:11677
- #, gcc-internal-format
- msgid "used vector type where scalar is required"
- msgstr ""
-
--#: c/c-typeck.c:11857 cp/semantics.c:8516
-+#: c/c-typeck.c:11867 cp/semantics.c:8517
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp cancel must specify one of %<parallel%>, %<for%>, %<sections%> "
-@@ -35500,7 +35574,7 @@
- "or %<taskgroup%> clauses"
- msgstr ""
-
--#: c/c-typeck.c:11896 cp/semantics.c:8553
-+#: c/c-typeck.c:11906 cp/semantics.c:8554
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp cancellation point must specify one of %<parallel%>, %<for%>, "
-@@ -35507,129 +35581,129 @@
- "%<sections%> or %<taskgroup%> clauses"
- msgstr ""
-
--#: c/c-typeck.c:11946 c/c-typeck.c:13052 cp/semantics.c:4507
--#: cp/semantics.c:6628
-+#: c/c-typeck.c:11956 c/c-typeck.c:13062 cp/semantics.c:4508
-+#: cp/semantics.c:6629
- #, gcc-internal-format
- msgid "bit-field %qE in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:11955 c/c-typeck.c:13069 cp/semantics.c:4517
--#: cp/semantics.c:6646
-+#: c/c-typeck.c:11965 c/c-typeck.c:13079 cp/semantics.c:4518
-+#: cp/semantics.c:6647
- #, gcc-internal-format
- msgid "%qE is a member of a union"
- msgstr ""
-
--#: c/c-typeck.c:11965 cp/semantics.c:4531 cp/semantics.c:6671
-+#: c/c-typeck.c:11975 cp/semantics.c:4532 cp/semantics.c:6672
- #, gcc-internal-format
- msgid "%qD is not a variable in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:11969 c/c-typeck.c:13086 cp/semantics.c:4535
--#: cp/semantics.c:6674
-+#: c/c-typeck.c:11979 c/c-typeck.c:13096 cp/semantics.c:4536
-+#: cp/semantics.c:6675
- #, gcc-internal-format
- msgid "%qE is not a variable in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:11977 c/c-typeck.c:13093 c/c-typeck.c:13178 cp/semantics.c:4552
--#: cp/semantics.c:6680 cp/semantics.c:6834
-+#: c/c-typeck.c:11987 c/c-typeck.c:13103 c/c-typeck.c:13188 cp/semantics.c:4553
-+#: cp/semantics.c:6681 cp/semantics.c:6835
- #, gcc-internal-format
- msgid "%qD is threadprivate variable in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:11999 cp/semantics.c:4583
-+#: c/c-typeck.c:12009 cp/semantics.c:4584
- #, gcc-internal-format
- msgid "low bound %qE of array section does not have integral type"
- msgstr ""
-
--#: c/c-typeck.c:12006 cp/semantics.c:4590
-+#: c/c-typeck.c:12016 cp/semantics.c:4591
- #, gcc-internal-format
- msgid "length %qE of array section does not have integral type"
- msgstr ""
-
--#: c/c-typeck.c:12033 c/c-typeck.c:12097 c/c-typeck.c:12355 cp/semantics.c:4626
--#: cp/semantics.c:4690
-+#: c/c-typeck.c:12043 c/c-typeck.c:12107 c/c-typeck.c:12365 cp/semantics.c:4627
-+#: cp/semantics.c:4691
- #, gcc-internal-format
- msgid "zero length array section in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12052 cp/semantics.c:4645
-+#: c/c-typeck.c:12062 cp/semantics.c:4646
- #, gcc-internal-format
- msgid "for unknown bound array type length expression must be specified"
- msgstr ""
-
--#: c/c-typeck.c:12060 cp/semantics.c:4653
-+#: c/c-typeck.c:12070 cp/semantics.c:4654
- #, gcc-internal-format
- msgid "negative low bound in array section in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12069 c/c-typeck.c:12179 cp/semantics.c:4662
--#: cp/semantics.c:4772
-+#: c/c-typeck.c:12079 c/c-typeck.c:12189 cp/semantics.c:4663
-+#: cp/semantics.c:4773
- #, gcc-internal-format
- msgid "negative length in array section in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12086 cp/semantics.c:4679
-+#: c/c-typeck.c:12096 cp/semantics.c:4680
- #, gcc-internal-format
- msgid "low bound %qE above array section size in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12123 cp/semantics.c:4716
-+#: c/c-typeck.c:12133 cp/semantics.c:4717
- #, gcc-internal-format
- msgid "length %qE above array section size in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12138 cp/semantics.c:4731
-+#: c/c-typeck.c:12148 cp/semantics.c:4732
- #, gcc-internal-format
- msgid "high bound %qE above array section size in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12171 cp/semantics.c:4764
-+#: c/c-typeck.c:12181 cp/semantics.c:4765
- #, gcc-internal-format
- msgid "for pointer type length expression must be specified"
- msgstr ""
-
--#: c/c-typeck.c:12189 c/c-typeck.c:12298 cp/semantics.c:4782
--#: cp/semantics.c:4894
-+#: c/c-typeck.c:12199 c/c-typeck.c:12308 cp/semantics.c:4783
-+#: cp/semantics.c:4895
- #, gcc-internal-format
- msgid "array section is not contiguous in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:12197 cp/semantics.c:4790
-+#: c/c-typeck.c:12207 cp/semantics.c:4791
- #, gcc-internal-format
- msgid "%qE does not have pointer or array type"
- msgstr ""
-
--#: c/c-typeck.c:12575 c/c-typeck.c:12585
-+#: c/c-typeck.c:12585 c/c-typeck.c:12595
- #, gcc-internal-format
- msgid "%qD in %<reduction%> clause is a zero size array"
- msgstr ""
-
--#: c/c-typeck.c:12643
-+#: c/c-typeck.c:12653
- #, gcc-internal-format
- msgid "%qE has invalid type for %<reduction(%s)%>"
- msgstr ""
-
--#: c/c-typeck.c:12652 cp/semantics.c:5701
-+#: c/c-typeck.c:12662 cp/semantics.c:5702
- #, gcc-internal-format
- msgid "user defined reduction not found for %qE"
- msgstr ""
-
--#: c/c-typeck.c:12740
-+#: c/c-typeck.c:12750
- #, gcc-internal-format
- msgid "variable length element type in array %<reduction%> clause"
- msgstr ""
-
--#: c/c-typeck.c:12758 c/c-typeck.c:13236 cp/semantics.c:7150
-+#: c/c-typeck.c:12768 c/c-typeck.c:13246 cp/semantics.c:7151
- #, gcc-internal-format
- msgid "%<nowait%> clause must not be used together with %<copyprivate%>"
- msgstr ""
-
--#: c/c-typeck.c:12770 cp/semantics.c:7190
-+#: c/c-typeck.c:12780 cp/semantics.c:7191
- #, gcc-internal-format
- msgid "%qE must be %<threadprivate%> for %<copyin%>"
- msgstr ""
-
--#: c/c-typeck.c:12784 cp/semantics.c:5863
-+#: c/c-typeck.c:12794 cp/semantics.c:5864
- #, gcc-internal-format
- msgid ""
- "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> "
-@@ -35636,167 +35710,167 @@
- "constructs"
- msgstr ""
-
--#: c/c-typeck.c:12792
-+#: c/c-typeck.c:12802
- #, gcc-internal-format
- msgid ""
- "linear clause applied to non-integral non-pointer variable with type %qT"
- msgstr ""
-
--#: c/c-typeck.c:12812 cp/semantics.c:5931
-+#: c/c-typeck.c:12822 cp/semantics.c:5932
- #, gcc-internal-format
- msgid "%<linear%> clause step %qE is neither constant nor a parameter"
- msgstr ""
-
--#: c/c-typeck.c:12842 c/c-typeck.c:13171 cp/semantics.c:6015
--#: cp/semantics.c:6827
-+#: c/c-typeck.c:12852 c/c-typeck.c:13181 cp/semantics.c:6016
-+#: cp/semantics.c:6828
- #, gcc-internal-format
- msgid "%qE is not a variable in clause %qs"
- msgstr ""
-
--#: c/c-typeck.c:12851 c/c-typeck.c:12878 c/c-typeck.c:12904
-+#: c/c-typeck.c:12861 c/c-typeck.c:12888 c/c-typeck.c:12914
- #, gcc-internal-format
- msgid "%qE appears more than once in data clauses"
- msgstr ""
-
--#: c/c-typeck.c:12857 c/c-typeck.c:12883 c/c-typeck.c:13127 c/c-typeck.c:13144
--#: cp/semantics.c:6029 cp/semantics.c:6081 cp/semantics.c:6733
--#: cp/semantics.c:6750
-+#: c/c-typeck.c:12867 c/c-typeck.c:12893 c/c-typeck.c:13137 c/c-typeck.c:13154
-+#: cp/semantics.c:6030 cp/semantics.c:6082 cp/semantics.c:6734
-+#: cp/semantics.c:6751
- #, gcc-internal-format
- msgid "%qD appears both in data and map clauses"
- msgstr ""
-
--#: c/c-typeck.c:12871 cp/semantics.c:6070
-+#: c/c-typeck.c:12881 cp/semantics.c:6071
- #, gcc-internal-format
- msgid "%qE is not a variable in clause %<firstprivate%>"
- msgstr ""
-
--#: c/c-typeck.c:12897 cp/semantics.c:6109
-+#: c/c-typeck.c:12907 cp/semantics.c:6110
- #, gcc-internal-format
- msgid "%qE is not a variable in clause %<lastprivate%>"
- msgstr ""
-
--#: c/c-typeck.c:12916 cp/semantics.c:6459
-+#: c/c-typeck.c:12926 cp/semantics.c:6460
- #, gcc-internal-format
- msgid "%qE is not a variable in %<aligned%> clause"
- msgstr ""
-
--#: c/c-typeck.c:12923
-+#: c/c-typeck.c:12933
- #, gcc-internal-format
- msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
- msgstr ""
-
--#: c/c-typeck.c:12930
-+#: c/c-typeck.c:12940
- #, gcc-internal-format
- msgid "%qE appears more than once in %<aligned%> clauses"
- msgstr ""
-
--#: c/c-typeck.c:12985 cp/semantics.c:6541
-+#: c/c-typeck.c:12995 cp/semantics.c:6542
- #, gcc-internal-format
- msgid "%qE is not a variable in %<depend%> clause"
- msgstr ""
-
--#: c/c-typeck.c:13007 cp/semantics.c:6572
-+#: c/c-typeck.c:13017 cp/semantics.c:6573
- #, gcc-internal-format
- msgid "array section does not have mappable type in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:13024 c/c-typeck.c:13136 cp/semantics.c:6591
--#: cp/semantics.c:6742
-+#: c/c-typeck.c:13034 c/c-typeck.c:13146 cp/semantics.c:6592
-+#: cp/semantics.c:6743
- #, gcc-internal-format
- msgid "%qD appears more than once in motion clauses"
- msgstr ""
-
--#: c/c-typeck.c:13027 c/c-typeck.c:13138 cp/semantics.c:6594
--#: cp/semantics.c:6744
-+#: c/c-typeck.c:13037 c/c-typeck.c:13148 cp/semantics.c:6595
-+#: cp/semantics.c:6745
- #, gcc-internal-format
- msgid "%qD appears more than once in map clauses"
- msgstr ""
-
--#: c/c-typeck.c:13059 cp/semantics.c:6635
-+#: c/c-typeck.c:13069 cp/semantics.c:6636
- #, gcc-internal-format
- msgid "%qE does not have a mappable type in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:13112 c/c-typeck.c:13185 cp/semantics.c:6710
--#: cp/semantics.c:6841
-+#: c/c-typeck.c:13122 c/c-typeck.c:13195 cp/semantics.c:6711
-+#: cp/semantics.c:6842
- #, gcc-internal-format
- msgid "%qD does not have a mappable type in %qs clause"
- msgstr ""
-
--#: c/c-typeck.c:13122 cp/semantics.c:6023 cp/semantics.c:6076
--#: cp/semantics.c:6115 cp/semantics.c:6728
-+#: c/c-typeck.c:13132 cp/semantics.c:6024 cp/semantics.c:6077
-+#: cp/semantics.c:6116 cp/semantics.c:6729
- #, gcc-internal-format
- msgid "%qD appears more than once in data clauses"
- msgstr ""
-
--#: c/c-typeck.c:13166 cp/semantics.c:6821
-+#: c/c-typeck.c:13176 cp/semantics.c:6822
- #, gcc-internal-format
- msgid "%qE is neither a variable nor a function name in clause %qs"
- msgstr ""
-
--#: c/c-typeck.c:13194 cp/semantics.c:6850
-+#: c/c-typeck.c:13204 cp/semantics.c:6851
- #, gcc-internal-format
- msgid "%qE appears more than once on the same %<declare target%> directive"
- msgstr ""
-
--#: c/c-typeck.c:13208 cp/semantics.c:6865
-+#: c/c-typeck.c:13218 cp/semantics.c:6866
- #, gcc-internal-format
- msgid "%qD is not an argument in %<uniform%> clause"
- msgstr ""
-
--#: c/c-typeck.c:13211 cp/semantics.c:6867
-+#: c/c-typeck.c:13221 cp/semantics.c:6868
- #, gcc-internal-format
- msgid "%qE is not an argument in %<uniform%> clause"
- msgstr ""
-
--#: c/c-typeck.c:13226
-+#: c/c-typeck.c:13236
- #, gcc-internal-format
- msgid "%qs variable is neither a pointer nor an array"
- msgstr ""
-
--#: c/c-typeck.c:13301 cp/semantics.c:6269
-+#: c/c-typeck.c:13311 cp/semantics.c:6270
- #, gcc-internal-format
- msgid "%<nonmonotonic%> modifier specified for %qs schedule kind"
- msgstr ""
-
--#: c/c-typeck.c:13332 cp/semantics.c:7042
-+#: c/c-typeck.c:13342 cp/semantics.c:7043
- #, gcc-internal-format
- msgid "%<inbranch%> clause is incompatible with %<notinbranch%>"
- msgstr ""
-
--#: c/c-typeck.c:13382 cp/semantics.c:7233
-+#: c/c-typeck.c:13392 cp/semantics.c:7234
- #, gcc-internal-format
- msgid "%qE is predetermined %qs for %qs"
- msgstr ""
-
--#: c/c-typeck.c:13402 cp/semantics.c:7124
-+#: c/c-typeck.c:13412 cp/semantics.c:7125
- #, gcc-internal-format
- msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value"
- msgstr ""
-
--#: c/c-typeck.c:13414 cp/semantics.c:7137
-+#: c/c-typeck.c:13424 cp/semantics.c:7138
- #, gcc-internal-format
- msgid ""
- "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause"
- msgstr ""
-
--#: c/c-typeck.c:13432 cp/semantics.c:7104
-+#: c/c-typeck.c:13442 cp/semantics.c:7105
- #, gcc-internal-format
- msgid ""
- "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause"
- msgstr ""
-
--#: c/c-typeck.c:13561
-+#: c/c-typeck.c:13571
- #, gcc-internal-format
- msgid "cannot use %<va_arg%> with reverse storage order"
- msgstr ""
-
--#: c/c-typeck.c:13566
-+#: c/c-typeck.c:13576
- #, gcc-internal-format
- msgid "second argument to %<va_arg%> is of incomplete type %qT"
- msgstr ""
-
--#: c/c-typeck.c:13572
-+#: c/c-typeck.c:13582
- #, gcc-internal-format
- msgid "C++ requires promoted type, not enum type, in %<va_arg%>"
- msgstr ""
-@@ -36411,7 +36485,7 @@
- "invalid initialization of reference of type %qT from expression of type %qT"
- msgstr ""
-
--#: cp/class.c:324
-+#: cp/class.c:326
- #, gcc-internal-format
- msgid ""
- "cannot convert from pointer to base class %qT to pointer to derived class "
-@@ -36418,7 +36492,7 @@
- "%qT because the base is virtual"
- msgstr ""
-
--#: cp/class.c:328
-+#: cp/class.c:330
- #, gcc-internal-format
- msgid ""
- "cannot convert from base class %qT to derived class %qT because the base is "
-@@ -36425,7 +36499,7 @@
- "virtual"
- msgstr ""
-
--#: cp/class.c:335
-+#: cp/class.c:337
- #, gcc-internal-format
- msgid ""
- "cannot convert from pointer to base class %qT to pointer to derived class "
-@@ -36432,238 +36506,238 @@
- "%qT via virtual base %qT"
- msgstr ""
-
--#: cp/class.c:340
-+#: cp/class.c:342
- #, gcc-internal-format
- msgid ""
- "cannot convert from base class %qT to derived class %qT via virtual base %qT"
- msgstr ""
-
--#: cp/class.c:1055
-+#: cp/class.c:1057
- #, gcc-internal-format
- msgid "Java class %qT cannot have a destructor"
- msgstr ""
-
--#: cp/class.c:1057
-+#: cp/class.c:1059
- #, gcc-internal-format
- msgid "Java class %qT cannot have an implicit non-trivial destructor"
- msgstr ""
-
--#: cp/class.c:1193
-+#: cp/class.c:1195
- #, gcc-internal-format
- msgid "%q#D inherited from %qT"
- msgstr ""
-
--#: cp/class.c:1196
-+#: cp/class.c:1198
- #, gcc-internal-format
- msgid "conflicts with version inherited from %qT"
- msgstr ""
-
--#: cp/class.c:1210
-+#: cp/class.c:1212
- #, gcc-internal-format
- msgid "%q+#D cannot be overloaded"
- msgstr ""
-
--#: cp/class.c:1211
-+#: cp/class.c:1213
- #, gcc-internal-format
- msgid "with %q+#D"
- msgstr ""
-
--#: cp/class.c:1284
-+#: cp/class.c:1286
- #, gcc-internal-format
- msgid "conflicting access specifications for method %q+D, ignored"
- msgstr ""
-
--#: cp/class.c:1287
-+#: cp/class.c:1289
- #, gcc-internal-format
- msgid "conflicting access specifications for field %qE, ignored"
- msgstr ""
-
--#: cp/class.c:1350 cp/class.c:1358
-+#: cp/class.c:1352 cp/class.c:1360
- #, gcc-internal-format
- msgid "%q+D invalid in %q#T"
- msgstr ""
-
--#: cp/class.c:1351
-+#: cp/class.c:1353
- #, gcc-internal-format
- msgid " because of local method %q+#D with same name"
- msgstr ""
-
--#: cp/class.c:1359
-+#: cp/class.c:1361
- #, gcc-internal-format
- msgid " because of local member %q+#D with same name"
- msgstr ""
-
--#: cp/class.c:1414
-+#: cp/class.c:1416
- #, gcc-internal-format
- msgid "%qD inherits the %E ABI tag that %qT (used in its return type) has"
- msgstr ""
-
--#: cp/class.c:1417 cp/class.c:1423 cp/class.c:1429 cp/class.c:1440
-+#: cp/class.c:1419 cp/class.c:1425 cp/class.c:1431 cp/class.c:1442
- #, gcc-internal-format
- msgid "%qT declared here"
- msgstr ""
-
--#: cp/class.c:1421
-+#: cp/class.c:1423
- #, gcc-internal-format
- msgid "%qD inherits the %E ABI tag that %qT (used in its type) has"
- msgstr ""
-
--#: cp/class.c:1427
-+#: cp/class.c:1429
- #, gcc-internal-format
- msgid "%qT does not have the %E ABI tag that base %qT has"
- msgstr ""
-
--#: cp/class.c:1434
-+#: cp/class.c:1436
- #, gcc-internal-format
- msgid "%qT does not have the %E ABI tag that %qT (used in the type of %qD) has"
- msgstr ""
-
--#: cp/class.c:1718
-+#: cp/class.c:1720
- #, gcc-internal-format
- msgid "cannot derive from %<final%> base %qT in derived type %qT"
- msgstr ""
-
--#: cp/class.c:2164
-+#: cp/class.c:2168
- #, gcc-internal-format
- msgid "all member functions in class %qT are private"
- msgstr ""
-
--#: cp/class.c:2176
-+#: cp/class.c:2180
- #, gcc-internal-format
- msgid "%q#T only defines a private destructor and has no friends"
- msgstr ""
-
--#: cp/class.c:2221
-+#: cp/class.c:2225
- #, gcc-internal-format
- msgid "%q#T only defines private constructors and has no friends"
- msgstr ""
-
--#: cp/class.c:2614
-+#: cp/class.c:2618
- #, gcc-internal-format
- msgid "no unique final overrider for %qD in %qT"
- msgstr ""
-
--#: cp/class.c:2975
-+#: cp/class.c:2979
- #, gcc-internal-format
- msgid "%qD can be marked override"
- msgstr ""
-
--#: cp/class.c:2987
-+#: cp/class.c:2991
- #, gcc-internal-format
- msgid "%q+#D marked %<final%>, but is not virtual"
- msgstr ""
-
--#: cp/class.c:2989
-+#: cp/class.c:2993
- #, gcc-internal-format
- msgid "%q+#D marked %<override%>, but does not override"
- msgstr ""
-
--#: cp/class.c:3059
-+#: cp/class.c:3063
- #, gcc-internal-format
- msgid "%qD was hidden"
- msgstr ""
-
--#: cp/class.c:3061
-+#: cp/class.c:3065
- #, gcc-internal-format
- msgid " by %qD"
- msgstr ""
-
--#: cp/class.c:3095 cp/decl2.c:1538
-+#: cp/class.c:3099 cp/decl2.c:1539
- #, gcc-internal-format
- msgid "%q#D invalid; an anonymous union can only have non-static data members"
- msgstr ""
-
--#: cp/class.c:3099
-+#: cp/class.c:3103
- #, gcc-internal-format
- msgid "%q#D invalid; an anonymous struct can only have non-static data members"
- msgstr ""
-
--#: cp/class.c:3111 cp/decl2.c:1545
-+#: cp/class.c:3115 cp/decl2.c:1546
- #, gcc-internal-format
- msgid "private member %q#D in anonymous union"
- msgstr ""
-
--#: cp/class.c:3114
-+#: cp/class.c:3118
- #, gcc-internal-format
- msgid "private member %q#D in anonymous struct"
- msgstr ""
-
--#: cp/class.c:3120 cp/decl2.c:1548
-+#: cp/class.c:3124 cp/decl2.c:1549
- #, gcc-internal-format
- msgid "protected member %q#D in anonymous union"
- msgstr ""
-
--#: cp/class.c:3123
-+#: cp/class.c:3127
- #, gcc-internal-format
- msgid "protected member %q#D in anonymous struct"
- msgstr ""
-
--#: cp/class.c:3302
-+#: cp/class.c:3306
- #, gcc-internal-format
- msgid "the ellipsis in %qD is not inherited"
- msgstr ""
-
--#: cp/class.c:3480
-+#: cp/class.c:3484
- #, gcc-internal-format
- msgid "bit-field %q+#D with non-integral type"
- msgstr ""
-
--#: cp/class.c:3496
-+#: cp/class.c:3500
- #, gcc-internal-format
- msgid "bit-field %q+D width not an integer constant"
- msgstr ""
-
--#: cp/class.c:3501
-+#: cp/class.c:3505
- #, gcc-internal-format
- msgid "negative width in bit-field %q+D"
- msgstr ""
-
--#: cp/class.c:3506
-+#: cp/class.c:3510
- #, gcc-internal-format
- msgid "zero width for bit-field %q+D"
- msgstr ""
-
--#: cp/class.c:3516
-+#: cp/class.c:3520
- #, gcc-internal-format
- msgid "width of %qD exceeds its type"
- msgstr ""
-
--#: cp/class.c:3521
-+#: cp/class.c:3525
- #, gcc-internal-format
- msgid "%qD is too small to hold all values of %q#T"
- msgstr ""
-
--#: cp/class.c:3581
-+#: cp/class.c:3585
- #, gcc-internal-format
- msgid "member %q+#D with constructor not allowed in union"
- msgstr ""
-
--#: cp/class.c:3584
-+#: cp/class.c:3588
- #, gcc-internal-format
- msgid "member %q+#D with destructor not allowed in union"
- msgstr ""
-
--#: cp/class.c:3586
-+#: cp/class.c:3590
- #, gcc-internal-format
- msgid "member %q+#D with copy assignment operator not allowed in union"
- msgstr ""
-
--#: cp/class.c:3590
-+#: cp/class.c:3594
- #, gcc-internal-format
- msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/class.c:3627
-+#: cp/class.c:3631
- #, gcc-internal-format
- msgid "multiple fields in union %qT initialized"
- msgstr ""
-
--#: cp/class.c:3715
-+#: cp/class.c:3719
- #, gcc-internal-format
- msgid "in C++98 %q+D may not be static because it is a member of a union"
- msgstr ""
-
--#: cp/class.c:3721
-+#: cp/class.c:3725
- #, gcc-internal-format
- msgid ""
- "in C++98 %q+D may not have reference type %qT because it is a member of a "
-@@ -36670,82 +36744,82 @@
- "union"
- msgstr ""
-
--#: cp/class.c:3731
-+#: cp/class.c:3735
- #, gcc-internal-format
- msgid "field %q+D invalidly declared function type"
- msgstr ""
-
--#: cp/class.c:3737
-+#: cp/class.c:3741
- #, gcc-internal-format
- msgid "field %q+D invalidly declared method type"
- msgstr ""
-
--#: cp/class.c:3797
-+#: cp/class.c:3801
- #, gcc-internal-format
- msgid "ignoring packed attribute because of unpacked non-POD field %q#D"
- msgstr ""
-
--#: cp/class.c:3845
-+#: cp/class.c:3849
- #, gcc-internal-format
- msgid "member %q+D cannot be declared both %<const%> and %<mutable%>"
- msgstr ""
-
--#: cp/class.c:3851
-+#: cp/class.c:3855
- #, gcc-internal-format
- msgid "member %q+D cannot be declared as a %<mutable%> reference"
- msgstr ""
-
--#: cp/class.c:3913
-+#: cp/class.c:3917
- #, gcc-internal-format
- msgid "field %q#D with same name as class"
- msgstr ""
-
--#: cp/class.c:3936
-+#: cp/class.c:3940
- #, gcc-internal-format
- msgid "%q#T has pointer data members"
- msgstr ""
-
--#: cp/class.c:3941
-+#: cp/class.c:3945
- #, gcc-internal-format
- msgid " but does not override %<%T(const %T&)%>"
- msgstr ""
-
--#: cp/class.c:3943
-+#: cp/class.c:3947
- #, gcc-internal-format
- msgid " or %<operator=(const %T&)%>"
- msgstr ""
-
--#: cp/class.c:3947
-+#: cp/class.c:3951
- #, gcc-internal-format
- msgid " but does not override %<operator=(const %T&)%>"
- msgstr ""
-
--#: cp/class.c:4352
-+#: cp/class.c:4356
- #, gcc-internal-format
- msgid "alignment of %qD increased in -fabi-version=9 (GCC 5.2)"
- msgstr ""
-
--#: cp/class.c:4355
-+#: cp/class.c:4359
- #, gcc-internal-format
- msgid "alignment of %qD will increase in -fabi-version=9"
- msgstr ""
-
--#: cp/class.c:4609
-+#: cp/class.c:4613
- #, gcc-internal-format
- msgid "initializer specified for non-virtual method %q+D"
- msgstr ""
-
--#: cp/class.c:5046
-+#: cp/class.c:5050
- #, gcc-internal-format
- msgid "method overrides both %<transaction_pure%> and %qE methods"
- msgstr ""
-
--#: cp/class.c:5067
-+#: cp/class.c:5071
- #, gcc-internal-format
- msgid "method declared %qE overriding %qE method"
- msgstr ""
-
--#: cp/class.c:5661 cp/constexpr.c:217
-+#: cp/class.c:5664 cp/constexpr.c:217
- #, gcc-internal-format
- msgid ""
- "enclosing class of constexpr non-static member function %q+#D is not a "
-@@ -36752,17 +36826,17 @@
- "literal type"
- msgstr ""
-
--#: cp/class.c:5686
-+#: cp/class.c:5689
- #, gcc-internal-format
- msgid "%q+T is not literal because:"
- msgstr ""
-
--#: cp/class.c:5688
-+#: cp/class.c:5691
- #, gcc-internal-format
- msgid " %q+T has a non-trivial destructor"
- msgstr ""
-
--#: cp/class.c:5693
-+#: cp/class.c:5696
- #, gcc-internal-format
- msgid ""
- " %q+T is not an aggregate, does not have a trivial default constructor, and "
-@@ -36769,32 +36843,32 @@
- "has no constexpr constructor that is not a copy or move constructor"
- msgstr ""
-
--#: cp/class.c:5728
-+#: cp/class.c:5731
- #, gcc-internal-format
- msgid " base class %qT of %q+T is non-literal"
- msgstr ""
-
--#: cp/class.c:5743
-+#: cp/class.c:5746
- #, gcc-internal-format
- msgid " non-static data member %qD has non-literal type"
- msgstr ""
-
--#: cp/class.c:5750
-+#: cp/class.c:5753
- #, gcc-internal-format
- msgid " non-static data member %qD has volatile type"
- msgstr ""
-
--#: cp/class.c:5868
-+#: cp/class.c:5871
- #, gcc-internal-format
- msgid "base class %q#T has accessible non-virtual destructor"
- msgstr ""
-
--#: cp/class.c:5897
-+#: cp/class.c:5900
- #, gcc-internal-format
- msgid "non-static reference %q#D in class without a constructor"
- msgstr ""
-
--#: cp/class.c:5903
-+#: cp/class.c:5906
- #, gcc-internal-format
- msgid "non-static const member %q#D in class without a constructor"
- msgstr ""
-@@ -36801,7 +36875,7 @@
-
- #. If the function is defaulted outside the class, we just
- #. give the synthesis error.
--#: cp/class.c:5929
-+#: cp/class.c:5932
- #, gcc-internal-format
- msgid ""
- "%q+D declared to take const reference, but implicit declaration would take "
-@@ -36808,83 +36882,98 @@
- "non-const"
- msgstr ""
-
--#: cp/class.c:6206
-+#: cp/class.c:6209
- #, gcc-internal-format
- msgid "direct base %qT inaccessible in %qT due to ambiguity"
- msgstr ""
-
--#: cp/class.c:6218
-+#: cp/class.c:6221
- #, gcc-internal-format
- msgid "virtual base %qT inaccessible in %qT due to ambiguity"
- msgstr ""
-
--#: cp/class.c:6446
-+#: cp/class.c:6449
- #, gcc-internal-format
- msgid ""
- "offset of %qD is not ABI-compliant and may change in a future version of GCC"
- msgstr ""
-
--#: cp/class.c:6601
-+#: cp/class.c:6604
- #, gcc-internal-format
- msgid "size of type %qT is too large (%qE bytes)"
- msgstr ""
-
--#: cp/class.c:6806
-+#: cp/class.c:6903
- #, gcc-internal-format
-+msgid "invalid use of %q#T with a zero-size array in %q#D"
-+msgstr ""
-+
-+#: cp/class.c:6905
-+#, gcc-internal-format
-+msgid "invalid use of %q#T with a flexible array member in %q#T"
-+msgstr ""
-+
-+#: cp/class.c:6910
-+#, gcc-internal-format
-+msgid "array member %q#D declared here"
-+msgstr ""
-+
-+#: cp/class.c:6937
-+#, gcc-internal-format
- msgid "zero-size array member %qD not at end of %q#T"
- msgstr ""
-
--#: cp/class.c:6808
-+#: cp/class.c:6939
- #, gcc-internal-format
- msgid "zero-size array member %qD in an otherwise empty %q#T"
- msgstr ""
-
--#: cp/class.c:6813 cp/class.c:6836
-+#: cp/class.c:6947 cp/class.c:6990
- #, gcc-internal-format
- msgid "in the definition of %q#T"
- msgstr ""
-
--#: cp/class.c:6818
-+#: cp/class.c:6955
- #, gcc-internal-format
- msgid "flexible array member %qD not at end of %q#T"
- msgstr ""
-
--#: cp/class.c:6820
-+#: cp/class.c:6957
- #, gcc-internal-format
- msgid "flexible array member %qD in an otherwise empty %q#T"
- msgstr ""
-
--#: cp/class.c:6833
-+#: cp/class.c:6988
- #, gcc-internal-format
- msgid "next member %q#D declared here"
- msgstr ""
-
--#: cp/class.c:6930 cp/decl.c:12954 cp/parser.c:22003
-+#: cp/class.c:7100 cp/decl.c:12954 cp/parser.c:22013
- #, gcc-internal-format
- msgid "redefinition of %q#T"
- msgstr ""
-
--#: cp/class.c:7076
-+#: cp/class.c:7246
- #, gcc-internal-format
- msgid "%q#T has virtual functions and accessible non-virtual destructor"
- msgstr ""
-
--#: cp/class.c:7104
-+#: cp/class.c:7274
- #, gcc-internal-format
- msgid "type transparent %q#T does not have any fields"
- msgstr ""
-
--#: cp/class.c:7110
-+#: cp/class.c:7280
- #, gcc-internal-format
- msgid "type transparent class %qT has base classes"
- msgstr ""
-
--#: cp/class.c:7114
-+#: cp/class.c:7284
- #, gcc-internal-format
- msgid "type transparent class %qT has virtual functions"
- msgstr ""
-
--#: cp/class.c:7120
-+#: cp/class.c:7290
- #, gcc-internal-format
- msgid ""
- "type transparent %q#T cannot be made transparent because the type of the "
-@@ -36891,7 +36980,7 @@
- "first field has a different ABI from the class overall"
- msgstr ""
-
--#: cp/class.c:7284
-+#: cp/class.c:7454
- #, gcc-internal-format
- msgid ""
- "definition of std::initializer_list does not match #include "
-@@ -36898,47 +36987,47 @@
- "<initializer_list>"
- msgstr ""
-
--#: cp/class.c:7295
-+#: cp/class.c:7465
- #, gcc-internal-format
- msgid "trying to finish struct, but kicked out due to previous parse errors"
- msgstr ""
-
--#: cp/class.c:7831
-+#: cp/class.c:8001
- #, gcc-internal-format
- msgid "language string %<\"%E\"%> not recognized"
- msgstr ""
-
--#: cp/class.c:7921
-+#: cp/class.c:8091
- #, gcc-internal-format
- msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
- msgstr ""
-
--#: cp/class.c:8068
-+#: cp/class.c:8238
- #, gcc-internal-format
- msgid "no matches converting function %qD to type %q#T"
- msgstr ""
-
--#: cp/class.c:8096
-+#: cp/class.c:8266
- #, gcc-internal-format
- msgid "converting overloaded function %qD to type %q#T is ambiguous"
- msgstr ""
-
--#: cp/class.c:8123
-+#: cp/class.c:8293
- #, gcc-internal-format
- msgid "assuming pointer to member %qD"
- msgstr ""
-
--#: cp/class.c:8126
-+#: cp/class.c:8296
- #, gcc-internal-format
- msgid "(a pointer to member can only be formed with %<&%E%>)"
- msgstr ""
-
--#: cp/class.c:8201 cp/class.c:8236
-+#: cp/class.c:8371 cp/class.c:8406
- #, gcc-internal-format
- msgid "not enough type information"
- msgstr ""
-
--#: cp/class.c:8219 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247
-+#: cp/class.c:8389 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247
- #, gcc-internal-format
- msgid "cannot convert %qE from type %qT to type %qT"
- msgstr ""
-@@ -36948,12 +37037,12 @@
- #. A name N used in a class S shall refer to the same declaration
- #. in its context and when re-evaluated in the completed scope of
- #. S.
--#: cp/class.c:8500
-+#: cp/class.c:8670
- #, gcc-internal-format
- msgid "declaration of %q#D"
- msgstr ""
-
--#: cp/class.c:8502
-+#: cp/class.c:8672
- #, gcc-internal-format
- msgid "changes meaning of %qD from %q#D"
- msgstr ""
-@@ -37022,43 +37111,43 @@
- msgid "%qD is not usable as a constexpr function because:"
- msgstr ""
-
--#: cp/constexpr.c:1286 cp/constexpr.c:4623
-+#: cp/constexpr.c:1314 cp/constexpr.c:4733
- #, gcc-internal-format
- msgid "call to internal function"
- msgstr ""
-
--#: cp/constexpr.c:1304
-+#: cp/constexpr.c:1332
- #, gcc-internal-format
- msgid "expression %qE does not designate a constexpr function"
- msgstr ""
-
--#: cp/constexpr.c:1322 cp/constexpr.c:4640
-+#: cp/constexpr.c:1350 cp/constexpr.c:4750
- #, gcc-internal-format
- msgid "call to non-constexpr function %qD"
- msgstr ""
-
--#: cp/constexpr.c:1390
-+#: cp/constexpr.c:1418
- #, gcc-internal-format
- msgid "%qD called in a constant expression before its definition is complete"
- msgstr ""
-
- #. The definition of fun was somehow unsuitable.
--#: cp/constexpr.c:1395
-+#: cp/constexpr.c:1423
- #, gcc-internal-format
- msgid "%qD called in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:1399
-+#: cp/constexpr.c:1427
- #, gcc-internal-format
- msgid "%qD used before its definition"
- msgstr ""
-
--#: cp/constexpr.c:1439
-+#: cp/constexpr.c:1467
- #, gcc-internal-format
- msgid "call has circular dependency"
- msgstr ""
-
--#: cp/constexpr.c:1450
-+#: cp/constexpr.c:1478
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to "
-@@ -37065,22 +37154,22 @@
- "increase the maximum)"
- msgstr ""
-
--#: cp/constexpr.c:1532
-+#: cp/constexpr.c:1560
- #, gcc-internal-format
- msgid "constexpr call flows off the end of the function"
- msgstr ""
-
--#: cp/constexpr.c:1612
-+#: cp/constexpr.c:1640
- #, gcc-internal-format
- msgid "%q+E is not a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:1652
-+#: cp/constexpr.c:1680
- #, gcc-internal-format
- msgid "right operand of shift expression %q+E is negative"
- msgstr ""
-
--#: cp/constexpr.c:1659
-+#: cp/constexpr.c:1687
- #, gcc-internal-format
- msgid ""
- "right operand of shift expression %q+E is >= than the precision of the left "
-@@ -37087,129 +37176,129 @@
- "operand"
- msgstr ""
-
--#: cp/constexpr.c:1677
-+#: cp/constexpr.c:1705
- #, gcc-internal-format
- msgid "left operand of shift expression %q+E is negative"
- msgstr ""
-
--#: cp/constexpr.c:1696
-+#: cp/constexpr.c:1724
- #, gcc-internal-format
- msgid "shift expression %q+E overflows"
- msgstr ""
-
--#: cp/constexpr.c:1967
-+#: cp/constexpr.c:2055
- #, gcc-internal-format
- msgid ""
- "array subscript value %qE is outside the bounds of array %qD of type %qT"
- msgstr ""
-
--#: cp/constexpr.c:1972
-+#: cp/constexpr.c:2060
- #, gcc-internal-format
- msgid "array subscript value %qE is outside the bounds of array type %qT"
- msgstr ""
-
--#: cp/constexpr.c:2083
-+#: cp/constexpr.c:2185
- #, gcc-internal-format
- msgid "accessing uninitialized array element"
- msgstr ""
-
--#: cp/constexpr.c:2123 cp/constexpr.c:2207 cp/constexpr.c:3587
-+#: cp/constexpr.c:2225 cp/constexpr.c:2309 cp/constexpr.c:3686
- #, gcc-internal-format
- msgid "%qE is not a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:2129
-+#: cp/constexpr.c:2231
- #, gcc-internal-format
- msgid "mutable %qD is not usable in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:2150
-+#: cp/constexpr.c:2252
- #, gcc-internal-format
- msgid ""
- "accessing %qD member instead of initialized %qD member in constant expression"
- msgstr ""
-
--#: cp/constexpr.c:2167
-+#: cp/constexpr.c:2269
- #, gcc-internal-format
- msgid "accessing uninitialized member %qD"
- msgstr ""
-
--#: cp/constexpr.c:2885
-+#: cp/constexpr.c:2987
- #, gcc-internal-format
- msgid "accessing value of %qE through a %qT glvalue in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:2926
-+#: cp/constexpr.c:3028
- #, gcc-internal-format
- msgid "the value of %qD is not usable in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:2933
-+#: cp/constexpr.c:3035
- #, gcc-internal-format
- msgid "%qD used in its own initializer"
- msgstr ""
-
--#: cp/constexpr.c:2938
-+#: cp/constexpr.c:3040
- #, gcc-internal-format
- msgid "%q#D is not const"
- msgstr ""
-
--#: cp/constexpr.c:2941
-+#: cp/constexpr.c:3043
- #, gcc-internal-format
- msgid "%q#D is volatile"
- msgstr ""
-
--#: cp/constexpr.c:2946
-+#: cp/constexpr.c:3048
- #, gcc-internal-format
- msgid "%qD was not initialized with a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:2955
-+#: cp/constexpr.c:3057
- #, gcc-internal-format
- msgid "%qD was not declared %<constexpr%>"
- msgstr ""
-
--#: cp/constexpr.c:2958
-+#: cp/constexpr.c:3060
- #, gcc-internal-format
- msgid "%qD does not have integral or enumeration type"
- msgstr ""
-
--#: cp/constexpr.c:3066
-+#: cp/constexpr.c:3168
- #, gcc-internal-format
- msgid "modification of %qE is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:3633 cp/constexpr.c:4994
-+#: cp/constexpr.c:3732 cp/constexpr.c:5104
- #, gcc-internal-format
- msgid "temporary of non-literal type %qT in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:3970
-+#: cp/constexpr.c:4080
- #, gcc-internal-format
- msgid "a reinterpret_cast is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:3981 cp/constexpr.c:4730
-+#: cp/constexpr.c:4091 cp/constexpr.c:4840
- #, gcc-internal-format
- msgid "reinterpret_cast from integer to pointer"
- msgstr ""
-
--#: cp/constexpr.c:4041 cp/constexpr.c:4881 cp/constexpr.c:5170
-+#: cp/constexpr.c:4151 cp/constexpr.c:4991 cp/constexpr.c:5280
- #, gcc-internal-format
- msgid "expression %qE is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:4111
-+#: cp/constexpr.c:4221
- #, gcc-internal-format
- msgid "statement is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:4114
-+#: cp/constexpr.c:4224
- #, gcc-internal-format
- msgid "unexpected expression %qE of kind %s"
- msgstr ""
-
--#: cp/constexpr.c:4184
-+#: cp/constexpr.c:4294
- #, gcc-internal-format
- msgid ""
- "%qE is not a constant expression because it refers to mutable subobjects of "
-@@ -37216,7 +37305,7 @@
- "%qT"
- msgstr ""
-
--#: cp/constexpr.c:4197
-+#: cp/constexpr.c:4307
- #, gcc-internal-format
- msgid ""
- "conversion from pointer type %qT to arithmetic type %qT in a constant-"
-@@ -37223,12 +37312,12 @@
- "expression"
- msgstr ""
-
--#: cp/constexpr.c:4559
-+#: cp/constexpr.c:4669
- #, gcc-internal-format
- msgid "expression %qE has side-effects"
- msgstr ""
-
--#: cp/constexpr.c:4756
-+#: cp/constexpr.c:4866
- #, gcc-internal-format
- msgid ""
- "address-of an object %qE with thread local or automatic storage is not a "
-@@ -37235,12 +37324,12 @@
- "constant expression"
- msgstr ""
-
--#: cp/constexpr.c:4788
-+#: cp/constexpr.c:4898
- #, gcc-internal-format
- msgid "use of %<this%> in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:4893
-+#: cp/constexpr.c:5003
- #, gcc-internal-format
- msgid ""
- "typeid-expression is not a constant expression because %qE is of polymorphic "
-@@ -37247,32 +37336,32 @@
- "type"
- msgstr ""
-
--#: cp/constexpr.c:4955
-+#: cp/constexpr.c:5065
- #, gcc-internal-format
- msgid "cast to non-integral type %qT in a constant expression"
- msgstr ""
-
--#: cp/constexpr.c:5042
-+#: cp/constexpr.c:5152
- #, gcc-internal-format
- msgid "division by zero is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:5147
-+#: cp/constexpr.c:5257
- #, gcc-internal-format
- msgid "%<delete[]%> is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:5178
-+#: cp/constexpr.c:5288
- #, gcc-internal-format
- msgid "non-constant array initialization"
- msgstr ""
-
--#: cp/constexpr.c:5198
-+#: cp/constexpr.c:5308
- #, gcc-internal-format
- msgid "%<goto%> is not a constant-expression"
- msgstr ""
-
--#: cp/constexpr.c:5206
-+#: cp/constexpr.c:5316
- #, gcc-internal-format, gfc-internal-format
- msgid "unexpected AST of kind %s"
- msgstr ""
-@@ -37347,17 +37436,17 @@
- msgid "try statements are not allowed inside loops marked with #pragma simd"
- msgstr ""
-
--#: cp/cp-gimplify.c:1372
-+#: cp/cp-gimplify.c:1373
- #, gcc-internal-format
- msgid "throw will always call terminate()"
- msgstr ""
-
--#: cp/cp-gimplify.c:1375
-+#: cp/cp-gimplify.c:1376
- #, gcc-internal-format
- msgid "in C++11 destructors default to noexcept"
- msgstr ""
-
--#: cp/cp-gimplify.c:1386
-+#: cp/cp-gimplify.c:1387
- #, gcc-internal-format
- msgid ""
- "in C++11 this throw will terminate because destructors default to noexcept"
-@@ -38102,7 +38191,7 @@
- msgid " skips initialization of %q#D"
- msgstr ""
-
--#: cp/decl.c:3301 cp/parser.c:11766 cp/parser.c:11793
-+#: cp/decl.c:3301 cp/parser.c:11776 cp/parser.c:11803
- #, gcc-internal-format
- msgid "invalid exit from OpenMP structured block"
- msgstr ""
-@@ -38117,7 +38206,7 @@
- msgid "%qD is not a type"
- msgstr ""
-
--#: cp/decl.c:3659 cp/parser.c:6033
-+#: cp/decl.c:3659 cp/parser.c:6035
- #, gcc-internal-format
- msgid "%qD used without template parameters"
- msgstr ""
-@@ -38296,7 +38385,7 @@
- "declaration"
- msgstr ""
-
--#: cp/decl.c:4868 cp/decl2.c:889
-+#: cp/decl.c:4868 cp/decl2.c:890
- #, gcc-internal-format
- msgid "typedef %qD is initialized (use decltype instead)"
- msgstr ""
-@@ -38861,7 +38950,7 @@
- msgid "%q+#D explicitly defaulted here"
- msgstr ""
-
--#: cp/decl.c:8316 cp/decl2.c:787
-+#: cp/decl.c:8316 cp/decl2.c:788
- #, gcc-internal-format
- msgid "no %q#D member function declared in class %qT"
- msgstr ""
-@@ -38937,7 +39026,7 @@
- msgid "size of array %qD is negative"
- msgstr ""
-
--#: cp/decl.c:8834 cp/init.c:3437
-+#: cp/decl.c:8834 cp/init.c:3442
- #, gcc-internal-format
- msgid "size of array is negative"
- msgstr ""
-@@ -40061,7 +40150,7 @@
- msgid "%qD has the same name as the class in which it is declared"
- msgstr ""
-
--#: cp/decl.c:12665 cp/friend.c:261 cp/parser.c:2971 cp/parser.c:6092
-+#: cp/decl.c:12665 cp/friend.c:261 cp/parser.c:2971 cp/parser.c:6094
- #: cp/pt.c:8169
- #, gcc-internal-format
- msgid "%qT is not a template"
-@@ -40078,7 +40167,7 @@
- msgstr ""
-
- #: cp/decl.c:12679 cp/name-lookup.c:2685 cp/name-lookup.c:3524
--#: cp/name-lookup.c:3569 cp/parser.c:6043 cp/parser.c:24878
-+#: cp/name-lookup.c:3569 cp/parser.c:6045 cp/parser.c:24892
- #, gcc-internal-format
- msgid "reference to %qD is ambiguous"
- msgstr ""
-@@ -40143,7 +40232,7 @@
- msgid "scoped/unscoped mismatch in enum %q#T"
- msgstr ""
-
--#: cp/decl.c:13191 cp/decl.c:13199 cp/decl.c:13211 cp/parser.c:17280
-+#: cp/decl.c:13191 cp/decl.c:13199 cp/decl.c:13211 cp/parser.c:17290
- #, gcc-internal-format
- msgid "previous definition here"
- msgstr ""
-@@ -40172,102 +40261,102 @@
- msgid "no integral type can represent all of the enumerator values for %qT"
- msgstr ""
-
--#: cp/decl.c:13595
-+#: cp/decl.c:13598
- #, gcc-internal-format
- msgid "enumerator value for %qD is not an integer constant"
- msgstr ""
-
--#: cp/decl.c:13642
-+#: cp/decl.c:13645
- #, gcc-internal-format
- msgid "incremented enumerator value is too large for %<unsigned long%>"
- msgstr ""
-
--#: cp/decl.c:13654
-+#: cp/decl.c:13657
- #, gcc-internal-format
- msgid "overflow in enumeration values at %qD"
- msgstr ""
-
--#: cp/decl.c:13674
-+#: cp/decl.c:13677
- #, gcc-internal-format
- msgid "enumerator value %E is outside the range of underlying type %<%T%>"
- msgstr ""
-
--#: cp/decl.c:13767
-+#: cp/decl.c:13770
- #, gcc-internal-format
- msgid "return type %q#T is incomplete"
- msgstr ""
-
--#: cp/decl.c:13769
-+#: cp/decl.c:13772
- #, gcc-internal-format
- msgid "return type has Java class type %q#T"
- msgstr ""
-
--#: cp/decl.c:13941 cp/typeck.c:8819
-+#: cp/decl.c:13944 cp/typeck.c:8820
- #, gcc-internal-format
- msgid "%<operator=%> should return a reference to %<*this%>"
- msgstr ""
-
--#: cp/decl.c:14284
-+#: cp/decl.c:14287
- #, gcc-internal-format
- msgid "invalid function declaration"
- msgstr ""
-
--#: cp/decl.c:14366
-+#: cp/decl.c:14369
- #, gcc-internal-format
- msgid "parameter %qD declared void"
- msgstr ""
-
--#: cp/decl.c:14715
-+#: cp/decl.c:14718
- #, gcc-internal-format
- msgid "no return statements in function returning %qT"
- msgstr ""
-
--#: cp/decl.c:14717 cp/typeck.c:8700
-+#: cp/decl.c:14720 cp/typeck.c:8701
- #, gcc-internal-format
- msgid "only plain %<auto%> return type can be deduced to %<void%>"
- msgstr ""
-
--#: cp/decl.c:14919
-+#: cp/decl.c:14922
- #, gcc-internal-format
- msgid "invalid member function declaration"
- msgstr ""
-
--#: cp/decl.c:14933
-+#: cp/decl.c:14936
- #, gcc-internal-format
- msgid "%qD is already defined in class %qT"
- msgstr ""
-
--#: cp/decl.c:15305 cp/decl2.c:5131 cp/decl2.c:5181
-+#: cp/decl.c:15308 cp/decl2.c:5164 cp/decl2.c:5197
- #, gcc-internal-format
- msgid "use of %qD before deduction of %<auto%>"
- msgstr ""
-
--#: cp/decl2.c:332
-+#: cp/decl2.c:333
- #, gcc-internal-format
- msgid "name missing for member function"
- msgstr ""
-
--#: cp/decl2.c:409 cp/decl2.c:423
-+#: cp/decl2.c:410 cp/decl2.c:424
- #, gcc-internal-format
- msgid "ambiguous conversion for array subscript"
- msgstr ""
-
--#: cp/decl2.c:417
-+#: cp/decl2.c:418
- #, gcc-internal-format
- msgid "invalid types %<%T[%T]%> for array subscript"
- msgstr ""
-
--#: cp/decl2.c:466
-+#: cp/decl2.c:467
- #, gcc-internal-format
- msgid "deleting array %q#E"
- msgstr ""
-
--#: cp/decl2.c:472
-+#: cp/decl2.c:473
- #, gcc-internal-format
- msgid "type %q#T argument given to %<delete%>, expected pointer"
- msgstr ""
-
--#: cp/decl2.c:484
-+#: cp/decl2.c:485
- #, gcc-internal-format
- msgid ""
- "cannot delete a function. Only pointer-to-objects are valid arguments to "
-@@ -40274,27 +40363,27 @@
- "%<delete%>"
- msgstr ""
-
--#: cp/decl2.c:492
-+#: cp/decl2.c:493
- #, gcc-internal-format
- msgid "deleting %qT is undefined"
- msgstr ""
-
--#: cp/decl2.c:540 cp/pt.c:5188
-+#: cp/decl2.c:541 cp/pt.c:5188
- #, gcc-internal-format
- msgid "template declaration of %q#D"
- msgstr ""
-
--#: cp/decl2.c:592
-+#: cp/decl2.c:593
- #, gcc-internal-format
- msgid "Java method %qD has non-Java return type %qT"
- msgstr ""
-
--#: cp/decl2.c:609
-+#: cp/decl2.c:610
- #, gcc-internal-format
- msgid "Java method %qD has non-Java parameter type %qT"
- msgstr ""
-
--#: cp/decl2.c:658
-+#: cp/decl2.c:659
- #, gcc-internal-format
- msgid ""
- "template parameter lists provided don%'t match the template parameters of %qD"
-@@ -40303,117 +40392,117 @@
- #. [temp.mem]
- #.
- #. A destructor shall not be a member template.
--#: cp/decl2.c:673 cp/pt.c:5158
-+#: cp/decl2.c:674 cp/pt.c:5158
- #, gcc-internal-format
- msgid "destructor %qD declared as member template"
- msgstr ""
-
--#: cp/decl2.c:749
-+#: cp/decl2.c:750
- #, gcc-internal-format
- msgid "prototype for %q#D does not match any in class %qT"
- msgstr ""
-
--#: cp/decl2.c:835
-+#: cp/decl2.c:836
- #, gcc-internal-format
- msgid "local class %q#T shall not have static data member %q#D"
- msgstr ""
-
--#: cp/decl2.c:843
-+#: cp/decl2.c:844
- #, gcc-internal-format
- msgid "static data member %qD in unnamed class"
- msgstr ""
-
--#: cp/decl2.c:845
-+#: cp/decl2.c:846
- #, gcc-internal-format
- msgid "unnamed class defined here"
- msgstr ""
-
--#: cp/decl2.c:904
-+#: cp/decl2.c:905
- #, gcc-internal-format
- msgid "explicit template argument list not allowed"
- msgstr ""
-
--#: cp/decl2.c:910
-+#: cp/decl2.c:911
- #, gcc-internal-format
- msgid "member %qD conflicts with virtual function table field name"
- msgstr ""
-
--#: cp/decl2.c:952
-+#: cp/decl2.c:953
- #, gcc-internal-format
- msgid "%qD is already defined in %qT"
- msgstr ""
-
--#: cp/decl2.c:979 cp/decl2.c:987
-+#: cp/decl2.c:980 cp/decl2.c:988
- #, gcc-internal-format
- msgid "invalid initializer for member function %qD"
- msgstr ""
-
--#: cp/decl2.c:994
-+#: cp/decl2.c:995
- #, gcc-internal-format
- msgid "initializer specified for friend function %qD"
- msgstr ""
-
--#: cp/decl2.c:997
-+#: cp/decl2.c:998
- #, gcc-internal-format
- msgid "initializer specified for static member function %qD"
- msgstr ""
-
--#: cp/decl2.c:1041
-+#: cp/decl2.c:1042
- #, gcc-internal-format
- msgid "%<asm%> specifiers are not permitted on non-static data members"
- msgstr ""
-
--#: cp/decl2.c:1094
-+#: cp/decl2.c:1095
- #, gcc-internal-format
- msgid "bit-field %qD with non-integral type"
- msgstr ""
-
--#: cp/decl2.c:1100
-+#: cp/decl2.c:1101
- #, gcc-internal-format
- msgid "cannot declare %qD to be a bit-field type"
- msgstr ""
-
--#: cp/decl2.c:1110
-+#: cp/decl2.c:1111
- #, gcc-internal-format
- msgid "cannot declare bit-field %qD with function type"
- msgstr ""
-
--#: cp/decl2.c:1117
-+#: cp/decl2.c:1118
- #, gcc-internal-format
- msgid "%qD is already defined in the class %qT"
- msgstr ""
-
--#: cp/decl2.c:1124
-+#: cp/decl2.c:1125
- #, gcc-internal-format
- msgid "static member %qD cannot be a bit-field"
- msgstr ""
-
--#: cp/decl2.c:1134
-+#: cp/decl2.c:1135
- #, gcc-internal-format
- msgid "width of bit-field %qD has non-integral type %qT"
- msgstr ""
-
--#: cp/decl2.c:1458
-+#: cp/decl2.c:1459
- #, gcc-internal-format
- msgid "%q+D static data member inside of declare target directive"
- msgstr ""
-
--#: cp/decl2.c:1522
-+#: cp/decl2.c:1523
- #, gcc-internal-format
- msgid "anonymous struct not inside named type"
- msgstr ""
-
--#: cp/decl2.c:1613
-+#: cp/decl2.c:1614
- #, gcc-internal-format
- msgid "namespace-scope anonymous aggregates must be static"
- msgstr ""
-
--#: cp/decl2.c:1622
-+#: cp/decl2.c:1623
- #, gcc-internal-format
- msgid "anonymous union with no members"
- msgstr ""
-
--#: cp/decl2.c:1655
-+#: cp/decl2.c:1656
- #, gcc-internal-format
- msgid "%<operator new%> must return type %qT"
- msgstr ""
-@@ -40422,69 +40511,69 @@
- #.
- #. The first parameter shall not have an associated default
- #. argument.
--#: cp/decl2.c:1666
-+#: cp/decl2.c:1667
- #, gcc-internal-format
- msgid "the first parameter of %<operator new%> cannot have a default argument"
- msgstr ""
-
--#: cp/decl2.c:1682
-+#: cp/decl2.c:1683
- #, gcc-internal-format
- msgid "%<operator new%> takes type %<size_t%> (%qT) as first parameter"
- msgstr ""
-
--#: cp/decl2.c:1711
-+#: cp/decl2.c:1712
- #, gcc-internal-format
- msgid "%<operator delete%> must return type %qT"
- msgstr ""
-
--#: cp/decl2.c:1720
-+#: cp/decl2.c:1721
- #, gcc-internal-format
- msgid "%<operator delete%> takes type %qT as first parameter"
- msgstr ""
-
--#: cp/decl2.c:2572
-+#: cp/decl2.c:2573
- #, gcc-internal-format
- msgid "%qT has a field %qD whose type has no linkage"
- msgstr ""
-
--#: cp/decl2.c:2576
-+#: cp/decl2.c:2577
- #, gcc-internal-format
- msgid ""
- "%qT has a field %qD whose type depends on the type %qT which has no linkage"
- msgstr ""
-
--#: cp/decl2.c:2581
-+#: cp/decl2.c:2582
- #, gcc-internal-format
- msgid "%qT has a field %qD whose type uses the anonymous namespace"
- msgstr ""
-
--#: cp/decl2.c:2589
-+#: cp/decl2.c:2590
- #, gcc-internal-format
- msgid "%qT declared with greater visibility than the type of its field %qD"
- msgstr ""
-
--#: cp/decl2.c:2607
-+#: cp/decl2.c:2608
- #, gcc-internal-format
- msgid "%qT has a base %qT whose type has no linkage"
- msgstr ""
-
--#: cp/decl2.c:2611
-+#: cp/decl2.c:2612
- #, gcc-internal-format
- msgid ""
- "%qT has a base %qT whose type depends on the type %qT which has no linkage"
- msgstr ""
-
--#: cp/decl2.c:2616
-+#: cp/decl2.c:2617
- #, gcc-internal-format
- msgid "%qT has a base %qT whose type uses the anonymous namespace"
- msgstr ""
-
--#: cp/decl2.c:2623
-+#: cp/decl2.c:2624
- #, gcc-internal-format
- msgid "%qT declared with greater visibility than its base %qT"
- msgstr ""
-
--#: cp/decl2.c:4263
-+#: cp/decl2.c:4264
- #, gcc-internal-format
- msgid "%q#D, declared using anonymous type, is used but never defined"
- msgstr ""
-@@ -40493,50 +40582,50 @@
- #. no linkage can only be used to declare extern "C"
- #. entities. Since it's not always an error in the
- #. ISO C++ 90 Standard, we only issue a warning.
--#: cp/decl2.c:4272
-+#: cp/decl2.c:4273
- #, gcc-internal-format
- msgid ""
- "anonymous type with no linkage used to declare variable %q#D with linkage"
- msgstr ""
-
--#: cp/decl2.c:4276
-+#: cp/decl2.c:4277
- #, gcc-internal-format
- msgid ""
- "anonymous type with no linkage used to declare function %q#D with linkage"
- msgstr ""
-
--#: cp/decl2.c:4280
-+#: cp/decl2.c:4281
- #, gcc-internal-format
- msgid ""
- "%q#D does not refer to the unqualified type, so it is not used for linkage"
- msgstr ""
-
--#: cp/decl2.c:4288
-+#: cp/decl2.c:4289
- #, gcc-internal-format
- msgid "%q#D, declared using local type %qT, is used but never defined"
- msgstr ""
-
--#: cp/decl2.c:4292
-+#: cp/decl2.c:4293
- #, gcc-internal-format
- msgid "type %qT with no linkage used to declare variable %q#D with linkage"
- msgstr ""
-
--#: cp/decl2.c:4295
-+#: cp/decl2.c:4296
- #, gcc-internal-format
- msgid "type %qT with no linkage used to declare function %q#D with linkage"
- msgstr ""
-
--#: cp/decl2.c:4482 cp/decl2.c:4485
-+#: cp/decl2.c:4483 cp/decl2.c:4486
- #, gcc-internal-format
- msgid "the program should also define %qD"
- msgstr ""
-
--#: cp/decl2.c:4846
-+#: cp/decl2.c:4847
- #, gcc-internal-format
- msgid "inline function %qD used but never defined"
- msgstr ""
-
--#: cp/decl2.c:5035
-+#: cp/decl2.c:5036
- #, gcc-internal-format
- msgid "default argument missing for parameter %P of %q+#D"
- msgstr ""
-@@ -40543,54 +40632,54 @@
-
- #. We mark a lambda conversion op as deleted if we can't
- #. generate it properly; see maybe_add_lambda_conv_op.
--#: cp/decl2.c:5103
-+#: cp/decl2.c:5136
- #, gcc-internal-format
- msgid "converting lambda which uses %<...%> to function pointer"
- msgstr ""
-
--#: cp/decl2.c:5110
-+#: cp/decl2.c:5143
- #, gcc-internal-format
- msgid "use of deleted function %qD"
- msgstr ""
-
--#: cp/error.c:1456
-+#: cp/error.c:1455
- #, gcc-internal-format
- msgid "with"
- msgstr ""
-
--#: cp/error.c:3597
-+#: cp/error.c:3596
- #, gcc-internal-format
- msgid ""
- "extended initializer lists only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3602
-+#: cp/error.c:3601
- #, gcc-internal-format
- msgid ""
- "explicit conversion operators only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3607
-+#: cp/error.c:3606
- #, gcc-internal-format
- msgid "variadic templates only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3612
-+#: cp/error.c:3611
- #, gcc-internal-format
- msgid "lambda expressions only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3617
-+#: cp/error.c:3616
- #, gcc-internal-format
- msgid "C++11 auto only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3621
-+#: cp/error.c:3620
- #, gcc-internal-format
- msgid "scoped enums only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3625
-+#: cp/error.c:3624
- #, gcc-internal-format
- msgid ""
- "defaulted and deleted functions only available with -std=c++11 or -std=gnu+"
-@@ -40597,12 +40686,12 @@
- "+11"
- msgstr ""
-
--#: cp/error.c:3630
-+#: cp/error.c:3629
- #, gcc-internal-format
- msgid "inline namespaces only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3635
-+#: cp/error.c:3634
- #, gcc-internal-format
- msgid ""
- "override controls (override/final) only available with -std=c++11 or -std=gnu"
-@@ -40609,7 +40698,7 @@
- "++11"
- msgstr ""
-
--#: cp/error.c:3640
-+#: cp/error.c:3639
- #, gcc-internal-format
- msgid ""
- "non-static data member initializers only available with -std=c++11 or -"
-@@ -40616,52 +40705,52 @@
- "std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3645
-+#: cp/error.c:3644
- #, gcc-internal-format
- msgid "user-defined literals only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3650
-+#: cp/error.c:3649
- #, gcc-internal-format
- msgid "delegating constructors only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3655
-+#: cp/error.c:3654
- #, gcc-internal-format
- msgid "inheriting constructors only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3660
-+#: cp/error.c:3659
- #, gcc-internal-format
- msgid "c++11 attributes only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3665
-+#: cp/error.c:3664
- #, gcc-internal-format
- msgid "ref-qualifiers only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/error.c:3715
-+#: cp/error.c:3714
- #, gcc-internal-format
- msgid "incomplete type %qT used in nested name specifier"
- msgstr ""
-
--#: cp/error.c:3719
-+#: cp/error.c:3718
- #, gcc-internal-format
- msgid "reference to %<%T::%D%> is ambiguous"
- msgstr ""
-
--#: cp/error.c:3724 cp/typeck.c:2339
-+#: cp/error.c:3723 cp/typeck.c:2339
- #, gcc-internal-format
- msgid "%qD is not a member of %qT"
- msgstr ""
-
--#: cp/error.c:3728 cp/typeck.c:2767
-+#: cp/error.c:3727 cp/typeck.c:2767
- #, gcc-internal-format
- msgid "%qD is not a member of %qD"
- msgstr ""
-
--#: cp/error.c:3733
-+#: cp/error.c:3732
- #, gcc-internal-format
- msgid "%<::%D%> has not been declared"
- msgstr ""
-@@ -40698,7 +40787,7 @@
- msgid "throwing NULL, which has integral, not pointer type"
- msgstr ""
-
--#: cp/except.c:754 cp/init.c:2883
-+#: cp/except.c:754 cp/init.c:2888
- #, gcc-internal-format
- msgid "%qD should never be overloaded"
- msgstr ""
-@@ -41001,7 +41090,7 @@
- msgid "bad array initializer"
- msgstr ""
-
--#: cp/init.c:1877 cp/semantics.c:3187
-+#: cp/init.c:1877 cp/semantics.c:3188
- #, gcc-internal-format
- msgid "%qT is not a class type"
- msgstr ""
-@@ -41062,7 +41151,7 @@
- msgid "uninitialized const member in base %q#T of %q#T"
- msgstr ""
-
--#: cp/init.c:2537
-+#: cp/init.c:2542
- #, gcc-internal-format
- msgid ""
- "placement new constructing an object of type %<%T [%wu]%> and size %qwu in a "
-@@ -41069,7 +41158,7 @@
- "region of type %qT and size %qwi"
- msgstr ""
-
--#: cp/init.c:2549
-+#: cp/init.c:2554
- #, gcc-internal-format
- msgid ""
- "placement new constructing an array of objects of type %qT and size %qwu in "
-@@ -41076,7 +41165,7 @@
- "a region of type %qT and size %qwi"
- msgstr ""
-
--#: cp/init.c:2560
-+#: cp/init.c:2565
- #, gcc-internal-format
- msgid ""
- "placement new constructing an object of type %qT and size %qwu in a region "
-@@ -41083,97 +41172,97 @@
- "of type %qT and size %qwi"
- msgstr ""
-
--#: cp/init.c:2674
-+#: cp/init.c:2679
- #, gcc-internal-format
- msgid "integer overflow in array size"
- msgstr ""
-
--#: cp/init.c:2684
-+#: cp/init.c:2689
- #, gcc-internal-format
- msgid "array size in new-expression must be constant"
- msgstr ""
-
--#: cp/init.c:2698
-+#: cp/init.c:2703
- #, gcc-internal-format
- msgid "variably modified type not allowed in new-expression"
- msgstr ""
-
--#: cp/init.c:2729
-+#: cp/init.c:2734
- #, gcc-internal-format
- msgid "invalid type %<void%> for new"
- msgstr ""
-
--#: cp/init.c:2772
-+#: cp/init.c:2777
- #, gcc-internal-format
- msgid "uninitialized const in %<new%> of %q#T"
- msgstr ""
-
--#: cp/init.c:2864
-+#: cp/init.c:2869
- #, gcc-internal-format
- msgid "%qT isn%'t a valid Java class type"
- msgstr ""
-
--#: cp/init.c:2877
-+#: cp/init.c:2882
- #, gcc-internal-format
- msgid "call to Java constructor with %qs undefined"
- msgstr ""
-
--#: cp/init.c:2892
-+#: cp/init.c:2897
- #, gcc-internal-format
- msgid "%qD is not a function returning a pointer"
- msgstr ""
-
--#: cp/init.c:2901
-+#: cp/init.c:2906
- #, gcc-internal-format
- msgid "Java class %q#T object allocated using placement new"
- msgstr ""
-
--#: cp/init.c:2945
-+#: cp/init.c:2950
- #, gcc-internal-format
- msgid "no suitable %qD found in class %qT"
- msgstr ""
-
--#: cp/init.c:2952 cp/search.c:1172
-+#: cp/init.c:2957 cp/search.c:1172
- #, gcc-internal-format
- msgid "request for member %qD is ambiguous"
- msgstr ""
-
--#: cp/init.c:3181
-+#: cp/init.c:3186
- #, gcc-internal-format
- msgid "parenthesized initializer in array new"
- msgstr ""
-
--#: cp/init.c:3419
-+#: cp/init.c:3424
- #, gcc-internal-format
- msgid "size in array new must have integral type"
- msgstr ""
-
--#: cp/init.c:3451
-+#: cp/init.c:3456
- #, gcc-internal-format
- msgid "new cannot be applied to a reference type"
- msgstr ""
-
--#: cp/init.c:3460
-+#: cp/init.c:3465
- #, gcc-internal-format
- msgid "new cannot be applied to a function type"
- msgstr ""
-
--#: cp/init.c:3504
-+#: cp/init.c:3509
- #, gcc-internal-format
- msgid "call to Java constructor, while %<jclass%> undefined"
- msgstr ""
-
--#: cp/init.c:3522
-+#: cp/init.c:3527
- #, gcc-internal-format
- msgid "can%'t find %<class$%> in %qT"
- msgstr ""
-
--#: cp/init.c:3582
-+#: cp/init.c:3587
- #, gcc-internal-format
- msgid "possible problem detected in invocation of delete [] operator:"
- msgstr ""
-
--#: cp/init.c:3586
-+#: cp/init.c:3591
- #, gcc-internal-format
- msgid ""
- "neither the destructor nor the class-specific operator delete [] will be "
-@@ -41180,27 +41269,27 @@
- "called, even if they are declared when the class is defined"
- msgstr ""
-
--#: cp/init.c:4078
-+#: cp/init.c:4083
- #, gcc-internal-format
- msgid "initializer ends prematurely"
- msgstr ""
-
--#: cp/init.c:4163
-+#: cp/init.c:4168
- #, gcc-internal-format
- msgid "cannot initialize multi-dimensional array with initializer"
- msgstr ""
-
--#: cp/init.c:4370
-+#: cp/init.c:4375
- #, gcc-internal-format
- msgid "unknown array size in delete"
- msgstr ""
-
--#: cp/init.c:4394
-+#: cp/init.c:4399
- #, gcc-internal-format
- msgid "possible problem detected in invocation of delete operator:"
- msgstr ""
-
--#: cp/init.c:4399
-+#: cp/init.c:4404
- #, gcc-internal-format
- msgid ""
- "neither the destructor nor the class-specific operator delete will be "
-@@ -41207,7 +41296,7 @@
- "called, even if they are declared when the class is defined"
- msgstr ""
-
--#: cp/init.c:4414
-+#: cp/init.c:4419
- #, gcc-internal-format
- msgid ""
- "deleting object of abstract class type %qT which has non-virtual destructor "
-@@ -41214,7 +41303,7 @@
- "will cause undefined behavior"
- msgstr ""
-
--#: cp/init.c:4419
-+#: cp/init.c:4424
- #, gcc-internal-format
- msgid ""
- "deleting object of polymorphic class type %qT which has non-virtual "
-@@ -41221,7 +41310,7 @@
- "destructor might cause undefined behavior"
- msgstr ""
-
--#: cp/init.c:4720
-+#: cp/init.c:4725
- #, gcc-internal-format
- msgid "type to vector delete is neither pointer or array type"
- msgstr ""
-@@ -41824,7 +41913,7 @@
- msgid "LEXER_DEBUGGING_ENABLED_P is not set to true"
- msgstr ""
-
--#: cp/parser.c:1349 cp/parser.c:35699
-+#: cp/parser.c:1349 cp/parser.c:35714
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp declare simd%> not immediately followed by function "
-@@ -41831,8 +41920,8 @@
- "declaration or definition"
- msgstr ""
-
--#: cp/parser.c:1387 cp/parser.c:36532 cp/parser.c:36637 cp/parser.c:36662
--#: cp/parser.c:36719
-+#: cp/parser.c:1387 cp/parser.c:36547 cp/parser.c:36652 cp/parser.c:36677
-+#: cp/parser.c:36734
- #, gcc-internal-format
- msgid ""
- "%<#pragma acc routine%> not followed by a function declaration or definition"
-@@ -41858,7 +41947,7 @@
- msgid "request for member %qE in non-class type %qT"
- msgstr ""
-
--#: cp/parser.c:2826 cp/parser.c:17228
-+#: cp/parser.c:2826 cp/parser.c:17238
- #, gcc-internal-format
- msgid "%<%T::%E%> has not been declared"
- msgstr ""
-@@ -42145,7 +42234,7 @@
- msgid "unable to find string literal operator %qD with %qT, %qT arguments"
- msgstr ""
-
--#: cp/parser.c:4347 cp/parser.c:12322
-+#: cp/parser.c:4347 cp/parser.c:12332
- #, gcc-internal-format
- msgid "expected declaration"
- msgstr ""
-@@ -42160,32 +42249,32 @@
- msgid "expected ..."
- msgstr ""
-
--#: cp/parser.c:4640
-+#: cp/parser.c:4642
- #, gcc-internal-format
- msgid "binary expression in operand of fold-expression"
- msgstr ""
-
--#: cp/parser.c:4643
-+#: cp/parser.c:4645
- #, gcc-internal-format
- msgid "conditional expression in operand of fold-expression"
- msgstr ""
-
--#: cp/parser.c:4651
-+#: cp/parser.c:4653
- #, gcc-internal-format
- msgid "mismatched operator in fold-expression"
- msgstr ""
-
--#: cp/parser.c:4755
-+#: cp/parser.c:4757
- #, gcc-internal-format
- msgid "fixed-point types not supported in C++"
- msgstr ""
-
--#: cp/parser.c:4836
-+#: cp/parser.c:4838
- #, gcc-internal-format
- msgid "ISO C++ forbids braced-groups within expressions"
- msgstr ""
-
--#: cp/parser.c:4848
-+#: cp/parser.c:4850
- #, gcc-internal-format
- msgid ""
- "statement-expressions are not allowed outside functions nor in template-"
-@@ -42192,57 +42281,57 @@
- "argument lists"
- msgstr ""
-
--#: cp/parser.c:4887
-+#: cp/parser.c:4889
- #, gcc-internal-format
- msgid "fold-expressions only available with -std=c++1z or -std=gnu++1z"
- msgstr ""
-
--#: cp/parser.c:4945 cp/parser.c:5116 cp/parser.c:5294
-+#: cp/parser.c:4947 cp/parser.c:5118 cp/parser.c:5296
- #, gcc-internal-format
- msgid "expected primary-expression"
- msgstr ""
-
--#: cp/parser.c:4975
-+#: cp/parser.c:4977
- #, gcc-internal-format
- msgid "%<this%> may not be used in this context"
- msgstr ""
-
--#: cp/parser.c:5111
-+#: cp/parser.c:5113
- #, gcc-internal-format
- msgid "a template declaration cannot appear at block scope"
- msgstr ""
-
--#: cp/parser.c:5269
-+#: cp/parser.c:5271
- #, gcc-internal-format
- msgid "local variable %qD may not appear in this context"
- msgstr ""
-
--#: cp/parser.c:5446
-+#: cp/parser.c:5448
- #, gcc-internal-format
- msgid "expected id-expression"
- msgstr ""
-
--#: cp/parser.c:5578
-+#: cp/parser.c:5580
- #, gcc-internal-format
- msgid "scope %qT before %<~%> is not a class-name"
- msgstr ""
-
--#: cp/parser.c:5607 cp/parser.c:7560
-+#: cp/parser.c:5609 cp/parser.c:7570
- #, gcc-internal-format
- msgid "%<~auto%> only available with -std=c++14 or -std=gnu++14"
- msgstr ""
-
--#: cp/parser.c:5718
-+#: cp/parser.c:5720
- #, gcc-internal-format
- msgid "declaration of %<~%T%> as member of %qT"
- msgstr ""
-
--#: cp/parser.c:5733
-+#: cp/parser.c:5735
- #, gcc-internal-format
- msgid "typedef-name %qD used as destructor declarator"
- msgstr ""
-
--#: cp/parser.c:5768
-+#: cp/parser.c:5770
- #, gcc-internal-format
- msgid ""
- "literal operator suffixes not preceded by %<_%> are reserved for future "
-@@ -42249,117 +42338,117 @@
- "standardization"
- msgstr ""
-
--#: cp/parser.c:5779 cp/parser.c:19204
-+#: cp/parser.c:5781 cp/parser.c:19214
- #, gcc-internal-format
- msgid "expected unqualified-id"
- msgstr ""
-
--#: cp/parser.c:5886
-+#: cp/parser.c:5888
- #, gcc-internal-format
- msgid "found %<:%> in nested-name-specifier, expected %<::%>"
- msgstr ""
-
--#: cp/parser.c:5955
-+#: cp/parser.c:5957
- #, gcc-internal-format
- msgid "decltype evaluates to %qT, which is not a class or enumeration type"
- msgstr ""
-
--#: cp/parser.c:5981
-+#: cp/parser.c:5983
- #, gcc-internal-format
- msgid "function template-id %qD in nested-name-specifier"
- msgstr ""
-
--#: cp/parser.c:5989
-+#: cp/parser.c:5991
- #, gcc-internal-format
- msgid "variable template-id %qD in nested-name-specifier"
- msgstr ""
-
--#: cp/parser.c:6093 cp/typeck.c:2610 cp/typeck.c:2613 cp/typeck.c:2633
-+#: cp/parser.c:6095 cp/typeck.c:2610 cp/typeck.c:2613 cp/typeck.c:2633
- #, gcc-internal-format
- msgid "%qD is not a template"
- msgstr ""
-
--#: cp/parser.c:6171
-+#: cp/parser.c:6173
- #, gcc-internal-format
- msgid "expected nested-name-specifier"
- msgstr ""
-
--#: cp/parser.c:6372 cp/parser.c:8540
-+#: cp/parser.c:6374 cp/parser.c:8550
- #, gcc-internal-format
- msgid "types may not be defined in casts"
- msgstr ""
-
--#: cp/parser.c:6453
-+#: cp/parser.c:6458
- #, gcc-internal-format
- msgid "types may not be defined in a %<typeid%> expression"
- msgstr ""
-
--#: cp/parser.c:6511
-+#: cp/parser.c:6516
- #, gcc-internal-format
- msgid "%<_Cilk_spawn%> must be followed by an expression"
- msgstr ""
-
--#: cp/parser.c:6660
-+#: cp/parser.c:6670
- #, gcc-internal-format
- msgid "ISO C++ forbids compound-literals"
- msgstr ""
-
--#: cp/parser.c:6719
-+#: cp/parser.c:6729
- #, gcc-internal-format
- msgid "two consecutive %<[%> shall only introduce an attribute"
- msgstr ""
-
--#: cp/parser.c:7119
-+#: cp/parser.c:7129
- #, gcc-internal-format
- msgid "braced list index is not allowed with array notation"
- msgstr ""
-
--#: cp/parser.c:7212
-+#: cp/parser.c:7222
- #, gcc-internal-format
- msgid "%qE does not have class type"
- msgstr ""
-
--#: cp/parser.c:7305 cp/typeck.c:2498
-+#: cp/parser.c:7315 cp/typeck.c:2498
- #, gcc-internal-format
- msgid "invalid use of %qD"
- msgstr ""
-
--#: cp/parser.c:7314
-+#: cp/parser.c:7324
- #, gcc-internal-format
- msgid "%<%D::%D%> is not a class member"
- msgstr ""
-
--#: cp/parser.c:7612
-+#: cp/parser.c:7622
- #, gcc-internal-format
- msgid "non-scalar type"
- msgstr ""
-
--#: cp/parser.c:7711
-+#: cp/parser.c:7721
- #, gcc-internal-format
- msgid "ISO C++ does not allow %<alignof%> with a non-type"
- msgstr ""
-
--#: cp/parser.c:7796
-+#: cp/parser.c:7806
- #, gcc-internal-format
- msgid "types may not be defined in %<noexcept%> expressions"
- msgstr ""
-
--#: cp/parser.c:8074
-+#: cp/parser.c:8084
- #, gcc-internal-format
- msgid "types may not be defined in a new-expression"
- msgstr ""
-
--#: cp/parser.c:8090
-+#: cp/parser.c:8100
- #, gcc-internal-format
- msgid "array bound forbidden after parenthesized type-id"
- msgstr ""
-
--#: cp/parser.c:8092
-+#: cp/parser.c:8102
- #, gcc-internal-format
- msgid "try removing the parentheses around the type-id"
- msgstr ""
-
--#: cp/parser.c:8123
-+#: cp/parser.c:8133
- #, gcc-internal-format
- msgid ""
- "initialization of new-expression for type %<auto%> requires exactly one "
-@@ -42366,94 +42455,94 @@
- "element"
- msgstr ""
-
--#: cp/parser.c:8171
-+#: cp/parser.c:8181
- #, gcc-internal-format
- msgid "expected expression-list or type-id"
- msgstr ""
-
--#: cp/parser.c:8200
-+#: cp/parser.c:8210
- #, gcc-internal-format
- msgid "types may not be defined in a new-type-id"
- msgstr ""
-
--#: cp/parser.c:8328
-+#: cp/parser.c:8338
- #, gcc-internal-format
- msgid "expression in new-declarator must have integral or enumeration type"
- msgstr ""
-
--#: cp/parser.c:8636
-+#: cp/parser.c:8646
- #, gcc-internal-format
- msgid "use of old-style cast"
- msgstr ""
-
--#: cp/parser.c:8783
-+#: cp/parser.c:8793
- #, gcc-internal-format
- msgid "%<>>%> operator is treated as two right angle brackets in C++11"
- msgstr ""
-
--#: cp/parser.c:8786
-+#: cp/parser.c:8796
- #, gcc-internal-format
- msgid "suggest parentheses around %<>>%> expression"
- msgstr ""
-
--#: cp/parser.c:8982
-+#: cp/parser.c:8992
- #, gcc-internal-format
- msgid "ISO C++ does not allow ?: with omitted middle operand"
- msgstr ""
-
--#: cp/parser.c:9690
-+#: cp/parser.c:9700
- #, gcc-internal-format
- msgid "lambda-expression in unevaluated context"
- msgstr ""
-
--#: cp/parser.c:9699
-+#: cp/parser.c:9709
- #, gcc-internal-format
- msgid "lambda-expression in template-argument"
- msgstr ""
-
--#: cp/parser.c:9852
-+#: cp/parser.c:9862
- #, gcc-internal-format
- msgid "expected end of capture-list"
- msgstr ""
-
--#: cp/parser.c:9866
-+#: cp/parser.c:9876
- #, gcc-internal-format
- msgid ""
- "explicit by-copy capture of %<this%> redundant with by-copy capture default"
- msgstr ""
-
--#: cp/parser.c:9910
-+#: cp/parser.c:9920
- #, gcc-internal-format
- msgid ""
- "lambda capture initializers only available with -std=c++14 or -std=gnu++14"
- msgstr ""
-
--#: cp/parser.c:9917
-+#: cp/parser.c:9927
- #, gcc-internal-format
- msgid "empty initializer for lambda init-capture"
- msgstr ""
-
--#: cp/parser.c:9940
-+#: cp/parser.c:9950
- #, gcc-internal-format
- msgid "capture of non-variable %qD "
- msgstr ""
-
--#: cp/parser.c:9943 cp/parser.c:9953 cp/semantics.c:3364 cp/semantics.c:3374
-+#: cp/parser.c:9953 cp/parser.c:9963 cp/semantics.c:3365 cp/semantics.c:3375
- #, gcc-internal-format
- msgid "%q#D declared here"
- msgstr ""
-
--#: cp/parser.c:9949
-+#: cp/parser.c:9959
- #, gcc-internal-format
- msgid "capture of variable %qD with non-automatic storage duration"
- msgstr ""
-
--#: cp/parser.c:9987
-+#: cp/parser.c:9997
- #, gcc-internal-format
- msgid "explicit by-copy capture of %qD redundant with by-copy capture default"
- msgstr ""
-
--#: cp/parser.c:9992
-+#: cp/parser.c:10002
- #, gcc-internal-format
- msgid ""
- "explicit by-reference capture of %qD redundant with by-reference capture "
-@@ -42460,62 +42549,62 @@
- "default"
- msgstr ""
-
--#: cp/parser.c:10039
-+#: cp/parser.c:10049
- #, gcc-internal-format
- msgid "lambda templates are only available with -std=c++14 or -std=gnu++14"
- msgstr ""
-
--#: cp/parser.c:10069
-+#: cp/parser.c:10079
- #, gcc-internal-format
- msgid "default argument specified for lambda parameter"
- msgstr ""
-
--#: cp/parser.c:10548
-+#: cp/parser.c:10558
- #, gcc-internal-format
- msgid "attributes at the beginning of statement are ignored"
- msgstr ""
-
--#: cp/parser.c:10576
-+#: cp/parser.c:10586
- #, gcc-internal-format
- msgid "expected labeled-statement"
- msgstr ""
-
--#: cp/parser.c:10614
-+#: cp/parser.c:10624
- #, gcc-internal-format
- msgid "case label %qE not within a switch statement"
- msgstr ""
-
--#: cp/parser.c:10699
-+#: cp/parser.c:10709
- #, gcc-internal-format
- msgid "need %<typename%> before %qE because %qT is a dependent scope"
- msgstr ""
-
--#: cp/parser.c:10708
-+#: cp/parser.c:10718
- #, gcc-internal-format
- msgid "%<%T::%D%> names the constructor, not the type"
- msgstr ""
-
--#: cp/parser.c:10755
-+#: cp/parser.c:10765
- #, gcc-internal-format
- msgid "compound-statement in constexpr function"
- msgstr ""
-
--#: cp/parser.c:10997 cp/parser.c:27021
-+#: cp/parser.c:11007 cp/parser.c:27036
- #, gcc-internal-format
- msgid "expected selection-statement"
- msgstr ""
-
--#: cp/parser.c:11030
-+#: cp/parser.c:11040
- #, gcc-internal-format
- msgid "types may not be defined in conditions"
- msgstr ""
-
--#: cp/parser.c:11419
-+#: cp/parser.c:11429
- #, gcc-internal-format
- msgid "range-based %<for%> expression of type %qT has incomplete type"
- msgstr ""
-
--#: cp/parser.c:11457
-+#: cp/parser.c:11467
- #, gcc-internal-format
- msgid ""
- "range-based %<for%> expression of type %qT has an %<end%> member but not a "
-@@ -42522,7 +42611,7 @@
- "%<begin%>"
- msgstr ""
-
--#: cp/parser.c:11463
-+#: cp/parser.c:11473
- #, gcc-internal-format
- msgid ""
- "range-based %<for%> expression of type %qT has a %<begin%> member but not an "
-@@ -42529,80 +42618,80 @@
- "%<end%>"
- msgstr ""
-
--#: cp/parser.c:11515
-+#: cp/parser.c:11525
- #, gcc-internal-format
- msgid ""
- "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
- msgstr ""
-
--#: cp/parser.c:11650 cp/parser.c:27024
-+#: cp/parser.c:11660 cp/parser.c:27039
- #, gcc-internal-format
- msgid "expected iteration-statement"
- msgstr ""
-
--#: cp/parser.c:11698
-+#: cp/parser.c:11708
- #, gcc-internal-format
- msgid ""
- "range-based %<for%> loops only available with -std=c++11 or -std=gnu++11"
- msgstr ""
-
--#: cp/parser.c:11772
-+#: cp/parser.c:11782
- #, gcc-internal-format
- msgid "break statement used with Cilk Plus for loop"
- msgstr ""
-
--#: cp/parser.c:11829
-+#: cp/parser.c:11839
- #, gcc-internal-format
- msgid "%<goto%> in %<constexpr%> function"
- msgstr ""
-
- #. Issue a warning about this use of a GNU extension.
--#: cp/parser.c:11837
-+#: cp/parser.c:11847
- #, gcc-internal-format
- msgid "ISO C++ forbids computed gotos"
- msgstr ""
-
--#: cp/parser.c:11850 cp/parser.c:27027
-+#: cp/parser.c:11860 cp/parser.c:27042
- #, gcc-internal-format
- msgid "expected jump-statement"
- msgstr ""
-
--#: cp/parser.c:12007 cp/parser.c:22346
-+#: cp/parser.c:12017 cp/parser.c:22356
- #, gcc-internal-format
- msgid "extra %<;%>"
- msgstr ""
-
--#: cp/parser.c:12247
-+#: cp/parser.c:12257
- #, gcc-internal-format
- msgid "%<__label__%> not at the beginning of a block"
- msgstr ""
-
--#: cp/parser.c:12409
-+#: cp/parser.c:12419
- #, gcc-internal-format
- msgid "inconsistent deduction for %qT: %qT and then %qT"
- msgstr ""
-
--#: cp/parser.c:12430
-+#: cp/parser.c:12440
- #, gcc-internal-format
- msgid "mixing declarations and function-definitions is forbidden"
- msgstr ""
-
--#: cp/parser.c:12454
-+#: cp/parser.c:12464
- #, gcc-internal-format
- msgid "types may not be defined in a for-range-declaration"
- msgstr ""
-
--#: cp/parser.c:12508
-+#: cp/parser.c:12518
- #, gcc-internal-format
- msgid "initializer in range-based %<for%> loop"
- msgstr ""
-
--#: cp/parser.c:12511
-+#: cp/parser.c:12521
- #, gcc-internal-format
- msgid "multiple declarations in range-based %<for%> loop"
- msgstr ""
-
--#: cp/parser.c:12652
-+#: cp/parser.c:12662
- #, gcc-internal-format
- msgid "%<friend%> used outside of class"
- msgstr ""
-@@ -42609,32 +42698,32 @@
-
- #. Complain about `auto' as a storage specifier, if
- #. we're complaining about C++0x compatibility.
--#: cp/parser.c:12716
-+#: cp/parser.c:12726
- #, gcc-internal-format
- msgid "%<auto%> changes meaning in C++11; please remove it"
- msgstr ""
-
--#: cp/parser.c:12752
-+#: cp/parser.c:12762
- #, gcc-internal-format
- msgid "decl-specifier invalid in condition"
- msgstr ""
-
--#: cp/parser.c:12844
-+#: cp/parser.c:12854
- #, gcc-internal-format
- msgid "class definition may not be declared a friend"
- msgstr ""
-
--#: cp/parser.c:12912 cp/parser.c:22753
-+#: cp/parser.c:12922 cp/parser.c:22763
- #, gcc-internal-format
- msgid "templates may not be %<virtual%>"
- msgstr ""
-
--#: cp/parser.c:12952
-+#: cp/parser.c:12962
- #, gcc-internal-format
- msgid "invalid linkage-specification"
- msgstr ""
-
--#: cp/parser.c:13039
-+#: cp/parser.c:13049
- #, gcc-internal-format
- msgid ""
- "static_assert without a message only available with -std=c++1z or -std=gnu+"
-@@ -42641,53 +42730,53 @@
- "+1z"
- msgstr ""
-
--#: cp/parser.c:13233
-+#: cp/parser.c:13243
- #, gcc-internal-format
- msgid "types may not be defined in %<decltype%> expressions"
- msgstr ""
-
--#: cp/parser.c:13376
-+#: cp/parser.c:13386
- #, gcc-internal-format
- msgid "types may not be defined in a conversion-type-id"
- msgstr ""
-
--#: cp/parser.c:13403
-+#: cp/parser.c:13413
- #, gcc-internal-format
- msgid "invalid use of %<auto%> in conversion operator"
- msgstr ""
-
--#: cp/parser.c:13407
-+#: cp/parser.c:13417
- #, gcc-internal-format
- msgid ""
- "use of %<auto%> in member template conversion operator can never be deduced"
- msgstr ""
-
--#: cp/parser.c:13496
-+#: cp/parser.c:13506
- #, gcc-internal-format
- msgid "only constructors take member initializers"
- msgstr ""
-
--#: cp/parser.c:13518
-+#: cp/parser.c:13528
- #, gcc-internal-format
- msgid "cannot expand initializer for member %<%D%>"
- msgstr ""
-
--#: cp/parser.c:13530
-+#: cp/parser.c:13540
- #, gcc-internal-format
- msgid "mem-initializer for %qD follows constructor delegation"
- msgstr ""
-
--#: cp/parser.c:13542
-+#: cp/parser.c:13552
- #, gcc-internal-format
- msgid "constructor delegation follows mem-initializer for %qD"
- msgstr ""
-
--#: cp/parser.c:13594
-+#: cp/parser.c:13604
- #, gcc-internal-format
- msgid "anachronistic old-style base class initializer"
- msgstr ""
-
--#: cp/parser.c:13664
-+#: cp/parser.c:13674
- #, gcc-internal-format
- msgid ""
- "keyword %<typename%> not allowed in this context (a qualified member "
-@@ -42694,83 +42783,83 @@
- "initializer is implicitly a type)"
- msgstr ""
-
--#: cp/parser.c:14024
-+#: cp/parser.c:14034
- #, gcc-internal-format
- msgid "unexpected keyword; remove space between quotes and suffix identifier"
- msgstr ""
-
--#: cp/parser.c:14030
-+#: cp/parser.c:14040
- #, gcc-internal-format
- msgid "expected suffix identifier"
- msgstr ""
-
--#: cp/parser.c:14039
-+#: cp/parser.c:14049
- #, gcc-internal-format
- msgid "expected empty string after %<operator%> keyword"
- msgstr ""
-
--#: cp/parser.c:14045
-+#: cp/parser.c:14055
- #, gcc-internal-format
- msgid "invalid encoding prefix in literal operator"
- msgstr ""
-
--#: cp/parser.c:14068
-+#: cp/parser.c:14078
- #, gcc-internal-format
- msgid "expected operator"
- msgstr ""
-
- #. Warn that we do not support `export'.
--#: cp/parser.c:14113
-+#: cp/parser.c:14123
- #, gcc-internal-format
- msgid "keyword %<export%> not implemented, and will be ignored"
- msgstr ""
-
--#: cp/parser.c:14283
-+#: cp/parser.c:14293
- #, gcc-internal-format
- msgid "invalid constrained type parameter"
- msgstr ""
-
--#: cp/parser.c:14291
-+#: cp/parser.c:14301
- #, gcc-internal-format
- msgid "cv-qualified type parameter"
- msgstr ""
-
--#: cp/parser.c:14376
-+#: cp/parser.c:14386
- #, gcc-internal-format
- msgid "variadic constraint introduced without %<...%>"
- msgstr ""
-
--#: cp/parser.c:14440
-+#: cp/parser.c:14450
- #, gcc-internal-format
- msgid "invalid use of %<auto%> in default template argument"
- msgstr ""
-
--#: cp/parser.c:14675 cp/parser.c:14761 cp/parser.c:20621
-+#: cp/parser.c:14685 cp/parser.c:14771 cp/parser.c:20631
- #, gcc-internal-format
- msgid "template parameter pack %qD cannot have a default argument"
- msgstr ""
-
--#: cp/parser.c:14679 cp/parser.c:14765
-+#: cp/parser.c:14689 cp/parser.c:14775
- #, gcc-internal-format
- msgid "template parameter packs cannot have default arguments"
- msgstr ""
-
--#: cp/parser.c:14831
-+#: cp/parser.c:14841
- #, gcc-internal-format
- msgid "expected template-id"
- msgstr ""
-
--#: cp/parser.c:14884 cp/parser.c:26985
-+#: cp/parser.c:14894 cp/parser.c:27000
- #, gcc-internal-format
- msgid "expected %<<%>"
- msgstr ""
-
--#: cp/parser.c:14891
-+#: cp/parser.c:14901
- #, gcc-internal-format
- msgid "%<<::%> cannot begin a template-argument list"
- msgstr ""
-
--#: cp/parser.c:14895
-+#: cp/parser.c:14905
- #, gcc-internal-format
- msgid ""
- "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> "
-@@ -42777,7 +42866,7 @@
- "and %<::%>"
- msgstr ""
-
--#: cp/parser.c:14899
-+#: cp/parser.c:14909
- #, gcc-internal-format
- msgid ""
- "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will "
-@@ -42784,64 +42873,64 @@
- "accept your code)"
- msgstr ""
-
--#: cp/parser.c:15006
-+#: cp/parser.c:15016
- #, gcc-internal-format
- msgid "parse error in template argument list"
- msgstr ""
-
- #. The name does not name a template.
--#: cp/parser.c:15075 cp/parser.c:15196 cp/parser.c:15411
-+#: cp/parser.c:15085 cp/parser.c:15206 cp/parser.c:15421
- #, gcc-internal-format
- msgid "expected template-name"
- msgstr ""
-
- #. Explain what went wrong.
--#: cp/parser.c:15121
-+#: cp/parser.c:15131
- #, gcc-internal-format
- msgid "non-template %qD used as template"
- msgstr ""
-
--#: cp/parser.c:15123
-+#: cp/parser.c:15133
- #, gcc-internal-format
- msgid "use %<%T::template %D%> to indicate that it is a template"
- msgstr ""
-
--#: cp/parser.c:15263
-+#: cp/parser.c:15273
- #, gcc-internal-format
- msgid "expected parameter pack before %<...%>"
- msgstr ""
-
--#: cp/parser.c:15372 cp/parser.c:15390 cp/parser.c:15557
-+#: cp/parser.c:15382 cp/parser.c:15400 cp/parser.c:15567
- #, gcc-internal-format
- msgid "expected template-argument"
- msgstr ""
-
--#: cp/parser.c:15532
-+#: cp/parser.c:15542
- #, gcc-internal-format
- msgid "invalid non-type template argument"
- msgstr ""
-
--#: cp/parser.c:15659
-+#: cp/parser.c:15669
- #, gcc-internal-format
- msgid "explicit instantiation shall not use %<inline%> specifier"
- msgstr ""
-
--#: cp/parser.c:15663
-+#: cp/parser.c:15673
- #, gcc-internal-format
- msgid "explicit instantiation shall not use %<constexpr%> specifier"
- msgstr ""
-
--#: cp/parser.c:15722
-+#: cp/parser.c:15732
- #, gcc-internal-format
- msgid "template specialization with C linkage"
- msgstr ""
-
--#: cp/parser.c:15942
-+#: cp/parser.c:15952
- #, gcc-internal-format
- msgid "expected type specifier"
- msgstr ""
-
--#: cp/parser.c:16122
-+#: cp/parser.c:16132
- #, gcc-internal-format
- msgid ""
- "use of %<auto%> in lambda parameter declaration only available with -std=c+"
-@@ -42848,7 +42937,7 @@
- "+14 or -std=gnu++14"
- msgstr ""
-
--#: cp/parser.c:16128
-+#: cp/parser.c:16138
- #, gcc-internal-format
- msgid ""
- "use of %<auto%> in parameter declaration only available with -std=c++14 or -"
-@@ -42855,43 +42944,43 @@
- "std=gnu++14"
- msgstr ""
-
--#: cp/parser.c:16133
-+#: cp/parser.c:16143
- #, gcc-internal-format
- msgid "ISO C++ forbids use of %<auto%> in parameter declaration"
- msgstr ""
-
--#: cp/parser.c:16277
-+#: cp/parser.c:16287
- #, gcc-internal-format
- msgid "expected template-id for type"
- msgstr ""
-
--#: cp/parser.c:16304
-+#: cp/parser.c:16314
- #, gcc-internal-format
- msgid "expected type-name"
- msgstr ""
-
--#: cp/parser.c:16653
-+#: cp/parser.c:16663
- #, gcc-internal-format
- msgid ""
- "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
- msgstr ""
-
--#: cp/parser.c:16862
-+#: cp/parser.c:16872
- #, gcc-internal-format
- msgid "declaration %qD does not declare anything"
- msgstr ""
-
--#: cp/parser.c:16949
-+#: cp/parser.c:16959
- #, gcc-internal-format
- msgid "attributes ignored on uninstantiated type"
- msgstr ""
-
--#: cp/parser.c:16953
-+#: cp/parser.c:16963
- #, gcc-internal-format
- msgid "attributes ignored on template instantiation"
- msgstr ""
-
--#: cp/parser.c:16958
-+#: cp/parser.c:16968
- #, gcc-internal-format
- msgid ""
- "attributes ignored on elaborated-type-specifier that is not a forward "
-@@ -42898,32 +42987,32 @@
- "declaration"
- msgstr ""
-
--#: cp/parser.c:17092
-+#: cp/parser.c:17102
- #, gcc-internal-format
- msgid "%qD is an enumeration template"
- msgstr ""
-
--#: cp/parser.c:17103
-+#: cp/parser.c:17113
- #, gcc-internal-format
- msgid "%qD does not name an enumeration in %qT"
- msgstr ""
-
--#: cp/parser.c:17118
-+#: cp/parser.c:17128
- #, gcc-internal-format
- msgid "anonymous scoped enum is not allowed"
- msgstr ""
-
--#: cp/parser.c:17173
-+#: cp/parser.c:17183
- #, gcc-internal-format
- msgid "expected %<;%> or %<{%>"
- msgstr ""
-
--#: cp/parser.c:17222
-+#: cp/parser.c:17232
- #, gcc-internal-format
- msgid "cannot add an enumerator list to a template instantiation"
- msgstr ""
-
--#: cp/parser.c:17236
-+#: cp/parser.c:17246
- #, gcc-internal-format
- msgid ""
- "nested name specifier %qT for enum declaration does not name a class or "
-@@ -42930,83 +43019,83 @@
- "namespace"
- msgstr ""
-
--#: cp/parser.c:17248 cp/parser.c:21857
-+#: cp/parser.c:17258 cp/parser.c:21867
- #, gcc-internal-format
- msgid "declaration of %qD in namespace %qD which does not enclose %qD"
- msgstr ""
-
--#: cp/parser.c:17253 cp/parser.c:21862
-+#: cp/parser.c:17263 cp/parser.c:21872
- #, gcc-internal-format
- msgid "declaration of %qD in %qD which does not enclose %qD"
- msgstr ""
-
--#: cp/parser.c:17278
-+#: cp/parser.c:17288
- #, gcc-internal-format
- msgid "multiple definition of %q#T"
- msgstr ""
-
--#: cp/parser.c:17291
-+#: cp/parser.c:17301
- #, gcc-internal-format
- msgid "ISO C++ forbids empty anonymous enum"
- msgstr ""
-
--#: cp/parser.c:17311
-+#: cp/parser.c:17321
- #, gcc-internal-format
- msgid "opaque-enum-specifier without name"
- msgstr ""
-
--#: cp/parser.c:17314
-+#: cp/parser.c:17324
- #, gcc-internal-format
- msgid "opaque-enum-specifier must use a simple identifier"
- msgstr ""
-
--#: cp/parser.c:17492
-+#: cp/parser.c:17502
- #, gcc-internal-format
- msgid "%qD is not a namespace-name"
- msgstr ""
-
--#: cp/parser.c:17493
-+#: cp/parser.c:17503
- #, gcc-internal-format
- msgid "expected namespace-name"
- msgstr ""
-
--#: cp/parser.c:17571
-+#: cp/parser.c:17581
- #, gcc-internal-format
- msgid "a nested namespace definition cannot have attributes"
- msgstr ""
-
--#: cp/parser.c:17574
-+#: cp/parser.c:17584
- #, gcc-internal-format
- msgid ""
- "nested namespace definitions only available with -std=c++1z or -std=gnu++1z"
- msgstr ""
-
--#: cp/parser.c:17577
-+#: cp/parser.c:17587
- #, gcc-internal-format
- msgid "a nested namespace definition cannot be inline"
- msgstr ""
-
--#: cp/parser.c:17585
-+#: cp/parser.c:17595
- #, gcc-internal-format
- msgid "nested identifier required"
- msgstr ""
-
--#: cp/parser.c:17613
-+#: cp/parser.c:17623
- #, gcc-internal-format
- msgid "namespace %qD entered"
- msgstr ""
-
--#: cp/parser.c:17665
-+#: cp/parser.c:17675
- #, gcc-internal-format
- msgid "%<namespace%> definition is not allowed here"
- msgstr ""
-
--#: cp/parser.c:17820
-+#: cp/parser.c:17830
- #, gcc-internal-format
- msgid "a template-id may not appear in a using-declaration"
- msgstr ""
-
--#: cp/parser.c:17866
-+#: cp/parser.c:17876
- #, gcc-internal-format
- msgid ""
- "access declarations are deprecated in favour of using-declarations; "
-@@ -43013,78 +43102,78 @@
- "suggestion: add the %<using%> keyword"
- msgstr ""
-
--#: cp/parser.c:17931
-+#: cp/parser.c:17941
- #, gcc-internal-format
- msgid "types may not be defined in alias template declarations"
- msgstr ""
-
--#: cp/parser.c:18084
-+#: cp/parser.c:18094
- #, gcc-internal-format
- msgid "%<asm%> in %<constexpr%> function"
- msgstr ""
-
--#: cp/parser.c:18450
-+#: cp/parser.c:18460
- #, gcc-internal-format
- msgid "a function-definition is not allowed here"
- msgstr ""
-
--#: cp/parser.c:18461
-+#: cp/parser.c:18471
- #, gcc-internal-format
- msgid "an asm-specification is not allowed on a function-definition"
- msgstr ""
-
--#: cp/parser.c:18465
-+#: cp/parser.c:18475
- #, gcc-internal-format
- msgid "attributes are not allowed on a function-definition"
- msgstr ""
-
--#: cp/parser.c:18516
-+#: cp/parser.c:18526
- #, gcc-internal-format
- msgid "expected constructor, destructor, or type conversion"
- msgstr ""
-
- #. Anything else is an error.
--#: cp/parser.c:18555 cp/parser.c:20812
-+#: cp/parser.c:18565 cp/parser.c:20822
- #, gcc-internal-format
- msgid "expected initializer"
- msgstr ""
-
--#: cp/parser.c:18636
-+#: cp/parser.c:18646
- #, gcc-internal-format
- msgid "initializer provided for function"
- msgstr ""
-
--#: cp/parser.c:18670
-+#: cp/parser.c:18680
- #, gcc-internal-format
- msgid "attributes after parenthesized initializer ignored"
- msgstr ""
-
--#: cp/parser.c:18675
-+#: cp/parser.c:18685
- #, gcc-internal-format
- msgid "non-function %qD declared as implicit template"
- msgstr ""
-
--#: cp/parser.c:19124
-+#: cp/parser.c:19134
- #, gcc-internal-format
- msgid "array bound is not an integer constant"
- msgstr ""
-
--#: cp/parser.c:19250
-+#: cp/parser.c:19260
- #, gcc-internal-format
- msgid "cannot define member of dependent typedef %qT"
- msgstr ""
-
--#: cp/parser.c:19254
-+#: cp/parser.c:19264
- #, gcc-internal-format
- msgid "%<%T::%E%> is not a type"
- msgstr ""
-
--#: cp/parser.c:19282
-+#: cp/parser.c:19292
- #, gcc-internal-format
- msgid "invalid use of constructor as a template"
- msgstr ""
-
--#: cp/parser.c:19284
-+#: cp/parser.c:19294
- #, gcc-internal-format
- msgid ""
- "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified "
-@@ -43095,7 +43184,7 @@
- #. here because we do not have enough
- #. information about its original syntactic
- #. form.
--#: cp/parser.c:19301
-+#: cp/parser.c:19311
- #, gcc-internal-format
- msgid "invalid declarator"
- msgstr ""
-@@ -43102,187 +43191,187 @@
-
- #. But declarations with qualified-ids can't appear in a
- #. function.
--#: cp/parser.c:19371
-+#: cp/parser.c:19381
- #, gcc-internal-format
- msgid "qualified-id in declaration"
- msgstr ""
-
--#: cp/parser.c:19396
-+#: cp/parser.c:19406
- #, gcc-internal-format
- msgid "expected declarator"
- msgstr ""
-
--#: cp/parser.c:19499
-+#: cp/parser.c:19509
- #, gcc-internal-format
- msgid "%qD is a namespace"
- msgstr ""
-
--#: cp/parser.c:19501
-+#: cp/parser.c:19511
- #, gcc-internal-format
- msgid "cannot form pointer to member of non-class %q#T"
- msgstr ""
-
--#: cp/parser.c:19522
-+#: cp/parser.c:19532
- #, gcc-internal-format
- msgid "expected ptr-operator"
- msgstr ""
-
--#: cp/parser.c:19581
-+#: cp/parser.c:19591
- #, gcc-internal-format
- msgid "duplicate cv-qualifier"
- msgstr ""
-
--#: cp/parser.c:19635
-+#: cp/parser.c:19645
- #, gcc-internal-format
- msgid "multiple ref-qualifiers"
- msgstr ""
-
--#: cp/parser.c:19672
-+#: cp/parser.c:19682
- #, gcc-internal-format
- msgid "%E requires %<-fgnu-tm%>"
- msgstr ""
-
--#: cp/parser.c:19728
-+#: cp/parser.c:19738
- #, gcc-internal-format
- msgid "duplicate virt-specifier"
- msgstr ""
-
--#: cp/parser.c:19958 cp/typeck2.c:529 cp/typeck2.c:1953
-+#: cp/parser.c:19968 cp/typeck2.c:529 cp/typeck2.c:1953
- #, gcc-internal-format
- msgid "invalid use of %<auto%>"
- msgstr ""
-
--#: cp/parser.c:19979
-+#: cp/parser.c:19989
- #, gcc-internal-format
- msgid "types may not be defined in template arguments"
- msgstr ""
-
--#: cp/parser.c:19984
-+#: cp/parser.c:19994
- #, gcc-internal-format
- msgid "invalid use of %<auto%> in template argument"
- msgstr ""
-
--#: cp/parser.c:20072
-+#: cp/parser.c:20082
- #, gcc-internal-format
- msgid "expected type-specifier"
- msgstr ""
-
--#: cp/parser.c:20378
-+#: cp/parser.c:20388
- #, gcc-internal-format
- msgid "expected %<,%> or %<...%>"
- msgstr ""
-
--#: cp/parser.c:20453
-+#: cp/parser.c:20463
- #, gcc-internal-format
- msgid "types may not be defined in parameter types"
- msgstr ""
-
--#: cp/parser.c:20605
-+#: cp/parser.c:20615
- #, gcc-internal-format
- msgid "default arguments are only permitted for function parameters"
- msgstr ""
-
--#: cp/parser.c:20623
-+#: cp/parser.c:20633
- #, gcc-internal-format
- msgid "parameter pack %qD cannot have a default argument"
- msgstr ""
-
--#: cp/parser.c:20629
-+#: cp/parser.c:20639
- #, gcc-internal-format
- msgid "template parameter pack cannot have a default argument"
- msgstr ""
-
--#: cp/parser.c:20631
-+#: cp/parser.c:20641
- #, gcc-internal-format
- msgid "parameter pack cannot have a default argument"
- msgstr ""
-
--#: cp/parser.c:21015
-+#: cp/parser.c:21025
- #, gcc-internal-format
- msgid "ISO C++ does not allow designated initializers"
- msgstr ""
-
--#: cp/parser.c:21029
-+#: cp/parser.c:21039
- #, gcc-internal-format
- msgid "ISO C++ does not allow C99 designated initializers"
- msgstr ""
-
--#: cp/parser.c:21149 cp/parser.c:21275
-+#: cp/parser.c:21159 cp/parser.c:21285
- #, gcc-internal-format
- msgid "expected class-name"
- msgstr ""
-
--#: cp/parser.c:21462
-+#: cp/parser.c:21472
- #, gcc-internal-format
- msgid "expected %<;%> after class definition"
- msgstr ""
-
--#: cp/parser.c:21464
-+#: cp/parser.c:21474
- #, gcc-internal-format
- msgid "expected %<;%> after struct definition"
- msgstr ""
-
--#: cp/parser.c:21466
-+#: cp/parser.c:21476
- #, gcc-internal-format
- msgid "expected %<;%> after union definition"
- msgstr ""
-
--#: cp/parser.c:21805
-+#: cp/parser.c:21815
- #, gcc-internal-format
- msgid "expected %<{%> or %<:%>"
- msgstr ""
-
--#: cp/parser.c:21816
-+#: cp/parser.c:21826
- #, gcc-internal-format
- msgid "cannot specify %<override%> for a class"
- msgstr ""
-
--#: cp/parser.c:21824
-+#: cp/parser.c:21834
- #, gcc-internal-format
- msgid "global qualification of class name is invalid"
- msgstr ""
-
--#: cp/parser.c:21831
-+#: cp/parser.c:21841
- #, gcc-internal-format
- msgid "qualified name does not name a class"
- msgstr ""
-
--#: cp/parser.c:21843
-+#: cp/parser.c:21853
- #, gcc-internal-format
- msgid "invalid class name in declaration of %qD"
- msgstr ""
-
--#: cp/parser.c:21876
-+#: cp/parser.c:21886
- #, gcc-internal-format
- msgid "extra qualification not allowed"
- msgstr ""
-
--#: cp/parser.c:21888
-+#: cp/parser.c:21898
- #, gcc-internal-format
- msgid "an explicit specialization must be preceded by %<template <>%>"
- msgstr ""
-
--#: cp/parser.c:21918
-+#: cp/parser.c:21928
- #, gcc-internal-format
- msgid "function template %qD redeclared as a class template"
- msgstr ""
-
--#: cp/parser.c:21949
-+#: cp/parser.c:21959
- #, gcc-internal-format
- msgid "could not resolve typename type"
- msgstr ""
-
--#: cp/parser.c:22005
-+#: cp/parser.c:22015
- #, gcc-internal-format
- msgid "previous definition of %q+#T"
- msgstr ""
-
--#: cp/parser.c:22096 cp/parser.c:27030
-+#: cp/parser.c:22106 cp/parser.c:27045
- #, gcc-internal-format
- msgid "expected class-key"
- msgstr ""
-
--#: cp/parser.c:22120
-+#: cp/parser.c:22130
- #, gcc-internal-format
- msgid ""
- "ISO C++ forbids typename key in template template parameter; use -std=c++1z "
-@@ -43289,67 +43378,67 @@
- "or -std=gnu++1z"
- msgstr ""
-
--#: cp/parser.c:22124
-+#: cp/parser.c:22134
- #, gcc-internal-format
- msgid "expected %<class%> or %<typename%>"
- msgstr ""
-
--#: cp/parser.c:22366
-+#: cp/parser.c:22376
- #, gcc-internal-format
- msgid "in C++03 a class-key must be used when declaring a friend"
- msgstr ""
-
--#: cp/parser.c:22384
-+#: cp/parser.c:22394
- #, gcc-internal-format
- msgid "friend declaration does not name a class or function"
- msgstr ""
-
--#: cp/parser.c:22402
-+#: cp/parser.c:22412
- #, gcc-internal-format
- msgid "a storage class on an anonymous aggregate in class scope is not allowed"
- msgstr ""
-
--#: cp/parser.c:22606
-+#: cp/parser.c:22616
- #, gcc-internal-format
- msgid "pure-specifier on function-definition"
- msgstr ""
-
--#: cp/parser.c:22661
-+#: cp/parser.c:22671
- #, gcc-internal-format
- msgid "stray %<,%> at end of member declaration"
- msgstr ""
-
--#: cp/parser.c:22673
-+#: cp/parser.c:22683
- #, gcc-internal-format
- msgid "expected %<;%> at end of member declaration"
- msgstr ""
-
--#: cp/parser.c:22747
-+#: cp/parser.c:22757
- #, gcc-internal-format
- msgid "invalid pure specifier (only %<= 0%> is allowed)"
- msgstr ""
-
--#: cp/parser.c:22782
-+#: cp/parser.c:22792
- #, gcc-internal-format
- msgid "a brace-enclosed initializer is not allowed here"
- msgstr ""
-
--#: cp/parser.c:22911
-+#: cp/parser.c:22921
- #, gcc-internal-format
- msgid "%<virtual%> specified more than once in base-specified"
- msgstr ""
-
--#: cp/parser.c:22931
-+#: cp/parser.c:22941
- #, gcc-internal-format
- msgid "more than one access specifier in base-specified"
- msgstr ""
-
--#: cp/parser.c:22955
-+#: cp/parser.c:22965
- #, gcc-internal-format
- msgid "keyword %<typename%> not allowed outside of templates"
- msgstr ""
-
--#: cp/parser.c:22958
-+#: cp/parser.c:22968
- #, gcc-internal-format
- msgid ""
- "keyword %<typename%> not allowed in this context (the base class is "
-@@ -43356,12 +43445,12 @@
- "implicitly a type)"
- msgstr ""
-
--#: cp/parser.c:23051 cp/parser.c:23133
-+#: cp/parser.c:23061 cp/parser.c:23143
- #, gcc-internal-format
- msgid "types may not be defined in an exception-specification"
- msgstr ""
-
--#: cp/parser.c:23115
-+#: cp/parser.c:23125
- #, gcc-internal-format
- msgid ""
- "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> "
-@@ -43368,62 +43457,67 @@
- "instead"
- msgstr ""
-
--#: cp/parser.c:23175
-+#: cp/parser.c:23185
- #, gcc-internal-format
- msgid "invalid use of %<auto%> in exception-specification"
- msgstr ""
-
--#: cp/parser.c:23214
-+#: cp/parser.c:23224
- #, gcc-internal-format
- msgid "%<try%> in %<constexpr%> function"
- msgstr ""
-
--#: cp/parser.c:23327
-+#: cp/parser.c:23337
- #, gcc-internal-format
- msgid "types may not be defined in exception-declarations"
- msgstr ""
-
--#: cp/parser.c:23939
-+#: cp/parser.c:23949
- #, gcc-internal-format
- msgid "expected an identifier for the attribute name"
- msgstr ""
-
--#: cp/parser.c:23958
-+#: cp/parser.c:23968
- #, gcc-internal-format
- msgid "%<deprecated%> is a C++14 feature; use %<gnu::deprecated%>"
- msgstr ""
-
--#: cp/parser.c:24020
-+#: cp/parser.c:24030
- #, gcc-internal-format
- msgid "attribute noreturn can appear at most once in an attribute-list"
- msgstr ""
-
--#: cp/parser.c:24024
-+#: cp/parser.c:24034
- #, gcc-internal-format
- msgid "attribute deprecated can appear at most once in an attribute-list"
- msgstr ""
-
--#: cp/parser.c:24295
-+#: cp/parser.c:24071
- #, gcc-internal-format
-+msgid "expected attribute before %<...%>"
-+msgstr ""
-+
-+#: cp/parser.c:24309
-+#, gcc-internal-format
- msgid "%<requires%> only available with -fconcepts"
- msgstr ""
-
--#: cp/parser.c:24327
-+#: cp/parser.c:24341
- #, gcc-internal-format
- msgid "a requires expression cannot appear outside a template"
- msgstr ""
-
--#: cp/parser.c:25037
-+#: cp/parser.c:25051
- #, gcc-internal-format
- msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
- msgstr ""
-
--#: cp/parser.c:25042
-+#: cp/parser.c:25056
- #, gcc-internal-format
- msgid "invalid declaration of %<%T::%E%>"
- msgstr ""
-
--#: cp/parser.c:25046
-+#: cp/parser.c:25060
- #, gcc-internal-format
- msgid "too few template-parameter-lists"
- msgstr ""
-@@ -43432,17 +43526,17 @@
- #. something like:
- #.
- #. template <class T> template <class U> void S::f();
--#: cp/parser.c:25053
-+#: cp/parser.c:25067
- #, gcc-internal-format
- msgid "too many template-parameter-lists"
- msgstr ""
-
--#: cp/parser.c:25379
-+#: cp/parser.c:25393
- #, gcc-internal-format
- msgid "named return values are no longer supported"
- msgstr ""
-
--#: cp/parser.c:25544
-+#: cp/parser.c:25559
- #, gcc-internal-format
- msgid ""
- "literal operator template %qD has invalid parameter list. Expected non-type "
-@@ -43449,7 +43543,7 @@
- "template argument pack <char...> or <typename CharT, CharT...>"
- msgstr ""
-
--#: cp/parser.c:25549
-+#: cp/parser.c:25564
- #, gcc-internal-format
- msgid ""
- "literal operator template %qD has invalid parameter list. Expected non-type "
-@@ -43456,355 +43550,355 @@
- "template argument pack <char...>"
- msgstr ""
-
--#: cp/parser.c:25618
-+#: cp/parser.c:25633
- #, gcc-internal-format
- msgid "empty introduction-list"
- msgstr ""
-
--#: cp/parser.c:25642
-+#: cp/parser.c:25657
- #, gcc-internal-format
- msgid "no matching concept for template-introduction"
- msgstr ""
-
--#: cp/parser.c:25664
-+#: cp/parser.c:25679
- #, gcc-internal-format
- msgid "invalid declaration of member template in local class"
- msgstr ""
-
--#: cp/parser.c:25673
-+#: cp/parser.c:25688
- #, gcc-internal-format
- msgid "template with C linkage"
- msgstr ""
-
--#: cp/parser.c:25692
-+#: cp/parser.c:25707
- #, gcc-internal-format
- msgid "invalid explicit specialization"
- msgstr ""
-
--#: cp/parser.c:25796
-+#: cp/parser.c:25811
- #, gcc-internal-format
- msgid "template declaration of %<typedef%>"
- msgstr ""
-
--#: cp/parser.c:25847
-+#: cp/parser.c:25862
- #, gcc-internal-format
- msgid "a class template declaration must not declare anything else"
- msgstr ""
-
--#: cp/parser.c:25893
-+#: cp/parser.c:25908
- #, gcc-internal-format
- msgid "explicit template specialization cannot have a storage class"
- msgstr ""
-
--#: cp/parser.c:26199
-+#: cp/parser.c:26214
- #, gcc-internal-format
- msgid "%<>>%> should be %<> >%> within a nested template argument list"
- msgstr ""
-
--#: cp/parser.c:26212
-+#: cp/parser.c:26227
- #, gcc-internal-format
- msgid "spurious %<>>%>, use %<>%> to terminate a template argument list"
- msgstr ""
-
--#: cp/parser.c:26509
-+#: cp/parser.c:26524
- #, gcc-internal-format
- msgid "%<sizeof...%> argument must be surrounded by parentheses"
- msgstr ""
-
--#: cp/parser.c:26665
-+#: cp/parser.c:26680
- #, gcc-internal-format
- msgid "invalid use of %qD in linkage specification"
- msgstr ""
-
--#: cp/parser.c:26680
-+#: cp/parser.c:26695
- #, gcc-internal-format
- msgid "%<__thread%> before %qD"
- msgstr ""
-
--#: cp/parser.c:26814
-+#: cp/parser.c:26829
- #, gcc-internal-format
- msgid "ISO C++ 1998 does not support %<long long%>"
- msgstr ""
-
--#: cp/parser.c:26822
-+#: cp/parser.c:26837
- #, gcc-internal-format
- msgid "both %<__thread%> and %<thread_local%> specified"
- msgstr ""
-
--#: cp/parser.c:26824
-+#: cp/parser.c:26839
- #, gcc-internal-format
- msgid "duplicate %qD"
- msgstr ""
-
--#: cp/parser.c:26846
-+#: cp/parser.c:26861
- #, gcc-internal-format
- msgid "duplicate %qs"
- msgstr ""
-
--#: cp/parser.c:26888
-+#: cp/parser.c:26903
- #, gcc-internal-format
- msgid "expected %<new%>"
- msgstr ""
-
--#: cp/parser.c:26891
-+#: cp/parser.c:26906
- #, gcc-internal-format
- msgid "expected %<delete%>"
- msgstr ""
-
--#: cp/parser.c:26894
-+#: cp/parser.c:26909
- #, gcc-internal-format
- msgid "expected %<return%>"
- msgstr ""
-
--#: cp/parser.c:26900
-+#: cp/parser.c:26915
- #, gcc-internal-format
- msgid "expected %<extern%>"
- msgstr ""
-
--#: cp/parser.c:26903
-+#: cp/parser.c:26918
- #, gcc-internal-format
- msgid "expected %<static_assert%>"
- msgstr ""
-
--#: cp/parser.c:26906
-+#: cp/parser.c:26921
- #, gcc-internal-format
- msgid "expected %<decltype%>"
- msgstr ""
-
--#: cp/parser.c:26909
-+#: cp/parser.c:26924
- #, gcc-internal-format
- msgid "expected %<operator%>"
- msgstr ""
-
--#: cp/parser.c:26912
-+#: cp/parser.c:26927
- #, gcc-internal-format
- msgid "expected %<class%>"
- msgstr ""
-
--#: cp/parser.c:26915
-+#: cp/parser.c:26930
- #, gcc-internal-format
- msgid "expected %<template%>"
- msgstr ""
-
--#: cp/parser.c:26918
-+#: cp/parser.c:26933
- #, gcc-internal-format
- msgid "expected %<namespace%>"
- msgstr ""
-
--#: cp/parser.c:26921
-+#: cp/parser.c:26936
- #, gcc-internal-format
- msgid "expected %<using%>"
- msgstr ""
-
--#: cp/parser.c:26924
-+#: cp/parser.c:26939
- #, gcc-internal-format
- msgid "expected %<asm%>"
- msgstr ""
-
--#: cp/parser.c:26927
-+#: cp/parser.c:26942
- #, gcc-internal-format
- msgid "expected %<try%>"
- msgstr ""
-
--#: cp/parser.c:26930
-+#: cp/parser.c:26945
- #, gcc-internal-format
- msgid "expected %<catch%>"
- msgstr ""
-
--#: cp/parser.c:26933
-+#: cp/parser.c:26948
- #, gcc-internal-format
- msgid "expected %<throw%>"
- msgstr ""
-
--#: cp/parser.c:26936
-+#: cp/parser.c:26951
- #, gcc-internal-format
- msgid "expected %<__label__%>"
- msgstr ""
-
--#: cp/parser.c:26939
-+#: cp/parser.c:26954
- #, gcc-internal-format
- msgid "expected %<@try%>"
- msgstr ""
-
--#: cp/parser.c:26942
-+#: cp/parser.c:26957
- #, gcc-internal-format
- msgid "expected %<@synchronized%>"
- msgstr ""
-
--#: cp/parser.c:26945
-+#: cp/parser.c:26960
- #, gcc-internal-format
- msgid "expected %<@throw%>"
- msgstr ""
-
--#: cp/parser.c:26948
-+#: cp/parser.c:26963
- #, gcc-internal-format
- msgid "expected %<__transaction_atomic%>"
- msgstr ""
-
--#: cp/parser.c:26951
-+#: cp/parser.c:26966
- #, gcc-internal-format
- msgid "expected %<__transaction_relaxed%>"
- msgstr ""
-
--#: cp/parser.c:26982
-+#: cp/parser.c:26997
- #, gcc-internal-format
- msgid "expected %<::%>"
- msgstr ""
-
--#: cp/parser.c:26994
-+#: cp/parser.c:27009
- #, gcc-internal-format
- msgid "expected %<...%>"
- msgstr ""
-
--#: cp/parser.c:26997
-+#: cp/parser.c:27012
- #, gcc-internal-format
- msgid "expected %<*%>"
- msgstr ""
-
--#: cp/parser.c:27000
-+#: cp/parser.c:27015
- #, gcc-internal-format
- msgid "expected %<~%>"
- msgstr ""
-
--#: cp/parser.c:27006
-+#: cp/parser.c:27021
- #, gcc-internal-format
- msgid "expected %<:%> or %<::%>"
- msgstr ""
-
--#: cp/parser.c:27034
-+#: cp/parser.c:27049
- #, gcc-internal-format
- msgid "expected %<class%>, %<typename%>, or %<template%>"
- msgstr ""
-
--#: cp/parser.c:27295
-+#: cp/parser.c:27310
- #, gcc-internal-format
- msgid "%qs tag used in naming %q#T"
- msgstr ""
-
--#: cp/parser.c:27300
-+#: cp/parser.c:27315
- #, gcc-internal-format
- msgid "%q#T was previously declared here"
- msgstr ""
-
--#: cp/parser.c:27319
-+#: cp/parser.c:27334
- #, gcc-internal-format
- msgid "%qD redeclared with different access"
- msgstr ""
-
--#: cp/parser.c:27340
-+#: cp/parser.c:27355
- #, gcc-internal-format
- msgid ""
- "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
- msgstr ""
-
--#: cp/parser.c:27581
-+#: cp/parser.c:27596
- #, gcc-internal-format
- msgid "file ends in default argument"
- msgstr ""
-
--#: cp/parser.c:27810 cp/parser.c:29119 cp/parser.c:29305
-+#: cp/parser.c:27825 cp/parser.c:29134 cp/parser.c:29320
- #, gcc-internal-format
- msgid "misplaced %<@%D%> Objective-C++ construct"
- msgstr ""
-
--#: cp/parser.c:27879
-+#: cp/parser.c:27894
- #, gcc-internal-format
- msgid "objective-c++ message receiver expected"
- msgstr ""
-
--#: cp/parser.c:27949
-+#: cp/parser.c:27964
- #, gcc-internal-format
- msgid "objective-c++ message argument(s) are expected"
- msgstr ""
-
--#: cp/parser.c:27979
-+#: cp/parser.c:27994
- #, gcc-internal-format
- msgid "%<@encode%> must specify a type as an argument"
- msgstr ""
-
--#: cp/parser.c:28385
-+#: cp/parser.c:28400
- #, gcc-internal-format
- msgid "invalid Objective-C++ selector name"
- msgstr ""
-
--#: cp/parser.c:28460 cp/parser.c:28478
-+#: cp/parser.c:28475 cp/parser.c:28493
- #, gcc-internal-format
- msgid "objective-c++ method declaration is expected"
- msgstr ""
-
--#: cp/parser.c:28472 cp/parser.c:28537
-+#: cp/parser.c:28487 cp/parser.c:28552
- #, gcc-internal-format
- msgid "method attributes must be specified at the end"
- msgstr ""
-
--#: cp/parser.c:28580
-+#: cp/parser.c:28595
- #, gcc-internal-format
- msgid "stray %qs between Objective-C++ methods"
- msgstr ""
-
--#: cp/parser.c:28786 cp/parser.c:28793 cp/parser.c:28800
-+#: cp/parser.c:28801 cp/parser.c:28808 cp/parser.c:28815
- #, gcc-internal-format
- msgid "invalid type for instance variable"
- msgstr ""
-
--#: cp/parser.c:28913
-+#: cp/parser.c:28928
- #, gcc-internal-format
- msgid "identifier expected after %<@protocol%>"
- msgstr ""
-
--#: cp/parser.c:29084
-+#: cp/parser.c:29099
- #, gcc-internal-format
- msgid ""
- "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
- msgstr ""
-
--#: cp/parser.c:29091
-+#: cp/parser.c:29106
- #, gcc-internal-format
- msgid "prefix attributes are ignored before %<@%D%>"
- msgstr ""
-
--#: cp/parser.c:29364 cp/parser.c:29371 cp/parser.c:29378
-+#: cp/parser.c:29379 cp/parser.c:29386 cp/parser.c:29393
- #, gcc-internal-format
- msgid "invalid type for property"
- msgstr ""
-
--#: cp/parser.c:30502
-+#: cp/parser.c:30517
- #, gcc-internal-format
- msgid "%<wait%> expression must be integral"
- msgstr ""
-
--#: cp/parser.c:31196
-+#: cp/parser.c:31211
- #, gcc-internal-format
- msgid "invalid reduction-identifier"
- msgstr ""
-
--#: cp/parser.c:33394
-+#: cp/parser.c:33409
- #, gcc-internal-format
- msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
- msgstr ""
-
--#: cp/parser.c:33397
-+#: cp/parser.c:33412
- #, gcc-internal-format
- msgid "parenthesized initialization is not allowed in for-loop"
- msgstr ""
-
--#: cp/parser.c:33467
-+#: cp/parser.c:33482
- #, gcc-internal-format
- msgid ""
- "%<_Cilk_for%> allows expression instead of declaration only in C, not in C++"
- msgstr ""
-
--#: cp/parser.c:33695 cp/pt.c:15033
-+#: cp/parser.c:33710 cp/pt.c:15033
- #, gcc-internal-format
- msgid "iteration variable %qD should not be reduction"
- msgstr ""
-
--#: cp/parser.c:33780
-+#: cp/parser.c:33795
- #, gcc-internal-format
- msgid "not enough collapsed for loops"
- msgstr ""
-
--#: cp/parser.c:34064
-+#: cp/parser.c:34079
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp ordered%> with %<depend%> clause may only be used in compound "
-@@ -43811,7 +43905,7 @@
- "statements"
- msgstr ""
-
--#: cp/parser.c:34857
-+#: cp/parser.c:34872
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp target exit data%> with map-type other than %<from%>, %<release"
-@@ -43818,7 +43912,7 @@
- "%> or %<delete%> on %<map%> clause"
- msgstr ""
-
--#: cp/parser.c:35720
-+#: cp/parser.c:35735
- #, gcc-internal-format
- msgid ""
- "%<#pragma omp declare simd%> of %<simd%> attribute cannot be used in the "
-@@ -43825,7 +43919,7 @@
- "same function marked as a Cilk Plus SIMD-enabled function"
- msgstr ""
-
--#: cp/parser.c:35730
-+#: cp/parser.c:35745
- #, gcc-internal-format
- msgid ""
- "vector attribute not immediately followed by a single function declaration "
-@@ -43832,23 +43926,23 @@
- "or definition"
- msgstr ""
-
--#: cp/parser.c:36024
-+#: cp/parser.c:36039
- #, gcc-internal-format
- msgid "invalid initializer clause"
- msgstr ""
-
--#: cp/parser.c:36052
-+#: cp/parser.c:36067
- #, gcc-internal-format
- msgid "expected id-expression (arguments)"
- msgstr ""
-
--#: cp/parser.c:36064
-+#: cp/parser.c:36079
- #, gcc-internal-format
- msgid ""
- "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>"
- msgstr ""
-
--#: cp/parser.c:36145
-+#: cp/parser.c:36160
- #, gcc-internal-format
- msgid ""
- "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or "
-@@ -43855,27 +43949,27 @@
- "identifier"
- msgstr ""
-
--#: cp/parser.c:36164
-+#: cp/parser.c:36179
- #, gcc-internal-format
- msgid "types may not be defined in declare reduction type list"
- msgstr ""
-
--#: cp/parser.c:36186 cp/semantics.c:5354
-+#: cp/parser.c:36201 cp/semantics.c:5355
- #, gcc-internal-format
- msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>"
- msgstr ""
-
--#: cp/parser.c:36191 cp/semantics.c:5363
-+#: cp/parser.c:36206 cp/semantics.c:5364
- #, gcc-internal-format
- msgid "function or array type %qT in %<#pragma omp declare reduction%>"
- msgstr ""
-
--#: cp/parser.c:36194 cp/pt.c:11889 cp/semantics.c:5369
-+#: cp/parser.c:36209 cp/pt.c:11889 cp/semantics.c:5370
- #, gcc-internal-format
- msgid "reference type %qT in %<#pragma omp declare reduction%>"
- msgstr ""
-
--#: cp/parser.c:36197 cp/semantics.c:5375
-+#: cp/parser.c:36212 cp/semantics.c:5376
- #, gcc-internal-format
- msgid ""
- "const, volatile or __restrict qualified type %qT in %<#pragma omp declare "
-@@ -43882,83 +43976,83 @@
- "reduction%>"
- msgstr ""
-
--#: cp/parser.c:36579
-+#: cp/parser.c:36594
- #, gcc-internal-format
- msgid "%<#pragma acc routine%> names a set of overloads"
- msgstr ""
-
--#: cp/parser.c:36588
-+#: cp/parser.c:36603
- #, gcc-internal-format
- msgid "%<#pragma acc routine%> does not refer to a namespace scope function"
- msgstr ""
-
--#: cp/parser.c:36597
-+#: cp/parser.c:36612
- #, gcc-internal-format
- msgid "%<#pragma acc routine%> does not refer to a function"
- msgstr ""
-
- #. cancel-and-throw is unimplemented.
--#: cp/parser.c:36935
-+#: cp/parser.c:36950
- #, gcc-internal-format
- msgid "atomic_cancel"
- msgstr ""
-
--#: cp/parser.c:36978 cp/semantics.c:8583
-+#: cp/parser.c:36993 cp/semantics.c:8584
- #, gcc-internal-format
- msgid "%<__transaction_relaxed%> without transactional memory support enabled"
- msgstr ""
-
--#: cp/parser.c:36980 cp/semantics.c:8585
-+#: cp/parser.c:36995 cp/semantics.c:8586
- #, gcc-internal-format
- msgid "%<__transaction_atomic%> without transactional memory support enabled"
- msgstr ""
-
--#: cp/parser.c:37176
-+#: cp/parser.c:37191
- #, gcc-internal-format
- msgid "junk at end of %<#pragma GCC pch_preprocess%>"
- msgstr ""
-
--#: cp/parser.c:37209
-+#: cp/parser.c:37224
- #, gcc-internal-format
- msgid "invalid grainsize for _Cilk_for"
- msgstr ""
-
--#: cp/parser.c:37418
-+#: cp/parser.c:37433
- #, gcc-internal-format
- msgid "%<#pragma GCC ivdep%> must be inside a function"
- msgstr ""
-
--#: cp/parser.c:37439
-+#: cp/parser.c:37454
- #, gcc-internal-format
- msgid "%<#pragma simd%> must be inside a function"
- msgstr ""
-
--#: cp/parser.c:37451
-+#: cp/parser.c:37466
- #, gcc-internal-format
- msgid "%<#pragma cilk grainsize%> must be inside a function"
- msgstr ""
-
--#: cp/parser.c:37463
-+#: cp/parser.c:37478
- #, gcc-internal-format
- msgid "-fcilkplus must be enabled to use %<#pragma cilk grainsize%>"
- msgstr ""
-
--#: cp/parser.c:37520
-+#: cp/parser.c:37535
- #, gcc-internal-format
- msgid "inter-module optimizations not implemented for C++"
- msgstr ""
-
--#: cp/parser.c:37630
-+#: cp/parser.c:37645
- #, gcc-internal-format
- msgid "expected variable-name"
- msgstr ""
-
--#: cp/parser.c:37694
-+#: cp/parser.c:37709
- #, gcc-internal-format
- msgid "expected %<,%> or %<)%> after %qE"
- msgstr ""
-
--#: cp/parser.c:38093
-+#: cp/parser.c:38108
- #, gcc-internal-format
- msgid "implicit templates may not be %<virtual%>"
- msgstr ""
-@@ -44052,7 +44146,7 @@
- msgid "candidate is: %#D"
- msgstr ""
-
--#: cp/pt.c:1948 cp/semantics.c:5223
-+#: cp/pt.c:1948 cp/semantics.c:5224
- #, gcc-internal-format
- msgid "%s %#D"
- msgstr ""
-@@ -45076,82 +45170,82 @@
- msgid " trying to instantiate %qD"
- msgstr ""
-
--#: cp/pt.c:21083
-+#: cp/pt.c:21087
- #, gcc-internal-format
- msgid "ambiguous template instantiation for %q#T"
- msgstr ""
-
--#: cp/pt.c:21085
-+#: cp/pt.c:21089
- #, gcc-internal-format
- msgid "ambiguous template instantiation for %q#D"
- msgstr ""
-
--#: cp/pt.c:21091
-+#: cp/pt.c:21095
- msgid "%s %#S"
- msgstr ""
-
--#: cp/pt.c:21115 cp/pt.c:21202
-+#: cp/pt.c:21119 cp/pt.c:21206
- #, gcc-internal-format
- msgid "explicit instantiation of non-template %q#D"
- msgstr ""
-
--#: cp/pt.c:21134
-+#: cp/pt.c:21138
- #, gcc-internal-format
- msgid "%qD is not a static data member of a class template"
- msgstr ""
-
--#: cp/pt.c:21140 cp/pt.c:21197
-+#: cp/pt.c:21144 cp/pt.c:21201
- #, gcc-internal-format
- msgid "no matching template for %qD found"
- msgstr ""
-
--#: cp/pt.c:21145
-+#: cp/pt.c:21149
- #, gcc-internal-format
- msgid ""
- "type %qT for explicit instantiation %qD does not match declared type %qT"
- msgstr ""
-
--#: cp/pt.c:21153
-+#: cp/pt.c:21157
- #, gcc-internal-format
- msgid "explicit instantiation of %q#D"
- msgstr ""
-
--#: cp/pt.c:21189
-+#: cp/pt.c:21193
- #, gcc-internal-format
- msgid "duplicate explicit instantiation of %q#D"
- msgstr ""
-
--#: cp/pt.c:21212 cp/pt.c:21309
-+#: cp/pt.c:21216 cp/pt.c:21313
- #, gcc-internal-format
- msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
- msgstr ""
-
--#: cp/pt.c:21217 cp/pt.c:21326
-+#: cp/pt.c:21221 cp/pt.c:21330
- #, gcc-internal-format
- msgid "storage class %qD applied to template instantiation"
- msgstr ""
-
--#: cp/pt.c:21285
-+#: cp/pt.c:21289
- #, gcc-internal-format
- msgid "explicit instantiation of non-class template %qD"
- msgstr ""
-
--#: cp/pt.c:21287
-+#: cp/pt.c:21291
- #, gcc-internal-format
- msgid "explicit instantiation of non-template type %qT"
- msgstr ""
-
--#: cp/pt.c:21296
-+#: cp/pt.c:21300
- #, gcc-internal-format
- msgid "explicit instantiation of %q#T before definition of template"
- msgstr ""
-
--#: cp/pt.c:21314
-+#: cp/pt.c:21318
- #, gcc-internal-format
- msgid "ISO C++ forbids the use of %qE on explicit instantiations"
- msgstr ""
-
--#: cp/pt.c:21360
-+#: cp/pt.c:21364
- #, gcc-internal-format
- msgid "duplicate explicit instantiation of %q#T"
- msgstr ""
-@@ -45163,12 +45257,12 @@
- #. member function or static data member of a class template
- #. shall be present in every translation unit in which it is
- #. explicitly instantiated.
--#: cp/pt.c:21912
-+#: cp/pt.c:21917
- #, gcc-internal-format
- msgid "explicit instantiation of %qD but no definition available"
- msgstr ""
-
--#: cp/pt.c:22144
-+#: cp/pt.c:22149
- #, gcc-internal-format
- msgid ""
- "template instantiation depth exceeds maximum of %d instantiating %q+D, "
-@@ -45176,17 +45270,17 @@
- "the maximum)"
- msgstr ""
-
--#: cp/pt.c:22486
-+#: cp/pt.c:22491
- #, gcc-internal-format
- msgid "invalid template non-type parameter"
- msgstr ""
-
--#: cp/pt.c:22488
-+#: cp/pt.c:22493
- #, gcc-internal-format
- msgid "%q#T is not a valid type for a template non-type parameter"
- msgstr ""
-
--#: cp/pt.c:23854
-+#: cp/pt.c:23856
- #, gcc-internal-format
- msgid ""
- "deducing from brace-enclosed initializer list requires #include "
-@@ -45193,12 +45287,12 @@
- "<initializer_list>"
- msgstr ""
-
--#: cp/pt.c:24018
-+#: cp/pt.c:24020
- #, gcc-internal-format
- msgid "direct-list-initialization of %<auto%> requires exactly one element"
- msgstr ""
-
--#: cp/pt.c:24021
-+#: cp/pt.c:24023
- #, gcc-internal-format
- msgid ""
- "for deduction to %<std::initializer_list%>, use copy-list-initialization (i."
-@@ -45205,37 +45299,37 @@
- "e. add %<=%> before the %<{%>)"
- msgstr ""
-
--#: cp/pt.c:24045
-+#: cp/pt.c:24047
- #, gcc-internal-format
- msgid "%qT as type rather than plain %<decltype(auto)%>"
- msgstr ""
-
--#: cp/pt.c:24080
-+#: cp/pt.c:24082
- #, gcc-internal-format
- msgid "unable to deduce lambda return type from %qE"
- msgstr ""
-
--#: cp/pt.c:24082
-+#: cp/pt.c:24084
- #, gcc-internal-format
- msgid "unable to deduce %qT from %qE"
- msgstr ""
-
--#: cp/pt.c:24114
-+#: cp/pt.c:24116
- #, gcc-internal-format
- msgid "placeholder constraints not satisfied"
- msgstr ""
-
--#: cp/pt.c:24117
-+#: cp/pt.c:24119
- #, gcc-internal-format
- msgid "deduced initializer does not satisfy placeholder constraints"
- msgstr ""
-
--#: cp/pt.c:24121
-+#: cp/pt.c:24123
- #, gcc-internal-format
- msgid "deduced return type does not satisfy placeholder constraints"
- msgstr ""
-
--#: cp/pt.c:24125
-+#: cp/pt.c:24127
- #, gcc-internal-format
- msgid "deduced expression type does not saatisy placeholder constraints"
- msgstr ""
-@@ -45454,53 +45548,53 @@
- msgid "compound literal of non-object type %qT"
- msgstr ""
-
--#: cp/semantics.c:2801
-+#: cp/semantics.c:2802
- #, gcc-internal-format
- msgid "template type parameters must use the keyword %<class%> or %<typename%>"
- msgstr ""
-
--#: cp/semantics.c:2851
-+#: cp/semantics.c:2852
- #, gcc-internal-format
- msgid ""
- "invalid use of type %qT as a default value for a template template-parameter"
- msgstr ""
-
--#: cp/semantics.c:2854
-+#: cp/semantics.c:2855
- #, gcc-internal-format
- msgid "invalid default argument for a template template parameter"
- msgstr ""
-
--#: cp/semantics.c:2871
-+#: cp/semantics.c:2872
- #, gcc-internal-format
- msgid "definition of %q#T inside template parameter list"
- msgstr ""
-
--#: cp/semantics.c:2902
-+#: cp/semantics.c:2903
- #, gcc-internal-format
- msgid "invalid definition of qualified type %qT"
- msgstr ""
-
--#: cp/semantics.c:3182
-+#: cp/semantics.c:3183
- #, gcc-internal-format
- msgid "invalid base-class specification"
- msgstr ""
-
--#: cp/semantics.c:3341
-+#: cp/semantics.c:3342
- #, gcc-internal-format
- msgid "cannot capture member %qD of anonymous union"
- msgstr ""
-
--#: cp/semantics.c:3354 cp/semantics.c:9266
-+#: cp/semantics.c:3355 cp/semantics.c:9267
- #, gcc-internal-format
- msgid "%qD is not captured"
- msgstr ""
-
--#: cp/semantics.c:3359
-+#: cp/semantics.c:3360
- #, gcc-internal-format
- msgid "the lambda has no capture-default"
- msgstr ""
-
--#: cp/semantics.c:3361
-+#: cp/semantics.c:3362
- #, gcc-internal-format
- msgid ""
- "lambda in local class %q+T cannot capture variables from the enclosing "
-@@ -45507,17 +45601,17 @@
- "context"
- msgstr ""
-
--#: cp/semantics.c:3372
-+#: cp/semantics.c:3373
- #, gcc-internal-format
- msgid "use of local variable with automatic storage from containing function"
- msgstr ""
-
--#: cp/semantics.c:3373
-+#: cp/semantics.c:3374
- #, gcc-internal-format
- msgid "use of parameter from containing function"
- msgstr ""
-
--#: cp/semantics.c:3541
-+#: cp/semantics.c:3542
- #, gcc-internal-format
- msgid ""
- "template parameter %qD of type %qT is not allowed in an integral constant "
-@@ -45524,49 +45618,49 @@
- "expression because it is not of integral or enumeration type"
- msgstr ""
-
--#: cp/semantics.c:3628
-+#: cp/semantics.c:3629
- #, gcc-internal-format
- msgid "use of namespace %qD as expression"
- msgstr ""
-
--#: cp/semantics.c:3633
-+#: cp/semantics.c:3634
- #, gcc-internal-format
- msgid "use of class template %qT as expression"
- msgstr ""
-
- #. Ambiguous reference to base members.
--#: cp/semantics.c:3639
-+#: cp/semantics.c:3640
- #, gcc-internal-format
- msgid "request for member %qD is ambiguous in multiple inheritance lattice"
- msgstr ""
-
--#: cp/semantics.c:3665
-+#: cp/semantics.c:3666
- #, gcc-internal-format
- msgid "%qD cannot appear in a constant-expression"
- msgstr ""
-
--#: cp/semantics.c:3790
-+#: cp/semantics.c:3791
- #, gcc-internal-format
- msgid "type of %qE is unknown"
- msgstr ""
-
--#: cp/semantics.c:3818
-+#: cp/semantics.c:3819
- #, gcc-internal-format
- msgid "%qT is not an enumeration type"
- msgstr ""
-
- #. Parameter packs can only be used in templates
--#: cp/semantics.c:3973
-+#: cp/semantics.c:3974
- #, gcc-internal-format
- msgid "Parameter pack __bases only valid in template declaration"
- msgstr ""
-
--#: cp/semantics.c:4002
-+#: cp/semantics.c:4003
- #, gcc-internal-format
- msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
- msgstr ""
-
--#: cp/semantics.c:4011
-+#: cp/semantics.c:4012
- #, gcc-internal-format
- msgid ""
- "second operand of %<offsetof%> is neither a single identifier nor a sequence "
-@@ -45573,44 +45667,44 @@
- "of member accesses and array references"
- msgstr ""
-
--#: cp/semantics.c:4019
-+#: cp/semantics.c:4020
- #, gcc-internal-format
- msgid "cannot apply %<offsetof%> to member function %qD"
- msgstr ""
-
--#: cp/semantics.c:4035
-+#: cp/semantics.c:4036
- #, gcc-internal-format
- msgid "offsetof within non-standard-layout type %qT is undefined"
- msgstr ""
-
--#: cp/semantics.c:4544 cp/semantics.c:6001 cp/semantics.c:6057
--#: cp/semantics.c:6096 cp/semantics.c:6447 cp/semantics.c:6546
--#: cp/semantics.c:6686
-+#: cp/semantics.c:4545 cp/semantics.c:6002 cp/semantics.c:6058
-+#: cp/semantics.c:6097 cp/semantics.c:6448 cp/semantics.c:6547
-+#: cp/semantics.c:6687
- #, gcc-internal-format
- msgid "%<this%> allowed in OpenMP only in %<declare simd%> clauses"
- msgstr ""
-
--#: cp/semantics.c:5220
-+#: cp/semantics.c:5221
- #, gcc-internal-format
- msgid "user defined reduction lookup is ambiguous"
- msgstr ""
-
--#: cp/semantics.c:5493
-+#: cp/semantics.c:5494
- #, gcc-internal-format
- msgid "%qE in %<reduction%> clause is a zero size array"
- msgstr ""
-
--#: cp/semantics.c:5541
-+#: cp/semantics.c:5542
- #, gcc-internal-format
- msgid "%qE has const type for %<reduction%>"
- msgstr ""
-
--#: cp/semantics.c:5653
-+#: cp/semantics.c:5654
- #, gcc-internal-format
- msgid "user defined reduction with constructor initializer for base class %qT"
- msgstr ""
-
--#: cp/semantics.c:5875
-+#: cp/semantics.c:5876
- #, gcc-internal-format
- msgid ""
- "linear clause with %qs modifier applied to non-reference variable with %qT "
-@@ -45617,123 +45711,123 @@
- "type"
- msgstr ""
-
--#: cp/semantics.c:5888
-+#: cp/semantics.c:5889
- #, gcc-internal-format
- msgid ""
- "linear clause applied to non-integral non-pointer variable with %qT type"
- msgstr ""
-
--#: cp/semantics.c:5909
-+#: cp/semantics.c:5910
- #, gcc-internal-format
- msgid "linear step expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6012
-+#: cp/semantics.c:6013
- #, gcc-internal-format
- msgid "%qD is not a variable in clause %qs"
- msgstr ""
-
--#: cp/semantics.c:6068
-+#: cp/semantics.c:6069
- #, gcc-internal-format
- msgid "%qD is not a variable in clause %<firstprivate%>"
- msgstr ""
-
--#: cp/semantics.c:6107
-+#: cp/semantics.c:6108
- #, gcc-internal-format
- msgid "%qD is not a variable in clause %<lastprivate%>"
- msgstr ""
-
--#: cp/semantics.c:6152
-+#: cp/semantics.c:6153
- #, gcc-internal-format
- msgid "%<gang%> static expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6166
-+#: cp/semantics.c:6167
- #, gcc-internal-format
- msgid "%<gang%> static value must bepositive"
- msgstr ""
-
--#: cp/semantics.c:6198
-+#: cp/semantics.c:6199
- #, gcc-internal-format
- msgid "%<gang%> num expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6201
-+#: cp/semantics.c:6202
- #, gcc-internal-format
- msgid "%<vector%> length expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6205
-+#: cp/semantics.c:6206
- #, gcc-internal-format
- msgid "%<worker%> num expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6209
-+#: cp/semantics.c:6210
- #, gcc-internal-format
- msgid "%qs expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6227
-+#: cp/semantics.c:6228
- #, gcc-internal-format
- msgid "%<gang%> num value must be positive"
- msgstr ""
-
--#: cp/semantics.c:6231
-+#: cp/semantics.c:6232
- #, gcc-internal-format
- msgid "%<vector%> length value must bepositive"
- msgstr ""
-
--#: cp/semantics.c:6236
-+#: cp/semantics.c:6237
- #, gcc-internal-format
- msgid "%<worker%> num value must bepositive"
- msgstr ""
-
--#: cp/semantics.c:6241
-+#: cp/semantics.c:6242
- #, gcc-internal-format
- msgid "%qs value must be positive"
- msgstr ""
-
--#: cp/semantics.c:6288
-+#: cp/semantics.c:6289
- #, gcc-internal-format
- msgid "schedule chunk size expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6320
-+#: cp/semantics.c:6321
- #, gcc-internal-format
- msgid "%qs length expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6333
-+#: cp/semantics.c:6334
- #, gcc-internal-format
- msgid "%qs length expression must be positive constant integer expression"
- msgstr ""
-
--#: cp/semantics.c:6352
-+#: cp/semantics.c:6353
- #, gcc-internal-format
- msgid "%<async%> expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6380
-+#: cp/semantics.c:6381
- #, gcc-internal-format
- msgid "%<thread_limit%> expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6409
-+#: cp/semantics.c:6410
- #, gcc-internal-format
- msgid "%<device%> id must be integral"
- msgstr ""
-
--#: cp/semantics.c:6430
-+#: cp/semantics.c:6431
- #, gcc-internal-format
- msgid "%<dist_schedule%> chunk size expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6457
-+#: cp/semantics.c:6458
- #, gcc-internal-format
- msgid "%qD is not a variable in %<aligned%> clause"
- msgstr ""
-
--#: cp/semantics.c:6471
-+#: cp/semantics.c:6472
- #, gcc-internal-format
- msgid ""
- "%qE in %<aligned%> clause is neither a pointer nor an array nor a reference "
-@@ -45740,47 +45834,47 @@
- "to pointer or array"
- msgstr ""
-
--#: cp/semantics.c:6477
-+#: cp/semantics.c:6478
- #, gcc-internal-format
- msgid "%qD appears more than once in %<aligned%> clauses"
- msgstr ""
-
--#: cp/semantics.c:6490
-+#: cp/semantics.c:6491
- #, gcc-internal-format
- msgid "%<aligned%> clause alignment expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6539
-+#: cp/semantics.c:6540
- #, gcc-internal-format
- msgid "%qD is not a variable in %<depend%> clause"
- msgstr ""
-
--#: cp/semantics.c:6813
-+#: cp/semantics.c:6814
- #, gcc-internal-format
- msgid "overloaded function name %qE in clause %qs"
- msgstr ""
-
--#: cp/semantics.c:6817
-+#: cp/semantics.c:6818
- #, gcc-internal-format
- msgid "template %qE in clause %qs"
- msgstr ""
-
--#: cp/semantics.c:6882
-+#: cp/semantics.c:6883
- #, gcc-internal-format
- msgid "%<grainsize%> expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6911
-+#: cp/semantics.c:6912
- #, gcc-internal-format
- msgid "%<priority%> expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6940
-+#: cp/semantics.c:6941
- #, gcc-internal-format
- msgid "%<num_tasks%> expression must be integral"
- msgstr ""
-
--#: cp/semantics.c:6969
-+#: cp/semantics.c:6970
- #, gcc-internal-format
- msgid ""
- "%qs variable is neither a pointer, nor an arraynor reference to pointer or "
-@@ -45787,67 +45881,67 @@
- "array"
- msgstr ""
-
--#: cp/semantics.c:7425
-+#: cp/semantics.c:7426
- #, gcc-internal-format
- msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
- msgstr ""
-
--#: cp/semantics.c:7439
-+#: cp/semantics.c:7440
- #, gcc-internal-format
- msgid "%<threadprivate%> %qE directive not in %qT definition"
- msgstr ""
-
--#: cp/semantics.c:7644
-+#: cp/semantics.c:7645
- #, gcc-internal-format
- msgid "difference between %qE and %qD does not have integer type"
- msgstr ""
-
--#: cp/semantics.c:8064
-+#: cp/semantics.c:8065
- #, gcc-internal-format
- msgid "%<#pragma omp simd%> used with class iteration variable %qE"
- msgstr ""
-
--#: cp/semantics.c:8406 cp/semantics.c:8416
-+#: cp/semantics.c:8407 cp/semantics.c:8417
- #, gcc-internal-format
- msgid "%<#pragma omp atomic update%> uses two different expressions for memory"
- msgstr ""
-
--#: cp/semantics.c:8709
-+#: cp/semantics.c:8710
- #, gcc-internal-format
- msgid "static assertion failed"
- msgstr ""
-
--#: cp/semantics.c:8711
-+#: cp/semantics.c:8712
- #, gcc-internal-format, gfc-internal-format
- msgid "static assertion failed: %s"
- msgstr ""
-
--#: cp/semantics.c:8716
-+#: cp/semantics.c:8717
- #, gcc-internal-format
- msgid "non-constant condition for static assertion"
- msgstr ""
-
--#: cp/semantics.c:8746
-+#: cp/semantics.c:8747
- #, gcc-internal-format
- msgid "argument to decltype must be an expression"
- msgstr ""
-
--#: cp/semantics.c:8774
-+#: cp/semantics.c:8775
- #, gcc-internal-format
- msgid "decltype cannot resolve address of overloaded function"
- msgstr ""
-
--#: cp/semantics.c:9305
-+#: cp/semantics.c:9306
- #, gcc-internal-format
- msgid "operand of fold expression has no unexpanded parameter packs"
- msgstr ""
-
--#: cp/semantics.c:9358
-+#: cp/semantics.c:9359
- #, gcc-internal-format
- msgid "both arguments in binary fold have unexpanded parameter packs"
- msgstr ""
-
--#: cp/semantics.c:9360
-+#: cp/semantics.c:9361
- #, gcc-internal-format
- msgid "no unexpanded parameter packs in binary fold"
- msgstr ""
-@@ -46727,32 +46821,32 @@
- msgid "in passing argument %P of %qD"
- msgstr ""
-
--#: cp/typeck.c:8581
-+#: cp/typeck.c:8582
- #, gcc-internal-format
- msgid "returning reference to temporary"
- msgstr ""
-
--#: cp/typeck.c:8588
-+#: cp/typeck.c:8589
- #, gcc-internal-format
- msgid "reference to non-lvalue returned"
- msgstr ""
-
--#: cp/typeck.c:8603
-+#: cp/typeck.c:8604
- #, gcc-internal-format
- msgid "reference to local variable %qD returned"
- msgstr ""
-
--#: cp/typeck.c:8607
-+#: cp/typeck.c:8608
- #, gcc-internal-format
- msgid "address of label %qD returned"
- msgstr ""
-
--#: cp/typeck.c:8611
-+#: cp/typeck.c:8612
- #, gcc-internal-format
- msgid "address of local variable %qD returned"
- msgstr ""
-
--#: cp/typeck.c:8657
-+#: cp/typeck.c:8658
- #, gcc-internal-format
- msgid "returning a value from a destructor"
- msgstr ""
-@@ -46759,44 +46853,44 @@
-
- #. If a return statement appears in a handler of the
- #. function-try-block of a constructor, the program is ill-formed.
--#: cp/typeck.c:8665
-+#: cp/typeck.c:8666
- #, gcc-internal-format
- msgid "cannot return from a handler of a function-try-block of a constructor"
- msgstr ""
-
- #. You can't return a value from a constructor.
--#: cp/typeck.c:8668
-+#: cp/typeck.c:8669
- #, gcc-internal-format
- msgid "returning a value from a constructor"
- msgstr ""
-
- #. Give a helpful error message.
--#: cp/typeck.c:8698 cp/typeck.c:8744
-+#: cp/typeck.c:8699 cp/typeck.c:8745
- #, gcc-internal-format
- msgid "return-statement with no value, in function returning %qT"
- msgstr ""
-
--#: cp/typeck.c:8706
-+#: cp/typeck.c:8707
- #, gcc-internal-format
- msgid "returning initializer list"
- msgstr ""
-
--#: cp/typeck.c:8725
-+#: cp/typeck.c:8726
- #, gcc-internal-format
- msgid "inconsistent types %qT and %qT deduced for lambda return type"
- msgstr ""
-
--#: cp/typeck.c:8728
-+#: cp/typeck.c:8729
- #, gcc-internal-format
- msgid "inconsistent deduction for auto return type: %qT and then %qT"
- msgstr ""
-
--#: cp/typeck.c:8763
-+#: cp/typeck.c:8764
- #, gcc-internal-format
- msgid "return-statement with a value, in function returning 'void'"
- msgstr ""
-
--#: cp/typeck.c:8793
-+#: cp/typeck.c:8794
- #, gcc-internal-format
- msgid ""
- "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -"
-@@ -46804,12 +46898,12 @@
- msgstr ""
-
- #. Make this a permerror because we used to accept it.
--#: cp/typeck.c:9402
-+#: cp/typeck.c:9403
- #, gcc-internal-format
- msgid "using temporary as lvalue"
- msgstr ""
-
--#: cp/typeck.c:9404
-+#: cp/typeck.c:9405
- #, gcc-internal-format
- msgid "using xvalue (rvalue reference) as lvalue"
- msgstr ""
-@@ -47370,10 +47464,10 @@
- msgid "Array reference at %C cannot have more than %d dimensions"
- msgstr ""
-
--#: fortran/array.c:213 fortran/array.c:625 fortran/check.c:2642
--#: fortran/check.c:4950 fortran/check.c:4988 fortran/check.c:5030
--#: fortran/check.c:5229 fortran/match.c:1802 fortran/match.c:2909
--#: fortran/match.c:3104 fortran/match.c:3300 fortran/simplify.c:4737
-+#: fortran/array.c:213 fortran/array.c:625 fortran/check.c:2649
-+#: fortran/check.c:4957 fortran/check.c:4995 fortran/check.c:5037
-+#: fortran/check.c:5236 fortran/match.c:1802 fortran/match.c:2997
-+#: fortran/match.c:3192 fortran/match.c:3388 fortran/simplify.c:4740
- #, gcc-internal-format
- msgid "Coarrays disabled at %C, use %<-fcoarray=%> to enable"
- msgstr ""
-@@ -47498,47 +47592,52 @@
- msgid "DO-iterator %qs at %L is inside iterator of the same name"
- msgstr ""
-
--#: fortran/array.c:1037 fortran/array.c:1217
-+#: fortran/array.c:1037 fortran/array.c:1233
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in array constructor at %C"
- msgstr ""
-
--#: fortran/array.c:1090
-+#: fortran/array.c:1091
- #, gcc-internal-format, gfc-internal-format
- msgid "[...] style array constructors at %C"
- msgstr ""
-
--#: fortran/array.c:1113
-+#: fortran/array.c:1114
- #, gcc-internal-format, gfc-internal-format
- msgid "Array constructor including type specification at %C"
- msgstr ""
-
--#: fortran/array.c:1122 fortran/match.c:3730
-+#: fortran/array.c:1123 fortran/match.c:3818
- #, gcc-internal-format, gfc-internal-format
- msgid "Type-spec at %L cannot contain a deferred type parameter"
- msgstr ""
-
--#: fortran/array.c:1149
-+#: fortran/array.c:1132
- #, gcc-internal-format, gfc-internal-format
-+msgid "Type-spec at %L cannot contain an asterisk for a type parameter"
-+msgstr ""
-+
-+#: fortran/array.c:1159
-+#, gcc-internal-format, gfc-internal-format
- msgid "Empty array constructor at %C is not allowed"
- msgstr ""
-
--#: fortran/array.c:1188 fortran/array.c:1198
-+#: fortran/array.c:1196 fortran/array.c:1206
- #, gcc-internal-format, gfc-internal-format
- msgid "Incompatible typespec for array element at %L"
- msgstr ""
-
--#: fortran/array.c:1264
-+#: fortran/array.c:1280
- #, gcc-internal-format, gfc-internal-format
- msgid "Element in %s array constructor at %L is %s"
- msgstr ""
-
--#: fortran/array.c:1595
-+#: fortran/array.c:1611
- #, gcc-internal-format, gfc-internal-format
- msgid "Iterator step at %L cannot be zero"
- msgstr ""
-
--#: fortran/array.c:1732
-+#: fortran/array.c:1748
- #, gcc-internal-format
- msgid ""
- "The number of elements in the array constructor at %L requires an increase "
-@@ -47545,22 +47644,22 @@
- "of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
- msgstr ""
-
--#: fortran/array.c:1902
-+#: fortran/array.c:1918
- #, gcc-internal-format, gfc-internal-format
- msgid "AC-IMPLIED-DO initial expression references control variable at %L"
- msgstr ""
-
--#: fortran/array.c:1909
-+#: fortran/array.c:1925
- #, gcc-internal-format, gfc-internal-format
- msgid "AC-IMPLIED-DO final expression references control variable at %L"
- msgstr ""
-
--#: fortran/array.c:1916
-+#: fortran/array.c:1932
- #, gcc-internal-format, gfc-internal-format
- msgid "AC-IMPLIED-DO step expression references control variable at %L"
- msgstr ""
-
--#: fortran/array.c:1928
-+#: fortran/array.c:1944
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Array constructor value at %L shall not be unlimited polymorphic [F2008: "
-@@ -47567,37 +47666,37 @@
- "C4106]"
- msgstr ""
-
--#: fortran/array.c:2011
-+#: fortran/array.c:2027
- #, gcc-internal-format, gfc-internal-format
- msgid "Different CHARACTER lengths (%d/%d) in array constructor at %L"
- msgstr ""
-
--#: fortran/array.c:2129
-+#: fortran/array.c:2145
- #, gcc-internal-format
- msgid "spec_dimen_size(): Bad dimension"
- msgstr ""
-
--#: fortran/array.c:2187
-+#: fortran/array.c:2203
- #, gcc-internal-format
- msgid "gfc_ref_dimen_size(): Bad dimension"
- msgstr ""
-
--#: fortran/array.c:2317
-+#: fortran/array.c:2333
- #, gcc-internal-format
- msgid "gfc_ref_dimen_size(): Bad dimen_type"
- msgstr ""
-
--#: fortran/array.c:2368
-+#: fortran/array.c:2384
- #, gcc-internal-format
- msgid "gfc_array_dimen_size(): Bad dimension"
- msgstr ""
-
--#: fortran/array.c:2413
-+#: fortran/array.c:2429
- #, gcc-internal-format
- msgid "gfc_array_dimen_size(): Bad EXPR_ARRAY expr"
- msgstr ""
-
--#: fortran/array.c:2557
-+#: fortran/array.c:2573
- #, gcc-internal-format
- msgid "gfc_find_array_ref(): No ref found"
- msgstr ""
-@@ -47618,162 +47717,162 @@
- msgid "%qs argument of %qs intrinsic at %L must be %s"
- msgstr ""
-
--#: fortran/check.c:89
-+#: fortran/check.c:96
- #, gcc-internal-format
--msgid "%qs argument of %qs intrinsic at %L must be a numeric type"
-+msgid "%qs argument of %qs intrinsic at %L must have a numeric type"
- msgstr ""
-
--#: fortran/check.c:104
-+#: fortran/check.c:111
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be INTEGER or REAL"
- msgstr ""
-
--#: fortran/check.c:121
-+#: fortran/check.c:128
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be REAL or COMPLEX"
- msgstr ""
-
--#: fortran/check.c:138
-+#: fortran/check.c:145
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
- msgstr ""
-
--#: fortran/check.c:167 fortran/check.c:6373
-+#: fortran/check.c:174 fortran/check.c:6380
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be a constant"
- msgstr ""
-
--#: fortran/check.c:176
-+#: fortran/check.c:183
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid kind for %s at %L"
- msgstr ""
-
--#: fortran/check.c:195
-+#: fortran/check.c:202
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be double precision"
- msgstr ""
-
--#: fortran/check.c:218
-+#: fortran/check.c:225
- #, gcc-internal-format
- msgid "Expected coarray variable as %qs argument to the %s intrinsic at %L"
- msgstr ""
-
--#: fortran/check.c:235
-+#: fortran/check.c:242
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be a logical array"
- msgstr ""
-
--#: fortran/check.c:261
-+#: fortran/check.c:268
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be an array"
- msgstr ""
-
--#: fortran/check.c:282
-+#: fortran/check.c:289
- #, gcc-internal-format
- msgid "%qs at %L must be nonnegative"
- msgstr ""
-
--#: fortran/check.c:313
-+#: fortran/check.c:320
- #, gcc-internal-format
- msgid ""
- "The absolute value of SHIFT at %L must be less than or equal to BIT_SIZE(%qs)"
- msgstr ""
-
--#: fortran/check.c:324
-+#: fortran/check.c:331
- #, gcc-internal-format
- msgid "%qs at %L must be less than or equal to BIT_SIZE(%qs)"
- msgstr ""
-
--#: fortran/check.c:334
-+#: fortran/check.c:341
- #, gcc-internal-format
- msgid "%qs at %L must be less than BIT_SIZE(%qs)"
- msgstr ""
-
--#: fortran/check.c:361
-+#: fortran/check.c:368
- #, gcc-internal-format
- msgid ""
- "%qs at %L must be less than or equal to the BIT_SIZE of INTEGER(KIND=%d)"
- msgstr ""
-
--#: fortran/check.c:387
-+#: fortran/check.c:394
- #, gcc-internal-format
- msgid "%<%s + %s%> at %L must be less than or equal to BIT_SIZE(%qs)"
- msgstr ""
-
--#: fortran/check.c:413
-+#: fortran/check.c:420
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must be the same type and kind as %qs"
- msgstr ""
-
--#: fortran/check.c:430
-+#: fortran/check.c:437
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be of rank %d"
- msgstr ""
-
--#: fortran/check.c:445
-+#: fortran/check.c:452
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must not be OPTIONAL"
- msgstr ""
-
--#: fortran/check.c:466
-+#: fortran/check.c:473
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be ALLOCATABLE"
- msgstr ""
-
--#: fortran/check.c:484
-+#: fortran/check.c:491
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be of kind %d"
- msgstr ""
-
--#: fortran/check.c:522
-+#: fortran/check.c:529
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L cannot be INTENT(IN)"
- msgstr ""
-
--#: fortran/check.c:543
-+#: fortran/check.c:550
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be a variable"
- msgstr ""
-
--#: fortran/check.c:592
-+#: fortran/check.c:599
- #, gcc-internal-format
- msgid ""
- "%<dim%> argument of %qs intrinsic at %L is not a valid codimension index"
- msgstr ""
-
--#: fortran/check.c:642
-+#: fortran/check.c:649
- #, gcc-internal-format
- msgid "%<dim%> argument of %qs intrinsic at %L is not a valid dimension index"
- msgstr ""
-
--#: fortran/check.c:745
-+#: fortran/check.c:752
- #, gcc-internal-format, gfc-internal-format
- msgid "Unequal character lengths (%ld/%ld) in %s at %L"
- msgstr ""
-
--#: fortran/check.c:867 fortran/check.c:6317
-+#: fortran/check.c:874 fortran/check.c:6324
- #, gcc-internal-format
- msgid "%qs and %qs arguments of %qs intrinsic at %L must have the same type"
- msgstr ""
-
--#: fortran/check.c:876 fortran/check.c:2279 fortran/check.c:2405
--#: fortran/check.c:2479 fortran/check.c:2906
-+#: fortran/check.c:883 fortran/check.c:2286 fortran/check.c:2412
-+#: fortran/check.c:2486 fortran/check.c:2913
- #, gcc-internal-format, gfc-internal-format
- msgid "Different type kinds at %L"
- msgstr ""
-
--#: fortran/check.c:912
-+#: fortran/check.c:919
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be a POINTER"
- msgstr ""
-
--#: fortran/check.c:921 fortran/check.c:957 fortran/check.c:3424
-+#: fortran/check.c:928 fortran/check.c:964 fortran/check.c:3431
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:939
-+#: fortran/check.c:946
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must be a pointer or target VARIABLE or "
-@@ -47780,12 +47879,12 @@
- "FUNCTION"
- msgstr ""
-
--#: fortran/check.c:948
-+#: fortran/check.c:955
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be a POINTER or a TARGET"
- msgstr ""
-
--#: fortran/check.c:973
-+#: fortran/check.c:980
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Array section with a vector subscript at %L shall not be the target of a "
-@@ -47792,7 +47891,7 @@
- "pointer"
- msgstr ""
-
--#: fortran/check.c:984
-+#: fortran/check.c:991
- #, gcc-internal-format
- msgid ""
- "NULL pointer at %L is not permitted as actual argument of %qs intrinsic "
-@@ -47799,7 +47898,7 @@
- "function"
- msgstr ""
-
--#: fortran/check.c:1027
-+#: fortran/check.c:1034
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "ATOM argument at %L to intrinsic function %s shall be an integer of "
-@@ -47806,7 +47905,7 @@
- "ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND"
- msgstr ""
-
--#: fortran/check.c:1035
-+#: fortran/check.c:1042
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "ATOM argument at %L of the %s intrinsic function shall be a coarray or "
-@@ -47813,23 +47912,23 @@
- "coindexed"
- msgstr ""
-
--#: fortran/check.c:1042
-+#: fortran/check.c:1049
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L shall have the same type as %qs at %L"
- msgstr ""
-
--#: fortran/check.c:1060 fortran/check.c:1205
-+#: fortran/check.c:1067 fortran/check.c:1212
- #, gcc-internal-format, gfc-internal-format
- msgid "STAT= argument to %s at %L"
- msgstr ""
-
--#: fortran/check.c:1079 fortran/check.c:1145 fortran/check.c:1242
-+#: fortran/check.c:1086 fortran/check.c:1152 fortran/check.c:1249
- #, gcc-internal-format, gfc-internal-format
- msgid "ATOM argument of the %s intrinsic function at %L shall be definable"
- msgstr ""
-
--#: fortran/check.c:1093 fortran/check.c:1225
-+#: fortran/check.c:1100 fortran/check.c:1232
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "ATOM argument at %L to intrinsic function %s shall be an integer of "
-@@ -47836,29 +47935,29 @@
- "ATOMIC_INT_KIND"
- msgstr ""
-
--#: fortran/check.c:1113
-+#: fortran/check.c:1120
- #, gcc-internal-format, gfc-internal-format
- msgid "VALUE argument of the %s intrinsic function at %L shall be definable"
- msgstr ""
-
--#: fortran/check.c:1152 fortran/check.c:1249
-+#: fortran/check.c:1159 fortran/check.c:1256
- #, gcc-internal-format, gfc-internal-format
- msgid "OLD argument of the %s intrinsic function at %L shall be definable"
- msgstr ""
-
--#: fortran/check.c:1167
-+#: fortran/check.c:1174
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "EVENT argument at %L to the intrinsic EVENT_QUERY shall be of type EVENT_TYPE"
- msgstr ""
-
--#: fortran/check.c:1177
-+#: fortran/check.c:1184
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "COUNT argument of the EVENT_QUERY intrinsic function at %L shall be definable"
- msgstr ""
-
--#: fortran/check.c:1190
-+#: fortran/check.c:1197
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "COUNT argument of the EVENT_QUERY intrinsic function at %L shall have at "
-@@ -47865,18 +47964,18 @@
- "least the range of the default integer"
- msgstr ""
-
--#: fortran/check.c:1269
-+#: fortran/check.c:1276
- #, gcc-internal-format, gfc-internal-format
- msgid "Negative argument N at %L"
- msgstr ""
-
--#: fortran/check.c:1441 fortran/check.c:1898
-+#: fortran/check.c:1448 fortran/check.c:1905
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must not be present if %<x%> is COMPLEX"
- msgstr ""
-
--#: fortran/check.c:1450 fortran/check.c:1907
-+#: fortran/check.c:1457 fortran/check.c:1914
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must have a type of either REAL or "
-@@ -47883,7 +47982,7 @@
- "INTEGER"
- msgstr ""
-
--#: fortran/check.c:1464 fortran/check.c:1470
-+#: fortran/check.c:1471 fortran/check.c:1477
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Conversion from %s to default-kind COMPLEX(%d) at %L might lose precision, "
-@@ -47890,7 +47989,7 @@
- "consider using the KIND argument"
- msgstr ""
-
--#: fortran/check.c:1492
-+#: fortran/check.c:1499
- #, gcc-internal-format
- msgid ""
- "Argument %<A%> with INTENT(INOUT) at %L of the intrinsic subroutine %s shall "
-@@ -47897,27 +47996,27 @@
- "not have a vector subscript"
- msgstr ""
-
--#: fortran/check.c:1500
-+#: fortran/check.c:1507
- #, gcc-internal-format, gfc-internal-format
- msgid "The A argument at %L to the intrinsic %s shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:1523
-+#: fortran/check.c:1530
- #, gcc-internal-format, gfc-internal-format
- msgid "The stat= argument at %L must be a kind=4 integer variable"
- msgstr ""
-
--#: fortran/check.c:1539
-+#: fortran/check.c:1546
- #, gcc-internal-format, gfc-internal-format
- msgid "The errmsg= argument at %L must be a default-kind character variable"
- msgstr ""
-
--#: fortran/check.c:1547
-+#: fortran/check.c:1554
- #, gcc-internal-format
- msgid "Coarrays disabled at %L, use %<-fcoarray=%> to enable"
- msgstr ""
-
--#: fortran/check.c:1562
-+#: fortran/check.c:1569
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Support for the A argument at %L which is polymorphic A argument or has "
-@@ -47924,12 +48023,12 @@
- "allocatable components is not yet implemented"
- msgstr ""
-
--#: fortran/check.c:1581
-+#: fortran/check.c:1588
- #, gcc-internal-format, gfc-internal-format
- msgid "The A argument at %L of CO_REDUCE shall not be polymorphic"
- msgstr ""
-
--#: fortran/check.c:1588
-+#: fortran/check.c:1595
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Support for the A argument at %L with allocatable components is not yet "
-@@ -47936,7 +48035,7 @@
- "implemented"
- msgstr ""
-
--#: fortran/check.c:1602
-+#: fortran/check.c:1609
- #, gcc-internal-format, gfc-internal-format
- msgid "OPERATOR argument at %L must be a PURE function"
- msgstr ""
-@@ -47944,17 +48043,17 @@
- #. None of the intrinsics fulfills the criteria of taking two arguments,
- #. returning the same type and kind as the arguments and being permitted
- #. as actual argument.
--#: fortran/check.c:1612
-+#: fortran/check.c:1619
- #, gcc-internal-format, gfc-internal-format
- msgid "Intrinsic function %s at %L is not permitted for CO_REDUCE"
- msgstr ""
-
--#: fortran/check.c:1629
-+#: fortran/check.c:1636
- #, gcc-internal-format, gfc-internal-format
- msgid "The function passed as OPERATOR at %L shall have two arguments"
- msgstr ""
-
--#: fortran/check.c:1639
-+#: fortran/check.c:1646
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "A argument at %L has type %s but the function passed as OPERATOR at %L "
-@@ -47961,7 +48060,7 @@
- "returns %s"
- msgstr ""
-
--#: fortran/check.c:1648
-+#: fortran/check.c:1655
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function passed as OPERATOR at %L has arguments of type %s and %s but "
-@@ -47968,7 +48067,7 @@
- "shall have type %s"
- msgstr ""
-
--#: fortran/check.c:1659
-+#: fortran/check.c:1666
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function passed as OPERATOR at %L shall have scalar nonallocatable "
-@@ -47975,7 +48074,7 @@
- "nonpointer arguments and return a nonallocatable nonpointer scalar"
- msgstr ""
-
--#: fortran/check.c:1667
-+#: fortran/check.c:1674
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function passed as OPERATOR at %L shall have the VALUE attribute either "
-@@ -47982,7 +48081,7 @@
- "for none or both arguments"
- msgstr ""
-
--#: fortran/check.c:1674
-+#: fortran/check.c:1681
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function passed as OPERATOR at %L shall have the TARGET attribute either "
-@@ -47989,7 +48088,7 @@
- "for none or both arguments"
- msgstr ""
-
--#: fortran/check.c:1681
-+#: fortran/check.c:1688
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function passed as OPERATOR at %L shall have the ASYNCHRONOUS attribute "
-@@ -47996,7 +48095,7 @@
- "either for none or both arguments"
- msgstr ""
-
--#: fortran/check.c:1689
-+#: fortran/check.c:1696
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function passed as OPERATOR at %L shall not have the OPTIONAL attribute "
-@@ -48003,7 +48102,7 @@
- "for either of the arguments"
- msgstr ""
-
--#: fortran/check.c:1719
-+#: fortran/check.c:1726
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The character length of the A argument at %L and of the arguments of the "
-@@ -48010,7 +48109,7 @@
- "OPERATOR at %L shall be the same"
- msgstr ""
-
--#: fortran/check.c:1726
-+#: fortran/check.c:1733
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The character length of the A argument at %L and of the function result of "
-@@ -48017,7 +48116,7 @@
- "the OPERATOR at %L shall be the same"
- msgstr ""
-
--#: fortran/check.c:1744
-+#: fortran/check.c:1751
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L shall be of type integer, real or "
-@@ -48024,15 +48123,15 @@
- "character"
- msgstr ""
-
--#: fortran/check.c:1792 fortran/check.c:2324 fortran/check.c:2427
--#: fortran/check.c:2628 fortran/check.c:2673 fortran/check.c:3984
--#: fortran/check.c:4118 fortran/check.c:4173 fortran/check.c:5215
--#: fortran/check.c:5344
-+#: fortran/check.c:1799 fortran/check.c:2331 fortran/check.c:2434
-+#: fortran/check.c:2635 fortran/check.c:2680 fortran/check.c:3991
-+#: fortran/check.c:4125 fortran/check.c:4180 fortran/check.c:5222
-+#: fortran/check.c:5351
- #, gcc-internal-format
- msgid "%qs intrinsic with KIND argument at %L"
- msgstr ""
-
--#: fortran/check.c:1839 fortran/check.c:2090
-+#: fortran/check.c:1846 fortran/check.c:2097
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L has invalid shape in dimension %d (%ld/"
-@@ -48039,115 +48138,115 @@
- "%ld)"
- msgstr ""
-
--#: fortran/check.c:1854 fortran/check.c:2105 fortran/check.c:2133
-+#: fortran/check.c:1861 fortran/check.c:2112 fortran/check.c:2140
- #, gcc-internal-format
- msgid "%qs argument of intrinsic %qs at %L of must have rank %d or be a scalar"
- msgstr ""
-
--#: fortran/check.c:1957 fortran/check.c:3000 fortran/check.c:3008
-+#: fortran/check.c:1964 fortran/check.c:3007 fortran/check.c:3015
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be numeric or LOGICAL"
- msgstr ""
-
--#: fortran/check.c:1971
-+#: fortran/check.c:1978
- #, gcc-internal-format
- msgid ""
- "Different shape for arguments %qs and %qs at %L for intrinsic %<dot_product%>"
- msgstr ""
-
--#: fortran/check.c:1991 fortran/check.c:1999
-+#: fortran/check.c:1998 fortran/check.c:2006
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be default real"
- msgstr ""
-
--#: fortran/check.c:2020
-+#: fortran/check.c:2027
- #, gcc-internal-format
- msgid "%<I%> at %L and %<J%>' at %L cannot both be BOZ literal constants"
- msgstr ""
-
--#: fortran/check.c:2151
-+#: fortran/check.c:2158
- #, gcc-internal-format, gfc-internal-format
- msgid "non-default INTEGER kind argument to %s intrinsic at %L"
- msgstr ""
-
--#: fortran/check.c:2211
-+#: fortran/check.c:2218
- #, gcc-internal-format
- msgid "COMPLEX argument %qs of %qs intrinsic at %L"
- msgstr ""
-
--#: fortran/check.c:2375
-+#: fortran/check.c:2382
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of %s at %L must be of length one"
- msgstr ""
-
--#: fortran/check.c:2434
-+#: fortran/check.c:2441
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be the same kind as %qs"
- msgstr ""
-
--#: fortran/check.c:2524
-+#: fortran/check.c:2531
- #, gcc-internal-format, gfc-internal-format
- msgid "SIZE at %L must be positive"
- msgstr ""
-
--#: fortran/check.c:2536
-+#: fortran/check.c:2543
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The absolute value of SHIFT at %L must be less than or equal to SIZE at %L"
- msgstr ""
-
--#: fortran/check.c:2597
-+#: fortran/check.c:2604
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be of intrinsic type"
- msgstr ""
-
--#: fortran/check.c:2604
-+#: fortran/check.c:2611
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be a data entity"
- msgstr ""
-
--#: fortran/check.c:2815
-+#: fortran/check.c:2822
- #, gcc-internal-format
- msgid "Intrinsic %qs at %L must have at least two arguments"
- msgstr ""
-
--#: fortran/check.c:2863
-+#: fortran/check.c:2870
- #, gcc-internal-format
- msgid "Missing %qs argument to the %s intrinsic at %L"
- msgstr ""
-
--#: fortran/check.c:2878
-+#: fortran/check.c:2885
- #, gcc-internal-format
- msgid "Duplicate argument %qs at %L to intrinsic %s"
- msgstr ""
-
--#: fortran/check.c:2883
-+#: fortran/check.c:2890
- #, gcc-internal-format
- msgid "Unknown argument %qs at %L to intrinsic %s"
- msgstr ""
-
--#: fortran/check.c:2912
-+#: fortran/check.c:2919
- #, gcc-internal-format
- msgid "%<a%d%> argument of %qs intrinsic at %L must be %s(%d)"
- msgstr ""
-
--#: fortran/check.c:2943
-+#: fortran/check.c:2950
- #, gcc-internal-format
- msgid "%qs intrinsic with CHARACTER argument at %L"
- msgstr ""
-
--#: fortran/check.c:2950
-+#: fortran/check.c:2957
- #, gcc-internal-format
- msgid ""
- "%<a1%> argument of %qs intrinsic at %L must be INTEGER, REAL or CHARACTER"
- msgstr ""
-
--#: fortran/check.c:3017
-+#: fortran/check.c:3024
- #, gcc-internal-format
- msgid "Argument types of %qs intrinsic at %L must match (%s/%s)"
- msgstr ""
-
--#: fortran/check.c:3031
-+#: fortran/check.c:3038
- #, gcc-internal-format
- msgid ""
- "Different shape on dimension 1 for arguments %qs and %qs at %L for intrinsic "
-@@ -48154,7 +48253,7 @@
- "matmul"
- msgstr ""
-
--#: fortran/check.c:3050
-+#: fortran/check.c:3057
- #, gcc-internal-format
- msgid ""
- "Different shape on dimension 2 for argument %qs and dimension 1 for argument "
-@@ -48161,27 +48260,27 @@
- "%qs at %L for intrinsic matmul"
- msgstr ""
-
--#: fortran/check.c:3059
-+#: fortran/check.c:3066
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be of rank 1 or 2"
- msgstr ""
-
--#: fortran/check.c:3234
-+#: fortran/check.c:3241
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be INTEGER"
- msgstr ""
-
--#: fortran/check.c:3294
-+#: fortran/check.c:3301
- #, gcc-internal-format, gfc-internal-format
- msgid "The FROM argument to MOVE_ALLOC at %L shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:3305
-+#: fortran/check.c:3312
- #, gcc-internal-format, gfc-internal-format
- msgid "The TO argument to MOVE_ALLOC at %L shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:3312
-+#: fortran/check.c:3319
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The TO arguments in MOVE_ALLOC at %L must be polymorphic if FROM is "
-@@ -48188,7 +48287,7 @@
- "polymorphic"
- msgstr ""
-
--#: fortran/check.c:3323
-+#: fortran/check.c:3330
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the "
-@@ -48195,7 +48294,7 @@
- "same rank %d/%d"
- msgstr ""
-
--#: fortran/check.c:3332
-+#: fortran/check.c:3339
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the "
-@@ -48202,12 +48301,12 @@
- "same corank %d/%d"
- msgstr ""
-
--#: fortran/check.c:3359
-+#: fortran/check.c:3366
- #, gcc-internal-format
- msgid "Argument %<S%> of NEAREST at %L shall not be zero"
- msgstr ""
-
--#: fortran/check.c:3409
-+#: fortran/check.c:3416
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must be a POINTER, ALLOCATABLE or "
-@@ -48214,12 +48313,12 @@
- "procedure pointer"
- msgstr ""
-
--#: fortran/check.c:3417
-+#: fortran/check.c:3424
- #, gcc-internal-format, gfc-internal-format
- msgid "NULL intrinsic with allocatable MOLD at %L"
- msgstr ""
-
--#: fortran/check.c:3496 fortran/check.c:5291
-+#: fortran/check.c:3503 fortran/check.c:5298
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must provide at least as many elements "
-@@ -48226,28 +48325,28 @@
- "as there are .TRUE. values in %qs (%ld/%d)"
- msgstr ""
-
--#: fortran/check.c:3554
-+#: fortran/check.c:3561
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be of a dummy variable"
- msgstr ""
-
--#: fortran/check.c:3562
-+#: fortran/check.c:3569
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must be of an OPTIONAL dummy variable"
- msgstr ""
-
--#: fortran/check.c:3581
-+#: fortran/check.c:3588
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must not be a subobject of %qs"
- msgstr ""
-
--#: fortran/check.c:3629
-+#: fortran/check.c:3636
- #, gcc-internal-format, gfc-internal-format
- msgid "The argument of the RANK intrinsic at %L must be a data object"
- msgstr ""
-
--#: fortran/check.c:3733
-+#: fortran/check.c:3740
- #, gcc-internal-format
- msgid ""
- "%<shape%> argument of %<reshape%> intrinsic at %L must be an array of "
-@@ -48254,39 +48353,39 @@
- "constant size"
- msgstr ""
-
--#: fortran/check.c:3743
-+#: fortran/check.c:3750
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L is empty"
- msgstr ""
-
--#: fortran/check.c:3750
-+#: fortran/check.c:3757
- #, gcc-internal-format
- msgid ""
- "%<shape%> argument of %<reshape%> intrinsic at %L has more than %d elements"
- msgstr ""
-
--#: fortran/check.c:3767
-+#: fortran/check.c:3774
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L has negative element (%d)"
- msgstr ""
-
--#: fortran/check.c:3799
-+#: fortran/check.c:3806
- #, gcc-internal-format, gfc-internal-format
- msgid "Element %d of actual argument of RESHAPE at %L cannot be negative"
- msgstr ""
-
--#: fortran/check.c:3837
-+#: fortran/check.c:3844
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L has wrong number of elements (%d/%d)"
- msgstr ""
-
--#: fortran/check.c:3855
-+#: fortran/check.c:3862
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L has out-of-range dimension (%d)"
- msgstr ""
-
--#: fortran/check.c:3864
-+#: fortran/check.c:3871
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L has invalid permutation of dimensions "
-@@ -48293,7 +48392,7 @@
- "(dimension %qd duplicated)"
- msgstr ""
-
--#: fortran/check.c:3900
-+#: fortran/check.c:3907
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Without padding, there are not enough elements in the intrinsic RESHAPE "
-@@ -48300,27 +48399,27 @@
- "source at %L to match the shape"
- msgstr ""
-
--#: fortran/check.c:3917 fortran/check.c:3936
-+#: fortran/check.c:3924 fortran/check.c:3943
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L cannot be of type %s"
- msgstr ""
-
--#: fortran/check.c:3927 fortran/check.c:3946
-+#: fortran/check.c:3934 fortran/check.c:3953
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be of an extensible type"
- msgstr ""
-
--#: fortran/check.c:4045
-+#: fortran/check.c:4052
- #, gcc-internal-format
- msgid "SELECTED_REAL_KIND with neither %<P%> nor %<R%> argument at %L"
- msgstr ""
-
--#: fortran/check.c:4076
-+#: fortran/check.c:4083
- #, gcc-internal-format
- msgid "%qs intrinsic with RADIX argument at %L"
- msgstr ""
-
--#: fortran/check.c:4111
-+#: fortran/check.c:4118
- #, gcc-internal-format
- msgid ""
- "%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size "
-@@ -48327,33 +48426,33 @@
- "array"
- msgstr ""
-
--#: fortran/check.c:4188 fortran/check.c:6356
-+#: fortran/check.c:4195 fortran/check.c:6363
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L shall not be a procedure"
- msgstr ""
-
--#: fortran/check.c:4201 fortran/check.c:4340 fortran/check.c:6348
-+#: fortran/check.c:4208 fortran/check.c:4347 fortran/check.c:6355
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
- msgstr ""
-
--#: fortran/check.c:4212 fortran/check.c:4352
-+#: fortran/check.c:4219 fortran/check.c:4359
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L shall not be an assumed-size array"
- msgstr ""
-
--#: fortran/check.c:4282
-+#: fortran/check.c:4289
- #, gcc-internal-format
- msgid "is_c_interoperable(): gfc_simplify_expr failed"
- msgstr ""
-
--#: fortran/check.c:4331
-+#: fortran/check.c:4338
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must be an interoperable data entity: %s"
- msgstr ""
-
--#: fortran/check.c:4370
-+#: fortran/check.c:4377
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Argument C_PTR_1 at %L to C_ASSOCIATED shall have the type TYPE(C_PTR) or "
-@@ -48360,7 +48459,7 @@
- "TYPE(C_FUNPTR)"
- msgstr ""
-
--#: fortran/check.c:4384
-+#: fortran/check.c:4391
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Argument C_PTR_2 at %L to C_ASSOCIATED shall have the same type as C_PTR_1: "
-@@ -48367,37 +48466,37 @@
- "%s instead of %s"
- msgstr ""
-
--#: fortran/check.c:4408
-+#: fortran/check.c:4415
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument CPTR at %L to C_F_POINTER shall have the type TYPE(C_PTR)"
- msgstr ""
-
--#: fortran/check.c:4420
-+#: fortran/check.c:4427
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
- msgstr ""
-
--#: fortran/check.c:4427
-+#: fortran/check.c:4434
- #, gcc-internal-format, gfc-internal-format
- msgid "FPTR argument at %L to C_F_POINTER shall not be polymorphic"
- msgstr ""
-
--#: fortran/check.c:4434
-+#: fortran/check.c:4441
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument FPTR at %L to C_F_POINTER shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:4441
-+#: fortran/check.c:4448
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected SHAPE argument at %L to C_F_POINTER with scalar FPTR"
- msgstr ""
-
--#: fortran/check.c:4447
-+#: fortran/check.c:4454
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected SHAPE argument to C_F_POINTER with array FPTR at %L"
- msgstr ""
-
--#: fortran/check.c:4466
-+#: fortran/check.c:4473
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "SHAPE argument at %L to C_F_POINTER must have the same size as the RANK of "
-@@ -48404,69 +48503,69 @@
- "FPTR"
- msgstr ""
-
--#: fortran/check.c:4476
-+#: fortran/check.c:4483
- #, gcc-internal-format, gfc-internal-format
- msgid "Polymorphic FPTR at %L to C_F_POINTER"
- msgstr ""
-
--#: fortran/check.c:4481
-+#: fortran/check.c:4488
- #, gcc-internal-format, gfc-internal-format
- msgid "Noninteroperable array FPTR at %L to C_F_POINTER: %s"
- msgstr ""
-
--#: fortran/check.c:4497
-+#: fortran/check.c:4504
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Argument CPTR at %L to C_F_PROCPOINTER shall have the type TYPE(C_FUNPTR)"
- msgstr ""
-
--#: fortran/check.c:4509
-+#: fortran/check.c:4516
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument FPTR at %L to C_F_PROCPOINTER shall be a procedure pointer"
- msgstr ""
-
--#: fortran/check.c:4516
-+#: fortran/check.c:4523
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument FPTR at %L to C_F_PROCPOINTER shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:4522
-+#: fortran/check.c:4529
- #, gcc-internal-format, gfc-internal-format
- msgid "Noninteroperable procedure pointer at %L to C_F_PROCPOINTER"
- msgstr ""
-
--#: fortran/check.c:4536
-+#: fortran/check.c:4543
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument X at %L to C_FUNLOC shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:4551
-+#: fortran/check.c:4558
- #, gcc-internal-format
- msgid "Function result %qs at %L is invalid as X argument to C_FUNLOC"
- msgstr ""
-
--#: fortran/check.c:4559
-+#: fortran/check.c:4566
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Argument X at %L to C_FUNLOC shall be a procedure or a procedure pointer"
- msgstr ""
-
--#: fortran/check.c:4565
-+#: fortran/check.c:4572
- #, gcc-internal-format, gfc-internal-format
- msgid "Noninteroperable procedure at %L to C_FUNLOC"
- msgstr ""
-
--#: fortran/check.c:4579
-+#: fortran/check.c:4586
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument X at %L to C_LOC shall not be coindexed"
- msgstr ""
-
--#: fortran/check.c:4585
-+#: fortran/check.c:4592
- #, gcc-internal-format, gfc-internal-format
- msgid "X argument at %L to C_LOC shall not be polymorphic"
- msgstr ""
-
--#: fortran/check.c:4596
-+#: fortran/check.c:4603
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Argument X at %L to C_LOC shall have either the POINTER or the TARGET "
-@@ -48473,22 +48572,22 @@
- "attribute"
- msgstr ""
-
--#: fortran/check.c:4604
-+#: fortran/check.c:4611
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument X at %L to C_LOC shall be not be a zero-sized string"
- msgstr ""
-
--#: fortran/check.c:4613
-+#: fortran/check.c:4620
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument at %L to C_LOC shall not be polymorphic"
- msgstr ""
-
--#: fortran/check.c:4620
-+#: fortran/check.c:4627
- #, gcc-internal-format, gfc-internal-format
- msgid "Noninteroperable array at %L as argument to C_LOC: %s"
- msgstr ""
-
--#: fortran/check.c:4631
-+#: fortran/check.c:4638
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Array of interoperable type at %L to C_LOC which is nonallocatable and "
-@@ -48495,32 +48594,32 @@
- "neither assumed size nor explicit size"
- msgstr ""
-
--#: fortran/check.c:4636
-+#: fortran/check.c:4643
- #, gcc-internal-format, gfc-internal-format
- msgid "Array section at %L to C_LOC"
- msgstr ""
-
--#: fortran/check.c:4664
-+#: fortran/check.c:4671
- #, gcc-internal-format, gfc-internal-format
- msgid "non double precision REAL argument to %s intrinsic at %L"
- msgstr ""
-
--#: fortran/check.c:4677
-+#: fortran/check.c:4684
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be less than rank %d"
- msgstr ""
-
--#: fortran/check.c:4696
-+#: fortran/check.c:4703
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L is not a valid dimension index"
- msgstr ""
-
--#: fortran/check.c:4959
-+#: fortran/check.c:4966
- #, gcc-internal-format, gfc-internal-format
- msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
- msgstr ""
-
--#: fortran/check.c:4970
-+#: fortran/check.c:4977
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The number of array elements of the SUB argument to IMAGE_INDEX at %L shall "
-@@ -48527,17 +48626,17 @@
- "be %d (corank) not %d"
- msgstr ""
-
--#: fortran/check.c:5003
-+#: fortran/check.c:5010
- #, gcc-internal-format, gfc-internal-format
- msgid "DISTANCE= argument to NUM_IMAGES at %L"
- msgstr ""
-
--#: fortran/check.c:5016
-+#: fortran/check.c:5023
- #, gcc-internal-format, gfc-internal-format
- msgid "FAILED= argument to NUM_IMAGES at %L"
- msgstr ""
-
--#: fortran/check.c:5039
-+#: fortran/check.c:5046
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "DIM argument without COARRAY argument not allowed for THIS_IMAGE intrinsic "
-@@ -48544,7 +48643,7 @@
- "at %L"
- msgstr ""
-
--#: fortran/check.c:5046
-+#: fortran/check.c:5053
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The DISTANCE argument may not be specified together with the COARRAY or DIM "
-@@ -48551,22 +48650,22 @@
- "argument in intrinsic at %L"
- msgstr ""
-
--#: fortran/check.c:5057
-+#: fortran/check.c:5064
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected DIM argument with noncoarray argument at %L"
- msgstr ""
-
--#: fortran/check.c:5075
-+#: fortran/check.c:5082
- #, gcc-internal-format, gfc-internal-format
- msgid "DISTANCE= argument to THIS_IMAGE at %L"
- msgstr ""
-
--#: fortran/check.c:5155
-+#: fortran/check.c:5162
- #, gcc-internal-format
- msgid "%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be %s"
- msgstr ""
-
--#: fortran/check.c:5183
-+#: fortran/check.c:5190
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < "
-@@ -48573,7 +48672,7 @@
- "result size %ld"
- msgstr ""
-
--#: fortran/check.c:5305
-+#: fortran/check.c:5312
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must have the same rank as %qs or be a "
-@@ -48580,52 +48679,52 @@
- "scalar"
- msgstr ""
-
--#: fortran/check.c:5318
-+#: fortran/check.c:5325
- #, gcc-internal-format
- msgid "%qs and %qs arguments of %qs intrinsic at %L must have identical shape."
- msgstr ""
-
--#: fortran/check.c:5576 fortran/check.c:5608
-+#: fortran/check.c:5583 fortran/check.c:5615
- #, gcc-internal-format
- msgid "Size of %qs argument of %qs intrinsic at %L too small (%i/%i)"
- msgstr ""
-
--#: fortran/check.c:5616
-+#: fortran/check.c:5623
- #, gcc-internal-format, gfc-internal-format
- msgid "Too many arguments to %s at %L"
- msgstr ""
-
--#: fortran/check.c:5634
-+#: fortran/check.c:5641
- #, gcc-internal-format
- msgid "fe_runtime_error string must be null terminated"
- msgstr ""
-
--#: fortran/check.c:5646
-+#: fortran/check.c:5653
- #, gcc-internal-format, gfc-internal-format
- msgid "fe_runtime_error: Wrong number of arguments (%d instead of %d)"
- msgstr ""
-
--#: fortran/check.c:5686
-+#: fortran/check.c:5693
- #, gcc-internal-format, gfc-internal-format
- msgid "COUNT argument to SYSTEM_CLOCK at %L has non-default kind"
- msgstr ""
-
--#: fortran/check.c:5705
-+#: fortran/check.c:5712
- #, gcc-internal-format, gfc-internal-format
- msgid "Real COUNT_RATE argument to SYSTEM_CLOCK at %L"
- msgstr ""
-
--#: fortran/check.c:5715
-+#: fortran/check.c:5722
- #, gcc-internal-format, gfc-internal-format
- msgid "COUNT_RATE argument to SYSTEM_CLOCK at %L has non-default kind"
- msgstr ""
-
--#: fortran/check.c:5732
-+#: fortran/check.c:5739
- #, gcc-internal-format, gfc-internal-format
- msgid "COUNT_MAX argument to SYSTEM_CLOCK at %L has non-default kind"
- msgstr ""
-
--#: fortran/check.c:5949
-+#: fortran/check.c:5956
- #, gcc-internal-format
- msgid ""
- "%qs argument of %qs intrinsic at %L must be of a kind not wider than the "
-@@ -48632,12 +48731,12 @@
- "default kind (%d)"
- msgstr ""
-
--#: fortran/check.c:6301 fortran/check.c:6309
-+#: fortran/check.c:6308 fortran/check.c:6316
- #, gcc-internal-format
- msgid "%qs argument of %qs intrinsic at %L must be INTEGER or LOGICAL"
- msgstr ""
-
--#: fortran/check.c:6340
-+#: fortran/check.c:6347
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, "
-@@ -48644,7 +48743,7 @@
- "because it returns a disassociated pointer"
- msgstr ""
-
--#: fortran/class.c:612
-+#: fortran/class.c:614
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Assumed size polymorphic objects or components, such as that at %C, have not "
-@@ -48653,12 +48752,12 @@
-
- #. Since the extension field is 8 bit wide, we can only have
- #. up to 255 extension levels.
--#: fortran/class.c:723 fortran/decl.c:8717
-+#: fortran/class.c:725 fortran/decl.c:8735
- #, gcc-internal-format
- msgid "Maximum extension level reached with type %qs at %L"
- msgstr ""
-
--#: fortran/class.c:2762 fortran/class.c:2836
-+#: fortran/class.c:2764 fortran/class.c:2838
- #, gcc-internal-format
- msgid "%qs of %qs is PRIVATE at %L"
- msgstr ""
-@@ -48733,107 +48832,107 @@
- msgid "Symbol %qs must be a PARAMETER in DATA statement at %C"
- msgstr ""
-
--#: fortran/decl.c:421
-+#: fortran/decl.c:422
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid initializer %s in Data statement at %C"
- msgstr ""
-
--#: fortran/decl.c:523
-+#: fortran/decl.c:524
- #, gcc-internal-format, gfc-internal-format
- msgid "Initialization at %C is not allowed in a PURE procedure"
- msgstr ""
-
--#: fortran/decl.c:560
-+#: fortran/decl.c:561
- #, gcc-internal-format, gfc-internal-format
- msgid "DATA statement at %C cannot appear within an INTERFACE"
- msgstr ""
-
--#: fortran/decl.c:592
-+#: fortran/decl.c:593
- #, gcc-internal-format, gfc-internal-format
- msgid "DATA statement at %C is not allowed in a PURE procedure"
- msgstr ""
-
--#: fortran/decl.c:638
-+#: fortran/decl.c:639
- #, gcc-internal-format, gfc-internal-format
- msgid "Empty old style initializer list at %C"
- msgstr ""
-
--#: fortran/decl.c:658
-+#: fortran/decl.c:659
- #, gcc-internal-format, gfc-internal-format
- msgid "Repeat spec invalid in scalar initializer at %C"
- msgstr ""
-
--#: fortran/decl.c:663
-+#: fortran/decl.c:664
- #, gcc-internal-format, gfc-internal-format
- msgid "Repeat spec must be an integer at %C"
- msgstr ""
-
--#: fortran/decl.c:672
-+#: fortran/decl.c:673
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected data constant after repeat spec at %C"
- msgstr ""
-
--#: fortran/decl.c:703
-+#: fortran/decl.c:704
- #, gcc-internal-format, gfc-internal-format
- msgid "End of scalar initializer expected at %C"
- msgstr ""
-
--#: fortran/decl.c:730
-+#: fortran/decl.c:731
- #, gcc-internal-format, gfc-internal-format
- msgid "Not enough elements in array initializer at %C"
- msgstr ""
-
--#: fortran/decl.c:732
-+#: fortran/decl.c:733
- #, gcc-internal-format, gfc-internal-format
- msgid "Too many elements in array initializer at %C"
- msgstr ""
-
--#: fortran/decl.c:751
-+#: fortran/decl.c:752
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in old style initializer list at %C"
- msgstr ""
-
--#: fortran/decl.c:774
-+#: fortran/decl.c:775
- #, gcc-internal-format, gfc-internal-format
- msgid "The assumed-rank array at %C shall not have a codimension"
- msgstr ""
-
--#: fortran/decl.c:842
-+#: fortran/decl.c:843
- #, gcc-internal-format, gfc-internal-format
- msgid "Bad INTENT specification at %C"
- msgstr ""
-
--#: fortran/decl.c:863
-+#: fortran/decl.c:864
- #, gcc-internal-format, gfc-internal-format
- msgid "deferred type parameter at %C"
- msgstr ""
-
--#: fortran/decl.c:935
-+#: fortran/decl.c:947
- #, gcc-internal-format, gfc-internal-format
- msgid "Scalar INTEGER expression expected at %L"
- msgstr ""
-
--#: fortran/decl.c:961
-+#: fortran/decl.c:973
- #, gcc-internal-format, gfc-internal-format
- msgid "Old-style character length at %C"
- msgstr ""
-
--#: fortran/decl.c:992
-+#: fortran/decl.c:1004
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in character length specification at %C"
- msgstr ""
-
--#: fortran/decl.c:1145
-+#: fortran/decl.c:1157
- #, gcc-internal-format
- msgid "Procedure %qs at %C is already defined at %L"
- msgstr ""
-
--#: fortran/decl.c:1153
-+#: fortran/decl.c:1165
- #, gcc-internal-format
- msgid "Name %qs at %C is already defined as a generic interface at %L"
- msgstr ""
-
--#: fortran/decl.c:1166
-+#: fortran/decl.c:1178
- #, gcc-internal-format
- msgid ""
- "Procedure %qs at %C has an explicit interface and must not have attributes "
-@@ -48840,13 +48939,13 @@
- "declared at %L"
- msgstr ""
-
--#: fortran/decl.c:1237
-+#: fortran/decl.c:1249
- #, gcc-internal-format
- msgid ""
- "Procedure %qs at %L must have the BIND(C) attribute to be C interoperable"
- msgstr ""
-
--#: fortran/decl.c:1264
-+#: fortran/decl.c:1276
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L is a dummy argument to the BIND(C) procedure %qs but is "
-@@ -48853,7 +48952,7 @@
- "not C interoperable because derived type %qs is not C interoperable"
- msgstr ""
-
--#: fortran/decl.c:1271
-+#: fortran/decl.c:1283
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L is a dummy argument to the BIND(C) procedure %qs but is "
-@@ -48860,7 +48959,7 @@
- "not C interoperable because it is polymorphic"
- msgstr ""
-
--#: fortran/decl.c:1278
-+#: fortran/decl.c:1290
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L is a dummy argument of the BIND(C) procedure %qs but may "
-@@ -48867,7 +48966,7 @@
- "not be C interoperable"
- msgstr ""
-
--#: fortran/decl.c:1293
-+#: fortran/decl.c:1305
- #, gcc-internal-format
- msgid ""
- "Character argument %qs at %L must be length 1 because procedure %qs is "
-@@ -48874,18 +48973,18 @@
- "BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:1306
-+#: fortran/decl.c:1318
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L with ALLOCATABLE attribute in procedure %qs with BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:1314
-+#: fortran/decl.c:1326
- #, gcc-internal-format
- msgid "Variable %qs at %L with POINTER attribute in procedure %qs with BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:1323
-+#: fortran/decl.c:1335
- #, gcc-internal-format
- msgid ""
- "Scalar variable %qs at %L with POINTER or ALLOCATABLE in procedure %qs with "
-@@ -48892,7 +48991,7 @@
- "BIND(C) is not yet supported"
- msgstr ""
-
--#: fortran/decl.c:1332
-+#: fortran/decl.c:1344
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L cannot have both the OPTIONAL and the VALUE attribute "
-@@ -48899,13 +48998,13 @@
- "because procedure %qs is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:1339
-+#: fortran/decl.c:1351
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L with OPTIONAL attribute in procedure %qs which is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:1350
-+#: fortran/decl.c:1362
- #, gcc-internal-format
- msgid ""
- "Assumed-shape array %qs at %L as dummy argument to the BIND(C) procedure %qs "
-@@ -48912,12 +49011,12 @@
- "at %L"
- msgstr ""
-
--#: fortran/decl.c:1400
-+#: fortran/decl.c:1412
- #, gcc-internal-format
- msgid "Symbol %qs at %C also declared as a type at %L"
- msgstr ""
-
--#: fortran/decl.c:1459
-+#: fortran/decl.c:1471
- #, gcc-internal-format
- msgid ""
- "Variable %qs in common block %qs at %C must be declared with a C "
-@@ -48924,12 +49023,17 @@
- "interoperable kind since common block %qs is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:1504
-+#: fortran/decl.c:1505
- #, gcc-internal-format, gfc-internal-format
-+msgid "CHARACTER length must be a constant at %L"
-+msgstr ""
-+
-+#: fortran/decl.c:1520
-+#, gcc-internal-format, gfc-internal-format
- msgid "CHARACTER expression at %L is being truncated (%d/%d)"
- msgstr ""
-
--#: fortran/decl.c:1511
-+#: fortran/decl.c:1527
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The CHARACTER elements of the array constructor at %L must have the same "
-@@ -48936,103 +49040,103 @@
- "length (%d/%d)"
- msgstr ""
-
--#: fortran/decl.c:1601
-+#: fortran/decl.c:1617
- #, gcc-internal-format
- msgid "Initializer not allowed for PARAMETER %qs at %C"
- msgstr ""
-
--#: fortran/decl.c:1611
-+#: fortran/decl.c:1627
- #, gcc-internal-format, gfc-internal-format
- msgid "PARAMETER at %L is missing an initializer"
- msgstr ""
-
--#: fortran/decl.c:1621
-+#: fortran/decl.c:1637
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %C with an initializer already appears in a DATA statement"
- msgstr ""
-
--#: fortran/decl.c:1714
-+#: fortran/decl.c:1730
- #, gcc-internal-format, gfc-internal-format
- msgid "Can't initialize implied-shape array at %L with scalar"
- msgstr ""
-
--#: fortran/decl.c:1749
-+#: fortran/decl.c:1765
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-constant lower bound in implied-shape declaration at %L"
- msgstr ""
-
--#: fortran/decl.c:1835
-+#: fortran/decl.c:1851
- #, gcc-internal-format, gfc-internal-format
- msgid "Component at %C must have the POINTER attribute"
- msgstr ""
-
--#: fortran/decl.c:1843
-+#: fortran/decl.c:1859
- #, gcc-internal-format, gfc-internal-format
- msgid "Array component of structure at %C must have explicit or deferred shape"
- msgstr ""
-
--#: fortran/decl.c:1867
-+#: fortran/decl.c:1883
- #, gcc-internal-format, gfc-internal-format
- msgid "Component '%s' at %C already declared at %L"
- msgstr ""
-
--#: fortran/decl.c:1953
-+#: fortran/decl.c:1971
- #, gcc-internal-format, gfc-internal-format
- msgid "Pointer array component of structure at %C must have a deferred shape"
- msgstr ""
-
--#: fortran/decl.c:1962
-+#: fortran/decl.c:1980
- #, gcc-internal-format, gfc-internal-format
- msgid "Allocatable component of structure at %C must have a deferred shape"
- msgstr ""
-
--#: fortran/decl.c:1971
-+#: fortran/decl.c:1989
- #, gcc-internal-format, gfc-internal-format
- msgid "Array component of structure at %C must have an explicit shape"
- msgstr ""
-
--#: fortran/decl.c:2025
-+#: fortran/decl.c:2043
- #, gcc-internal-format, gfc-internal-format
- msgid "NULL() initialization at %C is ambiguous"
- msgstr ""
-
--#: fortran/decl.c:2042
-+#: fortran/decl.c:2060
- #, gcc-internal-format, gfc-internal-format
- msgid "NULL() initialization at %C may not have MOLD"
- msgstr ""
-
--#: fortran/decl.c:2059
-+#: fortran/decl.c:2077
- #, gcc-internal-format, gfc-internal-format
- msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
- msgstr ""
-
--#: fortran/decl.c:2080
-+#: fortran/decl.c:2098
- #, gcc-internal-format, gfc-internal-format
- msgid "Error in pointer initialization at %C"
- msgstr ""
-
--#: fortran/decl.c:2087
-+#: fortran/decl.c:2105
- #, gcc-internal-format, gfc-internal-format
- msgid "non-NULL pointer initialization at %C"
- msgstr ""
-
--#: fortran/decl.c:2110
-+#: fortran/decl.c:2128
- #, gcc-internal-format
- msgid "Function name %qs not allowed at %C"
- msgstr ""
-
--#: fortran/decl.c:2177
-+#: fortran/decl.c:2195
- #, gcc-internal-format
- msgid "Non-PARAMETER symbol %qs at %L can't be implied-shape"
- msgstr ""
-
--#: fortran/decl.c:2187
-+#: fortran/decl.c:2205
- #, gcc-internal-format, gfc-internal-format
- msgid "Implied-shape array at %L"
- msgstr ""
-
--#: fortran/decl.c:2240
-+#: fortran/decl.c:2258
- #, gcc-internal-format
- msgid ""
- "%qs at %C is a redefinition of the declaration in the corresponding "
-@@ -49039,164 +49143,164 @@
- "interface for MODULE PROCEDURE %qs"
- msgstr ""
-
--#: fortran/decl.c:2269 fortran/decl.c:7291
-+#: fortran/decl.c:2287 fortran/decl.c:7309
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate array spec for Cray pointee at %C"
- msgstr ""
-
--#: fortran/decl.c:2277
-+#: fortran/decl.c:2295
- #, gcc-internal-format
- msgid "Couldn't set pointee array spec."
- msgstr ""
-
--#: fortran/decl.c:2340
-+#: fortran/decl.c:2358
- #, gcc-internal-format, gfc-internal-format
- msgid "Old-style initialization at %C"
- msgstr ""
-
--#: fortran/decl.c:2348
-+#: fortran/decl.c:2366
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid old style initialization for derived type component at %C"
- msgstr ""
-
--#: fortran/decl.c:2361
-+#: fortran/decl.c:2379
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in old style initialization of %s at %C"
- msgstr ""
-
--#: fortran/decl.c:2381 fortran/decl.c:5584
-+#: fortran/decl.c:2399 fortran/decl.c:5602
- #, gcc-internal-format, gfc-internal-format
- msgid "Initialization at %C isn't for a pointer variable"
- msgstr ""
-
--#: fortran/decl.c:2394
-+#: fortran/decl.c:2412
- #, gcc-internal-format
- msgid "Pointer initialization at %C requires %<=>%>, not %<=%>"
- msgstr ""
-
--#: fortran/decl.c:2403 fortran/decl.c:8866
-+#: fortran/decl.c:2421 fortran/decl.c:8884
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected an initialization expression at %C"
- msgstr ""
-
--#: fortran/decl.c:2410
-+#: fortran/decl.c:2428
- #, gcc-internal-format, gfc-internal-format
- msgid "Initialization of variable at %C is not allowed in a PURE procedure"
- msgstr ""
-
--#: fortran/decl.c:2427
-+#: fortran/decl.c:2445
- #, gcc-internal-format, gfc-internal-format
- msgid "Initialization of allocatable component at %C is not allowed"
- msgstr ""
-
--#: fortran/decl.c:2487 fortran/decl.c:2523
-+#: fortran/decl.c:2505 fortran/decl.c:2541
- #, gcc-internal-format, gfc-internal-format
- msgid "Old-style type declaration %s*%d not supported at %C"
- msgstr ""
-
--#: fortran/decl.c:2529
-+#: fortran/decl.c:2547
- #, gcc-internal-format, gfc-internal-format
- msgid "Nonstandard type declaration %s*%d at %C"
- msgstr ""
-
--#: fortran/decl.c:2580 fortran/decl.c:2656
-+#: fortran/decl.c:2598 fortran/decl.c:2674
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing right parenthesis at %C"
- msgstr ""
-
--#: fortran/decl.c:2593 fortran/decl.c:2727
-+#: fortran/decl.c:2611 fortran/decl.c:2745
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected initialization expression at %C"
- msgstr ""
-
--#: fortran/decl.c:2601 fortran/decl.c:2733
-+#: fortran/decl.c:2619 fortran/decl.c:2751
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected scalar initialization expression at %C"
- msgstr ""
-
--#: fortran/decl.c:2632
-+#: fortran/decl.c:2650
- #, gcc-internal-format, gfc-internal-format
- msgid "Kind %d not supported for type %s at %C"
- msgstr ""
-
--#: fortran/decl.c:2645
-+#: fortran/decl.c:2663
- #, gcc-internal-format, gfc-internal-format
- msgid "C kind type parameter is for type %s but type at %L is %s"
- msgstr ""
-
--#: fortran/decl.c:2654
-+#: fortran/decl.c:2672
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing right parenthesis or comma at %C"
- msgstr ""
-
--#: fortran/decl.c:2753
-+#: fortran/decl.c:2771
- #, gcc-internal-format, gfc-internal-format
- msgid "Kind %d is not supported for CHARACTER at %C"
- msgstr ""
-
--#: fortran/decl.c:2885
-+#: fortran/decl.c:2903
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in CHARACTER declaration at %C"
- msgstr ""
-
--#: fortran/decl.c:2951
-+#: fortran/decl.c:2969
- #, gcc-internal-format, gfc-internal-format
- msgid "RECORD at %C is an extension, enable it with -fdec-structure"
- msgstr ""
-
--#: fortran/decl.c:2957
-+#: fortran/decl.c:2975
- #, gcc-internal-format, gfc-internal-format
- msgid "Structure name expected after RECORD at %C"
- msgstr ""
-
--#: fortran/decl.c:3000
-+#: fortran/decl.c:3018
- #, gcc-internal-format, gfc-internal-format
- msgid "BYTE type at %C"
- msgstr ""
-
--#: fortran/decl.c:3005
-+#: fortran/decl.c:3023
- #, gcc-internal-format, gfc-internal-format
- msgid "BYTE type used at %C is not available on the target machine"
- msgstr ""
-
--#: fortran/decl.c:3027
-+#: fortran/decl.c:3045
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed type at %C is not allowed for components"
- msgstr ""
-
--#: fortran/decl.c:3030
-+#: fortran/decl.c:3048
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed type at %C"
- msgstr ""
-
--#: fortran/decl.c:3053 fortran/decl.c:3084 fortran/decl.c:3113
--#: fortran/decl.c:3331
-+#: fortran/decl.c:3071 fortran/decl.c:3102 fortran/decl.c:3131
-+#: fortran/decl.c:3349
- #, gcc-internal-format, gfc-internal-format
- msgid "TYPE with intrinsic-type-spec at %C"
- msgstr ""
-
--#: fortran/decl.c:3109
-+#: fortran/decl.c:3127
- #, gcc-internal-format, gfc-internal-format
- msgid "DOUBLE COMPLEX at %C"
- msgstr ""
-
--#: fortran/decl.c:3146
-+#: fortran/decl.c:3164
- #, gcc-internal-format, gfc-internal-format
- msgid "Type name '%s' at %C is ambiguous"
- msgstr ""
-
--#: fortran/decl.c:3224
-+#: fortran/decl.c:3242
- #, gcc-internal-format, gfc-internal-format
- msgid "CLASS statement at %C"
- msgstr ""
-
--#: fortran/decl.c:3257 fortran/decl.c:3270 fortran/decl.c:3726
--#: fortran/decl.c:3734
-+#: fortran/decl.c:3275 fortran/decl.c:3288 fortran/decl.c:3744
-+#: fortran/decl.c:3752
- #, gcc-internal-format
- msgid "Type name %qs at %C is ambiguous"
- msgstr ""
-
--#: fortran/decl.c:3285
-+#: fortran/decl.c:3303
- #, gcc-internal-format
- msgid ""
- "Type name %qs at %C conflicts with previously declared entity at %L, which "
-@@ -49203,42 +49307,42 @@
- "has the same name"
- msgstr ""
-
--#: fortran/decl.c:3402
-+#: fortran/decl.c:3420
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate IMPLICIT NONE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:3411
-+#: fortran/decl.c:3429
- #, gcc-internal-format, gfc-internal-format
- msgid "IMPORT NONE with spec list at %C"
- msgstr ""
-
--#: fortran/decl.c:3470
-+#: fortran/decl.c:3488
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing character range in IMPLICIT at %C"
- msgstr ""
-
--#: fortran/decl.c:3516
-+#: fortran/decl.c:3534
- #, gcc-internal-format, gfc-internal-format
- msgid "Letters must be in alphabetic order in IMPLICIT statement at %C"
- msgstr ""
-
--#: fortran/decl.c:3569
-+#: fortran/decl.c:3587
- #, gcc-internal-format, gfc-internal-format
- msgid "IMPLICIT statement at %C following an IMPLICIT NONE (type) statement"
- msgstr ""
-
--#: fortran/decl.c:3579
-+#: fortran/decl.c:3597
- #, gcc-internal-format, gfc-internal-format
- msgid "Empty IMPLICIT statement at %C"
- msgstr ""
-
--#: fortran/decl.c:3685
-+#: fortran/decl.c:3703
- #, gcc-internal-format, gfc-internal-format
- msgid "IMPORT statement at %C only permitted in an INTERFACE body"
- msgstr ""
-
--#: fortran/decl.c:3692
-+#: fortran/decl.c:3710
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "F2008: C1210 IMPORT statement at %C is not permitted in a module procedure "
-@@ -49245,62 +49349,62 @@
- "interface body"
- msgstr ""
-
--#: fortran/decl.c:3697
-+#: fortran/decl.c:3715
- #, gcc-internal-format, gfc-internal-format
- msgid "IMPORT statement at %C"
- msgstr ""
-
--#: fortran/decl.c:3711
-+#: fortran/decl.c:3729
- #, gcc-internal-format, gfc-internal-format
- msgid "Expecting list of named entities at %C"
- msgstr ""
-
--#: fortran/decl.c:3740
-+#: fortran/decl.c:3758
- #, gcc-internal-format
- msgid "Cannot IMPORT %qs from host scoping unit at %C - does not exist."
- msgstr ""
-
--#: fortran/decl.c:3747
-+#: fortran/decl.c:3765
- #, gcc-internal-format
- msgid "%qs is already IMPORTed from host scoping unit at %C"
- msgstr ""
-
--#: fortran/decl.c:3788
-+#: fortran/decl.c:3806
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in IMPORT statement at %C"
- msgstr ""
-
--#: fortran/decl.c:4087
-+#: fortran/decl.c:4105
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing codimension specification at %C"
- msgstr ""
-
--#: fortran/decl.c:4089
-+#: fortran/decl.c:4107
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing dimension specification at %C"
- msgstr ""
-
--#: fortran/decl.c:4172
-+#: fortran/decl.c:4190
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate %s attribute at %L"
- msgstr ""
-
--#: fortran/decl.c:4191
-+#: fortran/decl.c:4209
- #, gcc-internal-format, gfc-internal-format
- msgid "ALLOCATABLE attribute at %C in a TYPE definition"
- msgstr ""
-
--#: fortran/decl.c:4200
-+#: fortran/decl.c:4218
- #, gcc-internal-format, gfc-internal-format
- msgid "Attribute at %L is not allowed in a TYPE definition"
- msgstr ""
-
--#: fortran/decl.c:4218
-+#: fortran/decl.c:4236
- #, gcc-internal-format, gfc-internal-format
- msgid "Attribute %s at %L in a TYPE definition"
- msgstr ""
-
--#: fortran/decl.c:4228
-+#: fortran/decl.c:4246
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "%s attribute at %L is not allowed outside of the specification part of a "
-@@ -49307,53 +49411,53 @@
- "module"
- msgstr ""
-
--#: fortran/decl.c:4242
-+#: fortran/decl.c:4260
- #, gcc-internal-format, gfc-internal-format
- msgid "ASYNCHRONOUS attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:4253
-+#: fortran/decl.c:4271
- #, gcc-internal-format, gfc-internal-format
- msgid "CONTIGUOUS attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:4300 fortran/decl.c:7587
-+#: fortran/decl.c:4318 fortran/decl.c:7605
- #, gcc-internal-format, gfc-internal-format
- msgid "PROTECTED at %C only allowed in specification part of a module"
- msgstr ""
-
--#: fortran/decl.c:4306
-+#: fortran/decl.c:4324
- #, gcc-internal-format, gfc-internal-format
- msgid "PROTECTED attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:4335
-+#: fortran/decl.c:4353
- #, gcc-internal-format, gfc-internal-format
- msgid "VALUE attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:4342
-+#: fortran/decl.c:4360
- #, gcc-internal-format, gfc-internal-format
- msgid "VOLATILE attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:4349
-+#: fortran/decl.c:4367
- #, gcc-internal-format
- msgid "match_attr_spec(): Bad attribute"
- msgstr ""
-
--#: fortran/decl.c:4389
-+#: fortran/decl.c:4407
- #, gcc-internal-format, gfc-internal-format
- msgid "Multiple identifiers provided with single NAME= specifier at %C"
- msgstr ""
-
--#: fortran/decl.c:4487
-+#: fortran/decl.c:4505
- #, gcc-internal-format
- msgid ""
- "Implicitly declared BIND(C) function %qs at %L may not be C interoperable"
- msgstr ""
-
--#: fortran/decl.c:4509
-+#: fortran/decl.c:4527
- #, gcc-internal-format
- msgid ""
- "Variable %qs in common block %qs at %L may not be a C interoperable kind "
-@@ -49360,17 +49464,17 @@
- "though common block %qs is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:4518
-+#: fortran/decl.c:4536
- #, gcc-internal-format
- msgid "Type declaration %qs at %L is not C interoperable but it is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:4522
-+#: fortran/decl.c:4540
- #, gcc-internal-format
- msgid "Variable %qs at %L may not be a C interoperable kind but it is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:4534
-+#: fortran/decl.c:4552
- #, gcc-internal-format
- msgid ""
- "Variable %qs in common block %qs at %L cannot be declared with BIND(C) since "
-@@ -49377,23 +49481,23 @@
- "it is not a global"
- msgstr ""
-
--#: fortran/decl.c:4548
-+#: fortran/decl.c:4566
- #, gcc-internal-format
- msgid "Variable %qs at %L cannot have both the POINTER and BIND(C) attributes"
- msgstr ""
-
--#: fortran/decl.c:4556
-+#: fortran/decl.c:4574
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L cannot have both the ALLOCATABLE and BIND(C) attributes"
- msgstr ""
-
--#: fortran/decl.c:4568
-+#: fortran/decl.c:4586
- #, gcc-internal-format
- msgid "Return type of BIND(C) function %qs at %L cannot be an array"
- msgstr ""
-
--#: fortran/decl.c:4576
-+#: fortran/decl.c:4594
- #, gcc-internal-format
- msgid "Return type of BIND(C) function %qs at %L cannot be a character string"
- msgstr ""
-@@ -49400,13 +49504,13 @@
-
- #. Use gfc_warning_now because we won't say that the symbol fails
- #. just because of this.
--#: fortran/decl.c:4587
-+#: fortran/decl.c:4605
- #, gcc-internal-format
- msgid ""
- "Symbol %qs at %L is marked PRIVATE but has been given the binding label %qs"
- msgstr ""
-
--#: fortran/decl.c:4661
-+#: fortran/decl.c:4679
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Need either entity or common block name for attribute specification "
-@@ -49413,7 +49517,7 @@
- "statement at %C"
- msgstr ""
-
--#: fortran/decl.c:4706
-+#: fortran/decl.c:4724
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Missing entity or common block name for attribute specification statement at "
-@@ -49420,17 +49524,17 @@
- "%C"
- msgstr ""
-
--#: fortran/decl.c:4713
-+#: fortran/decl.c:4731
- #, gcc-internal-format
- msgid "Missing symbol"
- msgstr ""
-
--#: fortran/decl.c:4742
-+#: fortran/decl.c:4760
- #, gcc-internal-format, gfc-internal-format
- msgid "BIND(C) statement at %C"
- msgstr ""
-
--#: fortran/decl.c:4822
-+#: fortran/decl.c:4840
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Derived type at %C has not been previously defined and so cannot appear in a "
-@@ -49437,360 +49541,360 @@
- "derived type definition"
- msgstr ""
-
--#: fortran/decl.c:4854
-+#: fortran/decl.c:4872
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in data declaration at %C"
- msgstr ""
-
--#: fortran/decl.c:4895
-+#: fortran/decl.c:4913
- #, gcc-internal-format, gfc-internal-format
- msgid "MODULE prefix at %C"
- msgstr ""
-
--#: fortran/decl.c:4940
-+#: fortran/decl.c:4958
- #, gcc-internal-format, gfc-internal-format
- msgid "IMPURE procedure at %C"
- msgstr ""
-
--#: fortran/decl.c:4952
-+#: fortran/decl.c:4970
- #, gcc-internal-format, gfc-internal-format
- msgid "PURE and IMPURE must not appear both at %C"
- msgstr ""
-
--#: fortran/decl.c:4998
-+#: fortran/decl.c:5016
- #, gcc-internal-format, gfc-internal-format
- msgid "ELEMENTAL prefix in MODULE PROCEDURE interface is missing at %L"
- msgstr ""
-
--#: fortran/decl.c:5005
-+#: fortran/decl.c:5023
- #, gcc-internal-format, gfc-internal-format
- msgid "PURE prefix in MODULE PROCEDURE interface is missing at %L"
- msgstr ""
-
--#: fortran/decl.c:5012
-+#: fortran/decl.c:5030
- #, gcc-internal-format, gfc-internal-format
- msgid "RECURSIVE prefix in MODULE PROCEDURE interface is missing at %L"
- msgstr ""
-
--#: fortran/decl.c:5075 fortran/primary.c:1779
-+#: fortran/decl.c:5093 fortran/primary.c:1783
- #, gcc-internal-format, gfc-internal-format
- msgid "Alternate-return argument at %C"
- msgstr ""
-
--#: fortran/decl.c:5121
-+#: fortran/decl.c:5139
- #, gcc-internal-format
- msgid "Name %qs at %C is the name of the procedure"
- msgstr ""
-
--#: fortran/decl.c:5133
-+#: fortran/decl.c:5151
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected junk in formal argument list at %C"
- msgstr ""
-
--#: fortran/decl.c:5150
-+#: fortran/decl.c:5168
- #, gcc-internal-format
- msgid "Duplicate symbol %qs in formal argument list at %C"
- msgstr ""
-
--#: fortran/decl.c:5189
-+#: fortran/decl.c:5207
- #, gcc-internal-format, gfc-internal-format
- msgid "Mismatch in MODULE PROCEDURE formal argument names (%s/%s) at %C"
- msgstr ""
-
--#: fortran/decl.c:5195
-+#: fortran/decl.c:5213
- #, gcc-internal-format, gfc-internal-format
- msgid "Mismatch in number of MODULE PROCEDURE formal arguments at %C"
- msgstr ""
-
--#: fortran/decl.c:5234
-+#: fortran/decl.c:5252
- #, gcc-internal-format, gfc-internal-format
- msgid "RESULT variable at %C must be different than function name"
- msgstr ""
-
--#: fortran/decl.c:5311
-+#: fortran/decl.c:5329
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected junk after function declaration at %C"
- msgstr ""
-
--#: fortran/decl.c:5321 fortran/decl.c:6418
-+#: fortran/decl.c:5339 fortran/decl.c:6436
- #, gcc-internal-format, gfc-internal-format
- msgid "BIND(C) attribute at %L may not be specified for an internal procedure"
- msgstr ""
-
--#: fortran/decl.c:5523
-+#: fortran/decl.c:5541
- #, gcc-internal-format, gfc-internal-format
- msgid "BIND(C) attribute at %C requires an interface with BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:5530
-+#: fortran/decl.c:5548
- #, gcc-internal-format, gfc-internal-format
- msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:5536
-+#: fortran/decl.c:5554
- #, gcc-internal-format, gfc-internal-format
- msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME"
- msgstr ""
-
--#: fortran/decl.c:5559
-+#: fortran/decl.c:5577
- #, gcc-internal-format
- msgid "Procedure %qs at %L already has basic type of %s"
- msgstr ""
-
--#: fortran/decl.c:5605 fortran/decl.c:5793 fortran/decl.c:9347
-+#: fortran/decl.c:5623 fortran/decl.c:5811 fortran/decl.c:9365
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in PROCEDURE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:5654 fortran/decl.c:9249
-+#: fortran/decl.c:5672 fortran/decl.c:9267
- #, gcc-internal-format
- msgid "Expected %<::%> after binding-attributes at %C"
- msgstr ""
-
--#: fortran/decl.c:5661
-+#: fortran/decl.c:5679
- #, gcc-internal-format, gfc-internal-format
- msgid "NOPASS or explicit interface required at %C"
- msgstr ""
-
--#: fortran/decl.c:5665
-+#: fortran/decl.c:5683
- #, gcc-internal-format, gfc-internal-format
- msgid "Procedure pointer component at %C"
- msgstr ""
-
--#: fortran/decl.c:5737
-+#: fortran/decl.c:5755
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in procedure pointer component at %C"
- msgstr ""
-
--#: fortran/decl.c:5755
-+#: fortran/decl.c:5773
- #, gcc-internal-format, gfc-internal-format
- msgid "PROCEDURE at %C must be in a generic interface"
- msgstr ""
-
--#: fortran/decl.c:5764 fortran/decl.c:8178
-+#: fortran/decl.c:5782 fortran/decl.c:8196
- #, gcc-internal-format, gfc-internal-format
- msgid "double colon in MODULE PROCEDURE statement at %L"
- msgstr ""
-
--#: fortran/decl.c:5834
-+#: fortran/decl.c:5852
- #, gcc-internal-format, gfc-internal-format
- msgid "PROCEDURE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:5906
-+#: fortran/decl.c:5924
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected formal argument list in function definition at %C"
- msgstr ""
-
--#: fortran/decl.c:5930 fortran/decl.c:5934 fortran/decl.c:6190
--#: fortran/decl.c:6194 fortran/decl.c:6386 fortran/decl.c:6390
-+#: fortran/decl.c:5948 fortran/decl.c:5952 fortran/decl.c:6208
-+#: fortran/decl.c:6212 fortran/decl.c:6404 fortran/decl.c:6408
- #: fortran/symbol.c:1713
- #, gcc-internal-format, gfc-internal-format
- msgid "BIND(C) attribute at %L can only be used for variables or common blocks"
- msgstr ""
-
--#: fortran/decl.c:6088
-+#: fortran/decl.c:6106
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C"
- msgstr ""
-
--#: fortran/decl.c:6097
-+#: fortran/decl.c:6115
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a PROGRAM"
- msgstr ""
-
--#: fortran/decl.c:6100
-+#: fortran/decl.c:6118
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a MODULE"
- msgstr ""
-
--#: fortran/decl.c:6103
-+#: fortran/decl.c:6121
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a SUBMODULE"
- msgstr ""
-
--#: fortran/decl.c:6106
-+#: fortran/decl.c:6124
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a BLOCK DATA"
- msgstr ""
-
--#: fortran/decl.c:6110 fortran/decl.c:6155
-+#: fortran/decl.c:6128 fortran/decl.c:6173
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within an INTERFACE"
- msgstr ""
-
--#: fortran/decl.c:6114
-+#: fortran/decl.c:6132
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a STRUCTURE block"
- msgstr ""
-
--#: fortran/decl.c:6118
-+#: fortran/decl.c:6136
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block"
- msgstr ""
-
--#: fortran/decl.c:6122
-+#: fortran/decl.c:6140
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within an IF-THEN block"
- msgstr ""
-
--#: fortran/decl.c:6127
-+#: fortran/decl.c:6145
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a DO block"
- msgstr ""
-
--#: fortran/decl.c:6131
-+#: fortran/decl.c:6149
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a SELECT block"
- msgstr ""
-
--#: fortran/decl.c:6135
-+#: fortran/decl.c:6153
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a FORALL block"
- msgstr ""
-
--#: fortran/decl.c:6139
-+#: fortran/decl.c:6157
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a WHERE block"
- msgstr ""
-
--#: fortran/decl.c:6143
-+#: fortran/decl.c:6161
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear within a contained subprogram"
- msgstr ""
-
--#: fortran/decl.c:6147
-+#: fortran/decl.c:6165
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected ENTRY statement at %C"
- msgstr ""
-
--#: fortran/decl.c:6168
-+#: fortran/decl.c:6186
- #, gcc-internal-format, gfc-internal-format
- msgid "ENTRY statement at %C cannot appear in a contained procedure"
- msgstr ""
-
--#: fortran/decl.c:6219 fortran/decl.c:6425
-+#: fortran/decl.c:6237 fortran/decl.c:6443
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing required parentheses before BIND(C) at %C"
- msgstr ""
-
--#: fortran/decl.c:6487 fortran/decl.c:6494
-+#: fortran/decl.c:6505 fortran/decl.c:6512
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid C identifier in NAME= specifier at %C"
- msgstr ""
-
--#: fortran/decl.c:6534
-+#: fortran/decl.c:6552
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in NAME= specifier for binding label at %C"
- msgstr ""
-
--#: fortran/decl.c:6550
-+#: fortran/decl.c:6568
- #, gcc-internal-format, gfc-internal-format
- msgid "NAME= specifier at %C should be a constant expression"
- msgstr ""
-
--#: fortran/decl.c:6558
-+#: fortran/decl.c:6576
- #, gcc-internal-format, gfc-internal-format
- msgid "NAME= specifier at %C should be a scalar of default character kind"
- msgstr ""
-
--#: fortran/decl.c:6577
-+#: fortran/decl.c:6595
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing closing paren for binding label at %C"
- msgstr ""
-
--#: fortran/decl.c:6583
-+#: fortran/decl.c:6601
- #, gcc-internal-format, gfc-internal-format
- msgid "No binding name is allowed in BIND(C) at %C"
- msgstr ""
-
--#: fortran/decl.c:6589
-+#: fortran/decl.c:6607
- #, gcc-internal-format, gfc-internal-format
- msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C"
- msgstr ""
-
--#: fortran/decl.c:6618
-+#: fortran/decl.c:6636
- #, gcc-internal-format, gfc-internal-format
- msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C"
- msgstr ""
-
--#: fortran/decl.c:6861
-+#: fortran/decl.c:6879
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected END statement at %C"
- msgstr ""
-
--#: fortran/decl.c:6870
-+#: fortran/decl.c:6888
- #, gcc-internal-format, gfc-internal-format
- msgid "END statement instead of %s statement at %L"
- msgstr ""
-
- #. We would have required END [something].
--#: fortran/decl.c:6879
-+#: fortran/decl.c:6897
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement expected at %L"
- msgstr ""
-
--#: fortran/decl.c:6890
-+#: fortran/decl.c:6908
- #, gcc-internal-format, gfc-internal-format
- msgid "Expecting %s statement at %L"
- msgstr ""
-
--#: fortran/decl.c:6910
-+#: fortran/decl.c:6928
- #, gcc-internal-format
- msgid "Expected block name of %qs in %s statement at %L"
- msgstr ""
-
--#: fortran/decl.c:6927
-+#: fortran/decl.c:6945
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected terminating name at %C"
- msgstr ""
-
--#: fortran/decl.c:6941 fortran/decl.c:6949
-+#: fortran/decl.c:6959 fortran/decl.c:6967
- #, gcc-internal-format
- msgid "Expected label %qs for %s statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7048
-+#: fortran/decl.c:7066
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing array specification at %L in DIMENSION statement"
- msgstr ""
-
--#: fortran/decl.c:7056
-+#: fortran/decl.c:7074
- #, gcc-internal-format, gfc-internal-format
- msgid "Dimensions specified for %s at %L after its initialisation"
- msgstr ""
-
--#: fortran/decl.c:7064
-+#: fortran/decl.c:7082
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing array specification at %L in CODIMENSION statement"
- msgstr ""
-
--#: fortran/decl.c:7073
-+#: fortran/decl.c:7091
- #, gcc-internal-format, gfc-internal-format
- msgid "Array specification must be deferred at %L"
- msgstr ""
-
--#: fortran/decl.c:7171
-+#: fortran/decl.c:7189
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected character in variable list at %C"
- msgstr ""
-
--#: fortran/decl.c:7208
-+#: fortran/decl.c:7226
- #, gcc-internal-format
- msgid "Expected %<(%> at %C"
- msgstr ""
-
--#: fortran/decl.c:7222 fortran/decl.c:7262
-+#: fortran/decl.c:7240 fortran/decl.c:7280
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected variable name at %C"
- msgstr ""
-
--#: fortran/decl.c:7238
-+#: fortran/decl.c:7256
- #, gcc-internal-format, gfc-internal-format
- msgid "Cray pointer at %C must be an integer"
- msgstr ""
-
--#: fortran/decl.c:7242
-+#: fortran/decl.c:7260
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Cray pointer at %C has %d bytes of precision; memory addresses require %d "
-@@ -49797,141 +49901,141 @@
- "bytes"
- msgstr ""
-
--#: fortran/decl.c:7248
-+#: fortran/decl.c:7266
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected \",\" at %C"
- msgstr ""
-
--#: fortran/decl.c:7287
-+#: fortran/decl.c:7305
- #, gcc-internal-format
- msgid "Couldn't set Cray pointee array spec."
- msgstr ""
-
--#: fortran/decl.c:7311
-+#: fortran/decl.c:7329
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected \")\" at %C"
- msgstr ""
-
--#: fortran/decl.c:7323
-+#: fortran/decl.c:7341
- #, gcc-internal-format
- msgid "Expected %<,%> or end of statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7349
-+#: fortran/decl.c:7367
- #, gcc-internal-format, gfc-internal-format
- msgid "INTENT is not allowed inside of BLOCK at %C"
- msgstr ""
-
--#: fortran/decl.c:7381
-+#: fortran/decl.c:7399
- #, gcc-internal-format, gfc-internal-format
- msgid "OPTIONAL is not allowed inside of BLOCK at %C"
- msgstr ""
-
--#: fortran/decl.c:7400
-+#: fortran/decl.c:7418
- #, gcc-internal-format, gfc-internal-format
- msgid "Cray pointer declaration at %C requires -fcray-pointer flag"
- msgstr ""
-
--#: fortran/decl.c:7439
-+#: fortran/decl.c:7457
- #, gcc-internal-format, gfc-internal-format
- msgid "CONTIGUOUS statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7537
-+#: fortran/decl.c:7555
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Access specification of the %s operator at %C has already been specified"
- msgstr ""
-
--#: fortran/decl.c:7554
-+#: fortran/decl.c:7572
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Access specification of the .%s. operator at %C has already been specified"
- msgstr ""
-
--#: fortran/decl.c:7593
-+#: fortran/decl.c:7611
- #, gcc-internal-format, gfc-internal-format
- msgid "PROTECTED statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7631
-+#: fortran/decl.c:7649
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in PROTECTED statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7655
-+#: fortran/decl.c:7673
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "PRIVATE statement at %C is only allowed in the specification part of a module"
- msgstr ""
-
--#: fortran/decl.c:7692
-+#: fortran/decl.c:7710
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "PUBLIC statement at %C is only allowed in the specification part of a module"
- msgstr ""
-
--#: fortran/decl.c:7720
-+#: fortran/decl.c:7738
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected variable name at %C in PARAMETER statement"
- msgstr ""
-
--#: fortran/decl.c:7727
-+#: fortran/decl.c:7745
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected = sign in PARAMETER statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7733
-+#: fortran/decl.c:7751
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected expression at %C in PARAMETER statement"
- msgstr ""
-
--#: fortran/decl.c:7753
-+#: fortran/decl.c:7771
- #, gcc-internal-format, gfc-internal-format
- msgid "Initializing already initialized variable at %C"
- msgstr ""
-
--#: fortran/decl.c:7788
-+#: fortran/decl.c:7806
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected characters in PARAMETER statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7812
-+#: fortran/decl.c:7830
- #, gcc-internal-format, gfc-internal-format
- msgid "Blanket SAVE statement at %C follows previous SAVE statement"
- msgstr ""
-
--#: fortran/decl.c:7823
-+#: fortran/decl.c:7841
- #, gcc-internal-format, gfc-internal-format
- msgid "SAVE statement at %C follows blanket SAVE statement"
- msgstr ""
-
--#: fortran/decl.c:7869
-+#: fortran/decl.c:7887
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in SAVE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7883
-+#: fortran/decl.c:7901
- #, gcc-internal-format, gfc-internal-format
- msgid "VALUE is not allowed inside of BLOCK at %C"
- msgstr ""
-
--#: fortran/decl.c:7887
-+#: fortran/decl.c:7905
- #, gcc-internal-format, gfc-internal-format
- msgid "VALUE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7925
-+#: fortran/decl.c:7943
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in VALUE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7936
-+#: fortran/decl.c:7954
- #, gcc-internal-format, gfc-internal-format
- msgid "VOLATILE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7959
-+#: fortran/decl.c:7977
- #, gcc-internal-format
- msgid ""
- "Specifying VOLATILE for coarray variable %qs at %C, which is use-/host-"
-@@ -49938,269 +50042,269 @@
- "associated"
- msgstr ""
-
--#: fortran/decl.c:7984
-+#: fortran/decl.c:8002
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in VOLATILE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:7995
-+#: fortran/decl.c:8013
- #, gcc-internal-format, gfc-internal-format
- msgid "ASYNCHRONOUS statement at %C"
- msgstr ""
-
--#: fortran/decl.c:8035
-+#: fortran/decl.c:8053
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in ASYNCHRONOUS statement at %C"
- msgstr ""
-
--#: fortran/decl.c:8060
-+#: fortran/decl.c:8078
- #, gcc-internal-format, gfc-internal-format
- msgid "MODULE PROCEDURE declaration at %C"
- msgstr ""
-
--#: fortran/decl.c:8153
-+#: fortran/decl.c:8171
- #, gcc-internal-format, gfc-internal-format
- msgid "MODULE PROCEDURE at %C must be in a generic module interface"
- msgstr ""
-
--#: fortran/decl.c:8211
-+#: fortran/decl.c:8229
- #, gcc-internal-format, gfc-internal-format
- msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE"
- msgstr ""
-
--#: fortran/decl.c:8260
-+#: fortran/decl.c:8278
- #, gcc-internal-format, gfc-internal-format
- msgid "Ambiguous symbol in TYPE definition at %C"
- msgstr ""
-
--#: fortran/decl.c:8269
-+#: fortran/decl.c:8287
- #, gcc-internal-format
- msgid "Symbol %qs at %C has not been previously defined"
- msgstr ""
-
--#: fortran/decl.c:8275
-+#: fortran/decl.c:8293
- #, gcc-internal-format
- msgid "%qs in EXTENDS expression at %C is not a derived type"
- msgstr ""
-
--#: fortran/decl.c:8282
-+#: fortran/decl.c:8300
- #, gcc-internal-format
- msgid "%qs cannot be extended at %C because it is BIND(C)"
- msgstr ""
-
--#: fortran/decl.c:8289
-+#: fortran/decl.c:8307
- #, gcc-internal-format
- msgid "%qs cannot be extended at %C because it is a SEQUENCE type"
- msgstr ""
-
--#: fortran/decl.c:8312
-+#: fortran/decl.c:8330
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Derived type at %C can only be PRIVATE in the specification part of a module"
- msgstr ""
-
--#: fortran/decl.c:8324
-+#: fortran/decl.c:8342
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Derived type at %C can only be PUBLIC in the specification part of a module"
- msgstr ""
-
--#: fortran/decl.c:8345
-+#: fortran/decl.c:8363
- #, gcc-internal-format, gfc-internal-format
- msgid "ABSTRACT type at %C"
- msgstr ""
-
--#: fortran/decl.c:8391
-+#: fortran/decl.c:8409
- #, gcc-internal-format, gfc-internal-format
- msgid "Failed to create structure type '%s' at %C"
- msgstr ""
-
--#: fortran/decl.c:8397
-+#: fortran/decl.c:8415
- #, gcc-internal-format, gfc-internal-format
- msgid "Type definition of '%s' at %C was already defined at %L"
- msgstr ""
-
--#: fortran/decl.c:8444
-+#: fortran/decl.c:8462
- #, gcc-internal-format, gfc-internal-format
- msgid "Junk after MAP statement at %C"
- msgstr ""
-
--#: fortran/decl.c:8477
-+#: fortran/decl.c:8495
- #, gcc-internal-format, gfc-internal-format
- msgid "Junk after UNION statement at %C"
- msgstr ""
-
--#: fortran/decl.c:8512
-+#: fortran/decl.c:8530
- #, gcc-internal-format, gfc-internal-format
- msgid "STRUCTURE at %C is a DEC extension, enable with -fdec-structure"
- msgstr ""
-
--#: fortran/decl.c:8525
-+#: fortran/decl.c:8543
- #, gcc-internal-format, gfc-internal-format
- msgid "Structure name expected in non-nested structure declaration at %C"
- msgstr ""
-
--#: fortran/decl.c:8543
-+#: fortran/decl.c:8561
- #, gcc-internal-format, gfc-internal-format
- msgid "Junk after non-nested STRUCTURE statement at %C"
- msgstr ""
-
--#: fortran/decl.c:8550
-+#: fortran/decl.c:8568
- #, gcc-internal-format, gfc-internal-format
- msgid "Structure name '%s' at %C cannot be the same as an intrinsic type"
- msgstr ""
-
--#: fortran/decl.c:8611
-+#: fortran/decl.c:8629
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected :: in TYPE definition at %C"
- msgstr ""
-
--#: fortran/decl.c:8622
-+#: fortran/decl.c:8640
- #, gcc-internal-format
- msgid "Type name %qs at %C cannot be the same as an intrinsic type"
- msgstr ""
-
--#: fortran/decl.c:8632
-+#: fortran/decl.c:8650
- #, gcc-internal-format
- msgid "Derived type name %qs at %C already has a basic type of %s"
- msgstr ""
-
--#: fortran/decl.c:8649
-+#: fortran/decl.c:8667
- #, gcc-internal-format
- msgid "Derived type definition of %qs at %C has already been defined"
- msgstr ""
-
--#: fortran/decl.c:8752
-+#: fortran/decl.c:8770
- #, gcc-internal-format, gfc-internal-format
- msgid "Cray Pointee at %C cannot be assumed shape array"
- msgstr ""
-
--#: fortran/decl.c:8772
-+#: fortran/decl.c:8790
- #, gcc-internal-format, gfc-internal-format
- msgid "ENUM and ENUMERATOR at %C"
- msgstr ""
-
--#: fortran/decl.c:8804
-+#: fortran/decl.c:8822
- #, gcc-internal-format, gfc-internal-format
- msgid "Enumerator exceeds the C integer type at %C"
- msgstr ""
-
--#: fortran/decl.c:8883
-+#: fortran/decl.c:8901
- #, gcc-internal-format, gfc-internal-format
- msgid "ENUMERATOR %L not initialized with integer expression"
- msgstr ""
-
--#: fortran/decl.c:8931
-+#: fortran/decl.c:8949
- #, gcc-internal-format, gfc-internal-format
- msgid "ENUM definition statement expected before %C"
- msgstr ""
-
--#: fortran/decl.c:8967
-+#: fortran/decl.c:8985
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in ENUMERATOR definition at %C"
- msgstr ""
-
--#: fortran/decl.c:9014 fortran/decl.c:9029
-+#: fortran/decl.c:9032 fortran/decl.c:9047
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate access-specifier at %C"
- msgstr ""
-
--#: fortran/decl.c:9049
-+#: fortran/decl.c:9067
- #, gcc-internal-format, gfc-internal-format
- msgid "Binding attributes already specify passing, illegal NOPASS at %C"
- msgstr ""
-
--#: fortran/decl.c:9069
-+#: fortran/decl.c:9087
- #, gcc-internal-format, gfc-internal-format
- msgid "Binding attributes already specify passing, illegal PASS at %C"
- msgstr ""
-
--#: fortran/decl.c:9096
-+#: fortran/decl.c:9114
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate POINTER attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:9114
-+#: fortran/decl.c:9132
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate NON_OVERRIDABLE at %C"
- msgstr ""
-
--#: fortran/decl.c:9130
-+#: fortran/decl.c:9148
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate DEFERRED at %C"
- msgstr ""
-
--#: fortran/decl.c:9143
-+#: fortran/decl.c:9161
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected access-specifier at %C"
- msgstr ""
-
--#: fortran/decl.c:9145
-+#: fortran/decl.c:9163
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected binding attribute at %C"
- msgstr ""
-
--#: fortran/decl.c:9153
-+#: fortran/decl.c:9171
- #, gcc-internal-format, gfc-internal-format
- msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C"
- msgstr ""
-
--#: fortran/decl.c:9165
-+#: fortran/decl.c:9183
- #, gcc-internal-format, gfc-internal-format
- msgid "POINTER attribute is required for procedure pointer component at %C"
- msgstr ""
-
--#: fortran/decl.c:9207
-+#: fortran/decl.c:9225
- #, gcc-internal-format
- msgid "Interface-name expected after %<(%> at %C"
- msgstr ""
-
--#: fortran/decl.c:9213
-+#: fortran/decl.c:9231
- #, gcc-internal-format
- msgid "%<)%> expected at %C"
- msgstr ""
-
--#: fortran/decl.c:9233
-+#: fortran/decl.c:9251
- #, gcc-internal-format, gfc-internal-format
- msgid "Interface must be specified for DEFERRED binding at %C"
- msgstr ""
-
--#: fortran/decl.c:9238
-+#: fortran/decl.c:9256
- #, gcc-internal-format, gfc-internal-format
- msgid "PROCEDURE(interface) at %C should be declared DEFERRED"
- msgstr ""
-
--#: fortran/decl.c:9261
-+#: fortran/decl.c:9279
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected binding name at %C"
- msgstr ""
-
--#: fortran/decl.c:9265
-+#: fortran/decl.c:9283
- #, gcc-internal-format, gfc-internal-format
- msgid "PROCEDURE list at %C"
- msgstr ""
-
--#: fortran/decl.c:9277
-+#: fortran/decl.c:9295
- #, gcc-internal-format
- msgid "%<=> target%> is invalid for DEFERRED binding at %C"
- msgstr ""
-
--#: fortran/decl.c:9283
-+#: fortran/decl.c:9301
- #, gcc-internal-format
- msgid "%<::%> needed in PROCEDURE binding with explicit target at %C"
- msgstr ""
-
--#: fortran/decl.c:9293
-+#: fortran/decl.c:9311
- #, gcc-internal-format
- msgid "Expected binding target after %<=>%> at %C"
- msgstr ""
-
--#: fortran/decl.c:9310
-+#: fortran/decl.c:9328
- #, gcc-internal-format
- msgid "Type %qs containing DEFERRED binding at %C is not ABSTRACT"
- msgstr ""
-
--#: fortran/decl.c:9321
-+#: fortran/decl.c:9339
- #, gcc-internal-format
- msgid ""
- "There is already a procedure with binding name %qs for the derived type %qs "
-@@ -50207,32 +50311,32 @@
- "at %C"
- msgstr ""
-
--#: fortran/decl.c:9370
-+#: fortran/decl.c:9388
- #, gcc-internal-format, gfc-internal-format
- msgid "GENERIC at %C must be inside a derived-type CONTAINS"
- msgstr ""
-
--#: fortran/decl.c:9390
-+#: fortran/decl.c:9408
- #, gcc-internal-format
- msgid "Expected %<::%> at %C"
- msgstr ""
-
--#: fortran/decl.c:9402
-+#: fortran/decl.c:9420
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected generic name or operator descriptor at %C"
- msgstr ""
-
--#: fortran/decl.c:9422
-+#: fortran/decl.c:9440
- #, gcc-internal-format, gfc-internal-format
- msgid "Malformed GENERIC statement at %C"
- msgstr ""
-
--#: fortran/decl.c:9433
-+#: fortran/decl.c:9451
- #, gcc-internal-format
- msgid "Expected %<=>%> at %C"
- msgstr ""
-
--#: fortran/decl.c:9475
-+#: fortran/decl.c:9493
- #, gcc-internal-format
- msgid ""
- "There's already a non-generic procedure with binding name %qs for the "
-@@ -50239,32 +50343,32 @@
- "derived type %qs at %C"
- msgstr ""
-
--#: fortran/decl.c:9483
-+#: fortran/decl.c:9501
- #, gcc-internal-format
- msgid "Binding at %C must have the same access as already defined binding %qs"
- msgstr ""
-
--#: fortran/decl.c:9532
-+#: fortran/decl.c:9550
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected specific binding name at %C"
- msgstr ""
-
--#: fortran/decl.c:9542
-+#: fortran/decl.c:9560
- #, gcc-internal-format
- msgid "%qs already defined as specific binding for the generic %qs at %C"
- msgstr ""
-
--#: fortran/decl.c:9560
-+#: fortran/decl.c:9578
- #, gcc-internal-format, gfc-internal-format
- msgid "Junk after GENERIC binding at %C"
- msgstr ""
-
--#: fortran/decl.c:9595
-+#: fortran/decl.c:9613
- #, gcc-internal-format, gfc-internal-format
- msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
- msgstr ""
-
--#: fortran/decl.c:9606
-+#: fortran/decl.c:9624
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Derived type declaration with FINAL at %C must be in the specification part "
-@@ -50271,43 +50375,48 @@
- "of a MODULE"
- msgstr ""
-
--#: fortran/decl.c:9628
-+#: fortran/decl.c:9646
- #, gcc-internal-format, gfc-internal-format
- msgid "Empty FINAL at %C"
- msgstr ""
-
--#: fortran/decl.c:9635
-+#: fortran/decl.c:9653
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected module procedure name at %C"
- msgstr ""
-
--#: fortran/decl.c:9645
-+#: fortran/decl.c:9663
- #, gcc-internal-format
- msgid "Expected %<,%> at %C"
- msgstr ""
-
--#: fortran/decl.c:9651
-+#: fortran/decl.c:9669
- #, gcc-internal-format
- msgid "Unknown procedure name %qs at %C"
- msgstr ""
-
--#: fortran/decl.c:9664
-+#: fortran/decl.c:9682
- #, gcc-internal-format
- msgid "%qs at %C is already defined as FINAL procedure!"
- msgstr ""
-
--#: fortran/decl.c:9734
-+#: fortran/decl.c:9752
- #, gcc-internal-format, gfc-internal-format
- msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C"
- msgstr ""
-
--#: fortran/decl.c:9780
-+#: fortran/decl.c:9798
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C"
- msgstr ""
-
--#: fortran/dependency.c:191
-+#: fortran/dependency.c:105
- #, gcc-internal-format
-+msgid "identical_array_ref(): inconsistent dimensions"
-+msgstr ""
-+
-+#: fortran/dependency.c:193
-+#, gcc-internal-format
- msgid "are_identical_variables: Bad type"
- msgstr ""
-
-@@ -50316,12 +50425,17 @@
- #. If a dependency is found in the case
- #. elemental == ELEM_CHECK_VARIABLE, we will generate
- #. a temporary, so we don't need to bother the user.
--#: fortran/dependency.c:958
-+#: fortran/dependency.c:977
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "INTENT(%s) actual argument at %L might interfere with actual argument at %L."
- msgstr ""
-
-+#: fortran/dependency.c:1281
-+#, gcc-internal-format
-+msgid "gfc_check_dependency: expecting an EXPR_VARIABLE"
-+msgstr ""
-+
- #: fortran/dump-parse-tree.c:188
- #, gcc-internal-format
- msgid "show_array_spec(): Unhandled array shape type."
-@@ -50625,18 +50739,18 @@
- msgid "BOZ literal at %L used to initialize non-integer variable %qs"
- msgstr ""
-
--#: fortran/expr.c:3252 fortran/resolve.c:9548
-+#: fortran/expr.c:3252 fortran/resolve.c:9586
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
- msgstr ""
-
--#: fortran/expr.c:3263 fortran/resolve.c:9559
-+#: fortran/expr.c:3263 fortran/resolve.c:9597
- #, gcc-internal-format
- msgid "BOZ literal at %L is bitwise transferred non-integer symbol %qs"
- msgstr ""
-
--#: fortran/expr.c:3271 fortran/resolve.c:9568
-+#: fortran/expr.c:3271 fortran/resolve.c:9606
- #, gcc-internal-format
- msgid ""
- "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be "
-@@ -50643,7 +50757,7 @@
- "disabled with the option %<-fno-range-check%>"
- msgstr ""
-
--#: fortran/expr.c:3275 fortran/resolve.c:9572
-+#: fortran/expr.c:3275 fortran/resolve.c:9610
- #, gcc-internal-format
- msgid ""
- "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be "
-@@ -50650,7 +50764,7 @@
- "disabled with the option %<-fno-range-check%>"
- msgstr ""
-
--#: fortran/expr.c:3279 fortran/resolve.c:9576
-+#: fortran/expr.c:3279 fortran/resolve.c:9614
- #, gcc-internal-format
- msgid ""
- "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled "
-@@ -50906,19 +51020,19 @@
- msgid "LOCK_EVENT in variable definition context (%s) at %L"
- msgstr ""
-
--#: fortran/expr.c:4904
-+#: fortran/expr.c:4905
- #, gcc-internal-format
- msgid ""
- "Dummy argument %qs with INTENT(IN) in pointer association context (%s) at %L"
- msgstr ""
-
--#: fortran/expr.c:4912
-+#: fortran/expr.c:4913
- #, gcc-internal-format
- msgid ""
- "Dummy argument %qs with INTENT(IN) in variable definition context (%s) at %L"
- msgstr ""
-
--#: fortran/expr.c:4925
-+#: fortran/expr.c:4926
- #, gcc-internal-format
- msgid ""
- "Variable %qs is PROTECTED and can not appear in a pointer association "
-@@ -50925,7 +51039,7 @@
- "context (%s) at %L"
- msgstr ""
-
--#: fortran/expr.c:4933
-+#: fortran/expr.c:4934
- #, gcc-internal-format
- msgid ""
- "Variable %qs is PROTECTED and can not appear in a variable definition "
-@@ -50932,7 +51046,7 @@
- "context (%s) at %L"
- msgstr ""
-
--#: fortran/expr.c:4945
-+#: fortran/expr.c:4946
- #, gcc-internal-format
- msgid ""
- "Variable %qs can not appear in a variable definition context (%s) at %L in "
-@@ -50939,7 +51053,7 @@
- "PURE procedure"
- msgstr ""
-
--#: fortran/expr.c:5004
-+#: fortran/expr.c:5005
- #, gcc-internal-format
- msgid ""
- "%qs at %L associated to vector-indexed target can not be used in a variable "
-@@ -50946,7 +51060,7 @@
- "definition context (%s)"
- msgstr ""
-
--#: fortran/expr.c:5008
-+#: fortran/expr.c:5009
- #, gcc-internal-format
- msgid ""
- "%qs at %L associated to expression can not be used in a variable definition "
-@@ -50953,7 +51067,7 @@
- "context (%s)"
- msgstr ""
-
--#: fortran/expr.c:5019
-+#: fortran/expr.c:5020
- #, gcc-internal-format
- msgid ""
- "Associate-name %qs can not appear in a variable definition context (%s) at "
-@@ -50960,7 +51074,7 @@
- "%L because its target at %L can not, either"
- msgstr ""
-
--#: fortran/expr.c:5061
-+#: fortran/expr.c:5062
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Elements with the same value at %L and %L in vector subscript in a variable "
-@@ -50972,29 +51086,29 @@
- msgid "can't open input file: %s"
- msgstr ""
-
--#: fortran/frontend-passes.c:311
-+#: fortran/frontend-passes.c:326
- #, gcc-internal-format
- msgid "Illegal id in copy_walk_reduction_arg"
- msgstr ""
-
--#: fortran/frontend-passes.c:711 fortran/trans-array.c:1044
-+#: fortran/frontend-passes.c:726 fortran/trans-array.c:1044
- #: fortran/trans-array.c:6179 fortran/trans-array.c:7535
--#: fortran/trans-intrinsic.c:6278
-+#: fortran/trans-intrinsic.c:6291
- #, gcc-internal-format, gfc-internal-format
- msgid "Creating array temporary at %L"
- msgstr ""
-
--#: fortran/frontend-passes.c:735 fortran/frontend-passes.c:738
-+#: fortran/frontend-passes.c:750 fortran/frontend-passes.c:753
- #, gcc-internal-format
- msgid "Removing call to function %qs at %L"
- msgstr ""
-
--#: fortran/frontend-passes.c:1718
-+#: fortran/frontend-passes.c:1741
- #, gcc-internal-format
- msgid "illegal OP in optimize_comparison"
- msgstr ""
-
--#: fortran/frontend-passes.c:1910
-+#: fortran/frontend-passes.c:1933
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L set to undefined value inside loop beginning at %L as "
-@@ -51001,7 +51115,7 @@
- "INTENT(OUT) argument to subroutine %qs"
- msgstr ""
-
--#: fortran/frontend-passes.c:1917
-+#: fortran/frontend-passes.c:1940
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L not definable inside loop beginning at %L as "
-@@ -51008,7 +51122,7 @@
- "INTENT(INOUT) argument to subroutine %qs"
- msgstr ""
-
--#: fortran/frontend-passes.c:1982
-+#: fortran/frontend-passes.c:2005
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L set to undefined value inside loop beginning at %L as "
-@@ -51015,7 +51129,7 @@
- "INTENT(OUT) argument to function %qs"
- msgstr ""
-
--#: fortran/frontend-passes.c:1988
-+#: fortran/frontend-passes.c:2011
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L not definable inside loop beginning at %L as "
-@@ -51022,12 +51136,12 @@
- "INTENT(INOUT) argument to function %qs"
- msgstr ""
-
--#: fortran/frontend-passes.c:2236 fortran/trans-expr.c:1522
-+#: fortran/frontend-passes.c:2259 fortran/trans-expr.c:1548
- #, gcc-internal-format, gfc-internal-format
- msgid "Code for reallocating the allocatable array at %L will be added"
- msgstr ""
+- /* Skip the leading '%' as that cannot be used in a
+- symbol name. */
+- reg_name += 1;
+-
+- if (USE_HIDDEN_LINKONCE)
+- sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
+- else
+- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
+-}
+-
+ /* Wrapper around the load_pcrel_sym{si,di} patterns. */
--#: fortran/frontend-passes.c:2715
-+#: fortran/frontend-passes.c:2738
- #, gcc-internal-format
- msgid "Scalarization using DIMEN_RANGE unimplemented"
- msgstr ""
-@@ -51102,27 +51216,32 @@
- msgid "Expecting %<END INTERFACE %s%> at %C"
- msgstr ""
+ static rtx
+@@ -4298,30 +4279,78 @@
+ return insn;
+ }
--#: fortran/interface.c:769
-+#: fortran/interface.c:521
-+#, gcc-internal-format
-+msgid "gfc_compare_derived_types: invalid derived type"
-+msgstr ""
++/* Output the load_pcrel_sym{si,di} patterns. */
+
-+#: fortran/interface.c:770
- #, gcc-internal-format, gfc-internal-format
- msgid "Alternate return cannot appear in operator interface at %L"
- msgstr ""
-
--#: fortran/interface.c:798
-+#: fortran/interface.c:799
- #, gcc-internal-format, gfc-internal-format
- msgid "Assignment operator interface at %L must have two arguments"
- msgstr ""
-
--#: fortran/interface.c:801
-+#: fortran/interface.c:802
- #, gcc-internal-format, gfc-internal-format
- msgid "Operator interface at %L has the wrong number of arguments"
- msgstr ""
-
--#: fortran/interface.c:814
-+#: fortran/interface.c:815
- #, gcc-internal-format, gfc-internal-format
- msgid "Assignment operator interface at %L must be a SUBROUTINE"
- msgstr ""
-
--#: fortran/interface.c:832
-+#: fortran/interface.c:833
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Assignment operator interface at %L must not redefine an INTRINSIC type "
-@@ -51129,12 +51248,12 @@
- "assignment"
- msgstr ""
-
--#: fortran/interface.c:841
-+#: fortran/interface.c:842
- #, gcc-internal-format, gfc-internal-format
- msgid "Intrinsic operator interface at %L must be a FUNCTION"
- msgstr ""
-
--#: fortran/interface.c:852
-+#: fortran/interface.c:853
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "First argument of defined assignment at %L must be INTENT(OUT) or "
-@@ -51141,33 +51260,33 @@
- "INTENT(INOUT)"
- msgstr ""
-
--#: fortran/interface.c:859
-+#: fortran/interface.c:860
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument of defined assignment at %L must be INTENT(IN)"
- msgstr ""
-
--#: fortran/interface.c:868 fortran/resolve.c:15452
-+#: fortran/interface.c:869 fortran/resolve.c:15523
- #, gcc-internal-format, gfc-internal-format
- msgid "First argument of operator interface at %L must be INTENT(IN)"
- msgstr ""
-
--#: fortran/interface.c:875 fortran/resolve.c:15470
-+#: fortran/interface.c:876 fortran/resolve.c:15541
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument of operator interface at %L must be INTENT(IN)"
- msgstr ""
-
--#: fortran/interface.c:980
-+#: fortran/interface.c:981
- #, gcc-internal-format, gfc-internal-format
- msgid "Operator interface at %L conflicts with intrinsic interface"
- msgstr ""
-
--#: fortran/interface.c:1312 fortran/interface.c:1371
-+#: fortran/interface.c:1313 fortran/interface.c:1372
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "check_dummy_characteristics: Unexpected result %i of gfc_dep_compare_expr"
- msgstr ""
-
--#: fortran/interface.c:1484
-+#: fortran/interface.c:1485
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "check_result_characteristics (1): Unexpected result %i of "
-@@ -51174,7 +51293,7 @@
- "gfc_dep_compare_expr"
- msgstr ""
-
--#: fortran/interface.c:1531
-+#: fortran/interface.c:1532
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "check_result_characteristics (2): Unexpected result %i of "
-@@ -51181,22 +51300,22 @@
- "gfc_dep_compare_expr"
- msgstr ""
-
--#: fortran/interface.c:1698
-+#: fortran/interface.c:1708
- #, gcc-internal-format
- msgid "Procedure %qs in %s at %L has no explicit interface"
- msgstr ""
-
--#: fortran/interface.c:1701
-+#: fortran/interface.c:1711
- #, gcc-internal-format
- msgid "Procedure %qs in %s at %L is neither function nor subroutine"
- msgstr ""
-
--#: fortran/interface.c:1713
-+#: fortran/interface.c:1723
- #, gcc-internal-format, gfc-internal-format
- msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
- msgstr ""
-
--#: fortran/interface.c:1717
-+#: fortran/interface.c:1727
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "In %s at %L procedures must be all FUNCTIONs as the generic name is also the "
-@@ -51203,27 +51322,27 @@
- "name of a derived type"
- msgstr ""
-
--#: fortran/interface.c:1725
-+#: fortran/interface.c:1735
- #, gcc-internal-format
- msgid "Internal procedure %qs in %s at %L"
- msgstr ""
-
--#: fortran/interface.c:1782 fortran/interface.c:1786
-+#: fortran/interface.c:1792 fortran/interface.c:1797
- #, gcc-internal-format
--msgid "Ambiguous interfaces %qs and %qs in %s at %L"
-+msgid "Ambiguous interfaces in %s for %qs at %L and %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:1790
-+#: fortran/interface.c:1802
- #, gcc-internal-format
- msgid "Although not referenced, %qs has ambiguous interfaces at %L"
- msgstr ""
-
--#: fortran/interface.c:1825
-+#: fortran/interface.c:1837
- #, gcc-internal-format
- msgid "%qs at %L is not a module procedure"
- msgstr ""
-
--#: fortran/interface.c:2029
-+#: fortran/interface.c:2041
- #, gcc-internal-format
- msgid ""
- "The assumed-rank array at %L requires that the dummy argument %qs has "
-@@ -51230,32 +51349,32 @@
- "assumed-rank"
- msgstr ""
-
--#: fortran/interface.c:2034
-+#: fortran/interface.c:2046
- #, gcc-internal-format
- msgid "Rank mismatch in argument %qs at %L (scalar and rank-%d)"
- msgstr ""
-
--#: fortran/interface.c:2039
-+#: fortran/interface.c:2051
- #, gcc-internal-format
- msgid "Rank mismatch in argument %qs at %L (rank-%d and scalar)"
- msgstr ""
-
--#: fortran/interface.c:2044
-+#: fortran/interface.c:2056
- #, gcc-internal-format
- msgid "Rank mismatch in argument %qs at %L (rank-%d and rank-%d)"
- msgstr ""
-
--#: fortran/interface.c:2087
-+#: fortran/interface.c:2099
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid procedure argument at %L"
- msgstr ""
-
--#: fortran/interface.c:2095 fortran/interface.c:2122
-+#: fortran/interface.c:2107 fortran/interface.c:2134
- #, gcc-internal-format
- msgid "Interface mismatch in dummy procedure %qs at %L: %s"
- msgstr ""
-
--#: fortran/interface.c:2133
-+#: fortran/interface.c:2145
- #, gcc-internal-format
- msgid ""
- "Actual argument to contiguous pointer dummy %qs at %L must be simply "
-@@ -51262,12 +51381,12 @@
- "contiguous"
- msgstr ""
-
--#: fortran/interface.c:2148
-+#: fortran/interface.c:2160
- #, gcc-internal-format
- msgid "Type mismatch in argument %qs at %L; passed %s to %s"
- msgstr ""
-
--#: fortran/interface.c:2157
-+#: fortran/interface.c:2169
- #, gcc-internal-format
- msgid ""
- "Assumed-type actual argument at %L requires that dummy argument %qs is of "
-@@ -51274,17 +51393,17 @@
- "assumed type"
- msgstr ""
-
--#: fortran/interface.c:2173
-+#: fortran/interface.c:2185
- #, gcc-internal-format
- msgid "Actual argument to %qs at %L must be polymorphic"
- msgstr ""
-
--#: fortran/interface.c:2186
-+#: fortran/interface.c:2198
- #, gcc-internal-format
- msgid "Actual argument to %qs at %L must have the same declared type"
- msgstr ""
-
--#: fortran/interface.c:2201
-+#: fortran/interface.c:2213
- #, gcc-internal-format
- msgid ""
- "Actual argument to %qs at %L must be unlimited polymorphic since the formal "
-@@ -51292,17 +51411,17 @@
- "12.5.2.5]"
- msgstr ""
-
--#: fortran/interface.c:2212
-+#: fortran/interface.c:2224
- #, gcc-internal-format
- msgid "Actual argument to %qs at %L must be a coarray"
- msgstr ""
-
--#: fortran/interface.c:2231
-+#: fortran/interface.c:2243
- #, gcc-internal-format
- msgid "Corank mismatch in argument %qs at %L (%d and %d)"
- msgstr ""
-
--#: fortran/interface.c:2249
-+#: fortran/interface.c:2261
- #, gcc-internal-format
- msgid ""
- "Actual argument to %qs at %L must be simply contiguous or an element of such "
-@@ -51309,7 +51428,7 @@
- "an array"
- msgstr ""
-
--#: fortran/interface.c:2264
-+#: fortran/interface.c:2276
- #, gcc-internal-format
- msgid ""
- "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or "
-@@ -51316,7 +51435,7 @@
- "has a LOCK_TYPE component"
- msgstr ""
-
--#: fortran/interface.c:2279
-+#: fortran/interface.c:2291
- #, gcc-internal-format
- msgid ""
- "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or "
-@@ -51323,7 +51442,7 @@
- "has a EVENT_TYPE component"
- msgstr ""
-
--#: fortran/interface.c:2298
-+#: fortran/interface.c:2310
- #, gcc-internal-format
- msgid ""
- "Dummy argument %qs has to be a pointer, assumed-shape or assumed-rank array "
-@@ -51331,7 +51450,7 @@
- "contiguous and both are ASYNCHRONOUS or VOLATILE"
- msgstr ""
-
--#: fortran/interface.c:2311
-+#: fortran/interface.c:2323
- #, gcc-internal-format
- msgid ""
- "Passing coarray at %L to allocatable, noncoarray, INTENT(OUT) dummy argument "
-@@ -51338,7 +51457,7 @@
- "%qs"
- msgstr ""
-
--#: fortran/interface.c:2318
-+#: fortran/interface.c:2330
- #, gcc-internal-format
- msgid ""
- "Passing coarray at %L to allocatable, noncoarray dummy argument %qs, which "
-@@ -51345,12 +51464,12 @@
- "is invalid if the allocation status is modified"
- msgstr ""
-
--#: fortran/interface.c:2381
-+#: fortran/interface.c:2393
- #, gcc-internal-format
- msgid "Polymorphic scalar passed to array dummy argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2390
-+#: fortran/interface.c:2402
- #, gcc-internal-format
- msgid ""
- "Element of assumed-shaped or pointer array passed to array dummy argument "
-@@ -51357,7 +51476,7 @@
- "%qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2402
-+#: fortran/interface.c:2414
- #, gcc-internal-format
- msgid ""
- "Extension: Scalar non-default-kind, non-C_CHAR-kind CHARACTER actual "
-@@ -51364,7 +51483,7 @@
- "argument with array dummy argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2410
-+#: fortran/interface.c:2422
- #, gcc-internal-format
- msgid ""
- "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument %qs "
-@@ -51371,43 +51490,43 @@
- "at %L"
- msgstr ""
-
--#: fortran/interface.c:2739
-+#: fortran/interface.c:2751
- #, gcc-internal-format
- msgid "Keyword argument %qs at %L is not in the procedure"
- msgstr ""
-
--#: fortran/interface.c:2747
-+#: fortran/interface.c:2759
- #, gcc-internal-format
- msgid ""
- "Keyword argument %qs at %L is already associated with another actual argument"
- msgstr ""
-
--#: fortran/interface.c:2757
-+#: fortran/interface.c:2769
- #, gcc-internal-format, gfc-internal-format
- msgid "More actual than formal arguments in procedure call at %L"
- msgstr ""
-
--#: fortran/interface.c:2769 fortran/interface.c:3139
-+#: fortran/interface.c:2781 fortran/interface.c:3151
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing alternate return spec in subroutine call at %L"
- msgstr ""
-
--#: fortran/interface.c:2777
-+#: fortran/interface.c:2789
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected alternate return spec in subroutine call at %L"
- msgstr ""
-
--#: fortran/interface.c:2804
-+#: fortran/interface.c:2816
- #, gcc-internal-format
- msgid "Unexpected NULL() intrinsic at %L to dummy %qs"
- msgstr ""
-
--#: fortran/interface.c:2807
-+#: fortran/interface.c:2819
- #, gcc-internal-format
- msgid "Fortran 2008: Null pointer at %L to non-pointer dummy %qs"
- msgstr ""
-
--#: fortran/interface.c:2831
-+#: fortran/interface.c:2843
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Actual argument at %L to assumed-type dummy is of derived type with type-"
-@@ -51414,7 +51533,7 @@
- "bound or FINAL procedures"
- msgstr ""
-
--#: fortran/interface.c:2853
-+#: fortran/interface.c:2865
- #, gcc-internal-format
- msgid ""
- "Character length mismatch (%ld/%ld) between actual argument and pointer or "
-@@ -51421,7 +51540,7 @@
- "allocatable dummy argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2861
-+#: fortran/interface.c:2873
- #, gcc-internal-format
- msgid ""
- "Character length mismatch (%ld/%ld) between actual argument and assumed-"
-@@ -51428,7 +51547,7 @@
- "shape dummy argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2875
-+#: fortran/interface.c:2887
- #, gcc-internal-format
- msgid ""
- "Actual argument at %L to allocatable or pointer dummy argument %qs must have "
-@@ -51435,7 +51554,7 @@
- "a deferred length type parameter if and only if the dummy has one"
- msgstr ""
-
--#: fortran/interface.c:2892
-+#: fortran/interface.c:2904
- #, gcc-internal-format
- msgid ""
- "Character length of actual argument shorter than of dummy argument %qs (%lu/"
-@@ -51442,7 +51561,7 @@
- "%lu) at %L"
- msgstr ""
-
--#: fortran/interface.c:2897
-+#: fortran/interface.c:2909
- #, gcc-internal-format
- msgid ""
- "Actual argument contains too few elements for dummy argument %qs (%lu/%lu) "
-@@ -51449,43 +51568,43 @@
- "at %L"
- msgstr ""
-
--#: fortran/interface.c:2916
-+#: fortran/interface.c:2928
- #, gcc-internal-format
- msgid "Expected a procedure pointer for argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2932
-+#: fortran/interface.c:2944
- #, gcc-internal-format
- msgid "Expected a procedure for argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:2946
-+#: fortran/interface.c:2958
- #, gcc-internal-format
- msgid "Actual argument for %qs cannot be an assumed-size array at %L"
- msgstr ""
-
--#: fortran/interface.c:2955
-+#: fortran/interface.c:2967
- #, gcc-internal-format
- msgid "Actual argument for %qs must be a pointer at %L"
- msgstr ""
-
--#: fortran/interface.c:2965
-+#: fortran/interface.c:2977
- #, gcc-internal-format
- msgid "Fortran 2008: Non-pointer actual argument at %L to pointer dummy %qs"
- msgstr ""
-
--#: fortran/interface.c:2975
-+#: fortran/interface.c:2987
- #, gcc-internal-format
- msgid "Coindexed actual argument at %L to pointer dummy %qs"
- msgstr ""
-
--#: fortran/interface.c:2988
-+#: fortran/interface.c:3000
- #, gcc-internal-format
- msgid ""
- "Coindexed actual argument at %L to allocatable dummy %qs requires INTENT(IN)"
- msgstr ""
-
--#: fortran/interface.c:3002
-+#: fortran/interface.c:3014
- #, gcc-internal-format
- msgid ""
- "Coindexed ASYNCHRONOUS or VOLATILE actual argument at %L requires that dummy "
-@@ -51492,7 +51611,7 @@
- "%qs has neither ASYNCHRONOUS nor VOLATILE"
- msgstr ""
-
--#: fortran/interface.c:3016
-+#: fortran/interface.c:3028
- #, gcc-internal-format
- msgid ""
- "Coindexed actual argument at %L with allocatable ultimate component to dummy "
-@@ -51499,17 +51618,17 @@
- "%qs requires either VALUE or INTENT(IN)"
- msgstr ""
-
--#: fortran/interface.c:3028
-+#: fortran/interface.c:3040
- #, gcc-internal-format
- msgid "Actual CLASS array argument for %qs must be a full array at %L"
- msgstr ""
-
--#: fortran/interface.c:3038
-+#: fortran/interface.c:3050
- #, gcc-internal-format
- msgid "Actual argument for %qs must be ALLOCATABLE at %L"
- msgstr ""
-
--#: fortran/interface.c:3067
-+#: fortran/interface.c:3079
- #, gcc-internal-format
- msgid ""
- "Array-section actual argument with vector subscripts at %L is incompatible "
-@@ -51517,7 +51636,7 @@
- "dummy argument %qs"
- msgstr ""
-
--#: fortran/interface.c:3085
-+#: fortran/interface.c:3097
- #, gcc-internal-format
- msgid ""
- "Assumed-shape actual argument at %L is incompatible with the non-assumed-"
-@@ -51524,7 +51643,7 @@
- "shape dummy argument %qs due to VOLATILE attribute"
- msgstr ""
-
--#: fortran/interface.c:3097
-+#: fortran/interface.c:3109
- #, gcc-internal-format
- msgid ""
- "Array-section actual argument at %L is incompatible with the non-assumed-"
-@@ -51531,7 +51650,7 @@
- "shape dummy argument %qs due to VOLATILE attribute"
- msgstr ""
-
--#: fortran/interface.c:3116
-+#: fortran/interface.c:3128
- #, gcc-internal-format
- msgid ""
- "Pointer-array actual argument at %L requires an assumed-shape or pointer-"
-@@ -51538,27 +51657,27 @@
- "array dummy argument %qs due to VOLATILE attribute"
- msgstr ""
-
--#: fortran/interface.c:3146
-+#: fortran/interface.c:3158
- #, gcc-internal-format
- msgid "Missing actual argument for argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:3263
-+#: fortran/interface.c:3275
- #, gcc-internal-format
- msgid "compare_actual_expr(): Bad component code"
- msgstr ""
-
--#: fortran/interface.c:3292
-+#: fortran/interface.c:3304
- #, gcc-internal-format
- msgid "check_some_aliasing(): List mismatch"
- msgstr ""
-
--#: fortran/interface.c:3318
-+#: fortran/interface.c:3330
- #, gcc-internal-format
- msgid "check_some_aliasing(): corrupted data"
- msgstr ""
-
--#: fortran/interface.c:3328
-+#: fortran/interface.c:3340
- #, gcc-internal-format
- msgid ""
- "Same actual argument associated with INTENT(%s) argument %qs and INTENT(%s) "
-@@ -51565,12 +51684,12 @@
- "argument %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:3358
-+#: fortran/interface.c:3370
- #, gcc-internal-format
- msgid "check_intents(): List mismatch"
- msgstr ""
-
--#: fortran/interface.c:3378
-+#: fortran/interface.c:3390
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Procedure argument at %L is local to a PURE procedure and has the POINTER "
-@@ -51577,7 +51696,7 @@
- "attribute"
- msgstr ""
-
--#: fortran/interface.c:3390
-+#: fortran/interface.c:3402
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Coindexed actual argument at %L in PURE procedure is passed to an INTENT(%s) "
-@@ -51584,7 +51703,7 @@
- "argument"
- msgstr ""
-
--#: fortran/interface.c:3400
-+#: fortran/interface.c:3412
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Coindexed actual argument at %L in PURE procedure is passed to a POINTER "
-@@ -51591,7 +51710,7 @@
- "dummy argument"
- msgstr ""
-
--#: fortran/interface.c:3411
-+#: fortran/interface.c:3423
- #, gcc-internal-format
- msgid ""
- "Coindexed polymorphic actual argument at %L is passed polymorphic dummy "
-@@ -51598,17 +51717,17 @@
- "argument %qs"
- msgstr ""
-
--#: fortran/interface.c:3439 fortran/interface.c:3449
-+#: fortran/interface.c:3451 fortran/interface.c:3461
- #, gcc-internal-format
- msgid "Procedure %qs called at %L is not explicitly declared"
- msgstr ""
-
--#: fortran/interface.c:3445
-+#: fortran/interface.c:3457
- #, gcc-internal-format
- msgid "Procedure %qs called with an implicit interface at %L"
- msgstr ""
-
--#: fortran/interface.c:3459
-+#: fortran/interface.c:3471
- #, gcc-internal-format
- msgid ""
- "The pointer object %qs at %L must have an explicit function interface or be "
-@@ -51615,7 +51734,7 @@
- "declared as array"
- msgstr ""
-
--#: fortran/interface.c:3467
-+#: fortran/interface.c:3479
- #, gcc-internal-format
- msgid ""
- "The allocatable object %qs at %L must have an explicit function interface or "
-@@ -51622,22 +51741,22 @@
- "be declared as array"
- msgstr ""
-
--#: fortran/interface.c:3475
-+#: fortran/interface.c:3487
- #, gcc-internal-format
- msgid "Allocatable function %qs at %L must have an explicit function interface"
- msgstr ""
-
--#: fortran/interface.c:3485
-+#: fortran/interface.c:3497
- #, gcc-internal-format
- msgid "Keyword argument requires explicit interface for procedure %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:3494
-+#: fortran/interface.c:3506
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed-type argument %s at %L requires an explicit interface"
- msgstr ""
-
--#: fortran/interface.c:3507
-+#: fortran/interface.c:3519
- #, gcc-internal-format
- msgid ""
- "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an "
-@@ -51644,7 +51763,7 @@
- "explicit interface for procedure %qs"
- msgstr ""
-
--#: fortran/interface.c:3520
-+#: fortran/interface.c:3532
- #, gcc-internal-format
- msgid ""
- "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an "
-@@ -51651,22 +51770,22 @@
- "explicit interface for procedure %qs"
- msgstr ""
-
--#: fortran/interface.c:3529
-+#: fortran/interface.c:3541
- #, gcc-internal-format, gfc-internal-format
- msgid "MOLD argument to NULL required at %L"
- msgstr ""
-
--#: fortran/interface.c:3537
-+#: fortran/interface.c:3549
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed-rank argument requires an explicit interface at %L"
- msgstr ""
-
--#: fortran/interface.c:3575
-+#: fortran/interface.c:3587
- #, gcc-internal-format
- msgid "Procedure pointer component %qs called with an implicit interface at %L"
- msgstr ""
-
--#: fortran/interface.c:3586
-+#: fortran/interface.c:3598
- #, gcc-internal-format
- msgid ""
- "Keyword argument requires explicit interface for procedure pointer component "
-@@ -51673,7 +51792,7 @@
- "%qs at %L"
- msgstr ""
-
--#: fortran/interface.c:3671
-+#: fortran/interface.c:3683
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "MOLD= required in NULL() argument at %L: Ambiguity between specific "
-@@ -51680,47 +51799,47 @@
- "functions %s and %s"
- msgstr ""
-
--#: fortran/interface.c:3741
-+#: fortran/interface.c:3753
- #, gcc-internal-format
- msgid "Unable to find symbol %qs"
- msgstr ""
-
--#: fortran/interface.c:4108
-+#: fortran/interface.c:4120
- #, gcc-internal-format
- msgid "Entity %qs at %L is already present in the interface"
- msgstr ""
-
--#: fortran/interface.c:4224
-+#: fortran/interface.c:4236
- #, gcc-internal-format
- msgid "gfc_add_interface(): Bad interface type"
- msgstr ""
-
--#: fortran/interface.c:4319
-+#: fortran/interface.c:4331
- #, gcc-internal-format
- msgid "Can't overwrite GENERIC %qs at %L"
- msgstr ""
-
--#: fortran/interface.c:4331
-+#: fortran/interface.c:4343
- #, gcc-internal-format
- msgid "%qs at %L overrides a procedure binding declared NON_OVERRIDABLE"
- msgstr ""
-
--#: fortran/interface.c:4339
-+#: fortran/interface.c:4351
- #, gcc-internal-format
- msgid "%qs at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
- msgstr ""
-
--#: fortran/interface.c:4347
-+#: fortran/interface.c:4359
- #, gcc-internal-format
- msgid "%qs at %L overrides a PURE procedure and must also be PURE"
- msgstr ""
-
--#: fortran/interface.c:4356
-+#: fortran/interface.c:4368
- #, gcc-internal-format
- msgid "%qs at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
- msgstr ""
-
--#: fortran/interface.c:4362
-+#: fortran/interface.c:4374
- #, gcc-internal-format
- msgid ""
- "%qs at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, "
-@@ -51727,27 +51846,27 @@
- "either"
- msgstr ""
-
--#: fortran/interface.c:4371
-+#: fortran/interface.c:4383
- #, gcc-internal-format
- msgid "%qs at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
- msgstr ""
-
--#: fortran/interface.c:4382
-+#: fortran/interface.c:4394
- #, gcc-internal-format
- msgid "%qs at %L overrides a FUNCTION and must also be a FUNCTION"
- msgstr ""
-
--#: fortran/interface.c:4390
-+#: fortran/interface.c:4402
- #, gcc-internal-format
- msgid "Result mismatch for the overriding procedure %qs at %L: %s"
- msgstr ""
-
--#: fortran/interface.c:4401
-+#: fortran/interface.c:4413
- #, gcc-internal-format
- msgid "%qs at %L overrides a PUBLIC procedure and must not be PRIVATE"
- msgstr ""
-
--#: fortran/interface.c:4431
-+#: fortran/interface.c:4443
- #, gcc-internal-format
- msgid ""
- "Dummy argument %qs of %qs at %L should be named %qs as to match the "
-@@ -51754,12 +51873,12 @@
- "corresponding argument of the overridden procedure"
- msgstr ""
-
--#: fortran/interface.c:4442
-+#: fortran/interface.c:4454
- #, gcc-internal-format
- msgid "Argument mismatch for the overriding procedure %qs at %L: %s"
- msgstr ""
-
--#: fortran/interface.c:4451
-+#: fortran/interface.c:4463
- #, gcc-internal-format
- msgid ""
- "%qs at %L must have the same number of formal arguments as the overridden "
-@@ -51766,17 +51885,17 @@
- "procedure"
- msgstr ""
-
--#: fortran/interface.c:4460
-+#: fortran/interface.c:4472
- #, gcc-internal-format
- msgid "%qs at %L overrides a NOPASS binding and must also be NOPASS"
- msgstr ""
-
--#: fortran/interface.c:4471
-+#: fortran/interface.c:4483
- #, gcc-internal-format
- msgid "%qs at %L overrides a binding with PASS and must also be PASS"
- msgstr ""
-
--#: fortran/interface.c:4478
-+#: fortran/interface.c:4490
- #, gcc-internal-format
- msgid ""
- "Passed-object dummy argument of %qs at %L must be at the same position as "
-@@ -51841,12 +51960,12 @@
- msgid "make_generic(): Can't find generic symbol %qs"
- msgstr ""
-
--#: fortran/intrinsic.c:3871
-+#: fortran/intrinsic.c:3872
- #, gcc-internal-format
- msgid "Too many arguments in call to %qs at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:3886
-+#: fortran/intrinsic.c:3887
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The argument list functions %%VAL, %%LOC or %%REF are not allowed in this "
-@@ -51853,62 +51972,62 @@
- "context at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:3889
-+#: fortran/intrinsic.c:3890
- #, gcc-internal-format
- msgid "Can't find keyword named %qs in call to %qs at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:3896
-+#: fortran/intrinsic.c:3897
- #, gcc-internal-format
- msgid "Argument %qs appears twice in call to %qs at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:3910
-+#: fortran/intrinsic.c:3911
- #, gcc-internal-format
- msgid "Missing actual argument %qs in call to %qs at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:3925
-+#: fortran/intrinsic.c:3926
- #, gcc-internal-format, gfc-internal-format
- msgid "ALTERNATE RETURN not permitted at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:3982
-+#: fortran/intrinsic.c:3983
- #, gcc-internal-format
- msgid "Type of argument %qs in call to %qs at %L should be %s, not %s"
- msgstr ""
-
--#: fortran/intrinsic.c:4088
-+#: fortran/intrinsic.c:4089
- #, gcc-internal-format
- msgid "resolve_intrinsic(): Too many args for intrinsic"
- msgstr ""
-
--#: fortran/intrinsic.c:4174
-+#: fortran/intrinsic.c:4175
- #, gcc-internal-format
- msgid "do_simplify(): Too many args for intrinsic"
- msgstr ""
-
--#: fortran/intrinsic.c:4213
-+#: fortran/intrinsic.c:4214
- #, gcc-internal-format
- msgid "init_arglist(): too many arguments"
- msgstr ""
-
--#: fortran/intrinsic.c:4363
-+#: fortran/intrinsic.c:4364
- #, gcc-internal-format
- msgid "Invalid standard code on intrinsic %qs (%d)"
- msgstr ""
-
--#: fortran/intrinsic.c:4372
-+#: fortran/intrinsic.c:4373
- #, gcc-internal-format
- msgid "Intrinsic %qs (is %s) is used at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4443
-+#: fortran/intrinsic.c:4444
- #, gcc-internal-format
- msgid "Function %qs as initialization expression at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4519
-+#: fortran/intrinsic.c:4520
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Elemental function as initialization expression with non-integer/non-"
-@@ -51915,43 +52034,43 @@
- "character arguments at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4590
-+#: fortran/intrinsic.c:4591
- #, gcc-internal-format
- msgid ""
- "Subroutine call to intrinsic %qs in DO CONCURRENT block at %L is not PURE"
- msgstr ""
-
--#: fortran/intrinsic.c:4597
-+#: fortran/intrinsic.c:4598
- #, gcc-internal-format
- msgid "Subroutine call to intrinsic %qs at %L is not PURE"
- msgstr ""
-
--#: fortran/intrinsic.c:4673
-+#: fortran/intrinsic.c:4674
- #, gcc-internal-format, gfc-internal-format
- msgid "Extension: Conversion from %s to %s at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4709 fortran/intrinsic.c:4726
-+#: fortran/intrinsic.c:4710 fortran/intrinsic.c:4727
- #, gcc-internal-format, gfc-internal-format
- msgid "Possible change of value in conversion from %s to %s at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4714 fortran/intrinsic.c:4735
-+#: fortran/intrinsic.c:4715 fortran/intrinsic.c:4736
- #, gcc-internal-format, gfc-internal-format
- msgid "Conversion from %s to %s at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4788
-+#: fortran/intrinsic.c:4789
- #, gcc-internal-format, gfc-internal-format
- msgid "Can't convert %s to %s at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4793
-+#: fortran/intrinsic.c:4794
- #, gcc-internal-format
- msgid "Can't convert %qs to %qs at %L"
- msgstr ""
-
--#: fortran/intrinsic.c:4883
-+#: fortran/intrinsic.c:4884
- #, gcc-internal-format
- msgid ""
- "%qs declared at %L may shadow the intrinsic of the same name. In order to "
-@@ -51958,7 +52077,7 @@
- "call the intrinsic, explicit INTRINSIC declarations may be required."
- msgstr ""
-
--#: fortran/intrinsic.c:4889
-+#: fortran/intrinsic.c:4890
- #, gcc-internal-format
- msgid ""
- "%qs declared at %L is also the name of an intrinsic. It can only be called "
-@@ -51970,358 +52089,358 @@
- msgid "Extension: backslash character at %C"
- msgstr ""
-
--#: fortran/io.c:203 fortran/io.c:206
-+#: fortran/io.c:201
- #, gcc-internal-format, gfc-internal-format
--msgid "Extension: Tab character in format at %C"
-+msgid "Nonconforming tab character in format at %C"
- msgstr ""
-
--#: fortran/io.c:454
-+#: fortran/io.c:444
- #, gcc-internal-format, gfc-internal-format
- msgid "DP format specifier not allowed at %C"
- msgstr ""
-
--#: fortran/io.c:461
-+#: fortran/io.c:451
- #, gcc-internal-format, gfc-internal-format
- msgid "DC format specifier not allowed at %C"
- msgstr ""
-
--#: fortran/io.c:650
-+#: fortran/io.c:637
- #, gcc-internal-format, gfc-internal-format
- msgid "X descriptor requires leading space count at %L"
- msgstr ""
-
--#: fortran/io.c:679
-+#: fortran/io.c:666
- #, gcc-internal-format, gfc-internal-format
- msgid "$ descriptor at %L"
- msgstr ""
-
--#: fortran/io.c:683
-+#: fortran/io.c:670
- #, gcc-internal-format, gfc-internal-format
- msgid "$ should be the last specifier in format at %L"
- msgstr ""
-
--#: fortran/io.c:781
-+#: fortran/io.c:768
- #, gcc-internal-format, gfc-internal-format
- msgid "Extension: Missing positive width after L descriptor at %L"
- msgstr ""
-
--#: fortran/io.c:825
-+#: fortran/io.c:812
- #, gcc-internal-format
- msgid "%<G0%> in format at %L"
- msgstr ""
-
--#: fortran/io.c:853
-+#: fortran/io.c:840
- #, gcc-internal-format, gfc-internal-format
- msgid "Positive width required in format specifier %s at %L"
- msgstr ""
-
--#: fortran/io.c:869 fortran/io.c:876
-+#: fortran/io.c:856 fortran/io.c:863
- #, gcc-internal-format, gfc-internal-format
- msgid "Period required in format specifier %s at %L"
- msgstr ""
-
--#: fortran/io.c:948
-+#: fortran/io.c:935
- #, gcc-internal-format, gfc-internal-format
- msgid "Period required in format specifier at %L"
- msgstr ""
-
--#: fortran/io.c:970
-+#: fortran/io.c:957
- #, gcc-internal-format, gfc-internal-format
- msgid "The H format specifier at %L is a Fortran 95 deleted feature"
- msgstr ""
-
--#: fortran/io.c:1058 fortran/io.c:1120
-+#: fortran/io.c:1045 fortran/io.c:1107
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing comma at %L"
- msgstr ""
-
--#: fortran/io.c:1138
-+#: fortran/io.c:1125
- #, gcc-internal-format, gfc-internal-format
- msgid "%s in format string at %L"
- msgstr ""
-
--#: fortran/io.c:1176
-+#: fortran/io.c:1163
- #, gcc-internal-format, gfc-internal-format
- msgid "Extraneous characters in format at %L"
- msgstr ""
-
--#: fortran/io.c:1198
-+#: fortran/io.c:1185
- #, gcc-internal-format, gfc-internal-format
- msgid "Format statement in module main block at %C"
- msgstr ""
-
--#: fortran/io.c:1207
-+#: fortran/io.c:1194
- #, gcc-internal-format, gfc-internal-format
- msgid "FORMAT statement at %C cannot appear within an INTERFACE"
- msgstr ""
-
--#: fortran/io.c:1213
-+#: fortran/io.c:1200
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing format label at %C"
- msgstr ""
-
--#: fortran/io.c:1261
-+#: fortran/io.c:1248
- #, gcc-internal-format, gfc-internal-format
- msgid "IOMSG must be a scalar-default-char-variable at %L"
- msgstr ""
-
--#: fortran/io.c:1275
-+#: fortran/io.c:1262
- #, gcc-internal-format, gfc-internal-format
- msgid "%s requires a scalar-default-char-expr at %L"
- msgstr ""
-
--#: fortran/io.c:1298 fortran/io.c:1329 fortran/io.c:1395
-+#: fortran/io.c:1285 fortran/io.c:1316 fortran/io.c:1382
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid value for %s specification at %C"
- msgstr ""
-
--#: fortran/io.c:1304 fortran/io.c:1335
-+#: fortran/io.c:1291 fortran/io.c:1322
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate %s specification at %C"
- msgstr ""
-
--#: fortran/io.c:1342
-+#: fortran/io.c:1329
- #, gcc-internal-format, gfc-internal-format
- msgid "Variable %s cannot be INTENT(IN) at %C"
- msgstr ""
-
--#: fortran/io.c:1350
-+#: fortran/io.c:1337
- #, gcc-internal-format, gfc-internal-format
- msgid "Variable %s cannot be assigned in PURE procedure at %C"
- msgstr ""
-
--#: fortran/io.c:1401
-+#: fortran/io.c:1388
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate %s label specification at %C"
- msgstr ""
-
--#: fortran/io.c:1421
-+#: fortran/io.c:1408
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Constant expression in FORMAT tag at %L must be of type default CHARACTER"
- msgstr ""
-
--#: fortran/io.c:1439
-+#: fortran/io.c:1426
- #, gcc-internal-format, gfc-internal-format
- msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
- msgstr ""
-
--#: fortran/io.c:1445
-+#: fortran/io.c:1432
- #, gcc-internal-format, gfc-internal-format
- msgid "ASSIGNED variable in FORMAT tag at %L"
- msgstr ""
-
--#: fortran/io.c:1450
-+#: fortran/io.c:1437
- #, gcc-internal-format
- msgid "Variable %qs at %L has not been assigned a format label"
- msgstr ""
-
--#: fortran/io.c:1457
-+#: fortran/io.c:1444
- #, gcc-internal-format
- msgid "Scalar %qs in FORMAT tag at %L is not an ASSIGNED variable"
- msgstr ""
-
--#: fortran/io.c:1469
-+#: fortran/io.c:1456
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-character in FORMAT tag at %L"
- msgstr ""
-
--#: fortran/io.c:1475
-+#: fortran/io.c:1462
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-character assumed shape array element in FORMAT tag at %L"
- msgstr ""
-
--#: fortran/io.c:1482
-+#: fortran/io.c:1469
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-character assumed size array element in FORMAT tag at %L"
- msgstr ""
-
--#: fortran/io.c:1489
-+#: fortran/io.c:1476
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-character pointer array element in FORMAT tag at %L"
- msgstr ""
-
--#: fortran/io.c:1515
-+#: fortran/io.c:1502
- #, gcc-internal-format, gfc-internal-format
- msgid "%s tag at %L must be of type %s"
- msgstr ""
-
--#: fortran/io.c:1522
-+#: fortran/io.c:1509
- #, gcc-internal-format, gfc-internal-format
- msgid "%s tag at %L must be a character string of default kind"
- msgstr ""
-
--#: fortran/io.c:1529
-+#: fortran/io.c:1516
- #, gcc-internal-format, gfc-internal-format
- msgid "%s tag at %L must be scalar"
- msgstr ""
-
--#: fortran/io.c:1535
-+#: fortran/io.c:1522
- #, gcc-internal-format, gfc-internal-format
- msgid "IOMSG tag at %L"
- msgstr ""
-
--#: fortran/io.c:1543
-+#: fortran/io.c:1530
- #, gcc-internal-format, gfc-internal-format
- msgid "Fortran 95 requires default INTEGER in %s tag at %L"
- msgstr ""
-
--#: fortran/io.c:1552
-+#: fortran/io.c:1539
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-default LOGICAL kind in %s tag at %L"
- msgstr ""
-
--#: fortran/io.c:1559
-+#: fortran/io.c:1546
- #, gcc-internal-format, gfc-internal-format
- msgid "NEWUNIT specifier at %L"
- msgstr ""
-
--#: fortran/io.c:1577
-+#: fortran/io.c:1564
- #, gcc-internal-format, gfc-internal-format
- msgid "CONVERT tag at %L"
- msgstr ""
-
--#: fortran/io.c:1766
-+#: fortran/io.c:1753
- #, gcc-internal-format
- msgid "Fortran 2003: %s specifier in %s statement at %C has value %qs"
- msgstr ""
-
--#: fortran/io.c:1774 fortran/io.c:1801
-+#: fortran/io.c:1761 fortran/io.c:1788
- #, gcc-internal-format
- msgid "%s specifier in %s statement at %C has value %qs"
- msgstr ""
-
--#: fortran/io.c:1793
-+#: fortran/io.c:1780
- #, gcc-internal-format
- msgid "Extension: %s specifier in %s statement at %C has value %qs"
- msgstr ""
-
--#: fortran/io.c:1815 fortran/io.c:1823
-+#: fortran/io.c:1802 fortran/io.c:1810
- #, gcc-internal-format
- msgid "%s specifier in %s statement at %C has invalid value %qs"
- msgstr ""
-
--#: fortran/io.c:1876
-+#: fortran/io.c:1863
- #, gcc-internal-format, gfc-internal-format
- msgid "OPEN statement not allowed in PURE procedure at %C"
- msgstr ""
-
--#: fortran/io.c:1889
-+#: fortran/io.c:1876
- #, gcc-internal-format, gfc-internal-format
- msgid "UNIT specifier not allowed with NEWUNIT at %C"
- msgstr ""
-
--#: fortran/io.c:1899
-+#: fortran/io.c:1886
- #, gcc-internal-format, gfc-internal-format
- msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %C"
- msgstr ""
-
--#: fortran/io.c:1907
-+#: fortran/io.c:1894
- #, gcc-internal-format, gfc-internal-format
- msgid "OPEN statement at %C must have UNIT or NEWUNIT specified"
- msgstr ""
-
--#: fortran/io.c:1945
-+#: fortran/io.c:1932
- #, gcc-internal-format, gfc-internal-format
- msgid "ASYNCHRONOUS= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:1966 fortran/io.c:3461
-+#: fortran/io.c:1953 fortran/io.c:3448
- #, gcc-internal-format, gfc-internal-format
- msgid "BLANK= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:1987 fortran/io.c:3437
-+#: fortran/io.c:1974 fortran/io.c:3424
- #, gcc-internal-format, gfc-internal-format
- msgid "DECIMAL= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:2025
-+#: fortran/io.c:2012
- #, gcc-internal-format, gfc-internal-format
- msgid "ENCODING= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:2088 fortran/io.c:3510
-+#: fortran/io.c:2075 fortran/io.c:3497
- #, gcc-internal-format, gfc-internal-format
- msgid "ROUND= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:2111
-+#: fortran/io.c:2098
- #, gcc-internal-format, gfc-internal-format
- msgid "SIGN= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:2332
-+#: fortran/io.c:2319
- #, gcc-internal-format, gfc-internal-format
- msgid "CLOSE statement not allowed in PURE procedure at %C"
- msgstr ""
-
--#: fortran/io.c:2394
-+#: fortran/io.c:2381
- #, gcc-internal-format, gfc-internal-format
- msgid "CLOSE statement at %L requires a UNIT number"
- msgstr ""
-
--#: fortran/io.c:2402
-+#: fortran/io.c:2389
- #, gcc-internal-format, gfc-internal-format
- msgid "UNIT number in CLOSE statement at %L must be non-negative"
- msgstr ""
-
--#: fortran/io.c:2500 fortran/match.c:2761
-+#: fortran/io.c:2487 fortran/match.c:2833
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement not allowed in PURE procedure at %C"
- msgstr ""
-
--#: fortran/io.c:2534
-+#: fortran/io.c:2521
- #, gcc-internal-format, gfc-internal-format
- msgid "UNIT number missing in statement at %L"
- msgstr ""
-
--#: fortran/io.c:2542 fortran/io.c:2979
-+#: fortran/io.c:2529 fortran/io.c:2966
- #, gcc-internal-format, gfc-internal-format
- msgid "UNIT number in statement at %L must be non-negative"
- msgstr ""
-
--#: fortran/io.c:2575
-+#: fortran/io.c:2562
- #, gcc-internal-format, gfc-internal-format
- msgid "FLUSH statement at %C"
- msgstr ""
-
--#: fortran/io.c:2630
-+#: fortran/io.c:2617
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate UNIT specification at %C"
- msgstr ""
-
--#: fortran/io.c:2704
-+#: fortran/io.c:2691
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate format specification at %C"
- msgstr ""
-
--#: fortran/io.c:2721
-+#: fortran/io.c:2708
- #, gcc-internal-format
- msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C"
- msgstr ""
-
--#: fortran/io.c:2757
-+#: fortran/io.c:2744
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate NML specification at %C"
- msgstr ""
-
--#: fortran/io.c:2766
-+#: fortran/io.c:2753
- #, gcc-internal-format
- msgid "Symbol %qs at %C must be a NAMELIST group name"
- msgstr ""
-
--#: fortran/io.c:2836
-+#: fortran/io.c:2823
- #, gcc-internal-format, gfc-internal-format
- msgid "END tag at %C not allowed in output statement"
- msgstr ""
-
--#: fortran/io.c:2913
-+#: fortran/io.c:2900
- #, gcc-internal-format, gfc-internal-format
- msgid "UNIT not specified at %L"
- msgstr ""
-
--#: fortran/io.c:2925
-+#: fortran/io.c:2912
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "UNIT specification at %L must be an INTEGER expression or a CHARACTER "
-@@ -52328,22 +52447,22 @@
- "variable"
- msgstr ""
-
--#: fortran/io.c:2947
-+#: fortran/io.c:2934
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid form of WRITE statement at %L, UNIT required"
- msgstr ""
-
--#: fortran/io.c:2958
-+#: fortran/io.c:2945
- #, gcc-internal-format, gfc-internal-format
- msgid "Internal unit with vector subscript at %L"
- msgstr ""
-
--#: fortran/io.c:2972
-+#: fortran/io.c:2959
- #, gcc-internal-format, gfc-internal-format
- msgid "External IO UNIT cannot be an array at %L"
- msgstr ""
-
--#: fortran/io.c:3000
-+#: fortran/io.c:2987
- #, gcc-internal-format
- msgid ""
- "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not "
-@@ -52350,129 +52469,129 @@
- "appear in a variable definition context"
- msgstr ""
-
--#: fortran/io.c:3010
-+#: fortran/io.c:2997
- #, gcc-internal-format, gfc-internal-format
- msgid "Comma before i/o item list at %L"
- msgstr ""
-
--#: fortran/io.c:3020
-+#: fortran/io.c:3007
- #, gcc-internal-format, gfc-internal-format
- msgid "ERR tag label %d at %L not defined"
- msgstr ""
-
--#: fortran/io.c:3032
-+#: fortran/io.c:3019
- #, gcc-internal-format, gfc-internal-format
- msgid "END tag label %d at %L not defined"
- msgstr ""
-
--#: fortran/io.c:3044
-+#: fortran/io.c:3031
- #, gcc-internal-format, gfc-internal-format
- msgid "EOR tag label %d at %L not defined"
- msgstr ""
-
--#: fortran/io.c:3054
-+#: fortran/io.c:3041
- #, gcc-internal-format, gfc-internal-format
- msgid "FORMAT label %d at %L not defined"
- msgstr ""
-
--#: fortran/io.c:3085
-+#: fortran/io.c:3072
- #, gcc-internal-format
- msgid "io_kind_name(): bad I/O-kind"
- msgstr ""
-
--#: fortran/io.c:3174
-+#: fortran/io.c:3161
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in I/O iterator at %C"
- msgstr ""
-
--#: fortran/io.c:3205
-+#: fortran/io.c:3192
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected variable in READ statement at %C"
- msgstr ""
-
--#: fortran/io.c:3211
-+#: fortran/io.c:3198
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected expression in %s statement at %C"
- msgstr ""
-
- #. A general purpose syntax error.
--#: fortran/io.c:3268 fortran/io.c:3886 fortran/gfortran.h:2731
-+#: fortran/io.c:3255 fortran/io.c:3873 fortran/gfortran.h:2731
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in %s statement at %C"
- msgstr ""
-
--#: fortran/io.c:3352
-+#: fortran/io.c:3339
- #, gcc-internal-format, gfc-internal-format
- msgid "Internal file at %L with namelist"
- msgstr ""
-
--#: fortran/io.c:3408
-+#: fortran/io.c:3395
- #, gcc-internal-format, gfc-internal-format
- msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression"
- msgstr ""
-
--#: fortran/io.c:3486
-+#: fortran/io.c:3473
- #, gcc-internal-format, gfc-internal-format
- msgid "PAD= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:3562
-+#: fortran/io.c:3549
- #, gcc-internal-format, gfc-internal-format
- msgid "DELIM= at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:3714
-+#: fortran/io.c:3701
- #, gcc-internal-format, gfc-internal-format
- msgid "PRINT namelist at %C is an extension"
- msgstr ""
-
--#: fortran/io.c:3857
-+#: fortran/io.c:3844
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected comma in I/O list at %C"
- msgstr ""
-
--#: fortran/io.c:3920
-+#: fortran/io.c:3907
- #, gcc-internal-format, gfc-internal-format
- msgid "PRINT statement at %C not allowed within PURE procedure"
- msgstr ""
-
--#: fortran/io.c:4083 fortran/io.c:4143
-+#: fortran/io.c:4070 fortran/io.c:4130
- #, gcc-internal-format, gfc-internal-format
- msgid "INQUIRE statement not allowed in PURE procedure at %C"
- msgstr ""
-
--#: fortran/io.c:4111
-+#: fortran/io.c:4098
- #, gcc-internal-format, gfc-internal-format
- msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
- msgstr ""
-
--#: fortran/io.c:4121 fortran/trans-io.c:1303
-+#: fortran/io.c:4108 fortran/trans-io.c:1303
- #, gcc-internal-format, gfc-internal-format
- msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
- msgstr ""
-
--#: fortran/io.c:4128
-+#: fortran/io.c:4115
- #, gcc-internal-format, gfc-internal-format
- msgid "INQUIRE statement at %L requires either FILE or UNIT specifier"
- msgstr ""
-
--#: fortran/io.c:4137
-+#: fortran/io.c:4124
- #, gcc-internal-format, gfc-internal-format
- msgid "UNIT number in INQUIRE statement at %L can not be -1"
- msgstr ""
-
--#: fortran/io.c:4151
-+#: fortran/io.c:4138
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier"
- msgstr ""
-
--#: fortran/io.c:4327
-+#: fortran/io.c:4314
- #, gcc-internal-format, gfc-internal-format
- msgid "WAIT at %C not allowed in Fortran 95"
- msgstr ""
-
--#: fortran/io.c:4333
-+#: fortran/io.c:4320
- #, gcc-internal-format, gfc-internal-format
- msgid "WAIT statement not allowed in PURE procedure at %C"
- msgstr ""
-@@ -52772,200 +52891,222 @@
- msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop"
- msgstr ""
-
--#: fortran/match.c:2755
-+#: fortran/match.c:2782
- #, gcc-internal-format, gfc-internal-format
-+msgid "Blank required in %s statement near %C"
-+msgstr ""
++const char *
++output_load_pcrel_sym (rtx *operands)
++{
++ if (flag_delayed_branch)
++ {
++ output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
++ output_asm_insn ("call\t%a2", operands);
++ output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
++ }
++ else
++ {
++ output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
++ output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
++ output_asm_insn ("call\t%a2", operands);
++ output_asm_insn (" nop", NULL);
++ }
+
-+#: fortran/match.c:2800
-+#, gcc-internal-format, gfc-internal-format
-+msgid "STOP code at %C cannot be negative"
-+msgstr ""
++ if (operands[2] == got_helper_rtx)
++ got_helper_needed = true;
+
-+#: fortran/match.c:2806
-+#, gcc-internal-format, gfc-internal-format
-+msgid "STOP code at %C contains too many digits"
-+msgstr ""
++ return "";
++}
+
-+#: fortran/match.c:2827
-+#, gcc-internal-format, gfc-internal-format
- msgid "%s statement at %C in PURE procedure"
- msgstr ""
-
--#: fortran/match.c:2771
-+#: fortran/match.c:2843
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement STOP at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:2776
-+#: fortran/match.c:2848
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement STOP at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:2784
-+#: fortran/match.c:2859
- #, gcc-internal-format, gfc-internal-format
-+msgid ""
-+"STOP code at %L must be a scalar CHARACTER constant or "
-+"digit[digit[digit[digit[digit]]]]"
-+msgstr ""
++#ifdef HAVE_GAS_HIDDEN
++# define USE_HIDDEN_LINKONCE 1
++#else
++# define USE_HIDDEN_LINKONCE 0
++#endif
+
-+#: fortran/match.c:2872
-+#, gcc-internal-format, gfc-internal-format
- msgid "STOP code at %L must be either INTEGER or CHARACTER type"
- msgstr ""
-
--#: fortran/match.c:2791
-+#: fortran/match.c:2879
- #, gcc-internal-format, gfc-internal-format
- msgid "STOP code at %L must be scalar"
- msgstr ""
-
--#: fortran/match.c:2799
-+#: fortran/match.c:2886
- #, gcc-internal-format, gfc-internal-format
- msgid "STOP code at %L must be default character KIND=%d"
- msgstr ""
-
--#: fortran/match.c:2807
-+#: fortran/match.c:2893
- #, gcc-internal-format, gfc-internal-format
- msgid "STOP code at %L must be default integer KIND=%d"
- msgstr ""
-
--#: fortran/match.c:2853
-+#: fortran/match.c:2941
- #, gcc-internal-format, gfc-internal-format
- msgid "PAUSE statement at %C"
- msgstr ""
-
--#: fortran/match.c:2874
-+#: fortran/match.c:2962
- #, gcc-internal-format, gfc-internal-format
- msgid "ERROR STOP statement at %C"
- msgstr ""
-
--#: fortran/match.c:2900
-+#: fortran/match.c:2988
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement EVENT %s at %C in PURE procedure"
- msgstr ""
-
--#: fortran/match.c:2915
-+#: fortran/match.c:3003
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement EVENT %s at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:2922
-+#: fortran/match.c:3010
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:2952 fortran/match.c:3147 fortran/match.c:3359
--#: fortran/match.c:3869 fortran/match.c:4206
-+#: fortran/match.c:3040 fortran/match.c:3235 fortran/match.c:3447
-+#: fortran/match.c:3957 fortran/match.c:4294
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant STAT tag found at %L "
- msgstr ""
-
--#: fortran/match.c:2973 fortran/match.c:3168 fortran/match.c:3379
--#: fortran/match.c:3895 fortran/match.c:4231
-+#: fortran/match.c:3061 fortran/match.c:3256 fortran/match.c:3467
-+#: fortran/match.c:3983 fortran/match.c:4319
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant ERRMSG tag found at %L "
- msgstr ""
-
--#: fortran/match.c:2994
-+#: fortran/match.c:3082
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant UNTIL_COUNT tag found at %L "
- msgstr ""
-
--#: fortran/match.c:3060
-+#: fortran/match.c:3148
- #, gcc-internal-format, gfc-internal-format
- msgid "EVENT POST statement at %C"
- msgstr ""
-
--#: fortran/match.c:3070
-+#: fortran/match.c:3158
- #, gcc-internal-format, gfc-internal-format
- msgid "EVENT WAIT statement at %C"
- msgstr ""
-
--#: fortran/match.c:3095
-+#: fortran/match.c:3183
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement %s at %C in PURE procedure"
- msgstr ""
-
--#: fortran/match.c:3110
-+#: fortran/match.c:3198
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement %s at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:3117
-+#: fortran/match.c:3205
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement %s at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:3189
-+#: fortran/match.c:3277
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant ACQUIRED_LOCK tag found at %L "
- msgstr ""
-
--#: fortran/match.c:3254
-+#: fortran/match.c:3342
- #, gcc-internal-format, gfc-internal-format
- msgid "LOCK statement at %C"
- msgstr ""
-
--#: fortran/match.c:3264
-+#: fortran/match.c:3352
- #, gcc-internal-format, gfc-internal-format
- msgid "UNLOCK statement at %C"
- msgstr ""
-
--#: fortran/match.c:3289
-+#: fortran/match.c:3377
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement SYNC at %C in PURE procedure"
- msgstr ""
-
--#: fortran/match.c:3295
-+#: fortran/match.c:3383
- #, gcc-internal-format, gfc-internal-format
- msgid "SYNC statement at %C"
- msgstr ""
-
--#: fortran/match.c:3307
-+#: fortran/match.c:3395
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement SYNC at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:3313
-+#: fortran/match.c:3401
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement SYNC at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:3493
-+#: fortran/match.c:3581
- #, gcc-internal-format, gfc-internal-format
- msgid "ASSIGN statement at %C"
- msgstr ""
-
--#: fortran/match.c:3537
-+#: fortran/match.c:3625
- #, gcc-internal-format, gfc-internal-format
- msgid "Assigned GOTO statement at %C"
- msgstr ""
-
--#: fortran/match.c:3581 fortran/match.c:3632
-+#: fortran/match.c:3669 fortran/match.c:3720
- #, gcc-internal-format, gfc-internal-format
- msgid "Statement label list in GOTO at %C cannot be empty"
- msgstr ""
-
--#: fortran/match.c:3642
-+#: fortran/match.c:3730
- #, gcc-internal-format, gfc-internal-format
- msgid "Computed GOTO at %C"
- msgstr ""
-
--#: fortran/match.c:3714
-+#: fortran/match.c:3802
- #, gcc-internal-format, gfc-internal-format
- msgid "Error in type-spec at %L"
- msgstr ""
-
--#: fortran/match.c:3724
-+#: fortran/match.c:3812
- #, gcc-internal-format, gfc-internal-format
- msgid "typespec in ALLOCATE at %L"
- msgstr ""
-
--#: fortran/match.c:3767
-+#: fortran/match.c:3855
- #, gcc-internal-format, gfc-internal-format
- msgid "Bad allocate-object at %C for a PURE procedure"
- msgstr ""
-
--#: fortran/match.c:3791
-+#: fortran/match.c:3879
- #, gcc-internal-format, gfc-internal-format
- msgid "ALLOCATE of coarray at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:3796
-+#: fortran/match.c:3884
- #, gcc-internal-format, gfc-internal-format
- msgid "ALLOCATE of coarray at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:3818
-+#: fortran/match.c:3906
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocate-object at %L is neither a data pointer nor an allocatable variable"
- msgstr ""
-
--#: fortran/match.c:3830
-+#: fortran/match.c:3918
- #, gcc-internal-format, gfc-internal-format
- msgid "Type of entity at %L is type incompatible with typespec"
- msgstr ""
-
--#: fortran/match.c:3838
-+#: fortran/match.c:3926
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Kind type parameter for entity at %L differs from the kind type parameter of "
-@@ -52972,57 +53113,57 @@
- "the typespec"
- msgstr ""
-
--#: fortran/match.c:3852
-+#: fortran/match.c:3940
- #, gcc-internal-format, gfc-internal-format
- msgid "Shape specification for allocatable scalar at %C"
- msgstr ""
-
--#: fortran/match.c:3889
-+#: fortran/match.c:3977
- #, gcc-internal-format, gfc-internal-format
- msgid "ERRMSG tag at %L"
- msgstr ""
-
--#: fortran/match.c:3912
-+#: fortran/match.c:4000
- #, gcc-internal-format, gfc-internal-format
- msgid "SOURCE tag at %L"
- msgstr ""
-
--#: fortran/match.c:3918
-+#: fortran/match.c:4006
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant SOURCE tag found at %L "
- msgstr ""
-
--#: fortran/match.c:3925
-+#: fortran/match.c:4013
- #, gcc-internal-format, gfc-internal-format
- msgid "SOURCE tag at %L conflicts with the typespec at %L"
- msgstr ""
-
--#: fortran/match.c:3931
-+#: fortran/match.c:4019
- #, gcc-internal-format, gfc-internal-format
- msgid "SOURCE tag at %L with more than a single allocate object"
- msgstr ""
-
--#: fortran/match.c:3949
-+#: fortran/match.c:4037
- #, gcc-internal-format, gfc-internal-format
- msgid "MOLD tag at %L"
- msgstr ""
-
--#: fortran/match.c:3955
-+#: fortran/match.c:4043
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant MOLD tag found at %L "
- msgstr ""
-
--#: fortran/match.c:3962
-+#: fortran/match.c:4050
- #, gcc-internal-format, gfc-internal-format
- msgid "MOLD tag at %L conflicts with the typespec at %L"
- msgstr ""
-
--#: fortran/match.c:3988
-+#: fortran/match.c:4076
- #, gcc-internal-format, gfc-internal-format
- msgid "MOLD tag at %L conflicts with SOURCE tag at %L"
- msgstr ""
-
--#: fortran/match.c:3996
-+#: fortran/match.c:4084
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocate-object at %L with a deferred type parameter requires either a type-"
-@@ -53029,7 +53170,7 @@
- "spec or SOURCE tag or a MOLD tag"
- msgstr ""
-
--#: fortran/match.c:4008
-+#: fortran/match.c:4096
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Unlimited polymorphic allocate-object at %L requires either a type-spec or "
-@@ -53036,27 +53177,27 @@
- "SOURCE tag or a MOLD tag"
- msgstr ""
-
--#: fortran/match.c:4070
-+#: fortran/match.c:4158
- #, gcc-internal-format, gfc-internal-format
- msgid "Pointer object at %C shall not be coindexed"
- msgstr ""
-
--#: fortran/match.c:4156
-+#: fortran/match.c:4244
- #, gcc-internal-format, gfc-internal-format
- msgid "Illegal allocate-object at %C for a PURE procedure"
- msgstr ""
-
--#: fortran/match.c:4166
-+#: fortran/match.c:4254
- #, gcc-internal-format, gfc-internal-format
- msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:4173
-+#: fortran/match.c:4261
- #, gcc-internal-format, gfc-internal-format
- msgid "DEALLOCATE of coarray at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:4189
-+#: fortran/match.c:4277
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocate-object at %C is not a nonprocedure pointer nor an allocatable "
-@@ -53063,47 +53204,47 @@
- "variable"
- msgstr ""
-
--#: fortran/match.c:4226
-+#: fortran/match.c:4314
- #, gcc-internal-format, gfc-internal-format
- msgid "ERRMSG at %L"
- msgstr ""
-
--#: fortran/match.c:4283
-+#: fortran/match.c:4371
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement RETURN at %C in CRITICAL block"
- msgstr ""
-
--#: fortran/match.c:4289
-+#: fortran/match.c:4377
- #, gcc-internal-format, gfc-internal-format
- msgid "Image control statement RETURN at %C in DO CONCURRENT block"
- msgstr ""
-
--#: fortran/match.c:4298
-+#: fortran/match.c:4386
- #, gcc-internal-format, gfc-internal-format
- msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
- msgstr ""
-
--#: fortran/match.c:4329
-+#: fortran/match.c:4417
- #, gcc-internal-format, gfc-internal-format
- msgid "RETURN statement in main program at %C"
- msgstr ""
-
--#: fortran/match.c:4357
-+#: fortran/match.c:4445
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected component reference at %C"
- msgstr ""
-
--#: fortran/match.c:4366
-+#: fortran/match.c:4454
- #, gcc-internal-format, gfc-internal-format
- msgid "Junk after CALL at %C"
- msgstr ""
-
--#: fortran/match.c:4377
-+#: fortran/match.c:4465
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected type-bound procedure or procedure pointer component at %C"
- msgstr ""
-
--#: fortran/match.c:4598
-+#: fortran/match.c:4686
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in common block name at %C"
- msgstr ""
-@@ -53111,7 +53252,7 @@
- #. If we find an error, just print it and continue,
- #. cause it's just semantic, and we can see if there
- #. are more errors.
--#: fortran/match.c:4665
-+#: fortran/match.c:4753
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L in common block %qs at %C must be declared with a C "
-@@ -53118,7 +53259,7 @@
- "interoperable kind since common block %qs is bind(c)"
- msgstr ""
-
--#: fortran/match.c:4674
-+#: fortran/match.c:4762
- #, gcc-internal-format
- msgid ""
- "Variable %qs in common block %qs at %C can not be bind(c) since it is not "
-@@ -53125,27 +53266,27 @@
- "global"
- msgstr ""
-
--#: fortran/match.c:4681
-+#: fortran/match.c:4769
- #, gcc-internal-format
- msgid "Symbol %qs at %C is already in a COMMON block"
- msgstr ""
-
--#: fortran/match.c:4689
-+#: fortran/match.c:4777
- #, gcc-internal-format
- msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA"
- msgstr ""
-
--#: fortran/match.c:4705
-+#: fortran/match.c:4793
- #, gcc-internal-format
- msgid "Array specification for symbol %qs in COMMON at %C must be explicit"
- msgstr ""
-
--#: fortran/match.c:4715
-+#: fortran/match.c:4803
- #, gcc-internal-format
- msgid "Symbol %qs in COMMON at %C cannot be a POINTER array"
- msgstr ""
-
--#: fortran/match.c:4761
-+#: fortran/match.c:4849
- #, gcc-internal-format
- msgid ""
- "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to "
-@@ -53152,12 +53293,12 @@
- "another COMMON block %qs"
- msgstr ""
-
--#: fortran/match.c:4889
-+#: fortran/match.c:4977
- #, gcc-internal-format
- msgid "Namelist group name %qs at %C already has a basic type of %s"
- msgstr ""
-
--#: fortran/match.c:4897
-+#: fortran/match.c:4985
- #, gcc-internal-format
- msgid ""
- "Namelist group name %qs at %C already is USE associated and cannot be "
-@@ -53164,94 +53305,94 @@
- "respecified."
- msgstr ""
-
--#: fortran/match.c:4923
-+#: fortran/match.c:5011
- #, gcc-internal-format
- msgid "Assumed size array %qs in namelist %qs at %C is not allowed"
- msgstr ""
-
--#: fortran/match.c:5057
-+#: fortran/match.c:5145
- #, gcc-internal-format, gfc-internal-format
- msgid "Derived type component %C is not a permitted EQUIVALENCE member"
- msgstr ""
-
--#: fortran/match.c:5065
-+#: fortran/match.c:5153
- #, gcc-internal-format, gfc-internal-format
- msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
- msgstr ""
-
--#: fortran/match.c:5093
-+#: fortran/match.c:5181
- #, gcc-internal-format, gfc-internal-format
- msgid "EQUIVALENCE at %C requires two or more objects"
- msgstr ""
-
--#: fortran/match.c:5107
-+#: fortran/match.c:5195
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
- msgstr ""
-
--#: fortran/match.c:5120
-+#: fortran/match.c:5208
- #, gcc-internal-format, gfc-internal-format
- msgid "Expecting a comma in EQUIVALENCE at %C"
- msgstr ""
-
--#: fortran/match.c:5236
-+#: fortran/match.c:5324
- #, gcc-internal-format, gfc-internal-format
- msgid "Statement function at %L is recursive"
- msgstr ""
-
--#: fortran/match.c:5246
-+#: fortran/match.c:5334
- #, gcc-internal-format, gfc-internal-format
- msgid "Statement function at %L cannot appear within an INTERFACE"
- msgstr ""
-
--#: fortran/match.c:5251
-+#: fortran/match.c:5339
- #, gcc-internal-format, gfc-internal-format
- msgid "Statement function at %C"
- msgstr ""
-
--#: fortran/match.c:5376 fortran/match.c:5392
-+#: fortran/match.c:5464 fortran/match.c:5480
- #, gcc-internal-format, gfc-internal-format
- msgid "Expression in CASE selector at %L cannot be %s"
- msgstr ""
-
--#: fortran/match.c:5414
-+#: fortran/match.c:5502
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected initialization expression in CASE at %C"
- msgstr ""
-
--#: fortran/match.c:5446
-+#: fortran/match.c:5534
- #, gcc-internal-format
- msgid "Expected block name %qs of SELECT construct at %C"
- msgstr ""
-
--#: fortran/match.c:5726
-+#: fortran/match.c:5814
- #, gcc-internal-format, gfc-internal-format
- msgid "parse error in SELECT TYPE statement at %C"
- msgstr ""
+ /* Emit code to load the GOT register. */
--#: fortran/match.c:5750
-+#: fortran/match.c:5838
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>"
- msgstr ""
-
--#: fortran/match.c:5784
-+#: fortran/match.c:5872
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected CASE statement at %C"
- msgstr ""
-
--#: fortran/match.c:5836
-+#: fortran/match.c:5924
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in CASE specification at %C"
- msgstr ""
-
--#: fortran/match.c:5854
-+#: fortran/match.c:5942
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected TYPE IS statement at %C"
- msgstr ""
-
--#: fortran/match.c:5886
-+#: fortran/match.c:5974
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The type-spec shall not specify a sequence derived type or a type with the "
-@@ -53258,22 +53399,22 @@
- "BIND attribute in SELECT TYPE at %C [F2003:C815]"
- msgstr ""
-
--#: fortran/match.c:5898
-+#: fortran/match.c:5986
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in TYPE IS specification at %C"
- msgstr ""
-
--#: fortran/match.c:5974
-+#: fortran/match.c:6062
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in CLASS IS specification at %C"
- msgstr ""
-
--#: fortran/match.c:6092
-+#: fortran/match.c:6185
- #, gcc-internal-format, gfc-internal-format
- msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
- msgstr ""
-
--#: fortran/match.c:6130
-+#: fortran/match.c:6223
- #, gcc-internal-format
- msgid "Label %qs at %C doesn't match WHERE label %qs"
- msgstr ""
-@@ -53731,12 +53872,12 @@
- msgid "Unexpected junk after $OMP FLUSH statement at %C"
- msgstr ""
-
--#: fortran/openmp.c:2347 fortran/openmp.c:5206
-+#: fortran/openmp.c:2347 fortran/openmp.c:5227
- #, gcc-internal-format, gfc-internal-format
- msgid "Redefinition of predefined %s !$OMP DECLARE REDUCTION at %L"
- msgstr ""
-
--#: fortran/openmp.c:2351 fortran/openmp.c:5210
-+#: fortran/openmp.c:2351 fortran/openmp.c:5231
- #, gcc-internal-format, gfc-internal-format
- msgid "Redefinition of predefined !$OMP DECLARE REDUCTION at %L"
- msgstr ""
-@@ -53944,7 +54085,7 @@
- "Implicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %L "
- msgstr ""
-
--#: fortran/openmp.c:3226 fortran/resolve.c:9401 fortran/resolve.c:10623
-+#: fortran/openmp.c:3226 fortran/resolve.c:9423 fortran/resolve.c:10661
- #, gcc-internal-format, gfc-internal-format
- msgid "IF clause at %L requires a scalar LOGICAL expression"
- msgstr ""
-@@ -53976,7 +54117,7 @@
-
- #: fortran/openmp.c:3313 fortran/openmp.c:3324 fortran/openmp.c:3332
- #: fortran/openmp.c:3343 fortran/openmp.c:3355 fortran/openmp.c:3370
--#: fortran/openmp.c:5013
-+#: fortran/openmp.c:5034
- #, gcc-internal-format
- msgid "Symbol %qs present on multiple clauses at %L"
- msgstr ""
-@@ -54149,13 +54290,18 @@
- msgid "THREAD_LIMIT clause at %L requires a scalar INTEGER expression"
- msgstr ""
+ void
+ load_got_register (void)
+ {
+- if (!got_register_rtx)
+- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
++ rtx insn;
--#: fortran/openmp.c:3932
-+#: fortran/openmp.c:3924
- #, gcc-internal-format, gfc-internal-format
-+msgid "unexpected !$OMP ATOMIC expression at %L"
-+msgstr ""
+ if (TARGET_VXWORKS_RTP)
+- emit_insn (gen_vxworks_load_got ());
++ {
++ if (!got_register_rtx)
++ got_register_rtx = pic_offset_table_rtx;
+
-+#: fortran/openmp.c:3953
-+#, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
- msgstr ""
-
--#: fortran/openmp.c:3957
-+#: fortran/openmp.c:3978
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic "
-@@ -54162,7 +54308,7 @@
- "type at %L"
- msgstr ""
-
--#: fortran/openmp.c:3962
-+#: fortran/openmp.c:3983
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "expr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot "
-@@ -54169,7 +54315,7 @@
- "reference var at %L"
- msgstr ""
-
--#: fortran/openmp.c:3984 fortran/openmp.c:4275
-+#: fortran/openmp.c:4005 fortran/openmp.c:4296
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC CAPTURE capture statement must read from a scalar variable of "
-@@ -54176,7 +54322,7 @@
- "intrinsic type at %L"
- msgstr ""
-
--#: fortran/openmp.c:3999
-+#: fortran/openmp.c:4020
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC CAPTURE update statement must set a scalar variable of "
-@@ -54183,7 +54329,7 @@
- "intrinsic type at %L"
- msgstr ""
-
--#: fortran/openmp.c:4006 fortran/openmp.c:4282
-+#: fortran/openmp.c:4027 fortran/openmp.c:4303
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC CAPTURE capture statement reads from different variable than "
-@@ -54190,12 +54336,12 @@
- "update statement writes into at %L"
- msgstr ""
-
--#: fortran/openmp.c:4022
-+#: fortran/openmp.c:4043
- #, gcc-internal-format, gfc-internal-format
- msgid "!$OMP ATOMIC with ALLOCATABLE variable at %L"
- msgstr ""
-
--#: fortran/openmp.c:4064
-+#: fortran/openmp.c:4085
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., ."
-@@ -54202,13 +54348,13 @@
- "EQV. or .NEQV. at %L"
- msgstr ""
-
--#: fortran/openmp.c:4112
-+#: fortran/openmp.c:4133
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L"
- msgstr ""
-
--#: fortran/openmp.c:4126
-+#: fortran/openmp.c:4147
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op "
-@@ -54215,7 +54361,7 @@
- "(expr) at %L"
- msgstr ""
-
--#: fortran/openmp.c:4158
-+#: fortran/openmp.c:4179
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot "
-@@ -54222,7 +54368,7 @@
- "reference var at %L"
- msgstr ""
-
--#: fortran/openmp.c:4182
-+#: fortran/openmp.c:4203
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments "
-@@ -54229,29 +54375,29 @@
- "at %L"
- msgstr ""
-
--#: fortran/openmp.c:4189
-+#: fortran/openmp.c:4210
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L"
- msgstr ""
-
--#: fortran/openmp.c:4206
-+#: fortran/openmp.c:4227
- #, gcc-internal-format
- msgid ""
- "!$OMP ATOMIC intrinsic arguments except one must not reference %qs at %L"
- msgstr ""
-
--#: fortran/openmp.c:4213
-+#: fortran/openmp.c:4234
- #, gcc-internal-format, gfc-internal-format
- msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L"
- msgstr ""
-
--#: fortran/openmp.c:4221
-+#: fortran/openmp.c:4242
- #, gcc-internal-format
- msgid "First or last !$OMP ATOMIC intrinsic argument must be %qs at %L"
- msgstr ""
-
--#: fortran/openmp.c:4239
-+#: fortran/openmp.c:4260
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC assignment must have an operator or intrinsic on right hand "
-@@ -54258,7 +54404,7 @@
- "side at %L"
- msgstr ""
-
--#: fortran/openmp.c:4253
-+#: fortran/openmp.c:4274
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "!$OMP ATOMIC CAPTURE capture statement must set a scalar variable of "
-@@ -54265,27 +54411,27 @@
- "intrinsic type at %L"
- msgstr ""
-
--#: fortran/openmp.c:4530
-+#: fortran/openmp.c:4551
- #, gcc-internal-format, gfc-internal-format
- msgid "%s cannot be a DO WHILE or DO without loop control at %L"
- msgstr ""
-
--#: fortran/openmp.c:4536
-+#: fortran/openmp.c:4557
- #, gcc-internal-format, gfc-internal-format
- msgid "%s cannot be a DO CONCURRENT loop at %L"
- msgstr ""
-
--#: fortran/openmp.c:4542
-+#: fortran/openmp.c:4563
- #, gcc-internal-format, gfc-internal-format
- msgid "%s iteration variable must be of type integer at %L"
- msgstr ""
-
--#: fortran/openmp.c:4546
-+#: fortran/openmp.c:4567
- #, gcc-internal-format, gfc-internal-format
- msgid "%s iteration variable must not be THREADPRIVATE at %L"
- msgstr ""
-
--#: fortran/openmp.c:4559
-+#: fortran/openmp.c:4580
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "%s iteration variable present on clause other than PRIVATE or LASTPRIVATE at "
-@@ -54292,67 +54438,67 @@
- "%L"
- msgstr ""
-
--#: fortran/openmp.c:4563
-+#: fortran/openmp.c:4584
- #, gcc-internal-format, gfc-internal-format
- msgid "%s iteration variable present on clause other than LASTPRIVATE at %L"
- msgstr ""
-
--#: fortran/openmp.c:4567
-+#: fortran/openmp.c:4588
- #, gcc-internal-format, gfc-internal-format
- msgid "%s iteration variable present on clause other than LINEAR at %L"
- msgstr ""
-
--#: fortran/openmp.c:4585
-+#: fortran/openmp.c:4606
- #, gcc-internal-format, gfc-internal-format
- msgid "%s collapsed loops don't form rectangular iteration space at %L"
- msgstr ""
-
--#: fortran/openmp.c:4599
-+#: fortran/openmp.c:4620
- #, gcc-internal-format, gfc-internal-format
- msgid "collapsed %s loops not perfectly nested at %L"
- msgstr ""
-
--#: fortran/openmp.c:4608 fortran/openmp.c:4616
-+#: fortran/openmp.c:4629 fortran/openmp.c:4637
- #, gcc-internal-format, gfc-internal-format
- msgid "not enough DO loops for collapsed %s at %L"
- msgstr ""
-
--#: fortran/openmp.c:4700 fortran/openmp.c:4713
-+#: fortran/openmp.c:4721 fortran/openmp.c:4734
- #, gcc-internal-format, gfc-internal-format
- msgid "The %s directive cannot be specified within a %s region at %L"
- msgstr ""
-
--#: fortran/openmp.c:4732
-+#: fortran/openmp.c:4753
- #, gcc-internal-format, gfc-internal-format
- msgid "!$ACC LOOP cannot be a DO WHILE or DO without loop control at %L"
- msgstr ""
-
--#: fortran/openmp.c:4738
-+#: fortran/openmp.c:4759
- #, gcc-internal-format, gfc-internal-format
- msgid "!$ACC LOOP iteration variable must be of type integer at %L"
- msgstr ""
-
--#: fortran/openmp.c:4754
-+#: fortran/openmp.c:4775
- #, gcc-internal-format, gfc-internal-format
- msgid "!$ACC LOOP %s loops don't form rectangular iteration space at %L"
- msgstr ""
-
--#: fortran/openmp.c:4768
-+#: fortran/openmp.c:4789
- #, gcc-internal-format, gfc-internal-format
- msgid "%s !$ACC LOOP loops not perfectly nested at %L"
- msgstr ""
-
--#: fortran/openmp.c:4778 fortran/openmp.c:4787
-+#: fortran/openmp.c:4799 fortran/openmp.c:4808
- #, gcc-internal-format, gfc-internal-format
- msgid "not enough DO loops for %s !$ACC LOOP at %L"
- msgstr ""
-
--#: fortran/openmp.c:4802 fortran/openmp.c:4809
-+#: fortran/openmp.c:4823 fortran/openmp.c:4830
- #, gcc-internal-format, gfc-internal-format
- msgid "!$ACC LOOP %s in PARALLEL region doesn't allow %s arguments at %L"
- msgstr ""
-
--#: fortran/openmp.c:4831
-+#: fortran/openmp.c:4852
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Loop parallelized across gangs is not allowed inside another loop "
-@@ -54359,7 +54505,7 @@
- "parallelized across gangs at %L"
- msgstr ""
-
--#: fortran/openmp.c:4835 fortran/openmp.c:4839
-+#: fortran/openmp.c:4856 fortran/openmp.c:4860
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Loop parallelized across gangs is not allowed inside loop parallelized "
-@@ -54366,7 +54512,7 @@
- "across workers at %L"
- msgstr ""
-
--#: fortran/openmp.c:4846
-+#: fortran/openmp.c:4867
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Loop parallelized across workers is not allowed inside another loop "
-@@ -54373,7 +54519,7 @@
- "parallelized across workers at %L"
- msgstr ""
-
--#: fortran/openmp.c:4850
-+#: fortran/openmp.c:4871
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Loop parallelized across workers is not allowed inside another loop "
-@@ -54380,7 +54526,7 @@
- "parallelized across vectors at %L"
- msgstr ""
-
--#: fortran/openmp.c:4856
-+#: fortran/openmp.c:4877
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Loop parallelized across vectors is not allowed inside another loop "
-@@ -54387,47 +54533,47 @@
- "parallelized across vectors at %L"
- msgstr ""
-
--#: fortran/openmp.c:4868
-+#: fortran/openmp.c:4889
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause SEQ conflicts with INDEPENDENT at %L"
- msgstr ""
-
--#: fortran/openmp.c:4870
-+#: fortran/openmp.c:4891
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause SEQ conflicts with GANG at %L"
- msgstr ""
-
--#: fortran/openmp.c:4872
-+#: fortran/openmp.c:4893
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause SEQ conflicts with WORKER at %L"
- msgstr ""
-
--#: fortran/openmp.c:4874
-+#: fortran/openmp.c:4895
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause SEQ conflicts with VECTOR at %L"
- msgstr ""
-
--#: fortran/openmp.c:4876
-+#: fortran/openmp.c:4897
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause SEQ conflicts with AUTO at %L"
- msgstr ""
-
--#: fortran/openmp.c:4881
-+#: fortran/openmp.c:4902
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause AUTO conflicts with GANG at %L"
- msgstr ""
-
--#: fortran/openmp.c:4883
-+#: fortran/openmp.c:4904
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause AUTO conflicts with WORKER at %L"
- msgstr ""
-
--#: fortran/openmp.c:4885
-+#: fortran/openmp.c:4906
- #, gcc-internal-format, gfc-internal-format
- msgid "Clause AUTO conflicts with VECTOR at %L"
- msgstr ""
-
--#: fortran/openmp.c:4889
-+#: fortran/openmp.c:4910
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Tiled loop cannot be parallelized across gangs, workers and vectors at the "
-@@ -54434,32 +54580,32 @@
- "same time at %L"
- msgstr ""
-
--#: fortran/openmp.c:4924
-+#: fortran/openmp.c:4945
- #, gcc-internal-format, gfc-internal-format
- msgid "TILE requires constant expression at %L"
- msgstr ""
-
--#: fortran/openmp.c:4989
-+#: fortran/openmp.c:5010
- #, gcc-internal-format
- msgid "PARAMETER object %qs is not allowed at %L"
- msgstr ""
-
--#: fortran/openmp.c:4996
-+#: fortran/openmp.c:5017
- #, gcc-internal-format
- msgid "Array sections: %qs not allowed in $!ACC DECLARE at %L"
- msgstr ""
-
--#: fortran/openmp.c:5115
-+#: fortran/openmp.c:5136
- #, gcc-internal-format, gfc-internal-format
- msgid "OMP TARGET UPDATE at %L requires at least one TO or FROM clause"
- msgstr ""
-
--#: fortran/openmp.c:5136
-+#: fortran/openmp.c:5157
- #, gcc-internal-format
- msgid "!$OMP DECLARE SIMD should refer to containing procedure %qs at %L"
- msgstr ""
-
--#: fortran/openmp.c:5160
-+#: fortran/openmp.c:5181
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable other than OMP_PRIV or OMP_ORIG used in INITIALIZER clause of !$OMP "
-@@ -54466,7 +54612,7 @@
- "DECLARE REDUCTION at %L"
- msgstr ""
-
--#: fortran/openmp.c:5168
-+#: fortran/openmp.c:5189
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable other than OMP_OUT or OMP_IN used in combiner of !$OMP DECLARE "
-@@ -54473,17 +54619,17 @@
- "REDUCTION at %L"
- msgstr ""
-
--#: fortran/openmp.c:5197
-+#: fortran/openmp.c:5218
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid operator for !$OMP DECLARE REDUCTION %s at %L"
- msgstr ""
-
--#: fortran/openmp.c:5219
-+#: fortran/openmp.c:5240
- #, gcc-internal-format, gfc-internal-format
- msgid "CHARACTER length in !$OMP DECLARE REDUCTION %s not constant at %L"
- msgstr ""
-
--#: fortran/openmp.c:5235
-+#: fortran/openmp.c:5256
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Subroutine call with alternate returns in combiner of !$OMP DECLARE "
-@@ -54490,7 +54636,7 @@
- "REDUCTION at %L"
- msgstr ""
-
--#: fortran/openmp.c:5250
-+#: fortran/openmp.c:5271
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Subroutine call with alternate returns in INITIALIZER clause of !$OMP "
-@@ -54497,7 +54643,7 @@
- "DECLARE REDUCTION at %L"
- msgstr ""
-
--#: fortran/openmp.c:5260
-+#: fortran/openmp.c:5281
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "One of actual subroutine arguments in INITIALIZER clause of !$OMP DECLARE "
-@@ -54504,7 +54650,7 @@
- "REDUCTION must be OMP_PRIV at %L"
- msgstr ""
-
--#: fortran/openmp.c:5268
-+#: fortran/openmp.c:5289
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type "
-@@ -54644,122 +54790,122 @@
- msgid "Unclassifiable GCC directive at %C"
- msgstr ""
-
--#: fortran/parse.c:1048 fortran/parse.c:1280
-+#: fortran/parse.c:1048 fortran/parse.c:1275
- #, gcc-internal-format, gfc-internal-format
- msgid "Zero is not a valid statement label at %C"
- msgstr ""
-
--#: fortran/parse.c:1055 fortran/parse.c:1272
-+#: fortran/parse.c:1055 fortran/parse.c:1267
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-numeric character in statement label at %C"
- msgstr ""
-
--#: fortran/parse.c:1067 fortran/parse.c:1321
-+#: fortran/parse.c:1067 fortran/parse.c:1316
- #, gcc-internal-format, gfc-internal-format
- msgid "Semicolon at %C needs to be preceded by statement"
- msgstr ""
-
--#: fortran/parse.c:1075 fortran/parse.c:1336
-+#: fortran/parse.c:1074 fortran/parse.c:1331
- #, gcc-internal-format, gfc-internal-format
--msgid "Ignoring statement label in empty statement at %L"
-+msgid "Statement label without statement at %L"
- msgstr ""
-
--#: fortran/parse.c:1142 fortran/parse.c:1323
-+#: fortran/parse.c:1137 fortran/parse.c:1318
- #, gcc-internal-format, gfc-internal-format
- msgid "Fortran 2008: Semicolon at %C without preceding statement"
- msgstr ""
-
--#: fortran/parse.c:1165 fortran/parse.c:1299
-+#: fortran/parse.c:1160 fortran/parse.c:1294
- #, gcc-internal-format, gfc-internal-format
- msgid "Bad continuation line at %C"
- msgstr ""
-
--#: fortran/parse.c:1593
-+#: fortran/parse.c:1587
- #, gcc-internal-format, gfc-internal-format
- msgid "FORMAT statement at %L does not have a statement label"
- msgstr ""
-
--#: fortran/parse.c:2291
-+#: fortran/parse.c:2285
- #, gcc-internal-format
- msgid "gfc_ascii_statement(): Bad statement code"
- msgstr ""
-
--#: fortran/parse.c:2436
-+#: fortran/parse.c:2430
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement at %C"
- msgstr ""
-
--#: fortran/parse.c:2591
-+#: fortran/parse.c:2585
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement at %C cannot follow %s statement at %L"
- msgstr ""
-
--#: fortran/parse.c:2608
-+#: fortran/parse.c:2602
- #, gcc-internal-format
- msgid "Unexpected end of file in %qs"
- msgstr ""
-
--#: fortran/parse.c:2640
-+#: fortran/parse.c:2634
- #, gcc-internal-format
- msgid "Derived-type %qs with SEQUENCE must not have a CONTAINS section at %C"
- msgstr ""
-
--#: fortran/parse.c:2643
-+#: fortran/parse.c:2637
- #, gcc-internal-format
- msgid "Derived-type %qs with BIND(C) must not have a CONTAINS section at %C"
- msgstr ""
-
--#: fortran/parse.c:2663
-+#: fortran/parse.c:2657
- #, gcc-internal-format, gfc-internal-format
- msgid "Components in TYPE at %C must precede CONTAINS"
- msgstr ""
-
--#: fortran/parse.c:2667
-+#: fortran/parse.c:2661
- #, gcc-internal-format, gfc-internal-format
- msgid "Type-bound procedure at %C"
- msgstr ""
-
--#: fortran/parse.c:2675
-+#: fortran/parse.c:2669
- #, gcc-internal-format, gfc-internal-format
- msgid "GENERIC binding at %C"
- msgstr ""
-
--#: fortran/parse.c:2683
-+#: fortran/parse.c:2677
- #, gcc-internal-format, gfc-internal-format
- msgid "FINAL procedure declaration at %C"
- msgstr ""
-
--#: fortran/parse.c:2695
-+#: fortran/parse.c:2689
- #, gcc-internal-format, gfc-internal-format
- msgid "Derived type definition at %C with empty CONTAINS section"
- msgstr ""
-
--#: fortran/parse.c:2705 fortran/parse.c:3160
-+#: fortran/parse.c:2699 fortran/parse.c:3154
- #, gcc-internal-format, gfc-internal-format
- msgid "PRIVATE statement in TYPE at %C must be inside a MODULE"
- msgstr ""
-
--#: fortran/parse.c:2712
-+#: fortran/parse.c:2706
- #, gcc-internal-format, gfc-internal-format
- msgid "PRIVATE statement at %C must precede procedure bindings"
- msgstr ""
-
--#: fortran/parse.c:2719 fortran/parse.c:3173
-+#: fortran/parse.c:2713 fortran/parse.c:3167
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate PRIVATE statement at %C"
- msgstr ""
-
--#: fortran/parse.c:2729
-+#: fortran/parse.c:2723
- #, gcc-internal-format, gfc-internal-format
- msgid "SEQUENCE statement at %C must precede CONTAINS"
- msgstr ""
-
--#: fortran/parse.c:2733
-+#: fortran/parse.c:2727
- #, gcc-internal-format, gfc-internal-format
- msgid "Already inside a CONTAINS block at %C"
- msgstr ""
-
--#: fortran/parse.c:2852
-+#: fortran/parse.c:2846
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Component %s at %L of type LOCK_TYPE must have a codimension or be a "
-@@ -54767,7 +54913,7 @@
- "pointer attribute"
- msgstr ""
-
--#: fortran/parse.c:2858
-+#: fortran/parse.c:2852
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Pointer component %s at %L has a noncoarray subcomponent of type LOCK_TYPE, "
-@@ -54774,13 +54920,13 @@
- "which must have a codimension or be a subcomponent of a coarray"
- msgstr ""
-
--#: fortran/parse.c:2863
-+#: fortran/parse.c:2857
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocatable component %s at %L of type LOCK_TYPE must have a codimension"
- msgstr ""
-
--#: fortran/parse.c:2867
-+#: fortran/parse.c:2861
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocatable component %s at %L must have a codimension as it has a "
-@@ -54787,7 +54933,7 @@
- "noncoarray subcomponent of type LOCK_TYPE"
- msgstr ""
-
--#: fortran/parse.c:2872
-+#: fortran/parse.c:2866
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type "
-@@ -54796,7 +54942,7 @@
- "subcomponent exists)"
- msgstr ""
-
--#: fortran/parse.c:2879
-+#: fortran/parse.c:2873
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type "
-@@ -54805,7 +54951,7 @@
- "codimension or a coarray subcomponent)"
- msgstr ""
-
--#: fortran/parse.c:2889
-+#: fortran/parse.c:2883
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Component %s at %L of type EVENT_TYPE must have a codimension or be a "
-@@ -54813,7 +54959,7 @@
- "pointer attribute"
- msgstr ""
-
--#: fortran/parse.c:2895
-+#: fortran/parse.c:2889
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Pointer component %s at %L has a noncoarray subcomponent of type EVENT_TYPE, "
-@@ -54820,13 +54966,13 @@
- "which must have a codimension or be a subcomponent of a coarray"
- msgstr ""
-
--#: fortran/parse.c:2900
-+#: fortran/parse.c:2894
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocatable component %s at %L of type EVENT_TYPE must have a codimension"
- msgstr ""
-
--#: fortran/parse.c:2904
-+#: fortran/parse.c:2898
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocatable component %s at %L must have a codimension as it has a "
-@@ -54833,7 +54979,7 @@
- "noncoarray subcomponent of type EVENT_TYPE"
- msgstr ""
-
--#: fortran/parse.c:2909
-+#: fortran/parse.c:2903
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of "
-@@ -54842,7 +54988,7 @@
- "subcomponent exists)"
- msgstr ""
-
--#: fortran/parse.c:2916
-+#: fortran/parse.c:2910
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of "
-@@ -54851,144 +54997,144 @@
- "codimension or a coarray subcomponent)"
- msgstr ""
-
--#: fortran/parse.c:2968
-+#: fortran/parse.c:2962
- #, gcc-internal-format, gfc-internal-format
- msgid "failed to create map component '%s'"
- msgstr ""
-
--#: fortran/parse.c:3001
-+#: fortran/parse.c:2995
- #, gcc-internal-format, gfc-internal-format
- msgid "failed to create union component '%s'"
- msgstr ""
-
--#: fortran/parse.c:3056
-+#: fortran/parse.c:3050
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in nested structure declaration at %C"
- msgstr ""
-
--#: fortran/parse.c:3143
-+#: fortran/parse.c:3137
- #, gcc-internal-format, gfc-internal-format
- msgid "FINAL declaration at %C must be inside CONTAINS"
- msgstr ""
-
--#: fortran/parse.c:3151
-+#: fortran/parse.c:3145
- #, gcc-internal-format, gfc-internal-format
- msgid "Derived type definition at %C without components"
- msgstr ""
-
--#: fortran/parse.c:3167
-+#: fortran/parse.c:3161
- #, gcc-internal-format, gfc-internal-format
- msgid "PRIVATE statement at %C must precede structure components"
- msgstr ""
-
--#: fortran/parse.c:3184
-+#: fortran/parse.c:3178
- #, gcc-internal-format, gfc-internal-format
- msgid "SEQUENCE statement at %C must precede structure components"
- msgstr ""
-
--#: fortran/parse.c:3190
-+#: fortran/parse.c:3184
- #, gcc-internal-format, gfc-internal-format
- msgid "SEQUENCE attribute at %C already specified in TYPE statement"
- msgstr ""
-
--#: fortran/parse.c:3195
-+#: fortran/parse.c:3189
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate SEQUENCE statement at %C"
- msgstr ""
-
--#: fortran/parse.c:3205
-+#: fortran/parse.c:3199
- #, gcc-internal-format, gfc-internal-format
- msgid "CONTAINS block in derived type definition at %C"
- msgstr ""
-
--#: fortran/parse.c:3263
-+#: fortran/parse.c:3257
- #, gcc-internal-format, gfc-internal-format
- msgid "ENUM declaration at %C has no ENUMERATORS"
- msgstr ""
-
--#: fortran/parse.c:3350
-+#: fortran/parse.c:3344
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement in INTERFACE block at %C"
- msgstr ""
-
--#: fortran/parse.c:3374
-+#: fortran/parse.c:3368
- #, gcc-internal-format
- msgid ""
- "Name %qs of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type"
- msgstr ""
-
--#: fortran/parse.c:3408
-+#: fortran/parse.c:3402
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement at %C in INTERFACE body"
- msgstr ""
-
--#: fortran/parse.c:3426
-+#: fortran/parse.c:3420
- #, gcc-internal-format
- msgid ""
- "INTERFACE procedure %qs at %L has the same name as the enclosing procedure"
- msgstr ""
-
--#: fortran/parse.c:3556
-+#: fortran/parse.c:3550
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement is not allowed inside of BLOCK at %C"
- msgstr ""
-
--#: fortran/parse.c:3586
-+#: fortran/parse.c:3581
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement is not allowed inside of BLOCK DATA at %C"
- msgstr ""
-
--#: fortran/parse.c:3676
-+#: fortran/parse.c:3671
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement must appear in a MODULE"
- msgstr ""
-
--#: fortran/parse.c:3684
-+#: fortran/parse.c:3679
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement at %C follows another accessibility specification"
- msgstr ""
-
--#: fortran/parse.c:3736
-+#: fortran/parse.c:3731
- #, gcc-internal-format
- msgid "Bad kind expression for function %qs at %L"
- msgstr ""
-
--#: fortran/parse.c:3740
-+#: fortran/parse.c:3735
- #, gcc-internal-format
- msgid "The type for function %qs at %L is not accessible"
- msgstr ""
-
--#: fortran/parse.c:3800
-+#: fortran/parse.c:3795
- #, gcc-internal-format, gfc-internal-format
- msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE"
- msgstr ""
-
--#: fortran/parse.c:3822
-+#: fortran/parse.c:3817
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement in WHERE block at %C"
- msgstr ""
-
--#: fortran/parse.c:3881
-+#: fortran/parse.c:3876
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement in FORALL block at %C"
- msgstr ""
-
--#: fortran/parse.c:3932
-+#: fortran/parse.c:3927
- #, gcc-internal-format, gfc-internal-format
- msgid "ELSE IF statement at %C cannot follow ELSE statement at %L"
- msgstr ""
-
--#: fortran/parse.c:3950
-+#: fortran/parse.c:3945
- #, gcc-internal-format, gfc-internal-format
- msgid "Duplicate ELSE statements at %L and %C"
- msgstr ""
-
--#: fortran/parse.c:4011
-+#: fortran/parse.c:4006
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C"
- msgstr ""
-
--#: fortran/parse.c:4094
-+#: fortran/parse.c:4089
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Expected TYPE IS, CLASS IS or END SELECT statement following SELECT TYPE at "
-@@ -54995,137 +55141,137 @@
- "%C"
- msgstr ""
-
--#: fortran/parse.c:4156
-+#: fortran/parse.c:4151
- #, gcc-internal-format
- msgid "Variable %qs at %C cannot be redefined inside loop beginning at %L"
- msgstr ""
-
--#: fortran/parse.c:4189
-+#: fortran/parse.c:4184
- #, gcc-internal-format, gfc-internal-format
- msgid "End of nonblock DO statement at %C is within another block"
- msgstr ""
-
--#: fortran/parse.c:4199
-+#: fortran/parse.c:4194
- #, gcc-internal-format, gfc-internal-format
- msgid "End of nonblock DO statement at %C is interwoven with another DO loop"
- msgstr ""
-
--#: fortran/parse.c:4225
-+#: fortran/parse.c:4220
- #, gcc-internal-format, gfc-internal-format
- msgid "CRITICAL block inside of OpenACC region at %C"
- msgstr ""
-
--#: fortran/parse.c:4252
-+#: fortran/parse.c:4247
- #, gcc-internal-format, gfc-internal-format
- msgid "Statement label in END CRITICAL at %C does not match CRITICAL label"
- msgstr ""
-
--#: fortran/parse.c:4321
-+#: fortran/parse.c:4316
- #, gcc-internal-format, gfc-internal-format
- msgid "BLOCK construct at %C"
- msgstr ""
-
--#: fortran/parse.c:4355
-+#: fortran/parse.c:4350
- #, gcc-internal-format, gfc-internal-format
- msgid "ASSOCIATE construct at %C"
- msgstr ""
-
--#: fortran/parse.c:4536
-+#: fortran/parse.c:4531
- #, gcc-internal-format, gfc-internal-format
- msgid "Statement label in ENDDO at %C doesn't match DO label"
- msgstr ""
-
--#: fortran/parse.c:4552
-+#: fortran/parse.c:4547
- #, gcc-internal-format, gfc-internal-format
- msgid "Named block DO at %L requires matching ENDDO name"
- msgstr ""
-
--#: fortran/parse.c:4733
-+#: fortran/parse.c:4729
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing !$OMP END ATOMIC after !$OMP ATOMIC CAPTURE at %C"
- msgstr ""
-
--#: fortran/parse.c:4749 fortran/parse.c:4808
-+#: fortran/parse.c:4745 fortran/parse.c:4804
- #, gcc-internal-format, gfc-internal-format
- msgid "OpenACC directive inside of CRITICAL block at %C"
- msgstr ""
-
--#: fortran/parse.c:4783
-+#: fortran/parse.c:4779
- #, gcc-internal-format, gfc-internal-format
- msgid "Expecting %s at %C"
- msgstr ""
-
--#: fortran/parse.c:4827
-+#: fortran/parse.c:4823
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected DO loop at %C"
- msgstr ""
-
--#: fortran/parse.c:4847
-+#: fortran/parse.c:4843
- #, gcc-internal-format, gfc-internal-format
- msgid "Redundant !$ACC END LOOP at %C"
- msgstr ""
-
--#: fortran/parse.c:5060
-+#: fortran/parse.c:5056
- #, gcc-internal-format, gfc-internal-format
- msgid "Name after !$omp critical and !$omp end critical does not match at %C"
- msgstr ""
-
--#: fortran/parse.c:5117
-+#: fortran/parse.c:5113
- #, gcc-internal-format, gfc-internal-format
- msgid "%s statement at %C cannot terminate a non-block DO loop"
- msgstr ""
-
--#: fortran/parse.c:5131
-+#: fortran/parse.c:5127
- #, gcc-internal-format, gfc-internal-format
- msgid "DATA statement at %C after the first executable statement"
- msgstr ""
-
--#: fortran/parse.c:5362
-+#: fortran/parse.c:5358
- #, gcc-internal-format
- msgid "Contained procedure %qs at %C is already ambiguous"
- msgstr ""
-
--#: fortran/parse.c:5419
-+#: fortran/parse.c:5415
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement in CONTAINS section at %C"
- msgstr ""
-
--#: fortran/parse.c:5444
-+#: fortran/parse.c:5440
- #, gcc-internal-format, gfc-internal-format
- msgid "CONTAINS statement without FUNCTION or SUBROUTINE statement at %C"
- msgstr ""
-
--#: fortran/parse.c:5556
-+#: fortran/parse.c:5552
- #, gcc-internal-format, gfc-internal-format
- msgid "CONTAINS statement at %C is already in a contained program unit"
- msgstr ""
-
--#: fortran/parse.c:5602
-+#: fortran/parse.c:5598
- #, gcc-internal-format
- msgid "gfc_global_used(): Bad type"
- msgstr ""
-
--#: fortran/parse.c:5607
-+#: fortran/parse.c:5603
- #, gcc-internal-format
- msgid "Global binding name %qs at %L is already being used as a %s at %L"
- msgstr ""
-
--#: fortran/parse.c:5610
-+#: fortran/parse.c:5606
- #, gcc-internal-format
- msgid "Global name %qs at %L is already being used as a %s at %L"
- msgstr ""
-
--#: fortran/parse.c:5631
-+#: fortran/parse.c:5627
- #, gcc-internal-format, gfc-internal-format
- msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L"
- msgstr ""
-
--#: fortran/parse.c:5657
-+#: fortran/parse.c:5653
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement in BLOCK DATA at %C"
- msgstr ""
-
--#: fortran/parse.c:5742
-+#: fortran/parse.c:5738
- #, gcc-internal-format, gfc-internal-format
- msgid "Unexpected %s statement in MODULE at %C"
- msgstr ""
-@@ -55133,7 +55279,7 @@
- #. If we see a duplicate main program, shut down. If the second
- #. instance is an implied main program, i.e. data decls or executable
- #. statements, we're in for lots of errors.
--#: fortran/parse.c:6129
-+#: fortran/parse.c:6125
- #, gcc-internal-format, gfc-internal-format
- msgid "Two main PROGRAMs at %L and %C"
- msgstr ""
-@@ -55325,47 +55471,47 @@
- msgid "Error converting PARAMETER constant in complex constant at %C"
- msgstr ""
-
--#: fortran/primary.c:1430
-+#: fortran/primary.c:1434
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in COMPLEX constant at %C"
- msgstr ""
-
--#: fortran/primary.c:1557
-+#: fortran/primary.c:1561
- #, gcc-internal-format, gfc-internal-format
- msgid "Namelist '%s' can not be an argument at %L"
- msgstr ""
-
--#: fortran/primary.c:1643
-+#: fortran/primary.c:1647
- #, gcc-internal-format
- msgid "Keyword %qs at %C has already appeared in the current argument list"
- msgstr ""
-
--#: fortran/primary.c:1707
-+#: fortran/primary.c:1711
- #, gcc-internal-format, gfc-internal-format
- msgid "argument list function at %C"
- msgstr ""
-
--#: fortran/primary.c:1775
-+#: fortran/primary.c:1779
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected alternate return label at %C"
- msgstr ""
-
--#: fortran/primary.c:1797
-+#: fortran/primary.c:1801
- #, gcc-internal-format, gfc-internal-format
- msgid "Missing keyword name in actual argument list at %C"
- msgstr ""
-
--#: fortran/primary.c:1843
-+#: fortran/primary.c:1847
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in argument list at %C"
- msgstr ""
-
--#: fortran/primary.c:1864
-+#: fortran/primary.c:1868
- #, gcc-internal-format
- msgid "extend_ref(): Bad tail"
- msgstr ""
-
--#: fortran/primary.c:1903
-+#: fortran/primary.c:1907
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Array section designator, e.g. '(:)', is required besides the coarray "
-@@ -55372,57 +55518,57 @@
- "designator '[...]' at %C"
- msgstr ""
-
--#: fortran/primary.c:1911
-+#: fortran/primary.c:1915
- #, gcc-internal-format
- msgid "Coarray designator at %C but %qs is not a coarray"
- msgstr ""
-
--#: fortran/primary.c:1988
-+#: fortran/primary.c:1992
- #, gcc-internal-format
- msgid "Symbol %qs at %C has no IMPLICIT type"
- msgstr ""
-
--#: fortran/primary.c:1994
-+#: fortran/primary.c:1998
- #, gcc-internal-format
- msgid "Unexpected %<%c%> for nonderived-type variable %qs at %C"
- msgstr ""
-
--#: fortran/primary.c:2012
-+#: fortran/primary.c:2016
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected structure component name at %C"
- msgstr ""
-
--#: fortran/primary.c:2063
-+#: fortran/primary.c:2067
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected argument list at %C"
- msgstr ""
-
--#: fortran/primary.c:2103
-+#: fortran/primary.c:2107
- #, gcc-internal-format
- msgid "Procedure pointer component %qs requires an argument list at %C"
- msgstr ""
-
--#: fortran/primary.c:2191
-+#: fortran/primary.c:2195
- #, gcc-internal-format, gfc-internal-format
- msgid "Coindexed procedure-pointer component at %C"
- msgstr ""
-
--#: fortran/primary.c:2226
-+#: fortran/primary.c:2230
- #, gcc-internal-format
- msgid "gfc_variable_attr(): Expression isn't a variable"
- msgstr ""
-
--#: fortran/primary.c:2281
-+#: fortran/primary.c:2285
- #, gcc-internal-format
- msgid "gfc_variable_attr(): Bad array reference"
- msgstr ""
-
--#: fortran/primary.c:2451
-+#: fortran/primary.c:2455
- #, gcc-internal-format, gfc-internal-format
- msgid "Structure constructor with missing optional arguments at %C"
- msgstr ""
-
--#: fortran/primary.c:2460
-+#: fortran/primary.c:2464
- #, gcc-internal-format
- msgid ""
- "No initializer for allocatable component '%qs' given in the structure "
-@@ -55429,50 +55575,50 @@
- "constructor at %C"
- msgstr ""
-
--#: fortran/primary.c:2467
-+#: fortran/primary.c:2471
- #, gcc-internal-format
- msgid ""
- "No initializer for component %qs given in the structure constructor at %C!"
- msgstr ""
-
--#: fortran/primary.c:2515
-+#: fortran/primary.c:2519
- #, gcc-internal-format
- msgid "Can't construct ABSTRACT type %qs at %L"
- msgstr ""
-
--#: fortran/primary.c:2535
-+#: fortran/primary.c:2539
- #, gcc-internal-format, gfc-internal-format
- msgid "Structure constructor with named arguments at %C"
- msgstr ""
-
--#: fortran/primary.c:2550
-+#: fortran/primary.c:2554
- #, gcc-internal-format, gfc-internal-format
- msgid "Component initializer without name after component named %s at %L!"
- msgstr ""
-
--#: fortran/primary.c:2555
-+#: fortran/primary.c:2559
- #, gcc-internal-format, gfc-internal-format
- msgid "Too many components in structure constructor at %L!"
- msgstr ""
-
--#: fortran/primary.c:2592
-+#: fortran/primary.c:2596
- #, gcc-internal-format
- msgid "Component %qs is initialized twice in the structure constructor at %L!"
- msgstr ""
-
--#: fortran/primary.c:2604
-+#: fortran/primary.c:2608
- #, gcc-internal-format
- msgid ""
- "Coindexed expression to pointer component %qs in structure constructor at %L!"
- msgstr ""
-
--#: fortran/primary.c:2658
-+#: fortran/primary.c:2662
- #, gcc-internal-format
- msgid ""
- "component %qs at %L has already been set by a parent derived type constructor"
- msgstr ""
-
--#: fortran/primary.c:2861
-+#: fortran/primary.c:2865
- #, gcc-internal-format
- msgid ""
- "%qs at %C is the name of a recursive function and so refers to the result "
-@@ -55479,47 +55625,47 @@
- "variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
- msgstr ""
-
--#: fortran/primary.c:2985
-+#: fortran/primary.c:2989
- #, gcc-internal-format
- msgid "Unexpected use of subroutine name %qs at %C"
- msgstr ""
-
--#: fortran/primary.c:3017
-+#: fortran/primary.c:3021
- #, gcc-internal-format
- msgid "Statement function %qs requires argument list at %C"
- msgstr ""
-
--#: fortran/primary.c:3020
-+#: fortran/primary.c:3024
- #, gcc-internal-format
- msgid "Function %qs requires an argument list at %C"
- msgstr ""
-
--#: fortran/primary.c:3070
-+#: fortran/primary.c:3074
- #, gcc-internal-format
- msgid "Missing argument to %qs at %C"
- msgstr ""
-
--#: fortran/primary.c:3228
-+#: fortran/primary.c:3232
- #, gcc-internal-format
- msgid "Missing argument list in function %qs at %C"
- msgstr ""
-
--#: fortran/primary.c:3272
-+#: fortran/primary.c:3276
- #, gcc-internal-format, gfc-internal-format
- msgid "Symbol at %C is not appropriate for an expression"
- msgstr ""
-
--#: fortran/primary.c:3342
-+#: fortran/primary.c:3346
- #, gcc-internal-format, gfc-internal-format
- msgid "Derived type '%s' cannot be used as a variable at %C"
- msgstr ""
-
--#: fortran/primary.c:3383
-+#: fortran/primary.c:3387
- #, gcc-internal-format, gfc-internal-format
- msgid "Named constant at %C in an EQUIVALENCE"
- msgstr ""
-
--#: fortran/primary.c:3417
-+#: fortran/primary.c:3421
- #, gcc-internal-format
- msgid "%qs at %C is not a variable"
- msgstr ""
-@@ -55905,7 +56051,7 @@
- "Declare it RECURSIVE or use %<-frecursive%>"
- msgstr ""
-
--#: fortran/resolve.c:1782 fortran/resolve.c:8938 fortran/resolve.c:10563
-+#: fortran/resolve.c:1782 fortran/resolve.c:8955 fortran/resolve.c:10601
- #, gcc-internal-format, gfc-internal-format
- msgid "Label %d referenced at %L is never defined"
- msgstr ""
-@@ -56022,7 +56168,7 @@
- msgid "Unable to resolve the specific function %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:2746 fortran/resolve.c:15387
-+#: fortran/resolve.c:2746 fortran/resolve.c:15458
- #, gcc-internal-format
- msgid "Function %qs at %L has no IMPLICIT type"
- msgstr ""
-@@ -56400,7 +56546,7 @@
- msgid "Assumed-rank variable %s at %L shall not have a subobject reference"
- msgstr ""
-
--#: fortran/resolve.c:5153
-+#: fortran/resolve.c:5158
- #, gcc-internal-format
- msgid ""
- "Variable %qs, used in a specification expression, is referenced at %L before "
-@@ -56407,7 +56553,7 @@
- "the ENTRY statement in which it is a parameter"
- msgstr ""
-
--#: fortran/resolve.c:5158
-+#: fortran/resolve.c:5163
- #, gcc-internal-format
- msgid ""
- "Variable %qs is used at %L before the ENTRY statement in which it is a "
-@@ -56414,22 +56560,22 @@
- "parameter"
- msgstr ""
-
--#: fortran/resolve.c:5228
-+#: fortran/resolve.c:5233
- #, gcc-internal-format, gfc-internal-format
- msgid "Polymorphic subobject of coindexed object at %L"
- msgstr ""
-
--#: fortran/resolve.c:5241
-+#: fortran/resolve.c:5246
- #, gcc-internal-format, gfc-internal-format
- msgid "Coindexed object with polymorphic allocatable subcomponent at %L"
- msgstr ""
-
--#: fortran/resolve.c:5579
-+#: fortran/resolve.c:5584
- #, gcc-internal-format, gfc-internal-format
- msgid "Passed-object at %L must be scalar"
- msgstr ""
-
--#: fortran/resolve.c:5586
-+#: fortran/resolve.c:5591
- #, gcc-internal-format
- msgid ""
- "Base object for procedure-pointer component call at %L is of ABSTRACT type "
-@@ -56436,104 +56582,104 @@
- "%qs"
- msgstr ""
-
--#: fortran/resolve.c:5621
-+#: fortran/resolve.c:5626
- #, gcc-internal-format
- msgid "Base object for type-bound procedure call at %L is of ABSTRACT type %qs"
- msgstr ""
-
--#: fortran/resolve.c:5630
-+#: fortran/resolve.c:5635
- #, gcc-internal-format, gfc-internal-format
- msgid "Base object for NOPASS type-bound procedure call at %L must be scalar"
- msgstr ""
-
- #. Nothing matching found!
--#: fortran/resolve.c:5818
-+#: fortran/resolve.c:5823
- #, gcc-internal-format
- msgid ""
- "Found no matching specific binding for the call to the GENERIC %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:5845
-+#: fortran/resolve.c:5850
- #, gcc-internal-format
- msgid "%qs at %L should be a SUBROUTINE"
- msgstr ""
-
--#: fortran/resolve.c:5896
-+#: fortran/resolve.c:5901
- #, gcc-internal-format
- msgid "%qs at %L should be a FUNCTION"
- msgstr ""
-
--#: fortran/resolve.c:6413
-+#: fortran/resolve.c:6418
- #, gcc-internal-format
- msgid "gfc_resolve_expr(): Bad expression type"
- msgstr ""
-
--#: fortran/resolve.c:6439
-+#: fortran/resolve.c:6444
- #, gcc-internal-format, gfc-internal-format
- msgid "%s at %L must be a scalar"
- msgstr ""
-
--#: fortran/resolve.c:6449
-+#: fortran/resolve.c:6454
- #, gcc-internal-format, gfc-internal-format
- msgid "%s at %L must be integer"
- msgstr ""
-
--#: fortran/resolve.c:6453 fortran/resolve.c:6460
-+#: fortran/resolve.c:6458 fortran/resolve.c:6465
- #, gcc-internal-format, gfc-internal-format
- msgid "%s at %L must be INTEGER"
- msgstr ""
-
--#: fortran/resolve.c:6502
-+#: fortran/resolve.c:6507
- #, gcc-internal-format, gfc-internal-format
- msgid "Step expression in DO loop at %L cannot be zero"
- msgstr ""
-
--#: fortran/resolve.c:6538
-+#: fortran/resolve.c:6543
- #, gcc-internal-format, gfc-internal-format
- msgid "DO loop at %L will be executed zero times"
- msgstr ""
-
--#: fortran/resolve.c:6599
-+#: fortran/resolve.c:6604
- #, gcc-internal-format, gfc-internal-format
- msgid "FORALL index-name at %L must be a scalar INTEGER"
- msgstr ""
-
--#: fortran/resolve.c:6604
-+#: fortran/resolve.c:6609
- #, gcc-internal-format, gfc-internal-format
- msgid "FORALL start expression at %L must be a scalar INTEGER"
- msgstr ""
-
--#: fortran/resolve.c:6611
-+#: fortran/resolve.c:6616
- #, gcc-internal-format, gfc-internal-format
- msgid "FORALL end expression at %L must be a scalar INTEGER"
- msgstr ""
-
--#: fortran/resolve.c:6619
-+#: fortran/resolve.c:6624
- #, gcc-internal-format, gfc-internal-format
- msgid "FORALL stride expression at %L must be a scalar %s"
- msgstr ""
-
--#: fortran/resolve.c:6624
-+#: fortran/resolve.c:6629
- #, gcc-internal-format, gfc-internal-format
- msgid "FORALL stride expression at %L cannot be zero"
- msgstr ""
-
--#: fortran/resolve.c:6637
-+#: fortran/resolve.c:6642
- #, gcc-internal-format
- msgid "FORALL index %qs may not appear in triplet specification at %L"
- msgstr ""
-
--#: fortran/resolve.c:6735 fortran/resolve.c:7027
-+#: fortran/resolve.c:6740 fortran/resolve.c:7032
- #, gcc-internal-format, gfc-internal-format
- msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
- msgstr ""
-
--#: fortran/resolve.c:6743 fortran/resolve.c:6992
-+#: fortran/resolve.c:6748 fortran/resolve.c:6997
- #, gcc-internal-format, gfc-internal-format
- msgid "Coindexed allocatable object at %L"
- msgstr ""
-
--#: fortran/resolve.c:6849
-+#: fortran/resolve.c:6854
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Source-expr at %L must be scalar or have the same rank as the allocate-"
-@@ -56540,17 +56686,17 @@
- "object at %L"
- msgstr ""
-
--#: fortran/resolve.c:6880
-+#: fortran/resolve.c:6885
- #, gcc-internal-format, gfc-internal-format
- msgid "Source-expr at %L and allocate-object at %L must have the same shape"
- msgstr ""
-
--#: fortran/resolve.c:7038
-+#: fortran/resolve.c:7043
- #, gcc-internal-format, gfc-internal-format
- msgid "Type of entity at %L is type incompatible with source-expr at %L"
- msgstr ""
-
--#: fortran/resolve.c:7050
-+#: fortran/resolve.c:7055
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The allocate-object at %L and the source-expr at %L shall have the same kind "
-@@ -56557,7 +56703,7 @@
- "type parameter"
- msgstr ""
-
--#: fortran/resolve.c:7064
-+#: fortran/resolve.c:7069
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The source-expr at %L shall neither be of type LOCK_TYPE nor have a "
-@@ -56564,7 +56710,7 @@
- "LOCK_TYPE component if allocate-object at %L is a coarray"
- msgstr ""
-
--#: fortran/resolve.c:7079
-+#: fortran/resolve.c:7084
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The source-expr at %L shall neither be of type EVENT_TYPE nor have a "
-@@ -56571,13 +56717,13 @@
- "EVENT_TYPE component if allocate-object at %L is a coarray"
- msgstr ""
-
--#: fortran/resolve.c:7092
-+#: fortran/resolve.c:7097
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocating %s of ABSTRACT base type at %L requires a type-spec or source-expr"
- msgstr ""
-
--#: fortran/resolve.c:7105
-+#: fortran/resolve.c:7110
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Allocating %s at %L with type-spec requires the same character-length "
-@@ -56584,12 +56730,12 @@
- "parameter as in the declaration"
- msgstr ""
-
--#: fortran/resolve.c:7223 fortran/resolve.c:7238
-+#: fortran/resolve.c:7228 fortran/resolve.c:7243
- #, gcc-internal-format, gfc-internal-format
- msgid "Array specification required in ALLOCATE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:7230
-+#: fortran/resolve.c:7235
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Array specification or array-valued SOURCE= expression required in ALLOCATE "
-@@ -56596,17 +56742,17 @@
- "statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:7253
-+#: fortran/resolve.c:7258
- #, gcc-internal-format, gfc-internal-format
- msgid "Coarray specification required in ALLOCATE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:7280
-+#: fortran/resolve.c:7285
- #, gcc-internal-format, gfc-internal-format
- msgid "Bad array specification in ALLOCATE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:7299
-+#: fortran/resolve.c:7304
- #, gcc-internal-format
- msgid ""
- "%qs must not appear in the array specification at %L in the same ALLOCATE "
-@@ -56613,47 +56759,47 @@
- "statement where it is itself allocated"
- msgstr ""
-
--#: fortran/resolve.c:7314
-+#: fortran/resolve.c:7319
- #, gcc-internal-format, gfc-internal-format
- msgid "Expected '*' in coindex specification in ALLOCATE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:7325
-+#: fortran/resolve.c:7330
- #, gcc-internal-format, gfc-internal-format
- msgid "Bad coarray specification in ALLOCATE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:7357
-+#: fortran/resolve.c:7362
- #, gcc-internal-format, gfc-internal-format
- msgid "Stat-variable at %L must be a scalar INTEGER variable"
- msgstr ""
-
--#: fortran/resolve.c:7380
-+#: fortran/resolve.c:7385
- #, gcc-internal-format, gfc-internal-format
- msgid "Stat-variable at %L shall not be %sd within the same %s statement"
- msgstr ""
-
--#: fortran/resolve.c:7391
-+#: fortran/resolve.c:7396
- #, gcc-internal-format, gfc-internal-format
- msgid "ERRMSG at %L is useless without a STAT tag"
- msgstr ""
-
--#: fortran/resolve.c:7402
-+#: fortran/resolve.c:7407
- #, gcc-internal-format, gfc-internal-format
- msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
- msgstr ""
-
--#: fortran/resolve.c:7425
-+#: fortran/resolve.c:7430
- #, gcc-internal-format, gfc-internal-format
- msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
- msgstr ""
-
--#: fortran/resolve.c:7455
-+#: fortran/resolve.c:7460
- #, gcc-internal-format, gfc-internal-format
- msgid "Allocate-object at %L also appears at %L"
- msgstr ""
-
--#: fortran/resolve.c:7461 fortran/resolve.c:7467
-+#: fortran/resolve.c:7466 fortran/resolve.c:7472
- #, gcc-internal-format, gfc-internal-format
- msgid "Allocate-object at %L is subobject of object at %L"
- msgstr ""
-@@ -56662,27 +56808,27 @@
- #. element in the list. Either way, we must
- #. issue an error and get the next case from P.
- #. FIXME: Sort P and Q by line number.
--#: fortran/resolve.c:7679
-+#: fortran/resolve.c:7684
- #, gcc-internal-format, gfc-internal-format
- msgid "CASE label at %L overlaps with CASE label at %L"
- msgstr ""
-
--#: fortran/resolve.c:7730
-+#: fortran/resolve.c:7735
- #, gcc-internal-format, gfc-internal-format
- msgid "Expression in CASE statement at %L must be of type %s"
- msgstr ""
-
--#: fortran/resolve.c:7741
-+#: fortran/resolve.c:7746
- #, gcc-internal-format, gfc-internal-format
- msgid "Expression in CASE statement at %L must be of kind %d"
- msgstr ""
-
--#: fortran/resolve.c:7754
-+#: fortran/resolve.c:7759
- #, gcc-internal-format, gfc-internal-format
- msgid "Expression in CASE statement at %L must be scalar"
- msgstr ""
-
--#: fortran/resolve.c:7800
-+#: fortran/resolve.c:7805
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Selection expression in computed GOTO statement at %L must be a scalar "
-@@ -56689,100 +56835,100 @@
- "integer expression"
- msgstr ""
-
--#: fortran/resolve.c:7819
-+#: fortran/resolve.c:7824
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of SELECT statement at %L cannot be %s"
- msgstr ""
-
--#: fortran/resolve.c:7829
-+#: fortran/resolve.c:7834
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of SELECT statement at %L must be a scalar expression"
- msgstr ""
-
--#: fortran/resolve.c:7847 fortran/resolve.c:7855
-+#: fortran/resolve.c:7852 fortran/resolve.c:7860
- #, gcc-internal-format, gfc-internal-format
- msgid "Expression in CASE statement at %L is not in the range of %s"
- msgstr ""
-
--#: fortran/resolve.c:7917 fortran/resolve.c:8356
-+#: fortran/resolve.c:7922 fortran/resolve.c:8373
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
- msgstr ""
-
--#: fortran/resolve.c:7943
-+#: fortran/resolve.c:7948
- #, gcc-internal-format, gfc-internal-format
- msgid "Logical range in CASE statement at %L is not allowed"
- msgstr ""
-
--#: fortran/resolve.c:7955
-+#: fortran/resolve.c:7960
- #, gcc-internal-format, gfc-internal-format
- msgid "Constant logical value in CASE statement is repeated at %L"
- msgstr ""
-
--#: fortran/resolve.c:7970
-+#: fortran/resolve.c:7975
- #, gcc-internal-format, gfc-internal-format
- msgid "Range specification at %L can never be matched"
- msgstr ""
-
--#: fortran/resolve.c:8073
-+#: fortran/resolve.c:8078
- #, gcc-internal-format, gfc-internal-format
- msgid "Logical SELECT CASE block at %L has more that two cases"
- msgstr ""
-
--#: fortran/resolve.c:8148
-+#: fortran/resolve.c:8153
- #, gcc-internal-format
- msgid "Associate-name %qs at %L is used as array"
- msgstr ""
-
--#: fortran/resolve.c:8159
-+#: fortran/resolve.c:8164
- #, gcc-internal-format, gfc-internal-format
- msgid "CLASS selector at %L needs a temporary which is not yet implemented"
- msgstr ""
-
--#: fortran/resolve.c:8275
-+#: fortran/resolve.c:8292
- #, gcc-internal-format, gfc-internal-format
- msgid "Selector shall be polymorphic in SELECT TYPE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:8292 fortran/resolve.c:8304
-+#: fortran/resolve.c:8309 fortran/resolve.c:8321
- #, gcc-internal-format, gfc-internal-format
- msgid "Selector at %L must not be coindexed"
- msgstr ""
-
--#: fortran/resolve.c:8320
-+#: fortran/resolve.c:8337
- #, gcc-internal-format
- msgid "Derived type %qs at %L must be extensible"
- msgstr ""
-
--#: fortran/resolve.c:8332
-+#: fortran/resolve.c:8349
- #, gcc-internal-format
- msgid "Derived type %qs at %L must be an extension of %qs"
- msgstr ""
-
--#: fortran/resolve.c:8335
-+#: fortran/resolve.c:8352
- #, gcc-internal-format
- msgid "Unexpected intrinsic type %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:8344
-+#: fortran/resolve.c:8361
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The type-spec at %L shall specify that each length type parameter is assumed"
- msgstr ""
-
--#: fortran/resolve.c:8536
-+#: fortran/resolve.c:8553
- #, gcc-internal-format, gfc-internal-format
- msgid "Double CLASS IS block in SELECT TYPE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:8625
-+#: fortran/resolve.c:8642
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid context for NULL () intrinsic at %L"
- msgstr ""
-
- #. FIXME: Test for defined input/output.
--#: fortran/resolve.c:8653
-+#: fortran/resolve.c:8670
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Data transfer element at %L cannot be polymorphic unless it is processed by "
-@@ -56789,7 +56935,7 @@
- "a defined input/output procedure"
- msgstr ""
-
--#: fortran/resolve.c:8665
-+#: fortran/resolve.c:8682
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Data transfer element at %L cannot have POINTER components unless it is "
-@@ -56796,12 +56942,12 @@
- "processed by a defined input/output procedure"
- msgstr ""
-
--#: fortran/resolve.c:8674
-+#: fortran/resolve.c:8691
- #, gcc-internal-format, gfc-internal-format
- msgid "Data transfer element at %L cannot have procedure pointer components"
- msgstr ""
-
--#: fortran/resolve.c:8681
-+#: fortran/resolve.c:8698
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Data transfer element at %L cannot have ALLOCATABLE components unless it is "
-@@ -56808,12 +56954,12 @@
- "processed by a defined input/output procedure"
- msgstr ""
-
--#: fortran/resolve.c:8692 fortran/resolve.c:8698
-+#: fortran/resolve.c:8709 fortran/resolve.c:8715
- #, gcc-internal-format, gfc-internal-format
- msgid "Data transfer element at %L cannot have PRIVATE components"
- msgstr ""
-
--#: fortran/resolve.c:8712
-+#: fortran/resolve.c:8729
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Data transfer element at %L cannot be a full reference to an assumed-size "
-@@ -56820,57 +56966,57 @@
- "array"
- msgstr ""
-
--#: fortran/resolve.c:8769
-+#: fortran/resolve.c:8786
- #, gcc-internal-format, gfc-internal-format
- msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
- msgstr ""
-
--#: fortran/resolve.c:8779
-+#: fortran/resolve.c:8796
- #, gcc-internal-format, gfc-internal-format
- msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
- msgstr ""
-
--#: fortran/resolve.c:8783
-+#: fortran/resolve.c:8800
- #, gcc-internal-format, gfc-internal-format
- msgid "Event variable argument at %L must be a coarray or coindexed"
- msgstr ""
-
--#: fortran/resolve.c:8786
-+#: fortran/resolve.c:8803
- #, gcc-internal-format, gfc-internal-format
- msgid "Event variable argument at %L must be a coarray but not coindexed"
- msgstr ""
-
--#: fortran/resolve.c:8793 fortran/resolve.c:8911
-+#: fortran/resolve.c:8810 fortran/resolve.c:8928
- #, gcc-internal-format, gfc-internal-format
- msgid "STAT= argument at %L must be a scalar INTEGER variable"
- msgstr ""
-
--#: fortran/resolve.c:8805 fortran/resolve.c:8918
-+#: fortran/resolve.c:8822 fortran/resolve.c:8935
- #, gcc-internal-format, gfc-internal-format
- msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable"
- msgstr ""
-
--#: fortran/resolve.c:8817
-+#: fortran/resolve.c:8834
- #, gcc-internal-format, gfc-internal-format
- msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable"
- msgstr ""
-
--#: fortran/resolve.c:8828
-+#: fortran/resolve.c:8845
- #, gcc-internal-format, gfc-internal-format
- msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
- msgstr ""
-
--#: fortran/resolve.c:8888
-+#: fortran/resolve.c:8905
- #, gcc-internal-format, gfc-internal-format
- msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
- msgstr ""
-
--#: fortran/resolve.c:8892 fortran/resolve.c:8902
-+#: fortran/resolve.c:8909 fortran/resolve.c:8919
- #, gcc-internal-format, gfc-internal-format
- msgid "Imageset argument at %L must between 1 and num_images()"
- msgstr ""
-
--#: fortran/resolve.c:8945
-+#: fortran/resolve.c:8962
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Statement at %L is not a valid branch target statement for the branch "
-@@ -56877,7 +57023,7 @@
- "statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:8955
-+#: fortran/resolve.c:8972
- #, gcc-internal-format, gfc-internal-format
- msgid "Branch at %L may result in an infinite loop"
- msgstr ""
-@@ -56884,12 +57030,12 @@
-
- #. Note: A label at END CRITICAL does not leave the CRITICAL
- #. construct as END CRITICAL is still part of it.
--#: fortran/resolve.c:8972 fortran/resolve.c:8995
-+#: fortran/resolve.c:8989 fortran/resolve.c:9012
- #, gcc-internal-format, gfc-internal-format
- msgid "GOTO statement at %L leaves CRITICAL construct for label at %L"
- msgstr ""
-
--#: fortran/resolve.c:8976 fortran/resolve.c:9001
-+#: fortran/resolve.c:8993 fortran/resolve.c:9018
- #, gcc-internal-format, gfc-internal-format
- msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
- msgstr ""
-@@ -56897,37 +57043,37 @@
- #. The label is not in an enclosing block, so illegal. This was
- #. allowed in Fortran 66, so we allow it as extension. No
- #. further checks are necessary in this case.
--#: fortran/resolve.c:9016
-+#: fortran/resolve.c:9033
- #, gcc-internal-format, gfc-internal-format
- msgid "Label at %L is not in the same block as the GOTO statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:9088
-+#: fortran/resolve.c:9105
- #, gcc-internal-format, gfc-internal-format
- msgid "WHERE mask at %L has inconsistent shape"
- msgstr ""
-
--#: fortran/resolve.c:9104
-+#: fortran/resolve.c:9121
- #, gcc-internal-format, gfc-internal-format
- msgid "WHERE assignment target at %L has inconsistent shape"
- msgstr ""
-
--#: fortran/resolve.c:9112 fortran/resolve.c:9199
-+#: fortran/resolve.c:9129 fortran/resolve.c:9216
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
- msgstr ""
-
--#: fortran/resolve.c:9122 fortran/resolve.c:9209
-+#: fortran/resolve.c:9139 fortran/resolve.c:9226
- #, gcc-internal-format, gfc-internal-format
- msgid "Unsupported statement inside WHERE at %L"
- msgstr ""
-
--#: fortran/resolve.c:9153
-+#: fortran/resolve.c:9170
- #, gcc-internal-format, gfc-internal-format
- msgid "Assignment to a FORALL index variable at %L"
- msgstr ""
-
--#: fortran/resolve.c:9162
-+#: fortran/resolve.c:9179
- #, gcc-internal-format
- msgid ""
- "The FORALL with index %qs is not used on the left side of the assignment at "
-@@ -56934,27 +57080,32 @@
- "%L and so might cause multiple assignment to this object"
- msgstr ""
-
--#: fortran/resolve.c:9331
-+#: fortran/resolve.c:9344
- #, gcc-internal-format, gfc-internal-format
-+msgid "FORALL index-name at %L must be a scalar variable of type integer"
-+msgstr ""
++ insn = gen_vxworks_load_got ();
++ }
+ else
+ {
++ if (!got_register_rtx)
++ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
+
-+#: fortran/resolve.c:9354
-+#, gcc-internal-format, gfc-internal-format
- msgid "An outer FORALL construct already has an index with this name %L"
- msgstr ""
-
--#: fortran/resolve.c:9409
-+#: fortran/resolve.c:9431
- #, gcc-internal-format, gfc-internal-format
- msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
- msgstr ""
-
--#: fortran/resolve.c:9487
-+#: fortran/resolve.c:9525
- #, gcc-internal-format
- msgid "gfc_resolve_blocks(): Bad block type"
- msgstr ""
-
--#: fortran/resolve.c:9601
-+#: fortran/resolve.c:9639
- #, gcc-internal-format, gfc-internal-format
- msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
- msgstr ""
-
--#: fortran/resolve.c:9633
-+#: fortran/resolve.c:9671
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Coindexed expression at %L is assigned to a derived type variable with a "
-@@ -56961,7 +57112,7 @@
- "POINTER component in a PURE procedure"
- msgstr ""
-
--#: fortran/resolve.c:9638
-+#: fortran/resolve.c:9676
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The impure variable at %L is assigned to a derived type variable with a "
-@@ -56968,22 +57119,22 @@
- "POINTER component in a PURE procedure (12.6)"
- msgstr ""
-
--#: fortran/resolve.c:9648
-+#: fortran/resolve.c:9686
- #, gcc-internal-format, gfc-internal-format
- msgid "Assignment to coindexed variable at %L in a PURE procedure"
- msgstr ""
-
--#: fortran/resolve.c:9680
-+#: fortran/resolve.c:9718
- #, gcc-internal-format, gfc-internal-format
- msgid "Assignment to polymorphic coarray at %L is not permitted"
- msgstr ""
-
--#: fortran/resolve.c:9684
-+#: fortran/resolve.c:9722
- #, gcc-internal-format, gfc-internal-format
- msgid "Assignment to an allocatable polymorphic variable at %L"
- msgstr ""
-
--#: fortran/resolve.c:9689
-+#: fortran/resolve.c:9727
- #, gcc-internal-format
- msgid ""
- "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-"
-@@ -56991,13 +57142,13 @@
- msgstr ""
-
- #. See PR 43366.
--#: fortran/resolve.c:9694
-+#: fortran/resolve.c:9732
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Assignment to an allocatable polymorphic variable at %L is not yet supported"
- msgstr ""
-
--#: fortran/resolve.c:9700
-+#: fortran/resolve.c:9738
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Nonallocatable variable must not be polymorphic in intrinsic assignment at "
-@@ -57004,7 +57155,7 @@
- "%L - check that there is a matching specific subroutine for '=' operator"
- msgstr ""
-
--#: fortran/resolve.c:9711
-+#: fortran/resolve.c:9749
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Coindexed variable must not have an allocatable ultimate component in "
-@@ -57011,7 +57162,7 @@
- "assignment at %L"
- msgstr ""
-
--#: fortran/resolve.c:10014
-+#: fortran/resolve.c:10052
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "TODO: type-bound defined assignment(s) at %L not done because multiple part "
-@@ -57020,12 +57171,12 @@
-
- #. Even if standard does not support this feature, continue to build
- #. the two statements to avoid upsetting frontend_passes.c.
--#: fortran/resolve.c:10256
-+#: fortran/resolve.c:10294
- #, gcc-internal-format, gfc-internal-format
- msgid "Pointer procedure assignment at %L"
- msgstr ""
-
--#: fortran/resolve.c:10268
-+#: fortran/resolve.c:10306
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "The function result on the lhs of the assignment at %L must have the pointer "
-@@ -57032,60 +57183,60 @@
- "attribute."
- msgstr ""
-
--#: fortran/resolve.c:10495
-+#: fortran/resolve.c:10533
- #, gcc-internal-format, gfc-internal-format
- msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
- msgstr ""
-
--#: fortran/resolve.c:10498
-+#: fortran/resolve.c:10536
- #, gcc-internal-format
- msgid "Variable %qs has not been assigned a target label at %L"
- msgstr ""
-
--#: fortran/resolve.c:10509
-+#: fortran/resolve.c:10547
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
- msgstr ""
-
--#: fortran/resolve.c:10571
-+#: fortran/resolve.c:10609
- #, gcc-internal-format, gfc-internal-format
- msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
- msgstr ""
-
--#: fortran/resolve.c:10606
-+#: fortran/resolve.c:10644
- #, gcc-internal-format, gfc-internal-format
- msgid "Invalid NULL at %L"
- msgstr ""
-
--#: fortran/resolve.c:10610
-+#: fortran/resolve.c:10648
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
- msgstr ""
-
--#: fortran/resolve.c:10666
-+#: fortran/resolve.c:10704
- #, gcc-internal-format
- msgid "gfc_resolve_code(): No expression on DO WHILE"
- msgstr ""
-
--#: fortran/resolve.c:10671
-+#: fortran/resolve.c:10709
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
- msgstr ""
-
--#: fortran/resolve.c:10755
-+#: fortran/resolve.c:10793
- #, gcc-internal-format, gfc-internal-format
- msgid "FORALL mask clause at %L requires a scalar LOGICAL expression"
- msgstr ""
-
--#: fortran/resolve.c:10826
-+#: fortran/resolve.c:10864
- #, gcc-internal-format
- msgid "gfc_resolve_code(): Bad statement code"
- msgstr ""
-
--#: fortran/resolve.c:10921
-+#: fortran/resolve.c:10959
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s with binding label %s at %L uses the same global identifier as "
-@@ -57094,7 +57245,7 @@
-
- #. This can only happen if the variable is defined in a module - if it
- #. isn't the same module, reject it.
--#: fortran/resolve.c:10934
-+#: fortran/resolve.c:10972
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s from module %s with binding label %s at %L uses the same global "
-@@ -57104,7 +57255,7 @@
- #. Print an error if the procedure is defined multiple times; we have to
- #. exclude references to the same procedure via module association or
- #. multiple checks for the same procedure.
--#: fortran/resolve.c:10951
-+#: fortran/resolve.c:10989
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Procedure %s with binding label %s at %L uses the same global identifier as "
-@@ -57111,42 +57262,42 @@
- "entity at %L"
- msgstr ""
-
--#: fortran/resolve.c:11028
-+#: fortran/resolve.c:11066
- #, gcc-internal-format, gfc-internal-format
- msgid "String length at %L is too large"
- msgstr ""
-
--#: fortran/resolve.c:11364
-+#: fortran/resolve.c:11402
- #, gcc-internal-format
- msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank"
- msgstr ""
-
--#: fortran/resolve.c:11368
-+#: fortran/resolve.c:11406
- #, gcc-internal-format
- msgid "Scalar object %qs at %L may not be ALLOCATABLE"
- msgstr ""
-
--#: fortran/resolve.c:11376
-+#: fortran/resolve.c:11414
- #, gcc-internal-format
- msgid "Array pointer %qs at %L must have a deferred shape or assumed rank"
- msgstr ""
-
--#: fortran/resolve.c:11386
-+#: fortran/resolve.c:11424
- #, gcc-internal-format
- msgid "Array %qs at %L cannot have a deferred shape"
- msgstr ""
-
--#: fortran/resolve.c:11401
-+#: fortran/resolve.c:11439
- #, gcc-internal-format
- msgid "Type %qs of CLASS variable %qs at %L is not extensible"
- msgstr ""
-
--#: fortran/resolve.c:11413
-+#: fortran/resolve.c:11451
- #, gcc-internal-format
- msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer"
- msgstr ""
-
--#: fortran/resolve.c:11444
-+#: fortran/resolve.c:11482
- #, gcc-internal-format
- msgid ""
- "The type %qs cannot be host associated at %L because it is blocked by an "
-@@ -57153,7 +57304,7 @@
- "incompatible object of the same name declared at %L"
- msgstr ""
-
--#: fortran/resolve.c:11466
-+#: fortran/resolve.c:11504
- #, gcc-internal-format
- msgid ""
- "Implied SAVE for module variable %qs at %L, needed due to the default "
-@@ -57160,21 +57311,21 @@
- "initialization"
- msgstr ""
-
-+#: fortran/resolve.c:11532
-+#, gcc-internal-format
-+msgid ""
-+"Entity %qs at %L has a deferred type parameter and requires either the "
-+"POINTER or ALLOCATABLE attribute"
-+msgstr ""
+ /* The GOT symbol is subject to a PC-relative relocation so we need a
+ helper function to add the PC value and thus get the final value. */
+ if (!got_helper_rtx)
+ {
+ char name[32];
+- get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
+
- #. The shape of a main program or module array needs to be
- #. constant.
--#: fortran/resolve.c:11514
-+#: fortran/resolve.c:11573
- #, gcc-internal-format
- msgid "The module or main program array %qs at %L must have constant shape"
- msgstr ""
-
--#: fortran/resolve.c:11526
--#, gcc-internal-format
--msgid ""
--"Entity %qs at %L has a deferred type parameter and requires either the "
--"pointer or allocatable attribute"
--msgstr ""
--
--#: fortran/resolve.c:11542
-+#: fortran/resolve.c:11592
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Entity with assumed character length at %L must be a dummy argument or a "
-@@ -57181,57 +57332,57 @@
- "PARAMETER"
- msgstr ""
-
--#: fortran/resolve.c:11563
-+#: fortran/resolve.c:11613
- #, gcc-internal-format
- msgid "%qs at %L must have constant character length in this context"
- msgstr ""
-
--#: fortran/resolve.c:11570
-+#: fortran/resolve.c:11620
- #, gcc-internal-format
- msgid "COMMON variable %qs at %L must have constant character length"
- msgstr ""
-
--#: fortran/resolve.c:11617
-+#: fortran/resolve.c:11667
- #, gcc-internal-format
- msgid "Allocatable %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11620
-+#: fortran/resolve.c:11670
- #, gcc-internal-format
- msgid "External %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11624
-+#: fortran/resolve.c:11674
- #, gcc-internal-format
- msgid "Dummy %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11627
-+#: fortran/resolve.c:11677
- #, gcc-internal-format
- msgid "Intrinsic %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11630
-+#: fortran/resolve.c:11680
- #, gcc-internal-format
- msgid "Function result %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11633
-+#: fortran/resolve.c:11683
- #, gcc-internal-format
- msgid "Automatic array %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11675
-+#: fortran/resolve.c:11725
- #, gcc-internal-format, gfc-internal-format
- msgid "%s at %L"
- msgstr ""
-
--#: fortran/resolve.c:11702
-+#: fortran/resolve.c:11752
- #, gcc-internal-format
- msgid "Character-valued statement function %qs at %L must have constant length"
- msgstr ""
-
--#: fortran/resolve.c:11724
-+#: fortran/resolve.c:11774
- #, gcc-internal-format
- msgid ""
- "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is "
-@@ -57238,7 +57389,7 @@
- "PUBLIC at %L"
- msgstr ""
-
--#: fortran/resolve.c:11746
-+#: fortran/resolve.c:11796
- #, gcc-internal-format
- msgid ""
- "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs "
-@@ -57245,88 +57396,88 @@
- "which is PRIVATE"
- msgstr ""
-
--#: fortran/resolve.c:11764
-+#: fortran/resolve.c:11814
- #, gcc-internal-format
- msgid "Function %qs at %L cannot have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11773
-+#: fortran/resolve.c:11823
- #, gcc-internal-format
- msgid "External object %qs at %L may not have an initializer"
- msgstr ""
-
--#: fortran/resolve.c:11781
-+#: fortran/resolve.c:11831
- #, gcc-internal-format
- msgid "ELEMENTAL function %qs at %L must have a scalar result"
- msgstr ""
-
--#: fortran/resolve.c:11791
-+#: fortran/resolve.c:11841
- #, gcc-internal-format
- msgid ""
- "Statement function %qs at %L may not have pointer or allocatable attribute"
- msgstr ""
-
--#: fortran/resolve.c:11810
-+#: fortran/resolve.c:11860
- #, gcc-internal-format
- msgid "CHARACTER(*) function %qs at %L cannot be array-valued"
- msgstr ""
-
--#: fortran/resolve.c:11814
-+#: fortran/resolve.c:11864
- #, gcc-internal-format
- msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued"
- msgstr ""
-
--#: fortran/resolve.c:11818
-+#: fortran/resolve.c:11868
- #, gcc-internal-format
- msgid "CHARACTER(*) function %qs at %L cannot be pure"
- msgstr ""
-
--#: fortran/resolve.c:11822
-+#: fortran/resolve.c:11872
- #, gcc-internal-format
- msgid "CHARACTER(*) function %qs at %L cannot be recursive"
- msgstr ""
-
--#: fortran/resolve.c:11835
-+#: fortran/resolve.c:11885
- #, gcc-internal-format
- msgid "CHARACTER(*) function %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:11844
-+#: fortran/resolve.c:11894
- #, gcc-internal-format
- msgid "Procedure pointer %qs at %L shall not be elemental"
- msgstr ""
-
--#: fortran/resolve.c:11850
-+#: fortran/resolve.c:11900
- #, gcc-internal-format
- msgid "Dummy procedure %qs at %L shall not be elemental"
- msgstr ""
-
--#: fortran/resolve.c:11906
-+#: fortran/resolve.c:11956
- #, gcc-internal-format
- msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:11912
-+#: fortran/resolve.c:11962
- #, gcc-internal-format
- msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:11918
-+#: fortran/resolve.c:11968
- #, gcc-internal-format
- msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:11926
-+#: fortran/resolve.c:11976
- #, gcc-internal-format
- msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:11932
-+#: fortran/resolve.c:11982
- #, gcc-internal-format
- msgid "Procedure pointer result %qs at %L is missing the pointer attribute"
- msgstr ""
-
--#: fortran/resolve.c:11970
-+#: fortran/resolve.c:12027
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its "
-@@ -57333,7 +57484,7 @@
- "interface in %s"
- msgstr ""
-
--#: fortran/resolve.c:11978
-+#: fortran/resolve.c:12035
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface "
-@@ -57340,7 +57491,7 @@
- "in %s"
- msgstr ""
-
--#: fortran/resolve.c:11986
-+#: fortran/resolve.c:12043
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its "
-@@ -57347,7 +57498,7 @@
- "interface in %s"
- msgstr ""
-
--#: fortran/resolve.c:11995
-+#: fortran/resolve.c:12052
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "%s between the MODULE PROCEDURE declaration in module %s and the declaration "
-@@ -57354,52 +57505,52 @@
- "at %L in SUBMODULE %s"
- msgstr ""
-
--#: fortran/resolve.c:12080
-+#: fortran/resolve.c:12137
- #, gcc-internal-format
- msgid "FINAL procedure %qs at %L is not a SUBROUTINE"
- msgstr ""
-
--#: fortran/resolve.c:12089
-+#: fortran/resolve.c:12146
- #, gcc-internal-format, gfc-internal-format
- msgid "FINAL procedure at %L must have exactly one argument"
- msgstr ""
-
--#: fortran/resolve.c:12098
-+#: fortran/resolve.c:12155
- #, gcc-internal-format
- msgid "Argument of FINAL procedure at %L must be of type %qs"
- msgstr ""
-
--#: fortran/resolve.c:12106
-+#: fortran/resolve.c:12163
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of FINAL procedure at %L must not be a POINTER"
- msgstr ""
-
--#: fortran/resolve.c:12112
-+#: fortran/resolve.c:12169
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
- msgstr ""
-
--#: fortran/resolve.c:12118
-+#: fortran/resolve.c:12175
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
- msgstr ""
-
--#: fortran/resolve.c:12126
-+#: fortran/resolve.c:12183
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
- msgstr ""
-
--#: fortran/resolve.c:12135
-+#: fortran/resolve.c:12192
- #, gcc-internal-format, gfc-internal-format
- msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
- msgstr ""
-
--#: fortran/resolve.c:12157
-+#: fortran/resolve.c:12214
- #, gcc-internal-format
- msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs"
- msgstr ""
-
--#: fortran/resolve.c:12194
-+#: fortran/resolve.c:12251
- #, gcc-internal-format
- msgid ""
- "Only array FINAL procedures declared for derived type %qs defined at %L, "
-@@ -57406,37 +57557,37 @@
- "suggest also scalar one"
- msgstr ""
-
--#: fortran/resolve.c:12234
-+#: fortran/resolve.c:12291
- #, gcc-internal-format
- msgid "%qs and %qs can't be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:12270
-+#: fortran/resolve.c:12327
- #, gcc-internal-format
- msgid "%qs and %qs for GENERIC %qs at %L are ambiguous"
- msgstr ""
-
--#: fortran/resolve.c:12329
-+#: fortran/resolve.c:12386
- #, gcc-internal-format
- msgid "Undefined specific binding %qs as target of GENERIC %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:12341
-+#: fortran/resolve.c:12398
- #, gcc-internal-format
- msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too"
- msgstr ""
-
--#: fortran/resolve.c:12369
-+#: fortran/resolve.c:12426
- #, gcc-internal-format
- msgid "GENERIC %qs at %L can't overwrite specific binding with the same name"
- msgstr ""
-
--#: fortran/resolve.c:12425
-+#: fortran/resolve.c:12482
- #, gcc-internal-format, gfc-internal-format
- msgid "Type-bound operator at %L can't be NOPASS"
- msgstr ""
-
--#: fortran/resolve.c:12607
-+#: fortran/resolve.c:12674
- #, gcc-internal-format
- msgid ""
- "%qs must be a module procedure or an external procedure with an explicit "
-@@ -57443,52 +57594,52 @@
- "interface at %L"
- msgstr ""
-
--#: fortran/resolve.c:12649
-+#: fortran/resolve.c:12716
- #, gcc-internal-format
- msgid "Procedure %qs with PASS(%s) at %L has no argument %qs"
- msgstr ""
-
--#: fortran/resolve.c:12663
-+#: fortran/resolve.c:12730
- #, gcc-internal-format
- msgid "Procedure %qs with PASS at %L must have at least one argument"
- msgstr ""
-
--#: fortran/resolve.c:12677 fortran/resolve.c:13125
-+#: fortran/resolve.c:12744 fortran/resolve.c:13192
- #, gcc-internal-format
- msgid "Non-polymorphic passed-object dummy argument of %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:12685
-+#: fortran/resolve.c:12752
- #, gcc-internal-format
- msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs"
- msgstr ""
-
--#: fortran/resolve.c:12694
-+#: fortran/resolve.c:12761
- #, gcc-internal-format
- msgid "Passed-object dummy argument of %qs at %L must be scalar"
- msgstr ""
-
--#: fortran/resolve.c:12700
-+#: fortran/resolve.c:12767
- #, gcc-internal-format
- msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE"
- msgstr ""
-
--#: fortran/resolve.c:12706
-+#: fortran/resolve.c:12773
- #, gcc-internal-format
- msgid "Passed-object dummy argument of %qs at %L must not be POINTER"
- msgstr ""
-
--#: fortran/resolve.c:12735
-+#: fortran/resolve.c:12802
- #, gcc-internal-format
- msgid "Procedure %qs at %L has the same name as a component of %qs"
- msgstr ""
-
--#: fortran/resolve.c:12745
-+#: fortran/resolve.c:12812
- #, gcc-internal-format
- msgid "Procedure %qs at %L has the same name as an inherited component of %qs"
- msgstr ""
-
--#: fortran/resolve.c:12837
-+#: fortran/resolve.c:12904
- #, gcc-internal-format
- msgid ""
- "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and "
-@@ -57495,18 +57646,18 @@
- "not overridden"
- msgstr ""
-
--#: fortran/resolve.c:12932
-+#: fortran/resolve.c:12999
- #, gcc-internal-format
- msgid "Coarray component %qs at %L must be allocatable with deferred shape"
- msgstr ""
-
--#: fortran/resolve.c:12941
-+#: fortran/resolve.c:13008
- #, gcc-internal-format
- msgid ""
- "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
- msgstr ""
-
--#: fortran/resolve.c:12951
-+#: fortran/resolve.c:13018
- #, gcc-internal-format
- msgid ""
- "Component %qs at %L with coarray component shall be a nonpointer, "
-@@ -57513,18 +57664,18 @@
- "nonallocatable scalar"
- msgstr ""
-
--#: fortran/resolve.c:12960
-+#: fortran/resolve.c:13027
- #, gcc-internal-format
- msgid ""
- "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer"
- msgstr ""
-
--#: fortran/resolve.c:13058
-+#: fortran/resolve.c:13125
- #, gcc-internal-format
- msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs"
- msgstr ""
-
--#: fortran/resolve.c:13072
-+#: fortran/resolve.c:13139
- #, gcc-internal-format
- msgid ""
- "Procedure pointer component %qs with PASS at %L must have at least one "
-@@ -57531,28 +57682,28 @@
- "argument"
- msgstr ""
-
--#: fortran/resolve.c:13088
-+#: fortran/resolve.c:13155
- #, gcc-internal-format
- msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs"
- msgstr ""
-
--#: fortran/resolve.c:13098
-+#: fortran/resolve.c:13165
- #, gcc-internal-format
- msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar"
- msgstr ""
-
--#: fortran/resolve.c:13107
-+#: fortran/resolve.c:13174
- #, gcc-internal-format
- msgid ""
- "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute"
- msgstr ""
-
--#: fortran/resolve.c:13116
-+#: fortran/resolve.c:13183
- #, gcc-internal-format
- msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE"
- msgstr ""
-
--#: fortran/resolve.c:13158
-+#: fortran/resolve.c:13225
- #, gcc-internal-format
- msgid ""
- "Component %qs of %qs at %L has the same name as an inherited type-bound "
-@@ -57559,7 +57710,7 @@
- "procedure"
- msgstr ""
-
--#: fortran/resolve.c:13171
-+#: fortran/resolve.c:13238
- #, gcc-internal-format
- msgid ""
- "Character length of component %qs needs to be a constant specification "
-@@ -57566,7 +57717,7 @@
- "expression at %L"
- msgstr ""
-
--#: fortran/resolve.c:13182
-+#: fortran/resolve.c:13249
- #, gcc-internal-format
- msgid ""
- "Character component %qs of %qs at %L with deferred length must be a POINTER "
-@@ -57573,7 +57724,7 @@
- "or ALLOCATABLE"
- msgstr ""
-
--#: fortran/resolve.c:13213
-+#: fortran/resolve.c:13280
- #, gcc-internal-format
- msgid ""
- "the component %qs is a PRIVATE type and cannot be a component of %qs, which "
-@@ -57580,12 +57731,12 @@
- "is PUBLIC at %L"
- msgstr ""
-
--#: fortran/resolve.c:13221
-+#: fortran/resolve.c:13288
- #, gcc-internal-format, gfc-internal-format
- msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s"
- msgstr ""
-
--#: fortran/resolve.c:13230
-+#: fortran/resolve.c:13297
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE "
-@@ -57592,23 +57743,23 @@
- "attribute"
- msgstr ""
-
--#: fortran/resolve.c:13248 fortran/resolve.c:13260
-+#: fortran/resolve.c:13315 fortran/resolve.c:13327
- #, gcc-internal-format
- msgid ""
- "The pointer component %qs of %qs at %L is a type that has not been declared"
- msgstr ""
-
--#: fortran/resolve.c:13272
-+#: fortran/resolve.c:13339
- #, gcc-internal-format
- msgid "Component %qs with CLASS at %L must be allocatable or pointer"
- msgstr ""
-
--#: fortran/resolve.c:13339
-+#: fortran/resolve.c:13406
- #, gcc-internal-format, gfc-internal-format
- msgid "Conflicting initializers in union at %L and %L"
- msgstr ""
-
--#: fortran/resolve.c:13383
-+#: fortran/resolve.c:13450
- #, gcc-internal-format
- msgid ""
- "As extending type %qs at %L has a coarray component, parent type %qs shall "
-@@ -57615,12 +57766,12 @@
- "also have one"
- msgstr ""
-
--#: fortran/resolve.c:13396
-+#: fortran/resolve.c:13463
- #, gcc-internal-format
- msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT"
- msgstr ""
-
--#: fortran/resolve.c:13450
-+#: fortran/resolve.c:13517
- #, gcc-internal-format
- msgid ""
- "Generic name %qs of function %qs at %L being the same name as derived type "
-@@ -57627,28 +57778,28 @@
- "at %L"
- msgstr ""
-
--#: fortran/resolve.c:13506
-+#: fortran/resolve.c:13573
- #, gcc-internal-format
- msgid "Assumed size array %qs in namelist %qs at %L is not allowed"
- msgstr ""
-
--#: fortran/resolve.c:13512
-+#: fortran/resolve.c:13579
- #, gcc-internal-format
- msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13518
-+#: fortran/resolve.c:13585
- #, gcc-internal-format
- msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13526
-+#: fortran/resolve.c:13593
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs with nonconstant character length in namelist %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13536
-+#: fortran/resolve.c:13603
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a "
-@@ -57655,7 +57806,7 @@
- "defined input/output procedure"
- msgstr ""
-
--#: fortran/resolve.c:13546
-+#: fortran/resolve.c:13613
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER "
-@@ -57664,7 +57815,7 @@
-
- #. FIXME: Once UDDTIO is implemented, the following can be
- #. removed.
--#: fortran/resolve.c:13554
-+#: fortran/resolve.c:13621
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER "
-@@ -57671,7 +57822,7 @@
- "components and thus requires a defined input/output procedure"
- msgstr ""
-
--#: fortran/resolve.c:13571
-+#: fortran/resolve.c:13638
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC "
-@@ -57678,7 +57829,7 @@
- "namelist %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13581
-+#: fortran/resolve.c:13648
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs has use-associated PRIVATE components and cannot be "
-@@ -57685,7 +57836,7 @@
- "member of namelist %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13592
-+#: fortran/resolve.c:13659
- #, gcc-internal-format
- msgid ""
- "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC "
-@@ -57692,38 +57843,38 @@
- "namelist %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13619
-+#: fortran/resolve.c:13686
- #, gcc-internal-format
- msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L"
- msgstr ""
-
--#: fortran/resolve.c:13638
-+#: fortran/resolve.c:13705
- #, gcc-internal-format
- msgid "Parameter array %qs at %L cannot be automatic or of deferred shape"
- msgstr ""
-
--#: fortran/resolve.c:13650
-+#: fortran/resolve.c:13721
- #, gcc-internal-format
- msgid ""
- "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type"
- msgstr ""
-
--#: fortran/resolve.c:13661
-+#: fortran/resolve.c:13732
- #, gcc-internal-format, gfc-internal-format
- msgid "Incompatible derived type in PARAMETER at %L"
- msgstr ""
-
--#: fortran/resolve.c:13753
-+#: fortran/resolve.c:13824
- #, gcc-internal-format, gfc-internal-format
- msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
- msgstr ""
-
--#: fortran/resolve.c:13756
-+#: fortran/resolve.c:13827
- #, gcc-internal-format, gfc-internal-format
- msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
- msgstr ""
-
--#: fortran/resolve.c:13849
-+#: fortran/resolve.c:13920
- #, gcc-internal-format
- msgid ""
- "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an "
-@@ -57730,39 +57881,39 @@
- "assumed-shape or assumed-rank array"
- msgstr ""
-
--#: fortran/resolve.c:13867
-+#: fortran/resolve.c:13938
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed size array at %L must be a dummy argument"
- msgstr ""
-
--#: fortran/resolve.c:13870
-+#: fortran/resolve.c:13941
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed shape array at %L must be a dummy argument"
- msgstr ""
-
--#: fortran/resolve.c:13878
-+#: fortran/resolve.c:13949
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed-rank array at %L must be a dummy argument"
- msgstr ""
-
--#: fortran/resolve.c:13885
-+#: fortran/resolve.c:13956
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute"
- msgstr ""
-
--#: fortran/resolve.c:13898
-+#: fortran/resolve.c:13969
- #, gcc-internal-format, gfc-internal-format
- msgid "Symbol at %L is not a DUMMY variable"
- msgstr ""
-
--#: fortran/resolve.c:13904
-+#: fortran/resolve.c:13975
- #, gcc-internal-format
- msgid ""
- "%qs at %L cannot have the VALUE attribute because it is not a dummy argument"
- msgstr ""
-
--#: fortran/resolve.c:13914
-+#: fortran/resolve.c:13985
- #, gcc-internal-format
- msgid ""
- "Character dummy variable %qs at %L with VALUE attribute must have constant "
-@@ -57769,7 +57920,7 @@
- "length"
- msgstr ""
-
--#: fortran/resolve.c:13923
-+#: fortran/resolve.c:13994
- #, gcc-internal-format
- msgid ""
- "C interoperable character dummy variable %qs at %L with VALUE attribute must "
-@@ -57776,17 +57927,17 @@
- "have length one"
- msgstr ""
-
--#: fortran/resolve.c:13936 fortran/resolve.c:14103
-+#: fortran/resolve.c:14007 fortran/resolve.c:14174
- #, gcc-internal-format
- msgid "The derived type %qs at %L is of type %qs, which has not been defined"
- msgstr ""
-
--#: fortran/resolve.c:13950
-+#: fortran/resolve.c:14021
- #, gcc-internal-format, gfc-internal-format
- msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument"
- msgstr ""
-
--#: fortran/resolve.c:13959
-+#: fortran/resolve.c:14030
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of "
-@@ -57793,7 +57944,7 @@
- "an numeric intrinsic type"
- msgstr ""
-
--#: fortran/resolve.c:13968
-+#: fortran/resolve.c:14039
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, "
-@@ -57800,7 +57951,7 @@
- "CODIMENSION, POINTER or VALUE attribute"
- msgstr ""
-
--#: fortran/resolve.c:13976
-+#: fortran/resolve.c:14047
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) "
-@@ -57807,7 +57958,7 @@
- "attribute"
- msgstr ""
-
--#: fortran/resolve.c:13983
-+#: fortran/resolve.c:14054
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an "
-@@ -57814,12 +57965,12 @@
- "assumed-size array"
- msgstr ""
-
--#: fortran/resolve.c:14003
-+#: fortran/resolve.c:14074
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
- msgstr ""
-
--#: fortran/resolve.c:14010
-+#: fortran/resolve.c:14081
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, "
-@@ -57826,17 +57977,17 @@
- "POINTER or VALUE attribute"
- msgstr ""
-
--#: fortran/resolve.c:14017
-+#: fortran/resolve.c:14088
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
- msgstr ""
-
--#: fortran/resolve.c:14024
-+#: fortran/resolve.c:14095
- #, gcc-internal-format, gfc-internal-format
- msgid "Assumed-type variable %s at %L shall not be an explicit-shape array"
- msgstr ""
-
--#: fortran/resolve.c:14049
-+#: fortran/resolve.c:14120
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block "
-@@ -57843,12 +57994,12 @@
- "nor declared at the module level scope"
- msgstr ""
-
--#: fortran/resolve.c:14129
-+#: fortran/resolve.c:14200
- #, gcc-internal-format
- msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs"
- msgstr ""
-
--#: fortran/resolve.c:14144
-+#: fortran/resolve.c:14215
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE "
-@@ -57855,7 +58006,7 @@
- "must be a coarray"
- msgstr ""
-
--#: fortran/resolve.c:14157
-+#: fortran/resolve.c:14228
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Variable %s at %L of type EVENT_TYPE or with subcomponent of type LOCK_TYPE "
-@@ -57862,7 +58013,7 @@
- "must be a coarray"
- msgstr ""
-
--#: fortran/resolve.c:14175
-+#: fortran/resolve.c:14246
- #, gcc-internal-format
- msgid ""
- "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have "
-@@ -57869,29 +58020,29 @@
- "a default initializer"
- msgstr ""
-
--#: fortran/resolve.c:14187
-+#: fortran/resolve.c:14258
- #, gcc-internal-format
- msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
- msgstr ""
-
--#: fortran/resolve.c:14196
-+#: fortran/resolve.c:14267
- #, gcc-internal-format
- msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
- msgstr ""
-
--#: fortran/resolve.c:14208
-+#: fortran/resolve.c:14279
- #, gcc-internal-format
- msgid ""
- "Function result %qs at %L shall not be a coarray or have a coarray component"
- msgstr ""
-
--#: fortran/resolve.c:14217
-+#: fortran/resolve.c:14288
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
- msgstr ""
-
--#: fortran/resolve.c:14229
-+#: fortran/resolve.c:14300
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L with coarray component shall be a nonpointer, "
-@@ -57898,7 +58049,7 @@
- "nonallocatable scalar, which is not a coarray"
- msgstr ""
-
--#: fortran/resolve.c:14244
-+#: fortran/resolve.c:14315
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy "
-@@ -57905,18 +58056,18 @@
- "argument"
- msgstr ""
-
--#: fortran/resolve.c:14252
-+#: fortran/resolve.c:14323
- #, gcc-internal-format
- msgid ""
- "Coarray variable %qs at %L shall not have codimensions with deferred shape"
- msgstr ""
-
--#: fortran/resolve.c:14259
-+#: fortran/resolve.c:14330
- #, gcc-internal-format
- msgid "Allocatable coarray variable %qs at %L must have deferred shape"
- msgstr ""
-
--#: fortran/resolve.c:14271
-+#: fortran/resolve.c:14342
- #, gcc-internal-format
- msgid ""
- "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray "
-@@ -57923,12 +58074,12 @@
- "or have coarray components"
- msgstr ""
-
--#: fortran/resolve.c:14280
-+#: fortran/resolve.c:14351
- #, gcc-internal-format
- msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs"
- msgstr ""
-
--#: fortran/resolve.c:14296
-+#: fortran/resolve.c:14367
- #, gcc-internal-format
- msgid ""
- "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure "
-@@ -57935,7 +58086,7 @@
- "%qs"
- msgstr ""
-
--#: fortran/resolve.c:14302
-+#: fortran/resolve.c:14373
- #, gcc-internal-format
- msgid ""
- "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure "
-@@ -57942,90 +58093,90 @@
- "%qs"
- msgstr ""
-
--#: fortran/resolve.c:14327
-+#: fortran/resolve.c:14398
- #, gcc-internal-format, gfc-internal-format
- msgid "Namelist '%s' can not be an argument to subroutine or function at %L"
- msgstr ""
-
--#: fortran/resolve.c:14396
-+#: fortran/resolve.c:14467
- #, gcc-internal-format, gfc-internal-format
- msgid "Threadprivate at %L isn't SAVEd"
- msgstr ""
-
--#: fortran/resolve.c:14407
-+#: fortran/resolve.c:14478
- #, gcc-internal-format
- msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd"
- msgstr ""
-
--#: fortran/resolve.c:14499
-+#: fortran/resolve.c:14570
- #, gcc-internal-format
- msgid "check_data_variable(): Bad expression"
- msgstr ""
-
--#: fortran/resolve.c:14505
-+#: fortran/resolve.c:14576
- #, gcc-internal-format
- msgid "BLOCK DATA element %qs at %L must be in COMMON"
- msgstr ""
-
--#: fortran/resolve.c:14511
-+#: fortran/resolve.c:14582
- #, gcc-internal-format
- msgid "DATA array %qs at %L must be specified in a previous declaration"
- msgstr ""
-
--#: fortran/resolve.c:14520
-+#: fortran/resolve.c:14591
- #, gcc-internal-format
- msgid "DATA element %qs at %L cannot have a coindex"
- msgstr ""
-
--#: fortran/resolve.c:14534
-+#: fortran/resolve.c:14605
- #, gcc-internal-format
- msgid "DATA element %qs at %L is a pointer and so must be a full array"
- msgstr ""
-
--#: fortran/resolve.c:14580
-+#: fortran/resolve.c:14651
- #, gcc-internal-format, gfc-internal-format
- msgid "Nonconstant array section at %L in DATA statement"
- msgstr ""
-
--#: fortran/resolve.c:14593
-+#: fortran/resolve.c:14664
- #, gcc-internal-format, gfc-internal-format
- msgid "DATA statement at %L has more variables than values"
- msgstr ""
-
--#: fortran/resolve.c:14692
-+#: fortran/resolve.c:14763
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "start of implied-do loop at %L could not be simplified to a constant value"
- msgstr ""
-
--#: fortran/resolve.c:14700
-+#: fortran/resolve.c:14771
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "end of implied-do loop at %L could not be simplified to a constant value"
- msgstr ""
-
--#: fortran/resolve.c:14708
-+#: fortran/resolve.c:14779
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "step of implied-do loop at %L could not be simplified to a constant value"
- msgstr ""
-
--#: fortran/resolve.c:14833
-+#: fortran/resolve.c:14904
- #, gcc-internal-format, gfc-internal-format
- msgid "DATA statement at %L has more values than variables"
- msgstr ""
-
--#: fortran/resolve.c:14998
-+#: fortran/resolve.c:15069
- #, gcc-internal-format, gfc-internal-format
- msgid "Label %d at %L defined but not used"
- msgstr ""
-
--#: fortran/resolve.c:15003
-+#: fortran/resolve.c:15074
- #, gcc-internal-format, gfc-internal-format
- msgid "Label %d at %L defined but cannot be used"
- msgstr ""
-
--#: fortran/resolve.c:15087
-+#: fortran/resolve.c:15158
- #, gcc-internal-format
- msgid ""
- "Derived type variable %qs at %L must have SEQUENCE attribute to be an "
-@@ -58032,7 +58183,7 @@
- "EQUIVALENCE object"
- msgstr ""
-
--#: fortran/resolve.c:15096
-+#: fortran/resolve.c:15167
- #, gcc-internal-format
- msgid ""
- "Derived type variable %qs at %L cannot have ALLOCATABLE components to be an "
-@@ -58039,7 +58190,7 @@
- "EQUIVALENCE object"
- msgstr ""
-
--#: fortran/resolve.c:15104
-+#: fortran/resolve.c:15175
- #, gcc-internal-format
- msgid ""
- "Derived type variable %qs at %L with default initialization cannot be in "
-@@ -58046,7 +58197,7 @@
- "EQUIVALENCE with a variable in COMMON"
- msgstr ""
-
--#: fortran/resolve.c:15120
-+#: fortran/resolve.c:15191
- #, gcc-internal-format
- msgid ""
- "Derived type variable %qs at %L with pointer component(s) cannot be an "
-@@ -58053,12 +58204,12 @@
- "EQUIVALENCE object"
- msgstr ""
-
--#: fortran/resolve.c:15223
-+#: fortran/resolve.c:15294
- #, gcc-internal-format, gfc-internal-format
- msgid "Syntax error in EQUIVALENCE statement at %L"
- msgstr ""
-
--#: fortran/resolve.c:15238
-+#: fortran/resolve.c:15309
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Either all or none of the objects in the EQUIVALENCE set at %L shall have "
-@@ -58065,7 +58216,7 @@
- "the PROTECTED attribute"
- msgstr ""
-
--#: fortran/resolve.c:15250
-+#: fortran/resolve.c:15321
- #, gcc-internal-format
- msgid ""
- "Common block member %qs at %L cannot be an EQUIVALENCE object in the pure "
-@@ -58072,68 +58223,68 @@
- "procedure %qs"
- msgstr ""
-
--#: fortran/resolve.c:15259
-+#: fortran/resolve.c:15330
- #, gcc-internal-format
- msgid "Named constant %qs at %L cannot be an EQUIVALENCE object"
- msgstr ""
-
--#: fortran/resolve.c:15332
-+#: fortran/resolve.c:15403
- #, gcc-internal-format
- msgid ""
- "Array %qs at %L with non-constant bounds cannot be an EQUIVALENCE object"
- msgstr ""
-
--#: fortran/resolve.c:15343
-+#: fortran/resolve.c:15414
- #, gcc-internal-format
- msgid "Structure component %qs at %L cannot be an EQUIVALENCE object"
- msgstr ""
-
--#: fortran/resolve.c:15354
-+#: fortran/resolve.c:15425
- #, gcc-internal-format, gfc-internal-format
- msgid "Substring at %L has length zero"
- msgstr ""
-
--#: fortran/resolve.c:15397
-+#: fortran/resolve.c:15468
- #, gcc-internal-format
- msgid "PUBLIC function %qs at %L of PRIVATE type %qs"
- msgstr ""
-
--#: fortran/resolve.c:15410
-+#: fortran/resolve.c:15481
- #, gcc-internal-format
- msgid "ENTRY %qs at %L has no IMPLICIT type"
- msgstr ""
-
--#: fortran/resolve.c:15427
-+#: fortran/resolve.c:15498
- #, gcc-internal-format
- msgid "User operator procedure %qs at %L must be a FUNCTION"
- msgstr ""
-
--#: fortran/resolve.c:15437
-+#: fortran/resolve.c:15508
- #, gcc-internal-format
- msgid "User operator procedure %qs at %L cannot be assumed character length"
- msgstr ""
-
--#: fortran/resolve.c:15445
-+#: fortran/resolve.c:15516
- #, gcc-internal-format
- msgid "User operator procedure %qs at %L must have at least one argument"
- msgstr ""
-
--#: fortran/resolve.c:15459
-+#: fortran/resolve.c:15530
- #, gcc-internal-format, gfc-internal-format
- msgid "First argument of operator interface at %L cannot be optional"
- msgstr ""
-
--#: fortran/resolve.c:15477
-+#: fortran/resolve.c:15548
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument of operator interface at %L cannot be optional"
- msgstr ""
-
--#: fortran/resolve.c:15484
-+#: fortran/resolve.c:15555
- #, gcc-internal-format, gfc-internal-format
- msgid "Operator interface at %L must have, at most, two arguments"
- msgstr ""
-
--#: fortran/resolve.c:15562
-+#: fortran/resolve.c:15633
- #, gcc-internal-format
- msgid "Contained procedure %qs at %L of a PURE procedure must also be PURE"
- msgstr ""
-@@ -58247,22 +58398,22 @@
- msgid "Invalid KIND parameter of %s at %L"
- msgstr ""
-
--#: fortran/simplify.c:691
-+#: fortran/simplify.c:693
- #, gcc-internal-format
- msgid "gfc_simplify_abs(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:712
-+#: fortran/simplify.c:714
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of %s function at %L is negative"
- msgstr ""
-
--#: fortran/simplify.c:719
-+#: fortran/simplify.c:721
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of %s function at %L outside of range [0,127]"
- msgstr ""
-
--#: fortran/simplify.c:737
-+#: fortran/simplify.c:739
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Argument of %s function at %L is too large for the collating sequence of "
-@@ -58269,57 +58420,57 @@
- "kind %d"
- msgstr ""
-
--#: fortran/simplify.c:774
-+#: fortran/simplify.c:776
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of ACOS at %L must be between -1 and 1"
- msgstr ""
-
--#: fortran/simplify.c:788
-+#: fortran/simplify.c:790
- #, gcc-internal-format
- msgid "in gfc_simplify_acos(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:807
-+#: fortran/simplify.c:809
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of ACOSH at %L must not be less than 1"
- msgstr ""
-
--#: fortran/simplify.c:822
-+#: fortran/simplify.c:824
- #, gcc-internal-format
- msgid "in gfc_simplify_acosh(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:1051
-+#: fortran/simplify.c:1053
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of ASIN at %L must be between -1 and 1"
- msgstr ""
-
--#: fortran/simplify.c:1065
-+#: fortran/simplify.c:1067
- #, gcc-internal-format
- msgid "in gfc_simplify_asin(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:1093
-+#: fortran/simplify.c:1095
- #, gcc-internal-format
- msgid "in gfc_simplify_asinh(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:1121
-+#: fortran/simplify.c:1123
- #, gcc-internal-format
- msgid "in gfc_simplify_atan(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:1142
-+#: fortran/simplify.c:1144
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of ATANH at %L must be inside the range -1 to 1"
- msgstr ""
-
--#: fortran/simplify.c:1156
-+#: fortran/simplify.c:1158
- #, gcc-internal-format
- msgid "in gfc_simplify_atanh(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:1173
-+#: fortran/simplify.c:1175
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "If first argument of ATAN2 %L is zero, then the second argument must not be "
-@@ -58326,78 +58477,78 @@
- "zero"
- msgstr ""
-
--#: fortran/simplify.c:1265
-+#: fortran/simplify.c:1267
- #, gcc-internal-format, gfc-internal-format
- msgid "Result of BESSEL_YN is -INF at %L"
- msgstr ""
-
--#: fortran/simplify.c:1634
-+#: fortran/simplify.c:1636
- #, gcc-internal-format
- msgid "gfc_simplify_dcmplx(): Bad type (x)"
- msgstr ""
-
--#: fortran/simplify.c:1653
-+#: fortran/simplify.c:1655
- #, gcc-internal-format
- msgid "gfc_simplify_dcmplx(): Bad type (y)"
- msgstr ""
-
--#: fortran/simplify.c:1730
-+#: fortran/simplify.c:1732
- #, gcc-internal-format
- msgid "in gfc_simplify_cos(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:1963
-+#: fortran/simplify.c:1965
- #, gcc-internal-format
- msgid "gfc_simplify_dim(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:2271
-+#: fortran/simplify.c:2273
- #, gcc-internal-format
- msgid "in gfc_simplify_exp(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:2437
-+#: fortran/simplify.c:2440
- #, gcc-internal-format
- msgid "gfc_simplify_floor(): Bad kind"
- msgstr ""
-
--#: fortran/simplify.c:2587
-+#: fortran/simplify.c:2590
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of IACHAR at %L must be of length one"
- msgstr ""
-
--#: fortran/simplify.c:2595
-+#: fortran/simplify.c:2598
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of IACHAR function at %L outside of range 0..127"
- msgstr ""
-
--#: fortran/simplify.c:2710
-+#: fortran/simplify.c:2713
- #, gcc-internal-format, gfc-internal-format
- msgid "Sum of second and third arguments of IBITS exceeds bit size at %L"
- msgstr ""
-
--#: fortran/simplify.c:2734
-+#: fortran/simplify.c:2737
- #, gcc-internal-format
- msgid "IBITS: Bad bit"
- msgstr ""
-
--#: fortran/simplify.c:2785
-+#: fortran/simplify.c:2788
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of ICHAR at %L must be of length one"
- msgstr ""
-
- #. Left shift, as in SHIFTL.
--#: fortran/simplify.c:3150 fortran/simplify.c:3158
-+#: fortran/simplify.c:3153 fortran/simplify.c:3161
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument of %s is negative at %L"
- msgstr ""
-
--#: fortran/simplify.c:3170
-+#: fortran/simplify.c:3173
- #, gcc-internal-format, gfc-internal-format
- msgid "Magnitude of second argument of %s exceeds bit size at %L"
- msgstr ""
-
--#: fortran/simplify.c:3296
-+#: fortran/simplify.c:3299
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Magnitude of second argument of ISHFTC exceeds BIT_SIZE of first argument at "
-@@ -58404,49 +58555,49 @@
- "%L"
- msgstr ""
-
--#: fortran/simplify.c:3616 fortran/simplify.c:3748
-+#: fortran/simplify.c:3619 fortran/simplify.c:3751
- #, gcc-internal-format, gfc-internal-format
- msgid "DIM argument at %L is out of bounds"
- msgstr ""
-
--#: fortran/simplify.c:3931
-+#: fortran/simplify.c:3934
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of LOG at %L cannot be less than or equal to zero"
- msgstr ""
-
--#: fortran/simplify.c:3944
-+#: fortran/simplify.c:3947
- #, gcc-internal-format, gfc-internal-format
- msgid "Complex argument of LOG at %L cannot be zero"
- msgstr ""
-
--#: fortran/simplify.c:3955
-+#: fortran/simplify.c:3958
- #, gcc-internal-format
- msgid "gfc_simplify_log: bad type"
- msgstr ""
-
--#: fortran/simplify.c:3972
-+#: fortran/simplify.c:3975
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of LOG10 at %L cannot be less than or equal to zero"
- msgstr ""
-
--#: fortran/simplify.c:4275
-+#: fortran/simplify.c:4278
- #, gcc-internal-format
- msgid "simplify_min_max(): Bad type in arglist"
- msgstr ""
-
- #. Result is processor-dependent.
--#: fortran/simplify.c:4451
-+#: fortran/simplify.c:4454
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument MOD at %L is zero"
- msgstr ""
-
- #. Result is processor-dependent.
--#: fortran/simplify.c:4462
-+#: fortran/simplify.c:4465
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument of MOD at %L is zero"
- msgstr ""
-
--#: fortran/simplify.c:4473
-+#: fortran/simplify.c:4476
- #, gcc-internal-format
- msgid "gfc_simplify_mod(): Bad arguments"
- msgstr ""
-@@ -58454,57 +58605,57 @@
- #. Result is processor-dependent. This processor just opts
- #. to not handle it at all.
- #. Result is processor-dependent.
--#: fortran/simplify.c:4499 fortran/simplify.c:4511
-+#: fortran/simplify.c:4502 fortran/simplify.c:4514
- #, gcc-internal-format, gfc-internal-format
- msgid "Second argument of MODULO at %L is zero"
- msgstr ""
-
--#: fortran/simplify.c:4531
-+#: fortran/simplify.c:4534
- #, gcc-internal-format
- msgid "gfc_simplify_modulo(): Bad arguments"
- msgstr ""
-
--#: fortran/simplify.c:4579
-+#: fortran/simplify.c:4582
- #, gcc-internal-format, gfc-internal-format
- msgid "Result of NEAREST is NaN at %L"
- msgstr ""
-
--#: fortran/simplify.c:5055
-+#: fortran/simplify.c:5058
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument NCOPIES of REPEAT intrinsic is negative at %L"
- msgstr ""
-
--#: fortran/simplify.c:5110
-+#: fortran/simplify.c:5113
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument NCOPIES of REPEAT intrinsic is too large at %L"
- msgstr ""
-
--#: fortran/simplify.c:5263
-+#: fortran/simplify.c:5266
- #, gcc-internal-format, gfc-internal-format
- msgid "Reshaped array too large at %C"
- msgstr ""
-
--#: fortran/simplify.c:5377
-+#: fortran/simplify.c:5380
- #, gcc-internal-format, gfc-internal-format
- msgid "Result of SCALE overflows its kind at %L"
- msgstr ""
-
--#: fortran/simplify.c:5956
-+#: fortran/simplify.c:5959
- #, gcc-internal-format
- msgid "Bad type in gfc_simplify_sign"
- msgstr ""
-
--#: fortran/simplify.c:5985
-+#: fortran/simplify.c:5988
- #, gcc-internal-format
- msgid "in gfc_simplify_sin(): Bad type"
- msgstr ""
-
--#: fortran/simplify.c:6112 fortran/simplify.c:6357
-+#: fortran/simplify.c:6115 fortran/simplify.c:6360
- #, gcc-internal-format
- msgid "Failure getting length of a constant array."
- msgstr ""
-
--#: fortran/simplify.c:6122
-+#: fortran/simplify.c:6125
- #, gcc-internal-format
- msgid ""
- "The number of elements (%d) in the array constructor at %L requires an "
-@@ -58512,22 +58663,22 @@
- "option."
- msgstr ""
-
--#: fortran/simplify.c:6188
-+#: fortran/simplify.c:6191
- #, gcc-internal-format, gfc-internal-format
- msgid "Simplification of SPREAD at %L not yet implemented"
- msgstr ""
-
--#: fortran/simplify.c:6213
-+#: fortran/simplify.c:6216
- #, gcc-internal-format, gfc-internal-format
- msgid "Argument of SQRT at %L has a negative value"
- msgstr ""
-
--#: fortran/simplify.c:6229
-+#: fortran/simplify.c:6232
- #, gcc-internal-format, gfc-internal-format
- msgid "invalid argument of SQRT at %L"
- msgstr ""
-
--#: fortran/simplify.c:6524
-+#: fortran/simplify.c:6527
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY "
-@@ -58534,7 +58685,7 @@
- "lower bound is %ld)"
- msgstr ""
-
--#: fortran/simplify.c:6547
-+#: fortran/simplify.c:6550
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY "
-@@ -58541,12 +58692,12 @@
- "upper bound is %ld)"
- msgstr ""
-
--#: fortran/simplify.c:6882
-+#: fortran/simplify.c:6885
- #, gcc-internal-format
- msgid "gfc_convert_constant(): Unexpected type"
- msgstr ""
-
--#: fortran/simplify.c:6968
-+#: fortran/simplify.c:6971
- #, gcc-internal-format
- msgid ""
- "Character %qs in string at %L cannot be converted into character kind %d"
-@@ -58989,13 +59140,18 @@
- msgid "Invalid expression in gfc_target_interpret_expr."
- msgstr ""
-
--#: fortran/target-memory.c:681
-+#: fortran/target-memory.c:683
- #, gcc-internal-format, gfc-internal-format
- msgid "Overlapping unequal initializers in EQUIVALENCE at %L"
- msgstr ""
-
--#: fortran/target-memory.c:769
-+#: fortran/target-memory.c:686
- #, gcc-internal-format, gfc-internal-format
-+msgid "Overlapping unequal initializers in EQUIVALENCE at %C"
-+msgstr ""
++ /* Skip the leading '%' as that cannot be used in a symbol name. */
++ if (USE_HIDDEN_LINKONCE)
++ sprintf (name, "__sparc_get_pc_thunk.%s",
++ reg_names[REGNO (got_register_rtx)] + 1);
++ else
++ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
++ REGNO (got_register_rtx));
+
-+#: fortran/target-memory.c:774
-+#, gcc-internal-format, gfc-internal-format
- msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
- msgstr ""
-
-@@ -59025,33 +59181,33 @@
- "%lu bytes)"
- msgstr ""
-
--#: fortran/trans-common.c:773
-+#: fortran/trans-common.c:778
- #, gcc-internal-format
- msgid "get_mpz(): Not an integer constant"
- msgstr ""
-
--#: fortran/trans-common.c:801
-+#: fortran/trans-common.c:806
- #, gcc-internal-format
- msgid "element_number(): Bad dimension type"
- msgstr ""
-
--#: fortran/trans-common.c:863
-+#: fortran/trans-common.c:876
- #, gcc-internal-format, gfc-internal-format
- msgid "Bad array reference at %L"
- msgstr ""
-
--#: fortran/trans-common.c:871
-+#: fortran/trans-common.c:884
- #, gcc-internal-format, gfc-internal-format
- msgid "Illegal reference type at %L as EQUIVALENCE object"
- msgstr ""
-
--#: fortran/trans-common.c:911
-+#: fortran/trans-common.c:924
- #, gcc-internal-format
- msgid "Inconsistent equivalence rules involving %qs at %L and %qs at %L"
- msgstr ""
-
- #. Aligning this field would misalign a previous field.
--#: fortran/trans-common.c:1044
-+#: fortran/trans-common.c:1057
- #, gcc-internal-format
- msgid ""
- "The equivalence set for variable %qs declared at %L violates alignment "
-@@ -59058,18 +59214,18 @@
- "requirements"
- msgstr ""
-
--#: fortran/trans-common.c:1109
-+#: fortran/trans-common.c:1122
- #, gcc-internal-format
- msgid "Equivalence for %qs does not match ordering of COMMON %qs at %L"
- msgstr ""
-
--#: fortran/trans-common.c:1124
-+#: fortran/trans-common.c:1137
- #, gcc-internal-format
- msgid ""
- "The equivalence set for %qs cause an invalid extension to COMMON %qs at %L"
- msgstr ""
-
--#: fortran/trans-common.c:1140
-+#: fortran/trans-common.c:1153
- #, gcc-internal-format
- msgid ""
- "Padding of %d bytes required before %qs in COMMON %qs at %L; reorder "
-@@ -59076,7 +59232,7 @@
- "elements or use -fno-align-commons"
- msgstr ""
-
--#: fortran/trans-common.c:1146
-+#: fortran/trans-common.c:1159
- #, gcc-internal-format
- msgid ""
- "Padding of %d bytes required before %qs in COMMON at %L; reorder elements or "
-@@ -59083,12 +59239,12 @@
- "use -fno-align-commons"
- msgstr ""
-
--#: fortran/trans-common.c:1167
-+#: fortran/trans-common.c:1180
- #, gcc-internal-format
- msgid "COMMON %qs at %L does not exist"
- msgstr ""
-
--#: fortran/trans-common.c:1176
-+#: fortran/trans-common.c:1189
- #, gcc-internal-format
- msgid ""
- "COMMON %qs at %L requires %d bytes of padding; reorder elements or use %<-"
-@@ -59095,7 +59251,7 @@
- "fno-align-commons%>"
- msgstr ""
-
--#: fortran/trans-common.c:1181
-+#: fortran/trans-common.c:1194
- #, gcc-internal-format
- msgid ""
- "COMMON at %L requires %d bytes of padding; reorder elements or use %<-fno-"
-@@ -59122,7 +59278,7 @@
- msgid "intrinsic variable which isn't a procedure"
- msgstr ""
-
--#: fortran/trans-decl.c:4044 fortran/trans-decl.c:6244
-+#: fortran/trans-decl.c:4044 fortran/trans-decl.c:6254
- #, gcc-internal-format
- msgid "Return value of function %qs at %L not set"
- msgstr ""
-@@ -59154,7 +59310,7 @@
- "set and does not have a default initializer"
- msgstr ""
-
--#: fortran/trans-decl.c:5259 fortran/trans-decl.c:5390
-+#: fortran/trans-decl.c:5259 fortran/trans-decl.c:5400
- #, gcc-internal-format
- msgid "Unused dummy argument %qs at %L"
- msgstr ""
-@@ -59164,27 +59320,27 @@
- msgid "Unused module variable %qs which has been explicitly imported at %L"
- msgstr ""
-
--#: fortran/trans-decl.c:5283
-+#: fortran/trans-decl.c:5293
- #, gcc-internal-format
- msgid "Unused variable %qs declared at %L"
- msgstr ""
-
--#: fortran/trans-decl.c:5332
-+#: fortran/trans-decl.c:5342
- #, gcc-internal-format
- msgid "Unused parameter %qs declared at %L"
- msgstr ""
-
--#: fortran/trans-decl.c:5336
-+#: fortran/trans-decl.c:5346
- #, gcc-internal-format
- msgid "Unused parameter %qs which has been explicitly imported at %L"
- msgstr ""
-
--#: fortran/trans-decl.c:5362
-+#: fortran/trans-decl.c:5372
- #, gcc-internal-format
- msgid "Return value %qs of function %qs declared at %L not set"
- msgstr ""
-
--#: fortran/trans-decl.c:5971
-+#: fortran/trans-decl.c:5981
- #, gcc-internal-format, gfc-internal-format
- msgid "Sorry, $!ACC DECLARE at %L is not allowed in BLOCK construct"
- msgstr ""
-@@ -59194,12 +59350,12 @@
- msgid "Can't compute the length of the char array at %L."
- msgstr ""
-
--#: fortran/trans-expr.c:1526
-+#: fortran/trans-expr.c:1552
- #, gcc-internal-format, gfc-internal-format
- msgid "Code for reallocating the allocatable variable at %L will be added"
- msgstr ""
-
--#: fortran/trans-expr.c:1833
-+#: fortran/trans-expr.c:1859
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Sorry, coindexed access to a pointer or allocatable component of the "
-@@ -59206,7 +59362,7 @@
- "coindexed coarray at %L is not yet supported"
- msgstr ""
-
--#: fortran/trans-expr.c:1847
-+#: fortran/trans-expr.c:1873
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Sorry, coindexed coarray at %L with allocatable component is not yet "
-@@ -59213,7 +59369,7 @@
- "supported"
- msgstr ""
-
--#: fortran/trans-expr.c:1870
-+#: fortran/trans-expr.c:1896
- #, gcc-internal-format, gfc-internal-format
- msgid ""
- "Sorry, coindexed access at %L to a scalar component with an array partref is "
-@@ -59220,12 +59376,12 @@
- "not yet supported"
- msgstr ""
-
--#: fortran/trans-expr.c:3309
-+#: fortran/trans-expr.c:3335
- #, gcc-internal-format
- msgid "Unknown intrinsic op"
- msgstr ""
-
--#: fortran/trans-expr.c:4597
-+#: fortran/trans-expr.c:4623
- #, gcc-internal-format, gfc-internal-format
- msgid "Unknown argument list function at %L"
- msgstr ""
-@@ -59241,12 +59397,12 @@
- msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
- msgstr ""
-
--#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:919
-+#: fortran/trans-intrinsic.c:9379 fortran/trans-stmt.c:919
- #, gcc-internal-format, gfc-internal-format
- msgid "Sorry, the event component of derived type at %L is not yet supported"
- msgstr ""
-
--#: fortran/trans-intrinsic.c:9373
-+#: fortran/trans-intrinsic.c:9386
- #, gcc-internal-format, gfc-internal-format
- msgid "The event variable at %L shall not be coindexed "
- msgstr ""
-@@ -59261,7 +59417,7 @@
- msgid "Bad IO basetype (%d)"
- msgstr ""
-
--#: fortran/trans-openmp.c:4348
-+#: fortran/trans-openmp.c:4361
- #, gcc-internal-format
- msgid "gfc_trans_omp_workshare(): Bad statement code"
- msgstr ""
-@@ -59381,7 +59537,7 @@
- msgid "abstract method in non-abstract class"
- msgstr ""
-
--#: java/class.c:2682
-+#: java/class.c:2683
- #, gcc-internal-format
- msgid "non-static method %q+D overrides static method"
- msgstr ""
-@@ -59788,112 +59944,112 @@
- msgid "previously declared here"
- msgstr ""
-
--#: lto/lto.c:1817
-+#: lto/lto.c:1819
- #, gcc-internal-format
- msgid "bytecode stream: garbage at the end of symbols section"
- msgstr ""
-
--#: lto/lto.c:1844
-+#: lto/lto.c:1846
- #, gcc-internal-format
- msgid "could not parse hex number"
- msgstr ""
-
--#: lto/lto.c:1876
-+#: lto/lto.c:1878
- #, gcc-internal-format, gfc-internal-format
- msgid "unexpected file name %s in linker resolution file. Expected %s"
- msgstr ""
-
--#: lto/lto.c:1885
-+#: lto/lto.c:1887
- #, gcc-internal-format
- msgid "could not parse file offset"
- msgstr ""
-
--#: lto/lto.c:1888
-+#: lto/lto.c:1890
- #, gcc-internal-format
- msgid "unexpected offset"
- msgstr ""
-
--#: lto/lto.c:1910
-+#: lto/lto.c:1912
- #, gcc-internal-format
- msgid "invalid line in the resolution file"
- msgstr ""
-
--#: lto/lto.c:1921
-+#: lto/lto.c:1923
- #, gcc-internal-format
- msgid "invalid resolution in the resolution file"
- msgstr ""
-
--#: lto/lto.c:1927
-+#: lto/lto.c:1929
- #, gcc-internal-format
- msgid "resolution sub id %wx not in object file"
- msgstr ""
-
--#: lto/lto.c:2039
-+#: lto/lto.c:2041
- #, gcc-internal-format, gfc-internal-format
- msgid "cannot read LTO decls from %s"
- msgstr ""
-
--#: lto/lto.c:2145
-+#: lto/lto.c:2147
- #, gcc-internal-format, gfc-internal-format
- msgid "Cannot open %s"
- msgstr ""
-
--#: lto/lto.c:2166
-+#: lto/lto.c:2168
- #, gcc-internal-format, gfc-internal-format
- msgid "Cannot map %s"
- msgstr ""
-
--#: lto/lto.c:2177
-+#: lto/lto.c:2179
- #, gcc-internal-format, gfc-internal-format
- msgid "Cannot read %s"
- msgstr ""
-
--#: lto/lto.c:2291
-+#: lto/lto.c:2293
- #, gcc-internal-format
- msgid "lto_obj_file_open() failed"
- msgstr ""
-
--#: lto/lto.c:2314
-+#: lto/lto.c:2316
- #, gcc-internal-format
- msgid "waitpid failed"
- msgstr ""
-
--#: lto/lto.c:2317
-+#: lto/lto.c:2319
- #, gcc-internal-format
- msgid "streaming subprocess failed"
- msgstr ""
-
--#: lto/lto.c:2320
-+#: lto/lto.c:2322
- #, gcc-internal-format
- msgid "streaming subprocess was killed by signal"
- msgstr ""
-
--#: lto/lto.c:2396
-+#: lto/lto.c:2398
- #, gcc-internal-format
- msgid "no LTRANS output list filename provided"
- msgstr ""
-
--#: lto/lto.c:2484
-+#: lto/lto.c:2486
- #, gcc-internal-format
- msgid "opening LTRANS output list %s: %m"
- msgstr ""
-
--#: lto/lto.c:2490
-+#: lto/lto.c:2492
- #, gcc-internal-format
- msgid "writing to LTRANS output list %s: %m"
- msgstr ""
-
--#: lto/lto.c:2501
-+#: lto/lto.c:2503
- #, gcc-internal-format
- msgid "closing LTRANS output list %s: %m"
- msgstr ""
-
--#: lto/lto.c:2753
-+#: lto/lto.c:2755
- #, gcc-internal-format
- msgid "could not open symbol resolution file: %m"
- msgstr ""
+ got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
+ }
--#: lto/lto.c:2894
-+#: lto/lto.c:2896
- #, gcc-internal-format
- msgid "errors during merging of translation units"
- msgstr ""
-Index: gcc/varasm.c
-===================================================================
---- a/src/gcc/varasm.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/varasm.c (.../branches/gcc-6-branch)
-@@ -3276,6 +3276,10 @@
- set_mem_attributes (rtl, exp, 1);
- set_mem_alias_set (rtl, 0);
-
-+ /* Putting EXP into the literal pool might have imposed a different
-+ alignment which should be visible in the RTX as well. */
-+ set_mem_align (rtl, DECL_ALIGN (decl));
-+
- /* We cannot share RTX'es in pool entries.
- Mark this piece of RTL as required for unsharing. */
- RTX_FLAG (rtl, used) = 1;
-Index: gcc/tree-ssa-loop-prefetch.c
-===================================================================
---- a/src/gcc/tree-ssa-loop-prefetch.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-ssa-loop-prefetch.c (.../branches/gcc-6-branch)
-@@ -46,6 +46,7 @@
- #include "langhooks.h"
- #include "tree-inline.h"
- #include "tree-data-ref.h"
-+#include "diagnostic-core.h"
-
-
- /* FIXME: Needed for optabs, but this should all be moved to a TBD interface
-@@ -1965,10 +1966,6 @@
- set_builtin_decl (BUILT_IN_PREFETCH, decl, false);
+- emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
+- got_helper_rtx));
++ insn
++ = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
}
-
-- /* We assume that size of cache line is a power of two, so verify this
-- here. */
-- gcc_assert ((PREFETCH_BLOCK & (PREFETCH_BLOCK - 1)) == 0);
--
- FOR_EACH_LOOP (loop, LI_FROM_INNERMOST)
- {
- if (dump_file && (dump_flags & TDF_DETAILS))
-@@ -2026,6 +2023,20 @@
- if (number_of_loops (fun) <= 1)
- return 0;
-
-+ if ((PREFETCH_BLOCK & (PREFETCH_BLOCK - 1)) != 0)
-+ {
-+ static bool warned = false;
+
-+ if (!warned)
-+ {
-+ warning (OPT_Wdisabled_optimization,
-+ "%<l1-cache-size%> parameter is not a power of two %d",
-+ PREFETCH_BLOCK);
-+ warned = true;
-+ }
-+ return 0;
-+ }
-+
- return tree_ssa_prefetch_arrays ();
++ emit_insn (insn);
}
-Index: gcc/ira-costs.c
-===================================================================
---- a/src/gcc/ira-costs.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/ira-costs.c (.../branches/gcc-6-branch)
-@@ -73,7 +73,7 @@
- static struct costs *total_allocno_costs;
-
- /* It is the current size of struct costs. */
--static int struct_costs_size;
-+static size_t struct_costs_size;
-
- /* Return pointer to structure containing costs of allocno or pseudo
- with given NUM in array ARR. */
-Index: gcc/tree-inline.c
-===================================================================
---- a/src/gcc/tree-inline.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-inline.c (.../branches/gcc-6-branch)
-@@ -1843,7 +1843,8 @@
- call_stmt = dyn_cast <gcall *> (stmt);
- if (call_stmt
- && gimple_call_va_arg_pack_p (call_stmt)
-- && id->call_stmt)
-+ && id->call_stmt
-+ && ! gimple_call_va_arg_pack_p (id->call_stmt))
- {
- /* __builtin_va_arg_pack () should be replaced by
- all arguments corresponding to ... in the caller. */
-@@ -1923,7 +1924,8 @@
- && id->call_stmt
- && (decl = gimple_call_fndecl (stmt))
- && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL
-- && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN)
-+ && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN
-+ && ! gimple_call_va_arg_pack_p (id->call_stmt))
- {
- /* __builtin_va_arg_pack_len () should be replaced by
- the number of anonymous arguments. */
-@@ -4536,7 +4538,7 @@
- id->src_fn = fn;
- id->src_node = cg_edge->callee;
- id->src_cfun = DECL_STRUCT_FUNCTION (fn);
-- id->call_stmt = stmt;
-+ id->call_stmt = call_stmt;
-
- /* If the src function contains an IFN_VA_ARG, then so will the dst
- function after inlining. */
-@@ -4719,7 +4721,7 @@
- {
- tree name = gimple_call_lhs (stmt);
- tree var = SSA_NAME_VAR (name);
-- tree def = ssa_default_def (cfun, var);
-+ tree def = var ? ssa_default_def (cfun, var) : NULL;
-
- if (def)
- {
-@@ -4730,6 +4732,11 @@
- }
- else
- {
-+ if (!var)
-+ {
-+ var = create_tmp_reg_fn (cfun, TREE_TYPE (name), NULL);
-+ SET_SSA_NAME_VAR_OR_IDENTIFIER (name, var);
-+ }
- /* Otherwise make this variable undefined. */
- gsi_remove (&stmt_gsi, true);
- set_ssa_default_def (cfun, var, name);
-Index: gcc/tree-inline.h
-===================================================================
---- a/src/gcc/tree-inline.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-inline.h (.../branches/gcc-6-branch)
-@@ -81,7 +81,7 @@
-
- /* GIMPLE_CALL if va arg parameter packs should be expanded or NULL
- is not. */
-- gimple *call_stmt;
-+ gcall *call_stmt;
-
- /* Exception landing pad the inlined call lies in. */
- int eh_lp_nr;
-Index: gcc/graphite-sese-to-poly.c
-===================================================================
---- a/src/gcc/graphite-sese-to-poly.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/graphite-sese-to-poly.c (.../branches/gcc-6-branch)
-@@ -407,7 +407,7 @@
-
- case SSA_NAME:
- gcc_assert (-1 != parameter_index_in_region_1 (e, s->scop_info)
-- || !invariant_in_sese_p_rec (e, s->scop_info->region, NULL));
-+ || defined_in_sese_p (e, s->scop_info->region));
- res = extract_affine_name (s, e, space);
- break;
+ /* Ensure that we are not using patterns that are not OK with PIC. */
+@@ -4457,7 +4486,7 @@
+ return true;
-@@ -436,11 +436,11 @@
- /* Returns a linear expression for tree T evaluated in PBB. */
+ if (!HARD_REGISTER_P (pic_offset_table_rtx)
+- && (HARD_REGISTER_P (x) || lra_in_progress)
++ && (HARD_REGISTER_P (x) || lra_in_progress || reload_in_progress)
+ && ORIGINAL_REGNO (x) == REGNO (pic_offset_table_rtx))
+ return true;
- static isl_pw_aff *
--create_pw_aff_from_tree (poly_bb_p pbb, tree t)
-+create_pw_aff_from_tree (poly_bb_p pbb, loop_p loop, tree t)
- {
- scop_p scop = PBB_SCOP (pbb);
+@@ -5486,7 +5515,7 @@
+ return true;
-- t = scalar_evolution_in_region (scop->scop_info->region, pbb_loop (pbb), t);
-+ t = scalar_evolution_in_region (scop->scop_info->region, loop, t);
+ /* GOT register (%l7) if needed. */
+- if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
++ if (got_register_rtx && regno == REGNO (got_register_rtx))
+ return true;
- gcc_assert (!chrec_contains_undetermined (t));
- gcc_assert (!automatically_generated_chrec_p (t));
-@@ -455,8 +455,9 @@
- static void
- add_condition_to_pbb (poly_bb_p pbb, gcond *stmt, enum tree_code code)
+ /* If the function accesses prior frames, the frame pointer and the return
+@@ -12529,10 +12558,9 @@
+ sparc_file_end (void)
{
-- isl_pw_aff *lhs = create_pw_aff_from_tree (pbb, gimple_cond_lhs (stmt));
-- isl_pw_aff *rhs = create_pw_aff_from_tree (pbb, gimple_cond_rhs (stmt));
-+ loop_p loop = gimple_bb (stmt)->loop_father;
-+ isl_pw_aff *lhs = create_pw_aff_from_tree (pbb, loop, gimple_cond_lhs (stmt));
-+ isl_pw_aff *rhs = create_pw_aff_from_tree (pbb, loop, gimple_cond_rhs (stmt));
-
- isl_set *cond;
- switch (code)
-Index: gcc/combine.c
-===================================================================
---- a/src/gcc/combine.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/combine.c (.../branches/gcc-6-branch)
-@@ -8069,12 +8069,15 @@
- || GET_CODE (inner) == SUBREG
- /* (subreg:SI (and:DI (reg:DI) (const_int 0x800000000)) 0)
- is (const_int 0), rather than
-- (subreg:SI (lshiftrt:DI (reg:DI) (const_int 35)) 0). */
-+ (subreg:SI (lshiftrt:DI (reg:DI) (const_int 35)) 0).
-+ Similarly (subreg:QI (and:SI (reg:SI) (const_int 0x80)) 0)
-+ for non-equality comparisons against 0 is not equivalent
-+ to (subreg:QI (lshiftrt:SI (reg:SI) (const_int 7)) 0). */
- || (GET_CODE (inner) == AND
- && CONST_INT_P (XEXP (inner, 1))
- && GET_MODE_SIZE (mode) < GET_MODE_SIZE (GET_MODE (inner))
- && exact_log2 (UINTVAL (XEXP (inner, 1)))
-- >= GET_MODE_BITSIZE (mode))))
-+ >= GET_MODE_BITSIZE (mode) - 1)))
- subreg_code = SET;
-
- tem = make_compound_operation (inner, subreg_code);
-Index: gcc/tree-profile.c
-===================================================================
---- a/src/gcc/tree-profile.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-profile.c (.../branches/gcc-6-branch)
-@@ -93,8 +93,6 @@
- if (targetm.have_tls)
- set_decl_tls_model (ic_void_ptr_var, decl_default_tls_model (ic_void_ptr_var));
-
-- varpool_node::finalize_decl (ic_void_ptr_var);
--
- gcov_type_ptr = build_pointer_type (get_gcov_type ());
-
- ic_gcov_type_ptr_var
-@@ -111,8 +109,6 @@
- DECL_INITIAL (ic_gcov_type_ptr_var) = NULL;
- if (targetm.have_tls)
- set_decl_tls_model (ic_gcov_type_ptr_var, decl_default_tls_model (ic_gcov_type_ptr_var));
--
-- varpool_node::finalize_decl (ic_gcov_type_ptr_var);
- }
-
- /* Create the type and function decls for the interface with gcov. */
-Index: gcc/plugin.c
-===================================================================
---- a/src/gcc/plugin.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/plugin.c (.../branches/gcc-6-branch)
-@@ -114,6 +114,16 @@
- static const char *str_license = "plugin_is_GPL_compatible";
- #endif
-
-+/* Helper function for hashing the base_name of the plugin_name_args
-+ structure to be inserted into the hash table. */
-+
-+static hashval_t
-+htab_hash_plugin (const PTR p)
-+{
-+ const struct plugin_name_args *plugin = (const struct plugin_name_args *) p;
-+ return htab_hash_string (plugin->base_name);
-+ }
-+
- /* Helper function for the hash table that compares the base_name of the
- existing entry (S1) with the given string (S2). */
-
-@@ -183,10 +193,11 @@
- /* If this is the first -fplugin= option we encounter, create
- 'plugin_name_args_tab' hash table. */
- if (!plugin_name_args_tab)
-- plugin_name_args_tab = htab_create (10, htab_hash_string, htab_str_eq,
-+ plugin_name_args_tab = htab_create (10, htab_hash_plugin, htab_str_eq,
- NULL);
-
-- slot = htab_find_slot (plugin_name_args_tab, base_name, INSERT);
-+ slot = htab_find_slot_with_hash (plugin_name_args_tab, base_name,
-+ htab_hash_string (base_name), INSERT);
-
- /* If the same plugin (name) has been specified earlier, either emit an
- error or a warning message depending on if they have identical full
-@@ -273,7 +284,8 @@
- /* Check if the named plugin has already been specified earlier in the
- command-line. */
- if (plugin_name_args_tab
-- && ((slot = htab_find_slot (plugin_name_args_tab, name, NO_INSERT))
-+ && ((slot = htab_find_slot_with_hash (plugin_name_args_tab, name,
-+ htab_hash_string (name), NO_INSERT))
- != NULL))
+ /* If we need to emit the special GOT helper function, do so now. */
+- if (got_helper_rtx)
++ if (got_helper_needed)
{
- struct plugin_name_args *plugin = (struct plugin_name_args *) *slot;
-@@ -329,7 +341,8 @@
- static void
- register_plugin_info (const char* name, struct plugin_info *info)
- {
-- void **slot = htab_find_slot (plugin_name_args_tab, name, NO_INSERT);
-+ void **slot = htab_find_slot_with_hash (plugin_name_args_tab, name,
-+ htab_hash_string (name), NO_INSERT);
- struct plugin_name_args *plugin = (struct plugin_name_args *) *slot;
- plugin->version = info->version;
- plugin->help = info->help;
-@@ -627,7 +640,8 @@
- bool ok = try_init_one_plugin (plugin);
- if (!ok)
- {
-- htab_remove_elt (plugin_name_args_tab, plugin->base_name);
-+ htab_remove_elt_with_hash (plugin_name_args_tab, plugin->base_name,
-+ htab_hash_string (plugin->base_name));
- XDELETE (plugin);
- }
- return 1;
-Index: gcc/config.gcc
-===================================================================
---- a/src/gcc/config.gcc (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config.gcc (.../branches/gcc-6-branch)
-@@ -946,6 +946,11 @@
- done
- TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
- ;;
-+aarch64*-*-freebsd*)
-+ tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
-+ tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-freebsd.h"
-+ tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
-+ ;;
- aarch64*-*-linux*)
- tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
- tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
-Index: gcc/config.host
-===================================================================
---- a/src/gcc/config.host (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config.host (.../branches/gcc-6-branch)
-@@ -99,7 +99,7 @@
- esac
-
- case ${host} in
-- aarch64*-*-linux*)
-+ aarch64*-*-freebsd* | aarch64*-*-linux*)
- case ${target} in
- aarch64*-*-*)
- host_extra_gcc_objs="driver-aarch64.o"
-Index: gcc/Makefile.in
-===================================================================
---- a/src/gcc/Makefile.in (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/Makefile.in (.../branches/gcc-6-branch)
-@@ -787,6 +787,7 @@
- CPP_INSTALL_NAME := $(shell echo cpp|sed '$(program_transform_name)')
- GCOV_INSTALL_NAME := $(shell echo gcov|sed '$(program_transform_name)')
- GCOV_TOOL_INSTALL_NAME := $(shell echo gcov-tool|sed '$(program_transform_name)')
-+GCOV_DUMP_INSTALL_NAME := $(shell echo gcov-dump|sed '$(program_transform_name)')
-
- # Setup the testing framework, if you have one
- EXPECT = `if [ -f $${rootme}/../expect/expect ] ; then \
-@@ -2047,6 +2048,7 @@
-
- optionlist: s-options ; @true
- s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
-+ LC_ALL=C ; export LC_ALL ; \
- $(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist
- $(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
- $(STAMP) s-options
-@@ -2976,7 +2978,7 @@
- gcov.texi trouble.texi bugreport.texi service.texi \
- contribute.texi compat.texi funding.texi gnu.texi gpl_v3.texi \
- fdl.texi contrib.texi cppenv.texi cppopts.texi avr-mmcu.texi \
-- implement-c.texi implement-cxx.texi gcov-tool.texi
-+ implement-c.texi implement-cxx.texi gcov-tool.texi gcov-dump.texi
-
- # we explicitly use $(srcdir)/doc/tm.texi here to avoid confusion with
- # the generated tm.texi; the latter might have a more recent timestamp,
-@@ -3099,7 +3101,7 @@
- $(SHELL) $(srcdir)/doc/install.texi2html
-
- MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \
-- doc/fsf-funding.7 doc/gcov-tool.1
-+ doc/fsf-funding.7 doc/gcov-tool.1 doc/gcov-dump.1
-
- generated-manpages: man
-
-@@ -3408,6 +3410,15 @@
- gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \
- fi; \
- fi
-+# Install gcov-dump if it was compiled.
-+ -if test "$(enable_as_accelerator)" != "yes" ; then \
-+ if [ -f gcov-dump$(exeext) ]; \
-+ then \
-+ rm -f $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
-+ $(INSTALL_PROGRAM) \
-+ gcov-dump$(exeext) $(DESTDIR)$(bindir)/$(GCOV_DUMP_INSTALL_NAME)$(exeext); \
-+ fi; \
-+ fi
-
- # Install the driver program as $(target_noncanonical)-gcc,
- # $(target_noncanonical)-gcc-$(version), and also as gcc if native.
-@@ -3491,6 +3502,8 @@
- $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) \
- $(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext) \
- $(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext) \
-+ $(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL_NAME)$(man1ext) \
-+ $(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext) \
- $(DESTDIR)$(man7dir)/fsf-funding$(man7ext) \
- $(DESTDIR)$(man7dir)/gfdl$(man7ext) \
- $(DESTDIR)$(man7dir)/gpl$(man7ext)
-@@ -3520,6 +3533,11 @@
- -$(INSTALL_DATA) $< $@
- -chmod a-x $@
-
-+$(DESTDIR)$(man1dir)/$(GCOV_DUMP_INSTALL_NAME)$(man1ext): doc/gcov-dump.1 installdirs
-+ -rm -f $@
-+ -$(INSTALL_DATA) $< $@
-+ -chmod a-x $@
-+
- # Install all the header files built in the include subdirectory.
- install-headers: $(INSTALL_HEADERS_DIR)
- # Fix symlinks to absolute paths in the installed include directory to
-Index: gcc/gimple.c
-===================================================================
---- a/src/gcc/gimple.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gimple.c (.../branches/gcc-6-branch)
-@@ -2487,7 +2487,16 @@
- if (!targs)
- return true;
- tree arg = gimple_call_arg (stmt, i);
-- if (!useless_type_conversion_p (TREE_VALUE (targs), TREE_TYPE (arg)))
-+ tree type = TREE_VALUE (targs);
-+ if (!useless_type_conversion_p (type, TREE_TYPE (arg))
-+ /* char/short integral arguments are promoted to int
-+ by several frontends if targetm.calls.promote_prototypes
-+ is true. Allow such promotion too. */
-+ && !(INTEGRAL_TYPE_P (type)
-+ && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)
-+ && targetm.calls.promote_prototypes (TREE_TYPE (fndecl))
-+ && useless_type_conversion_p (integer_type_node,
-+ TREE_TYPE (arg))))
- return false;
- targs = TREE_CHAIN (targs);
+ const char *name = XSTR (got_helper_rtx, 0);
+- const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
+ #ifdef DWARF2_UNWIND_INFO
+ bool do_cfi;
+ #endif
+@@ -12569,17 +12597,22 @@
+ #ifdef DWARF2_UNWIND_INFO
+ do_cfi = dwarf2out_do_cfi_asm ();
+ if (do_cfi)
+- fprintf (asm_out_file, "\t.cfi_startproc\n");
++ output_asm_insn (".cfi_startproc", NULL);
+ #endif
+ if (flag_delayed_branch)
+- fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
+- reg_name, reg_name);
++ {
++ output_asm_insn ("jmp\t%%o7+8", NULL);
++ output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
++ }
+ else
+- fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
+- reg_name, reg_name);
++ {
++ output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
++ output_asm_insn ("jmp\t%%o7+8", NULL);
++ output_asm_insn (" nop", NULL);
++ }
+ #ifdef DWARF2_UNWIND_INFO
+ if (do_cfi)
+- fprintf (asm_out_file, "\t.cfi_endproc\n");
++ output_asm_insn (".cfi_endproc", NULL);
+ #endif
}
-Index: gcc/gimple-expr.c
-===================================================================
---- a/src/gcc/gimple-expr.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gimple-expr.c (.../branches/gcc-6-branch)
-@@ -123,7 +123,7 @@
- /* Fixed point types with the same mode are compatible. */
- else if (FIXED_POINT_TYPE_P (inner_type)
- && FIXED_POINT_TYPE_P (outer_type))
-- return true;
-+ return TYPE_SATURATING (inner_type) == TYPE_SATURATING (outer_type);
-
- /* We need to take special care recursing to pointed-to types. */
- else if (POINTER_TYPE_P (inner_type)
-Index: gcc/tree-ssa-reassoc.c
-===================================================================
---- a/src/gcc/tree-ssa-reassoc.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/tree-ssa-reassoc.c (.../branches/gcc-6-branch)
-@@ -599,7 +599,18 @@
- if (is_gimple_assign (stmt)
- && gimple_assign_rhs_code (stmt) == code
- && has_single_use (gimple_assign_lhs (stmt)))
-- return true;
-+ {
-+ tree rhs1 = gimple_assign_rhs1 (stmt);
-+ tree rhs2 = gimple_assign_rhs1 (stmt);
-+ if (TREE_CODE (rhs1) == SSA_NAME
-+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs1))
-+ return false;
-+ if (rhs2
-+ && TREE_CODE (rhs2) == SSA_NAME
-+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs2))
-+ return false;
-+ return true;
-+ }
- return false;
- }
-@@ -4466,6 +4477,8 @@
- can_reassociate_p (tree op)
- {
- tree type = TREE_TYPE (op);
-+ if (TREE_CODE (op) == SSA_NAME && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op))
-+ return false;
- if ((ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_WRAPS (type))
- || NON_SAT_FIXED_POINT_TYPE_P (type)
- || (flag_associative_math && FLOAT_TYPE_P (type)))
-Index: gcc/config/nvptx/nvptx.c
-===================================================================
---- a/src/gcc/config/nvptx/nvptx.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/nvptx/nvptx.c (.../branches/gcc-6-branch)
-@@ -989,11 +989,14 @@
- init_frame (file, STACK_POINTER_REGNUM,
- UNITS_PER_WORD, crtl->outgoing_args_size);
-
-- /* Declare a local variable for the frame. */
-+ /* Declare a local variable for the frame. Force its size to be
-+ DImode-compatible. */
- HOST_WIDE_INT sz = get_frame_size ();
- if (sz || cfun->machine->has_chain)
- init_frame (file, FRAME_POINTER_REGNUM,
-- crtl->stack_alignment_needed / BITS_PER_UNIT, sz);
-+ crtl->stack_alignment_needed / BITS_PER_UNIT,
-+ (sz + GET_MODE_SIZE (DImode) - 1)
-+ & ~(HOST_WIDE_INT)(GET_MODE_SIZE (DImode) - 1));
-
- /* Declare the pseudos we have as ptx registers. */
- int maxregs = max_reg_num ();
-@@ -3212,8 +3215,9 @@
- rtx pred = NULL_RTX;
- rtx_code_label *label = NULL;
-
-- gcc_assert (!(fs & (GET_MODE_SIZE (DImode) - 1)));
-- fs /= GET_MODE_SIZE (DImode);
-+ /* The frame size might not be DImode compatible, but the frame
-+ array's declaration will be. So it's ok to round up here. */
-+ fs = (fs + GET_MODE_SIZE (DImode) - 1) / GET_MODE_SIZE (DImode);
- /* Detect single iteration loop. */
- if (fs == 1)
- fs = 0;
-Index: gcc/config/sparc/sparc.c
-===================================================================
---- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-6-branch)
-@@ -11970,8 +11970,9 @@
- if (TARGET_FLAT)
- return false;
+@@ -13085,7 +13118,10 @@
+ edge entry_edge;
+ rtx_insn *seq;
-- /* Otherwise, the frame pointer is required if the function isn't leaf. */
-- return !(crtl->is_leaf && only_leaf_regs_used ());
-+ /* Otherwise, the frame pointer is required if the function isn't leaf, but
-+ we cannot use sparc_leaf_function_p since it hasn't been computed yet. */
-+ return !(optimize > 0 && crtl->is_leaf && only_leaf_regs_used ());
- }
+- if (!crtl->uses_pic_offset_table)
++ /* In PIC mode, we need to always initialize the PIC register if optimization
++ is enabled, because we are called from IRA and LRA may later force things
++ to the constant pool for optimization purposes. */
++ if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
+ return;
- /* The way this is structured, we can't eliminate SFP in favor of SP
-Index: gcc/config/i386/stringop.opt
-===================================================================
---- a/src/gcc/config/i386/stringop.opt (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/stringop.opt (.../branches/gcc-6-branch)
-@@ -1,31 +0,0 @@
--/* Definitions for stringop option handling for IA-32.
-- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+ start_sequence ();
+Index: gcc/config/sparc/sparc.h
+===================================================================
+--- a/src/gcc/config/sparc/sparc.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sparc/sparc.h (.../branches/gcc-9-branch)
+@@ -736,6 +736,13 @@
+ register window instruction in the prologue. */
+ #define HARD_REGNO_RENAME_OK(FROM, TO) ((FROM) != 1)
+
++/* Select a register mode required for caller save of hard regno REGNO.
++ Contrary to what is documented, the default is not the smallest suitable
++ mode but the largest suitable mode for the given (REGNO, NREGS) pair and
++ it quickly creates paradoxical subregs that can be problematic. */
++#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
++ ((MODE) == VOIDmode ? choose_hard_reg_mode (REGNO, NREGS, false) : (MODE))
++
+ /* Specify the registers used for certain standard purposes.
+ The values of these macros are register numbers. */
+
+Index: gcc/config/darwin.opt
+===================================================================
+--- a/src/gcc/config/darwin.opt (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin.opt (.../branches/gcc-9-branch)
+@@ -18,241 +18,383 @@
+ ; along with GCC; see the file COPYING3. If not see
+ ; <http://www.gnu.org/licenses/>.
+
+-; Various linker options have a -Z added so that they can get to specs
+-; processing without interference. Note that an option name with a
+-; prefix that matches another option name, that also takes an
+-; argument, being mapped to a -Z linker option, needs to be modified
+-; so the prefix is different, otherwise a '*' after the shorter option
+-; will match with the longer one.
++; We have a lot of Driver options, many of which are obsolete or very very
++; rarely used so, to keep this file easier to manage:
+
++; Please place all Non-driver options first (in alphabetical order), followed
++; by Driver-only options.
++
++; Non-driver options.
++
++dependency-file
++C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
++
++fapple-kext
++Target Report C++ Var(flag_apple_kext)
++Generate code for darwin loadable kernel extensions.
++
++iframework
++Target RejectNegative C ObjC C++ ObjC++ Joined Separate
++-iframework <dir> Add <dir> to the end of the system framework include path.
++
++mconstant-cfstrings
++Target Report Var(darwin_constant_cfstrings) Init(1)
++Generate compile-time CFString objects.
++
++Wnonportable-cfstrings
++Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
++Warn if constant CFString objects contain non-portable characters.
++
++; Use new-style pic stubs if this is true, x86 only so far.
++matt-stubs
++Target Report Var(darwin_macho_att_stub) Init(1)
++Generate AT&T-style stubs for Mach-O.
++
++mdynamic-no-pic
++Target Common Report Mask(MACHO_DYNAMIC_NO_PIC)
++Generate code suitable for executables (NOT shared libs).
++
++mfix-and-continue
++Target Report Var(darwin_fix_and_continue)
++Generate code suitable for fast turn around debugging.
++
++mkernel
++Target Report Var(flag_mkernel)
++Generate code for the kernel or loadable kernel extensions.
++
++; The Init here is for the convenience of GCC developers, so that cc1
++; and cc1plus don't crash if no -mmacosx-version-min is passed. The
++; driver will always pass a -mmacosx-version-min, so in normal use the
++; Init is never used.
++mmacosx-version-min=
++Target RejectNegative Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
++The earliest MacOS X version on which this program will run.
++
++; Really, only relevant to PowerPC which has a 4 byte bool by default.
++mone-byte-bool
++Target RejectNegative Report Var(darwin_one_byte_bool)
++Set sizeof(bool) to 1.
++
++msymbol-stubs
++Target Report Var(darwin_symbol_stubs) Init(0)
++Force generation of external symbol indirection stubs.
++
++; Some code-gen may be improved / adjusted if the linker is sufficiently modern.
++mtarget-linker=
++Target RejectNegative Joined Report Alias(mtarget-linker)
++
++mtarget-linker
++Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION)
++The version of ld64 in use for this toolchain.
++
++; Driver options.
++
+ all_load
+-Driver Alias(Zall_load)
++Driver RejectNegative Alias(Zall_load)
++Loads all members of archive libraries
+
+ allowable_client
+-Driver Separate Alias(Zallowable_client)
++Driver RejectNegative Separate Alias(Zallowable_client)
++-allowable_client <name> The output dylib is private to the client(s) named
+
+ arch
+ Driver RejectNegative Separate
++-arch <name> Specify that the output file should be generated for architecture \"name\"
+
+ arch_errors_fatal
+-Driver Alias(Zarch_errors_fatal)
++Driver RejectNegative Alias(Zarch_errors_fatal)
++Mismatches between file architecture and the \"-arch\" are errors instead of warnings
+
+ asm_macosx_version_min=
+ Driver RejectNegative Joined
++The earliest MacOS X version on which this program will run (formatted for the assembler)
+
+ bind_at_load
+-Driver Alias(Zbind_at_load)
++Driver RejectNegative Alias(Zbind_at_load)
++Produce an output file that will bind symbols on load, rather than lazily.
+
+ bundle
+-Driver Alias(Zbundle)
++Driver RejectNegative Alias(Zbundle)
++Produce a Mach-O bundle (file type MH_BUNDLE)
+
+ bundle_loader
+-Driver Separate Alias(Zbundle_loader)
++Driver RejectNegative Separate Alias(Zbundle_loader)
++-bundle_loader <executable> Treat \"executable\" (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution
+
++client_name
++Driver RejectNegative Separate
++-client_name <name> Enable the executable being built to link against a private dylib (using allowable_client)
++
++compatibility_version
++Driver RejectNegative Separate
++-compatibility_version <number> Set the minimum version for the client interface. Clients must record a greater number than this or the binding will fail at runtime
++
++current_version
++Driver RejectNegative Separate
++-current_version <number> Set the current version for the library.
++
+ dead_strip
+-Driver Alias(Zdead_strip)
++Driver RejectNegative Alias(Zdead_strip)
++Remove code and data that is unreachable from any exported symbol (including the entry point)
+
+-dependency-file
+-C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)
+-
+ dylib_file
+ Driver Separate Alias(Zdylib_file)
+
+ dylinker
+-Driver
++Driver RejectNegative
++Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld.
+
++dylinker_install_name
++Driver RejectNegative Separate
++-dylinker_install_name <path> Only used for building dyld.
++
+ dynamic
+-Driver Alias(Zdynamic)
++Driver RejectNegative Alias(Zdynamic)
++The default (and opposite of -static), implied by user mode executables, shared libraries and bundles.
+
+ dynamiclib
+-Driver Alias(Zdynamiclib)
++Driver RejectNegative Alias(Zdynamiclib)
++Produce a Mach-O shared library (file type MH_DYLIB), synonym for -shared
+
+ exported_symbols_list
+-Driver Separate Alias(Zexported_symbols_list)
++Driver RejectNegative Separate Alias(Zexported_symbols_list)
++-exported_symbols_list <filename> Global symbols in \"filename\" will be exported from the linked output file, any symbols not mentioned will be treated as hidden.
+
+ filelist
+ Driver RejectNegative Separate
++Supply a list of objects to be linked from a file, rather than the command line
+
+ findirect-virtual-calls
+ Driver RejectNegative
++Used for generating code for some older kernel revisions.
+
+ flat_namespace
+ Driver RejectNegative Alias(Zflat_namespace)
++Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol.
+
+ force_cpusubtype_ALL
+ Driver RejectNegative Alias(Zforce_cpusubtype_ALL)
++For the assembler (and linker) permit any architecture sub-variant to be used without error.
+
+ force_flat_namespace
+ Driver RejectNegative Alias(Zforce_flat_namespace)
++Set the output object such that, on loading, dyld will ignore any two-level information and resolve symbols in the discovery order for loaded libs.
+
+ framework
+ Driver RejectNegative Separate
++-framework <name> The linker should search for the named framework in the framework search path.
+
+ fterminated-vtables
+ Driver RejectNegative
++Used for generating code for some older kernel revisions.
+
+ gfull
+ Driver RejectNegative
++Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\"
+
+ gused
+ Driver RejectNegative
++Abbreviation for \"-g -feliminate-unused-debug-symbols\"
+
+ headerpad_max_install_names
+-Driver
++Driver RejectNegative
++Automatically adds space for longer path names in load commands (up to MAXPATHLEN)
+
+ image_base
+-Driver Separate Alias(Zimage_base)
++Driver RejectNegative Separate Alias(Zimage_base)
++-image_base <address> Choose a base address for a dylib or bundle.
+
+ init
+-Driver Separate Alias(Zinit)
++Driver RejectNegative Separate Alias(Zinit)
++-init <symbol_name> The symbol \"symbol_name\" will be used as the first initialiser for a dylib.
+
+ install_name
+-Driver Separate Alias(Zinstall_name)
++Driver RejectNegative Separate Alias(Zinstall_name)
++-install_name <name> Set the install name for a dylib.
+
+ keep_private_externs
+-Driver
++Driver RejectNegative
++Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported.
+
+-mconstant-cfstrings
+-Target Report Var(darwin_constant_cfstrings) Init(1)
+-Generate compile-time CFString objects.
+-
+ multi_module
+ Driver RejectNegative Alias(Zmulti_module)
++(Obsolete after 10.4) Multi modules are ignored at runtime since MacOS 10.4
+
+ multiply_defined
+ Driver RejectNegative Separate Alias(Zmultiply_defined)
++(Obsolete after 10.4) -multiply_defined <treatment> Provided a mechanism for warning about symbols defined in multiple dylibs.
+
+ multiply_defined_unused
+ Driver RejectNegative Separate Alias(Zmultiplydefinedunused)
++(Obsolete after 10.4) -multiply_defined_unused <treatment> Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs.
+
+ no_dead_strip_inits_and_terms
+-Driver Alias(Zno_dead_strip_inits_and_terms)
++Driver RejectNegative Alias(Zno_dead_strip_inits_and_terms)
++(Obsolete) The linker never dead strips these items, so the option is not needed.
+
+ nofixprebinding
+-Driver
++Driver RejectNegative
++(Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an exectuable.
+
+ nomultidefs
+-Driver
++Driver RejectNegative
++(Obsolete after 10.4) Set MH_NOMULTIDEFS in an umbrella framework.
+
+ noprebind
+-Driver
++Driver RejectNegative Negative(prebind)
++(Obsolete) LD_PREBIND is no longer supported.
+
+ noseglinkedit
+-Driver
++Driver RejectNegative Negative(seglinkedit)
++(Obsolete) This is the default.
+
+ object
+-Driver
++Driver RejectNegative
+
++pagezero_size
++Driver RejectNegative Separate
++-pagezero_size size Allows setting the page 0 size to 4kb for certain special cases.
++
+ prebind
+-Driver
++Driver RejectNegative Negative(noprebind)
++(Obsolete) LD_PREBIND is no longer supported.
+
+ prebind_all_twolevel_modules
+-Driver
++Driver RejectNegative
++(Obsolete) LD_PREBIND is no longer supported.
+
+ preload
+-Driver
++Driver RejectNegative
++Produces a Mach-O file suitable for embedded/ROM use.
+
+ private_bundle
+-Driver
++Driver RejectNegative
++(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable.
+
+ pthread
+-Driver
++Driver RejectNegative
+
+ rdynamic
+-Driver
++Driver RejectNegative
++Synonym for \"-export-dynamic\" for linker versions that support it.
+
++read_only_relocs
++Driver RejectNegative Separate
++-read_only_relocs <treatment> This will allow relocs in read-only pages (not advisable).
++
++sectalign
++Driver RejectNegative Separate Args(3)
++-sectalign <segname> <sectname> <value> Set section \"sectname\" in segment \"segname\" to have alignment \"value\" which must be an integral power of two expressed in hexadecimal form.
++
++sectcreate
++Driver RejectNegative Separate Args(3)
++-sectcreate <segname> <sectname> <file> Create section \"sectname\" in segment \"segname\" from the contents of \"file\".
++
++sectobjectsymbols
++Driver RejectNegative Separate Args(2)
++(Obsolete) -sectobjectsymbols <segname> <sectname> Setting a local symbol at the start of a section is no longer supported.
++
++sectorder
++Driver RejectNegative Separate Args(3)
++(Obsolete) -sectorder <segname> <sectname> orderfile Replaced by a more general option \"-order_file\".
++
+ seg_addr_table
+-Driver Separate Alias(Zseg_addr_table)
++Driver RejectNegative Separate Alias(Zseg_addr_table)
++-seg_addr_table <file> Specify the base addresses for dynamic libraries, \"file\" contains a line for each library.
+
++; This is only usable by the ld_classic linker.
+ seg_addr_table_filename
+-Driver Separate Alias(Zfn_seg_addr_table_filename)
++Driver RejectNegative Separate Alias(Zfn_seg_addr_table_filename)
++(Obsolete, ld_classic only) -seg_addr_table_filename <path>
+
++seg1addr
++Driver RejectNegative Separate
++Synonym for \"image_base\"
++
+ segaddr
+-Driver Separate Args(2) Alias(Zsegaddr)
++Driver RejectNegative Separate Args(2) Alias(Zsegaddr)
++-segaddr <name> <address> Set the base address of segment \"name\" to \"address\" which must be aligned to a page boundary (currently 4kb).
+
++; This is only usable by the ld_classic linker.
++segcreate
++Driver RejectNegative Separate Args(3)
++(Obsolete, ld_classic only) -sectcreate segname sectname file
++
+ seglinkedit
+-Driver
++Driver RejectNegative Negative(noseglinkedit)
++(Obsolete) Object files with LINKEDIT sections are no longer supported.
+
++segprot
++Driver RejectNegative Separate Args(3)
++-segprot <segname> max_prot init_prot The protection values are \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\".
++
+ segs_read_only_addr
+-Driver Separate Alias(Zsegs_read_only_addr)
++Driver RejectNegative Separate Alias(Zsegs_read_only_addr)
++-segs_read_only_addr address Allows specifying the address of the read only portion of a dylib.
+
+ segs_read_write_addr
+-Driver Separate Alias(Zsegs_read_write_addr)
++Driver RejectNegative Separate Alias(Zsegs_read_write_addr)
++-segs_read_write_addr address Allows specifying the address of the read/write portion of a dylib.
+
+ single_module
+-Driver Alias(Zsingle_module)
++Driver RejectNegative Alias(Zsingle_module)
++(Obsolete) This is the default.
+
++sub_library
++Driver RejectNegative Separate
++-sub_library <name> Library named \"name\" will be re-exported (only useful for dylibs).
++
++sub_umbrella
++Driver RejectNegative Separate
++-sub_umbrella <name> Framework named \"name\" will be re-exported (only useful for dylibs).
++
+ twolevel_namespace
+-Driver
++Driver RejectNegative
++This is the default
+
+ twolevel_namespace_hints
+-Driver
++Driver RejectNegative
++Specifies content that can speed up dynamic loading when the binaries are unchanged.
+
+ umbrella
+-Driver Separate Alias(Zumbrella)
++Driver RejectNegative Separate Alias(Zumbrella)
++-umbrella <framework> The specified framework will be re-exported.
+
++undefined
++Driver RejectNegative Separate
++-undefined <treatment> Specify the handling for undefined symbols (default is error).
++
+ unexported_symbols_list
+-Driver Separate Alias(Zunexported_symbols_list)
++Driver RejectNegative Separate Alias(Zunexported_symbols_list)
++-unexported_symbols_list <filename> Don't export global symbols listed in filename.
+
+ weak_reference_mismatches
+-Driver Separate Alias(Zweak_reference_mismatches)
++Driver RejectNegative Separate Alias(Zweak_reference_mismatches)
++-weak_reference_mismatches <treatment> Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak.
+
+ whatsloaded
+-Driver
++Driver RejectNegative
++Logs the object files the linker loads
+
+ whyload
+-Driver
++Driver RejectNegative
++Logs which symbol(s) caused an object to be loaded.
+
++;(Obsolete, ignored) Strip symbols starting with "L", this is the default.
++X
++Driver RejectNegative
++
+ y
+-Driver Joined
++Driver RejectNegative Joined
++(Obsolete, ignored) Old support similar to whyload.
+
+ Mach
+-Driver
++Driver RejectNegative
++(Obsolete and unhandled by ld64, ignored) ld should produce an executable (only handled by ld_classic).
+
+-Wnonportable-cfstrings
+-Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
+-Warn if constant CFString objects contain non-portable characters.
++;; These are not "real" options, but placeholders used to hide the real options
++;; from generic options processing... FIXME: they can be eliminated now.
+
+-; Use new-style pic stubs if this is true, x86 only so far.
+-matt-stubs
+-Target Report Var(darwin_macho_att_stub) Init(1)
+-Generate AT&T-style stubs for Mach-O.
+-
+-mdynamic-no-pic
+-Target Common Report Mask(MACHO_DYNAMIC_NO_PIC)
+-Generate code suitable for executables (NOT shared libs).
-
--This file is part of GCC.
+-mfix-and-continue
+-Target Report Var(darwin_fix_and_continue)
+-Generate code suitable for fast turn around debugging.
+-
+-; The Init here is for the convenience of GCC developers, so that cc1
+-; and cc1plus don't crash if no -mmacosx-version-min is passed. The
+-; driver will always pass a -mmacosx-version-min, so in normal use the
+-; Init is never used.
+-mmacosx-version-min=
+-Target Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
+-The earliest MacOS X version on which this program will run.
+-
+-mone-byte-bool
+-Target RejectNegative Report Var(darwin_one_byte_bool)
+-Set sizeof(bool) to 1.
+-
+-fapple-kext
+-Target Report C++ Var(flag_apple_kext)
+-Generate code for darwin loadable kernel extensions.
+-
+-mkernel
+-Target Report Var(flag_mkernel)
+-Generate code for the kernel or loadable kernel extensions.
+-
+-iframework
+-Target RejectNegative C ObjC C++ ObjC++ Joined Separate
+--iframework <dir> Add <dir> to the end of the system framework include path.
+-
+-X
+-Driver
+-
+ Zall_load
+ Driver
+
+@@ -343,62 +485,3 @@
+ Zweak_reference_mismatches
+ Driver Separate
+
+-client_name
+-Driver Separate
+-
+-compatibility_version
+-Driver Separate
+-
+-current_version
+-Driver Separate
+-
+-dylinker_install_name
+-Driver Separate
+-
+-pagezero_size
+-Driver Separate
+-
+-read_only_relocs
+-Driver Separate
+-
+-sectalign
+-Driver Separate Args(3)
+-
+-sectcreate
+-Driver Separate Args(3)
+-
+-sectobjectsymbols
+-Driver Separate Args(2)
-
--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.
+-sectorder
+-Driver Separate Args(3)
+-
+-seg1addr
+-Driver Separate
-
--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.
+-segcreate
+-Driver Separate Args(3)
-
--You should have received a copy of the GNU General Public License
--along with GCC; see the files COPYING3. If not,
--see <http://www.gnu.org/licenses/>. */
+-segprot
+-Driver Separate Args(3)
-
--Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
+-segs_read_only_addr
+-Driver Separate
-
--#undef DEF_ENUM
--#define DEF_ENUM EnumValue
+-segs_read_write_addr
+-Driver Separate
-
--#undef DEF_ALG
--#define DEF_ALG(alg, name) Enum(stringop_alg) String(name) Value(alg)
+-sub_library
+-Driver Separate
-
--#include "stringop.def"
+-sub_umbrella
+-Driver Separate
-
--#undef DEF_ENUM
--#undef DEF_ALG
-Index: gcc/config/i386/i386.md
-===================================================================
---- a/src/gcc/config/i386/i386.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/i386.md (.../branches/gcc-6-branch)
-@@ -2938,6 +2938,36 @@
- operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx);
- })
-
-+(define_insn_and_split "*pushxf_rounded"
-+ [(set (mem:XF
-+ (pre_modify:P
-+ (reg:P SP_REG)
-+ (plus:P (reg:P SP_REG) (const_int -16))))
-+ (match_operand:XF 0 "nonmemory_no_elim_operand" "f,r,*r,C"))]
-+ "TARGET_64BIT"
-+ "#"
-+ "&& 1"
-+ [(set (reg:P SP_REG) (plus:P (reg:P SP_REG) (const_int -16)))
-+ (set (match_dup 1) (match_dup 0))]
-+{
-+ rtx pat = PATTERN (curr_insn);
-+ operands[1] = SET_DEST (pat);
-+
-+ /* Preserve memory attributes. */
-+ operands[1] = replace_equiv_address (operands[1], stack_pointer_rtx);
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "unit" "i387,*,*,*")
-+ (set (attr "mode")
-+ (cond [(eq_attr "alternative" "1,2,3")
-+ (const_string "DI")
-+ ]
-+ (const_string "XF")))
-+ (set (attr "preferred_for_size")
-+ (cond [(eq_attr "alternative" "1")
-+ (symbol_ref "false")]
-+ (symbol_ref "true")))])
-+
- (define_insn "*pushxf"
- [(set (match_operand:XF 0 "push_operand" "=<,<,<,<")
- (match_operand:XF 1 "general_no_elim_operand" "f,r,*r,oF"))]
-@@ -3172,9 +3202,9 @@
- ;; in alternatives 4, 6, 7 and 8.
- (define_insn "*movxf_internal"
- [(set (match_operand:XF 0 "nonimmediate_operand"
-- "=f,m,f,?r ,!o,?*r ,!o,!o,!o,r ,o")
-+ "=f,m,f,?r ,!o,?*r ,!o,!o,!o,r ,o ,o")
- (match_operand:XF 1 "general_operand"
-- "fm,f,G,roF,r , *roF,*r,F ,C,roF,rF"))]
-+ "fm,f,G,roF,r ,*roF,*r,F ,C ,roF,rF,rC"))]
- "!(MEM_P (operands[0]) && MEM_P (operands[1]))
- && (lra_in_progress || reload_completed
- || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
-@@ -3201,19 +3231,19 @@
- }
- }
- [(set (attr "isa")
-- (cond [(eq_attr "alternative" "7")
-+ (cond [(eq_attr "alternative" "7,10")
- (const_string "nox64")
-- (eq_attr "alternative" "8")
-+ (eq_attr "alternative" "8,11")
- (const_string "x64")
- ]
- (const_string "*")))
- (set (attr "type")
-- (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10")
-+ (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10,11")
- (const_string "multi")
- ]
- (const_string "fmov")))
- (set (attr "mode")
-- (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10")
-+ (cond [(eq_attr "alternative" "3,4,5,6,7,8,9,10,11")
- (if_then_else (match_test "TARGET_64BIT")
- (const_string "DI")
- (const_string "SI"))
-@@ -3224,7 +3254,7 @@
- (symbol_ref "false")]
- (symbol_ref "true")))
- (set (attr "enabled")
-- (cond [(eq_attr "alternative" "9,10")
-+ (cond [(eq_attr "alternative" "9,10,11")
- (if_then_else
- (match_test "TARGET_HARD_XF_REGS")
- (symbol_ref "false")
-Index: gcc/config/i386/mmx.md
-===================================================================
---- a/src/gcc/config/i386/mmx.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/mmx.md (.../branches/gcc-6-branch)
-@@ -931,7 +931,7 @@
- [(set (match_operand:MMXMODE24 0 "register_operand" "=y")
- (ashiftrt:MMXMODE24
- (match_operand:MMXMODE24 1 "register_operand" "0")
-- (match_operand:SI 2 "nonmemory_operand" "yN")))]
-+ (match_operand:DI 2 "nonmemory_operand" "yN")))]
- "TARGET_MMX"
- "psra<mmxvecsize>\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
-@@ -945,7 +945,7 @@
- [(set (match_operand:MMXMODE248 0 "register_operand" "=y")
- (any_lshift:MMXMODE248
- (match_operand:MMXMODE248 1 "register_operand" "0")
-- (match_operand:SI 2 "nonmemory_operand" "yN")))]
-+ (match_operand:DI 2 "nonmemory_operand" "yN")))]
- "TARGET_MMX"
- "p<vshift><mmxvecsize>\t{%2, %0|%0, %2}"
- [(set_attr "type" "mmxshft")
-Index: gcc/config/i386/mmintrin.h
-===================================================================
---- a/src/gcc/config/i386/mmintrin.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/mmintrin.h (.../branches/gcc-6-branch)
-@@ -27,9 +27,13 @@
- #ifndef _MMINTRIN_H_INCLUDED
- #define _MMINTRIN_H_INCLUDED
-
--#ifndef __MMX__
-+#if defined __x86_64__ && !defined __SSE__ || !defined __MMX__
- #pragma GCC push_options
-+#ifdef __x86_64__
-+#pragma GCC target("sse,mmx")
-+#else
- #pragma GCC target("mmx")
-+#endif
- #define __DISABLE_MMX__
- #endif /* __MMX__ */
-
-@@ -308,7 +312,7 @@
- /* Add the 64-bit values in M1 to the 64-bit values in M2. */
- #ifndef __SSE2__
- #pragma GCC push_options
--#pragma GCC target("sse2")
-+#pragma GCC target("sse2,mmx")
- #define __DISABLE_SSE2__
- #endif /* __SSE2__ */
-
-@@ -420,7 +424,7 @@
- /* Add the 64-bit values in M1 to the 64-bit values in M2. */
- #ifndef __SSE2__
- #pragma GCC push_options
--#pragma GCC target("sse2")
-+#pragma GCC target("sse2,mmx")
- #define __DISABLE_SSE2__
- #endif /* __SSE2__ */
-
-Index: gcc/config/i386/avx512pfintrin.h
+-; Certain aspects of code-gen may be improved / adjusted if the version of ld64
+-; is sufficiently modern.
+-mtarget-linker
+-Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION)
+-The version of ld64 in use for this toolchain.
+-
+-undefined
+-Driver Separate
+Index: gcc/config/i386/i386.h
===================================================================
---- a/src/gcc/config/i386/avx512pfintrin.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/avx512pfintrin.h (.../branches/gcc-6-branch)
-@@ -49,37 +49,33 @@
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_prefetch_i32gather_pd (__m256i index, __mmask8 mask,
-- void *addr, int scale, int hint)
-+ void const *addr, int scale, int hint)
- {
-- __builtin_ia32_gatherpfdpd (mask, (__v8si) index, (long long const *) addr,
-- scale, hint);
-+ __builtin_ia32_gatherpfdpd (mask, (__v8si) index, addr, scale, hint);
- }
-
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask,
-- void *addr, int scale, int hint)
-+ void const *addr, int scale, int hint)
- {
-- __builtin_ia32_gatherpfdps (mask, (__v16si) index, (int const *) addr,
-- scale, hint);
-+ __builtin_ia32_gatherpfdps (mask, (__v16si) index, addr, scale, hint);
- }
-
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_prefetch_i64gather_pd (__m512i index, __mmask8 mask,
-- void *addr, int scale, int hint)
-+ void const *addr, int scale, int hint)
- {
-- __builtin_ia32_gatherpfqpd (mask, (__v8di) index, (long long const *) addr,
-- scale, hint);
-+ __builtin_ia32_gatherpfqpd (mask, (__v8di) index, addr, scale, hint);
- }
-
- extern __inline void
+--- a/src/gcc/config/i386/i386.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/i386.h (.../branches/gcc-9-branch)
+@@ -640,7 +640,7 @@
+ /* Replace MACH-O, ifdefs by in-line tests, where possible.
+ (a) Macros defined in config/i386/darwin.h */
+ #define TARGET_MACHO 0
+-#define TARGET_MACHO_BRANCH_ISLANDS 0
++#define TARGET_MACHO_SYMBOL_STUBS 0
+ #define MACHOPIC_ATT_STUB 0
+ /* (b) Macros defined in config/darwin.h */
+ #define MACHO_DYNAMIC_NO_PIC_P 0
+Index: gcc/config/i386/avx2intrin.h
+===================================================================
+--- a/src/gcc/config/i386/avx2intrin.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/avx2intrin.h (.../branches/gcc-9-branch)
+@@ -258,7 +258,7 @@
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_prefetch_i64gather_ps (__m512i index, __mmask8 mask,
-- void *addr, int scale, int hint)
-+ void const *addr, int scale, int hint)
- {
-- __builtin_ia32_gatherpfqps (mask, (__v8di) index, (int const *) addr,
-- scale, hint);
-+ __builtin_ia32_gatherpfqps (mask, (__v8di) index, addr, scale, hint);
- }
-
- extern __inline void
-@@ -87,8 +83,8 @@
- _mm512_prefetch_i32scatter_pd (void *addr, __m256i index, int scale,
- int hint)
- {
-- __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) index,
-- (long long const *)addr, scale, hint);
-+ __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) index, addr, scale,
-+ hint);
- }
-
- extern __inline void
-@@ -96,8 +92,8 @@
- _mm512_prefetch_i32scatter_ps (void *addr, __m512i index, int scale,
- int hint)
- {
-- __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, (int const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, addr, scale,
-+ hint);
- }
-
- extern __inline void
-@@ -105,8 +101,7 @@
- _mm512_mask_prefetch_i32scatter_pd (void *addr, __mmask8 mask,
- __m256i index, int scale, int hint)
- {
-- __builtin_ia32_scatterpfdpd (mask, (__v8si) index, (long long const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfdpd (mask, (__v8si) index, addr, scale, hint);
- }
-
- extern __inline void
-@@ -114,8 +109,7 @@
- _mm512_mask_prefetch_i32scatter_ps (void *addr, __mmask16 mask,
- __m512i index, int scale, int hint)
+ _mm256_cmpgt_epi8 (__m256i __A, __m256i __B)
{
-- __builtin_ia32_scatterpfdps (mask, (__v16si) index, (int const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfdps (mask, (__v16si) index, addr, scale, hint);
+- return (__m256i) ((__v32qi)__A > (__v32qi)__B);
++ return (__m256i) ((__v32qs)__A > (__v32qs)__B);
}
- extern __inline void
-@@ -123,8 +117,8 @@
- _mm512_prefetch_i64scatter_pd (void *addr, __m512i index, int scale,
- int hint)
- {
-- __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) index, (long long const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) index, addr, scale,
-+ hint);
- }
+ extern __inline __m256i
+Index: gcc/config/i386/sse.md
+===================================================================
+--- a/src/gcc/config/i386/sse.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/sse.md (.../branches/gcc-9-branch)
+@@ -2625,7 +2625,7 @@
+ ;; Modes handled by reduc_sm{in,ax}* patterns.
+ (define_mode_iterator REDUC_SSE_SMINMAX_MODE
+ [(V4SF "TARGET_SSE") (V2DF "TARGET_SSE")
+- (V2DI "TARGET_SSE") (V4SI "TARGET_SSE") (V8HI "TARGET_SSE")
++ (V2DI "TARGET_SSE4_2") (V4SI "TARGET_SSE") (V8HI "TARGET_SSE")
+ (V16QI "TARGET_SSE")])
+
+ (define_expand "reduc_<code>_scal_<mode>"
+@@ -16241,7 +16241,7 @@
+ }
+ })
- extern __inline void
-@@ -132,8 +126,8 @@
- _mm512_prefetch_i64scatter_ps (void *addr, __m512i index, int scale,
- int hint)
- {
-- __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, (int const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, addr, scale,
-+ hint);
- }
+-(define_insn "abs<mode>2"
++(define_insn "ssse3_abs<mode>2"
+ [(set (match_operand:MMXMODEI 0 "register_operand" "=y")
+ (abs:MMXMODEI
+ (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))]
+Index: gcc/config/i386/i386-builtin.def
+===================================================================
+--- a/src/gcc/config/i386/i386-builtin.def (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/i386-builtin.def (.../branches/gcc-9-branch)
+@@ -818,11 +818,11 @@
+
+ /* SSSE3 */
+ BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI)
+-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI)
++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI)
+ BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI)
+-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI)
++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI)
+ BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI)
+-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI)
++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI)
+
+ BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_ssse3_phaddwv8hi3, "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI)
+ BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI)
+Index: gcc/config/i386/darwin.h
+===================================================================
+--- a/src/gcc/config/i386/darwin.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/darwin.h (.../branches/gcc-9-branch)
+@@ -90,14 +90,12 @@
+ #undef WCHAR_TYPE_SIZE
+ #define WCHAR_TYPE_SIZE 32
- extern __inline void
-@@ -141,8 +135,7 @@
- _mm512_mask_prefetch_i64scatter_pd (void *addr, __mmask16 mask,
- __m512i index, int scale, int hint)
- {
-- __builtin_ia32_scatterpfqpd (mask, (__v8di) index, (long long const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfqpd (mask, (__v8di) index, addr, scale, hint);
- }
+-/* Generate branch islands stubs if this is true. */
+-extern int darwin_emit_branch_islands;
++/* Generate pic symbol indirection stubs if this is true. */
++#undef TARGET_MACHO_SYMBOL_STUBS
++#define TARGET_MACHO_SYMBOL_STUBS (darwin_symbol_stubs)
+
+-#undef TARGET_MACHO_BRANCH_ISLANDS
+-#define TARGET_MACHO_BRANCH_ISLANDS darwin_emit_branch_islands
+-
+ /* For compatibility with OSX system tools, use the new style of pic stub
+- if this is set. */
++ if this is set (default). */
+ #undef MACHOPIC_ATT_STUB
+ #define MACHOPIC_ATT_STUB (darwin_macho_att_stub)
+
+@@ -245,7 +243,7 @@
+ #undef FUNCTION_PROFILER
+ #define FUNCTION_PROFILER(FILE, LABELNO) \
+ do { \
+- if (TARGET_MACHO_BRANCH_ISLANDS \
++ if (TARGET_MACHO_SYMBOL_STUBS \
+ && MACHOPIC_INDIRECT && !TARGET_64BIT) \
+ { \
+ const char *name = machopic_mcount_stub_name (); \
+@@ -326,10 +324,8 @@
+ } \
+ }
- extern __inline void
-@@ -150,58 +143,57 @@
- _mm512_mask_prefetch_i64scatter_ps (void *addr, __mmask16 mask,
- __m512i index, int scale, int hint)
+-/* This needs to move since i386 uses the first flag and other flags are
+- used in Mach-O. */
+-#undef MACHO_SYMBOL_FLAG_VARIABLE
+-#define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3)
++/* First available SYMBOL flag bit for use by subtargets. */
++#define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP << 5)
+
+ #undef MACHOPIC_NL_SYMBOL_PTR_SECTION
+ #define MACHOPIC_NL_SYMBOL_PTR_SECTION \
+Index: gcc/config/i386/emmintrin.h
+===================================================================
+--- a/src/gcc/config/i386/emmintrin.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/emmintrin.h (.../branches/gcc-9-branch)
+@@ -1308,7 +1308,7 @@
+ extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cmpeq_epi8 (__m128i __A, __m128i __B)
{
-- __builtin_ia32_scatterpfqps (mask, (__v8di) index, (int const *) addr,
-- scale, hint);
-+ __builtin_ia32_scatterpfqps (mask, (__v8di) index, addr, scale, hint);
+- return (__m128i) ((__v16qs)__A == (__v16qs)__B);
++ return (__m128i) ((__v16qi)__A == (__v16qi)__B);
}
- #else
- #define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \
- __builtin_ia32_gatherpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX, \
-- (long long const *)ADDR, (int)SCALE, (int)HINT)
-+ (void const *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \
- __builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \
-- (int const *)ADDR, (int)SCALE, (int)HINT)
-+ (void const *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \
- __builtin_ia32_gatherpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
-- (long long const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \
- __builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
-- (int const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX, \
-- (long long const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX, \
-- (int const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX, \
-- (long long const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \
-- (int const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \
-- (long long const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \
-- (int const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
-- (long long const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
-
- #define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \
- __builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
-- (int const *)ADDR, (int)SCALE, (int)HINT)
-+ (void *)ADDR, (int)SCALE, (int)HINT)
- #endif
-
- #ifdef __DISABLE_AVX512PF__
-Index: gcc/config/i386/x86-64.h
+ extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+Index: gcc/config/i386/avxintrin.h
===================================================================
---- a/src/gcc/config/i386/x86-64.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/x86-64.h (.../branches/gcc-6-branch)
-@@ -49,7 +49,7 @@
- #define WCHAR_TYPE_SIZE 32
+--- a/src/gcc/config/i386/avxintrin.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/avxintrin.h (.../branches/gcc-9-branch)
+@@ -47,6 +47,7 @@
+ typedef short __v16hi __attribute__ ((__vector_size__ (32)));
+ typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
+ typedef char __v32qi __attribute__ ((__vector_size__ (32)));
++typedef signed char __v32qs __attribute__ ((__vector_size__ (32)));
+ typedef unsigned char __v32qu __attribute__ ((__vector_size__ (32)));
- #undef ASM_SPEC
--#define ASM_SPEC "%{m32:--32} %{m64:--64} %{mx32:--x32}"
-+#define ASM_SPEC "%{m16|m32:--32} %{m64:--64} %{mx32:--x32}"
+ /* The Intel API is flexible enough that we must allow aliasing with other
+Index: gcc/config/i386/i386.c
+===================================================================
+--- a/src/gcc/config/i386/i386.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/i386/i386.c (.../branches/gcc-9-branch)
+@@ -16960,7 +16960,7 @@
+ break;
- #undef ASM_OUTPUT_ALIGNED_BSS
- #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
-Index: gcc/config/i386/avx512bwintrin.h
+ case SYMBOL_REF:
+- if (TARGET_64BIT || ! TARGET_MACHO_BRANCH_ISLANDS)
++ if (TARGET_64BIT || ! TARGET_MACHO_SYMBOL_STUBS)
+ output_addr_const (file, x);
+ else
+ {
+Index: gcc/config/darwin-protos.h
===================================================================
---- a/src/gcc/config/i386/avx512bwintrin.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/avx512bwintrin.h (.../branches/gcc-6-branch)
-@@ -2420,6 +2420,72 @@
- (__mmask32) -1);
- }
+--- a/src/gcc/config/darwin-protos.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin-protos.h (.../branches/gcc-9-branch)
+@@ -53,8 +53,6 @@
-+extern __inline __m512i
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_packs_epi32 (__m512i __A, __m512i __B)
-+{
-+ return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
-+ (__v16si) __B,
-+ (__v32hi)
-+ _mm512_setzero_hi (),
-+ (__mmask32) -1);
-+}
-+
-+extern __inline __m512i
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
-+{
-+ return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
-+ (__v16si) __B,
-+ (__v32hi)
-+ _mm512_setzero_hi (),
-+ __M);
-+}
-+
-+extern __inline __m512i
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
-+ __m512i __B)
-+{
-+ return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
-+ (__v16si) __B,
-+ (__v32hi) __W,
-+ __M);
-+}
-+
-+extern __inline __m512i
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_packus_epi32 (__m512i __A, __m512i __B)
-+{
-+ return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
-+ (__v16si) __B,
-+ (__v32hi)
-+ _mm512_setzero_hi (),
-+ (__mmask32) -1);
-+}
-+
-+extern __inline __m512i
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
-+{
-+ return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
-+ (__v16si) __B,
-+ (__v32hi)
-+ _mm512_setzero_hi (),
-+ __M);
-+}
-+
-+extern __inline __m512i
-+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
-+ __m512i __B)
-+{
-+ return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
-+ (__v16si) __B,
-+ (__v32hi) __W,
-+ __M);
-+}
-+
- #ifdef __OPTIMIZE__
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-@@ -2745,72 +2811,6 @@
+ #endif /* TREE_CODE */
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_packs_epi32 (__m512i __A, __m512i __B)
--{
-- return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
-- (__v16si) __B,
-- (__v32hi)
-- _mm512_setzero_hi (),
-- (__mmask32) -1);
--}
--
--extern __inline __m512i
--__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
--{
-- return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
-- (__v16si) __B,
-- (__v32hi)
-- _mm512_setzero_hi(),
-- __M);
--}
--
--extern __inline __m512i
--__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
-- __m512i __B)
--{
-- return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
-- (__v16si) __B,
-- (__v32hi) __W,
-- __M);
--}
--
--extern __inline __m512i
--__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_packus_epi32 (__m512i __A, __m512i __B)
--{
-- return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
-- (__v16si) __B,
-- (__v32hi)
-- _mm512_setzero_hi (),
-- (__mmask32) -1);
--}
--
--extern __inline __m512i
--__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
--{
-- return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
-- (__v16si) __B,
-- (__v32hi)
-- _mm512_setzero_hi(),
-- __M);
--}
+-extern void machopic_finish (FILE *);
-
--extern __inline __m512i
--__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
-- __m512i __B)
--{
-- return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
-- (__v16si) __B,
-- (__v32hi) __W,
-- __M);
--}
--
--extern __inline __m512i
--__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_bslli_epi128 (__m512i __A, const int __N)
- {
- return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
-Index: gcc/config/i386/rtemself.h
+ extern int machopic_reloc_rw_mask (void);
+ extern section *machopic_select_section (tree, int, unsigned HOST_WIDE_INT);
+
+Index: gcc/config/sh/sh.c
===================================================================
---- a/src/gcc/config/i386/rtemself.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/rtemself.h (.../branches/gcc-6-branch)
-@@ -29,7 +29,4 @@
- } \
- while (0)
+--- a/src/gcc/config/sh/sh.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sh/sh.c (.../branches/gcc-9-branch)
+@@ -664,6 +664,9 @@
+ #undef TARGET_CONSTANT_ALIGNMENT
+ #define TARGET_CONSTANT_ALIGNMENT constant_alignment_word_strings
--#undef LONG_DOUBLE_TYPE_SIZE
--#define LONG_DOUBLE_TYPE_SIZE (TARGET_80387 ? 80 : 64)
--
- #define IX86_NO_LIBGCC_TFMODE
-Index: gcc/config/i386/cpuid.h
-===================================================================
---- a/src/gcc/config/i386/cpuid.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/cpuid.h (.../branches/gcc-6-branch)
-@@ -63,7 +63,7 @@
- #define bit_MMXEXT (1 << 22)
- #define bit_LM (1 << 29)
- #define bit_3DNOWP (1 << 30)
--#define bit_3DNOW (1 << 31)
-+#define bit_3DNOW (1u << 31)
-
- /* %ebx. */
- #define bit_CLZERO (1 << 0)
-@@ -89,7 +89,7 @@
- #define bit_AVX512CD (1 << 28)
- #define bit_SHA (1 << 29)
- #define bit_AVX512BW (1 << 30)
--#define bit_AVX512VL (1 << 31)
-+#define bit_AVX512VL (1u << 31)
-
- /* %ecx */
- #define bit_PREFETCHWT1 (1 << 0)
-@@ -239,8 +239,9 @@
- unsigned int *__ecx, unsigned int *__edx)
- {
- unsigned int __ext = __leaf & 0x80000000;
-+ unsigned int __maxlevel = __get_cpuid_max (__ext, 0);
++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE
++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed
++
+ struct gcc_target targetm = TARGET_INITIALIZER;
+
-- if (__get_cpuid_max (__ext, 0) < __leaf)
-+ if (__maxlevel == 0 || __maxlevel < __leaf)
- return 0;
+@@ -737,7 +740,7 @@
+ {
+ if (tokens[i] == "strict")
+ ret.strict = true;
+- else if (tokens[i].find ("gbr-offset=") == 0)
++ else if (!tokens[i].compare (0, strlen ("gbr-offset="), "gbr-offset="))
+ {
+ std::string offset_str = tokens[i].substr (strlen ("gbr-offset="));
+ ret.tcb_gbr_offset = integral_argument (offset_str.c_str ());
+@@ -958,11 +961,13 @@
+ if (flag_unsafe_math_optimizations)
+ {
+ /* Enable fsca insn for SH4A if not otherwise specified by the user. */
+- if (global_options_set.x_TARGET_FSCA == 0 && TARGET_SH4A_FP)
++ if (global_options_set.x_TARGET_FSCA == 0
++ && (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
+ TARGET_FSCA = 1;
+
+ /* Enable fsrra insn for SH4A if not otherwise specified by the user. */
+- if (global_options_set.x_TARGET_FSRRA == 0 && TARGET_SH4A_FP)
++ if (global_options_set.x_TARGET_FSRRA == 0
++ && (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
+ TARGET_FSRRA = 1;
+ }
+
+@@ -12087,9 +12092,11 @@
+ rtx r = gen_reg_rtx (SImode);
+ rtx_insn* i0;
+ if (from_mode == QImode)
+- i0 = emit_insn_after (gen_extendqisi2 (r, set_src), insn);
++ i0 = sh_check_add_incdec_notes (
++ emit_insn_after (gen_extendqisi2 (r, set_src), insn));
+ else if (from_mode == HImode)
+- i0 = emit_insn_after (gen_extendhisi2 (r, set_src), insn);
++ i0 = sh_check_add_incdec_notes (
++ emit_insn_after (gen_extendhisi2 (r, set_src), insn));
+ else
+ gcc_unreachable ();
- __cpuid (__leaf, *__eax, *__ebx, *__ecx, *__edx);
-@@ -255,8 +256,9 @@
- unsigned int *__ecx, unsigned int *__edx)
+@@ -12507,7 +12514,7 @@
+ sh_emit_mode_set (int entity ATTRIBUTE_UNUSED, int mode,
+ int prev_mode, HARD_REG_SET regs_live ATTRIBUTE_UNUSED)
{
- unsigned int __ext = __leaf & 0x80000000;
-+ unsigned int __maxlevel = __get_cpuid_max (__ext, 0);
+- if ((TARGET_SH4A_FP || TARGET_SH4_300)
++ if ((TARGET_SH4A_FP || TARGET_FPU_SH4_300)
+ && prev_mode != FP_MODE_NONE && prev_mode != mode)
+ {
+ emit_insn (gen_toggle_pr ());
+Index: gcc/config/sh/sh.h
+===================================================================
+--- a/src/gcc/config/sh/sh.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sh/sh.h (.../branches/gcc-9-branch)
+@@ -69,6 +69,8 @@
+ FPU is disabled (which makes it compatible with SH4al-dsp). */
+ #define TARGET_SH4A_FP (TARGET_SH4A && TARGET_FPU_ANY)
+
++/* True if the FPU is a SH4-300 variant. */
++#define TARGET_FPU_SH4_300 (TARGET_FPU_ANY && TARGET_SH4_300)
+
+ /* This is not used by the SH2E calling convention */
+ #define TARGET_VARARGS_PRETEND_ARGS(FUN_DECL) \
+Index: gcc/config/sh/sh.md
+===================================================================
+--- a/src/gcc/config/sh/sh.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/sh/sh.md (.../branches/gcc-9-branch)
+@@ -9163,7 +9163,7 @@
+ (xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_PR)))
+ (set (reg:SI FPSCR_MODES_REG)
+ (unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))]
+- "TARGET_SH4A_FP"
++ "TARGET_SH4A_FP || TARGET_FPU_SH4_300"
+ "fpchg"
+ [(set_attr "type" "fpscr_toggle")])
+
+@@ -9391,15 +9391,31 @@
+ (define_expand "negsf2"
+ [(set (match_operand:SF 0 "fp_arith_reg_operand")
+ (neg:SF (match_operand:SF 1 "fp_arith_reg_operand")))]
+- "TARGET_SH2E")
++ "TARGET_FPU_ANY"
++{
++ if (TARGET_FPU_SH4_300)
++ emit_insn (gen_negsf2_fpscr (operands[0], operands[1]));
++ else
++ emit_insn (gen_negsf2_no_fpscr (operands[0], operands[1]));
++ DONE;
++})
-- if (__get_cpuid_max (__ext, 0) < __leaf)
-+ if (__maxlevel == 0 || __maxlevel < __leaf)
- return 0;
+-(define_insn "*negsf2_i"
++(define_insn "negsf2_no_fpscr"
+ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
+ (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))]
+- "TARGET_SH2E"
++ "TARGET_FPU_ANY && !TARGET_FPU_SH4_300"
+ "fneg %0"
+ [(set_attr "type" "fmove")])
+
++(define_insn "negsf2_fpscr"
++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
++ (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))
++ (use (reg:SI FPSCR_MODES_REG))]
++ "TARGET_FPU_SH4_300"
++ "fneg %0"
++ [(set_attr "type" "fmove")
++ (set_attr "fp_mode" "single")])
++
+ (define_expand "sqrtsf2"
+ [(set (match_operand:SF 0 "fp_arith_reg_operand" "")
+ (sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))]
+@@ -9489,15 +9505,31 @@
+ (define_expand "abssf2"
+ [(set (match_operand:SF 0 "fp_arith_reg_operand")
+ (abs:SF (match_operand:SF 1 "fp_arith_reg_operand")))]
+- "TARGET_SH2E")
++ "TARGET_FPU_ANY"
++{
++ if (TARGET_FPU_SH4_300)
++ emit_insn (gen_abssf2_fpscr (operands[0], operands[1]));
++ else
++ emit_insn (gen_abssf2_no_fpscr (operands[0], operands[1]));
++ DONE;
++})
- __cpuid_count (__leaf, __subleaf, *__eax, *__ebx, *__ecx, *__edx);
-Index: gcc/config/i386/mm3dnow.h
-===================================================================
---- a/src/gcc/config/i386/mm3dnow.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/mm3dnow.h (.../branches/gcc-6-branch)
-@@ -30,9 +30,13 @@
- #include <mmintrin.h>
- #include <prfchwintrin.h>
+-(define_insn "*abssf2_i"
++(define_insn "abssf2_no_fpscr"
+ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
+ (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))]
+- "TARGET_SH2E"
++ "TARGET_FPU_ANY && !TARGET_FPU_SH4_300"
+ "fabs %0"
+ [(set_attr "type" "fmove")])
+
++(define_insn "abssf2_fpscr"
++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
++ (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))
++ (use (reg:SI FPSCR_MODES_REG))]
++ "TARGET_FPU_SH4_300"
++ "fabs %0"
++ [(set_attr "type" "fmove")
++ (set_attr "fp_mode" "single")])
++
+ (define_expand "adddf3"
+ [(set (match_operand:DF 0 "fp_arith_reg_operand" "")
+ (plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "")
+@@ -9673,12 +9705,28 @@
+ (define_expand "negdf2"
+ [(set (match_operand:DF 0 "fp_arith_reg_operand")
+ (neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
+- "TARGET_FPU_DOUBLE")
++ "TARGET_FPU_DOUBLE"
++{
++ if (TARGET_FPU_SH4_300)
++ emit_insn (gen_negdf2_fpscr (operands[0], operands[1]));
++ else
++ emit_insn (gen_negdf2_no_fpscr (operands[0], operands[1]));
++ DONE;
++})
--#ifndef __3dNOW__
-+#if defined __x86_64__ && !defined __SSE__ || !defined __3dNOW__
- #pragma GCC push_options
-+#ifdef __x86_64__
-+#pragma GCC target("sse,3dnow")
-+#else
- #pragma GCC target("3dnow")
-+#endif
- #define __DISABLE_3dNOW__
- #endif /* __3dNOW__ */
+-(define_insn "*negdf2_i"
++(define_insn "negdf2_fpscr"
+ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
++ (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))
++ (use (reg:SI FPSCR_MODES_REG))]
++ "TARGET_FPU_SH4_300"
++ "fneg %0"
++ [(set_attr "type" "fmove")
++ (set_attr "fp_mode" "double")])
++
++(define_insn "negdf2_no_fpscr"
++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
+ (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
+- "TARGET_FPU_DOUBLE"
++ "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300"
+ "fneg %0"
+ [(set_attr "type" "fmove")])
+
+@@ -9704,15 +9752,31 @@
+ (define_expand "absdf2"
+ [(set (match_operand:DF 0 "fp_arith_reg_operand")
+ (abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))]
+- "TARGET_FPU_DOUBLE")
++ "TARGET_FPU_DOUBLE"
++{
++ if (TARGET_FPU_SH4_300)
++ emit_insn (gen_absdf2_fpscr (operands[0], operands[1]));
++ else
++ emit_insn (gen_absdf2_no_fpscr (operands[0], operands[1]));
++ DONE;
++})
-Index: gcc/config/i386/sse.md
+-(define_insn "*absdf2_i"
++(define_insn "absdf2_no_fpscr"
+ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
+ (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))]
+- "TARGET_FPU_DOUBLE"
++ "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300"
+ "fabs %0"
+ [(set_attr "type" "fmove")])
+
++(define_insn "absdf2_fpscr"
++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f")
++ (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))
++ (use (reg:SI FPSCR_MODES_REG))]
++ "TARGET_FPU_SH4_300"
++ "fabs %0"
++ [(set_attr "type" "fmove")
++ (set_attr "fp_mode" "double")])
++
+ (define_expand "extendsfdf2"
+ [(set (match_operand:DF 0 "fp_arith_reg_operand" "")
+ (float_extend:DF (match_operand:SF 1 "fpul_operand" "")))]
+Index: gcc/config/avr/avr.c
+===================================================================
+--- a/src/gcc/config/avr/avr.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/avr/avr.c (.../branches/gcc-9-branch)
+@@ -3797,13 +3797,14 @@
+ gcc_unreachable();
+
+ case 1:
+- return avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
++ avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
++ break;
+
+ case 2:
+ if (REGNO (dest) == REG_Z)
+- return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
+- "%4lpm %B0,%a2" CR_TAB
+- "mov %A0,%5", xop, plen, 3);
++ avr_asm_len ("%4lpm %5,%a2+" CR_TAB
++ "%4lpm %B0,%a2" CR_TAB
++ "mov %A0,%5", xop, plen, 3);
+ else
+ {
+ avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
+@@ -3832,9 +3833,9 @@
+ "%4lpm %B0,%a2+", xop, plen, 2);
+
+ if (REGNO (dest) == REG_Z - 2)
+- return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
+- "%4lpm %C0,%a2" CR_TAB
+- "mov %D0,%5", xop, plen, 3);
++ avr_asm_len ("%4lpm %5,%a2+" CR_TAB
++ "%4lpm %C0,%a2" CR_TAB
++ "mov %D0,%5", xop, plen, 3);
+ else
+ {
+ avr_asm_len ("%4lpm %C0,%a2+" CR_TAB
+Index: gcc/config/xtensa/xtensa.c
===================================================================
---- a/src/gcc/config/i386/sse.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/sse.md (.../branches/gcc-6-branch)
-@@ -10485,7 +10485,7 @@
- [(set (match_operand:VI24_AVX2 0 "register_operand" "=x,x")
- (ashiftrt:VI24_AVX2
- (match_operand:VI24_AVX2 1 "register_operand" "0,x")
-- (match_operand:SI 2 "nonmemory_operand" "xN,xN")))]
-+ (match_operand:DI 2 "nonmemory_operand" "xN,xN")))]
- "TARGET_SSE2"
+--- a/src/gcc/config/xtensa/xtensa.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/xtensa/xtensa.c (.../branches/gcc-9-branch)
+@@ -2865,7 +2865,8 @@
+ gen_rtx_SET (mem, reg));
+ }
+ }
+- if (total_size > 1024)
++ if (total_size > 1024
++ || (!callee_save_size && total_size > 128))
+ {
+ rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
+ emit_move_insn (tmp_reg, GEN_INT (total_size -
+Index: gcc/config/riscv/riscv.md
+===================================================================
+--- a/src/gcc/config/riscv/riscv.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/riscv/riscv.md (.../branches/gcc-9-branch)
+@@ -1051,7 +1051,9 @@
"@
- psra<ssemodesuffix>\t{%2, %0|%0, %2}
-@@ -10504,7 +10504,7 @@
- [(set (match_operand:VI24_AVX512BW_1 0 "register_operand" "=v,v")
- (ashiftrt:VI24_AVX512BW_1
- (match_operand:VI24_AVX512BW_1 1 "nonimmediate_operand" "v,vm")
-- (match_operand:SI 2 "nonmemory_operand" "v,N")))]
-+ (match_operand:DI 2 "nonmemory_operand" "v,N")))]
- "TARGET_AVX512VL"
- "vpsra<ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
- [(set_attr "type" "sseishft")
-@@ -10532,7 +10532,7 @@
- [(set (match_operand:VI248_AVX512BW_AVX512VL 0 "register_operand" "=v,v")
- (ashiftrt:VI248_AVX512BW_AVX512VL
- (match_operand:VI248_AVX512BW_AVX512VL 1 "nonimmediate_operand" "v,vm")
-- (match_operand:SI 2 "nonmemory_operand" "v,N")))]
-+ (match_operand:DI 2 "nonmemory_operand" "v,N")))]
- "TARGET_AVX512F"
- "vpsra<ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
- [(set_attr "type" "sseishft")
-@@ -10546,7 +10546,7 @@
- [(set (match_operand:VI2_AVX2_AVX512BW 0 "register_operand" "=x,v")
- (any_lshift:VI2_AVX2_AVX512BW
- (match_operand:VI2_AVX2_AVX512BW 1 "register_operand" "0,v")
-- (match_operand:SI 2 "nonmemory_operand" "xN,vN")))]
-+ (match_operand:DI 2 "nonmemory_operand" "xN,vN")))]
- "TARGET_SSE2 && <mask_mode512bit_condition> && <mask_avx512bw_condition>"
+ #
+ lwu\t%0,%1"
+- "&& reload_completed && REG_P (operands[1])"
++ "&& reload_completed
++ && REG_P (operands[1])
++ && !paradoxical_subreg_p (operands[0])"
+ [(set (match_dup 0)
+ (ashift:DI (match_dup 1) (const_int 32)))
+ (set (match_dup 0)
+@@ -1068,7 +1070,9 @@
"@
- p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
-@@ -10565,7 +10565,7 @@
- [(set (match_operand:VI48_AVX2 0 "register_operand" "=x,x,v")
- (any_lshift:VI48_AVX2
- (match_operand:VI48_AVX2 1 "register_operand" "0,x,v")
-- (match_operand:SI 2 "nonmemory_operand" "xN,xN,vN")))]
-+ (match_operand:DI 2 "nonmemory_operand" "xN,xN,vN")))]
- "TARGET_SSE2 && <mask_mode512bit_condition>"
+ #
+ lhu\t%0,%1"
+- "&& reload_completed && REG_P (operands[1])"
++ "&& reload_completed
++ && REG_P (operands[1])
++ && !paradoxical_subreg_p (operands[0])"
+ [(set (match_dup 0)
+ (ashift:GPR (match_dup 1) (match_dup 2)))
+ (set (match_dup 0)
+@@ -1117,7 +1121,9 @@
"@
- p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
-@@ -10585,7 +10585,7 @@
- [(set (match_operand:VI48_512 0 "register_operand" "=v,v")
- (any_lshift:VI48_512
- (match_operand:VI48_512 1 "nonimmediate_operand" "v,m")
-- (match_operand:SI 2 "nonmemory_operand" "vN,N")))]
-+ (match_operand:DI 2 "nonmemory_operand" "vN,N")))]
- "TARGET_AVX512F && <mask_mode512bit_condition>"
- "vp<vshift><ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
- [(set_attr "isa" "avx512f")
-@@ -10728,7 +10728,7 @@
- "TARGET_AVX512F"
- "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);")
-
--(define_insn "*avx512bw_<code><mode>3<mask_name>"
-+(define_insn "*avx512f_<code><mode>3<mask_name>"
- [(set (match_operand:VI48_AVX512VL 0 "register_operand" "=v")
- (maxmin:VI48_AVX512VL
- (match_operand:VI48_AVX512VL 1 "nonimmediate_operand" "%v")
-@@ -10752,10 +10752,10 @@
- (set_attr "mode" "<sseinsnmode>")])
-
- (define_expand "<code><mode>3"
-- [(set (match_operand:VI8_AVX2_AVX512BW 0 "register_operand")
-- (maxmin:VI8_AVX2_AVX512BW
-- (match_operand:VI8_AVX2_AVX512BW 1 "register_operand")
-- (match_operand:VI8_AVX2_AVX512BW 2 "register_operand")))]
-+ [(set (match_operand:VI8_AVX2_AVX512F 0 "register_operand")
-+ (maxmin:VI8_AVX2_AVX512F
-+ (match_operand:VI8_AVX2_AVX512F 1 "register_operand")
-+ (match_operand:VI8_AVX2_AVX512F 2 "register_operand")))]
- "TARGET_SSE4_2"
- {
- if (TARGET_AVX512F
-Index: gcc/config/i386/i386-builtin-types.def
-===================================================================
---- a/src/gcc/config/i386/i386-builtin-types.def (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/i386-builtin-types.def (.../branches/gcc-6-branch)
-@@ -969,73 +969,73 @@
- DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4DI, V4SI, INT)
- DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V4DI, V8SI, INT)
-
--DEF_FUNCTION_TYPE (V16SF, V16SF, PCFLOAT, V16SI, HI, INT)
- DEF_FUNCTION_TYPE (V16SF, V16SF, PCFLOAT, V8DI, HI, INT)
--DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V8SI, QI, INT)
- DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V16SI, QI, INT)
--DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V8DI, QI, INT)
--DEF_FUNCTION_TYPE (V8DF, V8DF, PCDOUBLE, V8DI, QI, INT)
--DEF_FUNCTION_TYPE (V16SI, V16SI, PCINT, V16SI, HI, INT)
- DEF_FUNCTION_TYPE (V16SI, V16SI, PCINT, V8DI, HI, INT)
--DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V8SI, QI, INT)
- DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V16SI, QI, INT)
--DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V8DI, QI, INT)
--DEF_FUNCTION_TYPE (V8DI, V8DI, PCINT64, V8DI, QI, INT)
--DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE, V4SI, QI, INT)
--DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V4SI, QI, INT)
- DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V8SI, QI, INT)
--DEF_FUNCTION_TYPE (V2DF, V2DF, PCDOUBLE, V2DI, QI, INT)
--DEF_FUNCTION_TYPE (V4DF, V4DF, PCDOUBLE, V4DI, QI, INT)
--DEF_FUNCTION_TYPE (V4SF, V4SF, PCFLOAT, V4SI, QI, INT)
--DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V8SI, QI, INT)
--DEF_FUNCTION_TYPE (V4SF, V4SF, PCFLOAT, V2DI, QI, INT)
--DEF_FUNCTION_TYPE (V4SF, V4SF, PCFLOAT, V4DI, QI, INT)
- DEF_FUNCTION_TYPE (V8SF, V8SF, PCFLOAT, V4DI, QI, INT)
--DEF_FUNCTION_TYPE (V2DI, V2DI, PCINT64, V4SI, QI, INT)
--DEF_FUNCTION_TYPE (V4DI, V4DI, PCINT64, V4SI, QI, INT)
- DEF_FUNCTION_TYPE (V4DI, V4DI, PCINT64, V8SI, QI, INT)
--DEF_FUNCTION_TYPE (V2DI, V2DI, PCINT64, V2DI, QI, INT)
--DEF_FUNCTION_TYPE (V4DI, V4DI, PCINT64, V4DI, QI, INT)
--DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4SI, QI, INT)
--DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V8SI, QI, INT)
--DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V2DI, QI, INT)
--DEF_FUNCTION_TYPE (V4SI, V4SI, PCINT, V4DI, QI, INT)
- DEF_FUNCTION_TYPE (V8SI, V8SI, PCINT, V4DI, QI, INT)
-
--DEF_FUNCTION_TYPE (VOID, PFLOAT, HI, V16SI, V16SF, INT)
--DEF_FUNCTION_TYPE (VOID, PFLOAT, QI, V8SI, V8SF, INT)
--DEF_FUNCTION_TYPE (VOID, PFLOAT, QI, V4SI, V4SF, INT)
--DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V8SI, V8DF, INT)
--DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V4SI, V4DF, INT)
--DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V4SI, V2DF, INT)
--DEF_FUNCTION_TYPE (VOID, PFLOAT, QI, V8DI, V8SF, INT)
--DEF_FUNCTION_TYPE (VOID, PFLOAT, QI, V4DI, V4SF, INT)
--DEF_FUNCTION_TYPE (VOID, PFLOAT, QI, V2DI, V4SF, INT)
--DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V8DI, V8DF, INT)
--DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V4DI, V4DF, INT)
--DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V2DI, V2DF, INT)
--DEF_FUNCTION_TYPE (VOID, PINT, HI, V16SI, V16SI, INT)
--DEF_FUNCTION_TYPE (VOID, PINT, QI, V8SI, V8SI, INT)
--DEF_FUNCTION_TYPE (VOID, PINT, QI, V4SI, V4SI, INT)
--DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8SI, V8DI, INT)
--DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V4SI, V4DI, INT)
--DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V4SI, V2DI, INT)
--DEF_FUNCTION_TYPE (VOID, PINT, QI, V8DI, V8SI, INT)
--DEF_FUNCTION_TYPE (VOID, PINT, QI, V4DI, V4SI, INT)
--DEF_FUNCTION_TYPE (VOID, PINT, QI, V2DI, V4SI, INT)
--DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8DI, V8DI, INT)
- DEF_FUNCTION_TYPE (VOID, PFLOAT, HI, V8DI, V16SF, INT)
- DEF_FUNCTION_TYPE (VOID, PDOUBLE, QI, V16SI, V8DF, INT)
- DEF_FUNCTION_TYPE (VOID, PINT, HI, V8DI, V16SI, INT)
- DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V16SI, V8DI, INT)
-
--DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCINT64, INT, INT)
--DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V4DI, V4DI, INT)
--DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V2DI, V2DI, INT)
--DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCINT, INT, INT)
--DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT64, INT, INT)
--DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT, INT, INT)
-
-+DEF_FUNCTION_TYPE (V16SF, V16SF, PCVOID, V16SI, HI, INT)
-+DEF_FUNCTION_TYPE (V8DF, V8DF, PCVOID, V8SI, QI, INT)
-+DEF_FUNCTION_TYPE (V8SF, V8SF, PCVOID, V8DI, QI, INT)
-+DEF_FUNCTION_TYPE (V8DF, V8DF, PCVOID, V8DI, QI, INT)
-+DEF_FUNCTION_TYPE (V16SI, V16SI, PCVOID, V16SI, HI, INT)
-+DEF_FUNCTION_TYPE (V8DI, V8DI, PCVOID, V8SI, QI, INT)
-+DEF_FUNCTION_TYPE (V8SI, V8SI, PCVOID, V8DI, QI, INT)
-+DEF_FUNCTION_TYPE (V8DI, V8DI, PCVOID, V8DI, QI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, HI, V16SI, V16SF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8DF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8SF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8DF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, HI, V16SI, V16SI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8DI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8SI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8DI, V8DI, INT)
-+DEF_FUNCTION_TYPE (V2DF, V2DF, PCVOID, V4SI, QI, INT)
-+DEF_FUNCTION_TYPE (V4DF, V4DF, PCVOID, V4SI, QI, INT)
-+DEF_FUNCTION_TYPE (V2DF, V2DF, PCVOID, V2DI, QI, INT)
-+DEF_FUNCTION_TYPE (V4DF, V4DF, PCVOID, V4DI, QI, INT)
-+DEF_FUNCTION_TYPE (V4SF, V4SF, PCVOID, V4SI, QI, INT)
-+DEF_FUNCTION_TYPE (V8SF, V8SF, PCVOID, V8SI, QI, INT)
-+DEF_FUNCTION_TYPE (V4SF, V4SF, PCVOID, V2DI, QI, INT)
-+DEF_FUNCTION_TYPE (V4SF, V4SF, PCVOID, V4DI, QI, INT)
-+DEF_FUNCTION_TYPE (V2DI, V2DI, PCVOID, V4SI, QI, INT)
-+DEF_FUNCTION_TYPE (V4DI, V4DI, PCVOID, V4SI, QI, INT)
-+DEF_FUNCTION_TYPE (V2DI, V2DI, PCVOID, V2DI, QI, INT)
-+DEF_FUNCTION_TYPE (V4DI, V4DI, PCVOID, V4DI, QI, INT)
-+DEF_FUNCTION_TYPE (V4SI, V4SI, PCVOID, V4SI, QI, INT)
-+DEF_FUNCTION_TYPE (V8SI, V8SI, PCVOID, V8SI, QI, INT)
-+DEF_FUNCTION_TYPE (V4SI, V4SI, PCVOID, V2DI, QI, INT)
-+DEF_FUNCTION_TYPE (V4SI, V4SI, PCVOID, V4DI, QI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8SF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4SF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4DF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V2DF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4SF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V4SF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4DF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V2DF, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V8SI, V8SI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4SI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V4DI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4SI, V2DI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4SI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V4SI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4DI, INT)
-+DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V2DI, INT)
-+DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCVOID, INT, INT)
-+DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCVOID, INT, INT)
-+DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCVOID, INT, INT)
-+
- DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND)
- DEF_FUNCTION_TYPE_ALIAS (V4DF_FTYPE_V4DF, ROUND)
- DEF_FUNCTION_TYPE_ALIAS (V8DF_FTYPE_V8DF, ROUND)
-Index: gcc/config/i386/avx512fintrin.h
-===================================================================
---- a/src/gcc/config/i386/avx512fintrin.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/avx512fintrin.h (.../branches/gcc-6-branch)
-@@ -9209,7 +9209,7 @@
- #ifdef __OPTIMIZE__
- extern __inline __m512
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32gather_ps (__m512i __index, float const *__addr, int __scale)
-+_mm512_i32gather_ps (__m512i __index, void const *__addr, int __scale)
- {
- __m512 v1_old = _mm512_undefined_ps ();
- __mmask16 mask = 0xFFFF;
-@@ -9223,7 +9223,7 @@
- extern __inline __m512
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i32gather_ps (__m512 v1_old, __mmask16 __mask,
-- __m512i __index, float const *__addr, int __scale)
-+ __m512i __index, void const *__addr, int __scale)
- {
- return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
- __addr,
-@@ -9233,7 +9233,7 @@
-
- extern __inline __m512d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32gather_pd (__m256i __index, double const *__addr, int __scale)
-+_mm512_i32gather_pd (__m256i __index, void const *__addr, int __scale)
- {
- __m512d v1_old = _mm512_undefined_pd ();
- __mmask8 mask = 0xFF;
-@@ -9247,7 +9247,7 @@
- extern __inline __m512d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i32gather_pd (__m512d __v1_old, __mmask8 __mask,
-- __m256i __index, double const *__addr, int __scale)
-+ __m256i __index, void const *__addr, int __scale)
- {
- return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
- __addr,
-@@ -9257,7 +9257,7 @@
-
- extern __inline __m256
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64gather_ps (__m512i __index, float const *__addr, int __scale)
-+_mm512_i64gather_ps (__m512i __index, void const *__addr, int __scale)
+ #
+ l<SHORT:size>\t%0,%1"
+- "&& reload_completed && REG_P (operands[1])"
++ "&& reload_completed
++ && REG_P (operands[1])
++ && !paradoxical_subreg_p (operands[0])"
+ [(set (match_dup 0) (ashift:SI (match_dup 1) (match_dup 2)))
+ (set (match_dup 0) (ashiftrt:SI (match_dup 0) (match_dup 2)))]
{
- __m256 v1_old = _mm256_undefined_ps ();
- __mmask8 mask = 0xFF;
-@@ -9271,7 +9271,7 @@
- extern __inline __m256
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i64gather_ps (__m256 __v1_old, __mmask8 __mask,
-- __m512i __index, float const *__addr, int __scale)
-+ __m512i __index, void const *__addr, int __scale)
- {
- return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
- __addr,
-@@ -9281,7 +9281,7 @@
-
- extern __inline __m512d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64gather_pd (__m512i __index, double const *__addr, int __scale)
-+_mm512_i64gather_pd (__m512i __index, void const *__addr, int __scale)
- {
- __m512d v1_old = _mm512_undefined_pd ();
- __mmask8 mask = 0xFF;
-@@ -9295,7 +9295,7 @@
- extern __inline __m512d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i64gather_pd (__m512d __v1_old, __mmask8 __mask,
-- __m512i __index, double const *__addr, int __scale)
-+ __m512i __index, void const *__addr, int __scale)
+@@ -1278,7 +1284,7 @@
+ ""
+ [(const_int 0)]
{
- return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
- __addr,
-@@ -9305,7 +9305,7 @@
+- riscv_move_integer (operands[2], operands[0], INTVAL (operands[1]));
++ riscv_move_integer (operands[2], operands[0], INTVAL (operands[1]), TRUE);
+ DONE;
+ })
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32gather_epi32 (__m512i __index, int const *__addr, int __scale)
-+_mm512_i32gather_epi32 (__m512i __index, void const *__addr, int __scale)
+@@ -1287,11 +1293,11 @@
+ [(set (match_operand:P 0 "register_operand")
+ (match_operand:P 1))
+ (clobber (match_operand:P 2 "register_operand"))]
+- "riscv_split_symbol (operands[2], operands[1], MAX_MACHINE_MODE, NULL)"
++ "riscv_split_symbol (operands[2], operands[1], MAX_MACHINE_MODE, NULL, TRUE)"
+ [(set (match_dup 0) (match_dup 3))]
{
- __m512i v1_old = _mm512_undefined_epi32 ();
- __mmask16 mask = 0xFFFF;
-@@ -9319,7 +9319,7 @@
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i32gather_epi32 (__m512i __v1_old, __mmask16 __mask,
-- __m512i __index, int const *__addr, int __scale)
-+ __m512i __index, void const *__addr, int __scale)
- {
- return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
- __addr,
-@@ -9329,7 +9329,7 @@
+ riscv_split_symbol (operands[2], operands[1],
+- MAX_MACHINE_MODE, &operands[3]);
++ MAX_MACHINE_MODE, &operands[3], TRUE);
+ })
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32gather_epi64 (__m256i __index, long long const *__addr, int __scale)
-+_mm512_i32gather_epi64 (__m256i __index, void const *__addr, int __scale)
+ ;; 64-bit integer moves
+@@ -1765,15 +1771,20 @@
+ ;; Handle AND with 2^N-1 for N from 12 to XLEN. This can be split into
+ ;; two logical shifts. Otherwise it requires 3 instructions: lui,
+ ;; xor/addi/srli, and.
++
++;; Generating a temporary for the shift output gives better combiner results;
++;; and also fixes a problem where op0 could be a paradoxical reg and shifting
++;; by amounts larger than the size of the SUBREG_REG doesn't work.
+ (define_split
+ [(set (match_operand:GPR 0 "register_operand")
+ (and:GPR (match_operand:GPR 1 "register_operand")
+- (match_operand:GPR 2 "p2m1_shift_operand")))]
++ (match_operand:GPR 2 "p2m1_shift_operand")))
++ (clobber (match_operand:GPR 3 "register_operand"))]
+ ""
+- [(set (match_dup 0)
++ [(set (match_dup 3)
+ (ashift:GPR (match_dup 1) (match_dup 2)))
+ (set (match_dup 0)
+- (lshiftrt:GPR (match_dup 0) (match_dup 2)))]
++ (lshiftrt:GPR (match_dup 3) (match_dup 2)))]
{
- __m512i v1_old = _mm512_undefined_epi32 ();
- __mmask8 mask = 0xFF;
-@@ -9343,7 +9343,7 @@
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i32gather_epi64 (__m512i __v1_old, __mmask8 __mask,
-- __m256i __index, long long const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
+ /* Op2 is a VOIDmode constant, so get the mode size from op1. */
+ operands[2] = GEN_INT (GET_MODE_BITSIZE (GET_MODE (operands[1]))
+@@ -1785,12 +1796,13 @@
+ (define_split
+ [(set (match_operand:DI 0 "register_operand")
+ (and:DI (match_operand:DI 1 "register_operand")
+- (match_operand:DI 2 "high_mask_shift_operand")))]
++ (match_operand:DI 2 "high_mask_shift_operand")))
++ (clobber (match_operand:DI 3 "register_operand"))]
+ "TARGET_64BIT"
+- [(set (match_dup 0)
++ [(set (match_dup 3)
+ (lshiftrt:DI (match_dup 1) (match_dup 2)))
+ (set (match_dup 0)
+- (ashift:DI (match_dup 0) (match_dup 2)))]
++ (ashift:DI (match_dup 3) (match_dup 2)))]
{
- return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
-@@ -9354,7 +9354,7 @@
-
- extern __inline __m256i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64gather_epi32 (__m512i __index, int const *__addr, int __scale)
-+_mm512_i64gather_epi32 (__m512i __index, void const *__addr, int __scale)
+ operands[2] = GEN_INT (ctz_hwi (INTVAL (operands[2])));
+ })
+Index: gcc/config/riscv/riscv-protos.h
+===================================================================
+--- a/src/gcc/config/riscv/riscv-protos.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/riscv/riscv-protos.h (.../branches/gcc-9-branch)
+@@ -44,10 +44,10 @@
+ extern int riscv_split_const_insns (rtx);
+ extern int riscv_load_store_insns (rtx, rtx_insn *);
+ extern rtx riscv_emit_move (rtx, rtx);
+-extern bool riscv_split_symbol (rtx, rtx, machine_mode, rtx *);
++extern bool riscv_split_symbol (rtx, rtx, machine_mode, rtx *, bool);
+ extern bool riscv_split_symbol_type (enum riscv_symbol_type);
+ extern rtx riscv_unspec_address (rtx, enum riscv_symbol_type);
+-extern void riscv_move_integer (rtx, rtx, HOST_WIDE_INT);
++extern void riscv_move_integer (rtx, rtx, HOST_WIDE_INT, bool);
+ extern bool riscv_legitimize_move (machine_mode, rtx, rtx);
+ extern rtx riscv_subword (rtx, bool);
+ extern bool riscv_split_64bit_move_p (rtx, rtx);
+Index: gcc/config/riscv/riscv.c
+===================================================================
+--- a/src/gcc/config/riscv/riscv.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/riscv/riscv.c (.../branches/gcc-9-branch)
+@@ -508,8 +508,8 @@
+ unsigned HOST_WIDE_INT hival = sext_hwi ((val - loval) >> 32, 32);
+ rtx hi = gen_reg_rtx (mode), lo = gen_reg_rtx (mode);
+
+- riscv_move_integer (hi, hi, hival);
+- riscv_move_integer (lo, lo, loval);
++ riscv_move_integer (hi, hi, hival, FALSE);
++ riscv_move_integer (lo, lo, loval, FALSE);
+
+ hi = gen_rtx_fmt_ee (ASHIFT, mode, hi, GEN_INT (32));
+ hi = force_reg (mode, hi);
+@@ -1021,9 +1021,12 @@
+ are allowed, copy it into a new register, otherwise use DEST. */
+
+ static rtx
+-riscv_force_temporary (rtx dest, rtx value)
++riscv_force_temporary (rtx dest, rtx value, bool in_splitter)
{
- __m256i v1_old = _mm256_undefined_si256 ();
- __mmask8 mask = 0xFF;
-@@ -9368,7 +9368,7 @@
- extern __inline __m256i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i64gather_epi32 (__m256i __v1_old, __mmask8 __mask,
-- __m512i __index, int const *__addr, int __scale)
-+ __m512i __index, void const *__addr, int __scale)
+- if (can_create_pseudo_p ())
++ /* We can't call gen_reg_rtx from a splitter, because this might realloc
++ the regno_reg_rtx array, which would invalidate reg rtx pointers in the
++ combine undo buffer. */
++ if (can_create_pseudo_p () && !in_splitter)
+ return force_reg (Pmode, value);
+ else
+ {
+@@ -1082,7 +1085,7 @@
+ riscv_unspec_offset_high (rtx temp, rtx addr, enum riscv_symbol_type symbol_type)
{
- return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
- __addr,
-@@ -9378,7 +9378,7 @@
+ addr = gen_rtx_HIGH (Pmode, riscv_unspec_address (addr, symbol_type));
+- return riscv_force_temporary (temp, addr);
++ return riscv_force_temporary (temp, addr, FALSE);
+ }
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64gather_epi64 (__m512i __index, long long const *__addr, int __scale)
-+_mm512_i64gather_epi64 (__m512i __index, void const *__addr, int __scale)
- {
- __m512i v1_old = _mm512_undefined_epi32 ();
- __mmask8 mask = 0xFF;
-@@ -9392,7 +9392,7 @@
- extern __inline __m512i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm512_mask_i64gather_epi64 (__m512i __v1_old, __mmask8 __mask,
-- __m512i __index, long long const *__addr,
-+ __m512i __index, void const *__addr,
- int __scale)
- {
- return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
-@@ -9403,7 +9403,7 @@
+ /* Load an entry from the GOT for a TLS GD access. */
+@@ -1130,7 +1133,8 @@
+ is guaranteed to be a legitimate address for mode MODE. */
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32scatter_ps (float *__addr, __m512i __index, __m512 __v1, int __scale)
-+_mm512_i32scatter_ps (void *__addr, __m512i __index, __m512 __v1, int __scale)
+ bool
+-riscv_split_symbol (rtx temp, rtx addr, machine_mode mode, rtx *low_out)
++riscv_split_symbol (rtx temp, rtx addr, machine_mode mode, rtx *low_out,
++ bool in_splitter)
{
- __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
- (__v16si) __index, (__v16sf) __v1, __scale);
-@@ -9411,7 +9411,7 @@
+ enum riscv_symbol_type symbol_type;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i32scatter_ps (float *__addr, __mmask16 __mask,
-+_mm512_mask_i32scatter_ps (void *__addr, __mmask16 __mask,
- __m512i __index, __m512 __v1, int __scale)
- {
- __builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,
-@@ -9420,7 +9420,7 @@
+@@ -1146,7 +1150,7 @@
+ case SYMBOL_ABSOLUTE:
+ {
+ rtx high = gen_rtx_HIGH (Pmode, copy_rtx (addr));
+- high = riscv_force_temporary (temp, high);
++ high = riscv_force_temporary (temp, high, in_splitter);
+ *low_out = gen_rtx_LO_SUM (Pmode, high, addr);
+ }
+ break;
+@@ -1205,8 +1209,9 @@
+ overflow, so we need to force a sign-extension check. */
+ high = gen_int_mode (CONST_HIGH_PART (offset), Pmode);
+ offset = CONST_LOW_PART (offset);
+- high = riscv_force_temporary (temp, high);
+- reg = riscv_force_temporary (temp, gen_rtx_PLUS (Pmode, high, reg));
++ high = riscv_force_temporary (temp, high, FALSE);
++ reg = riscv_force_temporary (temp, gen_rtx_PLUS (Pmode, high, reg),
++ FALSE);
+ }
+ return plus_constant (Pmode, reg, offset);
+ }
+@@ -1315,7 +1320,7 @@
+ return riscv_legitimize_tls_address (x);
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32scatter_pd (double *__addr, __m256i __index, __m512d __v1,
-+_mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1,
- int __scale)
- {
- __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF,
-@@ -9429,7 +9429,7 @@
+ /* See if the address can split into a high part and a LO_SUM. */
+- if (riscv_split_symbol (NULL, x, mode, &addr))
++ if (riscv_split_symbol (NULL, x, mode, &addr, FALSE))
+ return riscv_force_address (addr, mode);
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
-+_mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
- __m256i __index, __m512d __v1, int __scale)
- {
- __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,
-@@ -9438,7 +9438,7 @@
+ /* Handle BASE + OFFSET using riscv_add_offset. */
+@@ -1337,7 +1342,8 @@
+ /* Load VALUE into DEST. TEMP is as for riscv_force_temporary. */
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64scatter_ps (float *__addr, __m512i __index, __m256 __v1, int __scale)
-+_mm512_i64scatter_ps (void *__addr, __m512i __index, __m256 __v1, int __scale)
+ void
+-riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value)
++riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value,
++ bool in_splitter)
{
- __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
- (__v8di) __index, (__v8sf) __v1, __scale);
-@@ -9446,7 +9446,7 @@
+ struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS];
+ machine_mode mode;
+@@ -1344,10 +1350,15 @@
+ int i, num_ops;
+ rtx x;
+
++ /* We can't call gen_reg_rtx from a splitter, because this might realloc
++ the regno_reg_rtx array, which would invalidate reg rtx pointers in the
++ combine undo buffer. */
++ bool can_create_pseudo = can_create_pseudo_p () && ! in_splitter;
++
+ mode = GET_MODE (dest);
+ num_ops = riscv_build_integer (codes, value, mode);
+
+- if (can_create_pseudo_p () && num_ops > 2 /* not a simple constant */
++ if (can_create_pseudo && num_ops > 2 /* not a simple constant */
+ && num_ops >= riscv_split_integer_cost (value))
+ x = riscv_split_integer (value, mode);
+ else
+@@ -1357,7 +1368,7 @@
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
-+_mm512_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
- __m512i __index, __m256 __v1, int __scale)
- {
- __builtin_ia32_scatterdiv16sf (__addr, __mask, (__v8di) __index,
-@@ -9455,7 +9455,7 @@
+ for (i = 1; i < num_ops; i++)
+ {
+- if (!can_create_pseudo_p ())
++ if (!can_create_pseudo)
+ x = riscv_emit_set (temp, x);
+ else
+ x = force_reg (mode, x);
+@@ -1381,12 +1392,12 @@
+ /* Split moves of big integers into smaller pieces. */
+ if (splittable_const_int_operand (src, mode))
+ {
+- riscv_move_integer (dest, dest, INTVAL (src));
++ riscv_move_integer (dest, dest, INTVAL (src), FALSE);
+ return;
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64scatter_pd (double *__addr, __m512i __index, __m512d __v1,
-+_mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1,
- int __scale)
- {
- __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF,
-@@ -9464,7 +9464,7 @@
+ /* Split moves of symbolic constants into high/low pairs. */
+- if (riscv_split_symbol (dest, src, MAX_MACHINE_MODE, &src))
++ if (riscv_split_symbol (dest, src, MAX_MACHINE_MODE, &src, FALSE))
+ {
+ riscv_emit_set (dest, src);
+ return;
+@@ -1407,7 +1418,7 @@
+ if (offset != const0_rtx
+ && (targetm.cannot_force_const_mem (mode, src) || can_create_pseudo_p ()))
+ {
+- base = riscv_force_temporary (dest, base);
++ base = riscv_force_temporary (dest, base, FALSE);
+ riscv_emit_move (dest, riscv_add_offset (NULL, base, INTVAL (offset)));
+ return;
+ }
+@@ -1416,7 +1427,7 @@
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
-+_mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
- __m512i __index, __m512d __v1, int __scale)
- {
- __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,
-@@ -9473,7 +9473,7 @@
+ /* When using explicit relocs, constant pool references are sometimes
+ not legitimate addresses. */
+- riscv_split_symbol (dest, XEXP (src, 0), mode, &XEXP (src, 0));
++ riscv_split_symbol (dest, XEXP (src, 0), mode, &XEXP (src, 0), FALSE);
+ riscv_emit_move (dest, src);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32scatter_epi32 (int *__addr, __m512i __index,
-+_mm512_i32scatter_epi32 (void *__addr, __m512i __index,
- __m512i __v1, int __scale)
- {
- __builtin_ia32_scattersiv16si (__addr, (__mmask16) 0xFFFF,
-@@ -9482,7 +9482,7 @@
+Index: gcc/config/aarch64/aarch64.md
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-9-branch)
+@@ -1059,8 +1059,8 @@
+ (match_operand:GPI 1 "general_operand" ""))]
+ ""
+ "
+- if (MEM_P (operands[0]) && CONST_INT_P (operands[1])
+- && <MODE>mode == DImode
++ if (MEM_P (operands[0]) && !MEM_VOLATILE_P (operands[0])
++ && CONST_INT_P (operands[1]) && <MODE>mode == DImode
+ && aarch64_split_dimode_const_store (operands[0], operands[1]))
+ DONE;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i32scatter_epi32 (int *__addr, __mmask16 __mask,
-+_mm512_mask_i32scatter_epi32 (void *__addr, __mmask16 __mask,
- __m512i __index, __m512i __v1, int __scale)
+@@ -6304,7 +6304,7 @@
+ [(match_operand:GPI 0 "register_operand")
+ (match_operand:GPF 1 "register_operand")]
+ "TARGET_FLOAT
+- && ((GET_MODE_SIZE (<GPF:MODE>mode) <= GET_MODE_SIZE (<GPI:MODE>mode))
++ && ((GET_MODE_BITSIZE (<GPF:MODE>mode) <= LONG_TYPE_SIZE)
+ || !flag_trapping_math || flag_fp_int_builtin_inexact)"
{
- __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
-@@ -9491,7 +9491,7 @@
+ rtx cvt = gen_reg_rtx (<GPF:MODE>mode);
+Index: gcc/config/aarch64/aarch64.opt
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64.opt (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/aarch64/aarch64.opt (.../branches/gcc-9-branch)
+@@ -119,15 +119,15 @@
+ Enum(aarch64_tls_size) String(48) Value(48)
+
+ march=
+-Target RejectNegative ToLower Joined Var(aarch64_arch_string)
++Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string)
+ Use features of architecture ARCH.
+
+ mcpu=
+-Target RejectNegative ToLower Joined Var(aarch64_cpu_string)
++Target RejectNegative Negative(mcpu=) ToLower Joined Var(aarch64_cpu_string)
+ Use features of and optimize for CPU.
+
+ mtune=
+-Target RejectNegative ToLower Joined Var(aarch64_tune_string)
++Target RejectNegative Negative(mtune=) ToLower Joined Var(aarch64_tune_string)
+ Optimize for CPU.
+
+ mabi=
+Index: gcc/config/aarch64/aarch64.c
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-9-branch)
+@@ -18162,19 +18162,21 @@
+ /* Sort the operands. */
+ qsort (temp_operands, 4, 2 * sizeof (rtx *), aarch64_ldrstr_offset_compare);
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i32scatter_epi64 (long long *__addr, __m256i __index,
-+_mm512_i32scatter_epi64 (void *__addr, __m256i __index,
- __m512i __v1, int __scale)
- {
- __builtin_ia32_scattersiv8di (__addr, (__mmask8) 0xFF,
-@@ -9500,7 +9500,7 @@
++ /* Copy the memory operands so that if we have to bail for some
++ reason the original addresses are unchanged. */
+ if (load)
+ {
+- mem_1 = temp_operands[1];
+- mem_2 = temp_operands[3];
+- mem_3 = temp_operands[5];
+- mem_4 = temp_operands[7];
++ mem_1 = copy_rtx (temp_operands[1]);
++ mem_2 = copy_rtx (temp_operands[3]);
++ mem_3 = copy_rtx (temp_operands[5]);
++ mem_4 = copy_rtx (temp_operands[7]);
+ }
+ else
+ {
+- mem_1 = temp_operands[0];
+- mem_2 = temp_operands[2];
+- mem_3 = temp_operands[4];
+- mem_4 = temp_operands[6];
++ mem_1 = copy_rtx (temp_operands[0]);
++ mem_2 = copy_rtx (temp_operands[2]);
++ mem_3 = copy_rtx (temp_operands[4]);
++ mem_4 = copy_rtx (temp_operands[6]);
+ gcc_assert (code == UNKNOWN);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
-+_mm512_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
- __m256i __index, __m512i __v1, int __scale)
- {
- __builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,
-@@ -9509,7 +9509,7 @@
+Index: gcc/config/rs6000/darwin.md
+===================================================================
+--- a/src/gcc/config/rs6000/darwin.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/darwin.md (.../branches/gcc-9-branch)
+@@ -122,34 +122,7 @@
+ [(set_attr "type" "store")])
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64scatter_epi32 (int *__addr, __m512i __index,
-+_mm512_i64scatter_epi32 (void *__addr, __m512i __index,
- __m256i __v1, int __scale)
- {
- __builtin_ia32_scatterdiv16si (__addr, (__mmask8) 0xFF,
-@@ -9518,7 +9518,7 @@
+ ;; 64-bit MachO load/store support
+-(define_insn "movdi_low"
+- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,*!d")
+- (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b")
+- (match_operand 2 "" ""))))]
+- "TARGET_MACHO && TARGET_64BIT"
+- "@
+- ld %0,lo16(%2)(%1)
+- lfd %0,lo16(%2)(%1)"
+- [(set_attr "type" "load")])
+
+-(define_insn "movsi_low_st"
+- [(set (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
+- (match_operand 2 "" "")))
+- (match_operand:SI 0 "gpc_reg_operand" "r"))]
+- "TARGET_MACHO && ! TARGET_64BIT"
+- "stw %0,lo16(%2)(%1)"
+- [(set_attr "type" "store")])
+-
+-(define_insn "movdi_low_st"
+- [(set (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b")
+- (match_operand 2 "" "")))
+- (match_operand:DI 0 "gpc_reg_operand" "r,*!d"))]
+- "TARGET_MACHO && TARGET_64BIT"
+- "@
+- std %0,lo16(%2)(%1)
+- stfd %0,lo16(%2)(%1)"
+- [(set_attr "type" "store")])
+-
+ ;; Mach-O PIC trickery.
+ (define_expand "macho_high"
+ [(set (match_operand 0 "")
+Index: gcc/config/rs6000/rs6000-builtin.def
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000-builtin.def (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/rs6000-builtin.def (.../branches/gcc-9-branch)
+@@ -1002,12 +1002,12 @@
+ BU_ALTIVEC_2 (VADDSWS, "vaddsws", CONST, altivec_vaddsws)
+ BU_ALTIVEC_2 (VAND, "vand", CONST, andv4si3)
+ BU_ALTIVEC_2 (VANDC, "vandc", CONST, andcv4si3)
+-BU_ALTIVEC_2 (VAVGUB, "vavgub", CONST, altivec_vavgub)
+-BU_ALTIVEC_2 (VAVGSB, "vavgsb", CONST, altivec_vavgsb)
+-BU_ALTIVEC_2 (VAVGUH, "vavguh", CONST, altivec_vavguh)
+-BU_ALTIVEC_2 (VAVGSH, "vavgsh", CONST, altivec_vavgsh)
+-BU_ALTIVEC_2 (VAVGUW, "vavguw", CONST, altivec_vavguw)
+-BU_ALTIVEC_2 (VAVGSW, "vavgsw", CONST, altivec_vavgsw)
++BU_ALTIVEC_2 (VAVGUB, "vavgub", CONST, uavgv16qi3_ceil)
++BU_ALTIVEC_2 (VAVGSB, "vavgsb", CONST, avgv16qi3_ceil)
++BU_ALTIVEC_2 (VAVGUH, "vavguh", CONST, uavgv8hi3_ceil)
++BU_ALTIVEC_2 (VAVGSH, "vavgsh", CONST, avgv8hi3_ceil)
++BU_ALTIVEC_2 (VAVGUW, "vavguw", CONST, uavgv4si3_ceil)
++BU_ALTIVEC_2 (VAVGSW, "vavgsw", CONST, avgv4si3_ceil)
+ BU_ALTIVEC_2 (VCFUX, "vcfux", CONST, altivec_vcfux)
+ BU_ALTIVEC_2 (VCFSX, "vcfsx", CONST, altivec_vcfsx)
+ BU_ALTIVEC_2 (VCMPBFP, "vcmpbfp", CONST, altivec_vcmpbfp)
+@@ -1177,26 +1177,26 @@
+ BU_ALTIVEC_X (MFVSCR, "mfvscr", MISC)
+ BU_ALTIVEC_X (DSSALL, "dssall", MISC)
+ BU_ALTIVEC_X (DSS, "dss", MISC)
+-BU_ALTIVEC_X (LVSL, "lvsl", MEM)
+-BU_ALTIVEC_X (LVSR, "lvsr", MEM)
+-BU_ALTIVEC_X (LVEBX, "lvebx", MEM)
+-BU_ALTIVEC_X (LVEHX, "lvehx", MEM)
+-BU_ALTIVEC_X (LVEWX, "lvewx", MEM)
+-BU_ALTIVEC_X (LVXL, "lvxl", MEM)
+-BU_ALTIVEC_X (LVXL_V2DF, "lvxl_v2df", MEM)
+-BU_ALTIVEC_X (LVXL_V2DI, "lvxl_v2di", MEM)
+-BU_ALTIVEC_X (LVXL_V4SF, "lvxl_v4sf", MEM)
+-BU_ALTIVEC_X (LVXL_V4SI, "lvxl_v4si", MEM)
+-BU_ALTIVEC_X (LVXL_V8HI, "lvxl_v8hi", MEM)
+-BU_ALTIVEC_X (LVXL_V16QI, "lvxl_v16qi", MEM)
+-BU_ALTIVEC_X (LVX, "lvx", MEM)
+-BU_ALTIVEC_X (LVX_V1TI, "lvx_v1ti", MEM)
+-BU_ALTIVEC_X (LVX_V2DF, "lvx_v2df", MEM)
+-BU_ALTIVEC_X (LVX_V2DI, "lvx_v2di", MEM)
+-BU_ALTIVEC_X (LVX_V4SF, "lvx_v4sf", MEM)
+-BU_ALTIVEC_X (LVX_V4SI, "lvx_v4si", MEM)
+-BU_ALTIVEC_X (LVX_V8HI, "lvx_v8hi", MEM)
+-BU_ALTIVEC_X (LVX_V16QI, "lvx_v16qi", MEM)
++BU_ALTIVEC_X (LVSL, "lvsl", PURE)
++BU_ALTIVEC_X (LVSR, "lvsr", PURE)
++BU_ALTIVEC_X (LVEBX, "lvebx", PURE)
++BU_ALTIVEC_X (LVEHX, "lvehx", PURE)
++BU_ALTIVEC_X (LVEWX, "lvewx", PURE)
++BU_ALTIVEC_X (LVXL, "lvxl", PURE)
++BU_ALTIVEC_X (LVXL_V2DF, "lvxl_v2df", PURE)
++BU_ALTIVEC_X (LVXL_V2DI, "lvxl_v2di", PURE)
++BU_ALTIVEC_X (LVXL_V4SF, "lvxl_v4sf", PURE)
++BU_ALTIVEC_X (LVXL_V4SI, "lvxl_v4si", PURE)
++BU_ALTIVEC_X (LVXL_V8HI, "lvxl_v8hi", PURE)
++BU_ALTIVEC_X (LVXL_V16QI, "lvxl_v16qi", PURE)
++BU_ALTIVEC_X (LVX, "lvx", PURE)
++BU_ALTIVEC_X (LVX_V1TI, "lvx_v1ti", PURE)
++BU_ALTIVEC_X (LVX_V2DF, "lvx_v2df", PURE)
++BU_ALTIVEC_X (LVX_V2DI, "lvx_v2di", PURE)
++BU_ALTIVEC_X (LVX_V4SF, "lvx_v4sf", PURE)
++BU_ALTIVEC_X (LVX_V4SI, "lvx_v4si", PURE)
++BU_ALTIVEC_X (LVX_V8HI, "lvx_v8hi", PURE)
++BU_ALTIVEC_X (LVX_V16QI, "lvx_v16qi", PURE)
+ BU_ALTIVEC_X (STVX, "stvx", MEM)
+ BU_ALTIVEC_X (STVX_V2DF, "stvx_v2df", MEM)
+ BU_ALTIVEC_X (STVX_V2DI, "stvx_v2di", MEM)
+@@ -1204,10 +1204,10 @@
+ BU_ALTIVEC_X (STVX_V4SI, "stvx_v4si", MEM)
+ BU_ALTIVEC_X (STVX_V8HI, "stvx_v8hi", MEM)
+ BU_ALTIVEC_X (STVX_V16QI, "stvx_v16qi", MEM)
+-BU_ALTIVEC_C (LVLX, "lvlx", MEM)
+-BU_ALTIVEC_C (LVLXL, "lvlxl", MEM)
+-BU_ALTIVEC_C (LVRX, "lvrx", MEM)
+-BU_ALTIVEC_C (LVRXL, "lvrxl", MEM)
++BU_ALTIVEC_C (LVLX, "lvlx", PURE)
++BU_ALTIVEC_C (LVLXL, "lvlxl", PURE)
++BU_ALTIVEC_C (LVRX, "lvrx", PURE)
++BU_ALTIVEC_C (LVRXL, "lvrxl", PURE)
+ BU_ALTIVEC_X (STVEBX, "stvebx", MEM)
+ BU_ALTIVEC_X (STVEHX, "stvehx", MEM)
+ BU_ALTIVEC_X (STVEWX, "stvewx", MEM)
+@@ -1718,15 +1718,15 @@
+ BU_VSX_P (XVCMPGTDP_P, "xvcmpgtdp_p", CONST, vector_gt_v2df_p)
+
+ /* VSX builtins that are handled as special cases. */
+-BU_VSX_X (LXSDX, "lxsdx", MEM)
+-BU_VSX_X (LXVD2X_V1TI, "lxvd2x_v1ti", MEM)
+-BU_VSX_X (LXVD2X_V2DF, "lxvd2x_v2df", MEM)
+-BU_VSX_X (LXVD2X_V2DI, "lxvd2x_v2di", MEM)
+-BU_VSX_X (LXVDSX, "lxvdsx", MEM)
+-BU_VSX_X (LXVW4X_V4SF, "lxvw4x_v4sf", MEM)
+-BU_VSX_X (LXVW4X_V4SI, "lxvw4x_v4si", MEM)
+-BU_VSX_X (LXVW4X_V8HI, "lxvw4x_v8hi", MEM)
+-BU_VSX_X (LXVW4X_V16QI, "lxvw4x_v16qi", MEM)
++BU_VSX_X (LXSDX, "lxsdx", PURE)
++BU_VSX_X (LXVD2X_V1TI, "lxvd2x_v1ti", PURE)
++BU_VSX_X (LXVD2X_V2DF, "lxvd2x_v2df", PURE)
++BU_VSX_X (LXVD2X_V2DI, "lxvd2x_v2di", PURE)
++BU_VSX_X (LXVDSX, "lxvdsx", PURE)
++BU_VSX_X (LXVW4X_V4SF, "lxvw4x_v4sf", PURE)
++BU_VSX_X (LXVW4X_V4SI, "lxvw4x_v4si", PURE)
++BU_VSX_X (LXVW4X_V8HI, "lxvw4x_v8hi", PURE)
++BU_VSX_X (LXVW4X_V16QI, "lxvw4x_v16qi", PURE)
+ BU_VSX_X (STXSDX, "stxsdx", MEM)
+ BU_VSX_X (STXVD2X_V1TI, "stxvd2x_v1ti", MEM)
+ BU_VSX_X (STXVD2X_V2DF, "stxvd2x_v2df", MEM)
+@@ -1735,13 +1735,13 @@
+ BU_VSX_X (STXVW4X_V4SI, "stxvw4x_v4si", MEM)
+ BU_VSX_X (STXVW4X_V8HI, "stxvw4x_v8hi", MEM)
+ BU_VSX_X (STXVW4X_V16QI, "stxvw4x_v16qi", MEM)
+-BU_VSX_X (LD_ELEMREV_V1TI, "ld_elemrev_v1ti", MEM)
+-BU_VSX_X (LD_ELEMREV_V2DF, "ld_elemrev_v2df", MEM)
+-BU_VSX_X (LD_ELEMREV_V2DI, "ld_elemrev_v2di", MEM)
+-BU_VSX_X (LD_ELEMREV_V4SF, "ld_elemrev_v4sf", MEM)
+-BU_VSX_X (LD_ELEMREV_V4SI, "ld_elemrev_v4si", MEM)
+-BU_VSX_X (LD_ELEMREV_V8HI, "ld_elemrev_v8hi", MEM)
+-BU_VSX_X (LD_ELEMREV_V16QI, "ld_elemrev_v16qi", MEM)
++BU_VSX_X (LD_ELEMREV_V1TI, "ld_elemrev_v1ti", PURE)
++BU_VSX_X (LD_ELEMREV_V2DF, "ld_elemrev_v2df", PURE)
++BU_VSX_X (LD_ELEMREV_V2DI, "ld_elemrev_v2di", PURE)
++BU_VSX_X (LD_ELEMREV_V4SF, "ld_elemrev_v4sf", PURE)
++BU_VSX_X (LD_ELEMREV_V4SI, "ld_elemrev_v4si", PURE)
++BU_VSX_X (LD_ELEMREV_V8HI, "ld_elemrev_v8hi", PURE)
++BU_VSX_X (LD_ELEMREV_V16QI, "ld_elemrev_v16qi", PURE)
+ BU_VSX_X (ST_ELEMREV_V1TI, "st_elemrev_v1ti", MEM)
+ BU_VSX_X (ST_ELEMREV_V2DF, "st_elemrev_v2df", MEM)
+ BU_VSX_X (ST_ELEMREV_V2DI, "st_elemrev_v2di", MEM)
+Index: gcc/config/rs6000/rs6000-p8swap.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000-p8swap.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/rs6000-p8swap.c (.../branches/gcc-9-branch)
+@@ -791,6 +791,11 @@
+ case UNSPEC_REDUC_PLUS:
+ case UNSPEC_REDUC:
+ return 1;
++ case UNSPEC_VPMSUM:
++ /* vpmsumd is not swappable, but vpmsum[bhw] are. */
++ if (GET_MODE (op) == V2DImode)
++ return 0;
++ break;
+ }
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
-+_mm512_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
- __m512i __index, __m256i __v1, int __scale)
- {
- __builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,
-@@ -9527,7 +9527,7 @@
+Index: gcc/config/rs6000/darwin.h
+===================================================================
+--- a/src/gcc/config/rs6000/darwin.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/darwin.h (.../branches/gcc-9-branch)
+@@ -53,19 +53,28 @@
+ #define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+- if (!TARGET_64BIT) builtin_define ("__ppc__"); \
+- if (!TARGET_64BIT) builtin_define ("__PPC__"); \
+- if (TARGET_64BIT) builtin_define ("__ppc64__"); \
+- if (TARGET_64BIT) builtin_define ("__PPC64__"); \
+ builtin_define ("__POWERPC__"); \
++ builtin_define ("__PPC__"); \
++ if (TARGET_64BIT) \
++ { \
++ builtin_define ("__ppc64__"); \
++ builtin_define ("__PPC64__"); \
++ builtin_define ("__powerpc64__"); \
++ builtin_assert ("cpu=powerpc64"); \
++ builtin_assert ("machine=powerpc64"); \
++ } \
++ else \
++ { \
++ builtin_define ("__ppc__"); \
++ builtin_define_std ("PPC"); \
++ builtin_assert ("cpu=powerpc"); \
++ builtin_assert ("machine=powerpc"); \
++ } \
+ builtin_define ("__NATURAL_ALIGNMENT__"); \
+ darwin_cpp_builtins (pfile); \
+ } \
+ while (0)
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_i64scatter_epi64 (long long *__addr, __m512i __index,
-+_mm512_i64scatter_epi64 (void *__addr, __m512i __index,
- __m512i __v1, int __scale)
- {
- __builtin_ia32_scatterdiv8di (__addr, (__mmask8) 0xFF,
-@@ -9536,7 +9536,7 @@
+-/* Generate branch islands stubs if this is true. */
+-extern int darwin_emit_branch_islands;
+-
+ #define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options ()
+
+ #define C_COMMON_OVERRIDE_OPTIONS do { \
+@@ -127,10 +136,31 @@
+ %:version-compare(>< 10.5 10.7 mmacosx-version-min= -lcrt1.10.5.o) \
+ %{fgnu-tm: -lcrttms.o}"
+
+-/* crt2.o is at least partially required for 10.3.x and earlier. */
++/* crt2.o is at least partially required for 10.3.x and earlier.
++ It deals with registration of the unwind frames, where this is not
++ automatically provided by the system. So we need it for any case that
++ might use exceptions. */
++#undef DARWIN_CRT2_SPEC
+ #define DARWIN_CRT2_SPEC \
+- "%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}"
++"%{!m64:%{shared-libgcc|static-libstdc++|fexceptions|fobjc-exceptions|fgnu-runtime: \
++ %:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s) \
++ }}"
+
++/* crt3 deals with providing cxa_atexit on earlier systems (or fixing it up,
++ for broken versions). It's only needed for c++ code, so we can make it
++ conditional on shared-libgcc since that's forced on for c++. */
++#undef DARWIN_CRT3_SPEC
++#define DARWIN_CRT3_SPEC \
++"%{!m64:%{shared-libgcc|static-libstdc++: \
++ %:version-compare(>< 10.4 10.5 mmacosx-version-min= crt3.o%s) \
++ %:version-compare(!> 10.4 mmacosx-version-min= crt3_2.o%s) \
++ }}"
++
++/* The PPC regs save/restore functions are leaves and could, conceivably
++ be used by the tm destructor. */
++#undef ENDFILE_SPEC
++#define ENDFILE_SPEC TM_DESTRUCTOR " -lef_ppc"
++
+ #undef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS \
+ DARWIN_EXTRA_SPECS \
+@@ -279,9 +309,9 @@
+ /* This is supported in cctools 465 and later. The macro test
+ above prevents using it in earlier build environments. */
+ #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
+- if ((LOG) != 0) \
++ if ((LOG) > 0) \
+ { \
+- if ((MAX_SKIP) == 0) \
++ if ((MAX_SKIP) <= 0) \
+ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
+ else \
+ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
+@@ -456,6 +486,9 @@
+ this will need to be modified similar to the x86 case. */
+ #define TARGET_FOLD_BUILTIN SUBTARGET_FOLD_BUILTIN
+
++/* First available SYMBOL flag bit for use by subtargets. */
++#define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP)
++
+ /* Use standard DWARF numbering for DWARF debugging information. */
+ #define RS6000_USE_DWARF_NUMBERING
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm512_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
-+_mm512_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
- __m512i __index, __m512i __v1, int __scale)
- {
- __builtin_ia32_scatterdiv8di (__addr, __mask, (__v8di) __index,
-@@ -9545,177 +9545,177 @@
- #else
- #define _mm512_i32gather_ps(INDEX, ADDR, SCALE) \
- (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v16si)(__m512i)INDEX, \
- (__mmask16)0xFFFF, (int)SCALE)
-
- #define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD, \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v16si)(__m512i)INDEX, \
- (__mmask16)MASK, (int)SCALE)
-
- #define _mm512_i32gather_pd(INDEX, ADDR, SCALE) \
- (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(), \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8si)(__m256i)INDEX, \
- (__mmask8)0xFF, (int)SCALE)
-
- #define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD, \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8si)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm512_i64gather_ps(INDEX, ADDR, SCALE) \
- (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(), \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)0xFF, (int)SCALE)
-
- #define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD, \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm512_i64gather_pd(INDEX, ADDR, SCALE) \
- (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(), \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)0xFF, (int)SCALE)
-
- #define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD, \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm512_i32gather_epi32(INDEX, ADDR, SCALE) \
- (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_epi32 (), \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v16si)(__m512i)INDEX, \
- (__mmask16)0xFFFF, (int)SCALE)
-
- #define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD, \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v16si)(__m512i)INDEX, \
- (__mmask16)MASK, (int)SCALE)
-
- #define _mm512_i32gather_epi64(INDEX, ADDR, SCALE) \
- (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_epi32 (), \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8si)(__m256i)INDEX, \
- (__mmask8)0xFF, (int)SCALE)
-
- #define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD, \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8si)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \
- (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)0xFF, (int)SCALE)
-
- #define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD, \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm512_i64gather_epi64(INDEX, ADDR, SCALE) \
- (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_epi32 (), \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)0xFF, (int)SCALE)
-
- #define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD, \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8di)(__m512i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)0xFFFF, \
-+ __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)0xFFFF, \
- (__v16si)(__m512i)INDEX, \
- (__v16sf)(__m512)V1, (int)SCALE)
-
- #define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv16sf ((float *)ADDR, (__mmask16)MASK, \
-+ __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)MASK, \
- (__v16si)(__m512i)INDEX, \
- (__v16sf)(__m512)V1, (int)SCALE)
-
- #define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)0xFF, \
- (__v8si)(__m256i)INDEX, \
- (__v8df)(__m512d)V1, (int)SCALE)
-
- #define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8df ((double *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)MASK, \
- (__v8si)(__m256i)INDEX, \
- (__v8df)(__m512d)V1, (int)SCALE)
-
- #define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask8)0xFF, \
- (__v8di)(__m512i)INDEX, \
- (__v8sf)(__m256)V1, (int)SCALE)
-
- #define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv16sf ((float *)ADDR, (__mmask16)MASK, \
-+ __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask16)MASK, \
- (__v8di)(__m512i)INDEX, \
- (__v8sf)(__m256)V1, (int)SCALE)
-
- #define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)0xFF, \
- (__v8di)(__m512i)INDEX, \
- (__v8df)(__m512d)V1, (int)SCALE)
-
- #define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8df ((double *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)MASK, \
- (__v8di)(__m512i)INDEX, \
- (__v8df)(__m512d)V1, (int)SCALE)
-
- #define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)0xFFFF, \
-+ __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)0xFFFF, \
- (__v16si)(__m512i)INDEX, \
- (__v16si)(__m512i)V1, (int)SCALE)
-
- #define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv16si ((int *)ADDR, (__mmask16)MASK, \
-+ __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)MASK, \
- (__v16si)(__m512i)INDEX, \
- (__v16si)(__m512i)V1, (int)SCALE)
-
- #define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)0xFF, \
- (__v8si)(__m256i)INDEX, \
- (__v8di)(__m512i)V1, (int)SCALE)
-
- #define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8di ((long long *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)MASK, \
- (__v8si)(__m256i)INDEX, \
- (__v8di)(__m512i)V1, (int)SCALE)
-
- #define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)0xFF, \
- (__v8di)(__m512i)INDEX, \
- (__v8si)(__m256i)V1, (int)SCALE)
-
- #define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv16si ((int *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)MASK, \
- (__v8di)(__m512i)INDEX, \
- (__v8si)(__m256i)V1, (int)SCALE)
-
- #define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)0xFF, \
- (__v8di)(__m512i)INDEX, \
- (__v8di)(__m512i)V1, (int)SCALE)
-
- #define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8di ((long long *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)MASK, \
- (__v8di)(__m512i)INDEX, \
- (__v8di)(__m512i)V1, (int)SCALE)
- #endif
-Index: gcc/config/i386/avx512vlintrin.h
+Index: gcc/config/rs6000/rs6000.c
===================================================================
---- a/src/gcc/config/i386/avx512vlintrin.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/avx512vlintrin.h (.../branches/gcc-6-branch)
-@@ -9159,6 +9159,582 @@
- __M);
+--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-9-branch)
+@@ -7671,6 +7671,104 @@
+ return NULL_RTX;
}
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 4,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 1,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 5,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 5,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 2,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 2,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 4,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
++/* This tests that a lo_sum {constant, symbol, symbol+offset} is valid for
++ the mode. If we can't find (or don't know) the alignment of the symbol
++ we assume (optimistically) that it's sufficiently aligned [??? maybe we
++ should be pessimistic]. Offsets are validated in the same way as for
++ reg + offset. */
++static bool
++darwin_rs6000_legitimate_lo_sum_const_p (rtx x, machine_mode mode)
+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 1,
-+ (__mmask8) -1);
-+}
++ /* We should not get here with this. */
++ gcc_checking_assert (! mode_supports_dq_form (mode));
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 5,
-+ (__mmask8) __M);
-+}
++ if (GET_CODE (x) == CONST)
++ x = XEXP (x, 0);
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 5,
-+ (__mmask8) -1);
-+}
++ if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_MACHOPIC_OFFSET)
++ x = XVECEXP (x, 0, 0);
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 2,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 2,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 4,
-+ (__mmask8) __M);
-+}
++ rtx sym = NULL_RTX;
++ unsigned HOST_WIDE_INT offset = 0;
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 1,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 5,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 5,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 2,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-+ (__v8si) __Y, 2,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 4,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 1,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 5,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 5,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 2,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-+ (__v4di) __Y, 2,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 4,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 1,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 5,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 5,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 2,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 2,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 4,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 1,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 5,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 5,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 2,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 2,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 4,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 4,
-+ (__mmask8) -1);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 1,
-+ (__mmask8) __M);
-+}
-+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 1,
-+ (__mmask8) -1);
-+}
++ if (GET_CODE (x) == PLUS)
++ {
++ sym = XEXP (x, 0);
++ if (! SYMBOL_REF_P (sym))
++ return false;
++ if (!CONST_INT_P (XEXP (x, 1)))
++ return false;
++ offset = INTVAL (XEXP (x, 1));
++ }
++ else if (SYMBOL_REF_P (x))
++ sym = x;
++ else if (CONST_INT_P (x))
++ offset = INTVAL (x);
++ else if (GET_CODE (x) == LABEL_REF)
++ offset = 0; // We assume code labels are Pmode aligned
++ else
++ return false; // not sure what we have here.
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 5,
-+ (__mmask8) __M);
-+}
++ /* If we don't know the alignment of the thing to which the symbol refers,
++ we assume optimistically it is "enough".
++ ??? maybe we should be pessimistic instead. */
++ unsigned align = 0;
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 5,
-+ (__mmask8) -1);
-+}
++ if (sym)
++ {
++ tree decl = SYMBOL_REF_DECL (sym);
++#if TARGET_MACHO
++ if (MACHO_SYMBOL_INDIRECTION_P (sym))
++ /* The decl in an indirection symbol is the original one, which might
++ be less aligned than the indirection. Our indirections are always
++ pointer-aligned. */
++ ;
++ else
++#endif
++ if (decl && DECL_ALIGN (decl))
++ align = DECL_ALIGN_UNIT (decl);
++ }
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 2,
-+ (__mmask8) __M);
-+}
++ unsigned int extra = 0;
++ switch (mode)
++ {
++ case E_DFmode:
++ case E_DDmode:
++ case E_DImode:
++ /* If we are using VSX scalar loads, restrict ourselves to reg+reg
++ addressing. */
++ if (VECTOR_MEM_VSX_P (mode))
++ return false;
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-+ (__v4si) __Y, 2,
-+ (__mmask8) -1);
-+}
++ if (!TARGET_POWERPC64)
++ extra = 4;
++ else if ((offset & 3) || (align & 3))
++ return false;
++ break;
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 4,
-+ (__mmask8) __M);
-+}
++ case E_TFmode:
++ case E_IFmode:
++ case E_KFmode:
++ case E_TDmode:
++ case E_TImode:
++ case E_PTImode:
++ extra = 8;
++ if (!TARGET_POWERPC64)
++ extra = 12;
++ else if ((offset & 3) || (align & 3))
++ return false;
++ break;
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 4,
-+ (__mmask8) -1);
-+}
++ default:
++ break;
++ }
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 1,
-+ (__mmask8) __M);
++ /* We only care if the access(es) would cause a change to the high part. */
++ offset = ((offset & 0xffff) ^ 0x8000) - 0x8000;
++ return IN_RANGE (offset, -(HOST_WIDE_INT_1 << 15),
++ (HOST_WIDE_INT_1 << 15) - 1 - extra);
+}
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 1,
-+ (__mmask8) -1);
-+}
+ /* Return true if the MEM operand is a memory operand suitable for use
+ with a (full width, possibly multiple) gpr load/store. On
+ powerpc64 this means the offset must be divisible by 4.
+@@ -7705,7 +7803,13 @@
+ && legitimate_indirect_address_p (XEXP (addr, 0), false))
+ return true;
+
+- /* Don't allow non-offsettable addresses. See PRs 83969 and 84279. */
++ /* We need to look through Mach-O PIC unspecs to determine if a lo_sum is
++ really OK. Doing this early avoids teaching all the other machinery
++ about them. */
++ if (TARGET_MACHO && GET_CODE (addr) == LO_SUM)
++ return darwin_rs6000_legitimate_lo_sum_const_p (XEXP (addr, 1), mode);
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 5,
-+ (__mmask8) __M);
-+}
++ /* Only allow offsettable addresses. See PRs 83969 and 84279. */
+ if (!rs6000_offsettable_memref_p (op, mode, false))
+ return false;
+
+@@ -21330,7 +21434,7 @@
+ {
+ const char *name = XSTR (x, 0);
+ #if TARGET_MACHO
+- if (darwin_emit_branch_islands
++ if (darwin_symbol_stubs
+ && MACHOPIC_INDIRECT
+ && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION)
+ name = machopic_indirection_name (x, /*stub_p=*/true);
+@@ -25729,10 +25833,14 @@
+ stack_limit_rtx,
+ GEN_INT (size)));
+
+- emit_insn (gen_elf_high (tmp_reg, toload));
+- emit_insn (gen_elf_low (tmp_reg, tmp_reg, toload));
+- emit_insn (gen_cond_trap (LTU, stack_reg, tmp_reg,
+- const0_rtx));
++ /* We cannot use r0 with elf_low. Lamely solve this problem by
++ moving registers around. */
++ rtx r11_reg = gen_rtx_REG (Pmode, 11);
++ emit_move_insn (tmp_reg, r11_reg);
++ emit_insn (gen_elf_high (r11_reg, toload));
++ emit_insn (gen_elf_low (r11_reg, r11_reg, toload));
++ emit_insn (gen_cond_trap (LTU, stack_reg, r11_reg, const0_rtx));
++ emit_move_insn (r11_reg, tmp_reg);
+ }
+ else
+ warning (0, "stack limit expression is not supported");
+@@ -37762,25 +37870,31 @@
+ tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
+ tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
+
+- /* If callee has no option attributes, then it is ok to inline. */
++ /* If the callee has no option attributes, then it is ok to inline. */
+ if (!callee_tree)
+ ret = true;
+
+- /* If caller has no option attributes, but callee does then it is not ok to
+- inline. */
+- else if (!caller_tree)
+- ret = false;
+-
+ else
+ {
+- struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree);
++ HOST_WIDE_INT caller_isa;
+ struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
++ HOST_WIDE_INT callee_isa = callee_opts->x_rs6000_isa_flags;
++ HOST_WIDE_INT explicit_isa = callee_opts->x_rs6000_isa_flags_explicit;
+
+- /* Callee's options should a subset of the caller's, i.e. a vsx function
+- can inline an altivec function but a non-vsx function can't inline a
+- vsx function. */
+- if ((caller_opts->x_rs6000_isa_flags & callee_opts->x_rs6000_isa_flags)
+- == callee_opts->x_rs6000_isa_flags)
++ /* If the caller has option attributes, then use them.
++ Otherwise, use the command line options. */
++ if (caller_tree)
++ caller_isa = TREE_TARGET_OPTION (caller_tree)->x_rs6000_isa_flags;
++ else
++ caller_isa = rs6000_isa_flags;
++
++ /* The callee's options must be a subset of the caller's options, i.e.
++ a vsx function may inline an altivec function, but a no-vsx function
++ must not inline a vsx function. However, for those options that the
++ callee has explicitly enabled or disabled, then we must enforce that
++ the callee's and caller's options match exactly; see PR70010. */
++ if (((caller_isa & callee_isa) == callee_isa)
++ && (caller_isa & explicit_isa) == (callee_isa & explicit_isa))
+ ret = true;
+ }
+
+@@ -38273,7 +38387,8 @@
+ if ((cookie_val & CALL_LONG) != 0
+ && GET_CODE (func_desc) == SYMBOL_REF)
+ {
+- if (darwin_emit_branch_islands && TARGET_32BIT)
++ /* FIXME: the longcall opt should not hang off picsymbol stubs. */
++ if (darwin_symbol_stubs && TARGET_32BIT)
+ make_island = true; /* Do nothing yet, retain the CALL_LONG flag. */
+ else
+ {
+Index: gcc/config/rs6000/altivec.md
+===================================================================
+--- a/src/gcc/config/rs6000/altivec.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/altivec.md (.../branches/gcc-9-branch)
+@@ -80,9 +80,6 @@
+ UNSPEC_VUPKHPX
+ UNSPEC_VUPKLPX
+ UNSPEC_CONVERT_4F32_8I16
+- UNSPEC_DARN
+- UNSPEC_DARN_32
+- UNSPEC_DARN_RAW
+ UNSPEC_DST
+ UNSPEC_DSTT
+ UNSPEC_DSTST
+@@ -161,9 +158,6 @@
+ UNSPEC_BCDADD
+ UNSPEC_BCDSUB
+ UNSPEC_BCD_OVERFLOW
+- UNSPEC_CMPRB
+- UNSPEC_CMPRB2
+- UNSPEC_CMPEQB
+ UNSPEC_VRLMI
+ UNSPEC_VRLNM
+ ])
+@@ -566,7 +560,7 @@
+ [(set_attr "type" "vecsimple")])
+
+ ;;
+-(define_insn "altivec_vavgu<VI_char>"
++(define_insn "uavg<mode>3_ceil"
+ [(set (match_operand:VI 0 "register_operand" "=v")
+ (unspec:VI [(match_operand:VI 1 "register_operand" "v")
+ (match_operand:VI 2 "register_operand" "v")]
+@@ -575,7 +569,7 @@
+ "vavgu<VI_char> %0,%1,%2"
+ [(set_attr "type" "vecsimple")])
+
+-(define_insn "altivec_vavgs<VI_char>"
++(define_insn "avg<mode>3_ceil"
+ [(set (match_operand:VI 0 "register_operand" "=v")
+ (unspec:VI [(match_operand:VI 1 "register_operand" "v")
+ (match_operand:VI 2 "register_operand" "v")]
+@@ -4101,223 +4095,6 @@
+ "bcd<bcd_add_sub>. %0,%1,%2,%3"
+ [(set_attr "type" "vecsimple")])
+
+-(define_insn "darn_32"
+- [(set (match_operand:SI 0 "register_operand" "=r")
+- (unspec:SI [(const_int 0)] UNSPEC_DARN_32))]
+- "TARGET_P9_MISC"
+- "darn %0,0"
+- [(set_attr "type" "integer")])
+-
+-(define_insn "darn_raw"
+- [(set (match_operand:DI 0 "register_operand" "=r")
+- (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))]
+- "TARGET_P9_MISC && TARGET_64BIT"
+- "darn %0,2"
+- [(set_attr "type" "integer")])
+-
+-(define_insn "darn"
+- [(set (match_operand:DI 0 "register_operand" "=r")
+- (unspec:DI [(const_int 0)] UNSPEC_DARN))]
+- "TARGET_P9_MISC && TARGET_64BIT"
+- "darn %0,1"
+- [(set_attr "type" "integer")])
+-
+-;; Test byte within range.
+-;;
+-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+-;; represents a byte whose value is ignored in this context and
+-;; vv, the least significant byte, holds the byte value that is to
+-;; be tested for membership within the range specified by operand 2.
+-;; The bytes of operand 2 are organized as xx:xx:hi:lo.
+-;;
+-;; Return in target register operand 0 a value of 1 if lo <= vv and
+-;; vv <= hi. Otherwise, set register operand 0 to 0.
+-;;
+-;; Though the instructions to which this expansion maps operate on
+-;; 64-bit registers, the current implementation only operates on
+-;; SI-mode operands as the high-order bits provide no information
+-;; that is not already available in the low-order bits. To avoid the
+-;; costs of data widening operations, future enhancements might allow
+-;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
+-(define_expand "cmprb"
+- [(set (match_dup 3)
+- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+- (match_operand:SI 2 "gpc_reg_operand" "r")]
+- UNSPEC_CMPRB))
+- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
+- (if_then_else:SI (lt (match_dup 3)
+- (const_int 0))
+- (const_int -1)
+- (if_then_else (gt (match_dup 3)
+- (const_int 0))
+- (const_int 1)
+- (const_int 0))))]
+- "TARGET_P9_MISC"
+-{
+- operands[3] = gen_reg_rtx (CCmode);
+-})
+-
+-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+-;; represents a byte whose value is ignored in this context and
+-;; vv, the least significant byte, holds the byte value that is to
+-;; be tested for membership within the range specified by operand 2.
+-;; The bytes of operand 2 are organized as xx:xx:hi:lo.
+-;;
+-;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
+-;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other
+-;; 3 bits of the target CR register are all set to 0.
+-(define_insn "*cmprb_internal"
+- [(set (match_operand:CC 0 "cc_reg_operand" "=y")
+- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+- (match_operand:SI 2 "gpc_reg_operand" "r")]
+- UNSPEC_CMPRB))]
+- "TARGET_P9_MISC"
+- "cmprb %0,0,%1,%2"
+- [(set_attr "type" "logical")])
+-
+-;; Set operand 0 register to -1 if the LT bit (0x8) of condition
+-;; register operand 1 is on. Otherwise, set operand 0 register to 1
+-;; if the GT bit (0x4) of condition register operand 1 is on.
+-;; Otherwise, set operand 0 to 0. Note that the result stored into
+-;; register operand 0 is non-zero iff either the LT or GT bits are on
+-;; within condition register operand 1.
+-(define_insn "setb_signed"
+- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+- (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y")
+- (const_int 0))
+- (const_int -1)
+- (if_then_else (gt (match_dup 1)
+- (const_int 0))
+- (const_int 1)
+- (const_int 0))))]
+- "TARGET_P9_MISC"
+- "setb %0,%1"
+- [(set_attr "type" "logical")])
+-
+-(define_insn "setb_unsigned"
+- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+- (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y")
+- (const_int 0))
+- (const_int -1)
+- (if_then_else (gtu (match_dup 1)
+- (const_int 0))
+- (const_int 1)
+- (const_int 0))))]
+- "TARGET_P9_MISC"
+- "setb %0,%1"
+- [(set_attr "type" "logical")])
+-
+-;; Test byte within two ranges.
+-;;
+-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+-;; represents a byte whose value is ignored in this context and
+-;; vv, the least significant byte, holds the byte value that is to
+-;; be tested for membership within the range specified by operand 2.
+-;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
+-;;
+-;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and
+-;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register
+-;; operand 0 to 0.
+-;;
+-;; Though the instructions to which this expansion maps operate on
+-;; 64-bit registers, the current implementation only operates on
+-;; SI-mode operands as the high-order bits provide no information
+-;; that is not already available in the low-order bits. To avoid the
+-;; costs of data widening operations, future enhancements might allow
+-;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
+-(define_expand "cmprb2"
+- [(set (match_dup 3)
+- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+- (match_operand:SI 2 "gpc_reg_operand" "r")]
+- UNSPEC_CMPRB2))
+- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
+- (if_then_else:SI (lt (match_dup 3)
+- (const_int 0))
+- (const_int -1)
+- (if_then_else (gt (match_dup 3)
+- (const_int 0))
+- (const_int 1)
+- (const_int 0))))]
+- "TARGET_P9_MISC"
+-{
+- operands[3] = gen_reg_rtx (CCmode);
+-})
+-
+-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+-;; represents a byte whose value is ignored in this context and
+-;; vv, the least significant byte, holds the byte value that is to
+-;; be tested for membership within the ranges specified by operand 2.
+-;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
+-;;
+-;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
+-;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).
+-;; Otherwise, set the GT bit to 0. The other 3 bits of the target
+-;; CR register are all set to 0.
+-(define_insn "*cmprb2_internal"
+- [(set (match_operand:CC 0 "cc_reg_operand" "=y")
+- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+- (match_operand:SI 2 "gpc_reg_operand" "r")]
+- UNSPEC_CMPRB2))]
+- "TARGET_P9_MISC"
+- "cmprb %0,1,%1,%2"
+- [(set_attr "type" "logical")])
+-
+-;; Test byte membership within set of 8 bytes.
+-;;
+-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+-;; represents a byte whose value is ignored in this context and
+-;; vv, the least significant byte, holds the byte value that is to
+-;; be tested for membership within the set specified by operand 2.
+-;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
+-;;
+-;; Return in target register operand 0 a value of 1 if vv equals one
+-;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set
+-;; register operand 0 to 0. Note that the 8 byte values held within
+-;; operand 2 need not be unique.
+-;;
+-;; Though the instructions to which this expansion maps operate on
+-;; 64-bit registers, the current implementation requires that operands
+-;; 0 and 1 have mode SI as the high-order bits provide no information
+-;; that is not already available in the low-order bits. To avoid the
+-;; costs of data widening operations, future enhancements might allow
+-;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
+-(define_expand "cmpeqb"
+- [(set (match_dup 3)
+- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+- (match_operand:DI 2 "gpc_reg_operand" "r")]
+- UNSPEC_CMPEQB))
+- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
+- (if_then_else:SI (lt (match_dup 3)
+- (const_int 0))
+- (const_int -1)
+- (if_then_else (gt (match_dup 3)
+- (const_int 0))
+- (const_int 1)
+- (const_int 0))))]
+- "TARGET_P9_MISC && TARGET_64BIT"
+-{
+- operands[3] = gen_reg_rtx (CCmode);
+-})
+-
+-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
+-;; represents a byte whose value is ignored in this context and
+-;; vv, the least significant byte, holds the byte value that is to
+-;; be tested for membership within the set specified by operand 2.
+-;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
+-;;
+-;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv
+-;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise,
+-;; set the GT bit to zero. The other 3 bits of the target CR register
+-;; are all set to 0.
+-(define_insn "*cmpeqb_internal"
+- [(set (match_operand:CC 0 "cc_reg_operand" "=y")
+- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
+- (match_operand:DI 2 "gpc_reg_operand" "r")]
+- UNSPEC_CMPEQB))]
+- "TARGET_P9_MISC && TARGET_64BIT"
+- "cmpeqb %0,%1,%2"
+- [(set_attr "type" "logical")])
+-
+ (define_expand "bcd<bcd_add_sub>_<code>"
+ [(parallel [(set (reg:CCFP CR6_REGNO)
+ (compare:CCFP
+Index: gcc/config/rs6000/rs6000.md
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-9-branch)
+@@ -137,6 +137,9 @@
+ UNSPEC_LSQ
+ UNSPEC_FUSION_GPR
+ UNSPEC_STACK_CHECK
++ UNSPEC_CMPRB
++ UNSPEC_CMPRB2
++ UNSPEC_CMPEQB
+ UNSPEC_ADD_ROUND_TO_ODD
+ UNSPEC_SUB_ROUND_TO_ODD
+ UNSPEC_MUL_ROUND_TO_ODD
+@@ -164,6 +167,9 @@
+ UNSPECV_EH_RR ; eh_reg_restore
+ UNSPECV_ISYNC ; isync instruction
+ UNSPECV_MFTB ; move from time base
++ UNSPECV_DARN ; darn 1 (deliver a random number)
++ UNSPECV_DARN_32 ; darn 2
++ UNSPECV_DARN_RAW ; darn 0
+ UNSPECV_NLGR ; non-local goto receiver
+ UNSPECV_MFFS ; Move from FPSCR
+ UNSPECV_MFFSL ; Move from FPSCR light instruction version
+@@ -6818,13 +6824,6 @@
+ ;; do the load 16-bits at a time. We could do this by loading from memory,
+ ;; and this is even supposed to be faster, but it is simpler not to get
+ ;; integers in the TOC.
+-(define_insn "movsi_low"
+- [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
+- (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
+- (match_operand 2 "" ""))))]
+- "TARGET_MACHO && ! TARGET_64BIT"
+- "lwz %0,lo16(%2)(%1)"
+- [(set_attr "type" "load")])
+
+ ;; MR LA LWZ LFIWZX LXSIWZX
+ ;; STW STFIWX STXSIWX LI LIS
+@@ -14322,7 +14321,225 @@
+ "xscmpuqp %0,%1,%2"
+ [(set_attr "type" "veccmp")
+ (set_attr "size" "128")])
++
++;; Miscellaneous ISA 3.0 (power9) instructions
+
++(define_insn "darn_32"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (unspec_volatile:SI [(const_int 0)] UNSPECV_DARN_32))]
++ "TARGET_P9_MISC"
++ "darn %0,0"
++ [(set_attr "type" "integer")])
++
++(define_insn "darn_raw"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN_RAW))]
++ "TARGET_P9_MISC && TARGET_64BIT"
++ "darn %0,2"
++ [(set_attr "type" "integer")])
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 5,
-+ (__mmask8) -1);
-+}
++(define_insn "darn"
++ [(set (match_operand:DI 0 "register_operand" "=r")
++ (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN))]
++ "TARGET_P9_MISC && TARGET_64BIT"
++ "darn %0,1"
++ [(set_attr "type" "integer")])
++
++;; Test byte within range.
++;;
++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
++;; represents a byte whose value is ignored in this context and
++;; vv, the least significant byte, holds the byte value that is to
++;; be tested for membership within the range specified by operand 2.
++;; The bytes of operand 2 are organized as xx:xx:hi:lo.
++;;
++;; Return in target register operand 0 a value of 1 if lo <= vv and
++;; vv <= hi. Otherwise, set register operand 0 to 0.
++;;
++;; Though the instructions to which this expansion maps operate on
++;; 64-bit registers, the current implementation only operates on
++;; SI-mode operands as the high-order bits provide no information
++;; that is not already available in the low-order bits. To avoid the
++;; costs of data widening operations, future enhancements might allow
++;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
++(define_expand "cmprb"
++ [(set (match_dup 3)
++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
++ (match_operand:SI 2 "gpc_reg_operand" "r")]
++ UNSPEC_CMPRB))
++ (set (match_operand:SI 0 "gpc_reg_operand" "=r")
++ (if_then_else:SI (lt (match_dup 3)
++ (const_int 0))
++ (const_int -1)
++ (if_then_else (gt (match_dup 3)
++ (const_int 0))
++ (const_int 1)
++ (const_int 0))))]
++ "TARGET_P9_MISC"
++{
++ operands[3] = gen_reg_rtx (CCmode);
++})
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 2,
-+ (__mmask8) __M);
-+}
++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
++;; represents a byte whose value is ignored in this context and
++;; vv, the least significant byte, holds the byte value that is to
++;; be tested for membership within the range specified by operand 2.
++;; The bytes of operand 2 are organized as xx:xx:hi:lo.
++;;
++;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
++;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other
++;; 3 bits of the target CR register are all set to 0.
++(define_insn "*cmprb_internal"
++ [(set (match_operand:CC 0 "cc_reg_operand" "=y")
++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
++ (match_operand:SI 2 "gpc_reg_operand" "r")]
++ UNSPEC_CMPRB))]
++ "TARGET_P9_MISC"
++ "cmprb %0,0,%1,%2"
++ [(set_attr "type" "logical")])
++
++;; Set operand 0 register to -1 if the LT bit (0x8) of condition
++;; register operand 1 is on. Otherwise, set operand 0 register to 1
++;; if the GT bit (0x4) of condition register operand 1 is on.
++;; Otherwise, set operand 0 to 0. Note that the result stored into
++;; register operand 0 is non-zero iff either the LT or GT bits are on
++;; within condition register operand 1.
++(define_insn "setb_signed"
++ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
++ (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y")
++ (const_int 0))
++ (const_int -1)
++ (if_then_else (gt (match_dup 1)
++ (const_int 0))
++ (const_int 1)
++ (const_int 0))))]
++ "TARGET_P9_MISC"
++ "setb %0,%1"
++ [(set_attr "type" "logical")])
++
++(define_insn "setb_unsigned"
++ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
++ (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y")
++ (const_int 0))
++ (const_int -1)
++ (if_then_else (gtu (match_dup 1)
++ (const_int 0))
++ (const_int 1)
++ (const_int 0))))]
++ "TARGET_P9_MISC"
++ "setb %0,%1"
++ [(set_attr "type" "logical")])
++
++;; Test byte within two ranges.
++;;
++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
++;; represents a byte whose value is ignored in this context and
++;; vv, the least significant byte, holds the byte value that is to
++;; be tested for membership within the range specified by operand 2.
++;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
++;;
++;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and
++;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register
++;; operand 0 to 0.
++;;
++;; Though the instructions to which this expansion maps operate on
++;; 64-bit registers, the current implementation only operates on
++;; SI-mode operands as the high-order bits provide no information
++;; that is not already available in the low-order bits. To avoid the
++;; costs of data widening operations, future enhancements might allow
++;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
++(define_expand "cmprb2"
++ [(set (match_dup 3)
++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
++ (match_operand:SI 2 "gpc_reg_operand" "r")]
++ UNSPEC_CMPRB2))
++ (set (match_operand:SI 0 "gpc_reg_operand" "=r")
++ (if_then_else:SI (lt (match_dup 3)
++ (const_int 0))
++ (const_int -1)
++ (if_then_else (gt (match_dup 3)
++ (const_int 0))
++ (const_int 1)
++ (const_int 0))))]
++ "TARGET_P9_MISC"
++{
++ operands[3] = gen_reg_rtx (CCmode);
++})
+
-+extern __inline __mmask8
-+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
-+{
-+ return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-+ (__v2di) __Y, 2,
-+ (__mmask8) -1);
-+}
++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
++;; represents a byte whose value is ignored in this context and
++;; vv, the least significant byte, holds the byte value that is to
++;; be tested for membership within the ranges specified by operand 2.
++;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2.
++;;
++;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if
++;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2).
++;; Otherwise, set the GT bit to 0. The other 3 bits of the target
++;; CR register are all set to 0.
++(define_insn "*cmprb2_internal"
++ [(set (match_operand:CC 0 "cc_reg_operand" "=y")
++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
++ (match_operand:SI 2 "gpc_reg_operand" "r")]
++ UNSPEC_CMPRB2))]
++ "TARGET_P9_MISC"
++ "cmprb %0,1,%1,%2"
++ [(set_attr "type" "logical")])
++
++;; Test byte membership within set of 8 bytes.
++;;
++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
++;; represents a byte whose value is ignored in this context and
++;; vv, the least significant byte, holds the byte value that is to
++;; be tested for membership within the set specified by operand 2.
++;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
++;;
++;; Return in target register operand 0 a value of 1 if vv equals one
++;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set
++;; register operand 0 to 0. Note that the 8 byte values held within
++;; operand 2 need not be unique.
++;;
++;; Though the instructions to which this expansion maps operate on
++;; 64-bit registers, the current implementation requires that operands
++;; 0 and 1 have mode SI as the high-order bits provide no information
++;; that is not already available in the low-order bits. To avoid the
++;; costs of data widening operations, future enhancements might allow
++;; DI mode for operand 0 and/or might allow operand 1 to be QI mode.
++(define_expand "cmpeqb"
++ [(set (match_dup 3)
++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
++ (match_operand:DI 2 "gpc_reg_operand" "r")]
++ UNSPEC_CMPEQB))
++ (set (match_operand:SI 0 "gpc_reg_operand" "=r")
++ (if_then_else:SI (lt (match_dup 3)
++ (const_int 0))
++ (const_int -1)
++ (if_then_else (gt (match_dup 3)
++ (const_int 0))
++ (const_int 1)
++ (const_int 0))))]
++ "TARGET_P9_MISC && TARGET_64BIT"
++{
++ operands[3] = gen_reg_rtx (CCmode);
++})
+
- #ifdef __OPTIMIZE__
- extern __inline __m256i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-@@ -10216,7 +10792,7 @@
- extern __inline __m256
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i32gather_ps (__m256 __v1_old, __mmask8 __mask,
-- __m256i __index, float const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
- {
- return (__m256) __builtin_ia32_gather3siv8sf ((__v8sf) __v1_old,
-@@ -10228,7 +10804,7 @@
- extern __inline __m128
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i32gather_ps (__m128 __v1_old, __mmask8 __mask,
-- __m128i __index, float const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128) __builtin_ia32_gather3siv4sf ((__v4sf) __v1_old,
-@@ -10240,7 +10816,7 @@
- extern __inline __m256d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i32gather_pd (__m256d __v1_old, __mmask8 __mask,
-- __m128i __index, double const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m256d) __builtin_ia32_gather3siv4df ((__v4df) __v1_old,
-@@ -10252,7 +10828,7 @@
- extern __inline __m128d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i32gather_pd (__m128d __v1_old, __mmask8 __mask,
-- __m128i __index, double const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128d) __builtin_ia32_gather3siv2df ((__v2df) __v1_old,
-@@ -10264,7 +10840,7 @@
- extern __inline __m128
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
-- __m256i __index, float const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
- {
- return (__m128) __builtin_ia32_gather3div8sf ((__v4sf) __v1_old,
-@@ -10276,7 +10852,7 @@
- extern __inline __m128
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i64gather_ps (__m128 __v1_old, __mmask8 __mask,
-- __m128i __index, float const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128) __builtin_ia32_gather3div4sf ((__v4sf) __v1_old,
-@@ -10288,7 +10864,7 @@
- extern __inline __m256d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i64gather_pd (__m256d __v1_old, __mmask8 __mask,
-- __m256i __index, double const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
- {
- return (__m256d) __builtin_ia32_gather3div4df ((__v4df) __v1_old,
-@@ -10300,7 +10876,7 @@
- extern __inline __m128d
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i64gather_pd (__m128d __v1_old, __mmask8 __mask,
-- __m128i __index, double const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128d) __builtin_ia32_gather3div2df ((__v2df) __v1_old,
-@@ -10312,7 +10888,7 @@
- extern __inline __m256i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i32gather_epi32 (__m256i __v1_old, __mmask8 __mask,
-- __m256i __index, int const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
- {
- return (__m256i) __builtin_ia32_gather3siv8si ((__v8si) __v1_old,
-@@ -10324,7 +10900,7 @@
- extern __inline __m128i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i32gather_epi32 (__m128i __v1_old, __mmask8 __mask,
-- __m128i __index, int const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128i) __builtin_ia32_gather3siv4si ((__v4si) __v1_old,
-@@ -10336,7 +10912,7 @@
- extern __inline __m256i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i32gather_epi64 (__m256i __v1_old, __mmask8 __mask,
-- __m128i __index, long long const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m256i) __builtin_ia32_gather3siv4di ((__v4di) __v1_old,
-@@ -10348,7 +10924,7 @@
- extern __inline __m128i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i32gather_epi64 (__m128i __v1_old, __mmask8 __mask,
-- __m128i __index, long long const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128i) __builtin_ia32_gather3siv2di ((__v2di) __v1_old,
-@@ -10360,7 +10936,7 @@
- extern __inline __m128i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
-- __m256i __index, int const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
- {
- return (__m128i) __builtin_ia32_gather3div8si ((__v4si) __v1_old,
-@@ -10372,7 +10948,7 @@
- extern __inline __m128i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i64gather_epi32 (__m128i __v1_old, __mmask8 __mask,
-- __m128i __index, int const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128i) __builtin_ia32_gather3div4si ((__v4si) __v1_old,
-@@ -10384,7 +10960,7 @@
- extern __inline __m256i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_mmask_i64gather_epi64 (__m256i __v1_old, __mmask8 __mask,
-- __m256i __index, long long const *__addr,
-+ __m256i __index, void const *__addr,
- int __scale)
- {
- return (__m256i) __builtin_ia32_gather3div4di ((__v4di) __v1_old,
-@@ -10396,7 +10972,7 @@
- extern __inline __m128i
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
- _mm_mmask_i64gather_epi64 (__m128i __v1_old, __mmask8 __mask,
-- __m128i __index, long long const *__addr,
-+ __m128i __index, void const *__addr,
- int __scale)
- {
- return (__m128i) __builtin_ia32_gather3div2di ((__v2di) __v1_old,
-@@ -10407,7 +10983,7 @@
-
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i32scatter_ps (float *__addr, __m256i __index,
-+_mm256_i32scatter_ps (void *__addr, __m256i __index,
- __m256 __v1, const int __scale)
- {
- __builtin_ia32_scattersiv8sf (__addr, (__mmask8) 0xFF,
-@@ -10417,7 +10993,7 @@
-
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i32scatter_ps (float *__addr, __mmask8 __mask,
-+_mm256_mask_i32scatter_ps (void *__addr, __mmask8 __mask,
- __m256i __index, __m256 __v1,
- const int __scale)
- {
-@@ -10427,7 +11003,7 @@
++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx
++;; represents a byte whose value is ignored in this context and
++;; vv, the least significant byte, holds the byte value that is to
++;; be tested for membership within the set specified by operand 2.
++;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7.
++;;
++;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv
++;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise,
++;; set the GT bit to zero. The other 3 bits of the target CR register
++;; are all set to 0.
++(define_insn "*cmpeqb_internal"
++ [(set (match_operand:CC 0 "cc_reg_operand" "=y")
++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r")
++ (match_operand:DI 2 "gpc_reg_operand" "r")]
++ UNSPEC_CMPEQB))]
++ "TARGET_P9_MISC && TARGET_64BIT"
++ "cmpeqb %0,%1,%2"
++ [(set_attr "type" "logical")])
+
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i32scatter_ps (float *__addr, __m128i __index, __m128 __v1,
-+_mm_i32scatter_ps (void *__addr, __m128i __index, __m128 __v1,
- const int __scale)
+ (include "sync.md")
+Index: gcc/config/darwin.c
+===================================================================
+--- a/src/gcc/config/darwin.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin.c (.../branches/gcc-9-branch)
+@@ -75,15 +75,9 @@
+ setting the second word in the .non_lazy_symbol_pointer data
+ structure to symbol. See indirect_data for the code that handles
+ the extra indirection, and machopic_output_indirection and its use
+- of MACHO_SYMBOL_STATIC for the code that handles @code{static}
++ of MACHO_SYMBOL_FLAG_STATIC for the code that handles @code{static}
+ symbol indirection. */
+
+-/* For darwin >= 9 (OSX 10.5) the linker is capable of making the necessary
+- branch islands and we no longer need to emit darwin stubs.
+- However, if we are generating code for earlier systems (or for use in the
+- kernel) the stubs might still be required, and this will be set true. */
+-int darwin_emit_branch_islands = false;
+-
+ typedef struct GTY(()) cdtor_record {
+ rtx symbol;
+ int priority; /* [con/de]structor priority */
+@@ -105,6 +99,10 @@
+ for weak or single-definition items. */
+ static bool ld_uses_coal_sects = false;
+
++/* Very old (ld_classic) linkers need a symbol to mark the start of
++ each FDE. */
++static bool ld_needs_eh_markers = false;
++
+ /* Section names. */
+ section * darwin_sections[NUM_DARWIN_SECTIONS];
+
+@@ -250,7 +248,7 @@
+ int
+ machopic_symbol_defined_p (rtx sym_ref)
{
- __builtin_ia32_scattersiv4sf (__addr, (__mmask8) 0xFF,
-@@ -10437,7 +11013,7 @@
+- if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_DEFINED)
++ if (MACHO_SYMBOL_DEFINED_P (sym_ref))
+ return true;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i32scatter_ps (float *__addr, __mmask8 __mask,
-+_mm_mask_i32scatter_ps (void *__addr, __mmask8 __mask,
- __m128i __index, __m128 __v1,
- const int __scale)
+ /* If a symbol references local and is not an extern to this
+@@ -259,7 +257,7 @@
+ {
+ /* If the symbol references a variable and the variable is a
+ common symbol, then this symbol is not defined. */
+- if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_VARIABLE)
++ if (MACHO_SYMBOL_VARIABLE_P (sym_ref))
+ {
+ tree decl = SYMBOL_REF_DECL (sym_ref);
+ if (!decl)
+@@ -455,6 +453,13 @@
+ bool stub_p;
+ /* True iff this stub or pointer has been referenced. */
+ bool used;
++ /* True iff a non-lazy symbol pointer should be emitted into the .data
++ section, rather than the non-lazy symbol pointers section. The cases
++ for which this occurred seem to have been unintentional, and later
++ toolchains emit all of the indirections to the 'usual' section. We
++ are keeping this in case it is necessary to preserve compatibility with
++ older toolchains. */
++ bool nlsp_in_data_section;
+ } machopic_indirection;
+
+ struct indirection_hasher : ggc_ptr_hash<machopic_indirection>
+@@ -489,7 +494,7 @@
+ /* Return the name of the non-lazy pointer (if STUB_P is false) or
+ stub (if STUB_B is true) corresponding to the given name.
+
+- If we have a situation like:
++ PR71767 - If we have a situation like:
+
+ global_weak_symbol:
+ ....
+@@ -498,36 +503,22 @@
+
+ ld64 will be unable to split this into two atoms (because the "L" makes
+ the second symbol 'invisible'). This means that legitimate direct accesses
+- to the second symbol will appear to be non-allowed direct accesses to an
+- atom of type weak, global which are not allowed.
++ to the second symbol will appear to be direct accesses to an atom of type
++ weak, global which are not allowed.
+
+- To avoid this, we make the indirections have a leading 'l' (lower-case L)
+- which has a special meaning: linker can see this and use it to determine
+- atoms, but it is not placed into the final symbol table.
++ To avoid this, we make any data-section indirections have a leading 'l'
++ (lower-case L) which has a special meaning: linker can see this and use
++ it to determine atoms, but it is not placed into the final symbol table.
+
+- The implementation here is somewhat heavy-handed in that it will also mark
+- indirections to the __IMPORT,__pointers section the same way which is
+- really unnecessary, since ld64 _can_ split those into atoms as they are
+- fixed size. FIXME: determine if this is a penalty worth extra code to
+- fix.
+-
++ Symbols in the non-lazy symbol pointers section (or stubs) do not have this
++ problem because ld64 already knows the size of each entry.
+ */
+
+ const char *
+ machopic_indirection_name (rtx sym_ref, bool stub_p)
{
-@@ -10447,7 +11023,7 @@
+- char *buffer;
+ const char *name = XSTR (sym_ref, 0);
+- size_t namelen = strlen (name);
+- machopic_indirection *p;
+- bool needs_quotes;
+- const char *suffix;
+- char L_or_l = 'L';
+- const char *prefix = user_label_prefix;
+- const char *quote = "";
+- tree id;
+-
+- id = maybe_get_identifier (name);
++ tree id = maybe_get_identifier (name);
+ if (id)
+ {
+ tree id_orig = id;
+@@ -535,43 +526,47 @@
+ while (IDENTIFIER_TRANSPARENT_ALIAS (id))
+ id = TREE_CHAIN (id);
+ if (id != id_orig)
+- {
+- name = IDENTIFIER_POINTER (id);
+- namelen = strlen (name);
+- }
++ name = IDENTIFIER_POINTER (id);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i32scatter_pd (double *__addr, __m128i __index,
-+_mm256_i32scatter_pd (void *__addr, __m128i __index,
- __m256d __v1, const int __scale)
- {
- __builtin_ia32_scattersiv4df (__addr, (__mmask8) 0xFF,
-@@ -10457,7 +11033,7 @@
++ const char *prefix = user_label_prefix;
++ /* If we are emitting the label 'verbatim' then omit the U_L_P and count
++ the name without the leading '*'. */
+ if (name[0] == '*')
+ {
+ prefix = "";
+ ++name;
+- --namelen;
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
-+_mm256_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
- __m128i __index, __m256d __v1,
- const int __scale)
- {
-@@ -10467,7 +11043,7 @@
+- needs_quotes = name_needs_quotes (name);
+- if (needs_quotes)
+- {
+- quote = "\"";
+- }
++ /* Here we are undoing a number of causes that placed some indirections
++ (apparently erroneously) into the .data section. Specifically, some
++ symbols that are ABI mandated indirections and some hidden symbols
++ were being placed there - which cause difficulties with later
++ versions of ld64. Iff (after these checks) some symbol still gets an
++ indirection in the data section, we want to adjust the indirection
++ name to be linker visible to deal with PR71767 (notes above). */
++ bool nlsp_in_data_section =
++ ! MACHO_SYMBOL_MUST_INDIRECT_P (sym_ref)
++ && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref)
++ && (machopic_symbol_defined_p (sym_ref) || SYMBOL_REF_LOCAL_P (sym_ref))
++ && ! indirect_data (sym_ref);
+
+- if (stub_p)
+- suffix = STUB_SUFFIX;
+- else
+- {
+- suffix = NON_LAZY_POINTER_SUFFIX;
+- /* Let the linker see this. */
+- L_or_l = 'l';
+- }
++ const char *suffix = stub_p ? STUB_SUFFIX : NON_LAZY_POINTER_SUFFIX;
++ /* If the indirection is in the data section, let the linker see it. */
++ char L_or_l = (!stub_p && nlsp_in_data_section) ? 'l' : 'L';
++ /* We have mangled symbols with spaces and punctuation which typically
++ need surrounding in quotes for the assembler to consume them. */
++ const char *quote = name_needs_quotes (name) ? "\"" : "";
++ char *buffer = XALLOCAVEC (char, 2 /* strlen ("&L") or ("&l") */
++ + strlen (prefix)
++ + strlen (name)
++ + strlen (suffix)
++ + 2 * strlen (quote)
++ + 1 /* '\0' */);
+
+- buffer = XALLOCAVEC (char, 2 /* strlen ("&L") or ("&l") */
+- + strlen (prefix)
+- + namelen
+- + strlen (suffix)
+- + 2 * strlen (quote)
+- + 1 /* '\0' */);
+-
+ /* Construct the name of the non-lazy pointer or stub. */
+- sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name, suffix, quote);
++ sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name,
++ suffix, quote);
+
+ if (!machopic_indirections)
+ machopic_indirections = hash_table<indirection_hasher>::create_ggc (37);
+@@ -580,10 +575,9 @@
+ = machopic_indirections->find_slot_with_hash (buffer,
+ htab_hash_string (buffer),
+ INSERT);
++ machopic_indirection *p;
+ if (*slot)
+- {
+- p = *slot;
+- }
++ p = *slot;
+ else
+ {
+ p = ggc_alloc<machopic_indirection> ();
+@@ -591,6 +585,7 @@
+ p->ptr_name = xstrdup (buffer);
+ p->stub_p = stub_p;
+ p->used = false;
++ p->nlsp_in_data_section = nlsp_in_data_section;
+ *slot = p;
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i32scatter_pd (double *__addr, __m128i __index,
-+_mm_i32scatter_pd (void *__addr, __m128i __index,
- __m128d __v1, const int __scale)
+@@ -666,7 +661,7 @@
+ /* some other cpu -- writeme! */
+ gcc_unreachable ();
+ }
+- else if (defined)
++ else if (defined && ! MACHO_SYMBOL_MUST_INDIRECT_P (orig))
+ {
+ rtx offset = NULL;
+ if (DARWIN_PPC || HAVE_lo_sum)
+@@ -708,6 +703,7 @@
+ machopic_indirection_name (orig, /*stub_p=*/false)));
+
+ SYMBOL_REF_DATA (ptr_ref) = SYMBOL_REF_DATA (orig);
++ SYMBOL_REF_FLAGS (ptr_ref) |= MACHO_SYMBOL_FLAG_INDIRECTION;
+
+ ptr_ref = gen_const_mem (Pmode, ptr_ref);
+ machopic_define_symbol (ptr_ref);
+@@ -790,7 +786,7 @@
+ rtx
+ machopic_indirect_call_target (rtx target)
{
- __builtin_ia32_scattersiv2df (__addr, (__mmask8) 0xFF,
-@@ -10477,7 +11053,7 @@
+- if (! darwin_emit_branch_islands)
++ if (! darwin_symbol_stubs)
+ return target;
+
+ if (GET_CODE (target) != MEM)
+@@ -798,8 +794,7 @@
+
+ if (MACHOPIC_INDIRECT
+ && GET_CODE (XEXP (target, 0)) == SYMBOL_REF
+- && !(SYMBOL_REF_FLAGS (XEXP (target, 0))
+- & MACHO_SYMBOL_FLAG_DEFINED))
++ && ! MACHO_SYMBOL_DEFINED_P (XEXP (target, 0)))
+ {
+ rtx sym_ref = XEXP (target, 0);
+ const char *stub_name = machopic_indirection_name (sym_ref,
+@@ -808,6 +803,7 @@
+
+ XEXP (target, 0) = gen_rtx_SYMBOL_REF (mode, stub_name);
+ SYMBOL_REF_DATA (XEXP (target, 0)) = SYMBOL_REF_DATA (sym_ref);
++ SYMBOL_REF_FLAGS (XEXP (target, 0)) |= MACHO_SYMBOL_FLAG_INDIRECTION;
+ MEM_READONLY_P (target) = 1;
+ MEM_NOTRAP_P (target) = 1;
+ }
+@@ -844,7 +840,7 @@
+ {
+ if (reg == 0)
+ {
+- gcc_assert (!reload_in_progress);
++ gcc_assert (!lra_in_progress);
+ reg = gen_reg_rtx (Pmode);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i32scatter_pd (double *__addr, __mmask8 __mask,
-+_mm_mask_i32scatter_pd (void *__addr, __mmask8 __mask,
- __m128i __index, __m128d __v1,
- const int __scale)
- {
-@@ -10487,7 +11063,7 @@
+@@ -928,7 +924,7 @@
+ emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM));
+ #endif
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i64scatter_ps (float *__addr, __m256i __index,
-+_mm256_i64scatter_ps (void *__addr, __m256i __index,
- __m128 __v1, const int __scale)
- {
- __builtin_ia32_scatterdiv8sf (__addr, (__mmask8) 0xFF,
-@@ -10497,7 +11073,7 @@
+- if (reload_in_progress)
++ if (lra_in_progress)
+ df_set_regs_ever_live (REGNO (pic), true);
+ pic_ref = gen_rtx_PLUS (Pmode, pic,
+ machopic_gen_offset (XEXP (orig, 0)));
+@@ -952,7 +948,7 @@
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
-+_mm256_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
- __m256i __index, __m128 __v1,
- const int __scale)
- {
-@@ -10507,7 +11083,7 @@
+ if (reg == 0)
+ {
+- gcc_assert (!reload_in_progress);
++ gcc_assert (!lra_in_progress);
+ reg = gen_reg_rtx (Pmode);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i64scatter_ps (float *__addr, __m128i __index, __m128 __v1,
-+_mm_i64scatter_ps (void *__addr, __m128i __index, __m128 __v1,
- const int __scale)
- {
- __builtin_ia32_scatterdiv4sf (__addr, (__mmask8) 0xFF,
-@@ -10517,7 +11093,7 @@
+@@ -998,7 +994,7 @@
+ #if 0
+ emit_use (pic_offset_table_rtx);
+ #endif
+- if (reload_in_progress)
++ if (lra_in_progress)
+ df_set_regs_ever_live (REGNO (pic), true);
+ pic_ref = gen_rtx_PLUS (Pmode,
+ pic,
+@@ -1069,129 +1065,160 @@
+ return pic_ref;
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i64scatter_ps (float *__addr, __mmask8 __mask,
-+_mm_mask_i64scatter_ps (void *__addr, __mmask8 __mask,
- __m128i __index, __m128 __v1,
- const int __scale)
- {
-@@ -10527,7 +11103,7 @@
+-/* Output the stub or non-lazy pointer in *SLOT, if it has been used.
+- DATA is the FILE* for assembly output. Called from
+- htab_traverse. */
++/* Callbacks to output the stub or non-lazy pointers.
++ Each works on the item in *SLOT,if it has been used.
++ DATA is the FILE* for assembly output.
++ Called from htab_traverses, invoked from machopic_finish(). */
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i64scatter_pd (double *__addr, __m256i __index,
-+_mm256_i64scatter_pd (void *__addr, __m256i __index,
- __m256d __v1, const int __scale)
+ int
+-machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file)
++machopic_output_data_section_indirection (machopic_indirection **slot,
++ FILE *asm_out_file)
{
- __builtin_ia32_scatterdiv4df (__addr, (__mmask8) 0xFF,
-@@ -10537,7 +11113,7 @@
+ machopic_indirection *p = *slot;
+- rtx symbol;
+- const char *sym_name;
+- const char *ptr_name;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
-+_mm256_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
- __m256i __index, __m256d __v1,
- const int __scale)
- {
-@@ -10547,7 +11123,7 @@
+- if (!p->used)
++ if (!p->used || !p->nlsp_in_data_section)
+ return 1;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i64scatter_pd (double *__addr, __m128i __index,
-+_mm_i64scatter_pd (void *__addr, __m128i __index,
- __m128d __v1, const int __scale)
- {
- __builtin_ia32_scatterdiv2df (__addr, (__mmask8) 0xFF,
-@@ -10557,7 +11133,7 @@
+- symbol = p->symbol;
+- sym_name = XSTR (symbol, 0);
+- ptr_name = p->ptr_name;
++ rtx symbol = p->symbol;
++ /* The original symbol name. */
++ const char *sym_name = XSTR (symbol, 0);
++ /* The name of the indirection symbol. */
++ const char *ptr_name = p->ptr_name;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i64scatter_pd (double *__addr, __mmask8 __mask,
-+_mm_mask_i64scatter_pd (void *__addr, __mmask8 __mask,
- __m128i __index, __m128d __v1,
- const int __scale)
- {
-@@ -10567,7 +11143,7 @@
+- if (p->stub_p)
+- {
+- char *sym;
+- char *stub;
+- tree id;
++ switch_to_section (data_section);
++ assemble_align (GET_MODE_ALIGNMENT (Pmode));
++ assemble_label (asm_out_file, ptr_name);
++ assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name),
++ GET_MODE_SIZE (Pmode),
++ GET_MODE_ALIGNMENT (Pmode), 1);
+
+- id = maybe_get_identifier (sym_name);
+- if (id)
+- {
+- tree id_orig = id;
++ return 1;
++}
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i32scatter_epi32 (int *__addr, __m256i __index,
-+_mm256_i32scatter_epi32 (void *__addr, __m256i __index,
- __m256i __v1, const int __scale)
- {
- __builtin_ia32_scattersiv8si (__addr, (__mmask8) 0xFF,
-@@ -10577,7 +11153,7 @@
+- while (IDENTIFIER_TRANSPARENT_ALIAS (id))
+- id = TREE_CHAIN (id);
+- if (id != id_orig)
+- sym_name = IDENTIFIER_POINTER (id);
+- }
++int
++machopic_output_stub_indirection (machopic_indirection **slot,
++ FILE *asm_out_file)
++{
++ machopic_indirection *p = *slot;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i32scatter_epi32 (int *__addr, __mmask8 __mask,
-+_mm256_mask_i32scatter_epi32 (void *__addr, __mmask8 __mask,
- __m256i __index, __m256i __v1,
- const int __scale)
- {
-@@ -10587,7 +11163,7 @@
+- sym = XALLOCAVEC (char, strlen (sym_name) + 2);
+- if (sym_name[0] == '*' || sym_name[0] == '&')
+- strcpy (sym, sym_name + 1);
+- else if (sym_name[0] == '-' || sym_name[0] == '+')
+- strcpy (sym, sym_name);
+- else
+- sprintf (sym, "%s%s", user_label_prefix, sym_name);
++ if (!p->used || !p->stub_p)
++ return 1;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i32scatter_epi32 (int *__addr, __m128i __index,
-+_mm_i32scatter_epi32 (void *__addr, __m128i __index,
- __m128i __v1, const int __scale)
- {
- __builtin_ia32_scattersiv4si (__addr, (__mmask8) 0xFF,
-@@ -10597,7 +11173,7 @@
+- stub = XALLOCAVEC (char, strlen (ptr_name) + 2);
+- if (ptr_name[0] == '*' || ptr_name[0] == '&')
+- strcpy (stub, ptr_name + 1);
+- else
+- sprintf (stub, "%s%s", user_label_prefix, ptr_name);
++ rtx symbol = p->symbol;
++ /* The original symbol name. */
++ const char *sym_name = XSTR (symbol, 0);
++ /* The name of the stub symbol. */
++ const char *ptr_name = p->ptr_name;
+
+- machopic_output_stub (asm_out_file, sym, stub);
+- }
+- else if (! indirect_data (symbol)
+- && (machopic_symbol_defined_p (symbol)
+- || SYMBOL_REF_LOCAL_P (symbol)))
++ tree id = maybe_get_identifier (sym_name);
++ if (id)
+ {
+- switch_to_section (data_section);
+- assemble_align (GET_MODE_ALIGNMENT (Pmode));
+- assemble_label (asm_out_file, ptr_name);
+- assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name),
+- GET_MODE_SIZE (Pmode),
+- GET_MODE_ALIGNMENT (Pmode), 1);
++ tree id_orig = id;
++
++ while (IDENTIFIER_TRANSPARENT_ALIAS (id))
++ id = TREE_CHAIN (id);
++ if (id != id_orig)
++ sym_name = IDENTIFIER_POINTER (id);
+ }
++
++ char *sym = XALLOCAVEC (char, strlen (sym_name) + 2);
++ if (sym_name[0] == '*' || sym_name[0] == '&')
++ strcpy (sym, sym_name + 1);
++ else if (sym_name[0] == '-' || sym_name[0] == '+')
++ strcpy (sym, sym_name);
+ else
+- {
+- rtx init = const0_rtx;
++ sprintf (sym, "%s%s", user_label_prefix, sym_name);
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i32scatter_epi32 (int *__addr, __mmask8 __mask,
-+_mm_mask_i32scatter_epi32 (void *__addr, __mmask8 __mask,
- __m128i __index, __m128i __v1,
- const int __scale)
- {
-@@ -10607,7 +11183,7 @@
+- switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]);
++ char *stub = XALLOCAVEC (char, strlen (ptr_name) + 2);
++ if (ptr_name[0] == '*' || ptr_name[0] == '&')
++ strcpy (stub, ptr_name + 1);
++ else
++ sprintf (stub, "%s%s", user_label_prefix, ptr_name);
+
+- /* Mach-O symbols are passed around in code through indirect
+- references and the original symbol_ref hasn't passed through
+- the generic handling and reference-catching in
+- output_operand, so we need to manually mark weak references
+- as such. */
+- if (SYMBOL_REF_WEAK (symbol))
+- {
+- tree decl = SYMBOL_REF_DECL (symbol);
+- gcc_assert (DECL_P (decl));
++ machopic_output_stub (asm_out_file, sym, stub);
+
+- if (decl != NULL_TREE
+- && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl)
+- /* Handle only actual external-only definitions, not
+- e.g. extern inline code or variables for which
+- storage has been allocated. */
+- && !TREE_STATIC (decl))
+- {
+- fputs ("\t.weak_reference ", asm_out_file);
+- assemble_name (asm_out_file, sym_name);
+- fputc ('\n', asm_out_file);
+- }
+- }
++ return 1;
++}
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i32scatter_epi64 (long long *__addr, __m128i __index,
-+_mm256_i32scatter_epi64 (void *__addr, __m128i __index,
- __m256i __v1, const int __scale)
- {
- __builtin_ia32_scattersiv4di (__addr, (__mmask8) 0xFF,
-@@ -10617,7 +11193,7 @@
+- assemble_name (asm_out_file, ptr_name);
+- fprintf (asm_out_file, ":\n");
++int
++machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file)
++{
++ machopic_indirection *p = *slot;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
-+_mm256_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
- __m128i __index, __m256i __v1,
- const int __scale)
- {
-@@ -10627,7 +11203,7 @@
+- fprintf (asm_out_file, "\t.indirect_symbol ");
+- assemble_name (asm_out_file, sym_name);
+- fprintf (asm_out_file, "\n");
++ if (!p->used || p->stub_p || p->nlsp_in_data_section)
++ return 1;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i32scatter_epi64 (long long *__addr, __m128i __index,
-+_mm_i32scatter_epi64 (void *__addr, __m128i __index,
- __m128i __v1, const int __scale)
- {
- __builtin_ia32_scattersiv2di (__addr, (__mmask8) 0xFF,
-@@ -10637,7 +11213,7 @@
+- /* Variables that are marked with MACHO_SYMBOL_STATIC need to
+- have their symbol name instead of 0 in the second entry of
+- the non-lazy symbol pointer data structure when they are
+- defined. This allows the runtime to rebind newer instances
+- of the translation unit with the original instance of the
+- symbol. */
++ rtx symbol = p->symbol;
++ /* The original symbol name. */
++ const char *sym_name = XSTR (symbol, 0);
++ /* The nonlazy-stub symbol name. */
++ const char *ptr_name = p->ptr_name;
+
+- if ((SYMBOL_REF_FLAGS (symbol) & MACHO_SYMBOL_STATIC)
+- && machopic_symbol_defined_p (symbol))
+- init = gen_rtx_SYMBOL_REF (Pmode, sym_name);
++ switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]);
+
+- assemble_integer (init, GET_MODE_SIZE (Pmode),
+- GET_MODE_ALIGNMENT (Pmode), 1);
++ /* Mach-O symbols are passed around in code through indirect references and
++ the original symbol_ref hasn't passed through the generic handling and
++ reference-catching in output_operand, so we need to manually mark weak
++ references as such. */
++
++ if (SYMBOL_REF_WEAK (symbol))
++ {
++ tree decl = SYMBOL_REF_DECL (symbol);
++ gcc_checking_assert (DECL_P (decl));
++
++ if (decl != NULL_TREE
++ && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl)
++ /* Handle only actual external-only definitions, not
++ e.g. extern inline code or variables for which
++ storage has been allocated. */
++ && !TREE_STATIC (decl))
++ {
++ fputs ("\t.weak_reference ", asm_out_file);
++ assemble_name (asm_out_file, sym_name);
++ fputc ('\n', asm_out_file);
++ }
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i32scatter_epi64 (long long *__addr, __mmask8 __mask,
-+_mm_mask_i32scatter_epi64 (void *__addr, __mmask8 __mask,
- __m128i __index, __m128i __v1,
- const int __scale)
- {
-@@ -10647,7 +11223,7 @@
++ assemble_name (asm_out_file, ptr_name);
++ fprintf (asm_out_file, ":\n");
++
++ fprintf (asm_out_file, "\t.indirect_symbol ");
++ assemble_name (asm_out_file, sym_name);
++ fprintf (asm_out_file, "\n");
++
++ /* Variables that are marked with MACHO_SYMBOL_FLAG_STATIC need to
++ have their symbol name instead of 0 in the second entry of
++ the non-lazy symbol pointer data structure when they are
++ defined. This allows the runtime to rebind newer instances
++ of the translation unit with the original instance of the
++ symbol. */
++
++ rtx init = const0_rtx;
++ if (MACHO_SYMBOL_STATIC_P (symbol) && machopic_symbol_defined_p (symbol))
++ init = gen_rtx_SYMBOL_REF (Pmode, sym_name);
++
++ assemble_integer (init, GET_MODE_SIZE (Pmode),
++ GET_MODE_ALIGNMENT (Pmode), 1);
++
+ return 1;
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i64scatter_epi32 (int *__addr, __m256i __index,
-+_mm256_i64scatter_epi32 (void *__addr, __m256i __index,
- __m128i __v1, const int __scale)
+-void
++static void
+ machopic_finish (FILE *asm_out_file)
{
- __builtin_ia32_scatterdiv8si (__addr, (__mmask8) 0xFF,
-@@ -10657,7 +11233,7 @@
+- if (machopic_indirections)
+- machopic_indirections
+- ->traverse_noresize<FILE *, machopic_output_indirection> (asm_out_file);
++ if (!machopic_indirections)
++ return;
++
++ /* First output an symbol indirections that have been placed into .data
++ (we don't expect these now). */
++ machopic_indirections->traverse_noresize
++ <FILE *, machopic_output_data_section_indirection> (asm_out_file);
++
++ machopic_indirections->traverse_noresize
++ <FILE *, machopic_output_stub_indirection> (asm_out_file);
++
++ machopic_indirections->traverse_noresize
++ <FILE *, machopic_output_indirection> (asm_out_file);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
-+_mm256_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
- __m256i __index, __m128i __v1,
- const int __scale)
- {
-@@ -10667,7 +11243,7 @@
+ int
+@@ -1206,25 +1233,51 @@
+ && XINT (XEXP (op, 0), 1) == UNSPEC_MACHOPIC_OFFSET);
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i64scatter_epi32 (int *__addr, __m128i __index,
-+_mm_i64scatter_epi32 (void *__addr, __m128i __index,
- __m128i __v1, const int __scale)
+-/* This function records whether a given name corresponds to a defined
+- or undefined function or variable, for machopic_classify_ident to
+- use later. */
++/* This function:
++ computes and caches a series of flags that characterise the symbol's
++ properties that affect Mach-O code gen (including accidental cases
++ from older toolchains).
+
++ TODO:
++ Here we also need to do enough analysis to determine if a symbol's
++ name needs to be made linker-visible. This is more tricky - since
++ it depends on whether we've previously seen a global weak definition
++ in the same section.
++ */
++
+ void
+-darwin_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
++darwin_encode_section_info (tree decl, rtx rtl, int first)
{
- __builtin_ia32_scatterdiv4si (__addr, (__mmask8) 0xFF,
-@@ -10677,7 +11253,7 @@
+- rtx sym_ref;
++ /* Careful not to prod global register variables. */
++ if (!MEM_P (rtl))
++ return;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i64scatter_epi32 (int *__addr, __mmask8 __mask,
-+_mm_mask_i64scatter_epi32 (void *__addr, __mmask8 __mask,
- __m128i __index, __m128i __v1,
- const int __scale)
- {
-@@ -10687,7 +11263,7 @@
+- /* Do the standard encoding things first. */
++ /* Do the standard encoding things first; this sets:
++ SYMBOL_FLAG_FUNCTION,
++ SYMBOL_FLAG_LOCAL, (binds_local_p)
++ TLS_MODEL, SYMBOL_FLAG_SMALL
++ SYMBOL_FLAG_EXTERNAL. */
+ default_encode_section_info (decl, rtl, first);
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_i64scatter_epi64 (long long *__addr, __m256i __index,
-+_mm256_i64scatter_epi64 (void *__addr, __m256i __index,
- __m256i __v1, const int __scale)
- {
- __builtin_ia32_scatterdiv4di (__addr, (__mmask8) 0xFF,
-@@ -10697,7 +11273,7 @@
+- if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL)
++ if (! VAR_OR_FUNCTION_DECL_P (decl))
+ return;
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
-+_mm256_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
- __m256i __index, __m256i __v1,
- const int __scale)
- {
-@@ -10707,7 +11283,7 @@
+- sym_ref = XEXP (rtl, 0);
+- if (TREE_CODE (decl) == VAR_DECL)
++ rtx sym_ref = XEXP (rtl, 0);
++ if (VAR_P (decl))
+ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_VARIABLE;
+
++ /* Only really common if there's no initialiser. */
++ bool really_common_p = (DECL_COMMON (decl)
++ && (DECL_INITIAL (decl) == NULL
++ || (!in_lto_p
++ && DECL_INITIAL (decl) == error_mark_node)));
++
++ /* For Darwin, if we have specified visibility and it's not the default
++ that's counted 'hidden'. */
++ if (DECL_VISIBILITY_SPECIFIED (decl)
++ && DECL_VISIBILITY (decl) != VISIBILITY_DEFAULT)
++ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_HIDDEN_VIS;
++
+ if (!DECL_EXTERNAL (decl)
+ && (!TREE_PUBLIC (decl) || !DECL_WEAK (decl))
+ && ! lookup_attribute ("weakref", DECL_ATTRIBUTES (decl))
+@@ -1235,7 +1288,13 @@
+ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_DEFINED;
+
+ if (! TREE_PUBLIC (decl))
+- SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_STATIC;
++ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_STATIC;
++
++ /* Short cut check for Darwin 'must indirect' rules. */
++ if (really_common_p
++ || (DECL_WEAK (decl) && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref))
++ || lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)))
++ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_MUST_INDIRECT;
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_i64scatter_epi64 (long long *__addr, __m128i __index,
-+_mm_i64scatter_epi64 (void *__addr, __m128i __index,
- __m128i __v1, const int __scale)
- {
- __builtin_ia32_scatterdiv2di (__addr, (__mmask8) 0xFF,
-@@ -10717,7 +11293,7 @@
+ void
+@@ -1252,12 +1311,13 @@
+ }
- extern __inline void
- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_i64scatter_epi64 (long long *__addr, __mmask8 __mask,
-+_mm_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask,
- __m128i __index, __m128i __v1,
- const int __scale)
+ static section *
+-darwin_rodata_section (int use_coal, bool zsize)
++darwin_rodata_section (int use_coal, bool zsize, int reloc)
{
-@@ -11771,582 +12347,6 @@
- (__mmask8) -1);
+ return (use_coal
+ ? darwin_sections[const_coal_section]
+ : (zsize ? darwin_sections[zobj_const_section]
+- : darwin_sections[const_section]));
++ : reloc ? darwin_sections[const_data_section]
++ : darwin_sections[const_section]));
}
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpneq_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpneq_epu32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmplt_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmplt_epu32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpge_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpge_epu32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmple_epu32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmple_epu32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpneq_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpneq_epu64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmplt_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmplt_epu64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpge_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpge_epu64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmple_epu64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmple_epu64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpneq_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpneq_epi32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmplt_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmplt_epi32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpge_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpge_epi32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmple_epi32_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmple_epi32_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd256_mask ((__v8si) __X,
-- (__v8si) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpneq_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpneq_epi64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmplt_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmplt_epi64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmpge_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmpge_epi64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_mask_cmple_epi64_mask (__mmask8 __M, __m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm256_cmple_epi64_mask (__m256i __X, __m256i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq256_mask ((__v4di) __X,
-- (__v4di) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpneq_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpneq_epu32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmplt_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmplt_epu32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpge_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpge_epu32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmple_epu32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmple_epu32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpneq_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpneq_epu64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmplt_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmplt_epu64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpge_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpge_epu64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmple_epu64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmple_epu64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_ucmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpneq_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpneq_epi32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmplt_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmplt_epi32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpge_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpge_epi32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmple_epi32_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmple_epi32_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpd128_mask ((__v4si) __X,
-- (__v4si) __Y, 2,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpneq_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 4,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpneq_epi64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 4,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmplt_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 1,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmplt_epi64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 1,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmpge_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 5,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmpge_epi64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 5,
-- (__mmask8) -1);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_mask_cmple_epi64_mask (__mmask8 __M, __m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 2,
-- (__mmask8) __M);
--}
--
--extern __inline __mmask8
-- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--_mm_cmple_epi64_mask (__m128i __X, __m128i __Y)
--{
-- return (__mmask8) __builtin_ia32_cmpq128_mask ((__v2di) __X,
-- (__v2di) __Y, 2,
-- (__mmask8) -1);
--}
--
- #else
- #define _mm256_permutex_pd(X, M) \
- ((__m256d) __builtin_ia32_permdf256_mask ((__v4df)(__m256d)(X), (int)(M), \
-@@ -12868,257 +12868,257 @@
-
- #define _mm256_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256) __builtin_ia32_gather3siv8sf ((__v8sf)(__m256)V1OLD, \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8si)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128) __builtin_ia32_gather3siv4sf ((__v4sf)(__m128)V1OLD, \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4si)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256d) __builtin_ia32_gather3siv4df ((__v4df)(__m256d)V1OLD, \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4si)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128d) __builtin_ia32_gather3siv2df ((__v2df)(__m128d)V1OLD, \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4si)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128) __builtin_ia32_gather3div8sf ((__v4sf)(__m128)V1OLD, \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4di)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128) __builtin_ia32_gather3div4sf ((__v4sf)(__m128)V1OLD, \
-- (float const *)ADDR, \
-+ (void const *)ADDR, \
- (__v2di)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256d) __builtin_ia32_gather3div4df ((__v4df)(__m256d)V1OLD, \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4di)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128d) __builtin_ia32_gather3div2df ((__v2df)(__m128d)V1OLD, \
-- (double const *)ADDR, \
-+ (void const *)ADDR, \
- (__v2di)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256i) __builtin_ia32_gather3siv8si ((__v8si)(__m256i)V1OLD, \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v8si)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128i) __builtin_ia32_gather3siv4si ((__v4si)(__m128i)V1OLD, \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4si)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256i) __builtin_ia32_gather3siv4di ((__v4di)(__m256i)V1OLD, \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4si)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128i) __builtin_ia32_gather3siv2di ((__v2di)(__m128i)V1OLD, \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4si)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128i) __builtin_ia32_gather3div8si ((__v4si)(__m128i)V1OLD, \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4di)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128i) __builtin_ia32_gather3div4si ((__v4si)(__m128i)V1OLD, \
-- (int const *)ADDR, \
-+ (void const *)ADDR, \
- (__v2di)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m256i) __builtin_ia32_gather3div4di ((__v4di)(__m256i)V1OLD, \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v4di)(__m256i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \
- (__m128i) __builtin_ia32_gather3div2di ((__v2di)(__m128i)V1OLD, \
-- (long long const *)ADDR, \
-+ (void const *)ADDR, \
- (__v2di)(__m128i)INDEX, \
- (__mmask8)MASK, (int)SCALE)
-
- #define _mm256_i32scatter_ps(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8sf ((float *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv8sf ((void *)ADDR, (__mmask8)0xFF, \
- (__v8si)(__m256i)INDEX, \
- (__v8sf)(__m256)V1, (int)SCALE)
-
- #define _mm256_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8sf ((float *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv8sf ((void *)ADDR, (__mmask8)MASK, \
- (__v8si)(__m256i)INDEX, \
- (__v8sf)(__m256)V1, (int)SCALE)
-
- #define _mm_i32scatter_ps(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4sf ((float *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv4sf ((void *)ADDR, (__mmask8)0xFF, \
- (__v4si)(__m128i)INDEX, \
- (__v4sf)(__m128)V1, (int)SCALE)
-
- #define _mm_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4sf ((float *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv4sf ((void *)ADDR, (__mmask8)MASK, \
- (__v4si)(__m128i)INDEX, \
- (__v4sf)(__m128)V1, (int)SCALE)
-
- #define _mm256_i32scatter_pd(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4df ((double *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv4df ((void *)ADDR, (__mmask8)0xFF, \
- (__v4si)(__m128i)INDEX, \
- (__v4df)(__m256d)V1, (int)SCALE)
-
- #define _mm256_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4df ((double *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv4df ((void *)ADDR, (__mmask8)MASK, \
- (__v4si)(__m128i)INDEX, \
- (__v4df)(__m256d)V1, (int)SCALE)
-
- #define _mm_i32scatter_pd(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv2df ((double *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv2df ((void *)ADDR, (__mmask8)0xFF, \
- (__v4si)(__m128i)INDEX, \
- (__v2df)(__m128d)V1, (int)SCALE)
-
- #define _mm_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv2df ((double *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv2df ((void *)ADDR, (__mmask8)MASK, \
- (__v4si)(__m128i)INDEX, \
- (__v2df)(__m128d)V1, (int)SCALE)
-
- #define _mm256_i64scatter_ps(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8sf ((float *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv8sf ((void *)ADDR, (__mmask8)0xFF, \
- (__v4di)(__m256i)INDEX, \
- (__v4sf)(__m128)V1, (int)SCALE)
-
- #define _mm256_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8sf ((float *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv8sf ((void *)ADDR, (__mmask8)MASK, \
- (__v4di)(__m256i)INDEX, \
- (__v4sf)(__m128)V1, (int)SCALE)
-
- #define _mm_i64scatter_ps(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4sf ((float *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv4sf ((void *)ADDR, (__mmask8)0xFF, \
- (__v2di)(__m128i)INDEX, \
- (__v4sf)(__m128)V1, (int)SCALE)
-
- #define _mm_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4sf ((float *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv4sf ((void *)ADDR, (__mmask8)MASK, \
- (__v2di)(__m128i)INDEX, \
- (__v4sf)(__m128)V1, (int)SCALE)
-
- #define _mm256_i64scatter_pd(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4df ((double *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv4df ((void *)ADDR, (__mmask8)0xFF, \
- (__v4di)(__m256i)INDEX, \
- (__v4df)(__m256d)V1, (int)SCALE)
-
- #define _mm256_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4df ((double *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv4df ((void *)ADDR, (__mmask8)MASK, \
- (__v4di)(__m256i)INDEX, \
- (__v4df)(__m256d)V1, (int)SCALE)
-
- #define _mm_i64scatter_pd(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv2df ((double *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv2df ((void *)ADDR, (__mmask8)0xFF, \
- (__v2di)(__m128i)INDEX, \
- (__v2df)(__m128d)V1, (int)SCALE)
-
- #define _mm_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv2df ((double *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv2df ((void *)ADDR, (__mmask8)MASK, \
- (__v2di)(__m128i)INDEX, \
- (__v2df)(__m128d)V1, (int)SCALE)
-
- #define _mm256_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8si ((int *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv8si ((void *)ADDR, (__mmask8)0xFF, \
- (__v8si)(__m256i)INDEX, \
- (__v8si)(__m256i)V1, (int)SCALE)
-
- #define _mm256_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv8si ((int *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv8si ((void *)ADDR, (__mmask8)MASK, \
- (__v8si)(__m256i)INDEX, \
- (__v8si)(__m256i)V1, (int)SCALE)
-
- #define _mm_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4si ((int *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv4si ((void *)ADDR, (__mmask8)0xFF, \
- (__v4si)(__m128i)INDEX, \
- (__v4si)(__m128i)V1, (int)SCALE)
-
- #define _mm_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4si ((int *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv4si ((void *)ADDR, (__mmask8)MASK, \
- (__v4si)(__m128i)INDEX, \
- (__v4si)(__m128i)V1, (int)SCALE)
-
- #define _mm256_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4di ((long long *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv4di ((void *)ADDR, (__mmask8)0xFF, \
- (__v4si)(__m128i)INDEX, \
- (__v4di)(__m256i)V1, (int)SCALE)
-
- #define _mm256_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv4di ((long long *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv4di ((void *)ADDR, (__mmask8)MASK, \
- (__v4si)(__m128i)INDEX, \
- (__v4di)(__m256i)V1, (int)SCALE)
-
- #define _mm_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv2di ((long long *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scattersiv2di ((void *)ADDR, (__mmask8)0xFF, \
- (__v4si)(__m128i)INDEX, \
- (__v2di)(__m128i)V1, (int)SCALE)
-
- #define _mm_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scattersiv2di ((long long *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scattersiv2di ((void *)ADDR, (__mmask8)MASK, \
- (__v4si)(__m128i)INDEX, \
- (__v2di)(__m128i)V1, (int)SCALE)
-
- #define _mm256_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8si ((int *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv8si ((void *)ADDR, (__mmask8)0xFF, \
- (__v4di)(__m256i)INDEX, \
- (__v4si)(__m128i)V1, (int)SCALE)
-
- #define _mm256_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv8si ((int *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv8si ((void *)ADDR, (__mmask8)MASK, \
- (__v4di)(__m256i)INDEX, \
- (__v4si)(__m128i)V1, (int)SCALE)
-
- #define _mm_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4si ((int *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv4si ((void *)ADDR, (__mmask8)0xFF, \
- (__v2di)(__m128i)INDEX, \
- (__v4si)(__m128i)V1, (int)SCALE)
-
- #define _mm_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4si ((int *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv4si ((void *)ADDR, (__mmask8)MASK, \
- (__v2di)(__m128i)INDEX, \
- (__v4si)(__m128i)V1, (int)SCALE)
-
- #define _mm256_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4di ((long long *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv4di ((void *)ADDR, (__mmask8)0xFF, \
- (__v4di)(__m256i)INDEX, \
- (__v4di)(__m256i)V1, (int)SCALE)
-
- #define _mm256_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv4di ((long long *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv4di ((void *)ADDR, (__mmask8)MASK, \
- (__v4di)(__m256i)INDEX, \
- (__v4di)(__m256i)V1, (int)SCALE)
-
- #define _mm_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv2di ((long long *)ADDR, (__mmask8)0xFF, \
-+ __builtin_ia32_scatterdiv2di ((void *)ADDR, (__mmask8)0xFF, \
- (__v2di)(__m128i)INDEX, \
- (__v2di)(__m128i)V1, (int)SCALE)
-
- #define _mm_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \
-- __builtin_ia32_scatterdiv2di ((long long *)ADDR, (__mmask8)MASK, \
-+ __builtin_ia32_scatterdiv2di ((void *)ADDR, (__mmask8)MASK, \
- (__v2di)(__m128i)INDEX, \
- (__v2di)(__m128i)V1, (int)SCALE)
-
-Index: gcc/config/i386/i386.c
-===================================================================
---- a/src/gcc/config/i386/i386.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/i386/i386.c (.../branches/gcc-6-branch)
-@@ -14027,6 +14027,8 @@
- GEN_INT (UNITS_PER_WORD), constm1_rtx,
- NULL_RTX, false);
- add_function_usage_to (call_insn, call_fusage);
-+ /* Indicate that this function can't jump to non-local gotos. */
-+ make_reg_eh_region_note_nothrow_nononlocal (as_a <rtx_insn *> (call_insn));
-
- /* In order to make call/return prediction work right, we now need
- to execute a return instruction. See
-@@ -16812,8 +16814,8 @@
- break;
-
- default:
-- output_operand_lossage
-- ("invalid operand size for operand code 'O'");
-+ output_operand_lossage ("invalid operand size for operand "
-+ "code 'O'");
- return;
- }
-
-@@ -16847,15 +16849,14 @@
- return;
-
- default:
-- output_operand_lossage
-- ("invalid operand size for operand code 'z'");
-+ output_operand_lossage ("invalid operand size for operand "
-+ "code 'z'");
- return;
- }
- }
-
- if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
-- warning
-- (0, "non-integer operand used with operand code 'z'");
-+ warning (0, "non-integer operand used with operand code 'z'");
- /* FALLTHRU */
-
- case 'Z':
-@@ -16917,13 +16918,12 @@
- }
- else
- {
-- output_operand_lossage
-- ("invalid operand type used with operand code 'Z'");
-+ output_operand_lossage ("invalid operand type used with "
-+ "operand code 'Z'");
- return;
- }
-
-- output_operand_lossage
-- ("invalid operand size for operand code 'Z'");
-+ output_operand_lossage ("invalid operand size for operand code 'Z'");
- return;
-
- case 'd':
-@@ -17115,7 +17115,12 @@
- break;
-
- case 'K':
-- gcc_assert (CONST_INT_P (x));
-+ if (!CONST_INT_P (x))
-+ {
-+ output_operand_lossage ("operand is not an integer, invalid "
-+ "operand code 'K'");
-+ return;
-+ }
-
- if (INTVAL (x) & IX86_HLE_ACQUIRE)
- #ifdef HAVE_AS_IX86_HLE
-@@ -17138,8 +17143,12 @@
- return;
-
- case 'r':
-- gcc_assert (CONST_INT_P (x));
-- gcc_assert (INTVAL (x) == ROUND_SAE);
-+ if (!CONST_INT_P (x) || INTVAL (x) != ROUND_SAE)
-+ {
-+ output_operand_lossage ("operand is not a specific integer, "
-+ "invalid operand code 'r'");
-+ return;
-+ }
-
- if (ASSEMBLER_DIALECT == ASM_INTEL)
- fputs (", ", file);
-@@ -17152,7 +17161,12 @@
- return;
+ static section *
+@@ -1550,7 +1610,7 @@
- case 'R':
-- gcc_assert (CONST_INT_P (x));
-+ if (!CONST_INT_P (x))
-+ {
-+ output_operand_lossage ("operand is not an integer, invalid "
-+ "operand code 'R'");
-+ return;
-+ }
-
- if (ASSEMBLER_DIALECT == ASM_INTEL)
- fputs (", ", file);
-@@ -17172,7 +17186,8 @@
- fputs ("{rz-sae}", file);
- break;
- default:
-- gcc_unreachable ();
-+ output_operand_lossage ("operand is not a specific integer, "
-+ "invalid operand code 'R'");
- }
-
- if (ASSEMBLER_DIALECT == ASM_ATT)
-@@ -17267,7 +17282,7 @@
- return;
+ case SECCAT_RODATA:
+ case SECCAT_SRODATA:
+- base_section = darwin_rodata_section (use_coal, zsize);
++ base_section = darwin_rodata_section (use_coal, zsize, reloc);
+ break;
- default:
-- output_operand_lossage ("invalid operand code '%c'", code);
-+ output_operand_lossage ("invalid operand code '%c'", code);
- }
- }
+ case SECCAT_RODATA_MERGE_STR:
+@@ -2086,11 +2146,11 @@
+ static int invok_count = 0;
+ static tree last_fun_decl = NULL_TREE;
+
+- /* We use the linker to emit the .eh labels for Darwin 9 and above. */
+- if (! for_eh || generating_for_darwin_version >= 9)
++ /* Modern linkers can produce distinct FDEs without compiler support. */
++ if (! for_eh || ! ld_needs_eh_markers)
+ return;
-@@ -27721,7 +27736,7 @@
- else if (disp && !base && !index)
+- /* FIXME: This only works when the eh for all sections of a function is
++ /* FIXME: This only works when the eh for all sections of a function are
+ emitted at the same time. If that changes, we would need to use a lookup
+ table of some form to determine what to do. Also, we should emit the
+ unadorned label for the partition containing the public label for a
+@@ -3148,17 +3208,19 @@
+ : (generating_for_darwin_version >= 9) ? 1
+ : 0);
+
+- /* Objective-C family ABI 2 is only valid for next/m64 at present. */
+ if (global_options_set.x_flag_objc_abi && flag_next_runtime)
{
- len += 4;
-- if (rip_relative_addr_p (&parts))
-+ if (!rip_relative_addr_p (&parts))
- len++;
- }
- else
-@@ -29372,7 +29387,7 @@
- != TYPE_MAIN_VARIANT (va_list_type_node)))
- && TYPE_SIZE (type)
- && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
-- && wi::geu_p (TYPE_SIZE (type), 16)
-+ && wi::geu_p (TYPE_SIZE (type), 128)
- && align < 128)
- return 128;
+- if (TARGET_64BIT && global_options.x_flag_objc_abi < 2)
+- error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 must be"
+- " used for %<-m64%> targets with"
+- " %<-fnext-runtime%>");
+- if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2)
+- error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is not"
+- " supported on %<-m32%> targets with"
+- " %<-fnext-runtime%>");
++ if (TARGET_64BIT && global_options.x_flag_objc_abi != 2)
++ /* The Objective-C family ABI 2 is the only valid version NeXT/m64. */
++ error_at (UNKNOWN_LOCATION,
++ "%<-fobjc-abi-version%> 2 must be used for 64 bit targets"
++ " with %<-fnext-runtime%>");
++ else if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2)
++ /* ABI versions 0 and 1 are the only valid versions NeXT/m32. */
++ error_at (UNKNOWN_LOCATION,
++ "%<-fobjc-abi-version%> %d is not supported for 32 bit"
++ " targets with %<-fnext-runtime%>",
++ global_options.x_flag_objc_abi);
}
-@@ -32715,9 +32730,9 @@
- /* Special builtins with variable number of arguments. */
- static const struct builtin_description bdesc_special_args[] =
- {
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID },
-+ { 0, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID },
-+ { 0, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED },
-+ { 0, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID },
-
- /* 80387 (for use internally for atomic compound assignment). */
- { 0, CODE_FOR_fnstenv, "__builtin_ia32_fnstenv", IX86_BUILTIN_FNSTENV, UNKNOWN, (int) VOID_FTYPE_PVOID },
-@@ -33012,13 +33027,13 @@
- /* Builtins with variable number of arguments. */
- static const struct builtin_description bdesc_args[] =
- {
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT },
-+ { 0, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT },
- { OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64 },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
-- { ~OPTION_MASK_ISA_64BIT, CODE_FOR_rotrhi3, "__builtin_ia32_rorhi", IX86_BUILTIN_RORHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
-+ { 0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT },
-+ { 0, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
-+ { 0, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
-+ { 0, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
-+ { 0, CODE_FOR_rotrhi3, "__builtin_ia32_rorhi", IX86_BUILTIN_RORHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
-
- /* MMX */
- { OPTION_MASK_ISA_MMX, CODE_FOR_mmx_addv8qi3, "__builtin_ia32_paddb", IX86_BUILTIN_PADDB, UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI },
-@@ -35719,35 +35734,35 @@
-
- /* AVX512F */
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16sf",
-- V16SF_FTYPE_V16SF_PCFLOAT_V16SI_HI_INT,
-+ V16SF_FTYPE_V16SF_PCVOID_V16SI_HI_INT,
- IX86_BUILTIN_GATHER3SIV16SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8df",
-- V8DF_FTYPE_V8DF_PCDOUBLE_V8SI_QI_INT,
-+ V8DF_FTYPE_V8DF_PCVOID_V8SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV8DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16sf",
-- V8SF_FTYPE_V8SF_PCFLOAT_V8DI_QI_INT,
-+ V8SF_FTYPE_V8SF_PCVOID_V8DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV16SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8df",
-- V8DF_FTYPE_V8DF_PCDOUBLE_V8DI_QI_INT,
-+ V8DF_FTYPE_V8DF_PCVOID_V8DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV8DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv16si",
-- V16SI_FTYPE_V16SI_PCINT_V16SI_HI_INT,
-+ V16SI_FTYPE_V16SI_PCVOID_V16SI_HI_INT,
- IX86_BUILTIN_GATHER3SIV16SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gathersiv8di",
-- V8DI_FTYPE_V8DI_PCINT64_V8SI_QI_INT,
-+ V8DI_FTYPE_V8DI_PCVOID_V8SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV8DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv16si",
-- V8SI_FTYPE_V8SI_PCINT_V8DI_QI_INT,
-+ V8SI_FTYPE_V8SI_PCVOID_V8DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV16SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatherdiv8di",
-- V8DI_FTYPE_V8DI_PCINT64_V8DI_QI_INT,
-+ V8DI_FTYPE_V8DI_PCVOID_V8DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV8DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_gatheraltsiv8df ",
-@@ -35767,100 +35782,100 @@
- IX86_BUILTIN_GATHER3ALTDIV16SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16sf",
-- VOID_FTYPE_PFLOAT_HI_V16SI_V16SF_INT,
-+ VOID_FTYPE_PVOID_HI_V16SI_V16SF_INT,
- IX86_BUILTIN_SCATTERSIV16SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8df",
-- VOID_FTYPE_PDOUBLE_QI_V8SI_V8DF_INT,
-+ VOID_FTYPE_PVOID_QI_V8SI_V8DF_INT,
- IX86_BUILTIN_SCATTERSIV8DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16sf",
-- VOID_FTYPE_PFLOAT_QI_V8DI_V8SF_INT,
-+ VOID_FTYPE_PVOID_QI_V8DI_V8SF_INT,
- IX86_BUILTIN_SCATTERDIV16SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8df",
-- VOID_FTYPE_PDOUBLE_QI_V8DI_V8DF_INT,
-+ VOID_FTYPE_PVOID_QI_V8DI_V8DF_INT,
- IX86_BUILTIN_SCATTERDIV8DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv16si",
-- VOID_FTYPE_PINT_HI_V16SI_V16SI_INT,
-+ VOID_FTYPE_PVOID_HI_V16SI_V16SI_INT,
- IX86_BUILTIN_SCATTERSIV16SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scattersiv8di",
-- VOID_FTYPE_PLONGLONG_QI_V8SI_V8DI_INT,
-+ VOID_FTYPE_PVOID_QI_V8SI_V8DI_INT,
- IX86_BUILTIN_SCATTERSIV8DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv16si",
-- VOID_FTYPE_PINT_QI_V8DI_V8SI_INT,
-+ VOID_FTYPE_PVOID_QI_V8DI_V8SI_INT,
- IX86_BUILTIN_SCATTERDIV16SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatterdiv8di",
-- VOID_FTYPE_PLONGLONG_QI_V8DI_V8DI_INT,
-+ VOID_FTYPE_PVOID_QI_V8DI_V8DI_INT,
- IX86_BUILTIN_SCATTERDIV8DI);
-
- /* AVX512VL */
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv2df",
-- V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_QI_INT,
-+ V2DF_FTYPE_V2DF_PCVOID_V4SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV2DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4df",
-- V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_QI_INT,
-+ V4DF_FTYPE_V4DF_PCVOID_V4SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV4DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div2df",
-- V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_QI_INT,
-+ V2DF_FTYPE_V2DF_PCVOID_V2DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV2DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4df",
-- V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_QI_INT,
-+ V4DF_FTYPE_V4DF_PCVOID_V4DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV4DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4sf",
-- V4SF_FTYPE_V4SF_PCFLOAT_V4SI_QI_INT,
-+ V4SF_FTYPE_V4SF_PCVOID_V4SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV4SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv8sf",
-- V8SF_FTYPE_V8SF_PCFLOAT_V8SI_QI_INT,
-+ V8SF_FTYPE_V8SF_PCVOID_V8SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV8SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4sf",
-- V4SF_FTYPE_V4SF_PCFLOAT_V2DI_QI_INT,
-+ V4SF_FTYPE_V4SF_PCVOID_V2DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV4SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div8sf",
-- V4SF_FTYPE_V4SF_PCFLOAT_V4DI_QI_INT,
-+ V4SF_FTYPE_V4SF_PCVOID_V4DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV8SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv2di",
-- V2DI_FTYPE_V2DI_PCINT64_V4SI_QI_INT,
-+ V2DI_FTYPE_V2DI_PCVOID_V4SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV2DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4di",
-- V4DI_FTYPE_V4DI_PCINT64_V4SI_QI_INT,
-+ V4DI_FTYPE_V4DI_PCVOID_V4SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV4DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div2di",
-- V2DI_FTYPE_V2DI_PCINT64_V2DI_QI_INT,
-+ V2DI_FTYPE_V2DI_PCVOID_V2DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV2DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4di",
-- V4DI_FTYPE_V4DI_PCINT64_V4DI_QI_INT,
-+ V4DI_FTYPE_V4DI_PCVOID_V4DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV4DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv4si",
-- V4SI_FTYPE_V4SI_PCINT_V4SI_QI_INT,
-+ V4SI_FTYPE_V4SI_PCVOID_V4SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV4SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3siv8si",
-- V8SI_FTYPE_V8SI_PCINT_V8SI_QI_INT,
-+ V8SI_FTYPE_V8SI_PCVOID_V8SI_QI_INT,
- IX86_BUILTIN_GATHER3SIV8SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div4si",
-- V4SI_FTYPE_V4SI_PCINT_V2DI_QI_INT,
-+ V4SI_FTYPE_V4SI_PCVOID_V2DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV4SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3div8si",
-- V4SI_FTYPE_V4SI_PCINT_V4DI_QI_INT,
-+ V4SI_FTYPE_V4SI_PCVOID_V4DI_QI_INT,
- IX86_BUILTIN_GATHER3DIV8SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_gather3altsiv4df ",
-@@ -35880,67 +35895,67 @@
- IX86_BUILTIN_GATHER3ALTDIV8SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv8sf",
-- VOID_FTYPE_PFLOAT_QI_V8SI_V8SF_INT,
-+ VOID_FTYPE_PVOID_QI_V8SI_V8SF_INT,
- IX86_BUILTIN_SCATTERSIV8SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4sf",
-- VOID_FTYPE_PFLOAT_QI_V4SI_V4SF_INT,
-+ VOID_FTYPE_PVOID_QI_V4SI_V4SF_INT,
- IX86_BUILTIN_SCATTERSIV4SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4df",
-- VOID_FTYPE_PDOUBLE_QI_V4SI_V4DF_INT,
-+ VOID_FTYPE_PVOID_QI_V4SI_V4DF_INT,
- IX86_BUILTIN_SCATTERSIV4DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv2df",
-- VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT,
-+ VOID_FTYPE_PVOID_QI_V4SI_V2DF_INT,
- IX86_BUILTIN_SCATTERSIV2DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv8sf",
-- VOID_FTYPE_PFLOAT_QI_V4DI_V4SF_INT,
-+ VOID_FTYPE_PVOID_QI_V4DI_V4SF_INT,
- IX86_BUILTIN_SCATTERDIV8SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4sf",
-- VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT,
-+ VOID_FTYPE_PVOID_QI_V2DI_V4SF_INT,
- IX86_BUILTIN_SCATTERDIV4SF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4df",
-- VOID_FTYPE_PDOUBLE_QI_V4DI_V4DF_INT,
-+ VOID_FTYPE_PVOID_QI_V4DI_V4DF_INT,
- IX86_BUILTIN_SCATTERDIV4DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv2df",
-- VOID_FTYPE_PDOUBLE_QI_V2DI_V2DF_INT,
-+ VOID_FTYPE_PVOID_QI_V2DI_V2DF_INT,
- IX86_BUILTIN_SCATTERDIV2DF);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv8si",
-- VOID_FTYPE_PINT_QI_V8SI_V8SI_INT,
-+ VOID_FTYPE_PVOID_QI_V8SI_V8SI_INT,
- IX86_BUILTIN_SCATTERSIV8SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4si",
-- VOID_FTYPE_PINT_QI_V4SI_V4SI_INT,
-+ VOID_FTYPE_PVOID_QI_V4SI_V4SI_INT,
- IX86_BUILTIN_SCATTERSIV4SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv4di",
-- VOID_FTYPE_PLONGLONG_QI_V4SI_V4DI_INT,
-+ VOID_FTYPE_PVOID_QI_V4SI_V4DI_INT,
- IX86_BUILTIN_SCATTERSIV4DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scattersiv2di",
-- VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT,
-+ VOID_FTYPE_PVOID_QI_V4SI_V2DI_INT,
- IX86_BUILTIN_SCATTERSIV2DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv8si",
-- VOID_FTYPE_PINT_QI_V4DI_V4SI_INT,
-+ VOID_FTYPE_PVOID_QI_V4DI_V4SI_INT,
- IX86_BUILTIN_SCATTERDIV8SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4si",
-- VOID_FTYPE_PINT_QI_V2DI_V4SI_INT,
-+ VOID_FTYPE_PVOID_QI_V2DI_V4SI_INT,
- IX86_BUILTIN_SCATTERDIV4SI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv4di",
-- VOID_FTYPE_PLONGLONG_QI_V4DI_V4DI_INT,
-+ VOID_FTYPE_PVOID_QI_V4DI_V4DI_INT,
- IX86_BUILTIN_SCATTERDIV4DI);
-
- def_builtin (OPTION_MASK_ISA_AVX512VL, "__builtin_ia32_scatterdiv2di",
-- VOID_FTYPE_PLONGLONG_QI_V2DI_V2DI_INT,
-+ VOID_FTYPE_PVOID_QI_V2DI_V2DI_INT,
- IX86_BUILTIN_SCATTERDIV2DI);
- def_builtin (OPTION_MASK_ISA_AVX512F, "__builtin_ia32_scatteraltsiv8df ",
- VOID_FTYPE_PDOUBLE_QI_V16SI_V8DF_INT,
-@@ -35960,28 +35975,28 @@
-
- /* AVX512PF */
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd",
-- VOID_FTYPE_QI_V8SI_PCINT64_INT_INT,
-+ VOID_FTYPE_QI_V8SI_PCVOID_INT_INT,
- IX86_BUILTIN_GATHERPFDPD);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps",
-- VOID_FTYPE_HI_V16SI_PCINT_INT_INT,
-+ VOID_FTYPE_HI_V16SI_PCVOID_INT_INT,
- IX86_BUILTIN_GATHERPFDPS);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd",
-- VOID_FTYPE_QI_V8DI_PCINT64_INT_INT,
-+ VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
- IX86_BUILTIN_GATHERPFQPD);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps",
-- VOID_FTYPE_QI_V8DI_PCINT_INT_INT,
-+ VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
- IX86_BUILTIN_GATHERPFQPS);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd",
-- VOID_FTYPE_QI_V8SI_PCINT64_INT_INT,
-+ VOID_FTYPE_QI_V8SI_PCVOID_INT_INT,
- IX86_BUILTIN_SCATTERPFDPD);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdps",
-- VOID_FTYPE_HI_V16SI_PCINT_INT_INT,
-+ VOID_FTYPE_HI_V16SI_PCVOID_INT_INT,
- IX86_BUILTIN_SCATTERPFDPS);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqpd",
-- VOID_FTYPE_QI_V8DI_PCINT64_INT_INT,
-+ VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
- IX86_BUILTIN_SCATTERPFQPD);
- def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqps",
-- VOID_FTYPE_QI_V8DI_PCINT_INT_INT,
-+ VOID_FTYPE_QI_V8DI_PCVOID_INT_INT,
- IX86_BUILTIN_SCATTERPFQPS);
-
- /* SHA */
-@@ -36085,11 +36100,11 @@
- IX86_BUILTIN_SBB64);
-
- /* Read/write FLAGS. */
-- def_builtin (~OPTION_MASK_ISA_64BIT, "__builtin_ia32_readeflags_u32",
-+ def_builtin (0, "__builtin_ia32_readeflags_u32",
- UNSIGNED_FTYPE_VOID, IX86_BUILTIN_READ_FLAGS);
- def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_readeflags_u64",
- UINT64_FTYPE_VOID, IX86_BUILTIN_READ_FLAGS);
-- def_builtin (~OPTION_MASK_ISA_64BIT, "__builtin_ia32_writeeflags_u32",
-+ def_builtin (0, "__builtin_ia32_writeeflags_u32",
- VOID_FTYPE_UNSIGNED, IX86_BUILTIN_WRITE_FLAGS);
- def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_writeeflags_u64",
- VOID_FTYPE_UINT64, IX86_BUILTIN_WRITE_FLAGS);
-@@ -38062,6 +38077,8 @@
- || GET_MODE (target) != tmode
- || !insn_data[icode].operand[0].predicate (target, tmode))
- target = gen_reg_rtx (tmode);
-+ else if (memory_operand (target, tmode))
-+ num_memory++;
-
- gcc_assert (nargs <= 4);
-
-@@ -39336,6 +39353,8 @@
- || GET_MODE (target) != tmode
- || !insn_p->operand[0].predicate (target, tmode))
- target = gen_reg_rtx (tmode);
-+ else if (memory_operand (target, tmode))
-+ num_memory++;
- real_target = target;
+
+ /* Don't emit DWARF3/4 unless specifically selected. This is a
+@@ -3261,12 +3323,45 @@
+ flag_pic = 2;
}
- else
-@@ -39355,10 +39374,17 @@
- {
- /* SIMD shift insns take either an 8-bit immediate or
- register as count. But builtin functions take int as
-- count. If count doesn't match, we put it in register. */
-+ count. If count doesn't match, we put it in register.
-+ The instructions are using 64-bit count, if op is just
-+ 32-bit, zero-extend it, as negative shift counts
-+ are undefined behavior and zero-extension is more
-+ efficient. */
- if (!match)
- {
-- op = simplify_gen_subreg (SImode, op, GET_MODE (op), 0);
-+ if (SCALAR_INT_MODE_P (GET_MODE (op)))
-+ op = convert_modes (mode, GET_MODE (op), op, 1);
-+ else
-+ op = simplify_gen_subreg (mode, op, GET_MODE (op), 0);
- if (!insn_p->operand[i + 1].predicate (op, mode))
- op = copy_to_reg (op);
- }
-@@ -40518,9 +40544,18 @@
- Originally the builtin was not created if it wasn't applicable to the
- current ISA based on the command line switches. With function specific
- options, we need to check in the context of the function making the call
-- whether it is supported. */
-- if (ix86_builtins_isa[fcode].isa
-- && !(ix86_builtins_isa[fcode].isa & ix86_isa_flags))
-+ whether it is supported. Treat AVX512VL specially. For other flags,
-+ if isa includes more than one ISA bit, treat those are requiring any
-+ of them. For AVX512VL, require both AVX512VL and the non-AVX512VL
-+ ISAs. Similarly for 64BIT, but we shouldn't be building such builtins
-+ at all, -m64 is a whole TU option. */
-+ if (((ix86_builtins_isa[fcode].isa
-+ & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_64BIT))
-+ && !(ix86_builtins_isa[fcode].isa
-+ & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_64BIT)
-+ & ix86_isa_flags))
-+ || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL)
-+ && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)))
- {
- char *opts = ix86_target_string (ix86_builtins_isa[fcode].isa, 0, NULL,
- NULL, (enum fpmath_unit) 0, false);
-@@ -41322,9 +41357,6 @@
- mode0 = DImode;
-
- rdrand_step:
-- op0 = gen_reg_rtx (mode0);
-- emit_insn (GEN_FCN (icode) (op0));
--
- arg0 = CALL_EXPR_ARG (exp, 0);
- op1 = expand_normal (arg0);
- if (!address_operand (op1, VOIDmode))
-@@ -41332,6 +41364,10 @@
- op1 = convert_memory_address (Pmode, op1);
- op1 = copy_addr_to_reg (op1);
- }
-+
-+ op0 = gen_reg_rtx (mode0);
-+ emit_insn (GEN_FCN (icode) (op0));
-+
- emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
- op1 = gen_reg_rtx (SImode);
-@@ -41340,8 +41376,20 @@
- /* Emit SImode conditional move. */
- if (mode0 == HImode)
- {
-- op2 = gen_reg_rtx (SImode);
-- emit_insn (gen_zero_extendhisi2 (op2, op0));
-+ if (TARGET_ZERO_EXTEND_WITH_AND
-+ && optimize_function_for_speed_p (cfun))
-+ {
-+ op2 = force_reg (SImode, const0_rtx);
+- /* It is assumed that branch island stubs are needed for earlier systems. */
+- if (generating_for_darwin_version < 9)
+- darwin_emit_branch_islands = true;
+- else
+- emit_aligned_common = true; /* Later systems can support aligned common. */
++ /* Linkers >= ld64-62.1 (at least) are capable of making the necessary PIC
++ indirections and we no longer need to emit pic symbol stubs.
++ However, if we are generating code for earlier ones (or for use in the
++ kernel) the stubs might still be required, and this will be set true.
++ If the user sets it on or off - then that takes precedence.
+
++ Linkers that don't need stubs, don't need the EH symbol markers either.
++ */
+
-+ emit_insn (gen_movstricthi
-+ (gen_lowpart (HImode, op2), op0));
-+ }
-+ else
++ if (!global_options_set.x_darwin_symbol_stubs)
++ {
++ if (darwin_target_linker)
++ {
++ if (strverscmp (darwin_target_linker, MIN_LD64_OMIT_STUBS) < 0)
+ {
-+ op2 = gen_reg_rtx (SImode);
-+
-+ emit_insn (gen_zero_extendhisi2 (op2, op0));
++ darwin_symbol_stubs = true;
++ ld_needs_eh_markers = true;
+ }
- }
- else if (mode0 == SImode)
- op2 = op0;
-@@ -41373,9 +41421,6 @@
- mode0 = DImode;
-
- rdseed_step:
-- op0 = gen_reg_rtx (mode0);
-- emit_insn (GEN_FCN (icode) (op0));
--
- arg0 = CALL_EXPR_ARG (exp, 0);
- op1 = expand_normal (arg0);
- if (!address_operand (op1, VOIDmode))
-@@ -41383,6 +41428,10 @@
- op1 = convert_memory_address (Pmode, op1);
- op1 = copy_addr_to_reg (op1);
- }
++ }
++ else if (generating_for_darwin_version < 9)
++ {
++ /* If we don't know the linker version and we're targeting an old
++ system, we know no better than to assume the use of an earlier
++ linker. */
++ darwin_symbol_stubs = true;
++ ld_needs_eh_markers = true;
++ }
++ }
++ else if (DARWIN_X86 && darwin_symbol_stubs && TARGET_64BIT)
++ {
++ inform (input_location,
++ "%<-msymbol-stubs%> is not required for 64b code (ignored)");
++ darwin_symbol_stubs = false;
++ }
+
-+ op0 = gen_reg_rtx (mode0);
-+ emit_insn (GEN_FCN (icode) (op0));
++ if (generating_for_darwin_version >= 9)
++ /* Later systems can support aligned common. */
++ emit_aligned_common = true;
+
- emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
-
- op2 = gen_reg_rtx (QImode);
-@@ -41488,14 +41537,12 @@
+ /* The c_dialect...() macros are not available to us here. */
+ darwin_running_cxx = (strstr (lang_hooks.name, "C++") != 0);
+ }
+Index: gcc/config/darwin.h
+===================================================================
+--- a/src/gcc/config/darwin.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin.h (.../branches/gcc-9-branch)
+@@ -126,6 +126,24 @@
+ "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \
+ %<gsplit-dwarf"
- case IX86_BUILTIN_KORTESTC16:
- icode = CODE_FOR_kortestchi;
-- mode0 = HImode;
-- mode1 = CCCmode;
-+ mode3 = CCCmode;
- goto kortest;
++#if LD64_HAS_EXPORT_DYNAMIC
++#define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
++#else
++#define DARWIN_RDYNAMIC "%{rdynamic:%nrdynamic is not supported}"
++#endif
++
++/* FIXME: we should check that the linker supports the -pie and -no_pie.
++ options. */
++#define DARWIN_PIE_SPEC \
++"%{pie|fpie|fPIE:\
++ %{mdynamic-no-pic: \
++ %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
++ :%:version-compare(>= 10.5 mmacosx-version-min= -pie) }} "
++
++#define DARWIN_NOPIE_SPEC \
++"%{no-pie|fno-pie|fno-PIE: \
++ %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }"
++
+ #define DARWIN_CC1_SPEC \
+ "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls " \
+ "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables " \
+@@ -156,20 +174,31 @@
+ #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \
+ " %{pthread:-D_REENTRANT}"
+
+-/* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus
+- precomp, libtool, and fat build additions.
++/* This is a fix for PR41260 by passing -no_compact_unwind on darwin10 and
++ later until the assembler, linker and libunwind are able to deal with the
++ output from GCC.
+
++ FIXME: we should check that the linker supports the option.
++*/
++
++#define DARWIN_NOCOMPACT_UNWIND \
++" %:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) "
++
++/* In Darwin linker specs we can put -lcrt0.o and ld will search the library
++ path for crt0.o or -lcrtx.a and it will search for for libcrtx.a. As for
++ other ports, we can also put xxx.{o,a}%s and get the appropriate complete
++ startfile absolute directory. This latter point is important when we want
++ to override ld's rule of .dylib being found ahead of .a and the user wants
++ the convenience library to be linked. */
++
++/* The LINK_COMMAND spec is mostly a clone of the standard LINK_COMMAND_SPEC,
++ plus precomp, libtool, and fat build additions.
++
+ In general, random Darwin linker flags should go into LINK_SPEC
+ instead of LINK_COMMAND_SPEC. The command spec is better for
+ specifying the handling of options understood by generic Unix
+ linkers, and for positional arguments like libraries. */
+
+-#if LD64_HAS_EXPORT_DYNAMIC
+-#define DARWIN_EXPORT_DYNAMIC " %{rdynamic:-export_dynamic}"
+-#else
+-#define DARWIN_EXPORT_DYNAMIC " %{rdynamic: %nrdynamic is not supported}"
+-#endif
+-
+ #define LINK_COMMAND_SPEC_A \
+ "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
+ %(linker)" \
+@@ -190,10 +219,14 @@
+ %{%:sanitize(address): -lasan } \
+ %{%:sanitize(undefined): -lubsan } \
+ %(link_ssp) \
+- " DARWIN_EXPORT_DYNAMIC " %<rdynamic \
+ %(link_gcc_c_sequence) \
+ }}}\
+- %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} }}}}}}}"
++ %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} "\
++ DARWIN_PIE_SPEC \
++ DARWIN_NOPIE_SPEC \
++ DARWIN_RDYNAMIC \
++ DARWIN_NOCOMPACT_UNWIND \
++ "}}}}}}} %<pie %<no-pie %<rdynamic "
+
+ #define DSYMUTIL "\ndsymutil"
+
+@@ -230,8 +263,6 @@
+ #define STANDARD_STARTFILE_PREFIX_1 ""
+ #define STANDARD_STARTFILE_PREFIX_2 ""
+
+-#define DARWIN_PIE_SPEC "%{fpie|pie|fPIE:}"
+-
+ /* Please keep the random linker options in alphabetical order (modulo
+ 'Z' and 'no' prefixes). Note that options taking arguments may appear
+ multiple times on a command line with different arguments each time,
+@@ -295,7 +326,6 @@
+ %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
+ %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \
+ %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \
+- " DARWIN_PIE_SPEC " \
+ %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \
+ %{read_only_relocs} \
+ %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \
+@@ -327,43 +357,42 @@
+
+ /* Support -mmacosx-version-min by supplying different (stub) libgcc_s.dylib
+ libraries to link against, and by not linking against libgcc_s on
+- earlier-than-10.3.9.
++ earlier-than-10.3.9. If we need exceptions, prior to 10.3.9, then we have
++ to link the static eh lib, since there's no shared version on the system.
+
+- Note that by default, -lgcc_eh is not linked against! This is
+- because in a future version of Darwin the EH frame information may
+- be in a new format, or the fallback routine might be changed; if
+- you want to explicitly link against the static version of those
+- routines, because you know you don't need to unwind through system
+- libraries, you need to explicitly say -static-libgcc.
++ Note that by default, except as above, -lgcc_eh is not linked against.
++ This is because,in general, we need to unwind through system libraries that
++ are linked with the shared unwinder in libunwind (or libgcc_s for 10.4/5).
+
+- If it is linked against, it has to be before -lgcc, because it may
++ The static version of the current libgcc unwinder (which differs from the
++ implementation in libunwind.dylib on systems Darwin10 [10.6]+) can be used
++ by specifying -static-libgcc.
++
++ If libgcc_eh is linked against, it has to be before -lgcc, because it might
+ need symbols from -lgcc. */
++
+ #undef REAL_LIBGCC_SPEC
+ #define REAL_LIBGCC_SPEC \
+ "%{static-libgcc|static: -lgcc_eh -lgcc; \
+- shared-libgcc|fexceptions|fgnu-runtime: \
+- %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \
++ shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime: \
++ %:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh) \
++ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
+ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \
+- %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \
++ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \
+ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \
+ -lgcc ; \
+ :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
+ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \
+- %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \
++ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \
+ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \
+ -lgcc }"
+
+-/* We specify crt0.o as -lcrt0.o so that ld will search the library path.
++/* We specify crt0.o as -lcrt0.o so that ld will search the library path. */
+
+- crt3.o provides __cxa_atexit on systems that don't have it. Since
+- it's only used with C++, which requires passing -shared-libgcc, key
+- off that to avoid unnecessarily adding a destructor to every
+- powerpc program built. */
+-
+ #undef STARTFILE_SPEC
+ #define STARTFILE_SPEC \
+- "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \
+- %{!Zdynamiclib:%{Zbundle:%{!static: \
++"%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \
++ %{!Zdynamiclib:%{Zbundle:%{!static: \
+ %:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o) \
+ %{fgnu-tm: -lcrttms.o}}} \
+ %{!Zbundle:%{pg:%{static:-lgcrt0.o} \
+@@ -377,7 +406,7 @@
+ %{!object:%{preload:-lcrt0.o} \
+ %{!preload: %(darwin_crt1) \
+ %(darwin_crt2)}}}}}} \
+- %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}"
++ %(darwin_crt3)"
+
+ /* We want a destructor last in the list. */
+ #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}"
+@@ -385,12 +414,10 @@
+
+ #define DARWIN_EXTRA_SPECS \
+ { "darwin_crt1", DARWIN_CRT1_SPEC }, \
++ { "darwin_crt2", DARWIN_CRT2_SPEC }, \
++ { "darwin_crt3", DARWIN_CRT3_SPEC }, \
+ { "darwin_dylib1", DARWIN_DYLIB1_SPEC },
+
+-#define DARWIN_DYLIB1_SPEC \
+- "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \
+- %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)"
+-
+ #define DARWIN_CRT1_SPEC \
+ "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \
+ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lcrt1.10.5.o) \
+@@ -397,6 +424,20 @@
+ %:version-compare(>< 10.6 10.8 mmacosx-version-min= -lcrt1.10.6.o) \
+ %{fgnu-tm: -lcrttms.o}"
+
++#define DARWIN_CRT2_SPEC ""
++
++/* crt3.o provides __cxa_atexit on systems that don't have it (and a fix
++ up for faulty versions on 10.4). Since it's only used with C++, which
++ requires passing -shared-libgcc, key off that to avoid unnecessarily
++ adding a destructor to every program built for 10.4 or earlier. */
++
++#define DARWIN_CRT3_SPEC \
++"%{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}"
++
++#define DARWIN_DYLIB1_SPEC \
++ "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \
++ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)"
++
+ #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION
+ /* Emit macosx version (but only major). */
+ #define ASM_MMACOSX_VERSION_MIN_SPEC \
+@@ -762,21 +803,52 @@
+ #undef TARGET_ASM_MARK_DECL_PRESERVED
+ #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved
+
+-/* Set on a symbol with SYMBOL_FLAG_FUNCTION or
+- MACHO_SYMBOL_FLAG_VARIABLE to indicate that the function or
+- variable has been defined in this translation unit.
+- When porting Mach-O to new architectures you need to make
+- sure these aren't clobbered by the backend. */
++/* Any port using this header needs to define the first available
++ subtarget symbol bit: SYMBOL_FLAG_SUBT_DEP. */
+
+-#define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_MACH_DEP)
+-#define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_MACH_DEP) << 1)
++/* Is a variable. */
++#define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_SUBT_DEP)
++#define MACHO_SYMBOL_VARIABLE_P(RTX) \
++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_VARIABLE) != 0)
+
++/* Set on a symbol that must be indirected, even when there is a
++ definition in the TU. The ABI mandates that common symbols are so
++ indirected, as are weak. If 'fix-and-continue' is operational then
++ data symbols might also be. */
++
++#define MACHO_SYMBOL_FLAG_MUST_INDIRECT ((SYMBOL_FLAG_SUBT_DEP) << 1)
++#define MACHO_SYMBOL_MUST_INDIRECT_P(RTX) \
++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_MUST_INDIRECT) != 0)
++
++/* Set on a symbol with SYMBOL_FLAG_FUNCTION or MACHO_SYMBOL_FLAG_VARIABLE
++ to indicate that the function or variable is considered defined in this
++ translation unit. */
++
++#define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_SUBT_DEP) << 2)
++#define MACHO_SYMBOL_DEFINED_P(RTX) \
++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_DEFINED) != 0)
++
++/* Set on a symbol that has specified non-default visibility. */
++
++#define MACHO_SYMBOL_FLAG_HIDDEN_VIS ((SYMBOL_FLAG_SUBT_DEP) << 3)
++#define MACHO_SYMBOL_HIDDEN_VIS_P(RTX) \
++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_HIDDEN_VIS) != 0)
++
++/* Set on a symbol that is a pic stub or symbol indirection (i.e. the
++ L_xxxxx${stub,non_lazy_ptr,lazy_ptr}. */
++
++#define MACHO_SYMBOL_FLAG_INDIRECTION ((SYMBOL_FLAG_SUBT_DEP) << 5)
++#define MACHO_SYMBOL_INDIRECTION_P(RTX) \
++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_INDIRECTION) != 0)
++
+ /* Set on a symbol to indicate when fix-and-continue style code
+ generation is being used and the symbol refers to a static symbol
+ that should be rebound from new instances of a translation unit to
+ the original instance of the data. */
+
+-#define MACHO_SYMBOL_STATIC ((SYMBOL_FLAG_MACH_DEP) << 2)
++#define MACHO_SYMBOL_FLAG_STATIC ((SYMBOL_FLAG_SUBT_DEP) << 6)
++#define MACHO_SYMBOL_STATIC_P(RTX) \
++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_STATIC) != 0)
+
+ /* Symbolic names for various things we might know about a symbol. */
+
+@@ -969,8 +1041,12 @@
+ _tested_ version known to support this so far. */
+ #define MIN_LD64_NO_COAL_SECTS "236.4"
+
++/* From at least version 62.1, ld64 can build symbol indirection stubs as
++ needed, and there is no need for the compiler to emit them. */
++#define MIN_LD64_OMIT_STUBS "85.2"
++
+ #ifndef LD64_VERSION
+-#define LD64_VERSION "85.2"
++#define LD64_VERSION "62.1"
+ #else
+ #define DEF_LD64 LD64_VERSION
+ #endif
+Index: gcc/config/darwin10.h
+===================================================================
+--- a/src/gcc/config/darwin10.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin10.h (.../branches/gcc-9-branch)
+@@ -18,17 +18,12 @@
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+
+-/* Fix PR41260 by passing -no_compact_unwind on darwin10 and later until
+- unwinder in libSystem is fixed to digest new epilog unwinding notes.
++/* Fix PR47558 by linking against libSystem ahead of libgcc_ext. */
+
+- Fix PR47558 by linking against libSystem ahead of libgcc_ext. */
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+ #define LINK_GCC_C_SEQUENCE_SPEC \
+-"%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
+- %{!static:%{!static-libgcc: \
++"%{!static:%{!static-libgcc: \
+ %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
+- %{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \
+- %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } \
+ %{!nostdlib:%:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef.o)} \
+ %G %{!nolibc:%L}"
- case IX86_BUILTIN_KORTESTZ16:
- icode = CODE_FOR_kortestzhi;
-- mode0 = HImode;
-- mode1 = CCZmode;
-+ mode3 = CCZmode;
+Index: gcc/config/arm/arm.c
+===================================================================
+--- a/src/gcc/config/arm/arm.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-9-branch)
+@@ -19670,6 +19670,35 @@
+ return save_reg_mask;
+ }
- kortest:
- arg0 = CALL_EXPR_ARG (exp, 0); /* Mask reg src1. */
-@@ -41503,19 +41550,32 @@
- op0 = expand_normal (arg0);
- op1 = expand_normal (arg1);
++/* Return a mask for the call-clobbered low registers that are unused
++ at the end of the prologue. */
++static unsigned long
++thumb1_prologue_unused_call_clobbered_lo_regs (void)
++{
++ unsigned long mask = 0;
++
++ for (int reg = 0; reg <= LAST_LO_REGNUM; reg++)
++ if (!callee_saved_reg_p (reg)
++ && !REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)),
++ reg))
++ mask |= 1 << reg;
++ return mask;
++}
++
++/* Similarly for the start of the epilogue. */
++static unsigned long
++thumb1_epilogue_unused_call_clobbered_lo_regs (void)
++{
++ unsigned long mask = 0;
++
++ for (int reg = 0; reg <= LAST_LO_REGNUM; reg++)
++ if (!callee_saved_reg_p (reg)
++ && !REGNO_REG_SET_P (df_get_live_in (EXIT_BLOCK_PTR_FOR_FN (cfun)),
++ reg))
++ mask |= 1 << reg;
++ return mask;
++}
++
+ /* Compute a bit mask of which core registers need to be
+ saved on the stack for the current function. */
+ static unsigned long
+@@ -19701,10 +19730,19 @@
+ if (mask & 0xff || thumb_force_lr_save ())
+ mask |= (1 << LR_REGNUM);
+
+- /* Make sure we have a low work register if we need one.
+- We will need one if we are going to push a high register,
+- but we are not currently intending to push a low register. */
++ bool call_clobbered_scratch
++ = (thumb1_prologue_unused_call_clobbered_lo_regs ()
++ && thumb1_epilogue_unused_call_clobbered_lo_regs ());
++
++ /* Make sure we have a low work register if we need one. We will
++ need one if we are going to push a high register, but we are not
++ currently intending to push a low register. However if both the
++ prologue and epilogue have a spare call-clobbered low register,
++ then we won't need to find an additional work register. It does
++ not need to be the same register in the prologue and
++ epilogue. */
+ if ((mask & 0xff) == 0
++ && !call_clobbered_scratch
+ && ((mask & 0x0f00) || TARGET_BACKTRACE))
+ {
+ /* Use thumb_find_work_register to choose which register
+@@ -24930,12 +24968,7 @@
+ unsigned long mask = live_regs_mask & 0xff;
+ int next_hi_reg;
+
+- /* The available low registers depend on the size of the value we are
+- returning. */
+- if (size <= 12)
+- mask |= 1 << 3;
+- if (size <= 8)
+- mask |= 1 << 2;
++ mask |= thumb1_epilogue_unused_call_clobbered_lo_regs ();
+
+ if (mask == 0)
+ /* Oh dear! We have no low registers into which we can pop
+@@ -24943,7 +24976,7 @@
+ internal_error
+ ("no low registers available for popping high registers");
+
+- for (next_hi_reg = 8; next_hi_reg < 13; next_hi_reg++)
++ for (next_hi_reg = 12; next_hi_reg > LAST_LO_REGNUM; next_hi_reg--)
+ if (live_regs_mask & (1 << next_hi_reg))
+ break;
-- op0 = copy_to_reg (op0);
-- op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0);
-- op1 = copy_to_reg (op1);
-- op1 = simplify_gen_subreg (mode0, op1, GET_MODE (op1), 0);
-+ mode0 = insn_data[icode].operand[0].mode;
-+ mode1 = insn_data[icode].operand[1].mode;
+@@ -24951,7 +24984,7 @@
+ {
+ /* Find lo register(s) into which the high register(s) can
+ be popped. */
+- for (regno = 0; regno <= LAST_LO_REGNUM; regno++)
++ for (regno = LAST_LO_REGNUM; regno >= 0; regno--)
+ {
+ if (mask & (1 << regno))
+ high_regs_pushed--;
+@@ -24959,13 +24992,14 @@
+ break;
+ }
-+ if (GET_MODE (op0) != VOIDmode)
-+ op0 = force_reg (GET_MODE (op0), op0);
-+
-+ op0 = gen_lowpart (mode0, op0);
-+
-+ if (!insn_data[icode].operand[0].predicate (op0, mode0))
-+ op0 = copy_to_mode_reg (mode0, op0);
-+
-+ if (GET_MODE (op1) != VOIDmode)
-+ op1 = force_reg (GET_MODE (op1), op1);
-+
-+ op1 = gen_lowpart (mode1, op1);
-+
-+ if (!insn_data[icode].operand[1].predicate (op1, mode1))
-+ op1 = copy_to_mode_reg (mode1, op1);
-+
- target = gen_reg_rtx (QImode);
-- emit_insn (gen_rtx_SET (target, const0_rtx));
+- mask &= (2 << regno) - 1; /* A noop if regno == 8 */
++ if (high_regs_pushed == 0 && regno >= 0)
++ mask &= ~((1 << regno) - 1);
- /* Emit kortest. */
- emit_insn (GEN_FCN (icode) (op0, op1));
- /* And use setcc to return result from flags. */
- ix86_expand_setcc (target, EQ,
-- gen_rtx_REG (mode1, FLAGS_REG), const0_rtx);
-+ gen_rtx_REG (mode3, FLAGS_REG), const0_rtx);
- return target;
+ /* Pop the values into the low register(s). */
+ thumb_pop (asm_out_file, mask);
- case IX86_BUILTIN_GATHERSIV2DF:
-@@ -45938,10 +45998,16 @@
- if (recog_memoized (insn) < 0)
- {
- rtx_insn *seq;
-+ machine_mode innermode = GET_MODE_INNER (mode);
-+ rtx reg;
-+
- /* If that fails, force VAL into a register. */
-
- start_sequence ();
-- XEXP (dup, 0) = force_reg (GET_MODE_INNER (mode), val);
-+ reg = force_reg (innermode, val);
-+ if (GET_MODE (reg) != innermode)
-+ reg = gen_lowpart (innermode, reg);
-+ XEXP (dup, 0) = reg;
- seq = get_insns ();
- end_sequence ();
- if (seq)
-Index: gcc/config/tilegx/tilegx.c
-===================================================================
---- a/src/gcc/config/tilegx/tilegx.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/tilegx/tilegx.c (.../branches/gcc-6-branch)
-@@ -3996,8 +3996,11 @@
- /* Save lr first in its special location because code after this
- might use the link register as a scratch register. */
- if (df_regs_ever_live_p (TILEGX_LINK_REGNUM) || crtl->calls_eh_return)
-- FRP (frame_emit_store (TILEGX_LINK_REGNUM, TILEGX_LINK_REGNUM,
-- stack_pointer_rtx, stack_pointer_rtx, 0));
-+ {
-+ FRP (frame_emit_store (TILEGX_LINK_REGNUM, TILEGX_LINK_REGNUM,
-+ stack_pointer_rtx, stack_pointer_rtx, 0));
-+ emit_insn (gen_blockage ());
-+ }
+ /* Move the value(s) into the high registers. */
+- for (regno = 0; regno <= LAST_LO_REGNUM; regno++)
++ for (regno = LAST_LO_REGNUM; regno >= 0; regno--)
+ {
+ if (mask & (1 << regno))
+ {
+@@ -24972,7 +25006,8 @@
+ asm_fprintf (asm_out_file, "\tmov\t%r, %r\n", next_hi_reg,
+ regno);
+
+- for (next_hi_reg++; next_hi_reg < 13; next_hi_reg++)
++ for (next_hi_reg--; next_hi_reg > LAST_LO_REGNUM;
++ next_hi_reg--)
+ if (live_regs_mask & (1 << next_hi_reg))
+ break;
+ }
+@@ -25354,10 +25389,20 @@
+ break;
- if (total_size == 0)
- {
-Index: gcc/config/avr/avr.c
-===================================================================
---- a/src/gcc/config/avr/avr.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/avr/avr.c (.../branches/gcc-6-branch)
-@@ -20,10 +20,13 @@
-
- #include "config.h"
- #include "system.h"
-+#include "intl.h"
- #include "coretypes.h"
- #include "backend.h"
- #include "target.h"
- #include "rtl.h"
-+#include "tree.h"
-+#include "cgraph.h"
- #include "c-family/c-common.h"
- #include "cfghooks.h"
- #include "df.h"
-@@ -9272,28 +9275,28 @@
-
- case VAR_DECL:
- if (as = avr_nonconst_pointer_addrspace (TREE_TYPE (node)), as)
-- reason = "variable";
-+ reason = _("variable");
- break;
+ /* Here we need to mask out registers used for passing arguments
+- even if they can be pushed. This is to avoid using them to stash the high
+- registers. Such kind of stash may clobber the use of arguments. */
++ even if they can be pushed. This is to avoid using them to
++ stash the high registers. Such kind of stash may clobber the
++ use of arguments. */
+ pushable_regs = l_mask & (~arg_regs_mask);
+- if (lr_needs_saving)
++ pushable_regs |= thumb1_prologue_unused_call_clobbered_lo_regs ();
++
++ /* Normally, LR can be used as a scratch register once it has been
++ saved; but if the function examines its own return address then
++ the value is still live and we need to avoid using it. */
++ bool return_addr_live
++ = REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)),
++ LR_REGNUM);
++
++ if (lr_needs_saving || return_addr_live)
+ pushable_regs &= ~(1 << LR_REGNUM);
+
+ if (pushable_regs == 0)
+@@ -25398,6 +25443,11 @@
+ push_mask |= 1 << LR_REGNUM;
+ real_regs_mask |= 1 << LR_REGNUM;
+ lr_needs_saving = false;
++ /* If the return address is not live at this point, we
++ can add LR to the list of registers that we can use
++ for pushes. */
++ if (!return_addr_live)
++ pushable_regs |= 1 << LR_REGNUM;
+ }
- case PARM_DECL:
- if (as = avr_nonconst_pointer_addrspace (TREE_TYPE (node)), as)
-- reason = "function parameter";
-+ reason = _("function parameter");
- break;
+ insn = thumb1_emit_multi_reg_push (push_mask, real_regs_mask);
+Index: gcc/config/arm/t-multilib
+===================================================================
+--- a/src/gcc/config/arm/t-multilib (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/arm/t-multilib (.../branches/gcc-9-branch)
+@@ -24,6 +24,8 @@
+ # values during the configure step. We enforce this during the
+ # top-level configury.
+
++s-mlib: $(srcdir)/config/arm/t-multilib $(srcdir)/config/arm/t-aprofile $(srcdir)/config/arm/t-rmprofile
++
+ MULTILIB_OPTIONS =
+ MULTILIB_DIRNAMES =
+ MULTILIB_EXCEPTIONS =
+@@ -63,6 +65,8 @@
+ v7_a_arch_variants := $(call all_feat_combs, mp sec)
+ v7_a_nosimd_variants := +fp +vfpv3 +vfpv3-d16-fp16 +vfpv3-fp16 +vfpv4-d16 +vfpv4
+ v7_a_simd_variants := +simd +neon-fp16 +neon-vfpv4
++v7_r_sp_variants := +fp.sp +fp.sp+idiv +vfpv3xd-fp16 +vfpv3xd-fp16+idiv
++v7_r_dp_variants := +fp +fp+idiv +vfpv3-d16-fp16 +vfpv3-d16-fp16+idiv
+ v7ve_nosimd_variants := +vfpv3-d16 +vfpv3 +vfpv3-d16-fp16 +vfpv3-fp16 +fp +vfpv4
+ v7ve_vfpv3_simd_variants := +neon +neon-fp16
+ v7ve_vfpv4_simd_variants := +simd
+@@ -86,8 +90,8 @@
+ MULTILIB_OPTIONS += marm/mthumb
+ MULTILIB_DIRNAMES += arm thumb
+
+-MULTILIB_OPTIONS += march=armv5te+fp/march=armv7/march=armv7+fp/$(MULTI_ARCH_OPTS_A)$(SEP)$(MULTI_ARCH_OPTS_RM)
+-MULTILIB_DIRNAMES += v5te v7 v7+fp $(MULTI_ARCH_DIRS_A) $(MULTI_ARCH_DIRS_RM)
++MULTILIB_OPTIONS += march=armv5te+fp/march=armv7/march=armv7+fp/march=armv7-r+fp.sp/$(MULTI_ARCH_OPTS_A)$(SEP)$(MULTI_ARCH_OPTS_RM)
++MULTILIB_DIRNAMES += v5te v7 v7+fp v7-r+fp.sp $(MULTI_ARCH_DIRS_A) $(MULTI_ARCH_DIRS_RM)
+
+ MULTILIB_OPTIONS += mfloat-abi=soft/mfloat-abi=softfp/mfloat-abi=hard
+ MULTILIB_DIRNAMES += nofp softfp hard
+@@ -100,15 +104,23 @@
+ MULTILIB_REQUIRED += mthumb/march=armv7+fp/mfloat-abi=softfp
+ MULTILIB_REQUIRED += mthumb/march=armv7+fp/mfloat-abi=hard
+
+-# Map v7-r down onto common v7 code.
++MULTILIB_REQUIRED += mthumb/march=armv7-r+fp.sp/mfloat-abi=softfp
++MULTILIB_REQUIRED += mthumb/march=armv7-r+fp.sp/mfloat-abi=hard
++
++# Map v7-r with double precision down onto common v7 code.
+ MULTILIB_MATCHES += march?armv7=march?armv7-r
+ MULTILIB_MATCHES += march?armv7=march?armv7-r+idiv
+-MULTILIB_MATCHES += march?armv7+fp=march?armv7-r+fp
+-MULTILIB_MATCHES += march?armv7+fp=march?armv7-r+fp+idiv
++MULTILIB_MATCHES += $(foreach ARCH, $(v7_r_dp_variants), \
++ march?armv7+fp=march?armv7-r$(ARCH))
+
++# Map v7-r single precision variants to v7-r with single precision.
++MULTILIB_MATCHES += $(foreach ARCH, \
++ $(filter-out +fp.sp, $(v7_r_sp_variants)), \
++ march?armv7-r+fp.sp=march?armv7-r$(ARCH))
++
+ MULTILIB_MATCHES += $(foreach ARCH, $(all_early_arch), \
+ march?armv5te+fp=march?$(ARCH)+fp)
+-# Map v8-r down onto common v7 code.
++# Map v8-r down onto common v7 code or v7-r sp.
+ MULTILIB_MATCHES += march?armv7=march?armv8-r
+ MULTILIB_MATCHES += $(foreach ARCH, $(v8_r_nosimd_variants), \
+ march?armv7=march?armv8-r$(ARCH))
+@@ -115,8 +127,9 @@
+ MULTILIB_MATCHES += $(foreach ARCH,+simd +crypto, \
+ march?armv7+fp=march?armv8-r$(ARCH) \
+ march?armv7+fp=march?armv8-r+crc$(ARCH))
++MULTILIB_MATCHES += march?armv7-r+fp.sp=march?armv8-r+fp.sp
++MULTILIB_MATCHES += march?armv7-r+fp.sp=march?armv8-r+crc+fp.sp
+
+-
+ ifeq (,$(HAS_APROFILE))
+ # Map all v7-a
+ MULTILIB_MATCHES += march?armv7=march?armv7-a
+@@ -177,7 +190,7 @@
+ MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.soft=marm/march.armv7/mfloat-abi.soft
+
+ MULTILIB_REUSE += $(foreach ABI, hard softfp, \
+- $(foreach ARCH, armv7+fp, \
++ $(foreach ARCH, armv7+fp armv7-r+fp\.sp, \
+ mthumb/march.$(ARCH)/mfloat-abi.$(ABI)=marm/march.$(ARCH)/mfloat-abi.$(ABI)))
+
+ # Softfp but no FP, use the soft-float libraries.
+Index: gcc/config/arm/arm_acle.h
+===================================================================
+--- a/src/gcc/config/arm/arm_acle.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/arm/arm_acle.h (.../branches/gcc-9-branch)
+@@ -174,8 +174,12 @@
+ #endif /* (!__thumb__ || __thumb2__) && __ARM_ARCH >= 4. */
- case FIELD_DECL:
- if (as = avr_nonconst_pointer_addrspace (TREE_TYPE (node)), as)
-- reason = "structure field";
-+ reason = _("structure field");
- break;
+ #pragma GCC push_options
+-#if __ARM_ARCH >= 8
++#ifdef __ARM_FEATURE_CRC32
++#ifdef __ARM_FP
++#pragma GCC target ("arch=armv8-a+crc+simd")
++#else
+ #pragma GCC target ("arch=armv8-a+crc")
++#endif
- case FUNCTION_DECL:
- if (as = avr_nonconst_pointer_addrspace (TREE_TYPE (TREE_TYPE (node))),
- as)
-- reason = "return type of function";
-+ reason = _("return type of function");
- break;
+ __extension__ static __inline uint32_t __attribute__ ((__always_inline__))
+ __crc32b (uint32_t __a, uint8_t __b)
+@@ -235,7 +239,7 @@
+ }
+ #endif
- case POINTER_TYPE:
- if (as = avr_nonconst_pointer_addrspace (node), as)
-- reason = "pointer";
-+ reason = _("pointer");
- break;
- }
+-#endif /* __ARM_ARCH >= 8. */
++#endif /* __ARM_FEATURE_CRC32 */
+ #pragma GCC pop_options
-@@ -9592,9 +9595,14 @@
- && !DECL_EXTERNAL (decl)
- && avr_progmem_p (decl, DECL_ATTRIBUTES (decl)))
- {
-- warning (OPT_Wuninitialized,
-- "uninitialized variable %q+D put into "
-- "program memory area", decl);
-+ // Don't warn for (implicit) aliases like in PR80462.
-+ tree asmname = DECL_ASSEMBLER_NAME (decl);
-+ varpool_node *node = varpool_node::get_for_asmname (asmname);
-+ bool alias_p = node && node->alias;
-+
-+ if (!alias_p)
-+ warning (OPT_Wuninitialized, "uninitialized variable %q+D put into "
-+ "program memory area", decl);
- }
+ #ifdef __cplusplus
+Index: gcc/config/arm/arm.opt
+===================================================================
+--- a/src/gcc/config/arm/arm.opt (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/arm/arm.opt (.../branches/gcc-9-branch)
+@@ -82,7 +82,7 @@
+ Target Report Mask(APCS_STACK) Undocumented
- default_encode_section_info (decl, rtl, new_decl_p);
-Index: gcc/config/nds32/nds32.md
-===================================================================
---- a/src/gcc/config/nds32/nds32.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/nds32/nds32.md (.../branches/gcc-6-branch)
-@@ -2288,11 +2288,9 @@
- emit_jump_insn (gen_cbranchsi4 (test, operands[0], operands[2],
- operands[4]));
-
-- operands[5] = gen_reg_rtx (SImode);
-- /* Step C, D, E, and F, using another temporary register operands[5]. */
-- emit_jump_insn (gen_casesi_internal (operands[0],
-- operands[3],
-- operands[5]));
-+ /* Step C, D, E, and F, using another temporary register. */
-+ rtx tmp = gen_reg_rtx (SImode);
-+ emit_jump_insn (gen_casesi_internal (operands[0], operands[3], tmp));
- DONE;
- })
+ march=
+-Target RejectNegative ToLower Joined Var(arm_arch_string)
++Target RejectNegative Negative(march=) ToLower Joined Var(arm_arch_string)
+ Specify the name of the target architecture.
-Index: gcc/config/aarch64/t-aarch64-freebsd
-===================================================================
---- a/src/gcc/config/aarch64/t-aarch64-freebsd (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/t-aarch64-freebsd (.../branches/gcc-6-branch)
-@@ -0,0 +1,21 @@
-+# Machine description for AArch64 architecture.
-+# Copyright (C) 2016-2017 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 COPYING3. If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+LIB1ASMSRC = aarch64/lib1funcs.asm
-+LIB1ASMFUNCS = _aarch64_sync_cache_range
-Index: gcc/config/aarch64/aarch64-simd.md
-===================================================================
---- a/src/gcc/config/aarch64/aarch64-simd.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/aarch64-simd.md (.../branches/gcc-6-branch)
+ ; Other arm_arch values are loaded from arm-tables.opt
@@ -107,7 +107,7 @@
- case 1: return "str\\t%d1, %0";
- case 2: return "orr\t%0.<Vbtype>, %1.<Vbtype>, %1.<Vbtype>";
- case 3: return "umov\t%0, %1.d[0]";
-- case 4: return "ins\t%0.d[0], %1";
-+ case 4: return "fmov\t%d0, %1";
- case 5: return "mov\t%0, %1";
- case 6:
- return aarch64_output_simd_mov_immediate (operands[1],
-@@ -116,8 +116,8 @@
- }
+ Thumb: Assume function pointers may go to non-Thumb aware code.
+
+ mcpu=
+-Target RejectNegative ToLower Joined Var(arm_cpu_string)
++Target RejectNegative Negative(mcpu=) ToLower Joined Var(arm_cpu_string)
+ Specify the name of the target CPU.
+
+ mfloat-abi=
+@@ -232,7 +232,7 @@
+ Thumb: Generate (leaf) stack frames even if not needed.
+
+ mtune=
+-Target RejectNegative ToLower Joined Var(arm_tune_string)
++Target RejectNegative Negative(mtune=) ToLower Joined Var(arm_tune_string)
+ Tune code for the given processor.
+
+ mprint-tune-info
+Index: gcc/config/arm/arm.md
+===================================================================
+--- a/src/gcc/config/arm/arm.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/arm/arm.md (.../branches/gcc-9-branch)
+@@ -4483,62 +4483,78 @@
+ ; ARMv6+ unaligned load/store instructions (used for packed structure accesses).
+
+ (define_insn "unaligned_loadsi"
+- [(set (match_operand:SI 0 "s_register_operand" "=l,r")
+- (unspec:SI [(match_operand:SI 1 "memory_operand" "Uw,m")]
++ [(set (match_operand:SI 0 "s_register_operand" "=l,l,r")
++ (unspec:SI [(match_operand:SI 1 "memory_operand" "m,Uw,m")]
+ UNSPEC_UNALIGNED_LOAD))]
+ "unaligned_access"
+- "ldr%?\t%0, %1\t@ unaligned"
+- [(set_attr "arch" "t2,any")
+- (set_attr "length" "2,4")
+- (set_attr "predicable" "yes")
+- (set_attr "predicable_short_it" "yes,no")
++ "@
++ ldr\t%0, %1\t@ unaligned
++ ldr%?\t%0, %1\t@ unaligned
++ ldr%?\t%0, %1\t@ unaligned"
++ [(set_attr "arch" "t1,t2,32")
++ (set_attr "length" "2,2,4")
++ (set_attr "predicable" "no,yes,yes")
++ (set_attr "predicable_short_it" "no,yes,no")
+ (set_attr "type" "load_4")])
+
++;; The 16-bit Thumb1 variant of ldrsh requires two registers in the
++;; address (there's no immediate format). That's tricky to support
++;; here and we don't really need this pattern for that case, so only
++;; enable for 32-bit ISAs.
+ (define_insn "unaligned_loadhis"
+ [(set (match_operand:SI 0 "s_register_operand" "=r")
+ (sign_extend:SI
+ (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")]
+ UNSPEC_UNALIGNED_LOAD)))]
+- "unaligned_access"
++ "unaligned_access && TARGET_32BIT"
+ "ldrsh%?\t%0, %1\t@ unaligned"
+ [(set_attr "predicable" "yes")
+ (set_attr "type" "load_byte")])
+
+ (define_insn "unaligned_loadhiu"
+- [(set (match_operand:SI 0 "s_register_operand" "=l,r")
++ [(set (match_operand:SI 0 "s_register_operand" "=l,l,r")
+ (zero_extend:SI
+- (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,m")]
++ (unspec:HI [(match_operand:HI 1 "memory_operand" "m,Uw,m")]
+ UNSPEC_UNALIGNED_LOAD)))]
+ "unaligned_access"
+- "ldrh%?\t%0, %1\t@ unaligned"
+- [(set_attr "arch" "t2,any")
+- (set_attr "length" "2,4")
+- (set_attr "predicable" "yes")
+- (set_attr "predicable_short_it" "yes,no")
++ "@
++ ldrh\t%0, %1\t@ unaligned
++ ldrh%?\t%0, %1\t@ unaligned
++ ldrh%?\t%0, %1\t@ unaligned"
++ [(set_attr "arch" "t1,t2,32")
++ (set_attr "length" "2,2,4")
++ (set_attr "predicable" "no,yes,yes")
++ (set_attr "predicable_short_it" "no,yes,no")
+ (set_attr "type" "load_byte")])
+
+ (define_insn "unaligned_storesi"
+- [(set (match_operand:SI 0 "memory_operand" "=Uw,m")
+- (unspec:SI [(match_operand:SI 1 "s_register_operand" "l,r")]
++ [(set (match_operand:SI 0 "memory_operand" "=m,Uw,m")
++ (unspec:SI [(match_operand:SI 1 "s_register_operand" "l,l,r")]
+ UNSPEC_UNALIGNED_STORE))]
+ "unaligned_access"
+- "str%?\t%1, %0\t@ unaligned"
+- [(set_attr "arch" "t2,any")
+- (set_attr "length" "2,4")
+- (set_attr "predicable" "yes")
+- (set_attr "predicable_short_it" "yes,no")
++ "@
++ str\t%1, %0\t@ unaligned
++ str%?\t%1, %0\t@ unaligned
++ str%?\t%1, %0\t@ unaligned"
++ [(set_attr "arch" "t1,t2,32")
++ (set_attr "length" "2,2,4")
++ (set_attr "predicable" "no,yes,yes")
++ (set_attr "predicable_short_it" "no,yes,no")
+ (set_attr "type" "store_4")])
+
+ (define_insn "unaligned_storehi"
+- [(set (match_operand:HI 0 "memory_operand" "=Uw,m")
+- (unspec:HI [(match_operand:HI 1 "s_register_operand" "l,r")]
++ [(set (match_operand:HI 0 "memory_operand" "=m,Uw,m")
++ (unspec:HI [(match_operand:HI 1 "s_register_operand" "l,l,r")]
+ UNSPEC_UNALIGNED_STORE))]
+ "unaligned_access"
+- "strh%?\t%1, %0\t@ unaligned"
+- [(set_attr "arch" "t2,any")
+- (set_attr "length" "2,4")
+- (set_attr "predicable" "yes")
+- (set_attr "predicable_short_it" "yes,no")
++ "@
++ strh\t%1, %0\t@ unaligned
++ strh%?\t%1, %0\t@ unaligned
++ strh%?\t%1, %0\t@ unaligned"
++ [(set_attr "arch" "t1,t2,32")
++ (set_attr "length" "2,2,4")
++ (set_attr "predicable" "no,yes,yes")
++ (set_attr "predicable_short_it" "no,yes,no")
+ (set_attr "type" "store_4")])
+
+
+Index: gcc/config/darwin-driver.c
+===================================================================
+--- a/src/gcc/config/darwin-driver.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin-driver.c (.../branches/gcc-9-branch)
+@@ -210,6 +210,28 @@
+ return new_flag;
}
- [(set_attr "type" "neon_load1_1reg<q>, neon_store1_1reg<q>,\
-- neon_logic<q>, neon_to_gp<q>, neon_from_gp<q>,\
-- mov_reg, neon_move<q>")]
-+ neon_logic<q>, neon_to_gp<q>, f_mcr,\
-+ mov_reg, neon_move<q>")]
- )
-
- (define_insn "*aarch64_simd_mov<mode>"
-Index: gcc/config/aarch64/aarch64-freebsd.h
-===================================================================
---- a/src/gcc/config/aarch64/aarch64-freebsd.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/aarch64-freebsd.h (.../branches/gcc-6-branch)
-@@ -0,0 +1,102 @@
-+/* Definitions for AArch64 running FreeBSD
-+ Copyright (C) 2016-2017 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 COPYING3. If not see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifndef GCC_AARCH64_FREEBSD_H
-+#define GCC_AARCH64_FREEBSD_H
-+
-+#undef SUBTARGET_CPP_SPEC
-+#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
-+
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define TARGET_LINKER_EMULATION "aarch64fbsdb"
-+#else
-+#define TARGET_LINKER_EMULATION "aarch64fbsd"
-+#endif
+
++/* See if we can find the sysroot from the SDKROOT environment variable. */
+
-+#undef SUBTARGET_EXTRA_LINK_SPEC
-+#define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION
-+
-+#undef FBSD_TARGET_LINK_SPEC
-+#define FBSD_TARGET_LINK_SPEC " \
-+ %{p:%nconsider using `-pg' instead of `-p' with gprof (1) } \
-+ %{v:-V} \
-+ %{assert*} %{R*} %{rpath*} %{defsym*} \
-+ %{shared:-Bshareable %{h*} %{soname*}} \
-+ %{symbolic:-Bsymbolic} \
-+ %{static:-Bstatic} \
-+ %{!static: \
-+ %{rdynamic:-export-dynamic} \
-+ %{!shared:-dynamic-linker " FBSD_DYNAMIC_LINKER " }} \
-+ -X" SUBTARGET_EXTRA_LINK_SPEC " \
-+ %{mbig-endian:-EB} %{mlittle-endian:-EL}"
-+
-+#if TARGET_FIX_ERR_A53_835769_DEFAULT
-+#define CA53_ERR_835769_SPEC \
-+ " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
-+#else
-+#define CA53_ERR_835769_SPEC \
-+ " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
-+#endif
++static const char *
++maybe_get_sysroot_from_sdkroot ()
++{
++ const char *maybe_sysroot = getenv ("SDKROOT");
+
-+#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
-+#define CA53_ERR_843419_SPEC \
-+ " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
-+#else
-+#define CA53_ERR_843419_SPEC \
-+ " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
-+#endif
++ /* We'll use the same rules as the clang driver, for compatibility.
++ 1) The path must be absolute
++ 2) Ignore "/", that is the default anyway and we do not want the
++ sysroot semantics to be applied to it.
++ 3) It must exist (actually, we'll check it's readable too). */
+
-+#undef LINK_SPEC
-+#define LINK_SPEC FBSD_TARGET_LINK_SPEC \
-+ CA53_ERR_835769_SPEC \
-+ CA53_ERR_843419_SPEC
++ if (maybe_sysroot == NULL
++ || *maybe_sysroot != '/'
++ || strlen (maybe_sysroot) == 1
++ || access (maybe_sysroot, R_OK) == -1)
++ return NULL;
+
-+#define GNU_USER_TARGET_MATHFILE_SPEC \
-+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
++ return xstrndup (maybe_sysroot, strlen (maybe_sysroot));
++}
+
-+#undef ENDFILE_SPEC
-+#define ENDFILE_SPEC \
-+ GNU_USER_TARGET_MATHFILE_SPEC " " \
-+ FBSD_ENDFILE_SPEC
-+
-+#undef TARGET_OS_CPP_BUILTINS
-+#define TARGET_OS_CPP_BUILTINS() \
-+ do \
-+ { \
-+ FBSD_TARGET_OS_CPP_BUILTINS (); \
-+ } \
-+ while (false)
-+
-+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+
-+/* Uninitialized common symbols in non-PIE executables, even with
-+ strong definitions in dependent shared libraries, will resolve
-+ to COPY relocated symbol in the executable. See PR65780. */
-+#undef TARGET_BINDS_LOCAL_P
-+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2
-+
-+/* Use the AAPCS type for wchar_t, override the one from
-+ config/freebsd.h. */
-+#undef WCHAR_TYPE
-+#define WCHAR_TYPE "unsigned int"
-+
-+#undef MCOUNT_NAME
-+#define MCOUNT_NAME ".mcount"
-+
-+#endif /* GCC_AARCH64_FREEBSD_H */
-Index: gcc/config/aarch64/aarch64.md
-===================================================================
---- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-6-branch)
-@@ -587,25 +587,6 @@
- [(set_attr "type" "branch")]
- )
-
--(define_insn "eh_return"
-- [(unspec_volatile [(match_operand:DI 0 "register_operand" "r")]
-- UNSPECV_EH_RETURN)]
-- ""
-- "#"
-- [(set_attr "type" "branch")]
--
--)
--
--(define_split
-- [(unspec_volatile [(match_operand:DI 0 "register_operand" "")]
-- UNSPECV_EH_RETURN)]
-- "reload_completed"
-- [(set (match_dup 1) (match_dup 0))]
-- {
-- operands[1] = aarch64_final_eh_return_addr ();
-- }
--)
--
- (define_insn "*cb<optab><mode>1"
- [(set (pc) (if_then_else (EQL (match_operand:GPI 0 "register_operand" "r")
- (const_int 0))
-@@ -5121,11 +5102,11 @@
- (set_attr "type" "block")]
- )
-
--(define_insn "probe_stack_range_<PTR:mode>"
-- [(set (match_operand:PTR 0 "register_operand" "=r")
-- (unspec_volatile:PTR [(match_operand:PTR 1 "register_operand" "0")
-- (match_operand:PTR 2 "register_operand" "r")]
-- UNSPECV_PROBE_STACK_RANGE))]
-+(define_insn "probe_stack_range"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")
-+ (match_operand:DI 2 "register_operand" "r")]
-+ UNSPECV_PROBE_STACK_RANGE))]
- ""
- {
- return aarch64_output_probe_stack_range (operands[0], operands[2]);
-Index: gcc/config/aarch64/aarch64-protos.h
-===================================================================
---- a/src/gcc/config/aarch64/aarch64-protos.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/aarch64-protos.h (.../branches/gcc-6-branch)
-@@ -338,7 +338,7 @@
- int aarch64_simd_attr_length_move (rtx_insn *);
- int aarch64_uxt_size (int, HOST_WIDE_INT);
- int aarch64_vec_fpconst_pow_of_2 (rtx);
--rtx aarch64_final_eh_return_addr (void);
-+rtx aarch64_eh_return_handler_rtx (void);
- rtx aarch64_legitimize_reload_address (rtx *, machine_mode, int, int, int);
- rtx aarch64_mask_from_zextract_ops (rtx, rtx);
- const char *aarch64_output_move_struct (rtx *operands);
-Index: gcc/config/aarch64/aarch64.c
-===================================================================
---- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-6-branch)
-@@ -2316,7 +2316,7 @@
- static void
- aarch64_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
- {
-- rtx reg1 = gen_rtx_REG (ptr_mode, PROBE_STACK_FIRST_REG);
-+ rtx reg1 = gen_rtx_REG (Pmode, PROBE_STACK_FIRST_REG);
-
- /* See the same assertion on PROBE_INTERVAL above. */
- gcc_assert ((first % ARITH_FACTOR) == 0);
-@@ -2328,9 +2328,9 @@
- const HOST_WIDE_INT base = ROUND_UP (size, ARITH_FACTOR);
-
- emit_set_insn (reg1,
-- plus_constant (ptr_mode,
-+ plus_constant (Pmode,
- stack_pointer_rtx, -(first + base)));
-- emit_stack_probe (plus_constant (ptr_mode, reg1, base - size));
-+ emit_stack_probe (plus_constant (Pmode, reg1, base - size));
- }
+ /* Translate -filelist and -framework options in *DECODED_OPTIONS
+ (size *DECODED_OPTIONS_COUNT) to use -Xlinker so that they are
+ considered to be linker inputs in the case that no other inputs are
+@@ -234,6 +256,7 @@
+ bool appendM64 = false;
+ const char *vers_string = NULL;
+ bool seen_version_min = false;
++ bool seen_sysroot_p = false;
- /* The run-time loop is made up of 8 insns in the generic case while the
-@@ -2340,7 +2340,7 @@
- HOST_WIDE_INT i, rem;
-
- emit_set_insn (reg1,
-- plus_constant (ptr_mode,
-+ plus_constant (Pmode,
- stack_pointer_rtx,
- -(first + PROBE_INTERVAL)));
- emit_stack_probe (reg1);
-@@ -2351,7 +2351,7 @@
- for (i = 2 * PROBE_INTERVAL; i < size; i += PROBE_INTERVAL)
- {
- emit_set_insn (reg1,
-- plus_constant (ptr_mode, reg1, -PROBE_INTERVAL));
-+ plus_constant (Pmode, reg1, -PROBE_INTERVAL));
- emit_stack_probe (reg1);
- }
-
-@@ -2360,11 +2360,11 @@
- {
- const HOST_WIDE_INT base = ROUND_UP (rem, ARITH_FACTOR);
+ for (i = 1; i < *decoded_options_count; i++)
+ {
+@@ -314,6 +337,11 @@
+ --*decoded_options_count;
+ break;
-- emit_set_insn (reg1, plus_constant (ptr_mode, reg1, -base));
-- emit_stack_probe (plus_constant (ptr_mode, reg1, base - rem));
-+ emit_set_insn (reg1, plus_constant (Pmode, reg1, -base));
-+ emit_stack_probe (plus_constant (Pmode, reg1, base - rem));
++ case OPT__sysroot_:
++ case OPT_isysroot:
++ seen_sysroot_p = true;
++ break;
++
+ default:
+ break;
}
- else
-- emit_stack_probe (plus_constant (ptr_mode, reg1, -rem));
-+ emit_stack_probe (plus_constant (Pmode, reg1, -rem));
+@@ -375,6 +403,22 @@
+ &(*decoded_options)[*decoded_options_count - 1]);
}
- /* Otherwise, do the same as above, but in a loop. Note that we must be
-@@ -2374,7 +2374,7 @@
- equality test for the loop condition. */
- else
- {
-- rtx reg2 = gen_rtx_REG (ptr_mode, PROBE_STACK_SECOND_REG);
-+ rtx reg2 = gen_rtx_REG (Pmode, PROBE_STACK_SECOND_REG);
-
- /* Step 1: round SIZE to the previous multiple of the interval. */
-
-@@ -2385,11 +2385,11 @@
-
- /* TEST_ADDR = SP + FIRST. */
- emit_set_insn (reg1,
-- plus_constant (ptr_mode, stack_pointer_rtx, -first));
-+ plus_constant (Pmode, stack_pointer_rtx, -first));
-
- /* LAST_ADDR = SP + FIRST + ROUNDED_SIZE. */
- emit_set_insn (reg2,
-- plus_constant (ptr_mode, stack_pointer_rtx,
-+ plus_constant (Pmode, stack_pointer_rtx,
- -(first + rounded_size)));
-
-
-@@ -2405,10 +2405,7 @@
- probes at FIRST + N * PROBE_INTERVAL for values of N from 1
- until it is equal to ROUNDED_SIZE. */
-
-- if (ptr_mode == DImode)
-- emit_insn (gen_probe_stack_range_di (reg1, reg1, reg2));
-- else
-- emit_insn (gen_probe_stack_range_si (reg1, reg1, reg2));
-+ emit_insn (gen_probe_stack_range (reg1, reg1, reg2));
-
++ if (! seen_sysroot_p)
++ {
++ /* We will pick up an SDKROOT if we didn't specify a sysroot and treat
++ it as overriding any configure-time --with-sysroot. */
++ const char *sdkroot = maybe_get_sysroot_from_sdkroot ();
++ if (sdkroot)
++ {
++ ++*decoded_options_count;
++ *decoded_options = XRESIZEVEC (struct cl_decoded_option,
++ *decoded_options,
++ *decoded_options_count);
++ generate_option (OPT__sysroot_, sdkroot, 1, CL_DRIVER,
++ &(*decoded_options)[*decoded_options_count - 1]);
++ }
++ }
++
+ /* We will need to know the OS X version we're trying to build for here
+ so that we can figure out the mechanism and source for the sysroot to
+ be used. */
+Index: gcc/config/pa/pa.md
+===================================================================
+--- a/src/gcc/config/pa/pa.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/pa/pa.md (.../branches/gcc-9-branch)
+@@ -10091,23 +10091,55 @@
+ (set_attr "length" "4,16")])
+
+ ;; PA 2.0 hardware supports out-of-order execution of loads and stores, so
+-;; we need a memory barrier to enforce program order for memory references.
+-;; Since we want PA 1.x code to be PA 2.0 compatible, we also need the
+-;; barrier when generating PA 1.x code.
++;; we need memory barriers to enforce program order for memory references
++;; when the TLB and PSW O bits are not set. We assume all PA 2.0 systems
++;; are weakly ordered since neither HP-UX or Linux set the PSW O bit. Since
++;; we want PA 1.x code to be PA 2.0 compatible, we also need barriers when
++;; generating PA 1.x code even though all PA 1.x systems are strongly ordered.
+
++;; When barriers are needed, we use a strongly ordered ldcw instruction as
++;; the barrier. Most PA 2.0 targets are cache coherent. In that case, we
++;; can use the coherent cache control hint and avoid aligning the ldcw
++;; address. In spite of its description, it is not clear that the sync
++;; instruction works as a barrier.
++
+ (define_expand "memory_barrier"
+- [(set (match_dup 0)
+- (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
++ [(parallel
++ [(set (match_dup 0) (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
++ (clobber (match_dup 1))])]
+ ""
+ {
+- operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++ /* We don't need a barrier if the target uses ordered memory references. */
++ if (TARGET_ORDERED)
++ FAIL;
++ operands[1] = gen_reg_rtx (Pmode);
++ operands[0] = gen_rtx_MEM (BLKmode, operands[1]);
+ MEM_VOLATILE_P (operands[0]) = 1;
+ })
- /* Step 4: probe at FIRST + SIZE if we cannot assert at compile-time
-@@ -2422,11 +2419,11 @@
+-(define_insn "*memory_barrier"
++(define_insn "*memory_barrier_coherent"
+ [(set (match_operand:BLK 0 "" "")
+- (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
++ (clobber (match_operand 1 "pmode_register_operand" "=r"))]
++ "TARGET_PA_20 && TARGET_COHERENT_LDCW"
++ "ldcw,co 0(%%sp),%1"
++ [(set_attr "type" "binary")
++ (set_attr "length" "4")])
++
++(define_insn "*memory_barrier_64"
++ [(set (match_operand:BLK 0 "" "")
++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
++ (clobber (match_operand 1 "pmode_register_operand" "=&r"))]
++ "TARGET_64BIT"
++ "ldo 15(%%sp),%1\n\tdepd %%r0,63,3,%1\n\tldcw 0(%1),%1"
++ [(set_attr "type" "binary")
++ (set_attr "length" "12")])
++
++(define_insn "*memory_barrier_32"
++ [(set (match_operand:BLK 0 "" "")
++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
++ (clobber (match_operand 1 "pmode_register_operand" "=&r"))]
+ ""
+- "sync"
++ "ldo 15(%%sp),%1\n\t{dep|depw} %%r0,31,3,%1\n\tldcw 0(%1),%1"
+ [(set_attr "type" "binary")
+- (set_attr "length" "4")])
++ (set_attr "length" "12")])
+Index: gcc/config/pa/pa.opt
+===================================================================
+--- a/src/gcc/config/pa/pa.opt (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/pa/pa.opt (.../branches/gcc-9-branch)
+@@ -45,6 +45,10 @@
+ Target Report Mask(CALLER_COPIES)
+ Caller copies function arguments passed by hidden reference.
+
++mcoherent-ldcw
++Target Report Var(TARGET_COHERENT_LDCW) Init(1)
++Use ldcw/ldcd coherent cache-control hint.
++
+ mdisable-fpregs
+ Target Report Mask(DISABLE_FPREGS)
+ Disable FP regs.
+@@ -90,6 +94,10 @@
+ Target RejectNegative Report Mask(NO_SPACE_REGS)
+ Disable space regs.
+
++mordered
++Target Report Var(TARGET_ORDERED) Init(0)
++Assume memory references are ordered and barriers are not needed.
++
+ mpa-risc-1-0
+ Target RejectNegative
+ Generate PA1.0 code.
+Index: gcc/config/pa/pa.c
+===================================================================
+--- a/src/gcc/config/pa/pa.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/pa/pa.c (.../branches/gcc-9-branch)
+@@ -7856,7 +7856,7 @@
+
+ /* 64-bit plabel sequence. */
+ else if (TARGET_64BIT && !local_call)
+- length += sibcall ? 28 : 24;
++ length += 24;
+
+ /* non-pic long absolute branch sequence. */
+ else if ((TARGET_LONG_ABS_CALL || local_call) && !flag_pic)
+@@ -7928,12 +7928,9 @@
+ xoperands[0] = pa_get_deferred_plabel (call_dest);
+ xoperands[1] = gen_label_rtx ();
+
+- /* If this isn't a sibcall, we put the load of %r27 into the
+- delay slot. We can't do this in a sibcall as we don't
+- have a second call-clobbered scratch register available.
+- We don't need to do anything when generating fast indirect
+- calls. */
+- if (seq_length != 0 && !sibcall)
++ /* Put the load of %r27 into the delay slot. We don't need to
++ do anything when generating fast indirect calls. */
++ if (seq_length != 0)
{
- const HOST_WIDE_INT base = ROUND_UP (rem, ARITH_FACTOR);
+ final_scan_insn (NEXT_INSN (insn), asm_out_file,
+ optimize, 0, NULL);
+@@ -7940,26 +7937,15 @@
-- emit_set_insn (reg2, plus_constant (ptr_mode, reg2, -base));
-- emit_stack_probe (plus_constant (ptr_mode, reg2, base - rem));
-+ emit_set_insn (reg2, plus_constant (Pmode, reg2, -base));
-+ emit_stack_probe (plus_constant (Pmode, reg2, base - rem));
+ /* Now delete the delay insn. */
+ SET_INSN_DELETED (NEXT_INSN (insn));
+- seq_length = 0;
}
- else
-- emit_stack_probe (plus_constant (ptr_mode, reg2, -rem));
-+ emit_stack_probe (plus_constant (Pmode, reg2, -rem));
+
+ output_asm_insn ("addil LT'%0,%%r27", xoperands);
+ output_asm_insn ("ldd RT'%0(%%r1),%%r1", xoperands);
+ output_asm_insn ("ldd 0(%%r1),%%r1", xoperands);
+-
+- if (sibcall)
+- {
+- output_asm_insn ("ldd 24(%%r1),%%r27", xoperands);
+- output_asm_insn ("ldd 16(%%r1),%%r1", xoperands);
+- output_asm_insn ("bve (%%r1)", xoperands);
+- }
+- else
+- {
+- output_asm_insn ("ldd 16(%%r1),%%r2", xoperands);
+- output_asm_insn ("bve,l (%%r2),%%r2", xoperands);
+- output_asm_insn ("ldd 24(%%r1),%%r27", xoperands);
+- seq_length = 1;
+- }
++ output_asm_insn ("ldd 16(%%r1),%%r2", xoperands);
++ output_asm_insn ("bve,l (%%r2),%%r2", xoperands);
++ output_asm_insn ("ldd 24(%%r1),%%r27", xoperands);
++ seq_length = 1;
}
- }
+ else
+ {
+@@ -8052,20 +8038,22 @@
+ {
+ output_asm_insn ("addil LT'%0,%%r19", xoperands);
+ output_asm_insn ("ldw RT'%0(%%r1),%%r1", xoperands);
+- output_asm_insn ("ldw 0(%%r1),%%r1", xoperands);
++ output_asm_insn ("ldw 0(%%r1),%%r22", xoperands);
+ }
+ else
+ {
+ output_asm_insn ("addil LR'%0-$global$,%%r27",
+ xoperands);
+- output_asm_insn ("ldw RR'%0-$global$(%%r1),%%r1",
++ output_asm_insn ("ldw RR'%0-$global$(%%r1),%%r22",
+ xoperands);
+ }
-@@ -2480,6 +2477,10 @@
- && (!crtl->is_leaf || df_regs_ever_live_p (LR_REGNUM)))
- return true;
+- output_asm_insn ("bb,>=,n %%r1,30,.+16", xoperands);
+- output_asm_insn ("depi 0,31,2,%%r1", xoperands);
+- output_asm_insn ("ldw 4(%%sr0,%%r1),%%r19", xoperands);
+- output_asm_insn ("ldw 0(%%sr0,%%r1),%%r1", xoperands);
++ output_asm_insn ("bb,>=,n %%r22,30,.+16", xoperands);
++ output_asm_insn ("depi 0,31,2,%%r22", xoperands);
++ /* Should this be an ordered load to ensure the target
++ address is loaded before the global pointer? */
++ output_asm_insn ("ldw 0(%%r22),%%r1", xoperands);
++ output_asm_insn ("ldw 4(%%r22),%%r19", xoperands);
+
+ if (!sibcall && !TARGET_PA_20)
+ {
+@@ -8158,10 +8146,6 @@
+ if (TARGET_PORTABLE_RUNTIME)
+ return 16;
+
+- /* Inline version of $$dyncall. */
+- if ((TARGET_NO_SPACE_REGS || TARGET_PA_20) && !optimize_size)
+- return 20;
+-
+ if (!TARGET_LONG_CALLS
+ && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
+ || distance < MAX_PCREL17F_OFFSET))
+@@ -8171,13 +8155,16 @@
+ if (!flag_pic)
+ return 12;
+
+- /* Inline version of $$dyncall. */
+- if (TARGET_NO_SPACE_REGS || TARGET_PA_20)
+- return 20;
+-
++ /* Inline versions of $$dyncall. */
+ if (!optimize_size)
+- return 36;
++ {
++ if (TARGET_NO_SPACE_REGS)
++ return 28;
-+ /* Force a frame pointer for EH returns so the return address is at FP+8. */
-+ if (crtl->calls_eh_return)
-+ return true;
++ if (TARGET_PA_20)
++ return 32;
++ }
+
- return false;
+ /* Long PIC pc-relative call. */
+ return 20;
}
+@@ -8214,22 +8201,6 @@
+ return "blr %%r0,%%r2\n\tbv,n %%r0(%%r31)";
+ }
-@@ -3036,7 +3037,8 @@
- rtx_insn *insn;
- /* We need to add memory barrier to prevent read from deallocated stack. */
- bool need_barrier_p = (get_frame_size () != 0
-- || cfun->machine->frame.saved_varargs_size);
-+ || cfun->machine->frame.saved_varargs_size
-+ || crtl->calls_eh_return);
-
- aarch64_layout_frame ();
-
-@@ -3189,52 +3191,40 @@
- emit_jump_insn (ret_rtx);
- }
-
--/* Return the place to copy the exception unwinding return address to.
-- This will probably be a stack slot, but could (in theory be the
-- return register). */
--rtx
--aarch64_final_eh_return_addr (void)
--{
-- HOST_WIDE_INT fp_offset;
-+/* Implement EH_RETURN_HANDLER_RTX. EH returns need to either return
-+ normally or return to a previous frame after unwinding.
-
-- aarch64_layout_frame ();
-+ An EH return uses a single shared return sequence. The epilogue is
-+ exactly like a normal epilogue except that it has an extra input
-+ register (EH_RETURN_STACKADJ_RTX) which contains the stack adjustment
-+ that must be applied after the frame has been destroyed. An extra label
-+ is inserted before the epilogue which initializes this register to zero,
-+ and this is the entry point for a normal return.
-
-- fp_offset = cfun->machine->frame.frame_size
-- - cfun->machine->frame.hard_fp_offset;
-+ An actual EH return updates the return address, initializes the stack
-+ adjustment and jumps directly into the epilogue (bypassing the zeroing
-+ of the adjustment). Since the return address is typically saved on the
-+ stack when a function makes a call, the saved LR must be updated outside
-+ the epilogue.
-
-- if (cfun->machine->frame.reg_offset[LR_REGNUM] < 0)
-- return gen_rtx_REG (DImode, LR_REGNUM);
-+ This poses problems as the store is generated well before the epilogue,
-+ so the offset of LR is not known yet. Also optimizations will remove the
-+ store as it appears dead, even after the epilogue is generated (as the
-+ base or offset for loading LR is different in many cases).
-
-- /* DSE and CSELIB do not detect an alias between sp+k1 and fp+k2. This can
-- result in a store to save LR introduced by builtin_eh_return () being
-- incorrectly deleted because the alias is not detected.
-- So in the calculation of the address to copy the exception unwinding
-- return address to, we note 2 cases.
-- If FP is needed and the fp_offset is 0, it means that SP = FP and hence
-- we return a SP-relative location since all the addresses are SP-relative
-- in this case. This prevents the store from being optimized away.
-- If the fp_offset is not 0, then the addresses will be FP-relative and
-- therefore we return a FP-relative location. */
-+ To avoid these problems this implementation forces the frame pointer
-+ in eh_return functions so that the location of LR is fixed and known early.
-+ It also marks the store volatile, so no optimization is permitted to
-+ remove the store. */
-+rtx
-+aarch64_eh_return_handler_rtx (void)
-+{
-+ rtx tmp = gen_frame_mem (Pmode,
-+ plus_constant (Pmode, hard_frame_pointer_rtx, UNITS_PER_WORD));
-
-- if (frame_pointer_needed)
+- /* Maybe emit a fast inline version of $$dyncall. */
+- if ((TARGET_NO_SPACE_REGS || TARGET_PA_20) && !optimize_size)
- {
-- if (fp_offset)
-- return gen_frame_mem (DImode,
-- plus_constant (Pmode, hard_frame_pointer_rtx, UNITS_PER_WORD));
-- else
-- return gen_frame_mem (DImode,
-- plus_constant (Pmode, stack_pointer_rtx, UNITS_PER_WORD));
+- output_asm_insn ("bb,>=,n %%r22,30,.+12\n\t"
+- "ldw 2(%%r22),%%r19\n\t"
+- "ldw -2(%%r22),%%r22", xoperands);
+- pa_output_arg_descriptor (insn);
+- if (TARGET_NO_SPACE_REGS)
+- {
+- if (TARGET_PA_20)
+- return "bve,l,n (%%r22),%%r2\n\tnop";
+- return "ble 0(%%sr4,%%r22)\n\tcopy %%r31,%%r2";
+- }
+- return "bve,l (%%r22),%%r2\n\tstw %%r2,-24(%%sp)";
- }
-
-- /* If FP is not needed, we calculate the location of LR, which would be
-- at the top of the saved registers block. */
--
-- return gen_frame_mem (DImode,
-- plus_constant (Pmode,
-- stack_pointer_rtx,
-- fp_offset
-- + cfun->machine->frame.saved_regs_size
-- - 2 * UNITS_PER_WORD));
-+ /* Mark the store volatile, so no optimization is permitted to remove it. */
-+ MEM_VOLATILE_P (tmp) = true;
-+ return tmp;
- }
+ /* Now the normal case -- we can reach $$dyncall directly or
+ we're sure that we can get there via a long-branch stub.
- /* Possibly output code to build up a constant in a register. For
-Index: gcc/config/aarch64/aarch64.h
-===================================================================
---- a/src/gcc/config/aarch64/aarch64.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/aarch64/aarch64.h (.../branches/gcc-6-branch)
-@@ -389,9 +389,9 @@
- #define ASM_DECLARE_FUNCTION_NAME(STR, NAME, DECL) \
- aarch64_declare_function_name (STR, NAME, DECL)
-
--/* The register that holds the return address in exception handlers. */
--#define AARCH64_EH_STACKADJ_REGNUM (R0_REGNUM + 4)
--#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, AARCH64_EH_STACKADJ_REGNUM)
-+/* For EH returns X4 contains the stack adjustment. */
-+#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, R4_REGNUM)
-+#define EH_RETURN_HANDLER_RTX aarch64_eh_return_handler_rtx ()
-
- /* Don't use __builtin_setjmp until we've defined it. */
- #undef DONT_USE_BUILTIN_SETJMP
-Index: gcc/config/rs6000/constraints.md
-===================================================================
---- a/src/gcc/config/rs6000/constraints.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/constraints.md (.../branches/gcc-6-branch)
-@@ -135,6 +135,9 @@
- (define_register_constraint "wz" "rs6000_constraints[RS6000_CONSTRAINT_wz]"
- "Floating point register if the LFIWZX instruction is enabled or NO_REGS.")
-
-+(define_register_constraint "wA" "rs6000_constraints[RS6000_CONSTRAINT_wA]"
-+ "BASE_REGS if 64-bit instructions are enabled or NO_REGS.")
-+
- (define_constraint "wD"
- "Int constant that is the element number of the 64-bit scalar in a vector."
- (and (match_code "const_int")
-Index: gcc/config/rs6000/predicates.md
-===================================================================
---- a/src/gcc/config/rs6000/predicates.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/predicates.md (.../branches/gcc-6-branch)
-@@ -1000,7 +1000,8 @@
- (and (match_code "symbol_ref")
- (match_test "(DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))
- && (SYMBOL_REF_LOCAL_P (op)
-- || op == XEXP (DECL_RTL (current_function_decl), 0))
-+ || (op == XEXP (DECL_RTL (current_function_decl), 0)
-+ && !decl_replaceable_p (current_function_decl)))
- && !((DEFAULT_ABI == ABI_AIX
- || DEFAULT_ABI == ABI_ELFv2)
- && (SYMBOL_REF_EXTERNAL_P (op)
-Index: gcc/config/rs6000/rs6000-c.c
-===================================================================
---- a/src/gcc/config/rs6000/rs6000-c.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/rs6000-c.c (.../branches/gcc-6-branch)
-@@ -2133,14 +2133,14 @@
- RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
- { ALTIVEC_BUILTIN_VEC_PACKS, ALTIVEC_BUILTIN_VPKSWSS,
- RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
-+ { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKUDUS,
-+ RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
-+ { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
-+ RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
- { ALTIVEC_BUILTIN_VEC_VPKSWSS, ALTIVEC_BUILTIN_VPKSWSS,
- RS6000_BTI_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
- { ALTIVEC_BUILTIN_VEC_VPKUWUS, ALTIVEC_BUILTIN_VPKUWUS,
- RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
-- { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKUDUS,
-- RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
-- { ALTIVEC_BUILTIN_VEC_PACKS, P8V_BUILTIN_VPKSDSS,
-- RS6000_BTI_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
- { ALTIVEC_BUILTIN_VEC_VPKSHSS, ALTIVEC_BUILTIN_VPKSHSS,
- RS6000_BTI_V16QI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, 0 },
- { ALTIVEC_BUILTIN_VEC_VPKUHUS, ALTIVEC_BUILTIN_VPKUHUS,
-@@ -2411,7 +2411,7 @@
- RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
- { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
- RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
-- { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRD,
-+ { ALTIVEC_BUILTIN_VEC_SRA, P8V_BUILTIN_VSRAD,
- RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
- { ALTIVEC_BUILTIN_VEC_VSRAW, ALTIVEC_BUILTIN_VSRAW,
- RS6000_BTI_V4SI, RS6000_BTI_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
-@@ -4512,7 +4512,7 @@
-
- { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRAD,
- RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
-- { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRD,
-+ { P8V_BUILTIN_VEC_VSRAD, P8V_BUILTIN_VSRAD,
- RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
-
- { P8V_BUILTIN_VEC_VSUBCUQ, P8V_BUILTIN_VSUBCUQ,
-@@ -4550,11 +4550,6 @@
- { P8V_BUILTIN_VEC_VUPKLSW, P8V_BUILTIN_VUPKLSW,
- RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 },
-
-- { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD,
-- RS6000_BTI_V16QI, 0, 0, 0 },
-- { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD,
-- RS6000_BTI_unsigned_V16QI, 0, 0, 0 },
--
- { P9V_BUILTIN_VEC_VSLV, P9V_BUILTIN_VSLV,
- RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI,
- RS6000_BTI_unsigned_V16QI, 0 },
-Index: gcc/config/rs6000/rs6000.opt
-===================================================================
---- a/src/gcc/config/rs6000/rs6000.opt (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/rs6000.opt (.../branches/gcc-6-branch)
-@@ -142,11 +142,11 @@
-
- maltivec=le
- Target Report RejectNegative Var(rs6000_altivec_element_order, 1) Save
--Generate Altivec instructions using little-endian element order.
-+Generate AltiVec instructions using little-endian element order.
-
- maltivec=be
- Target Report RejectNegative Var(rs6000_altivec_element_order, 2)
--Generate Altivec instructions using big-endian element order.
-+Generate AltiVec instructions using big-endian element order.
-
- mhard-dfp
- Target Report Mask(DFP) Var(rs6000_isa_flags)
-@@ -602,7 +602,7 @@
- Analyze and remove doubleword swaps from VSX computations.
-
- mpower9-fusion
--Target Report Mask(P9_FUSION) Var(rs6000_isa_flags)
-+Target Undocumented Report Mask(P9_FUSION) Var(rs6000_isa_flags)
- Fuse certain operations together for better performance on power9.
-
- mpower9-misc
-@@ -610,7 +610,7 @@
- Use/do not use certain scalar instructions added in ISA 3.0.
-
- mpower9-vector
--Target Report Mask(P9_VECTOR) Var(rs6000_isa_flags)
-+Target Undocumented Report Mask(P9_VECTOR) Var(rs6000_isa_flags)
- Use/do not use vector instructions added in ISA 3.0.
-
- mpower9-dform-scalar
-@@ -622,7 +622,7 @@
- Use/do not use vector register+offset memory instructions added in ISA 3.0.
-
- mpower9-dform
--Target Report Var(TARGET_P9_DFORM_BOTH) Init(-1) Save
-+Target Undocumented Report Var(TARGET_P9_DFORM_BOTH) Init(-1) Save
- Use/do not use register+offset memory instructions added in ISA 3.0.
-
- mpower9-minmax
-@@ -634,7 +634,7 @@
- Fuse medium/large code model toc references with the memory instruction.
-
- mmodulo
--Target Report Mask(MODULO) Var(rs6000_isa_flags)
-+Target Undocumented Report Mask(MODULO) Var(rs6000_isa_flags)
- Generate the integer modulo instructions.
-
- mfloat128
-Index: gcc/config/rs6000/rs6000.c
-===================================================================
---- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-6-branch)
-@@ -64,6 +64,7 @@
- #include "builtins.h"
- #include "context.h"
- #include "tree-pass.h"
-+#include "except.h"
- #if TARGET_XCOFF
- #include "xcoffout.h" /* get declarations of xcoff_*_section_name */
- #endif
-@@ -2405,6 +2406,7 @@
- "wx reg_class = %s\n"
- "wy reg_class = %s\n"
- "wz reg_class = %s\n"
-+ "wA reg_class = %s\n"
- "\n",
- reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_d]],
- reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_f]],
-@@ -2432,7 +2434,8 @@
- reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_ww]],
- reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wx]],
- reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wy]],
-- reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wz]]);
-+ reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wz]],
-+ reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wA]]);
-
- nl = "\n";
- for (m = 0; m < NUM_MACHINE_MODES; ++m)
-@@ -3119,7 +3122,10 @@
+@@ -8258,35 +8229,40 @@
+ return "ble R'$$dyncall(%%sr4,%%r2)\n\tcopy %%r31,%%r2";
}
- if (TARGET_POWERPC64)
-- rs6000_constraints[RS6000_CONSTRAINT_wr] = GENERAL_REGS;
-+ {
-+ rs6000_constraints[RS6000_CONSTRAINT_wr] = GENERAL_REGS;
-+ rs6000_constraints[RS6000_CONSTRAINT_wA] = BASE_REGS;
-+ }
-
- if (TARGET_P8_VECTOR && TARGET_UPPER_REGS_SF) /* SFmode */
+- /* Maybe emit a fast inline version of $$dyncall. The long PIC
+- pc-relative call sequence is five instructions. The inline PA 2.0
+- version of $$dyncall is also five instructions. The PA 1.X versions
+- are longer but still an overall win. */
+- if (TARGET_NO_SPACE_REGS || TARGET_PA_20 || !optimize_size)
++ /* The long PIC pc-relative call sequence is five instructions. So,
++ let's use an inline version of $$dyncall when the calling sequence
++ has a roughly similar number of instructions and we are not optimizing
++ for size. We need two instructions to load the return pointer plus
++ the $$dyncall implementation. */
++ if (!optimize_size)
{
-@@ -3750,6 +3756,13 @@
- && !global_options_set.x_flag_ira_loop_pressure)
- flag_ira_loop_pressure = 1;
-
-+ /* -fsanitize=address needs to turn on -fasynchronous-unwind-tables in order
-+ for tracebacks to be complete but not if any -fasynchronous-unwind-tables
-+ options were already specified. */
-+ if (flag_sanitize & SANITIZE_USER_ADDRESS
-+ && !global_options_set.x_flag_asynchronous_unwind_tables)
-+ flag_asynchronous_unwind_tables = 1;
-+
- /* Set the pointer size. */
- if (TARGET_64BIT)
- {
-@@ -4190,6 +4203,10 @@
- {
- if (rs6000_isa_flags_explicit & OPTION_MASK_P8_FUSION)
+- output_asm_insn ("bb,>=,n %%r22,30,.+12\n\t"
+- "ldw 2(%%r22),%%r19\n\t"
+- "ldw -2(%%r22),%%r22", xoperands);
+ if (TARGET_NO_SPACE_REGS)
{
-+ /* We prefer to not mention undocumented options in
-+ error messages. However, if users have managed to select
-+ power9-fusion without selecting power8-fusion, they
-+ already know about undocumented flags. */
- error ("-mpower9-fusion requires -mpower8-fusion");
- rs6000_isa_flags &= ~OPTION_MASK_P9_FUSION;
+ pa_output_arg_descriptor (insn);
+- if (TARGET_PA_20)
+- return "bve,l,n (%%r22),%%r2\n\tnop";
+- return "ble 0(%%sr4,%%r22)\n\tcopy %%r31,%%r2";
++ output_asm_insn ("bl .+8,%%r2\n\t"
++ "ldo 20(%%r2),%%r2\n\t"
++ "extru,<> %%r22,30,1,%%r0\n\t"
++ "bv,n %%r0(%%r22)\n\t"
++ "ldw -2(%%r22),%%r21\n\t"
++ "bv %%r0(%%r21)\n\t"
++ "ldw 2(%%r22),%%r19", xoperands);
++ return "";
}
-@@ -4237,6 +4254,10 @@
- /* ISA 3.0 vector instructions include ISA 2.07. */
- if (TARGET_P9_VECTOR && !TARGET_P8_VECTOR)
- {
-+ /* We prefer to not mention undocumented options in
-+ error messages. However, if users have managed to select
-+ power9-vector without selecting power8-vector, they
-+ already know about undocumented flags. */
- if (rs6000_isa_flags_explicit & OPTION_MASK_P8_VECTOR)
- error ("-mpower9-vector requires -mpower8-vector");
- rs6000_isa_flags &= ~OPTION_MASK_P9_VECTOR;
-@@ -4264,6 +4285,10 @@
- /* ISA 3.0 D-form instructions require p9-vector and upper-regs. */
- if ((TARGET_P9_DFORM_SCALAR || TARGET_P9_DFORM_VECTOR) && !TARGET_P9_VECTOR)
- {
-+ /* We prefer to not mention undocumented options in
-+ error messages. However, if users have managed to select
-+ power9-dform without selecting power9-vector, they
-+ already know about undocumented flags. */
- if (rs6000_isa_flags_explicit & OPTION_MASK_P9_VECTOR)
- error ("-mpower9-dform requires -mpower9-vector");
- rs6000_isa_flags &= ~(OPTION_MASK_P9_DFORM_SCALAR
-@@ -4272,6 +4297,10 @@
-
- if (TARGET_P9_DFORM_SCALAR && !TARGET_UPPER_REGS_DF)
- {
-+ /* We prefer to not mention undocumented options in
-+ error messages. However, if users have managed to select
-+ power9-dform without selecting upper-regs-df, they
-+ already know about undocumented flags. */
- if (rs6000_isa_flags_explicit & OPTION_MASK_UPPER_REGS_DF)
- error ("-mpower9-dform requires -mupper-regs-df");
- rs6000_isa_flags &= ~OPTION_MASK_P9_DFORM_SCALAR;
-@@ -13257,7 +13286,7 @@
- || INTVAL (op0) < -16)
+ if (TARGET_PA_20)
{
- error ("argument 1 must be a 5-bit signed literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
+ pa_output_arg_descriptor (insn);
+- return "bve,l (%%r22),%%r2\n\tstw %%r2,-24(%%sp)";
++ output_asm_insn ("bl .+8,%%r2\n\t"
++ "ldo 24(%%r2),%%r2\n\t"
++ "stw %%r2,-24(%%sp)\n\t"
++ "extru,<> %r22,30,1,%%r0\n\t"
++ "bve,n (%%r22)\n\t"
++ "ldw -2(%%r22),%%r21\n\t"
++ "bve (%%r21)\n\t"
++ "ldw 2(%%r22),%%r19", xoperands);
++ return "";
}
+- output_asm_insn ("bl .+8,%%r2\n\t"
+- "ldo 16(%%r2),%%r2\n\t"
+- "ldsid (%%r22),%%r1\n\t"
+- "mtsp %%r1,%%sr0", xoperands);
+- pa_output_arg_descriptor (insn);
+- return "be 0(%%sr0,%%r22)\n\tstw %%r2,-24(%%sp)";
}
+-
++
+ /* We need a long PIC call to $$dyncall. */
+ xoperands[0] = gen_rtx_SYMBOL_REF (Pmode, "$$dyncall");
+ xoperands[1] = gen_rtx_REG (Pmode, 2);
+@@ -10048,7 +10024,7 @@
+
+ /* Length in units of the trampoline instruction code. */
-@@ -13360,7 +13389,7 @@
- || TREE_INT_CST_LOW (arg1) & ~0x1f)
- {
- error ("argument 2 must be a 5-bit unsigned literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
- }
- else if (icode == CODE_FOR_dfptstsfi_eq_dd
-@@ -14152,11 +14181,18 @@
- || TREE_INT_CST_LOW (arg2) & ~0xf)
- {
- error ("argument 3 must be a 4-bit unsigned literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
- }
- else if (icode == CODE_FOR_vsx_xxpermdi_v2df
- || icode == CODE_FOR_vsx_xxpermdi_v2di
-+ || icode == CODE_FOR_vsx_xxpermdi_v2df_be
-+ || icode == CODE_FOR_vsx_xxpermdi_v2di_be
-+ || icode == CODE_FOR_vsx_xxpermdi_v1ti
-+ || icode == CODE_FOR_vsx_xxpermdi_v4sf
-+ || icode == CODE_FOR_vsx_xxpermdi_v4si
-+ || icode == CODE_FOR_vsx_xxpermdi_v8hi
-+ || icode == CODE_FOR_vsx_xxpermdi_v16qi
- || icode == CODE_FOR_vsx_xxsldwi_v16qi
- || icode == CODE_FOR_vsx_xxsldwi_v8hi
- || icode == CODE_FOR_vsx_xxsldwi_v4si
-@@ -14170,7 +14206,7 @@
- || TREE_INT_CST_LOW (arg2) & ~0x3)
- {
- error ("argument 3 must be a 2-bit unsigned literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
- }
- else if (icode == CODE_FOR_vsx_set_v2df
-@@ -14190,7 +14226,7 @@
- || TREE_INT_CST_LOW (arg2) & ~0x1)
- {
- error ("argument 3 must be a 1-bit unsigned literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
- }
- else if (icode == CODE_FOR_dfp_ddedpd_dd
-@@ -14202,7 +14238,7 @@
- || TREE_INT_CST_LOW (arg2) & ~0x3)
+-#define TRAMPOLINE_CODE_SIZE (TARGET_64BIT ? 24 : (TARGET_PA_20 ? 32 : 40))
++#define TRAMPOLINE_CODE_SIZE (TARGET_64BIT ? 24 : (TARGET_PA_20 ? 36 : 48))
+
+
+ /* Output assembler code for a block containing the constant parts
+@@ -10069,27 +10045,46 @@
+ {
+ if (!TARGET_64BIT)
+ {
+- fputs ("\tldw 36(%r22),%r21\n", f);
+- fputs ("\tbb,>=,n %r21,30,.+16\n", f);
+- if (ASSEMBLER_DIALECT == 0)
+- fputs ("\tdepi 0,31,2,%r21\n", f);
+- else
+- fputs ("\tdepwi 0,31,2,%r21\n", f);
+- fputs ("\tldw 4(%r21),%r19\n", f);
+- fputs ("\tldw 0(%r21),%r21\n", f);
+ if (TARGET_PA_20)
{
- error ("argument 1 must be 0 or 2");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
+- fputs ("\tbve (%r21)\n", f);
+- fputs ("\tldw 40(%r22),%r29\n", f);
++ fputs ("\tmfia %r20\n", f);
++ fputs ("\tldw 48(%r20),%r22\n", f);
++ fputs ("\tcopy %r22,%r21\n", f);
++ fputs ("\tbb,>=,n %r22,30,.+16\n", f);
++ fputs ("\tdepwi 0,31,2,%r22\n", f);
++ fputs ("\tldw 0(%r22),%r21\n", f);
++ fputs ("\tldw 4(%r22),%r19\n", f);
++ fputs ("\tbve (%r21)\n", f);
++ fputs ("\tldw 52(%r1),%r29\n", f);
+ fputs ("\t.word 0\n", f);
+ fputs ("\t.word 0\n", f);
++ fputs ("\t.word 0\n", f);
}
- }
- else if (icode == CODE_FOR_dfp_denbcd_dd
-@@ -14214,7 +14250,7 @@
- || TREE_INT_CST_LOW (arg0) & ~0x1)
+ else
{
- error ("argument 1 must be a 1-bit unsigned literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
++ if (ASSEMBLER_DIALECT == 0)
++ {
++ fputs ("\tbl .+8,%r20\n", f);
++ fputs ("\tdepi 0,31,2,%r20\n", f);
++ }
++ else
++ {
++ fputs ("\tb,l .+8,%r20\n", f);
++ fputs ("\tdepwi 0,31,2,%r20\n", f);
++ }
++ fputs ("\tldw 40(%r20),%r22\n", f);
++ fputs ("\tcopy %r22,%r21\n", f);
++ fputs ("\tbb,>=,n %r22,30,.+16\n", f);
++ if (ASSEMBLER_DIALECT == 0)
++ fputs ("\tdepi 0,31,2,%r22\n", f);
++ else
++ fputs ("\tdepwi 0,31,2,%r22\n", f);
++ fputs ("\tldw 0(%r22),%r21\n", f);
++ fputs ("\tldw 4(%r22),%r19\n", f);
+ fputs ("\tldsid (%r21),%r1\n", f);
+ fputs ("\tmtsp %r1,%sr0\n", f);
+- fputs ("\tbe 0(%sr0,%r21)\n", f);
+- fputs ("\tldw 40(%r22),%r29\n", f);
++ fputs ("\tbe 0(%sr0,%r21)\n", f);
++ fputs ("\tldw 44(%r20),%r29\n", f);
}
+ fputs ("\t.word 0\n", f);
+ fputs ("\t.word 0\n", f);
+@@ -10103,11 +10098,11 @@
+ fputs ("\t.dword 0\n", f);
+ fputs ("\t.dword 0\n", f);
+ fputs ("\tmfia %r31\n", f);
+- fputs ("\tldd 24(%r31),%r1\n", f);
+- fputs ("\tldd 24(%r1),%r27\n", f);
+- fputs ("\tldd 16(%r1),%r1\n", f);
++ fputs ("\tldd 24(%r31),%r27\n", f);
++ fputs ("\tldd 32(%r31),%r31\n", f);
++ fputs ("\tldd 16(%r27),%r1\n", f);
+ fputs ("\tbve (%r1)\n", f);
+- fputs ("\tldd 32(%r31),%r31\n", f);
++ fputs ("\tldd 24(%r27),%r27\n", f);
+ fputs ("\t.dword 0 ; fptr\n", f);
+ fputs ("\t.dword 0 ; static link\n", f);
}
- else if (icode == CODE_FOR_dfp_dscli_dd
-@@ -14228,7 +14264,7 @@
- || TREE_INT_CST_LOW (arg1) & ~0x3f)
- {
- error ("argument 2 must be a 6-bit unsigned literal");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
+@@ -10117,10 +10112,10 @@
+ FNADDR is an RTX for the address of the function's pure code.
+ CXT is an RTX for the static chain value for the function.
+
+- Move the function address to the trampoline template at offset 36.
+- Move the static chain value to trampoline template at offset 40.
+- Move the trampoline address to trampoline template at offset 44.
+- Move r19 to trampoline template at offset 48. The latter two
++ Move the function address to the trampoline template at offset 48.
++ Move the static chain value to trampoline template at offset 52.
++ Move the trampoline address to trampoline template at offset 56.
++ Move r19 to trampoline template at offset 60. The latter two
+ words create a plabel for the indirect call to the trampoline.
+
+ A similar sequence is used for the 64-bit port but the plabel is
+@@ -10146,15 +10141,15 @@
+
+ if (!TARGET_64BIT)
+ {
+- tmp = adjust_address (m_tramp, Pmode, 36);
++ tmp = adjust_address (m_tramp, Pmode, 48);
+ emit_move_insn (tmp, fnaddr);
+- tmp = adjust_address (m_tramp, Pmode, 40);
++ tmp = adjust_address (m_tramp, Pmode, 52);
+ emit_move_insn (tmp, chain_value);
+
+ /* Create a fat pointer for the trampoline. */
+- tmp = adjust_address (m_tramp, Pmode, 44);
++ tmp = adjust_address (m_tramp, Pmode, 56);
+ emit_move_insn (tmp, r_tramp);
+- tmp = adjust_address (m_tramp, Pmode, 48);
++ tmp = adjust_address (m_tramp, Pmode, 60);
+ emit_move_insn (tmp, gen_rtx_REG (Pmode, 19));
+
+ /* fdc and fic only use registers for the address to flush,
+@@ -10206,7 +10201,7 @@
}
- else if (icode == CODE_FOR_crypto_vshasigmaw
-@@ -14240,14 +14276,14 @@
- if (TREE_CODE (arg1) != INTEGER_CST || wi::geu_p (arg1, 2))
- {
- error ("argument 2 must be 0 or 1");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
- STRIP_NOPS (arg2);
-- if (TREE_CODE (arg2) != INTEGER_CST || wi::geu_p (arg1, 16))
-+ if (TREE_CODE (arg2) != INTEGER_CST || wi::geu_p (arg2, 16))
- {
- error ("argument 3 must be in the range 0..15");
-- return const0_rtx;
-+ return CONST0_RTX (tmode);
- }
- }
+ #ifdef HAVE_ENABLE_EXECUTE_STACK
+-  emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
++ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
+ LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
+ #endif
+ }
+@@ -10213,13 +10208,13 @@
-@@ -15412,13 +15448,13 @@
- else if ((fnmask & RS6000_BTM_P8_VECTOR) != 0)
- error ("Builtin function %s requires the -mpower8-vector option", name);
- else if ((fnmask & RS6000_BTM_P9_VECTOR) != 0)
-- error ("Builtin function %s requires the -mpower9-vector option", name);
-+ error ("Builtin function %s requires the -mcpu=power9 option", name);
- else if ((fnmask & (RS6000_BTM_P9_MISC | RS6000_BTM_64BIT))
- == (RS6000_BTM_P9_MISC | RS6000_BTM_64BIT))
-- error ("Builtin function %s requires the -mpower9-misc and"
-+ error ("Builtin function %s requires the -mcpu=power9 and"
- " -m64 options", name);
- else if ((fnmask & RS6000_BTM_P9_MISC) == RS6000_BTM_P9_MISC)
-- error ("Builtin function %s requires the -mpower9-misc option", name);
-+ error ("Builtin function %s requires the -mcpu=power9 option", name);
- else if ((fnmask & (RS6000_BTM_HARD_FLOAT | RS6000_BTM_LDBL128))
- == (RS6000_BTM_HARD_FLOAT | RS6000_BTM_LDBL128))
- error ("Builtin function %s requires the -mhard-float and"
-@@ -17057,6 +17093,7 @@
- break;
+ /* Perform any machine-specific adjustment in the address of the trampoline.
+ ADDR contains the address that was passed to pa_trampoline_init.
+- Adjust the trampoline address to point to the plabel at offset 44. */
++ Adjust the trampoline address to point to the plabel at offset 56. */
- /* unsigned args, signed return. */
-+ case VSX_BUILTIN_XVCVUXDSP:
- case VSX_BUILTIN_XVCVUXDDP_UNS:
- case ALTIVEC_BUILTIN_UNSFLOAT_V4SI_V4SF:
- h.uns_p[1] = 1;
-@@ -23084,9 +23121,7 @@
- rtx dest_di = (d_mode == DImode) ? dest : gen_lowpart (DImode, dest);
- rtx shift_reg = dest_di;
-
-- gcc_assert (REG_P (dest));
-- gcc_assert (REG_P (src) || MEM_P (src));
-- gcc_assert (s_mode == KFmode || s_mode == TFmode);
-+ gcc_assert (FLOAT128_IEEE_P (s_mode) && TARGET_POWERPC64);
-
- if (MEM_P (src))
- {
-@@ -23098,17 +23133,20 @@
+ static rtx
+ pa_trampoline_adjust_address (rtx addr)
+ {
+ if (!TARGET_64BIT)
+- addr = memory_address (Pmode, plus_constant (Pmode, addr, 46));
++ addr = memory_address (Pmode, plus_constant (Pmode, addr, 58));
+ return addr;
+ }
- else
+Index: gcc/config/pa/pa.h
+===================================================================
+--- a/src/gcc/config/pa/pa.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/pa/pa.h (.../branches/gcc-9-branch)
+@@ -689,7 +689,7 @@
+
+ /* Length in units of the trampoline for entering a nested function. */
+
+-#define TRAMPOLINE_SIZE (TARGET_64BIT ? 72 : 52)
++#define TRAMPOLINE_SIZE (TARGET_64BIT ? 72 : 64)
+
+ /* Alignment required by the trampoline. */
+
+@@ -1293,13 +1293,12 @@
+ #endif
+
+ /* The maximum offset in bytes for a PA 1.X pc-relative call to the
+- head of the preceding stub table. The selected offsets have been
+- chosen so that approximately one call stub is allocated for every
+- 86.7 instructions. A long branch stub is two instructions when
+- not generating PIC code. For HP-UX and ELF targets, PIC stubs are
+- seven and four instructions, respectively. */
+-#define MAX_PCREL17F_OFFSET \
+- (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
++ head of the preceding stub table. A long branch stub is two or three
++ instructions for non-PIC and PIC, respectively. Import stubs are
++ seven and five instructions for HP-UX and ELF targets, respectively.
++ The default stub group size for ELF targets is 217856 bytes.
++ FIXME: We need an option to set the maximum offset. */
++#define MAX_PCREL17F_OFFSET (TARGET_HPUX ? 198164 : 217856)
+
+ #define NEED_INDICATE_EXEC_STACK 0
+
+Index: gcc/config/darwin9.h
+===================================================================
+--- a/src/gcc/config/darwin9.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/darwin9.h (.../branches/gcc-9-branch)
+@@ -35,12 +35,6 @@
+ /* Tell collect2 to run dsymutil for us as necessary. */
+ #define COLLECT_RUN_DSYMUTIL 1
+
+-#undef DARWIN_PIE_SPEC
+-#define DARWIN_PIE_SPEC \
+- "%{fpie|pie|fPIE: \
+- %{mdynamic-no-pic: %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
+- :-pie}}"
+-
+ /* Only ask as for debug data if the debug style is stabs (since as doesn't
+ yet generate dwarf.) */
+
+Index: gcc/config/mips/mips.md
+===================================================================
+--- a/src/gcc/config/mips/mips.md (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/mips/mips.md (.../branches/gcc-9-branch)
+@@ -7588,7 +7588,7 @@
+ ;; __builtin_mips_get_fcsr: move the FCSR into operand 0.
+ (define_expand "mips_get_fcsr"
+ [(set (match_operand:SI 0 "register_operand")
+- (unspec_volatile [(const_int 0)] UNSPEC_GET_FCSR))]
++ (unspec_volatile:SI [(const_int 0)] UNSPEC_GET_FCSR))]
+ "TARGET_HARD_FLOAT_ABI"
+ {
+ if (TARGET_MIPS16)
+@@ -7600,7 +7600,7 @@
+
+ (define_insn "*mips_get_fcsr"
+ [(set (match_operand:SI 0 "register_operand" "=d")
+- (unspec_volatile [(const_int 0)] UNSPEC_GET_FCSR))]
++ (unspec_volatile:SI [(const_int 0)] UNSPEC_GET_FCSR))]
+ "TARGET_HARD_FLOAT"
+ "cfc1\t%0,$31")
+
+Index: gcc/config/mips/mips.c
+===================================================================
+--- a/src/gcc/config/mips/mips.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/config/mips/mips.c (.../branches/gcc-9-branch)
+@@ -4849,7 +4849,7 @@
+ can forward SRC for DEST. This is most useful if the next insn is a
+ simple store. */
+ rtx_insn *insn = (rtx_insn *)insn_;
+- struct mips_address_info addr;
++ struct mips_address_info addr = {};
+ if (insn)
{
-- unsigned int r = REGNO (src);
-+ unsigned int r = reg_or_subregno (src);
-
-- /* If this is a VSX register, generate the special mfvsrd instruction
-- to get it in a GPR. Until we support SF and DF modes, that will
-- always be true. */
-- gcc_assert (VSX_REGNO_P (r));
-+ if (INT_REGNO_P (r))
-+ shift_reg = gen_rtx_REG (DImode, r + (BYTES_BIG_ENDIAN == 0));
-
-- if (s_mode == KFmode)
-- emit_insn (gen_signbitkf2_dm2 (dest_di, src));
- else
-- emit_insn (gen_signbittf2_dm2 (dest_di, src));
+ rtx_insn *next = next_nonnote_nondebug_insn_bb (insn);
+@@ -4862,7 +4862,7 @@
+ {
+ rtx tmp = XEXP (src, 0);
+ mips_classify_address (&addr, tmp, GET_MODE (tmp), true);
+- if (REGNO (addr.reg) != REGNO (dest))
++ if (addr.reg && !reg_overlap_mentioned_p (dest, addr.reg))
+ validate_change (next, &SET_SRC (set), src, false);
+ }
+ else
+Index: gcc/tree-vect-slp.c
+===================================================================
+--- a/src/gcc/tree-vect-slp.c (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/tree-vect-slp.c (.../branches/gcc-9-branch)
+@@ -129,6 +129,7 @@
+ SLP_TREE_TWO_OPERATORS (node) = false;
+ SLP_TREE_DEF_TYPE (node) = vect_internal_def;
+ node->refcnt = 1;
++ node->max_nunits = 1;
+
+ unsigned i;
+ FOR_EACH_VEC_ELT (scalar_stmts, i, stmt_info)
+@@ -1051,15 +1052,24 @@
+ dump_printf_loc (MSG_NOTE, vect_location, "re-using %sSLP tree %p\n",
+ *leader ? "" : "failed ", *leader);
+ if (*leader)
+- (*leader)->refcnt++;
+ {
-+ /* Generate the special mfvsrd instruction to get it in a GPR. */
-+ gcc_assert (VSX_REGNO_P (r));
-+ if (s_mode == KFmode)
-+ emit_insn (gen_signbitkf2_dm2 (dest_di, src));
-+ else
-+ emit_insn (gen_signbittf2_dm2 (dest_di, src));
++ (*leader)->refcnt++;
++ vect_update_max_nunits (max_nunits, (*leader)->max_nunits);
+ }
+ return *leader;
}
-
- emit_insn (gen_lshrdi3 (dest_di, shift_reg, GEN_INT (63)));
-@@ -28881,6 +28919,8 @@
- split_stack_return use r0. */
- use_reg (&call_fusage, r0);
- add_function_usage_to (insn, call_fusage);
-+ /* Indicate that this function can't jump to non-local gotos. */
-+ make_reg_eh_region_note_nothrow_nononlocal (insn);
- emit_insn (gen_frame_load (r0, r1, info->lr_save_offset));
- insn = emit_move_insn (lr, r0);
- add_reg_note (insn, REG_CFA_RESTORE, lr);
-@@ -29933,7 +29973,7 @@
- static int divide_cnt;
- /* The following variable helps pair and alternate vector and vector load
- insns during scheduling. */
--static int vec_load_pendulum;
-+static int vec_pairing;
-
-
- /* Power4 load update and store update instructions are cracked into a
-@@ -30890,7 +30930,7 @@
- int pos;
- int i;
- rtx_insn *tmp;
-- enum attr_type type;
-+ enum attr_type type, type2;
-
- type = get_attr_type (last_scheduled_insn);
-
-@@ -30923,183 +30963,114 @@
- /* Last insn was the 2nd divide or not a divide, reset the counter. */
- divide_cnt = 0;
-
-- /* Power9 can execute 2 vector operations and 2 vector loads in a single
-- cycle. So try to pair up and alternate groups of vector and vector
-- load instructions.
-+ /* The best dispatch throughput for vector and vector load insns can be
-+ achieved by interleaving a vector and vector load such that they'll
-+ dispatch to the same superslice. If this pairing cannot be achieved
-+ then it is best to pair vector insns together and vector load insns
-+ together.
-
-- To aid this formation, a counter is maintained to keep track of
-- vec/vecload insns issued. The value of vec_load_pendulum maintains
-- the current state with the following values:
-+ To aid in this pairing, vec_pairing maintains the current state with
-+ the following values:
-
-- 0 : Initial state, no vec/vecload group has been started.
-+ 0 : Initial state, no vecload/vector pairing has been started.
-
-- -1 : 1 vector load has been issued and another has been found on
-- the ready list and moved to the end.
--
-- -2 : 2 vector loads have been issued and a vector operation has
-- been found and moved to the end of the ready list.
--
-- -3 : 2 vector loads and a vector insn have been issued and a
-- vector operation has been found and moved to the end of the
-- ready list.
--
-- 1 : 1 vector insn has been issued and another has been found and
-- moved to the end of the ready list.
--
-- 2 : 2 vector insns have been issued and a vector load has been
-- found and moved to the end of the ready list.
--
-- 3 : 2 vector insns and a vector load have been issued and another
-- vector load has been found and moved to the end of the ready
-- list. */
-+ 1 : A vecload or vector insn has been issued and a candidate for
-+ pairing has been found and moved to the end of the ready
-+ list. */
- if (type == TYPE_VECLOAD)
- {
- /* Issued a vecload. */
-- if (vec_load_pendulum == 0)
-+ if (vec_pairing == 0)
- {
-- /* We issued a single vecload, look for another and move it to
-- the end of the ready list so it will be scheduled next.
-- Set pendulum if found. */
-+ int vecload_pos = -1;
-+ /* We issued a single vecload, look for a vector insn to pair it
-+ with. If one isn't found, try to pair another vecload. */
- pos = lastpos;
- while (pos >= 0)
- {
-- if (recog_memoized (ready[pos]) >= 0
-- && get_attr_type (ready[pos]) == TYPE_VECLOAD)
-+ if (recog_memoized (ready[pos]) >= 0)
- {
-- tmp = ready[pos];
-- for (i = pos; i < lastpos; i++)
-- ready[i] = ready[i + 1];
-- ready[lastpos] = tmp;
-- vec_load_pendulum = -1;
-- return cached_can_issue_more;
-+ type2 = get_attr_type (ready[pos]);
-+ if (is_power9_pairable_vec_type (type2))
-+ {
-+ /* Found a vector insn to pair with, move it to the
-+ end of the ready list so it is scheduled next. */
-+ tmp = ready[pos];
-+ for (i = pos; i < lastpos; i++)
-+ ready[i] = ready[i + 1];
-+ ready[lastpos] = tmp;
-+ vec_pairing = 1;
-+ return cached_can_issue_more;
-+ }
-+ else if (type2 == TYPE_VECLOAD && vecload_pos == -1)
-+ /* Remember position of first vecload seen. */
-+ vecload_pos = pos;
- }
- pos--;
+- slp_tree res = vect_build_slp_tree_2 (vinfo, stmts, group_size, max_nunits,
++ poly_uint64 this_max_nunits = 1;
++ slp_tree res = vect_build_slp_tree_2 (vinfo, stmts, group_size,
++ &this_max_nunits,
+ matches, npermutes, tree_size,
+ max_tree_size, bst_map);
+- /* Keep a reference for the bst_map use. */
+ if (res)
+- res->refcnt++;
++ {
++ res->max_nunits = this_max_nunits;
++ vect_update_max_nunits (max_nunits, this_max_nunits);
++ /* Keep a reference for the bst_map use. */
++ res->refcnt++;
++ }
+ bst_map->put (stmts.copy (), res);
+ return res;
+ }
+@@ -1463,9 +1473,10 @@
+
+ dump_metadata_t metadata (dump_kind, loc.get_impl_location ());
+ dump_user_location_t user_loc = loc.get_user_location ();
+- dump_printf_loc (metadata, user_loc, "node%s %p\n",
++ dump_printf_loc (metadata, user_loc, "node%s %p (max_nunits=%u)\n",
+ SLP_TREE_DEF_TYPE (node) != vect_internal_def
+- ? " (external)" : "", node);
++ ? " (external)" : "", node,
++ estimated_poly_value (node->max_nunits));
+ FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (node), i, stmt_info)
+ dump_printf_loc (metadata, user_loc, "\tstmt %d %G", i, stmt_info->stmt);
+ if (SLP_TREE_CHILDREN (node).is_empty ())
+Index: gcc/lto-streamer.h
+===================================================================
+--- a/src/gcc/lto-streamer.h (.../tags/gcc_9_2_0_release)
++++ b/src/gcc/lto-streamer.h (.../branches/gcc-9-branch)
+@@ -879,6 +879,7 @@
+ struct lto_out_decl_state *);
+ void lto_output_location (struct output_block *, struct bitpack_d *, location_t);
+ void lto_output_init_mode_table (void);
++void lto_prepare_function_for_streaming (cgraph_node *);
+
+
+ /* In lto-cgraph.c */
+Index: libgo/mksysinfo.sh
+===================================================================
+--- a/src/libgo/mksysinfo.sh (.../tags/gcc_9_2_0_release)
++++ b/src/libgo/mksysinfo.sh (.../branches/gcc-9-branch)
+@@ -1127,7 +1127,7 @@
+ # Prefer largefile variant if available.
+ # CentOS 5 does not have f_flags, so pull from f_spare.
+ statfs=`grep '^type _statfs64 ' gen-sysinfo.go || true`
+-if test "$statfs" == ""; then
++if test "$statfs" = ""; then
+ statfs=`grep '^type _statfs ' gen-sysinfo.go || true`
+ fi
+ if ! echo "$statfs" | grep f_flags; then
+Index: libgo/go/go/internal/gccgoimporter/parser.go
+===================================================================
+--- a/src/libgo/go/go/internal/gccgoimporter/parser.go (.../tags/gcc_9_2_0_release)
++++ b/src/libgo/go/go/internal/gccgoimporter/parser.go (.../branches/gcc-9-branch)
+@@ -248,7 +248,7 @@
+ case *types.Named:
+ name = typ.Obj().Name()
+ default:
+- p.error("anonymous field expected")
++ p.error("embedded field expected")
}
-- }
-- else if (vec_load_pendulum == -1)
-- {
-- /* This is the second vecload we've issued, search the ready
-- list for a vector operation so we can try to schedule a
-- pair of those next. If found move to the end of the ready
-- list so it is scheduled next and set the pendulum. */
-- pos = lastpos;
-- while (pos >= 0)
-+ if (vecload_pos >= 0)
- {
-- if (recog_memoized (ready[pos]) >= 0
-- && is_power9_pairable_vec_type (
-- get_attr_type (ready[pos])))
-- {
-- tmp = ready[pos];
-- for (i = pos; i < lastpos; i++)
-- ready[i] = ready[i + 1];
-- ready[lastpos] = tmp;
-- vec_load_pendulum = -2;
-- return cached_can_issue_more;
-- }
-- pos--;
-+ /* Didn't find a vector to pair with but did find a vecload,
-+ move it to the end of the ready list. */
-+ tmp = ready[vecload_pos];
-+ for (i = vecload_pos; i < lastpos; i++)
-+ ready[i] = ready[i + 1];
-+ ready[lastpos] = tmp;
-+ vec_pairing = 1;
-+ return cached_can_issue_more;
+ }
+ field = types.NewField(token.NoPos, pkg, name, typ, anon)
+@@ -451,8 +451,12 @@
+ }
+ }
+
+-// update sets the type map entries for the given type numbers nlist to t.
+-func (p *parser) update(t types.Type, nlist []int) {
++// update sets the type map entries for the entries in nlist to t.
++// An entry in nlist can be a type number in p.typeList,
++// used to resolve named types, or it can be a *types.Pointer,
++// used to resolve pointers to named types in case they are referenced
++// by embedded fields.
++func (p *parser) update(t types.Type, nlist []interface{}) {
+ if len(nlist) != 0 {
+ if t == reserved {
+ p.errorf("internal error: update(%v) invoked on reserved", nlist)
+@@ -462,13 +466,27 @@
}
- }
-- else if (vec_load_pendulum == 2)
-- {
-- /* Two vector ops have been issued and we've just issued a
-- vecload, look for another vecload and move to end of ready
-- list if found. */
-- pos = lastpos;
-- while (pos >= 0)
-- {
-- if (recog_memoized (ready[pos]) >= 0
-- && get_attr_type (ready[pos]) == TYPE_VECLOAD)
-- {
-- tmp = ready[pos];
-- for (i = pos; i < lastpos; i++)
-- ready[i] = ready[i + 1];
-- ready[lastpos] = tmp;
-- /* Set pendulum so that next vecload will be seen as
-- finishing a group, not start of one. */
-- vec_load_pendulum = 3;
-- return cached_can_issue_more;
-- }
-- pos--;
-- }
-- }
}
- else if (is_power9_pairable_vec_type (type))
- {
- /* Issued a vector operation. */
-- if (vec_load_pendulum == 0)
-- /* We issued a single vec op, look for another and move it
-- to the end of the ready list so it will be scheduled next.
-- Set pendulum if found. */
-+ if (vec_pairing == 0)
- {
-+ int vec_pos = -1;
-+ /* We issued a single vector insn, look for a vecload to pair it
-+ with. If one isn't found, try to pair another vector. */
- pos = lastpos;
- while (pos >= 0)
- {
-- if (recog_memoized (ready[pos]) >= 0
-- && is_power9_pairable_vec_type (
-- get_attr_type (ready[pos])))
-+ if (recog_memoized (ready[pos]) >= 0)
- {
-- tmp = ready[pos];
-- for (i = pos; i < lastpos; i++)
-- ready[i] = ready[i + 1];
-- ready[lastpos] = tmp;
-- vec_load_pendulum = 1;
-- return cached_can_issue_more;
-+ type2 = get_attr_type (ready[pos]);
-+ if (type2 == TYPE_VECLOAD)
-+ {
-+ /* Found a vecload insn to pair with, move it to the
-+ end of the ready list so it is scheduled next. */
-+ tmp = ready[pos];
-+ for (i = pos; i < lastpos; i++)
-+ ready[i] = ready[i + 1];
-+ ready[lastpos] = tmp;
-+ vec_pairing = 1;
-+ return cached_can_issue_more;
+ for _, n := range nlist {
+- if p.typeList[n] == t {
+- continue
++ switch n := n.(type) {
++ case int:
++ if p.typeList[n] == t {
++ continue
+ }
-+ else if (is_power9_pairable_vec_type (type2)
-+ && vec_pos == -1)
-+ /* Remember position of first vector insn seen. */
-+ vec_pos = pos;
- }
- pos--;
- }
-- }
-- else if (vec_load_pendulum == 1)
-- {
-- /* This is the second vec op we've issued, search the ready
-- list for a vecload operation so we can try to schedule a
-- pair of those next. If found move to the end of the ready
-- list so it is scheduled next and set the pendulum. */
-- pos = lastpos;
-- while (pos >= 0)
-+ if (vec_pos >= 0)
- {
-- if (recog_memoized (ready[pos]) >= 0
-- && get_attr_type (ready[pos]) == TYPE_VECLOAD)
-- {
-- tmp = ready[pos];
-- for (i = pos; i < lastpos; i++)
-- ready[i] = ready[i + 1];
-- ready[lastpos] = tmp;
-- vec_load_pendulum = 2;
-- return cached_can_issue_more;
-- }
-- pos--;
-+ /* Didn't find a vecload to pair with but did find a vector
-+ insn, move it to the end of the ready list. */
-+ tmp = ready[vec_pos];
-+ for (i = vec_pos; i < lastpos; i++)
-+ ready[i] = ready[i + 1];
-+ ready[lastpos] = tmp;
-+ vec_pairing = 1;
-+ return cached_can_issue_more;
++ if p.typeList[n] != reserved {
++ p.errorf("internal error: update(%v): %d not reserved", nlist, n)
++ }
++ p.typeList[n] = t
++ case *types.Pointer:
++ if *n != (types.Pointer{}) {
++ elem := n.Elem()
++ if elem == t {
++ continue
++ }
++ p.errorf("internal error: update: pointer already set to %v, expected %v", elem, t)
++ }
++ *n = *types.NewPointer(t)
++ default:
++ p.errorf("internal error: %T on nlist", n)
}
- }
-- else if (vec_load_pendulum == -2)
-- {
-- /* Two vecload ops have been issued and we've just issued a
-- vec op, look for another vec op and move to end of ready
-- list if found. */
-- pos = lastpos;
-- while (pos >= 0)
-- {
-- if (recog_memoized (ready[pos]) >= 0
-- && is_power9_pairable_vec_type (
-- get_attr_type (ready[pos])))
-- {
-- tmp = ready[pos];
-- for (i = pos; i < lastpos; i++)
-- ready[i] = ready[i + 1];
-- ready[lastpos] = tmp;
-- /* Set pendulum so that next vec op will be seen as
-- finishing a group, not start of one. */
-- vec_load_pendulum = -3;
-- return cached_can_issue_more;
-- }
-- pos--;
+- if p.typeList[n] != reserved {
+- p.errorf("internal error: update(%v): %d not reserved", nlist, n)
- }
-- }
+- p.typeList[n] = t
}
-
-- /* We've either finished a vec/vecload group, couldn't find an insn to
-- continue the current group, or the last insn had nothing to do with
-- with a group. In any case, reset the pendulum. */
-- vec_load_pendulum = 0;
-+ /* We've either finished a vec/vecload pair, couldn't find an insn to
-+ continue the current pair, or the last insn had nothing to do with
-+ with pairing. In any case, reset the state. */
-+ vec_pairing = 0;
- }
-
- return cached_can_issue_more;
-@@ -32014,7 +31985,7 @@
- last_scheduled_insn = NULL;
- load_store_pendulum = 0;
- divide_cnt = 0;
-- vec_load_pendulum = 0;
-+ vec_pairing = 0;
}
- /* The following function is called at the end of scheduling BB.
-@@ -32061,7 +32032,7 @@
- rtx_insn *last_scheduled_insn;
- int load_store_pendulum;
- int divide_cnt;
-- int vec_load_pendulum;
-+ int vec_pairing;
- };
-
- typedef struct rs6000_sched_context rs6000_sched_context_def;
-@@ -32087,7 +32058,7 @@
- sc->last_scheduled_insn = NULL;
- sc->load_store_pendulum = 0;
- sc->divide_cnt = 0;
-- sc->vec_load_pendulum = 0;
-+ sc->vec_pairing = 0;
- }
- else
- {
-@@ -32095,7 +32066,7 @@
- sc->last_scheduled_insn = last_scheduled_insn;
- sc->load_store_pendulum = load_store_pendulum;
- sc->divide_cnt = divide_cnt;
-- sc->vec_load_pendulum = vec_load_pendulum;
-+ sc->vec_pairing = vec_pairing;
- }
+@@ -475,7 +493,7 @@
+ // NamedType = TypeName [ "=" ] Type { Method } .
+ // TypeName = ExportedName .
+ // Method = "func" "(" Param ")" Name ParamList ResultList [InlineBody] ";" .
+-func (p *parser) parseNamedType(nlist []int) types.Type {
++func (p *parser) parseNamedType(nlist []interface{}) types.Type {
+ pkg, name := p.parseExportedName()
+ scope := pkg.Scope()
+ obj := scope.Lookup(name)
+@@ -582,7 +600,7 @@
}
-@@ -32111,7 +32082,7 @@
- last_scheduled_insn = sc->last_scheduled_insn;
- load_store_pendulum = sc->load_store_pendulum;
- divide_cnt = sc->divide_cnt;
-- vec_load_pendulum = sc->vec_load_pendulum;
-+ vec_pairing = sc->vec_pairing;
+ // ArrayOrSliceType = "[" [ int ] "]" Type .
+-func (p *parser) parseArrayOrSliceType(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parseArrayOrSliceType(pkg *types.Package, nlist []interface{}) types.Type {
+ p.expect('[')
+ if p.tok == ']' {
+ p.next()
+@@ -605,7 +623,7 @@
}
- /* Free _SC. */
-@@ -36141,7 +36112,10 @@
- }
-
- else
-- gcc_unreachable ();
-+ {
-+ error ("attribute %<target%> argument not a string");
-+ return false;
-+ }
+ // MapType = "map" "[" Type "]" Type .
+-func (p *parser) parseMapType(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parseMapType(pkg *types.Package, nlist []interface{}) types.Type {
+ p.expectKeyword("map")
- return ret;
+ t := new(types.Map)
+@@ -621,7 +639,7 @@
}
-@@ -38564,6 +38538,7 @@
- case UNSPEC_VSX_CVSPDPN:
- return 0;
- case UNSPEC_VSPLT_DIRECT:
-+ case UNSPEC_VSX_XXSPLTD:
- *special = SH_SPLAT;
- return 1;
- case UNSPEC_REDUC_PLUS:
-@@ -38634,6 +38609,12 @@
- {
- if (GET_CODE (body) == SET)
- {
-+ rtx rhs = SET_SRC (body);
-+ /* Even without a swap, the RHS might be a vec_select for, say,
-+ a byte-reversing load. */
-+ if (GET_CODE (rhs) != MEM)
-+ return 0;
-+
- *special = SH_NOSWAP_LD;
- return 1;
- }
-@@ -38645,6 +38626,12 @@
- {
- if (GET_CODE (body) == SET && GET_CODE (SET_SRC (body)) != UNSPEC)
- {
-+ rtx lhs = SET_DEST (body);
-+ /* Even without a swap, the LHS might be a vec_select for, say,
-+ a byte-reversing store. */
-+ if (GET_CODE (lhs) != MEM)
-+ return 0;
-+
- *special = SH_NOSWAP_ST;
- return 1;
- }
-Index: gcc/config/rs6000/vsx.md
-===================================================================
---- a/src/gcc/config/rs6000/vsx.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/vsx.md (.../branches/gcc-6-branch)
-@@ -1827,8 +1827,8 @@
- [(set_attr "type" "vecdouble")])
-
- (define_insn "vsx_xvcvsxdsp"
-- [(set (match_operand:V4SI 0 "vsx_register_operand" "=wd,?wa")
-- (unspec:V4SI [(match_operand:V2DF 1 "vsx_register_operand" "wf,wa")]
-+ [(set (match_operand:V4SF 0 "vsx_register_operand" "=wd,?wa")
-+ (unspec:V4SF [(match_operand:V2DI 1 "vsx_register_operand" "wf,wa")]
- UNSPEC_VSX_CVSXDSP))]
- "VECTOR_UNIT_VSX_P (V2DFmode)"
- "xvcvsxdsp %x0,%x1"
-@@ -1835,11 +1835,11 @@
- [(set_attr "type" "vecfloat")])
-
- (define_insn "vsx_xvcvuxdsp"
-- [(set (match_operand:V4SI 0 "vsx_register_operand" "=wd,?wa")
-- (unspec:V4SI [(match_operand:V2DF 1 "vsx_register_operand" "wf,wa")]
-+ [(set (match_operand:V4SF 0 "vsx_register_operand" "=wd,?wa")
-+ (unspec:V4SF [(match_operand:V2DI 1 "vsx_register_operand" "wf,wa")]
- UNSPEC_VSX_CVUXDSP))]
- "VECTOR_UNIT_VSX_P (V2DFmode)"
-- "xvcvuxwdp %x0,%x1"
-+ "xvcvuxdsp %x0,%x1"
- [(set_attr "type" "vecdouble")])
-
- ;; Convert from 32-bit to 64-bit types
-@@ -2276,6 +2276,38 @@
- op1 = gen_lowpart (V2DImode, op1);
- }
- }
-+ emit_insn (gen (target, op0, op1, perm0, perm1));
-+ DONE;
-+})
-+
-+;; Special version of xxpermdi that retains big-endian semantics.
-+(define_expand "vsx_xxpermdi_<mode>_be"
-+ [(match_operand:VSX_L 0 "vsx_register_operand" "")
-+ (match_operand:VSX_L 1 "vsx_register_operand" "")
-+ (match_operand:VSX_L 2 "vsx_register_operand" "")
-+ (match_operand:QI 3 "u5bit_cint_operand" "")]
-+ "VECTOR_MEM_VSX_P (<MODE>mode)"
-+{
-+ rtx target = operands[0];
-+ rtx op0 = operands[1];
-+ rtx op1 = operands[2];
-+ int mask = INTVAL (operands[3]);
-+ rtx perm0 = GEN_INT ((mask >> 1) & 1);
-+ rtx perm1 = GEN_INT ((mask & 1) + 2);
-+ rtx (*gen) (rtx, rtx, rtx, rtx, rtx);
-+
-+ if (<MODE>mode == V2DFmode)
-+ gen = gen_vsx_xxpermdi2_v2df_1;
-+ else
-+ {
-+ gen = gen_vsx_xxpermdi2_v2di_1;
-+ if (<MODE>mode != V2DImode)
-+ {
-+ target = gen_lowpart (V2DImode, target);
-+ op0 = gen_lowpart (V2DImode, op0);
-+ op1 = gen_lowpart (V2DImode, op1);
-+ }
-+ }
- /* In little endian mode, vsx_xxpermdi2_<mode>_1 will perform a
- transformation we don't want; it is necessary for
- rs6000_expand_vec_perm_const_1 but not for this use. So we
-@@ -2397,16 +2429,29 @@
- })
- ;; V2DF/V2DI splat
--(define_insn "vsx_splat_<mode>"
-- [(set (match_operand:VSX_D 0 "vsx_register_operand" "=<VSa>,<VSa>,we")
-+(define_insn_and_split "vsx_splat_<mode>"
-+ [(set (match_operand:VSX_D 0 "vsx_register_operand"
-+ "=<VSa>, <VSa>,we,<VS_64dm>")
- (vec_duplicate:VSX_D
-- (match_operand:<VS_scalar> 1 "splat_input_operand" "<VS_64reg>,Z,b")))]
-+ (match_operand:<VS_scalar> 1 "splat_input_operand"
-+ "<VS_64reg>,Z, b, wA")))]
- "VECTOR_MEM_VSX_P (<MODE>mode)"
- "@
- xxpermdi %x0,%x1,%x1,0
- lxvdsx %x0,%y1
-- mtvsrdd %x0,%1,%1"
-- [(set_attr "type" "vecperm,vecload,mftgpr")])
-+ mtvsrdd %x0,%1,%1
-+ #"
-+ "&& reload_completed && TARGET_POWERPC64 && !TARGET_P9_VECTOR
-+ && int_reg_operand (operands[1], <VS_scalar>mode)"
-+ [(set (match_dup 2)
-+ (match_dup 1))
-+ (set (match_dup 0)
-+ (vec_duplicate:VSX_D (match_dup 2)))]
-+{
-+ operands[2] = gen_rtx_REG (<VS_scalar>mode, reg_or_subregno (operands[0]));
-+}
-+ [(set_attr "type" "vecperm,vecload,vecperm,vecperm")
-+ (set_attr "length" "4,4,4,8")])
-
- ;; V4SI splat (ISA 3.0)
- ;; When SI's are allowed in VSX registers, add XXSPLTW support
-Index: gcc/config/rs6000/rs6000.h
-===================================================================
---- a/src/gcc/config/rs6000/rs6000.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/rs6000.h (.../branches/gcc-6-branch)
-@@ -635,6 +635,7 @@
- #define MASK_DIRECT_MOVE OPTION_MASK_DIRECT_MOVE
- #define MASK_DLMZB OPTION_MASK_DLMZB
- #define MASK_EABI OPTION_MASK_EABI
-+#define MASK_FLOAT128 OPTION_MASK_FLOAT128
- #define MASK_FPRND OPTION_MASK_FPRND
- #define MASK_P8_FUSION OPTION_MASK_P8_FUSION
- #define MASK_HARD_FLOAT OPTION_MASK_HARD_FLOAT
-@@ -743,7 +744,8 @@
- && (TARGET_POPCNTB || VECTOR_UNIT_VSX_P (DFmode)))
-
- #define TARGET_FRSQRTES (TARGET_HARD_FLOAT && TARGET_POPCNTB \
-- && TARGET_FPRS && TARGET_SINGLE_FLOAT)
-+ && TARGET_PPC_GFXOPT && TARGET_FPRS \
-+ && TARGET_SINGLE_FLOAT)
-
- #define TARGET_FRSQRTE (TARGET_HARD_FLOAT && TARGET_FPRS \
- && TARGET_DOUBLE_FLOAT \
-@@ -1588,6 +1590,7 @@
- RS6000_CONSTRAINT_wx, /* FPR register for STFIWX */
- RS6000_CONSTRAINT_wy, /* VSX register for SF */
- RS6000_CONSTRAINT_wz, /* FPR register for LFIWZX */
-+ RS6000_CONSTRAINT_wA, /* BASE_REGS if 64-bit. */
- RS6000_CONSTRAINT_MAX
- };
+ // ChanType = "chan" ["<-" | "-<"] Type .
+-func (p *parser) parseChanType(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parseChanType(pkg *types.Package, nlist []interface{}) types.Type {
+ p.expectKeyword("chan")
-@@ -2718,7 +2721,7 @@
- #define RS6000_BTM_HARD_FLOAT MASK_SOFT_FLOAT /* Hardware floating point. */
- #define RS6000_BTM_LDBL128 MASK_MULTIPLE /* 128-bit long double. */
- #define RS6000_BTM_64BIT MASK_64BIT /* 64-bit addressing. */
--#define RS6000_BTM_FLOAT128 MASK_P9_VECTOR /* IEEE 128-bit float. */
-+#define RS6000_BTM_FLOAT128 MASK_FLOAT128 /* IEEE 128-bit float. */
-
- #define RS6000_BTM_COMMON (RS6000_BTM_ALTIVEC \
- | RS6000_BTM_VSX \
-Index: gcc/config/rs6000/dfp.md
-===================================================================
---- a/src/gcc/config/rs6000/dfp.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/dfp.md (.../branches/gcc-6-branch)
-@@ -347,9 +347,9 @@
- [(set_attr "type" "dfp")])
-
- (define_insn "dfp_dxex_<mode>"
-- [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
-- (unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")]
-- UNSPEC_DXEX))]
-+ [(set (match_operand:DI 0 "gpc_reg_operand" "=d")
-+ (unspec:DI [(match_operand:D64_D128 1 "gpc_reg_operand" "d")]
-+ UNSPEC_DXEX))]
- "TARGET_DFP"
- "dxex<dfp_suffix> %0,%1"
- [(set_attr "type" "dfp")])
-@@ -356,7 +356,7 @@
-
- (define_insn "dfp_diex_<mode>"
- [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
-- (unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")
-+ (unspec:D64_D128 [(match_operand:DI 1 "gpc_reg_operand" "d")
- (match_operand:D64_D128 2 "gpc_reg_operand" "d")]
- UNSPEC_DXEX))]
- "TARGET_DFP"
-Index: gcc/config/rs6000/rs6000.md
-===================================================================
---- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-6-branch)
-@@ -514,9 +514,6 @@
- (define_mode_iterator SIGNBIT [(KF "FLOAT128_VECTOR_P (KFmode)")
- (TF "FLOAT128_VECTOR_P (TFmode)")])
+ t := new(types.Chan)
+@@ -648,7 +666,7 @@
+ }
--(define_mode_attr Fsignbit [(KF "wa")
-- (TF "wa")])
--
- ; SF/DF suffix for traditional floating instructions
- (define_mode_attr Ftrad [(SF "s") (DF "")])
-
-@@ -2255,12 +2252,12 @@
-
- ;; Since the hardware zeros the upper part of the register, save generating the
- ;; AND immediate if we are converting to unsigned
--(define_insn "*bswaphi2_extenddi"
-+(define_insn "*bswap<mode>2_extenddi"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- (zero_extend:DI
-- (bswap:HI (match_operand:HI 1 "memory_operand" "Z"))))]
-+ (bswap:HSI (match_operand:HSI 1 "memory_operand" "Z"))))]
- "TARGET_POWERPC64"
-- "lhbrx %0,%y1"
-+ "l<wd>brx %0,%y1"
- [(set_attr "length" "4")
- (set_attr "type" "load")])
-
-@@ -2273,34 +2270,52 @@
- [(set_attr "length" "4")
- (set_attr "type" "load")])
-
--(define_expand "bswaphi2"
-- [(parallel [(set (match_operand:HI 0 "reg_or_mem_operand" "")
-- (bswap:HI
-- (match_operand:HI 1 "reg_or_mem_operand" "")))
-- (clobber (match_scratch:SI 2 ""))])]
-+;; Separate the bswap patterns into load, store, and gpr<-gpr. This prevents
-+;; the register allocator from converting a gpr<-gpr swap into a store and then
-+;; load with byte swap, which can be slower than doing it in the registers. It
-+;; also prevents certain failures with the RELOAD register allocator.
-+
-+(define_expand "bswap<mode>2"
-+ [(use (match_operand:HSI 0 "reg_or_mem_operand"))
-+ (use (match_operand:HSI 1 "reg_or_mem_operand"))]
- ""
- {
-- if (!REG_P (operands[0]) && !REG_P (operands[1]))
-- operands[1] = force_reg (HImode, operands[1]);
-+ rtx dest = operands[0];
-+ rtx src = operands[1];
-+
-+ if (!REG_P (dest) && !REG_P (src))
-+ src = force_reg (<MODE>mode, src);
-+
-+ if (MEM_P (src))
-+ emit_insn (gen_bswap<mode>2_load (dest, src));
-+ else if (MEM_P (dest))
-+ emit_insn (gen_bswap<mode>2_store (dest, src));
-+ else
-+ emit_insn (gen_bswap<mode>2_reg (dest, src));
-+ DONE;
- })
+ // StructType = "struct" "{" { Field } "}" .
+-func (p *parser) parseStructType(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parseStructType(pkg *types.Package, nlist []interface{}) types.Type {
+ p.expectKeyword("struct")
--(define_insn "bswaphi2_internal"
-- [(set (match_operand:HI 0 "reg_or_mem_operand" "=r,Z,&r")
-+(define_insn "bswap<mode>2_load"
-+ [(set (match_operand:HSI 0 "gpc_reg_operand" "=r")
-+ (bswap:HSI (match_operand:HSI 1 "memory_operand" "Z")))]
-+ ""
-+ "l<wd>brx %0,%y1"
-+ [(set_attr "type" "load")])
-+
-+(define_insn "bswap<mode>2_store"
-+ [(set (match_operand:HSI 0 "memory_operand" "=Z")
-+ (bswap:HSI (match_operand:HSI 1 "gpc_reg_operand" "r")))]
-+ ""
-+ "st<wd>brx %1,%y0"
-+ [(set_attr "type" "store")])
-+
-+(define_insn_and_split "bswaphi2_reg"
-+ [(set (match_operand:HI 0 "gpc_reg_operand" "=&r")
- (bswap:HI
-- (match_operand:HI 1 "reg_or_mem_operand" "Z,r,r")))
-- (clobber (match_scratch:SI 2 "=X,X,&r"))]
-+ (match_operand:HI 1 "gpc_reg_operand" "r")))
-+ (clobber (match_scratch:SI 2 "=&r"))]
- ""
-- "@
-- lhbrx %0,%y1
-- sthbrx %1,%y0
-- #"
-- [(set_attr "length" "4,4,12")
-- (set_attr "type" "load,store,*")])
--
--(define_split
-- [(set (match_operand:HI 0 "gpc_reg_operand" "")
-- (bswap:HI (match_operand:HI 1 "gpc_reg_operand" "")))
-- (clobber (match_operand:SI 2 "gpc_reg_operand" ""))]
-+ "#"
- "reload_completed"
- [(set (match_dup 3)
- (and:SI (lshiftrt:SI (match_dup 4)
-@@ -2313,48 +2328,21 @@
- (set (match_dup 3)
- (ior:SI (match_dup 3)
- (match_dup 2)))]
-- "
- {
- operands[3] = simplify_gen_subreg (SImode, operands[0], HImode, 0);
- operands[4] = simplify_gen_subreg (SImode, operands[1], HImode, 0);
--}")
-+}
-+ [(set_attr "length" "12")
-+ (set_attr "type" "*")])
-
--(define_insn "*bswapsi2_extenddi"
-- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
-- (zero_extend:DI
-- (bswap:SI (match_operand:SI 1 "memory_operand" "Z"))))]
-- "TARGET_POWERPC64"
-- "lwbrx %0,%y1"
-- [(set_attr "length" "4")
-- (set_attr "type" "load")])
--
--(define_expand "bswapsi2"
-- [(set (match_operand:SI 0 "reg_or_mem_operand" "")
-+;; We are always BITS_BIG_ENDIAN, so the bit positions below in
-+;; zero_extract insns do not change for -mlittle.
-+(define_insn_and_split "bswapsi2_reg"
-+ [(set (match_operand:SI 0 "gpc_reg_operand" "=&r")
- (bswap:SI
-- (match_operand:SI 1 "reg_or_mem_operand" "")))]
-+ (match_operand:SI 1 "gpc_reg_operand" "r")))]
- ""
--{
-- if (!REG_P (operands[0]) && !REG_P (operands[1]))
-- operands[1] = force_reg (SImode, operands[1]);
--})
--
--(define_insn "*bswapsi2_internal"
-- [(set (match_operand:SI 0 "reg_or_mem_operand" "=r,Z,&r")
-- (bswap:SI
-- (match_operand:SI 1 "reg_or_mem_operand" "Z,r,r")))]
-- ""
-- "@
-- lwbrx %0,%y1
-- stwbrx %1,%y0
-- #"
-- [(set_attr "length" "4,4,12")
-- (set_attr "type" "load,store,*")])
--
--;; We are always BITS_BIG_ENDIAN, so the bit positions below in
--;; zero_extract insns do not change for -mlittle.
--(define_split
-- [(set (match_operand:SI 0 "gpc_reg_operand" "")
-- (bswap:SI (match_operand:SI 1 "gpc_reg_operand" "")))]
-+ "#"
- "reload_completed"
- [(set (match_dup 0) ; DABC
- (rotate:SI (match_dup 1)
-@@ -2370,11 +2358,13 @@
- (const_int 24))
- (const_int 255))
- (and:SI (match_dup 0)
-- (const_int -256))))
--
-- ]
-+ (const_int -256))))]
- "")
-
-+;; On systems with LDBRX/STDBRX generate the loads/stores directly, just like
-+;; we do for L{H,W}BRX and ST{H,W}BRX above. If not, we have to generate more
-+;; complex code.
-+
- (define_expand "bswapdi2"
- [(parallel [(set (match_operand:DI 0 "reg_or_mem_operand" "")
- (bswap:DI
-@@ -2383,34 +2373,57 @@
- (clobber (match_scratch:DI 3 ""))])]
- ""
- {
-- if (!REG_P (operands[0]) && !REG_P (operands[1]))
-- operands[1] = force_reg (DImode, operands[1]);
-+ rtx dest = operands[0];
-+ rtx src = operands[1];
+ t := new(types.Struct)
+@@ -714,7 +732,7 @@
+ }
-+ if (!REG_P (dest) && !REG_P (src))
-+ operands[1] = src = force_reg (DImode, src);
-+
-+ if (TARGET_POWERPC64 && TARGET_LDBRX)
-+ {
-+ if (MEM_P (src))
-+ emit_insn (gen_bswapdi2_load (dest, src));
-+ else if (MEM_P (dest))
-+ emit_insn (gen_bswapdi2_store (dest, src));
-+ else
-+ emit_insn (gen_bswapdi2_reg (dest, src));
-+ DONE;
-+ }
-+
- if (!TARGET_POWERPC64)
- {
- /* 32-bit mode needs fewer scratch registers, but 32-bit addressing mode
- that uses 64-bit registers needs the same scratch registers as 64-bit
- mode. */
-- emit_insn (gen_bswapdi2_32bit (operands[0], operands[1]));
-+ emit_insn (gen_bswapdi2_32bit (dest, src));
- DONE;
- }
- })
+ // FunctionType = ParamList ResultList .
+-func (p *parser) parseFunctionType(pkg *types.Package, nlist []int) *types.Signature {
++func (p *parser) parseFunctionType(pkg *types.Package, nlist []interface{}) *types.Signature {
+ t := new(types.Signature)
+ p.update(t, nlist)
- ;; Power7/cell has ldbrx/stdbrx, so use it directly
--(define_insn "*bswapdi2_ldbrx"
-- [(set (match_operand:DI 0 "reg_or_mem_operand" "=r,Z,&r")
-- (bswap:DI (match_operand:DI 1 "reg_or_mem_operand" "Z,r,r")))
-- (clobber (match_scratch:DI 2 "=X,X,&r"))
-- (clobber (match_scratch:DI 3 "=X,X,&r"))]
-- "TARGET_POWERPC64 && TARGET_LDBRX
-- && (REG_P (operands[0]) || REG_P (operands[1]))"
-- "@
-- ldbrx %0,%y1
-- stdbrx %1,%y0
-- #"
-- [(set_attr "length" "4,4,36")
-- (set_attr "type" "load,store,*")])
-+(define_insn "bswapdi2_load"
-+ [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
-+ (bswap:DI (match_operand:DI 1 "memory_operand" "Z")))]
-+ "TARGET_POWERPC64 && TARGET_LDBRX"
-+ "ldbrx %0,%y1"
-+ [(set_attr "type" "load")])
-
-+(define_insn "bswapdi2_store"
-+ [(set (match_operand:DI 0 "memory_operand" "=Z")
-+ (bswap:DI (match_operand:DI 1 "gpc_reg_operand" "r")))]
-+ "TARGET_POWERPC64 && TARGET_LDBRX"
-+ "stdbrx %1,%y0"
-+ [(set_attr "type" "store")])
-+
-+(define_insn "bswapdi2_reg"
-+ [(set (match_operand:DI 0 "gpc_reg_operand" "=&r")
-+ (bswap:DI (match_operand:DI 1 "gpc_reg_operand" "r")))
-+ (clobber (match_scratch:DI 2 "=&r"))
-+ (clobber (match_scratch:DI 3 "=&r"))]
-+ "TARGET_POWERPC64 && TARGET_LDBRX"
-+ "#"
-+ [(set_attr "length" "36")])
-+
- ;; Non-power7/cell, fall back to use lwbrx/stwbrx
- (define_insn "*bswapdi2_64bit"
- [(set (match_operand:DI 0 "reg_or_mem_operand" "=r,Z,&r")
-@@ -3066,8 +3079,8 @@
- && ! reg_mentioned_p (operands[3], operands[1])
- && ! reg_mentioned_p (operands[3], operands[2])"
- [(set (match_dup 0)
-- (div:GPR (match_dup 1)
-- (match_dup 2)))
-+ (udiv:GPR (match_dup 1)
-+ (match_dup 2)))
- (set (match_dup 3)
- (mult:GPR (match_dup 0)
- (match_dup 2)))
-@@ -4616,7 +4629,7 @@
- (define_insn_and_split "signbit<mode>2_dm"
- [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
- (unspec:SI
-- [(match_operand:SIGNBIT 1 "input_operand" "<Fsignbit>,m,r")]
-+ [(match_operand:SIGNBIT 1 "input_operand" "wa,m,r")]
- UNSPEC_SIGNBIT))]
- "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
- "#"
-@@ -4626,15 +4639,32 @@
- rs6000_split_signbit (operands[0], operands[1]);
- DONE;
+@@ -740,7 +758,7 @@
}
-- [(set_attr "length" "8,8,12")
-+ [(set_attr "length" "8,8,4")
- (set_attr "type" "mftgpr,load,integer")])
-
-+(define_insn_and_split "*signbit<mode>2_dm_<su>ext"
-+ [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r")
-+ (any_extend:DI
-+ (unspec:SI
-+ [(match_operand:SIGNBIT 1 "input_operand" "wa,m,r")]
-+ UNSPEC_SIGNBIT)))]
-+ "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
-+ "#"
-+ "&& reload_completed"
-+ [(const_int 0)]
-+{
-+ rs6000_split_signbit (operands[0], operands[1]);
-+ DONE;
-+}
-+ [(set_attr "length" "8,8,4")
-+ (set_attr "type" "mftgpr,load,integer")])
-+
- ;; MODES_TIEABLE_P doesn't allow DImode to be tied with the various floating
- ;; point types, which makes normal SUBREG's problematical. Instead use a
- ;; special pattern to avoid using a normal movdi.
- (define_insn "signbit<mode>2_dm2"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
-- (unspec:DI [(match_operand:SIGNBIT 1 "gpc_reg_operand" "<Fsignbit>")
-+ (unspec:DI [(match_operand:SIGNBIT 1 "gpc_reg_operand" "wa")
- (const_int 0)]
- UNSPEC_SIGNBIT))]
- "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
-@@ -4649,7 +4679,7 @@
- (unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")
- (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,<Fv>")]
- UNSPEC_COPYSIGN))]
-- "TARGET_<MODE>_FPR && TARGET_CMPB"
-+ "TARGET_<MODE>_FPR && (TARGET_CMPB || VECTOR_UNIT_VSX_P (<MODE>mode))"
- "@
- fcpsgn %0,%2,%1
- xscpsgndp %x0,%x2,%x1"
-@@ -5415,17 +5445,10 @@
- [(set_attr "length" "12")
- (set_attr "type" "fp")])
-
--(define_expand "fixuns_trunc<mode>di2"
-- [(set (match_operand:DI 0 "register_operand" "")
-- (unsigned_fix:DI (match_operand:SFDF 1 "register_operand" "")))]
-- "TARGET_HARD_FLOAT && (TARGET_FCTIDUZ || VECTOR_UNIT_VSX_P (<MODE>mode))"
-- "")
--
--(define_insn "*fixuns_trunc<mode>di2_fctiduz"
-+(define_insn "fixuns_trunc<mode>di2"
- [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wi")
- (unsigned_fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fa>")))]
-- "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_FPRS
-- && TARGET_FCTIDUZ"
-+ "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT && TARGET_FPRS && TARGET_FCTIDUZ"
- "@
- fctiduz %0,%1
- xscvdpuxds %x0,%x1"
-@@ -7720,7 +7743,7 @@
- rtx gpr_lo_reg = gen_lowpart (DFmode, dest);
-
- emit_insn (gen_p8_mfvsrd_3_<mode> (gpr_hi_reg, src));
-- emit_insn (gen_vsx_xxpermdi_<mode> (tmp, src, src, GEN_INT (3)));
-+ emit_insn (gen_vsx_xxpermdi_<mode>_be (tmp, src, src, GEN_INT (3)));
- emit_insn (gen_p8_mfvsrd_3_<mode> (gpr_lo_reg, tmp));
- DONE;
- }
-Index: gcc/config/rs6000/altivec.h
-===================================================================
---- a/src/gcc/config/rs6000/altivec.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/rs6000/altivec.h (.../branches/gcc-6-branch)
-@@ -327,8 +327,8 @@
- #define vec_sqrt __builtin_vec_sqrt
- #define vec_vsx_ld __builtin_vec_vsx_ld
- #define vec_vsx_st __builtin_vec_vsx_st
--#define vec_xl __builtin_vec_xl
--#define vec_xst __builtin_vec_xst
-+#define vec_xl __builtin_vec_vsx_ld
-+#define vec_xst __builtin_vec_vsx_st
-
- /* Note, xxsldi and xxpermdi were added as __builtin_vsx_<xxx> functions
- instead of __builtin_vec_<xxx> */
-Index: gcc/config/tilepro/tilepro.c
-===================================================================
---- a/src/gcc/config/tilepro/tilepro.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/tilepro/tilepro.c (.../branches/gcc-6-branch)
-@@ -3534,8 +3534,11 @@
- /* Save lr first in its special location because code after this
- might use the link register as a scratch register. */
- if (df_regs_ever_live_p (TILEPRO_LINK_REGNUM) || crtl->calls_eh_return)
-- FRP (frame_emit_store (TILEPRO_LINK_REGNUM, TILEPRO_LINK_REGNUM,
-- stack_pointer_rtx, stack_pointer_rtx, 0));
-+ {
-+ FRP (frame_emit_store (TILEPRO_LINK_REGNUM, TILEPRO_LINK_REGNUM,
-+ stack_pointer_rtx, stack_pointer_rtx, 0));
-+ emit_insn (gen_blockage ());
-+ }
- if (total_size == 0)
- {
-Index: gcc/config/arm/arm.c
-===================================================================
---- a/src/gcc/config/arm/arm.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/arm/arm.c (.../branches/gcc-6-branch)
-@@ -61,6 +61,7 @@
- #include "builtins.h"
- #include "tm-constrs.h"
- #include "rtl-iter.h"
-+#include "gimple.h"
-
- /* This file should be included last. */
- #include "target-def.h"
-@@ -78,7 +79,7 @@
-
- /* Forward function declarations. */
- static bool arm_const_not_ok_for_debug_p (rtx);
--static bool arm_needs_doubleword_align (machine_mode, const_tree);
-+static int arm_needs_doubleword_align (machine_mode, const_tree);
- static int arm_compute_static_chain_stack_bytes (void);
- static arm_stack_offsets *arm_get_frame_offsets (void);
- static void arm_add_gc_roots (void);
-@@ -859,6 +860,9 @@
- int arm_arch_arm_hwdiv;
- int arm_arch_thumb_hwdiv;
-
-+/* Nonzero if this chip supports the Large Physical Address Extension. */
-+int arm_arch_lpae;
-+
- /* Nonzero if chip disallows volatile memory access in IT block. */
- int arm_arch_no_volatile_ce;
-
-@@ -3181,6 +3185,7 @@
- arm_arch_iwmmxt2 = ARM_FSET_HAS_CPU1 (insn_flags, FL_IWMMXT2);
- arm_arch_thumb_hwdiv = ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB_DIV);
- arm_arch_arm_hwdiv = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARM_DIV);
-+ arm_arch_lpae = ARM_FSET_HAS_CPU1 (insn_flags, FL_LPAE);
- arm_arch_no_volatile_ce = ARM_FSET_HAS_CPU1 (insn_flags, FL_NO_VOLATILE_CE);
- arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0;
- arm_arch_crc = ARM_FSET_HAS_CPU1 (insn_flags, FL_CRC32);
-@@ -6133,8 +6138,20 @@
- /* C3 - For double-word aligned arguments, round the NCRN up to the
- next even number. */
- ncrn = pcum->aapcs_ncrn;
-- if ((ncrn & 1) && arm_needs_doubleword_align (mode, type))
-- ncrn++;
-+ if (ncrn & 1)
-+ {
-+ int res = arm_needs_doubleword_align (mode, type);
-+ /* Only warn during RTL expansion of call stmts, otherwise we would
-+ warn e.g. during gimplification even on functions that will be
-+ always inlined, and we'd warn multiple times. Don't warn when
-+ called in expand_function_start either, as we warn instead in
-+ arm_function_arg_boundary in that case. */
-+ if (res < 0 && warn_psabi && currently_expanding_gimple_stmt)
-+ inform (input_location, "parameter passing for argument of type "
-+ "%qT will change in GCC 7.1", type);
-+ if (res != 0)
-+ ncrn++;
-+ }
-
- nregs = ARM_NUM_REGS2(mode, type);
+ // InterfaceType = "interface" "{" { ("?" Type | Func) ";" } "}" .
+-func (p *parser) parseInterfaceType(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parseInterfaceType(pkg *types.Package, nlist []interface{}) types.Type {
+ p.expectKeyword("interface")
-@@ -6239,12 +6256,16 @@
- }
+ t := new(types.Interface)
+@@ -767,7 +785,7 @@
}
--/* Return true if mode/type need doubleword alignment. */
--static bool
-+/* Return 1 if double word alignment is required for argument passing.
-+ Return -1 if double word alignment used to be required for argument
-+ passing before PR77728 ABI fix, but is not required anymore.
-+ Return 0 if double word alignment is not required and wasn't requried
-+ before either. */
-+static int
- arm_needs_doubleword_align (machine_mode mode, const_tree type)
- {
- if (!type)
-- return PARM_BOUNDARY < GET_MODE_ALIGNMENT (mode);
-+ return GET_MODE_ALIGNMENT (mode) > PARM_BOUNDARY;
-
- /* Scalar and vector types: Use natural alignment, i.e. of base type. */
- if (!AGGREGATE_TYPE_P (type))
-@@ -6254,12 +6275,21 @@
- if (TREE_CODE (type) == ARRAY_TYPE)
- return TYPE_ALIGN (TREE_TYPE (type)) > PARM_BOUNDARY;
-
-+ int ret = 0;
- /* Record/aggregate types: Use greatest member alignment of any member. */
- for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
- if (DECL_ALIGN (field) > PARM_BOUNDARY)
-- return true;
-+ {
-+ if (TREE_CODE (field) == FIELD_DECL)
-+ return 1;
-+ else
-+ /* Before PR77728 fix, we were incorrectly considering also
-+ other aggregate fields, like VAR_DECLs, TYPE_DECLs etc.
-+ Make sure we can warn about that with -Wpsabi. */
-+ ret = -1;
-+ }
+ // PointerType = "*" ("any" | Type) .
+-func (p *parser) parsePointerType(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parsePointerType(pkg *types.Package, nlist []interface{}) types.Type {
+ p.expect('*')
+ if p.tok == scanner.Ident {
+ p.expectKeyword("any")
+@@ -779,13 +797,13 @@
+ t := new(types.Pointer)
+ p.update(t, nlist)
-- return false;
-+ return ret;
+- *t = *types.NewPointer(p.parseType(pkg))
++ *t = *types.NewPointer(p.parseType(pkg, t))
+
+ return t
}
+ // TypeSpec = NamedType | MapType | ChanType | StructType | InterfaceType | PointerType | ArrayOrSliceType | FunctionType .
+-func (p *parser) parseTypeSpec(pkg *types.Package, nlist []int) types.Type {
++func (p *parser) parseTypeSpec(pkg *types.Package, nlist []interface{}) types.Type {
+ switch p.tok {
+ case scanner.String:
+ return p.parseNamedType(nlist)
+@@ -874,13 +892,13 @@
+ //
+ // parseType updates the type map to t for all type numbers n.
+ //
+-func (p *parser) parseType(pkg *types.Package, n ...int) types.Type {
++func (p *parser) parseType(pkg *types.Package, n ...interface{}) types.Type {
+ p.expect('<')
+ return p.parseTypeAfterAngle(pkg, n...)
+ }
-@@ -6316,10 +6346,15 @@
- }
+ // (*parser).Type after reading the "<".
+-func (p *parser) parseTypeAfterAngle(pkg *types.Package, n ...int) (t types.Type) {
++func (p *parser) parseTypeAfterAngle(pkg *types.Package, n ...interface{}) (t types.Type) {
+ p.expectKeyword("type")
- /* Put doubleword aligned quantities in even register pairs. */
-- if (pcum->nregs & 1
-- && ARM_DOUBLEWORD_ALIGN
-- && arm_needs_doubleword_align (mode, type))
-- pcum->nregs++;
-+ if ((pcum->nregs & 1) && ARM_DOUBLEWORD_ALIGN)
-+ {
-+ int res = arm_needs_doubleword_align (mode, type);
-+ if (res < 0 && warn_psabi)
-+ inform (input_location, "parameter passing for argument of type "
-+ "%qT will change in GCC 7.1", type);
-+ if (res != 0)
-+ pcum->nregs++;
-+ }
+ switch p.tok {
+@@ -995,12 +1013,12 @@
+ }
- /* Only allow splitting an arg between regs and memory if all preceding
- args were allocated to regs. For args passed by reference we only count
-@@ -6338,9 +6373,15 @@
- static unsigned int
- arm_function_arg_boundary (machine_mode mode, const_tree type)
- {
-- return (ARM_DOUBLEWORD_ALIGN && arm_needs_doubleword_align (mode, type)
-- ? DOUBLEWORD_ALIGNMENT
-- : PARM_BOUNDARY);
-+ if (!ARM_DOUBLEWORD_ALIGN)
-+ return PARM_BOUNDARY;
-+
-+ int res = arm_needs_doubleword_align (mode, type);
-+ if (res < 0 && warn_psabi)
-+ inform (input_location, "parameter passing for argument of type %qT "
-+ "will change in GCC 7.1", type);
-+
-+ return res != 0 ? DOUBLEWORD_ALIGNMENT : PARM_BOUNDARY;
+ for i := 1; i < int(exportedp1); i++ {
+- p.parseSavedType(pkg, i, []int{})
++ p.parseSavedType(pkg, i, nil)
+ }
}
- static int
-@@ -6707,6 +6748,14 @@
- if (TARGET_VXWORKS_RTP && flag_pic && decl && !targetm.binds_local_p (decl))
- return false;
-
-+ /* ??? Cannot tail-call to long calls with APCS frame and VFP, because IP
-+ may be used both as target of the call and base register for restoring
-+ the VFP registers */
-+ if (TARGET_APCS_FRAME && TARGET_ARM
-+ && TARGET_HARD_FLOAT && TARGET_VFP
-+ && decl && arm_is_long_call_p (decl))
-+ return false;
-+
- /* If we are interworking and the function is not declared static
- then we can't tail-call it unless we know that it exists in this
- compilation unit (since it might be a Thumb routine). */
-@@ -6859,9 +6908,13 @@
- same segment as the GOT. Unfortunately, the flexibility of linker
- scripts means that we can't be sure of that in general, so assume
- that GOTOFF is never valid on VxWorks. */
-+ /* References to weak symbols cannot be resolved locally: they
-+ may be overridden by a non-weak definition at link time. */
- if ((GET_CODE (orig) == LABEL_REF
-- || (GET_CODE (orig) == SYMBOL_REF &&
-- SYMBOL_REF_LOCAL_P (orig)))
-+ || (GET_CODE (orig) == SYMBOL_REF
-+ && SYMBOL_REF_LOCAL_P (orig)
-+ && (SYMBOL_REF_DECL (orig)
-+ ? !DECL_WEAK (SYMBOL_REF_DECL (orig)) : 1)))
- && NEED_GOT_RELOC
- && arm_pic_data_is_text_relative)
- insn = arm_pic_static_addr (orig, reg);
-@@ -22687,8 +22740,14 @@
- {
- /* See legitimize_pic_address for an explanation of the
- TARGET_VXWORKS_RTP check. */
-+ /* References to weak symbols cannot be resolved locally:
-+ they may be overridden by a non-weak definition at link
-+ time. */
- if (!arm_pic_data_is_text_relative
-- || (GET_CODE (x) == SYMBOL_REF && !SYMBOL_REF_LOCAL_P (x)))
-+ || (GET_CODE (x) == SYMBOL_REF
-+ && (!SYMBOL_REF_LOCAL_P (x)
-+ || (SYMBOL_REF_DECL (x)
-+ ? DECL_WEAK (SYMBOL_REF_DECL (x)) : 0))))
- fputs ("(GOT)", asm_out_file);
- else
- fputs ("(GOTOFF)", asm_out_file);
-@@ -26380,8 +26439,15 @@
- if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
- {
- nregs = pcum->aapcs_ncrn;
-- if ((nregs & 1) && arm_needs_doubleword_align (mode, type))
-- nregs++;
-+ if (nregs & 1)
-+ {
-+ int res = arm_needs_doubleword_align (mode, type);
-+ if (res < 0 && warn_psabi)
-+ inform (input_location, "parameter passing for argument of "
-+ "type %qT will change in GCC 7.1", type);
-+ if (res != 0)
-+ nregs++;
-+ }
- }
- else
- nregs = pcum->nregs;
-@@ -26413,12 +26479,11 @@
- return mode;
+ // parseSavedType parses one saved type definition.
+-func (p *parser) parseSavedType(pkg *types.Package, i int, nlist []int) {
++func (p *parser) parseSavedType(pkg *types.Package, i int, nlist []interface{}) {
+ defer func(s *scanner.Scanner, tok rune, lit string) {
+ p.scanner = s
+ p.tok = tok
+Index: libgo/go/go/internal/gccgoimporter/importer_test.go
+===================================================================
+--- a/src/libgo/go/go/internal/gccgoimporter/importer_test.go (.../tags/gcc_9_2_0_release)
++++ b/src/libgo/go/go/internal/gccgoimporter/importer_test.go (.../branches/gcc-9-branch)
+@@ -91,6 +91,7 @@
+ {pkgpath: "v1reflect", name: "Type", want: "type Type interface{Align() int; AssignableTo(u Type) bool; Bits() int; ChanDir() ChanDir; Elem() Type; Field(i int) StructField; FieldAlign() int; FieldByIndex(index []int) StructField; FieldByName(name string) (StructField, bool); FieldByNameFunc(match func(string) bool) (StructField, bool); Implements(u Type) bool; In(i int) Type; IsVariadic() bool; Key() Type; Kind() Kind; Len() int; Method(int) Method; MethodByName(string) (Method, bool); Name() string; NumField() int; NumIn() int; NumMethod() int; NumOut() int; Out(i int) Type; PkgPath() string; Size() uintptr; String() string; common() *commonType; rawString() string; runtimeType() *runtimeType; uncommon() *uncommonType}"},
+ {pkgpath: "nointerface", name: "I", want: "type I int"},
+ {pkgpath: "issue29198", name: "FooServer", want: "type FooServer struct{FooServer *FooServer; user string; ctx context.Context}"},
++ {pkgpath: "issue34182", name: "T1", want: "type T1 struct{f *T2}"},
}
--/* AAPCS based ABIs use short enums by default. */
+ func TestGoxImporter(t *testing.T) {
+Index: libgo/go/go/internal/gccgoimporter/testdata/issue34182.gox
+===================================================================
+--- a/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.gox (.../tags/gcc_9_2_0_release)
++++ b/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.gox (.../branches/gcc-9-branch)
+@@ -0,0 +1,13 @@
++v3;
++package issue34182
++pkgpath issue34182
++init issue34182 ~go.issue34182
++types 8 4 21 21 21 17 30 45 45
++type 1 "T1" <type 6>
++type 2 "T2" <type 7>
++type 3 "T3" <type 5>
++type 4 *<type 2>
++type 5 struct { ? <type 4>; }
++type 6 struct { .go.issue34182.f <type 4>; }
++type 7 struct { .go.issue34182.f <type 3>; }
++checksum FF02C49BAF44B06C087ED4E573F7CC880C79C208
+Index: libgo/go/go/internal/gccgoimporter/testdata/issue34182.go
+===================================================================
+--- a/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.go (.../tags/gcc_9_2_0_release)
++++ b/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.go (.../branches/gcc-9-branch)
+@@ -0,0 +1,17 @@
++// Copyright 2019 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package issue34182
++
++type T1 struct {
++ f *T2
++}
++
++type T2 struct {
++ f T3
++}
++
++type T3 struct {
++ *T2
++}
+Index: libgfortran/runtime/ISO_Fortran_binding.c
+===================================================================
+--- a/src/libgfortran/runtime/ISO_Fortran_binding.c (.../tags/gcc_9_2_0_release)
++++ b/src/libgfortran/runtime/ISO_Fortran_binding.c (.../branches/gcc-9-branch)
+@@ -119,24 +119,25 @@
+ d->type = (CFI_type_t)(d->type
+ + ((CFI_type_t)d->elem_len << CFI_type_kind_shift));
- static bool
- arm_default_short_enums (void)
- {
-- return TARGET_AAPCS_BASED && arm_abi != ARM_ABI_AAPCS_LINUX;
-+ return ARM_DEFAULT_SHORT_ENUMS;
- }
+- /* Full pointer or allocatable arrays retain their lower_bounds. */
+- for (n = 0; n < GFC_DESCRIPTOR_RANK (s); n++)
+- {
+- if (d->attribute != CFI_attribute_other)
+- d->dim[n].lower_bound = (CFI_index_t)GFC_DESCRIPTOR_LBOUND(s, n);
+- else
+- d->dim[n].lower_bound = 0;
++ if (d->base_addr)
++ /* Full pointer or allocatable arrays retain their lower_bounds. */
++ for (n = 0; n < GFC_DESCRIPTOR_RANK (s); n++)
++ {
++ if (d->attribute != CFI_attribute_other)
++ d->dim[n].lower_bound = (CFI_index_t)GFC_DESCRIPTOR_LBOUND(s, n);
++ else
++ d->dim[n].lower_bound = 0;
+- /* Assumed size arrays have gfc ubound == 0 and CFI extent = -1. */
+- if ((n == GFC_DESCRIPTOR_RANK (s) - 1)
+- && GFC_DESCRIPTOR_LBOUND(s, n) == 1
+- && GFC_DESCRIPTOR_UBOUND(s, n) == 0)
+- d->dim[n].extent = -1;
+- else
+- d->dim[n].extent = (CFI_index_t)GFC_DESCRIPTOR_UBOUND(s, n)
+- - (CFI_index_t)GFC_DESCRIPTOR_LBOUND(s, n) + 1;
+- d->dim[n].sm = (CFI_index_t)(GFC_DESCRIPTOR_STRIDE(s, n) * s->span);
+- }
++ /* Assumed size arrays have gfc ubound == 0 and CFI extent = -1. */
++ if (n == GFC_DESCRIPTOR_RANK (s) - 1
++ && GFC_DESCRIPTOR_LBOUND(s, n) == 1
++ && GFC_DESCRIPTOR_UBOUND(s, n) == 0)
++ d->dim[n].extent = -1;
++ else
++ d->dim[n].extent = (CFI_index_t)GFC_DESCRIPTOR_UBOUND(s, n)
++ - (CFI_index_t)GFC_DESCRIPTOR_LBOUND(s, n) + 1;
++ d->dim[n].sm = (CFI_index_t)(GFC_DESCRIPTOR_STRIDE(s, n) * s->span);
++ }
-Index: gcc/config/arm/arm.h
+ if (*d_ptr == NULL)
+ *d_ptr = d;
+Index: libgfortran/intrinsics/random.c
===================================================================
---- a/src/gcc/config/arm/arm.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/arm/arm.h (.../branches/gcc-6-branch)
-@@ -254,8 +254,7 @@
- #define TARGET_HAVE_LDREX ((arm_arch6 && TARGET_ARM) || arm_arch7)
+--- a/src/libgfortran/intrinsics/random.c (.../tags/gcc_9_2_0_release)
++++ b/src/libgfortran/intrinsics/random.c (.../branches/gcc-9-branch)
+@@ -275,31 +275,20 @@
+ }
- /* Nonzero if this chip supports LPAE. */
--#define TARGET_HAVE_LPAE \
-- (arm_arch7 && ARM_FSET_HAS_CPU1 (insn_flags, FL_FOR_ARCH7VE))
-+#define TARGET_HAVE_LPAE (arm_arch_lpae)
- /* Nonzero if this chip supports ldrex{bh} and strex{bh}. */
- #define TARGET_HAVE_LDREXBH ((arm_arch6k && TARGET_ARM) || arm_arch7)
-@@ -374,6 +373,12 @@
- #define ARM_DEFAULT_ABI ARM_ABI_APCS
- #endif
+-/* Super-simple LCG generator used in getosrandom () if /dev/urandom
+- doesn't exist. */
++/* Splitmix64 recommended by xorshift author for initializing. After
++ getting one uint64_t value from the OS, this is used to fill in the
++ rest of the state. */
-+/* AAPCS based ABIs use short enums by default. */
-+#ifndef ARM_DEFAULT_SHORT_ENUMS
-+#define ARM_DEFAULT_SHORT_ENUMS \
-+ (TARGET_AAPCS_BASED && arm_abi != ARM_ABI_AAPCS_LINUX)
-+#endif
-+
- /* Map each of the micro-architecture variants to their corresponding
- major architecture revision. */
-
-Index: gcc/config/arm/rtems.h
-===================================================================
---- a/src/gcc/config/arm/rtems.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/arm/rtems.h (.../branches/gcc-6-branch)
-@@ -27,3 +27,5 @@
- builtin_assert ("system=rtems"); \
- TARGET_BPABI_CPP_BUILTINS(); \
- } while (0)
-+
-+#define ARM_DEFAULT_SHORT_ENUMS false
-Index: gcc/config/arm/arm-protos.h
-===================================================================
---- a/src/gcc/config/arm/arm-protos.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/arm/arm-protos.h (.../branches/gcc-6-branch)
-@@ -360,7 +360,7 @@
- #define FL_STRONG (1 << 8) /* StrongARM */
- #define FL_ARCH5E (1 << 9) /* DSP extensions to v5 */
- #define FL_XSCALE (1 << 10) /* XScale */
--/* spare (1 << 11) */
-+#define FL_LPAE (1 << 11) /* ARMv7-A LPAE. */
- #define FL_ARCH6 (1 << 12) /* Architecture rel 6. Adds
- media instructions. */
- #define FL_VFPV2 (1 << 13) /* Vector Floating Point V2. */
-@@ -412,7 +412,7 @@
- #define FL_FOR_ARCH6M (FL_FOR_ARCH6 & ~FL_NOTM)
- #define FL_FOR_ARCH7 ((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
- #define FL_FOR_ARCH7A (FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
--#define FL_FOR_ARCH7VE (FL_FOR_ARCH7A | FL_THUMB_DIV | FL_ARM_DIV)
-+#define FL_FOR_ARCH7VE (FL_FOR_ARCH7A | FL_THUMB_DIV | FL_ARM_DIV | FL_LPAE)
- #define FL_FOR_ARCH7R (FL_FOR_ARCH7A | FL_THUMB_DIV)
- #define FL_FOR_ARCH7M (FL_FOR_ARCH7 | FL_THUMB_DIV)
- #define FL_FOR_ARCH7EM (FL_FOR_ARCH7M | FL_ARCH7EM)
-@@ -608,6 +608,9 @@
- extern int arm_arch_arm_hwdiv;
- extern int arm_arch_thumb_hwdiv;
-
-+/* Nonzero if this chip supports the Large Physical Address Extension. */
-+extern int arm_arch_lpae;
-+
- /* Nonzero if chip disallows volatile memory access in IT block. */
- extern int arm_arch_no_volatile_ce;
-
-Index: gcc/config/arm/neon.md
-===================================================================
---- a/src/gcc/config/arm/neon.md (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/arm/neon.md (.../branches/gcc-6-branch)
-@@ -1045,12 +1045,12 @@
- )
-
- (define_insn_and_split "ashldi3_neon"
-- [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r, ?w,w")
-- (ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, r, 0w,w")
-- (match_operand:SI 2 "general_operand" "rUm, i, r, i,rUm,i")))
-- (clobber (match_scratch:SI 3 "= X, X,?&r, X, X,X"))
-- (clobber (match_scratch:SI 4 "= X, X,?&r, X, X,X"))
-- (clobber (match_scratch:DI 5 "=&w, X, X, X, &w,X"))
-+ [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?&r, ?w,w")
-+ (ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r, 0w,w")
-+ (match_operand:SI 2 "general_operand" "rUm, i, r, i, i,rUm,i")))
-+ (clobber (match_scratch:SI 3 "= X, X,?&r, X, X, X,X"))
-+ (clobber (match_scratch:SI 4 "= X, X,?&r, X, X, X,X"))
-+ (clobber (match_scratch:DI 5 "=&w, X, X, X, X, &w,X"))
- (clobber (reg:CC_C CC_REGNUM))]
- "TARGET_NEON"
- "#"
-@@ -1082,9 +1082,11 @@
- }
- else
- {
-- if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1
-- && (!reg_overlap_mentioned_p (operands[0], operands[1])
-- || REGNO (operands[0]) == REGNO (operands[1])))
-+ /* The shift expanders support either full overlap or no overlap. */
-+ gcc_assert (!reg_overlap_mentioned_p (operands[0], operands[1])
-+ || REGNO (operands[0]) == REGNO (operands[1]));
-+
-+ if (operands[2] == CONST1_RTX (SImode))
- /* This clobbers CC. */
- emit_insn (gen_arm_ashldi3_1bit (operands[0], operands[1]));
- else
-@@ -1093,8 +1095,8 @@
- }
- DONE;
- }"
-- [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
-- (set_attr "opt" "*,*,speed,speed,*,*")
-+ [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
-+ (set_attr "opt" "*,*,speed,speed,speed,*,*")
- (set_attr "type" "multiple")]
- )
-
-@@ -1143,12 +1145,12 @@
- ;; ashrdi3_neon
- ;; lshrdi3_neon
- (define_insn_and_split "<shift>di3_neon"
-- [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?w,?w")
-- (RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, r,0w, w")
-- (match_operand:SI 2 "reg_or_int_operand" " r, i, r, i, r, i")))
-- (clobber (match_scratch:SI 3 "=2r, X, &r, X,2r, X"))
-- (clobber (match_scratch:SI 4 "= X, X, &r, X, X, X"))
-- (clobber (match_scratch:DI 5 "=&w, X, X, X,&w, X"))
-+ [(set (match_operand:DI 0 "s_register_operand" "= w, w,?&r,?r,?&r,?w,?w")
-+ (RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0, r,0w, w")
-+ (match_operand:SI 2 "reg_or_int_operand" " r, i, r, i, i, r, i")))
-+ (clobber (match_scratch:SI 3 "=2r, X, &r, X, X,2r, X"))
-+ (clobber (match_scratch:SI 4 "= X, X, &r, X, X, X, X"))
-+ (clobber (match_scratch:DI 5 "=&w, X, X, X, X,&w, X"))
- (clobber (reg:CC CC_REGNUM))]
- "TARGET_NEON"
- "#"
-@@ -1184,9 +1186,11 @@
- }
- else
- {
-- if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1
-- && (!reg_overlap_mentioned_p (operands[0], operands[1])
-- || REGNO (operands[0]) == REGNO (operands[1])))
-+ /* The shift expanders support either full overlap or no overlap. */
-+ gcc_assert (!reg_overlap_mentioned_p (operands[0], operands[1])
-+ || REGNO (operands[0]) == REGNO (operands[1]));
-+
-+ if (operands[2] == CONST1_RTX (SImode))
- /* This clobbers CC. */
- emit_insn (gen_arm_<shift>di3_1bit (operands[0], operands[1]));
- else
-@@ -1197,8 +1201,8 @@
-
- DONE;
- }"
-- [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
-- (set_attr "opt" "*,*,speed,speed,*,*")
-+ [(set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")
-+ (set_attr "opt" "*,*,speed,speed,speed,*,*")
- (set_attr "type" "multiple")]
- )
-
-Index: gcc/config/pa/pa-64.h
-===================================================================
---- a/src/gcc/config/pa/pa-64.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/config/pa/pa-64.h (.../branches/gcc-6-branch)
-@@ -83,7 +83,10 @@
- arguments are padded down when BYTES_BIG_ENDIAN is true. We don't
- want aggregates padded down. */
-
--#define PAD_VARARGS_DOWN (!AGGREGATE_TYPE_P (type))
-+#define PAD_VARARGS_DOWN \
-+ (!AGGREGATE_TYPE_P (type) \
-+ && TREE_CODE (type) != COMPLEX_TYPE \
-+ && TREE_CODE (type) != VECTOR_TYPE)
-
- /* In the PA architecture, it is not possible to directly move data
- between GENERAL_REGS and FP_REGS. On the 32-bit port, we use the
-Index: gcc/params.def
-===================================================================
---- a/src/gcc/params.def (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/params.def (.../branches/gcc-6-branch)
-@@ -634,7 +634,7 @@
- DEFPARAM(PARAM_SELSCHED_MAX_SCHED_TIMES,
- "selsched-max-sched-times",
- "Maximum number of times that an insn could be scheduled.",
-- 2, 0, 0)
-+ 2, 1, 0)
-
- DEFPARAM(PARAM_SELSCHED_INSNS_TO_RENAME,
- "selsched-insns-to-rename",
-@@ -1191,7 +1191,7 @@
- "max-ssa-name-query-depth",
- "Maximum recursion depth allowed when querying a property of an"
- " SSA name.",
-- 3, 1, 0)
-+ 3, 1, 10)
-
- DEFPARAM (PARAM_MAX_RTL_IF_CONVERSION_INSNS,
- "max-rtl-if-conversion-insns",
-Index: gcc/gcov-dump.c
-===================================================================
---- a/src/gcc/gcov-dump.c (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/gcov-dump.c (.../branches/gcc-6-branch)
-@@ -136,6 +136,8 @@
- printf (" -l, --long Dump record contents too\n");
- printf (" -p, --positions Dump record positions\n");
- printf (" -w, --working-sets Dump working set computed from summary\n");
-+ printf ("\nFor bug reporting instructions, please see:\n%s.\n",
-+ bug_report_url);
+-#define M 2147483647 /* 2^31 - 1 (A large prime number) */
+-#define A 16807 /* Prime root of M, passes statistical tests and produces a full cycle */
+-#define Q 127773 /* M / A (To avoid overflow on A * seed) */
+-#define R 2836 /* M % A (To avoid overflow on A * seed) */
+-
+-__attribute__((unused)) static uint32_t
+-lcg_parkmiller(uint32_t seed)
++static uint64_t
++splitmix64 (uint64_t x)
+ {
+- uint32_t hi = seed / Q;
+- uint32_t lo = seed % Q;
+- int32_t test = A * lo - R * hi;
+- if (test <= 0)
+- test += M;
+- return test;
++ uint64_t z = (x += 0x9e3779b97f4a7c15);
++ z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
++ z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
++ return z ^ (z >> 31);
}
- static void
-Index: gcc/lto-streamer.h
-===================================================================
---- a/src/gcc/lto-streamer.h (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc/lto-streamer.h (.../branches/gcc-6-branch)
-@@ -129,7 +129,7 @@
- form followed by the data for the string. */
+-#undef M
+-#undef A
+-#undef Q
+-#undef R
- #define LTO_major_version 5
--#define LTO_minor_version 1
-+#define LTO_minor_version 2
+-
+ /* Get some random bytes from the operating system in order to seed
+ the PRNG. */
- typedef unsigned char lto_decl_flags_t;
+@@ -315,7 +304,7 @@
+ #else
+ #ifdef HAVE_GETENTROPY
+ if (getentropy (buf, buflen) == 0)
+- return 0;
++ return buflen;
+ #endif
+ int flags = O_RDONLY;
+ #ifdef O_CLOEXEC
+@@ -328,7 +317,7 @@
+ close (fd);
+ return res;
+ }
+- uint32_t seed = 1234567890;
++ uint64_t seed = 0x047f7684e9fc949dULL;
+ time_t secs;
+ long usecs;
+ if (gf_gettime (&secs, &usecs) == 0)
+@@ -340,13 +329,9 @@
+ pid_t pid = getpid();
+ seed ^= pid;
+ #endif
+- uint32_t* ub = buf;
+- for (size_t i = 0; i < buflen / sizeof (uint32_t); i++)
+- {
+- ub[i] = seed;
+- seed = lcg_parkmiller (seed);
+- }
+- return buflen;
++ size_t size = buflen < sizeof (uint64_t) ? buflen : sizeof (uint64_t);
++ memcpy (buf, &seed, size);
++ return size;
+ #endif /* __MINGW64_VERSION_MAJOR */
+ }
-Index: gcc
+@@ -361,7 +346,13 @@
+ __gthread_mutex_lock (&random_lock);
+ if (!master_init)
+ {
+- getosrandom (master_state, sizeof (master_state));
++ uint64_t os_seed;
++ getosrandom (&os_seed, sizeof (os_seed));
++ for (uint64_t i = 0; i < sizeof (master_state) / sizeof (uint64_t); i++)
++ {
++ os_seed = splitmix64 (os_seed);
++ master_state[i] = os_seed;
++ }
+ njumps = 0;
+ master_init = true;
+ }
+Index: libgfortran/ChangeLog
===================================================================
---- a/src/gcc (.../tags/gcc_6_3_0_release)
-+++ b/src/gcc (.../branches/gcc-6-branch)
-
-Property changes on: gcc
-___________________________________________________________________
-Modified: svn:mergeinfo
-## -0,0 +0,1 ##
- Merged /trunk/gcc:r243528,243962
-Index: libgo/runtime/go-unsafe-pointer.c
-===================================================================
---- a/src/libgo/runtime/go-unsafe-pointer.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgo/runtime/go-unsafe-pointer.c (.../branches/gcc-6-branch)
-@@ -36,7 +36,8 @@
- sizeof REFLECTION - 1
- };
+--- a/src/libgfortran/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libgfortran/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,13 @@
++2019-08-13 Janne Blomqvist <jb@gcc.gnu.org>
++
++ Partial backport from trunk
++ PR fortran/91414
++ * intrinsics/random.c (lcg_parkmiller): Replace with splitmix64.
++ (splitmix64): New function.
++ (getosrandom): Fix return value, simplify.
++ (init_rand_state): Use getosrandom only to get 8 bytes, splitmix64
++ to fill rest of state.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+Index: libcpp/directives.c
+===================================================================
+--- a/src/libcpp/directives.c (.../tags/gcc_9_2_0_release)
++++ b/src/libcpp/directives.c (.../branches/gcc-9-branch)
+@@ -1564,6 +1564,8 @@
+ node = _cpp_lex_identifier (pfile, c->name);
+ if (node->type == NT_VOID)
+ c->is_undef = 1;
++ else if (node->type == NT_BUILTIN_MACRO)
++ c->is_builtin = 1;
+ else
+ {
+ defn = cpp_macro_definition (pfile, node);
+@@ -2452,6 +2454,11 @@
--const uintptr unsafe_Pointer_gc[] = {sizeof(void*), GC_APTR, 0, GC_END};
-+const uintptr unsafe_Pointer_gc[] __attribute__((aligned(4))) =
-+ {sizeof(void*), GC_APTR, 0, GC_END};
+ if (c->is_undef)
+ return;
++ if (c->is_builtin)
++ {
++ _cpp_restore_special_builtin (pfile, c);
++ return;
++ }
- const struct __go_type_descriptor unsafe_Pointer =
- {
-Index: libgo/runtime/runtime.h
+ {
+ size_t namelen;
+Index: libcpp/init.c
===================================================================
---- a/src/libgo/runtime/runtime.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libgo/runtime/runtime.h (.../branches/gcc-6-branch)
-@@ -154,7 +154,7 @@
- // Futex-based impl treats it as uint32 key,
- // while sema-based impl as M* waitm.
- // Used to be a union, but unions break precise GC.
-- uintptr key;
-+ uintptr key __attribute__((aligned(4)));
- };
- struct Note
- {
-@@ -161,7 +161,7 @@
- // Futex-based impl treats it as uint32 key,
- // while sema-based impl as M* waitm.
- // Used to be a union, but unions break precise GC.
-- uintptr key;
-+ uintptr key __attribute__((aligned(4)));
- };
- struct String
- {
-@@ -431,7 +431,7 @@
- // otherwise parfor may return while other threads are still working
- ParForThread *thr; // array of thread descriptors
- // stats
-- uint64 nsteal;
-+ uint64 nsteal __attribute__((aligned(8))); // force alignment for m68k
- uint64 nstealcnt;
- uint64 nprocyield;
- uint64 nosyield;
-Index: libgo/runtime/parfor.c
-===================================================================
---- a/src/libgo/runtime/parfor.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgo/runtime/parfor.c (.../branches/gcc-6-branch)
-@@ -10,7 +10,7 @@
- struct ParForThread
- {
- // the thread's iteration space [32lsb, 32msb)
-- uint64 pos;
-+ uint64 pos __attribute__((aligned(8)));
- // stats
- uint64 nsteal;
- uint64 nstealcnt;
-Index: libgfortran/configure
-===================================================================
---- a/src/libgfortran/configure (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/configure (.../branches/gcc-6-branch)
-@@ -10308,7 +10308,7 @@
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
-- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- aix_use_runtimelinking=no
-
-@@ -14157,7 +14157,7 @@
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
-- export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-+ export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- aix_use_runtimelinking=no
-
-@@ -25762,6 +25762,43 @@
- fi
-
+--- a/src/libcpp/init.c (.../tags/gcc_9_2_0_release)
++++ b/src/libcpp/init.c (.../branches/gcc-9-branch)
+@@ -489,6 +489,25 @@
+ }
+ }
-+# Check if _SOFT_FLOAT is defined
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _SOFT_FLOAT defined" >&5
-+$as_echo_n "checking for _SOFT_FLOAT defined... " >&6; }
-+if test "${ac_cv_defined__SOFT_FLOAT+set}" = set; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
++/* Restore macro C to builtin macro definition. */
+
-+int
-+main ()
++void
++_cpp_restore_special_builtin (cpp_reader *pfile, struct def_pragma_macro *c)
+{
++ size_t len = strlen (c->name);
+
-+ #ifdef _SOFT_FLOAT
-+ int ok;
-+ #else
-+ choke me
-+ #endif
-+
-+ ;
-+ return 0;
++ for (const struct builtin_macro *b = builtin_array;
++ b < builtin_array + ARRAY_SIZE (builtin_array); b++)
++ if (b->len == len && memcmp (c->name, b->name, len + 1) == 0)
++ {
++ cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
++ hp->type = NT_BUILTIN_MACRO;
++ if (b->always_warn_if_redefined)
++ hp->flags |= NODE_WARN;
++ hp->value.builtin = (enum cpp_builtin_type) b->value;
++ }
+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ac_cv_defined__SOFT_FLOAT=yes
-+else
-+ ac_cv_defined__SOFT_FLOAT=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_defined__SOFT_FLOAT" >&5
-+$as_echo "$ac_cv_defined__SOFT_FLOAT" >&6; }
-+if test $ac_cv_defined__SOFT_FLOAT != "no"; then :
-+ have_soft_float=yes
-+fi
-+
- # Runs configure.host to set up necessary host-dependent shell variables.
- # We then display a message about it, and propagate them through the
- # build chain.
-Index: libgfortran/intrinsics/c99_functions.c
-===================================================================
---- a/src/libgfortran/intrinsics/c99_functions.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/intrinsics/c99_functions.c (.../branches/gcc-6-branch)
-@@ -913,7 +913,7 @@
- }
- #endif
-
--#if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(EXPL)
-+#if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(HAVE_EXPL)
- #define HAVE_CEXPL 1
- long double complex cexpl (long double complex z);
-
-Index: libgfortran/caf/single.c
-===================================================================
---- a/src/libgfortran/caf/single.c (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/caf/single.c (.../branches/gcc-6-branch)
-@@ -101,9 +101,12 @@
- void *local;
-
- if (type == CAF_REGTYPE_LOCK_STATIC || type == CAF_REGTYPE_LOCK_ALLOC
-- || type == CAF_REGTYPE_CRITICAL || type == CAF_REGTYPE_EVENT_STATIC
-- || type == CAF_REGTYPE_EVENT_ALLOC)
-- local = calloc (size, sizeof (bool));
-+ || type == CAF_REGTYPE_CRITICAL)
-+ local = calloc (size, sizeof (bool));
-+ else if (type == CAF_REGTYPE_EVENT_STATIC || type == CAF_REGTYPE_EVENT_ALLOC)
-+ /* In the event_(wait|post) function the counter for events is a uint32,
-+ so better allocate enough memory here. */
-+ local = calloc (size, sizeof (uint32_t));
- else
- local = malloc (size);
- *token = malloc (sizeof (single_token_t));
-Index: libgfortran/configure.host
-===================================================================
---- a/src/libgfortran/configure.host (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/configure.host (.../branches/gcc-6-branch)
-@@ -40,7 +40,11 @@
- # the x86 denormal exception.
- case "${host_cpu}" in
- i?86 | x86_64)
-- fpu_host='fpu-387'
-+ if test "x${have_soft_float}" = "xyes"; then
-+ fpu_host='fpu-generic'
-+ else
-+ fpu_host='fpu-387'
-+ fi
- ieee_support='yes'
- ;;
- esac
-Index: libgfortran/configure.ac
-===================================================================
---- a/src/libgfortran/configure.ac (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/configure.ac (.../branches/gcc-6-branch)
-@@ -551,6 +551,9 @@
- AC_CHECK_FUNC([fp_trap],[have_fp_trap=yes AC_DEFINE([HAVE_FP_TRAP],[1],[fp_trap is present])])
- AC_CHECK_FUNC([fp_enable],[have_fp_enable=yes AC_DEFINE([HAVE_FP_ENABLE],[1],[fp_enable is present])])
-
-+# Check if _SOFT_FLOAT is defined
-+AC_CHECK_DEFINE([_SOFT_FLOAT],[have_soft_float=yes])
-+
- # Runs configure.host to set up necessary host-dependent shell variables.
- # We then display a message about it, and propagate them through the
- # build chain.
-Index: libgfortran/ChangeLog
-===================================================================
---- a/src/libgfortran/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,18 @@
-+2017-01-31 Steven G. Kargl <kargl@gcc.gnu.org>
-+
-+ PR fortran/79305
-+ * c99_protos.h: Spell HAVE_EXPL correctly.
-+ * intrinsics/c99_functions.c: Ditto.
+
-+2017-01-24 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR target/78478
-+ * acinclude.m4: Include ../config/ax_check_define.m4
-+ * configure.ac: Check if _SOFT_FLOAT is defined.
-+ * configure.host (i?86 | x86_64): Use fpu-generic when
-+ have_soft_float is set.
-+ * configure: Regenerate.
+ /* Read the builtins table above and enter them, and language-specific
+ macros, into the hash table. HOSTED is true if this is a hosted
+ environment. */
+Index: libcpp/ChangeLog
+===================================================================
+--- a/src/libcpp/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/libcpp/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,17 @@
++2019-11-08 Jakub Jelinek <jakub@redhat.com>
+
- 2016-12-21 Release Manager
-
- * GCC 6.3.0 released.
-@@ -13,7 +28,7 @@
-
- Backport from trunk
- PR libgfortran/77707
-- io/transfer.c (next_record): Flush before calculating next_record.
-+ * io/transfer.c (next_record): Flush before calculating next_record.
- Correctly calculate.
++ Backported from mainline
++ 2019-10-31 Jakub Jelinek <jakub@redhat.com>
++
++ PR preprocessor/92296
++ * internal.h (struct def_pragma_macro): Add is_builtin bitfield.
++ (_cpp_restore_special_builtin): Declare.
++ * init.c (_cpp_restore_special_builtin): New function.
++ * directives.c (do_pragma_push_macro): For NT_BUILTIN_MACRO
++ set is_builtin and don't try to grab definition.
++ (cpp_pop_definition): Use _cpp_restore_special_builtin to restore
++ builtin macros.
++
+ 2019-08-12 Release Manager
+
+ * GCC 9.2.0 released.
+Index: libcpp/internal.h
+===================================================================
+--- a/src/libcpp/internal.h (.../tags/gcc_9_2_0_release)
++++ b/src/libcpp/internal.h (.../branches/gcc-9-branch)
+@@ -380,6 +380,8 @@
+
+ /* Mark if we save an undefined macro. */
+ unsigned int is_undef : 1;
++ /* Nonzero if it was a builtin macro. */
++ unsigned int is_builtin : 1;
+ };
- 2016-09-28 Steven G. Kargl <kargl@gcc.gnu.org>
-@@ -20,7 +35,7 @@
+ /* A cpp_reader encapsulates the "state" of a pre-processor run.
+@@ -712,6 +714,8 @@
+ /* In init.c. */
+ extern void _cpp_maybe_push_include_file (cpp_reader *);
+ extern const char *cpp_named_operator2name (enum cpp_ttype type);
++extern void _cpp_restore_special_builtin (cpp_reader *pfile,
++ struct def_pragma_macro *);
- Backport from trunk
- PR fortran/77507
-- * ieee/ieee_arithmetic.F90 (IEEE_VALUE_4,IEEE_VALUE_8,IEEE_VALULE_10,
-+ * ieee/ieee_arithmetic.F90 (IEEE_VALUE_4,IEEE_VALUE_8,IEEE_VALULE_10,
- IEEE_VALUE_16): Use correct keyword.
-
- 2016-08-22 Release Manager
-@@ -82,9 +97,10 @@
- (read_logical): If '!' bang encountered when not in namelist mode got
- bad_logical to give an error. (read_integer): Likewise reject '!'.
- (read_character): Remove condition testing c = '!' which is now inside
-- the is_separator macro. (parse_real): Reject '!' unless in namelist mode.
-- (read_complex): Reject '!' unless in namelist mode. (read_real): Likewise
-- reject '!'.
-+ the is_separator macro. (parse_real): Reject '!' unless in
-+ namelist mode.
-+ (read_complex): Reject '!' unless in namelist mode.
-+ (read_real): Likewise reject '!'.
-
- 2016-02-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
-
-Index: libgfortran/c99_protos.h
-===================================================================
---- a/src/libgfortran/c99_protos.h (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/c99_protos.h (.../branches/gcc-6-branch)
-@@ -332,7 +332,7 @@
- extern double complex cexp (double complex);
- #endif
-
--#if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(EXPL)
-+#if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(HAVE_EXPL)
- #define HAVE_CEXPL 1
- extern long double complex cexpl (long double complex);
- #endif
-Index: libgfortran/acinclude.m4
-===================================================================
---- a/src/libgfortran/acinclude.m4 (.../tags/gcc_6_3_0_release)
-+++ b/src/libgfortran/acinclude.m4 (.../branches/gcc-6-branch)
-@@ -1,6 +1,7 @@
- m4_include(../config/acx.m4)
- m4_include(../config/no-executables.m4)
- m4_include(../config/math.m4)
-+m4_include(../config/ax_check_define.m4)
-
- dnl Check that we have a working GNU Fortran compiler
- AC_DEFUN([LIBGFOR_WORKING_GFORTRAN], [
+ /* In directives.c */
+ extern int _cpp_test_assertion (cpp_reader *, unsigned int *);
Index: fixincludes/ChangeLog
===================================================================
---- a/src/fixincludes/ChangeLog (.../tags/gcc_6_3_0_release)
-+++ b/src/fixincludes/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,16 @@
-+2017-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+--- a/src/fixincludes/ChangeLog (.../tags/gcc_9_2_0_release)
++++ b/src/fixincludes/ChangeLog (.../branches/gcc-9-branch)
+@@ -1,3 +1,15 @@
++2019-08-21 Iain Sandoe <iain@sandoe.co.uk>
+
-+ Backport from mainline
-+ 2017-01-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++ Backport from mainline.
++ 2019-08-18 C.G. Dogan <gcc+cgdogan.00@gmail.com>
++ Iain Sandoe <iain@sandoe.co.uk>
+
-+ PR libstdc++/78979
-+ * inclhack.def (solaris_gets_c11, solaris_gets_cxx14)
-+ (solaris_std_gets_cxx14, solaris_stdlib_noreturn): New fixes.
++ PR target/83531
++ * inclhack.def (darwin_api_availability): New; strip leading
++ underscores from API_XXXX defines.
+ * fixincl.x: Regenerate.
-+ * tests/base/iso/stdio_iso.h [SOLARIS_GETS_C11_CHECK,
-+ SOLARIS_GETS_CXX14_CHECK, SOLARIS_STD_GETS_CXX14_CHECK,
-+ SOLARIS_STDLIB_NORETURN_CHECK]: New tests.
++ * tests/base/os/availability.h: New file.
+
- 2016-12-21 Release Manager
+ 2019-08-12 Release Manager
- * GCC 6.3.0 released.
-Index: fixincludes/tests/base/stdio.h
+ * GCC 9.2.0 released.
+Index: fixincludes/tests/base/os/availability.h
===================================================================
---- a/src/fixincludes/tests/base/stdio.h (.../tags/gcc_6_3_0_release)
-+++ b/src/fixincludes/tests/base/stdio.h (.../branches/gcc-6-branch)
-@@ -90,6 +90,13 @@
- #endif /* SOLARIS_STD___FILBUF_CHECK */
-
-
-+#if defined( SOLARIS_STD_GETS_CXX14_CHECK )
-+#if __cplusplus < 201402L
-+using std::gets;
-+#endif
-+#endif /* SOLARIS_STD_GETS_CXX14_CHECK */
-+
-+
- #if defined( STDIO_STDARG_H_CHECK )
-
- #endif /* STDIO_STDARG_H_CHECK */
-Index: fixincludes/tests/base/iso/stdio_iso.h
-===================================================================
---- a/src/fixincludes/tests/base/iso/stdio_iso.h (.../tags/gcc_6_3_0_release)
-+++ b/src/fixincludes/tests/base/iso/stdio_iso.h (.../branches/gcc-6-branch)
-@@ -12,3 +12,16 @@
- #if defined( SOLARIS_GETC_STRICT_STDC_CHECK )
- #if !defined(_REENTRANT) && !defined(_LP64) && (!defined(_STRICT_STDC) || (__cplusplus >= 199711L))
- #endif /* SOLARIS_GETC_STRICT_STDC_CHECK */
-+
-+
-+#if defined( SOLARIS_GETS_C11_CHECK )
-+#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L
-+extern char *gets(char *) __attribute__((__deprecated__));
-+#endif
-+#endif /* SOLARIS_GETS_C11_CHECK */
-+
-+
-+#if defined( SOLARIS_GETS_CXX14_CHECK )
-+#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L
-+extern char *gets(char *) __ATTR_DEPRECATED;
-+#endif /* SOLARIS_GETS_CXX14_CHECK */
-Index: fixincludes/tests/base/iso/stdlib_c99.h
-===================================================================
---- a/src/fixincludes/tests/base/iso/stdlib_c99.h (.../tags/gcc_6_3_0_release)
-+++ b/src/fixincludes/tests/base/iso/stdlib_c99.h (.../branches/gcc-6-branch)
-@@ -0,0 +1,14 @@
+--- a/src/fixincludes/tests/base/os/availability.h (.../tags/gcc_9_2_0_release)
++++ b/src/fixincludes/tests/base/os/availability.h (.../branches/gcc-9-branch)
+@@ -0,0 +1,18 @@
+/* DO NOT EDIT THIS FILE.
+
+ It has been auto-edited by fixincludes from:
+
-+ "fixinc/tests/inc/iso/stdlib_c99.h"
++ "fixinc/tests/inc/os/availability.h"
+
+ This had to be done to correct non-standard usages in the
+ original, manufacturer supplied header file. */
+
+
+
-+#if defined( SOLARIS_STDLIB_NORETURN_CHECK )
-+extern void quick_exit(int) __attribute__((__noreturn__));
-+#endif /* SOLARIS_STDLIB_NORETURN_CHECK */
++#if defined( DARWIN_API_AVAILABILITY_CHECK )
++ #define API_AVAILABLE(...)
++ #define API_DEPRECATED(...)
++ #define API_DEPRECATED_WITH_REPLACEMENT(...)
++ #define API_UNAVAILABLE(...)
++
++#endif /* DARWIN_API_AVAILABILITY_CHECK */
Index: fixincludes/fixincl.x
===================================================================
---- a/src/fixincludes/fixincl.x (.../tags/gcc_6_3_0_release)
-+++ b/src/fixincludes/fixincl.x (.../branches/gcc-6-branch)
+--- a/src/fixincludes/fixincl.x (.../tags/gcc_9_2_0_release)
++++ b/src/fixincludes/fixincl.x (.../branches/gcc-9-branch)
@@ -2,11 +2,11 @@
- *
+ *
* DO NOT EDIT THIS FILE (fixincl.x)
- *
-- * It has been AutoGen-ed November 18, 2016 at 12:35:01 PM by AutoGen 5.16.2
-+ * It has been AutoGen-ed January 5, 2017 at 06:03:22 PM by AutoGen 5.16.2
+ *
+- * It has been AutoGen-ed July 7, 2019 at 11:43:37 AM by AutoGen 5.17.4
++ * It has been AutoGen-ed August 21, 2019 at 07:47:23 PM by AutoGen 5.17.4
* From the definitions inclhack.def
* and the template file fixincl
*/
--/* DO NOT SVN-MERGE THIS FILE, EITHER Fri Nov 18 12:35:01 2016
-+/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Jan 5 18:03:22 CET 2017
+-/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Jul 7 11:43:37 BST 2019
++/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Aug 21 19:47:23 BST 2019
*
* You must regenerate it. Use the ./genfixes script.
*
@@ -71075,355 +32513,135 @@ Index: fixincludes/fixincl.x
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
-- * This file contains 236 fixup descriptions.
-+ * This file contains 240 fixup descriptions.
+- * This file contains 255 fixup descriptions.
++ * This file contains 256 fixup descriptions.
*
* See README for more information.
*
-@@ -6824,6 +6824,84 @@
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
-+ * Description of Solaris_Gets_C11 fix
-+ */
-+tSCC zSolaris_Gets_C11Name[] =
-+ "solaris_gets_c11";
-+
-+/*
-+ * File name selection pattern
-+ */
-+tSCC zSolaris_Gets_C11List[] =
-+ "iso/stdio_iso.h\0";
-+/*
-+ * Machine/OS name selection pattern
-+ */
-+tSCC* apzSolaris_Gets_C11Machs[] = {
-+ "*-*-solaris2*",
-+ (const char*)NULL };
-+
-+/*
-+ * content selection pattern - do fix if pattern found
-+ */
-+tSCC zSolaris_Gets_C11Select0[] =
-+ "(extern char[ \t]*\\*gets\\(char \\*\\));";
-+
-+#define SOLARIS_GETS_C11_TEST_CT 1
-+static tTestDesc aSolaris_Gets_C11Tests[] = {
-+ { TT_EGREP, zSolaris_Gets_C11Select0, (regex_t*)NULL }, };
-+
-+/*
-+ * Fix Command Arguments for Solaris_Gets_C11
-+ */
-+static const char* apzSolaris_Gets_C11Patch[] = {
-+ "format",
-+ "#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L\n\
-+%1 __attribute__((__deprecated__));\n\
-+#endif",
-+ (char*)NULL };
-+
-+/* * * * * * * * * * * * * * * * * * * * * * * * * *
-+ *
-+ * Description of Solaris_Gets_Cxx14 fix
-+ */
-+tSCC zSolaris_Gets_Cxx14Name[] =
-+ "solaris_gets_cxx14";
-+
-+/*
-+ * File name selection pattern
-+ */
-+tSCC zSolaris_Gets_Cxx14List[] =
-+ "iso/stdio_iso.h\0";
-+/*
-+ * Machine/OS name selection pattern
-+ */
-+tSCC* apzSolaris_Gets_Cxx14Machs[] = {
-+ "*-*-solaris2*",
-+ (const char*)NULL };
-+
-+/*
-+ * content selection pattern - do fix if pattern found
-+ */
-+tSCC zSolaris_Gets_Cxx14Select0[] =
-+ "(#if __STDC_VERSION__ < 201112L)\n\
-+(extern char\t\\*gets\\(char \\*\\) __ATTR_DEPRECATED;)";
-+
-+#define SOLARIS_GETS_CXX14_TEST_CT 1
-+static tTestDesc aSolaris_Gets_Cxx14Tests[] = {
-+ { TT_EGREP, zSolaris_Gets_Cxx14Select0, (regex_t*)NULL }, };
-+
-+/*
-+ * Fix Command Arguments for Solaris_Gets_Cxx14
-+ */
-+static const char* apzSolaris_Gets_Cxx14Patch[] = {
-+ "format",
-+ "%1 && __cplusplus < 201402L\n\
-+%2",
-+ (char*)NULL };
-+
-+/* * * * * * * * * * * * * * * * * * * * * * * * * *
-+ *
- * Description of Solaris_Int_Const fix
- */
- tSCC zSolaris_Int_ConstName[] =
-@@ -7576,6 +7654,45 @@
+@@ -269,6 +269,56 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
-+ * Description of Solaris_Std_Gets_Cxx14 fix
++ * Description of Darwin_Api_Availability fix
+ */
-+tSCC zSolaris_Std_Gets_Cxx14Name[] =
-+ "solaris_std_gets_cxx14";
++tSCC zDarwin_Api_AvailabilityName[] =
++ "darwin_api_availability";
+
+/*
+ * File name selection pattern
+ */
-+tSCC zSolaris_Std_Gets_Cxx14List[] =
-+ "stdio.h\0";
++tSCC zDarwin_Api_AvailabilityList[] =
++ "os/availability.h\0";
+/*
+ * Machine/OS name selection pattern
+ */
-+tSCC* apzSolaris_Std_Gets_Cxx14Machs[] = {
-+ "*-*-solaris2*",
++tSCC* apzDarwin_Api_AvailabilityMachs[] = {
++ "*-*-darwin*",
+ (const char*)NULL };
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
-+tSCC zSolaris_Std_Gets_Cxx14Select0[] =
-+ "using std::gets;";
-+
-+#define SOLARIS_STD_GETS_CXX14_TEST_CT 1
-+static tTestDesc aSolaris_Std_Gets_Cxx14Tests[] = {
-+ { TT_EGREP, zSolaris_Std_Gets_Cxx14Select0, (regex_t*)NULL }, };
-+
-+/*
-+ * Fix Command Arguments for Solaris_Std_Gets_Cxx14
-+ */
-+static const char* apzSolaris_Std_Gets_Cxx14Patch[] = {
-+ "format",
-+ "#if __cplusplus < 201402L\n\
-+%0\n\
-+#endif",
-+ (char*)NULL };
-+
-+/* * * * * * * * * * * * * * * * * * * * * * * * * *
-+ *
- * Description of Solaris_Stdio_Tag fix
- */
- tSCC zSolaris_Stdio_TagName[] =
-@@ -7617,6 +7734,43 @@
-
- /* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
-+ * Description of Solaris_Stdlib_Noreturn fix
-+ */
-+tSCC zSolaris_Stdlib_NoreturnName[] =
-+ "solaris_stdlib_noreturn";
-+
-+/*
-+ * File name selection pattern
-+ */
-+tSCC zSolaris_Stdlib_NoreturnList[] =
-+ "iso/stdlib_c99.h\0";
-+/*
-+ * Machine/OS name selection pattern
-+ */
-+tSCC* apzSolaris_Stdlib_NoreturnMachs[] = {
-+ "*-*-solaris2*",
-+ (const char*)NULL };
++tSCC zDarwin_Api_AvailabilitySelect0[] =
++ " *#define __API_AVAILABLE.*\n\
++ *#define __API_DEPRECATED.*\n\
++ *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n\
++ *#define __API_UNAVAILABLE.*\n";
+
+/*
-+ * content selection pattern - do fix if pattern found
++ * content bypass pattern - skip fix if pattern found
+ */
-+tSCC zSolaris_Stdlib_NoreturnSelect0[] =
-+ "(extern) _Noreturn (void quick_exit\\(int\\));";
++tSCC zDarwin_Api_AvailabilityBypass0[] =
++ "__IPHONE_OS_VERSION_MIN_REQUIRED";
+
-+#define SOLARIS_STDLIB_NORETURN_TEST_CT 1
-+static tTestDesc aSolaris_Stdlib_NoreturnTests[] = {
-+ { TT_EGREP, zSolaris_Stdlib_NoreturnSelect0, (regex_t*)NULL }, };
++#define DARWIN_API_AVAILABILITY_TEST_CT 2
++static tTestDesc aDarwin_Api_AvailabilityTests[] = {
++ { TT_NEGREP, zDarwin_Api_AvailabilityBypass0, (regex_t*)NULL },
++ { TT_EGREP, zDarwin_Api_AvailabilitySelect0, (regex_t*)NULL }, };
+
+/*
-+ * Fix Command Arguments for Solaris_Stdlib_Noreturn
++ * Fix Command Arguments for Darwin_Api_Availability
+ */
-+static const char* apzSolaris_Stdlib_NoreturnPatch[] = {
++static const char* apzDarwin_Api_AvailabilityPatch[] = {
+ "format",
-+ "%1 %2 __attribute__((__noreturn__));",
++ " #define API_AVAILABLE(...)\n\
++ #define API_DEPRECATED(...)\n\
++ #define API_DEPRECATED_WITH_REPLACEMENT(...)\n\
++ #define API_UNAVAILABLE(...)\n",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
- * Description of Statsswtch fix
+ * Description of Aab_Fd_Zero_Asm_Posix_Types_H fix
*/
- tSCC zStatsswtchName[] =
-@@ -9664,9 +9818,9 @@
+ tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] =
+@@ -10346,9 +10396,9 @@
*
* List of all fixes
*/
--#define REGEX_COUNT 272
-+#define REGEX_COUNT 276
+-#define REGEX_COUNT 293
++#define REGEX_COUNT 295
#define MACH_LIST_SIZE_LIMIT 187
--#define FIX_COUNT 236
-+#define FIX_COUNT 240
+-#define FIX_COUNT 255
++#define FIX_COUNT 256
/*
* Enumerate the fixes
-@@ -9837,6 +9991,8 @@
- SOLARIS_COMPLEX_CXX_FIXIDX,
- SOLARIS_CXX_LINKAGE_FIXIDX,
- SOLARIS_GETC_STRICT_STDC_FIXIDX,
-+ SOLARIS_GETS_C11_FIXIDX,
-+ SOLARIS_GETS_CXX14_FIXIDX,
- SOLARIS_INT_CONST_FIXIDX,
- SOLARIS_INT_LIMITS_1_FIXIDX,
- SOLARIS_INT_LIMITS_2_FIXIDX,
-@@ -9855,7 +10011,9 @@
- SOLARIS_POW_INT_OVERLOAD_FIXIDX,
- SOLARIS_RWLOCK_INIT_1_FIXIDX,
- SOLARIS_STD___FILBUF_FIXIDX,
-+ SOLARIS_STD_GETS_CXX14_FIXIDX,
- SOLARIS_STDIO_TAG_FIXIDX,
-+ SOLARIS_STDLIB_NORETURN_FIXIDX,
- STATSSWTCH_FIXIDX,
- STDIO_STDARG_H_FIXIDX,
- STDIO_VA_LIST_FIXIDX,
-@@ -10736,6 +10894,16 @@
- SOLARIS_GETC_STRICT_STDC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSolaris_Getc_Strict_StdcTests, apzSolaris_Getc_Strict_StdcPatch, 0 },
-
-+ { zSolaris_Gets_C11Name, zSolaris_Gets_C11List,
-+ apzSolaris_Gets_C11Machs,
-+ SOLARIS_GETS_C11_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-+ aSolaris_Gets_C11Tests, apzSolaris_Gets_C11Patch, 0 },
-+
-+ { zSolaris_Gets_Cxx14Name, zSolaris_Gets_Cxx14List,
-+ apzSolaris_Gets_Cxx14Machs,
-+ SOLARIS_GETS_CXX14_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-+ aSolaris_Gets_Cxx14Tests, apzSolaris_Gets_Cxx14Patch, 0 },
-+
- { zSolaris_Int_ConstName, zSolaris_Int_ConstList,
- apzSolaris_Int_ConstMachs,
- SOLARIS_INT_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-@@ -10826,11 +10994,21 @@
- SOLARIS_STD___FILBUF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSolaris_Std___FilbufTests, apzSolaris_Std___FilbufPatch, 0 },
-
-+ { zSolaris_Std_Gets_Cxx14Name, zSolaris_Std_Gets_Cxx14List,
-+ apzSolaris_Std_Gets_Cxx14Machs,
-+ SOLARIS_STD_GETS_CXX14_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-+ aSolaris_Std_Gets_Cxx14Tests, apzSolaris_Std_Gets_Cxx14Patch, 0 },
-+
- { zSolaris_Stdio_TagName, zSolaris_Stdio_TagList,
- apzSolaris_Stdio_TagMachs,
- SOLARIS_STDIO_TAG_TEST_CT, FD_MACH_ONLY,
- aSolaris_Stdio_TagTests, apzSolaris_Stdio_TagPatch, 0 },
-
-+ { zSolaris_Stdlib_NoreturnName, zSolaris_Stdlib_NoreturnList,
-+ apzSolaris_Stdlib_NoreturnMachs,
-+ SOLARIS_STDLIB_NORETURN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
-+ aSolaris_Stdlib_NoreturnTests, apzSolaris_Stdlib_NoreturnPatch, 0 },
-+
- { zStatsswtchName, zStatsswtchList,
- apzStatsswtchMachs,
- STATSSWTCH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+@@ -10357,6 +10407,7 @@
+ AAB_AIX_STDIO_FIXIDX,
+ AAB_AIX_FCNTL_FIXIDX,
+ AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_FIXIDX,
++ DARWIN_API_AVAILABILITY_FIXIDX,
+ AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX,
+ AAB_FD_ZERO_GNU_TYPES_H_FIXIDX,
+ AAB_FD_ZERO_SELECTBITS_H_FIXIDX,
+@@ -10627,6 +10678,11 @@
+ AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
+ aAab_Darwin7_9_Long_Double_FuncsTests, apzAab_Darwin7_9_Long_Double_FuncsPatch, 0 },
+
++ { zDarwin_Api_AvailabilityName, zDarwin_Api_AvailabilityList,
++ apzDarwin_Api_AvailabilityMachs,
++ DARWIN_API_AVAILABILITY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
++ aDarwin_Api_AvailabilityTests, apzDarwin_Api_AvailabilityPatch, 0 },
++
+ { zAab_Fd_Zero_Asm_Posix_Types_HName, zAab_Fd_Zero_Asm_Posix_Types_HList,
+ apzAab_Fd_Zero_Asm_Posix_Types_HMachs,
+ AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
Index: fixincludes/inclhack.def
===================================================================
---- a/src/fixincludes/inclhack.def (.../tags/gcc_6_3_0_release)
-+++ b/src/fixincludes/inclhack.def (.../branches/gcc-6-branch)
-@@ -3482,6 +3482,43 @@
+--- a/src/fixincludes/inclhack.def (.../tags/gcc_9_2_0_release)
++++ b/src/fixincludes/inclhack.def (.../branches/gcc-9-branch)
+@@ -195,6 +195,33 @@
};
/*
-+ * Solaris <iso/stdio_iso.h> should deprecate gets before C11.
++ * SDKs for 10.13 and 10.14 omit the definitions for API_AVAILABLE where
++ * __attribute__((availability)) is not supported.
+ */
+fix = {
-+ hackname = solaris_gets_c11;
-+ mach = "*-*-solaris2*";
-+ files = "iso/stdio_iso.h";
-+ select = "(extern char[ \t]*\\*gets\\(char \\*\\));";
-+
++ hackname = darwin_api_availability;
++ mach = "*-*-darwin*";
++ files = os/availability.h;
++ bypass = "__IPHONE_OS_VERSION_MIN_REQUIRED";
++ select =
++ " *#define __API_AVAILABLE.*\n"
++ " *#define __API_DEPRECATED.*\n"
++ " *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n"
++ " *#define __API_UNAVAILABLE.*\n";
+ c_fix = format;
-+ c_fix_arg = "#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L\n"
-+ "%1 __attribute__((__deprecated__));\n"
-+ "#endif";
-+
-+ test_text = "extern char *gets(char *);";
-+};
-+
-+/*
-+ * Solaris <iso/stdio_iso.h> shouldn't declare gets for C++14.
-+ */
-+fix = {
-+ hackname = solaris_gets_cxx14;
-+ mach = "*-*-solaris2*";
-+ files = "iso/stdio_iso.h";
-+ select = <<- _EOSelect_
-+(#if __STDC_VERSION__ < 201112L)
-+(extern char \*gets\(char \*\) __ATTR_DEPRECATED;)
-+_EOSelect_;
-+ c_fix = format;
-+ c_fix_arg = "%1 && __cplusplus < 201402L\n%2";
-+
-+ test_text = <<- _EOText_
-+#if __STDC_VERSION__ < 201112L
-+extern char *gets(char *) __ATTR_DEPRECATED;
-+_EOText_;
++ c_fix_arg =
++ " #define API_AVAILABLE(...)\n"
++ " #define API_DEPRECATED(...)\n"
++ " #define API_DEPRECATED_WITH_REPLACEMENT(...)\n"
++ " #define API_UNAVAILABLE(...)\n";
++ test_text =
++ "#define __API_AVAILABLE(...)\n"
++ "#define __API_DEPRECATED(...)\n"
++ "#define __API_DEPRECATED_WITH_REPLACEMENT(...)\n"
++ "#define __API_UNAVAILABLE(...)\n";
+};
+
+/*
- * Sun Solaris 2 has a version of sys/int_const.h that defines
- * UINT8_C and UINT16_C to unsigned constants.
- */
-@@ -3871,6 +3908,21 @@
- };
-
- /*
-+ * Solaris <stdio.h> shouldn't use std::gets for C++14.
-+ */
-+fix = {
-+ hackname = solaris_std_gets_cxx14;
-+ mach = "*-*-solaris2*";
-+ files = "stdio.h";
-+ select = "using std::gets;";
-+
-+ c_fix = format;
-+ c_fix_arg = "#if __cplusplus < 201402L\n%0\n#endif";
-+
-+ test_text = "using std::gets;";
-+};
-+
-+/*
- * Sun Solaris 8 has what appears to be some gross workaround for
- * some old version of their c++ compiler. G++ doesn't want it
- * either, but doesn't want to be tied to SunPRO version numbers.
-@@ -3889,6 +3941,21 @@
- };
-
- /*
-+ * Solaris <stdlib.h> shouldn't use _Noreturn, breaks with C++.
-+ */
-+fix = {
-+ hackname = solaris_stdlib_noreturn;
-+ mach = "*-*-solaris2*";
-+ files = "iso/stdlib_c99.h";
-+ select = "(extern) _Noreturn (void quick_exit\\(int\\));";
-+
-+ c_fix = format;
-+ c_fix_arg = "%1 %2 __attribute__((__noreturn__));";
-+
-+ test_text = "extern _Noreturn void quick_exit(int);";
-+};
-+
-+/*
- * a missing semi-colon at the end of the statsswtch structure definition.
+ * This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n)
*/
fix = {
-Index: .
-===================================================================
---- a/src/. (.../tags/gcc_6_3_0_release)
-+++ b/src/. (.../branches/gcc-6-branch)
-
-Property changes on: .
-___________________________________________________________________
-Modified: svn:mergeinfo
-## -0,0 +0,1 ##
- Merged /trunk:r243962,244001