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.diff71429
1 files changed, 71429 insertions, 0 deletions
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
new file mode 100644
index 0000000..1ada192
--- /dev/null
+++ b/debian/patches/svn-updates.diff
@@ -0,0 +1,71429 @@
+# DP: updates from the 6 branch upto 20170510 (r247831).
+
+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)
+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 \
+ | 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>
++
++ * 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.
++
+ 2016-12-21 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
+===================================================================
+--- 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.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 */
++
++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;
++}
+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
+ #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/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>
++
++ Backported from mainline
++ 2017-02-16 Andreas Tobler <andreast@gcc.gnu.org>
++
++ PR sanitizer/79562
++ * sanitizer_common/sanitizer_platform_limits_posix.cc: Cherry-pick
++ upstream r294806.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.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 @@
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
++#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
+ #include <math.h>
+ #undef isnan
+ namespace std {
+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
+
+ 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)
+
+@@ -584,9 +596,32 @@
+ def get_result_type(self, obj):
+ return self._elem_type
+
++ def _supports(self, method_name):
++ "operator* is not supported for unique_ptr<T[]>"
++ return not self._is_array
++
+ def __call__(self, obj):
+ return UniquePtrGetWorker.__call__(self, obj).dereference()
+
++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]
+
+@@ -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*()"
++
++ def __init__(self, elem_type):
++ SharedPtrGetWorker.__init__(self, elem_type)
++
++ def get_result_type(self, obj):
++ return self._elem_type
++
++ def __call__(self, obj):
++ return SharedPtrGetWorker.__call__(self, obj).dereference()
++
++class SharedPtrSubscriptWorker(SharedPtrGetWorker):
++ "Implements std::shared_ptr<T>::operator[](size_t)"
++
++ def __init__(self, elem_type):
++ SharedPtrGetWorker.__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 __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]
++
++class SharedPtrUseCountWorker(gdb.xmethod.XMethodWorker):
++ "Implements std::shared_ptr<T>::use_count()"
++
++ def __init__(self, elem_type):
++ SharedPtrUseCountWorker.__init__(self, elem_type)
++
++ def get_arg_types(self):
++ return None
++
++ def get_result_type(self, obj):
++ return gdb.lookup_type('long')
++
++ def __call__(self, obj):
++ refcounts = ['_M_refcount']['_M_pi']
++ return refcounts['_M_use_count'] if refcounts else 0
++
++class SharedPtrUniqueWorker(SharedPtrUseCountWorker):
++ "Implements std::shared_ptr<T>::unique()"
++
++ def __init__(self, elem_type):
++ SharedPtrUseCountWorker.__init__(self, elem_type)
++
++ def get_result_type(self, obj):
++ return gdb.lookup_type('bool')
++
++ def __call__(self, obj):
++ return SharedPtrUseCountWorker.__call__(self, obj) == 1
++
++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.
++ };
++ 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;
+
+@@ -251,7 +257,7 @@
+ };
+
+ template<typename _CharT>
+- struct collate_shim : std::collate<_CharT>, facet::__shim
++ struct collate_shim : std::collate<_CharT>, __shim
+ {
+ typedef basic_string<_CharT> string_type;
+
+@@ -276,7 +282,7 @@
+ };
+
+ 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;
+
+@@ -357,7 +363,7 @@
+ };
+
+ 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
+===================================================================
+--- 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++ -*-
+
+-// 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 @@
+
+ #include <codecvt>
+ #include <cstring> // std::memcpy, std::memcmp
+-#include <bits/stl_algobase.h> // std::max
++#include <bits/stl_algobase.h> // std::min
+
+ #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); }
++
++ 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;
+
++ // Write a code unit.
++ range& operator=(Elem e)
++ {
++ *next++ = e;
++ return *this;
++ }
++
++ // Read the next code unit.
+ Elem operator*() const { return *next; }
+
+- range& operator++() { ++next; return *this; }
++ // Read the Nth code unit.
++ Elem operator[](size_t n) const { return next[n]; }
+
++ // 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; }
+ };
+
++ // 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, "" );
++
++ if (to.nbytes() < N)
+ return false;
+ memcpy(to.next, bom, N);
+- to.next += N;
++ to += (N / sizeof(C));
+ return true;
+ }
+
++ // 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, "" );
++
++ 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;
+ }
+
+- 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);
+ }
+
+- // 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 {};
+ }
+
+ // 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;
+ }
+ 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)
++ {
++ 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))
++ {
++ if (avail < 2)
++ return incomplete_mb_character;
++ const char16_t c2 = adjust_byte_order(from[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 += inc;
++ return c;
++ }
+
+- 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;
+ }
+ 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 @@
+
+ // 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;
+ }
+
+- // 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;
+ }
+
+- // 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;
+ }
+
+@@ -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);
+ }
+
+ // 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);
+ }
+
+ // 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 @@
+
+ // 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())
+ {
+ 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;
+ }
+ 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;
+ }
+
+ int
+ __codecvt_utf16_base<wchar_t>::do_encoding() const throw()
+-{ return 0; }
++{ return 0; } // UTF-16 is not a fixed-width encoding
+
+ 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 @@
+
+ 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
+
+ // Define members of codecvt_utf8_utf16<char16_t> base class implementation.
+ // Converts from UTF-8 to UTF-16.
+@@ -1280,7 +1447,7 @@
+
+ int
+ __codecvt_utf8_utf16_base<char16_t>::do_encoding() const throw()
+-{ return 0; }
++{ return 0; } // UTF-8 is not a fixed-width encoding
+
+ 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;
+ }
+
+ // 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 @@
+
+ int
+ __codecvt_utf8_utf16_base<char32_t>::do_encoding() const throw()
+-{ return 0; }
++{ return 0; } // UTF-8 is not a fixed-width encoding
+
+ 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 @@
+
+ int
+ __codecvt_utf8_utf16_base<wchar_t>::do_encoding() const throw()
+-{ return 0; }
++{ return 0; } // UTF-8 is not a fixed-width encoding
+
+ 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
+
+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
+
+ /**
+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;
+ }
+
+ _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;
+ }
+
+ _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;
+ }
+
+ _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
+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
+ {
+- __pointer tmp = get();
++ __pointer __tmp = get();
+ reset();
+- return tmp;
++ return __tmp;
+ }
+
+ 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)... }};
+ }
+
+ 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());
+ }
+
+ 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());
+ }
+
+ void
+ push_heap()
+ {
+- 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);
+ }
+
+ void
+@@ -290,15 +284,6 @@
+ std::pop_heap(m_a_entries, end, m_cmp);
+ }
+
+- 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)
+ {
+- _Pointer_adapter tmp(*this);
++ _Pointer_adapter __tmp(*this);
+ _Storage_policy::set(_Storage_policy::get() + 1);
+- return tmp;
++ return __tmp;
+ }
+
+ inline _Pointer_adapter&
+@@ -464,9 +464,9 @@
+ inline _Pointer_adapter
+ operator--(int)
+ {
+- _Pointer_adapter tmp(*this);
++ _Pointer_adapter __tmp(*this);
+ _Storage_policy::set(_Storage_policy::get() - 1);
+- return tmp;
++ return __tmp;
+ }
+
+ }; // 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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+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 @@
+ }
+ }
+
+- class __shim;
+-
+ 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)
+ {
+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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+@@ -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
+ //@}
+
+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 @@
+ }
+ };
+
++ 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)
+ {
+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; }
+- };
++ };
+
+ inline _Iter_less_val
+ __iter_less_val()
+@@ -69,7 +70,7 @@
+ bool
+ operator()(_Value& __val, _Iterator __it) const
+ { return __val < *__it; }
+- };
++ };
+
+ inline _Val_less_iter
+ __val_less_iter()
+@@ -85,7 +86,7 @@
+ bool
+ operator()(_Iterator1 __it1, _Iterator2 __it2) const
+ { return *__it1 == *__it2; }
+- };
++ };
+
+ inline _Iter_equal_to_iter
+ __iter_equal_to_iter()
+@@ -97,7 +98,7 @@
+ bool
+ operator()(_Iterator __it, _Value& __val) const
+ { return *__it == __val; }
+- };
++ };
+
+ inline _Iter_equal_to_val
+ __iter_equal_to_val()
+@@ -111,7 +112,8 @@
+ struct _Iter_comp_iter
+ {
+ _Compare _M_comp;
+- _GLIBCXX14_CONSTEXPR
++
++ 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
+ //@}
+
+@@ -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
+ //@}
+
+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 @@
+ };
+
+ 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) {}
+
+ 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>; };
+
+ 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>");
+ };
+
+ /**
+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 @@
+
+ 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;
++ }
+ }
+ }
+
+@@ -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))
++ {
++#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
++ }
+ 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;
+
+ /**
+ * @brief Uniform interface to all allocator types.
+@@ -94,6 +94,38 @@
+ */
+ using pointer = __detected_or_t<value_type*, __pointer, _Alloc>;
+
++ 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 _A2, typename _PtrT>
++ struct _Diff<_A2, _PtrT, __void_t<typename _A2::difference_type>>
++ { using type = typename _A2::difference_type; };
++
++ // Select _A2::size_type or make_unsigned<_DiffT>::type
++ template<typename _A2, typename _DiffT, typename = void>
++ struct _Size : make_unsigned<_DiffT> { };
++
++ template<typename _A2, typename _DiffT>
++ struct _Size<_A2, _DiffT, __void_t<typename _A2::size_type>>
++ { using type = typename _A2::size_type; };
++
++ 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>");
+-
+ 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,
+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>
++
++ 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.
++
++ 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.
++
++ Backport from mainline
++ 2017-03-15 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.
++
++ Backport from mainline
++ 2017-02-23 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>
++
++ 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.
++
++ 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.
++
++2017-03-02 Jonathan Wakely <jwakely@redhat.com>
++
++ 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.
++
++2017-02-15 Jonathan Wakely <jwakely@redhat.com>
++
++ PR libstdc++/79114
++ * testsuite/18_support/nested_exception/79114.cc: Add dg-require.
++
++ Backport from mainline
++ 2016-12-15 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.
++
++ Backport from mainline
++ 2016-12-15 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.
++
++ Backport from mainline
++ 2016-12-15 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.
++
++ 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>
++
++ 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.
++
++ 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.
++
++ Backport from mainline
++ 2017-01-20 Jonathan Wakely <jwakely@redhat.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.
++
++ 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.
++
++ Backport from mainline
++ 2017-01-17 Jonathan Wakely <jwakely@redhat.com>
++
++ 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.
++
++ Backport from mainline
++ 2017-01-16 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.
++
++ 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.
++
++ 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:
++ Likewise.
++ * testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
++ std::swap visible.
++
++2017-01-22 Gerald Pfeifer <gerald@pfeifer.com>
++
++ Backport from mainline
++ 2017-01-01 Gerald Pfeifer <gerald@pfeifer.com>
++
++ * 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>
++
++ Backport from mainline
++ 2017-01-16 Ville Voutilainen <ville.voutilainen@gmail.com>
++
++ 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.
++
++2017-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
++
++ Backport from mainline
++ 2017-01-13 Ville Voutilainen <ville.voutilainen@gmail.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.
++
++2017-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
++
++ Backport from mainline
++ 2016-12-19 Ville Voutilainen <ville.voutilainen@gmail.com>
++
++ 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.
++
++2017-01-06 Jonathan Wakely <jwakely@redhat.com>
++
++ 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.
++
++2017-01-06 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.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.0 released.
+Index: libstdc++-v3/testsuite/25_algorithms/search/78346.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.
++//
++// 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-do run { target c++11 } }
++
++#include <algorithm>
++#include <testsuite_hooks.h>
++
++bool values[100];
++
++unsigned next_id()
++{
++ static unsigned counter = 0;
++ VERIFY(counter < 100);
++ return counter++;
++}
++
++struct value
++{
++ int val;
++ const unsigned id;
++
++ 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; }
++};
++
++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;
++}
++
++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;
++}
++
++// A forward iterator that fails to meet the requirement that for any
++// two dereferenceable forward iterators, a == b implies &*a == &*b
++struct stashing_iterator
++{
++ 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;
++ }
++
++ stashing_iterator operator++(int)
++ {
++ 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); }
++
++private:
++ void stash()
++ {
++ if (ptr)
++ stashed = *ptr;
++ }
++
++ pointer ptr;
++ value_type stashed;
++};
++
++void
++test01()
++{
++ value s[] = { 0, 1, 2, 3, 4, 5 };
++ std::search(s, s+6, stashing_iterator(s), stashing_iterator(s+4));
++}
++
++int
++main()
++{
++ test01();
++}
+Index: libstdc++-v3/testsuite/25_algorithms/sort/78991.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.
++//
++// 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-do compile { target c++14 } }
++
++// 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 <algorithm>
++
++struct function
++{
++ function() = default;
++
++ template<typename F, typename = std::result_of_t<F&(int, int)>>
++ function(F) { }
++
++ bool operator()(int x, int y) const { return x < y; }
++};
++
++int main()
++{
++ int a[2]{ 2, 1 };
++ std::sort(a, a+2, function{});
++}
+Index: libstdc++-v3/testsuite/18_support/nested_exception/79114.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.
++//
++// 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-do compile { target c++11 } }
++// { dg-require-atomic-builtins "" }
++
++#include <exception>
++
++void
++test01()
++{
++ std::throw_with_nested("");
++ std::throw_with_nested(test01);
++}
+Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.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>
+
+ 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
+===================================================================
+--- 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.
++//
++// 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/>.
++
++#include <deque>
++#include <list>
++#include <ext/slist>
++#include <set>
++#include <vector>
++#include <debug/vector>
++#include <iostream>
++
++struct C {
++ C(int& i) : ref(i) { }
++ int& ref;
++ bool operator<(const C& c) const { return ref < c.ref; }
++};
++
++int main()
++{
++ 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
++}
++// { 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.
++//
++// 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/>.
++
++#include <thread>
++
++using std::thread;
++using std::is_constructible;
++
++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
+===================================================================
+--- 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.
++//
++// 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-do run }
++
++#include <ext/pb_ds/priority_queue.hpp>
++#include <testsuite_hooks.h>
++
++int count = 0;
++
++struct less
++{
++ bool operator()(int i, int j) const
++ {
++ ++count;
++ return i < j;
++ }
++};
++
++void
++test01()
++{
++ __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() );
++}
++
++int
++main()
++{
++ test01();
++}
+Index: libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.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.
++//
++// 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-do run { target c++11 } }
++
++#include <locale>
++#include <codecvt>
++#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
++}
++
++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
++}
++
++int
++main()
++{
++ test01();
++ test02();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.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.
++//
++// 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-do run { target c++11 } }
++
++#include <codecvt>
++#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) );
++}
++
++void
++test02()
++{
++ 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) );
++}
++
++void
++test03()
++{
++#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
++}
++
++int
++main()
++{
++ test01();
++ test02();
++ test03();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/char16_t.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);
+
+ VERIFY(!cvt->always_noconv());
+- VERIFY(cvt->max_length() == 3);
++ VERIFY(cvt->max_length() == 4);
+ VERIFY(cvt->encoding() == 0);
+
+ const char u8dat[] = u8"H\U000000E4ll\U000000F6 \U0001F63F \U000056FD "
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.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.
++//
++// 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-do run { target c++11 } }
++
++#include <codecvt>
++#include <testsuite_hooks.h>
++
++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
++}
++
++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 main()
++{
++ test01();
++ test02();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.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.
++//
++// 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-do run { target c++11 } }
++
++#include <locale>
++#include <codecvt>
++#include <testsuite_hooks.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);
++}
++
++// Read/write UTF-16 code units from data not correctly aligned for char16_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] );
++}
++
++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] );
++}
++
++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 );
++ }
++
++ 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 );
++ }
++
++ 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
++}
++
++int
++main()
++{
++ test01();
++ test02();
++ test03();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.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.
++//
++// 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-do run { target c++11 } }
++
++#include <locale>
++#include <codecvt>
++#include <testsuite_hooks.h>
++
++// PR libstdc++/79980
++
++constexpr std::codecvt_mode mode(std::codecvt_mode m)
++{ return static_cast<std::codecvt_mode>(m | std::consume_header); }
++
++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>;
++
++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 );
++}
++
++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 );
++}
++
++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 );
++}
++
++void
++test04()
++{
++ 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 );
++}
++
++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 );
++}
++
++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 );
++}
++
++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 );
++}
++
++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) );
++}
++
++void
++test09()
++{
++ // 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 main()
++{
++ test01();
++ test02();
++ test03();
++ test04();
++ test05();
++ test06();
++ test07();
++ test08();
++ test09();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.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.
++//
++// 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-do run { target c++11 } }
++
++#include <codecvt>
++#include <testsuite_hooks.h>
++
++const int bomlen = 2; // UTF-16 BOM is 16 bits
++
++void
++test01()
++{
++ const int maxlen = 2;
++
++ std::codecvt_utf16<char16_t> c;
++ VERIFY( c.always_noconv() == false );
++ VERIFY( c.encoding() == 0 );
++ VERIFY( c.max_length() == maxlen );
++
++ 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) );
++}
++
++void
++test02()
++{
++ const int maxlen = 4;
++
++ std::codecvt_utf16<char32_t> c;
++ VERIFY( c.always_noconv() == false );
++ VERIFY( c.encoding() == 0 );
++ VERIFY( c.max_length() == maxlen );
++
++ 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) );
++}
++
++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
++}
++
++int
++main()
++{
++ test01();
++ test02();
++ test03();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.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.
++//
++// 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-do run { target c++11 } }
++
++#include <codecvt>
++#include <locale>
++#include <string>
++#include <testsuite_hooks.h>
++
++using std::wstring_convert;
++using std::codecvt_utf8;
++
++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 );
++}
++
++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 );
++}
++
++void
++test03()
++{
++ std::string src = u8"1234\U00001111\U0001ffff";
++ wstring_convert<codecvt_utf8<char32_t, 0x10000>, char32_t> c("bad", U"BAD");
++
++ // 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");
++
++ // 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 );
++}
++
++int
++main()
++{
++ test01();
++ test02();
++ test03();
++ test04();
++}
+Index: libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.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.
++//
++// 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-do run { target c++11 } }
++
++#include <codecvt>
++#include <testsuite_hooks.h>
++
++const int bomlen = 3; // UTF-8 BOM is 24 bits
++
++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 );
++
++ 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) );
++}
++
++void
++test02()
++{
++ const int maxlen = 4;
++
++ std::codecvt_utf8<char32_t> c;
++ VERIFY( c.always_noconv() == false );
++ VERIFY( c.encoding() == 0 );
++ VERIFY( c.max_length() == maxlen );
++
++ 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) );
++}
++
++void
++test03()
++{
++#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
++}
++
++int
++main()
++{
++ test01();
++ test02();
++ test03();
++}
+Index: libstdc++-v3/testsuite/29_atomics/atomic/69301.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.
++//
++// 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-do run { target c++11 } }
++// { dg-require-atomic-builtins "" }
++
++#include <atomic>
++#include <testsuite_hooks.h>
++
++struct NonDefaultConstructible
++{
++ NonDefaultConstructible(int i) : val(i) { }
++ int val;
++};
++
++template class std::atomic<NonDefaultConstructible>;
++
++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 );
++}
++
++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
++main()
++{
++ test01();
++ test02();
++}
+Index: libstdc++-v3/testsuite/23_containers/multimap/operations/2.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 );
+ }
+
+ 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
+@@ -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>");
+ }
+
+
+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() );
+
+- 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 );
++
++ 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 );
++
++ 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,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>");
+ }
+
+ void
+@@ -150,6 +167,28 @@
+ s.find(i);
+ }
+
++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::set<int, C> s{ 1, 2, 3, 4, 5 };
++
++ auto n = s.count(C::Partition{});
++ VERIFY( n == 3 );
++}
++
+ 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 );
++
++ 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 );
++
++ 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>");
+ }
+
+
+Index: libstdc++-v3/testsuite/23_containers/list/operations/80034.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.
++//
++// 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/>.
++
++#include <list>
++
++namespace X {
++ struct Y { };
++ bool operator<(Y, Y) { return false; }
++ template<typename T>
++ void distance(T, T) { }
++}
++
++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 } }
++
++// Copyright (C) 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
++// 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/>.
++
++// 23.2.2.4 list operations [lib.list.ops]
++
++#include <testsuite_hooks.h>
++
++#include <list>
++
++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) {}
++};
++
++unsigned int throw_after_X = 0;
++unsigned int count_X = 0;
++
++bool operator<(const X&, const X&) {
++ if (++count_X >= throw_after_X) {
++ throw 666;
++ }
++ return true;
++}
++
++
++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 (...) {
++ }
++ 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()
++{
++ // 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::map<int, int, C> m{ {1,0}, {2,0}, {3,0}, {4, 0}, {5, 0} };
++
++ auto n = m.count(C::Partition{});
++ VERIFY( n == 3 );
++}
++
+ 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 );
++}
++
+ 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()
++{
++ // 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();
++ 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
+===================================================================
+--- 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;
+ };
+
+-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{});
+ }
++
++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
+===================================================================
+--- 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.
++//
++// 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-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/>.
++
++#include <memory>
++
++struct x_struct
++{
++ int y;
++};
++
++int
++main ()
++{
++ std::shared_ptr<int> p(new int(10));
++
++ std::shared_ptr<x_struct> q(new x_struct{23});
++
++// { 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 } }
++
++
+ return 0; // Mark SPOT
+ }
+
+Index: libstdc++-v3/testsuite/util/testsuite_allocator.h
+===================================================================
+--- 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.
++//
++// 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/>.
++
++#include <utility>
++
++int main() {
++ std::pair<int,int> p;
++ p = {};
++}
+Index: libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.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.
++//
++// 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-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;
++ };
++
++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 {
++ using value_type = T;
++ };
++
++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");
++
++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.
++//
++// 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-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>;
++
++ pointer allocate(std::size_t n)
++ { return std::allocator<T>().allocate(n); }
++
++ void allocate(pointer p, std::size_t n)
++ { return std::allocator<T>().deallocate(p, n); }
++ };
++
++// 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.
++//
++// 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-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");
++
++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 } }
++
++// 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/>.
++
++
++// 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>
++
++using std::experimental::any;
++
++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());
++}
++
++int main()
++{
++ test01();
++}
+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
+
+ * GCC 6.3.0 released.
+Index: libatomic/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>
++
++ Backport from mainline:
++ 2017-01-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ PR target/78945
++ * config/arm/exch_n.c (libat_exchange): Check __ARM_FEATURE_SIMD32.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.0 released.
+Index: libatomic/config/arm/exch_n.c
+===================================================================
+--- 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 */
+
+
+-#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
+===================================================================
+--- 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.
++
++2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
++
++ Backport from mainline
++ 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
++
++ * config.host: Add support for aarch64-*-freebsd*.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.0 released.
+Index: libgcc/config/rs6000/t-crtstuff
+===================================================================
+--- 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/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;
++ }
+
+ /* 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)
+ {
+- 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 @@
+
+ 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)
+ {
+ gcov_type ret = streamer_read_hwi (ib);
+- gcc_assert (ret >= 0);
+ return ret;
+ }
+Index: gcc/graphite-isl-ast-to-gimple.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 = "";
+
+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>
++
++ Backported from mainline
++ 2017-03-31 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.
++
++ 2017-02-21 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/79641
++ * c-common.c (handle_mode_attribute): Use build_qualified_type to
++ preserve quals.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-09 Martin Liska <mliska@suse.cz>
++
++ * c-ada-spec.c (macro_length): Increment value instead of a pointer.
++
++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>
++
++ Backport from mainline
++ 2017-01-05 Martin Liska <mliska@suse.cz>
++
++ PR pch/78970
++ * c-opts.c (c_common_post_options): Reject '-' filename for a precompiled
++ header.
++
+ 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));
+ }
+
+ 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
+===================================================================
+--- 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)
+ {
+- 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;
++ }
+ }
+
+ /* Instrument a CALL_EXPR to a method if needed. */
+Index: gcc/c-family/c-ubsan.h
+===================================================================
+--- 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);
+
+ /* 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 @@
+
+ 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;
+
++ /* 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. */
++
+ context.offset = offset;
+ context.outer_type = TYPE_MAIN_VARIANT (outer_type);
+ context.maybe_derived_type = false;
+Index: gcc/c/ChangeLog
+===================================================================
+--- a/src/gcc/c/ChangeLog (.../tags/gcc_6_3_0_release)
++++ b/src/gcc/c/ChangeLog (.../branches/gcc-6-branch)
+@@ -1,3 +1,33 @@
++2017-05-05 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-03-21 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.
++
++ 2017-02-16 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.
++
++2017-02-15 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR c/79431
++ * c-parser.c (c_parser_omp_declare_target): Don't invoke
++ symtab_node::get on automatic variables.
++
++2016-12-21 Jakub Jelinek <jakub@redhat.com>
++
++ 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
+
+ * GCC 6.3.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;
+ }
+
+@@ -16212,6 +16212,11 @@
+ return c_parser_omp_target_update (loc, parser, context);
+ }
+ }
++ if (!flag_openmp) /* flag_openmp_simd */
++ {
++ c_parser_skip_to_pragma_eol (parser, false);
++ return false;
++ }
+
+ 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;
+ }
+
+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;
+
+- *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;
+
+ 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));
++ 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 (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);
+
+ /* In cgraphbuild.c */
+ int compute_call_stmt_bb_frequency (tree, basic_block bb);
+Index: gcc/DATESTAMP
+===================================================================
+--- 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/value-prof.c (.../tags/gcc_6_3_0_release)
++++ b/src/gcc/value-prof.c (.../branches/gcc-6-branch)
+@@ -384,7 +384,17 @@
+ break;
+ }
+ 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 (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);
++ {
++ 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);
++ }
+ 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 @@
+ {
+ 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
+===================================================================
+--- 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/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. */
+
+ static tree
+-fold_negate_expr (location_t loc, tree t)
++fold_negate_expr_1 (location_t loc, tree t)
+ {
+ 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 @@
+ {
+ 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));
+ }
+
+ /* -(A + B) -> (-A) - B. */
+@@ -623,7 +624,7 @@
+ {
+ 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));
+ }
+ }
+ 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;
+
+ 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;
+
+@@ -726,6 +727,19 @@
+ return NULL_TREE;
+ }
+
++/* 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 @@
+ {
+ tree result, bftype;
+
++ /* 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;
++ }
++ }
++
+ 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)
++ {
++ get_bit_range (&bitstart, &bitend, lhs, &lbitpos, &offset);
++ if (offset != NULL_TREE)
++ return 0;
++ }
++
+ /* 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);
++ }
+ }
+
+ /* 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;
+
+ 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))
+ {
+ 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 ();
+
+ return top;
+ }
+@@ -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;
+ }
+
++ /* 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
+===================================================================
+--- 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;
+ }
+
++ 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;
+ }
++
++ if (flag_sanitize & SANITIZE_THREAD)
++ {
++ error_at (UNKNOWN_LOCATION,
++ "%<-fcheck-pointer-bounds%> is not supported with "
++ "Thread Sanitizer");
++
++ flag_check_pointer_bounds = 0;
++ }
+ }
+
+ /* One region RA really helps to decrease the code size. */
+Index: gcc/tree-chrec.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 @@
+
+ /* 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;
++ }
+
+ if (code == PLUS_EXPR || code == POINTER_PLUS_EXPR)
+ {
+@@ -211,7 +216,12 @@
+ chrec_fold_multiply (type, CHREC_LEFT (poly0), poly1),
+ CHREC_RIGHT (poly0));
+
+- 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;
++ }
+
+ /* 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)
+ {
+ 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)
+ {
+- 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);
+ }
+ }
+ }
+@@ -4735,6 +4755,7 @@
+ walker.walk (ENTRY_BLOCK_PTR_FOR_FN (cfun));
+ if (walker.fail)
+ {
++ scc_vn_restore_ssa_info ();
+ free_scc_vn ();
+ return false;
+ }
+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;
+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>
++
++ 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>
++
++ PR tree-optimization/80334
++ * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
++ preserve alignment of accesses.
++
++ 2017-04-10 Richard Biener <rguenther@suse.de>
++
++ 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>
++
++ 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>
++
++ 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>
++
++ 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.
++
++ PR libgomp/80394
++ * omp-low.c (scan_omp_task): Don't optimize away empty tasks
++ if they have any depend clauses.
++
++ 2017-04-04 Jakub Jelinek <jakub@redhat.com>
++ Richard Biener <rguenther@suse.de>
++
++ 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.
++
++ 2017-04-04 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++ 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>
++
++ Backport from mainline
++ 2017-05-01 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/68491
++ * config/i386/cpuid.h (__get_cpuid): Always return 0 when
++ __get_cpuid_max returns 0.
++ (__get_cpuid_count): Ditto.
++
++2017-04-21 Eric Botcazou <ebotcazou@adacore.com>
++
++ 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.
++
++2017-04-19 Georg-Johann Lay <avr@gjlay.de>
++
++ Backport from 2017-04-19 trunk r246997.
++
++ 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.
++
++ PR target/79453
++ * config/avr/avr.c (intl.h): Include it.
++ (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
++
++2017-04-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-04-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ 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.
++
++2017-04-11 Pat Haugen <pthaugen@us.ibm.com>
++
++ Backport from mainline
++ 2017-04-07 Pat Haugen <pthaugen@us.ibm.com>
++
++ * 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>
++
++ Backport from mainline
++ 2017-03-30 Martin Jambor <mjambor@suse.cz>
++
++ 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.
++
++2017-04-08 Andreas Tobler <andreast@gcc.gnu.org>
++
++ Backport from mainline
++ 2017-04-08 Andreas Tobler <andreast@gcc.gnu.org>
++
++ * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
++ Add comment for WCHAR_T.
++
++2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
++
++ Backport from mainline
++ 2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
++
++ * config/aarch64/aarch64-freebsd.h: Define WCHAR_T.
++
++2017-04-07 Eric Botcazou <ebotcazou@adacore.com>
++
++ Backport from mainline
++ 2017-04-05 Eric Botcazou <ebotcazou@adacore.com>
++
++ 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.
++
++2017-04-07 Sebastian Huber <sebastian.huber@embedded-brains.de>
++
++ Backport from mainline
++ 2017-04-07 Sebastian Huber <sebastian.huber@embedded-brains.de>
++
++ * 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.
++
++2017-04-06 Uros Bizjak <ubizjak@gmail.com>
++
++ 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.
++
++ 2017-04-05 Uros Bizjak <ubizjak@gmail.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.
++
++2017-04-06 Thomas Preud'homme <thomas.preudhomme@arm.com>
++
++ 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.
++
++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
++ * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
++ -mpowerpc-gfxopt.
++
++2017-03-31 Richard Sandiford <richard.sandiford@arm.com>
++
++ PR tree-optimization/80218
++ * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
++ Update block frequencies and counts.
++
++2017-03-30 Peter Bergner <bergner@vnet.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>
++
++ 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.
++
++ 2017-03-27 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/80181
++ * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
++
++2017-03-28 Marek Polacek <polacek@redhat.com>
++
++ 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>
++
++ 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-22 Martin Liska <mliska@suse.cz>
++
++ 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>
++
++ 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>
++
++ 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>
++
++ Backport from mainline
++ 2017-03-20 Martin Liska <mliska@suse.cz>
++
++ PR target/79769
++ PR target/79770
++ * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
++ COMPLEX_CST and VECTOR_CST.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-14 Martin Liska <mliska@suse.cz>
++
++ PR middle-end/79831
++ * doc/invoke.texi (-Wchkp): Document the option.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-14 Martin Liska <mliska@suse.cz>
++
++ PR target/79892
++ * multiple_target.c (create_dispatcher_calls): Check that
++ a target can create a function dispatcher.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-13 Martin Liska <mliska@suse.cz>
++
++ 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>
++
++ Backport from mainline
++ 2017-03-10 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-03-22 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-09 Martin Liska <mliska@suse.cz>
++
++ PR target/65705
++ PR target/69804
++ * toplev.c (process_options): Disable -fcheck-pointer-bounds with
++ sanitizers.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-09 Martin Liska <mliska@suse.cz>
++
++ PR ipa/79761
++ * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
++ (chkp_find_bounds_1): Remove gcc_unreachable.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-03 Jan Hubicka <jh@suse.cz>
++
++ PR lto/79760
++ * ipa-devirt.c (maybe_record_node): Properly handle
++ __cxa_pure_virtual visibility.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-03 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-03 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-02-17 Martin Liska <mliska@suse.cz>
++
++ PR rtl-optimization/79574
++ * gcse.c (want_to_gcse_p): Prevent integer overflow.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-02-17 Martin Liska <mliska@suse.cz>
++
++ PR rtl-optimization/79577
++ * params.def (selsched-max-sched-times): Increase minimum to 1.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-06-13 Martin Liska <mliska@suse.cz>
++
++ PR sanitizer/71458
++ * toplev.c (process_options): Do not enable -fcheck-pointer-bounds
++ w/ -fsanitize=bounds.
++
++2017-03-21 Pat Haugen <pthaugen@us.ibm.com>
++
++ Backport from mainline:
++ 2017-03-17 Pat Haugen <pthaugen@us.ibm.com>
++
++ PR target/79951
++ * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
++ for VECTOR_UNIT_VSX_P (<MODE>mode) too.
++
++2017-03-21 Tamar Christina <tamar.christina@arm.com>
++
++ * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
++ Change ins into fmov.
++
++2017-03-19 Dominique d'Humieres <dominiq@lps.ens.fr>
++
++ PR target/71017
++ * config/i386/cpuid.h: Fix another undefined behavior.
++
++2017-03-17 Tom de Vries <tom@codesourcery.com>
++
++ backport from trunk:
++ 2017-03-17 Tom de Vries <tom@codesourcery.com>
++
++ * gcov-dump.c (print_usage): Print bug_report_url.
++
++2017-03-16 Richard Biener <rguenther@suse.de>
++
++ Backport from mainline
++ 2017-02-28 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/79732
++ * tree-inline.c (expand_call_inline): Handle anonymous
++ SSA lhs properly when inlining a function without return
++ value.
++
++2017-03-15 Matthias Klose <doko@ubuntu.com>
++
++ Backport from mainline
++ 2017-03-14 Martin Liska <mliska@suse.cz>
++
++ * Makefile.in: Install gcov-dump.
++
++2017-03-15 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/80019
++ * config/i386/i386.c (ix86_vector_duplicate_value): Create
++ subreg of inner mode for values already in registers.
++
++2017-03-14 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-02-28 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
++
++ PR target/79752
++ * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
++ udiv rather than div since input pattern is unsigned.
++
++2017-03-14 Richard Biener <rguenther@suse.de>
++
++ 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>
++
++ PR middle-end/79971
++ * gimple-expr.c (useless_type_conversion_p): Preserve
++ TYPE_SATURATING for fixed-point types.
++
++ 2017-02-22 Richard Biener <rguenther@suse.de>
++
++ 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.
++
++2017-03-07 Uros Bizjak <ubizjak@gmail.com>
++
++ Backport from mainline
++ 2017-03-07 Segher Boessenkool <segher@kernel.crashing.org>
++
++ * 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.
++
++2017-03-06 John David Anglin <danglin@gcc.gnu.org>
++
++ 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>
++
++ Back port from trunk
++ 2017-03-01 Michael Meissner <meissner@linux.vnet.ibm.com>
++
++ PR target/79439
++ * config/rs6000/predicates.md (current_file_function_operand): Do
++ not allow self calls to be local if the function is replaceable.
++
++2017-03-02 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/79514
++ * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
++
++2017-03-01 Pat Haugen <pthaugen@us.ibm.com>
++
++ Backport from mainline:
++ 2017-02-27 Pat Haugen <pthaugen@us.ibm.com>
++
++ PR target/79544
++ * rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD for
++ arithmetic shift of unsigned V2DI.
++
++2017-03-01 Martin Jambor <mjambor@suse.cz>
++
++ Backport from mainline
++ 2017-02-21 Martin Jambor <mjambor@suse.cz>
++
++ PR lto/79579
++ * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
++ have been analyzed.
++
++2017-02-28 Eric Botcazou <ebotcazou@adacore.com>
++
++ PR target/79749
++ * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
++ condition on optimize for the leaf function test.
++
++2017-02-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ 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>
++
++ 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>
++
++ 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>
++
++ PR c/79428
++ * c-parser.c (c_parser_omp_ordered): Call c_parser_skip_to_pragma_eol
++ instead of c_parser_skip_until_found.
++
++2017-02-15 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-02-10 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++ 2017-02-09 Jakub Jelinek <jakub@redhat.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.
++
++ 2017-02-07 Jakub Jelinek <jakub@redhat.com>
++ Richard Biener <rguenther@suse.de>
++
++ 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.
++
++ 2017-02-04 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++ 2017-02-02 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++ 2017-01-31 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/79267
++ * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
++ if should_remove_lhs_p is true.
++
++ 2017-01-17 Kito Cheng <kito.cheng@gmail.com>
++ Kuan-Lin Chen <kuanlinchentw@gmail.com>
++
++ PR target/79079
++ * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
++ gen_lowpart.
++
++2017-02-14 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/79495
++ * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
++
++2017-02-14 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-02-13 Martin Liska <mliska@suse.cz>
++
++ PR c/79471
++ * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
++
++2017-02-13 Gerald Pfeifer <gerald@pfeifer.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.
++
++2017-02-08 Segher Boessenkool <segher@kernel.crashing.org>
++
++ PR translation/79397
++ * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
++ of AltiVec.
++
++2017-02-08 Richard Biener <rguenther@suse.de>
++
++ 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>
++
++ 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.
++
++ 2017-01-31 Richard Biener <rguenther@suse.de>
++
++ 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>
++
++ PR target/71017
++ * config/i386/cpuid.h: Fix undefined behavior.
++
++2017-02-03 Carl Love <cel@us.ibm.com>
++
++ Backport of two commits from mainline, r244943 and r244904,
++ dated 017-01-26 and 2017-01-25 respectively
++
++ * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
++ of entries for ALTIVEC_BUILTIN_VEC_PACKS. Remove bogus entries
++ for P8V_BUILTIN_VEC_VGBBD.
++
++2017-02-03 Walter Lee <walt@tilera.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.
++
++2017-02-03 Maxim Ostapenko <m.ostapenko@samsung.com>
++
++ 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>
++
++ 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.
++
++2017-01-26 Eric Botcazou <ebotcazou@adacore.com>
++
++ 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.
++
++ 2017-01-09 Eric Botcazou <ebotcazou@adacore.com>
++
++ * 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.
++
++2017-01-26 Richard Biener <rguenther@suse.de>
++
++ * tree-vrp.c (vrp_visit_assignment_or_call): Use set_defs_to_varying.
++
++ Backport from mainline
++ 2016-01-10 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/79034
++ * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
++ Propagate out degenerate PHIs in the joiner.
++
++ 2016-12-13 Richard Biener <rguenther@suse.de>
++
++ 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
++ 2016-09-03 Kirill Yukhin <kirill.yukhin@intel.com>
++
++ * ubsan.c (ubsan_use_new_style_p): Fix check for empty string.
++
++2017-01-24 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.
++
++2017-01-24 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/78478
++ Revert:
++ 2013-11-05 Uros Bizjak <ubizjak@gmail.com>
++
++ * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
++
++2017-01-23 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-01-21 Gerald Pfeifer <gerald@pfeifer.com>
++
++ Backport from mainline
++ 2016-12-29 Gerald Pfeifer <gerald@pfeifer.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.
++
++2017-01-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ 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>
++
++ 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>
++
++ Backported from mainline
++ 2017-01-19 Richard Earnshaw <rearnsha@arm.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.
++
++2017-01-20 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-01-13 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2017-01-20 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-01-17 Martin Liska <mliska@suse.cz>
++
++ PR ipa/71207
++ * ipa-polymorphic-call.c (contains_type_p): Fix wrong
++ assumption and add comment.
++
++2017-01-19 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/72488
++ * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
++ sure to restore SSA info.
++
++2017-01-17 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++2017-01-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
++
++ 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.
++
++2017-01-13 Christophe Lyon <christophe.lyon@linaro.org>
++
++ Backport from mainline r244320.
++ 2017-01-11 Christophe Lyon <christophe.lyon@linaro.org>
++
++ PR target/78253
++ * config/arm/arm.c (legitimize_pic_address): Handle reference to
++ weak symbol.
++ (arm_assemble_integer): Likewise.
++
++2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ PR target/79044
++ * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
++ element-reversing loads and stores as not swappable.
++
++2017-01-11 Uros Bizjak <ubizjak@gmail.com>
++
++ * config/i386/i386.c (memory_address_length): Increase len
++ only when rip_relative_addr_p returns false.
++
++2017-01-11 Maxim Ostapenko <m.ostapenko@samsung.com>
++
++ 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>
++
++ 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>
++
++ 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.
++
++2017-01-10 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-01-05 Martin Liska <mliska@suse.cz>
++
++ PR pch/78970
++ * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
++ header.
++
++2017-01-10 Thomas Schwinge <thomas@codesourcery.com>
++
++ 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>
++
++ Backport from mainline
++ 2016-04-28 Segher Boessenkool <segher@kernel.crashing.org>
++
++ PR target/70668
++ * config/nds32/nds32.md (casesi): Don't access the operands array
++ out of bounds.
++
++2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
++
++ Backport from mainline
++ 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
++
++ * config.gcc: Add aarch64-*-freebsd* support.
++ * config.host: Likewise.
++ * config/aarch64/aarch64-freebsd.h: New file.
++ * config/aarch64/t-aarch64-freebsd: Ditto.
++
++2017-01-09 Bill Seurer <seurer@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2016-12-21 Bill Seurer <seurer@linux.vnet.ibm.com>
++
++ PR sanitizer/65479
++ * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
++ -fasynchronous-unwind-tables option when -fsanitize=address is
++ specified.
++
++2017-01-09 Andreas Tobler <andreast@gcc.gnu.org>
++
++ Backport from mainline
++ 2016-09-19 Richard Biener <rguenther@suse.de>
++
++ * dwarf2out.c (dwarf2out_late_global_decl): When being during the
++ early debug phase do not add locations but only const value
++ attributes.
++
++ Backport from mainline
++ 2016-10-20 Richard Biener <rguenther@suse.de>
++
++ * cgraphunit.c (analyze_functions): Set node->definition to
++ false to signal symbol removal to debug_hooks->late_global_decl.
++
++2017-01-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++
++ Backport from mainline
++ 2016-12-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++
++ PR rtl-optimization/78255
++ * gcc/postreload.c (reload_cse_simplify): Do not CSE a function if
++ NO_FUNCTION_CSE is true.
++
++2017-01-06 Wilco Dijkstra <wdijkstr@arm.com>
++
++ Backport from mainline
++ 2016-10-25 Wilco Dijkstra <wdijkstr@arm.com>
++
++ 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.
++
++2017-01-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
++
++ 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>
++
++ Backport from mainline
++ 2016-12-22 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++
++ * varasm.c (build_constant_desc): Use the alignment of the var
++ decl instead of the original expression.
++
++2017-01-04 Richard Biener <rguenther@suse.de>
++
++ 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>
++
++ 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.
++
++2017-01-03 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-12-22 Martin Liska <mliska@suse.cz>
++
++ PR tree-optimization/78886
++ * tree-ssa-strlen.c (handle_builtin_malloc): Return when LHS
++ is equal to NULL.
++
++2017-01-03 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-12-13 Martin Liska <mliska@suse.cz>
++
++ 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.
++
++2016-12-27 Jakub Jelinek <jakub@redhat.com>
++
++ PR translation/78922
++ * config/i386/stringop.opt: Remove.
++
++2016-12-21 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2016-12-13 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.
++
+ 2016-12-21 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);
+ }
+
+-_Decimal64
++long long
+ do_xex (_Decimal64 a)
+ {
+ return __builtin_dxex (a);
+@@ -59,7 +63,7 @@
+ }
+
+ _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
+===================================================================
+--- 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 " } */
++
++/* Verify that vec_xl and vec_xst accept vector pixel parameters. */
++
++/* Test case to resolve PR79268. */
++
++#include <altivec.h>
++
++vector pixel a;
++
++vector pixel
++pr79268 (vector pixel *x)
++{
++ vec_xst (a, 0, x);
++ return vec_xl (0, x);
++}
+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)
++{
++}
++
++int
++rec (int a)
++{
++ int ret = 0;
++ if (a > 10 && f ())
++ ret += rec (a - 1);
++ g ();
++ return a + ret;
++}
++
++/* { 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-do compile } */
++/* { dg-require-effective-target powerpc_p8vector_ok } */
++/* { dg-options "-mcpu=power8" } */
++
++#include <altivec.h>
++
++vector signed int
++test_vsi_packs_vsll_vsll (vector signed long long x,
++ vector signed long long y)
++{
++ return vec_packs (x, y);
++}
++
++vector unsigned int
++test_vui_packs_vull_vull (vector unsigned long long x,
++ vector unsigned long long y)
++{
++ return vec_packs (x, y);
++}
++
++/* 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
+===================================================================
+--- 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 */
++/* { dg-do compile } */
++/* { dg-options "-O0 -mno-popcntd" } */
++
++unsigned a;
++
++void
++foo (void)
++{
++ a = *(double *) (__UINTPTR_TYPE__) 0x400000;
++}
+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;
++}
++
++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
+===================================================================
+--- 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. */
++
++#include <altivec.h>
++
++void pr79044 (float *x, float *y, float *z)
++{
++ 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);
++}
+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)
++{
++ return __builtin_copysignf (x, y);
++}
++
+Index: gcc/testsuite/gcc.target/powerpc/swaps-p8-27.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__));
++
++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;
++
++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);
++}
++
++long long
++do_xexq (_Decimal128 arg)
++{
++ return __builtin_dxexq (arg);
++}
++
++_Decimal64
++do_iex (long long exp, _Decimal64 arg)
++{
++ return __builtin_diex (exp, arg);
++}
++
++_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" } */
++
++/* PR 79949: Compiler segmentation fault due to not having conditional move
++ support for the target if the -mno-powerpc-gfxopt option is used. */
++
++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:;
++}
+Index: gcc/testsuite/gcc.target/powerpc/pr71310.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 } } */
++
++struct mmu_gather {
++ long end;
++ int fullmm : 1;
++};
++
++void __tlb_reset_range(struct mmu_gather *p1)
++{
++ if (p1->fullmm)
++ p1->end = 0;
++}
++
++void tlb_gather_mmu(struct mmu_gather *p1)
++{
++ p1->fullmm = 1;
++ __tlb_reset_range(p1);
++}
+Index: gcc/testsuite/gcc.target/powerpc/pr79544.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" } */
++
++#include <altivec.h>
++
++vector unsigned long long
++test_sra (vector unsigned long long x, vector unsigned long long y)
++{
++ return vec_sra (x, y);
++}
++
++vector unsigned long long
++test_vsrad (vector unsigned long long x, vector unsigned long long y)
++{
++ return vec_vsrad (x, y);
++}
++
++/* { dg-final { scan-assembler-times {\mvsrad\M} 2 } } */
++
+Index: gcc/testsuite/gcc.target/arm/atomic_loaddi_10.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 } */
++
++#include <stdatomic.h>
++
++atomic_llong x = 0;
++
++atomic_llong get_x()
++{
++ return atomic_load(&x);
++}
++
++/* { dg-final { scan-assembler "ldrd" } } */
+Index: gcc/testsuite/gcc.target/arm/atomic_loaddi_11.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)
+@@ -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" } */
++
++#include <stdatomic.h>
++
++atomic_llong x = 0;
++
++atomic_llong get_x()
++{
++ return atomic_load(&x);
++}
++
++/* { dg-final { scan-assembler-not "ldrd" } } */
+Index: gcc/testsuite/gcc.target/arm/pr78255-1.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 @@
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++#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();
++}
++
++void foo (void)
++{
++ __builtin_abort ();
++}
++
++int main (void)
++{
++ 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
+===================================================================
+--- 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);
++
++static __attribute__((noclone, noinline, long_call))
++int foo (int a, int b, int c, int d, double i)
++{
++ return a;
++}
++
++static __attribute__((noclone, noinline))
++double baz (double i)
++{
++ return i;
++}
++
++static __attribute__((noclone, noinline))
++int bar (int a, int b, int c, int d, double i, double j)
++{
++ double l = baz (i) * j;
++ return foo (a, b, c, d, l);
++}
++
++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
+===================================================================
+--- 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 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++extern int bar (void *);
++
++int
++foo (void)
++{
++ return bar ((void*)bar);
++}
++
++/* { dg-final { scan-assembler "bl?\\s+bar" } } */
+Index: gcc/testsuite/gcc.target/arm/pr78041.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");
++
++long long f (void)
++{
++ return x << 5;
++}
++
++int main ()
++{
++ x = 0x0100000001;
++ if (f () != 0x2000000020)
++ abort ();
++ return 0;
++}
+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-do compile } */
++/* { dg-options "-march=z900 -O2 -fpic" } */
++
++
++extern void foo(const char*, const char*, const char*);
++
++void bar(int i)
++{
++ const char t1[10] = "test";
++ const char t2[10] = "test2";
++ const char t3[2][10] = {
++ "foofoofoo",
++ "barbarbar",
++ };
++ foo(t1, t2, t3[i]);
++}
++
++/* { dg-final { scan-assembler-not "GOTOFF" } } */
+Index: gcc/testsuite/gcc.target/sparc/20170228-1.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> */
++
++/* { dg-do run } */
++/* { dg-options "-fomit-frame-pointer" } */
++
++extern void abort (void);
++
++int foo (int x1, int x2, int x3, int x4, int x5, int x6, int x7)
++{
++ return x7;
++}
++
++int main (void)
++{
++ if (foo (100, 200, 300, 400, 500, 600, 700) != 700)
++ abort ();
++
++ return 0;
++}
+Index: gcc/testsuite/gcc.target/aarch64/pr78255.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 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcmodel=tiny" } */
++
++extern int bar (void *);
++
++int
++foo (void)
++{
++ return bar ((void *)bar);
++}
++
++/* { dg-final { scan-assembler "b\\s+bar" } } */
+Index: gcc/testsuite/gcc.target/aarch64/eh_return.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);
++
++void
++eh0 (void *p)
++{
++ val = (int)(long)p & 7;
++ if (val)
++ abort ();
++}
++
++void
++eh1 (void *p, int x)
++{
++ void *q = __builtin_alloca (x);
++ eh0 (q);
++ __builtin_eh_return (0, p);
++}
++
++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;
++}
++
++void
++eh2 (void *p)
++{
++ eh2a (val, val, val, val, val, val, val, val, p);
++ __builtin_eh_return (0, p);
++}
++
++
++void
++continuation (void)
++{
++ test++;
++ main ();
++}
++
++void
++fail (void)
++{
++ failed = 1;
++ printf ("failed\n");
++ continuation ();
++}
++
++void
++do_test1 (void)
++{
++ if (!val)
++ eh1 (continuation, 100);
++ fail ();
++}
++
++void
++do_test2 (void)
++{
++ if (!val)
++ eh2 (continuation);
++ fail ();
++}
++
++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
+===================================================================
+--- 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 */
++/* { dg-do compile } */
++/* { dg-options "-mno-avx512vl -mavx512bw -O2" } */
++
++#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
++
++void
++bar (char __attribute__ ((__vector_size__(32))) *x, char __attribute__ ((__vector_size__(32))) *y, int z)
++{
++ __builtin_ia32_storedquqi256_mask (x, *y, z); /* { dg-error "needs isa option" } */
++}
+Index: gcc/testsuite/gcc.target/i386/pr49095.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 } } */
+
+ void foo (void *);
+
+@@ -70,5 +70,4 @@
+ G (int)
+ G (long)
+
+-/* 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" } */
++
++#pragma GCC push_options
++#pragma GCC target ("lwp")
++void
++foo (unsigned long x, unsigned int y)
++{
++ __builtin_ia32_lwpval64 (x, y, 1);
++}
++#pragma GCC pop_options
++
++void
++bar (unsigned long x, unsigned int y)
++{
++ __builtin_ia32_lwpval64 (x, y, 1); /* { dg-error "needs isa option" } */
++}
+Index: gcc/testsuite/gcc.target/i386/pr80262.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/pr79932-1.c (.../tags/gcc_6_3_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr79932-1.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,19 @@
++/* PR target/79932 */
++/* { dg-do compile } */
++/* { dg-options "-O0 -mavx512bw" } */
++
++#include <x86intrin.h>
++
++__m512i a, b, c, d, e, f, g, h, i;
++__mmask32 m;
++
++void
++foo (void)
++{
++ 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 */
++/* { dg-do compile } */
++/* { dg-options "-mno-sahf -mno-mmx -mno-sse" } */
++/* { dg-additional-options "-march=i386" { target ia32 } } */
++
++#pragma GCC push_options
++#pragma GCC target ("sse")
++void
++foo (void)
++{
++ __builtin_ia32_pause ();
++}
++#pragma GCC pop_options
++
++void
++bar (void)
++{
++ __builtin_ia32_pause ();
++}
+Index: gcc/testsuite/gcc.target/i386/pr79514.c
+===================================================================
+--- 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" } */
++
++extern void bar (long double);
++
++extern long double x;
++
++void foo (void)
++{
++ bar (x);
++}
+Index: gcc/testsuite/gcc.target/i386/pr79932-2.c
+===================================================================
+--- 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>
++
++__m256i a, b;
++__m128i c, d;
++__mmask32 e, f[64];
++
++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
+===================================================================
+--- 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" } */
++
++#include "avx-check.h"
++#include <immintrin.h>
++
++__m256i m;
++
++__attribute__((noinline, noclone)) __m128i
++foo (__m128i x)
++{
++ int s = _mm_cvtsi128_si32 (_mm256_castsi256_si128 (m));
++ return _mm_srli_epi16 (x, s);
++}
++
++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 } */
++
++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" } */
++
++typedef unsigned short __mmask16;
++
++extern __inline int
++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
++_mm512_kortestc (__mmask16 __A, __mmask16 __B)
++{
++ return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
++ (__mmask16) __B);
++}
++
++void
++avx512f_test ()
++{
++ volatile __mmask16 k1 = 0;
++ __mmask16 k2 = 0;
++ volatile short r;
++
++ r = _mm512_kortestc (k1, k2);
++}
+Index: gcc/testsuite/gcc.target/i386/pr79559.c
+===================================================================
+--- 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/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" } */
++
++unsigned int
++foo (const unsigned long long x)
++{
++ if (x < 0)
++ return 0;
++ else if ( x > ~0U)
++ return ~0U;
++ else
++ return (unsigned int) x;
++}
++
++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" } */
++
++typedef char v16qi __attribute__ ((vector_size (16)));
++
++extern v16qi b, c;
++
++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" } */
++
++typedef double __v2df __attribute__ ((__vector_size__ (16)));
++typedef double __v4df __attribute__ ((__vector_size__ (32)));
++
++__v2df
++foo (__v4df x)
++{
++ return __builtin_ia32_pd_pd256 (x);
++}
+Index: gcc/testsuite/gcc.target/i386/pr65044.c
+===================================================================
+--- 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/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>
++
++int i;
+Index: gcc/testsuite/gcc.target/i386/pr79495.c
+===================================================================
+--- 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)
+@@ -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
+===================================================================
+--- 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 } } */
++
++__attribute__((target_clones("avx","arch=slm","arch=core-avx2","default")))
++int
++foo ()
++{
++ return -2;
++}
++
++int
++bar ()
++{
++ return 2;
++}
++
++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" } */
++
++#include <mm3dnow.h>
++
++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 } */
++
++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" } */
++
++typedef unsigned U __attribute__ ((vector_size (64)));
++typedef unsigned __int128 V __attribute__ ((vector_size (64)));
++
++static inline V
++bar (U u, U x, V v)
++{
++ v = (V)(U) { 0, ~0 };
++ v[x[0]] <<= u[-63];
++ return v;
++}
++
++V
++foo (U u)
++{
++ return bar (u, (U) {}, (V) {});
++}
+Index: gcc/testsuite/gcc.target/i386/mpx/pr79753.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" } */
++
++int
++foo (void)
++{
++ return 0;
++}
++
++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" } */
++
++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" } */
++
++typedef struct { int _mp_size; } mpz_t[1];
++int a, b;
++void fn1()
++{
++ 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++;
++ }
++}
+Index: gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
+===================================================================
+--- 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 "
++end
++
++module cgca_m3clvg
++ interface
++ subroutine cgca_clvgs_abstract(message)
++ character (7), intent(inout) :: message
++ end subroutine cgca_clvgs_abstract
++ end interface
++
++ interface
++ module subroutine cgca_clvgp(sub)
++ procedure( cgca_clvgs_abstract ) :: sub
++ end subroutine cgca_clvgp
++ end interface
++
++ character (7) :: greeting
++end module cgca_m3clvg
++
++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 }
++
++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 }
++
++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" }
++
++! Check that pr70696 is really fixed.
++
++ use iso_fortran_env
++ type(event_type) :: x[*]
++
++ ! 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 }
++!
++! Test the fix for PR78474.
++!
++! Contributed by Nicholas Brearly <nick.brealey@cobham.com>
++!
++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
++
++submodule (mtop) submod
++ implicit none
++ real :: s
++contains
++ module subroutine sub1
++ r = 0.0
++ end subroutine sub1
++end
++
++submodule (mtop:submod) subsubmod
++contains
++ module subroutine sub2
++ r = 1.0
++ s = 1.0
++ end subroutine sub2
++end
++
++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
++
++ 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
++
++
++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>
++
++program main_ut
++
++ implicit none
++
++ type :: prt_spec_expr_t
++ end type
++
++ type :: prt_expr_t
++ class(prt_spec_expr_t), allocatable :: x
++ end type
++
++ type, extends (prt_spec_expr_t) :: prt_spec_list_t
++ type(prt_expr_t) :: e
++ end type
++
++ class(prt_spec_list_t), allocatable :: y
++
++ allocate (y)
++ allocate (prt_spec_list_t :: y%e%x)
++ deallocate(y)
++
++end program
+Index: gcc/testsuite/gfortran.dg/submodule_25.f08
+===================================================================
+--- 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 @@
++! { 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'.
++!
++! Contributed by Reinhold Bader <Bader@lrz.de>
++!
++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
++ 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)
+@@ -0,0 +1,6 @@
++! { dg-do compile }
++! { dg-options "-fimplicit-none" }
++! PR fortran/78239 - used to ICE
++program p
++ character(*), parameter :: z(2) = [character(n) :: 'x', 'y'] ! { dg-error "Scalar INTEGER expression expected" }
++end
+Index: gcc/testsuite/gfortran.dg/proc_ptr_comp_49.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 @@
++! { 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>
++
++module mwe
++
++ implicit none
++
++ type :: MyType
++ procedure(my_op), nopass, pointer :: op
++ end type
++
++contains
++
++ function my_op() result(foo)
++ class(MyType), allocatable :: foo
++ end function
++
++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" }
++
++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
+===================================================================
+--- 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 @@
++! { 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" }
++end
+Index: gcc/testsuite/gfortran.dg/submodule_28.f08
+===================================================================
+--- 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 }
++!
++! Tests the fix for PR79676 in which submod_test was private even to the
++! submodule 'my_submod'.
++!
++! Contributed by Adam Hirst <adam@aphirst.karoo.co.uk>
++!
++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 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
+===================================================================
+--- 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 @@
++! { dg-do run }
++!
++! 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 }
++!
++! 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;
++}
++
++__attribute__ ((noinline, noclone)) long long f4 (int x)
++{
++ return ((long long) x) << 4;
++}
++
++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> */
++
++#define INT_MAX 0x7fffffff
++#define INT_MIN (-INT_MAX-1)
++
++int x;
++
++int main (void)
++{
++ volatile int a = 0;
++ volatile int b = -INT_MAX;
++ int j;
++
++ for(j = 0; j < 18; j += 1) {
++ x = ( (a == 0) != (b - (int)(INT_MIN) ) );
++ }
++
++ if (x != 0)
++ __builtin_abort ();
++
++ return 0;
++}
++
+Index: gcc/testsuite/gcc.c-torture/execute/pr80501.c
+===================================================================
+--- 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;
++}
++
++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 */
++
++int val;
++
++int *ptr = &val;
++float *ptr2 = &val;
++
++static
++__attribute__((always_inline, optimize ("-fno-strict-aliasing")))
++typepun ()
++{
++ *ptr2=0;
++}
++
++main()
++{
++ *ptr=1;
++ typepun ();
++ if (*ptr)
++ __builtin_abort ();
++}
+Index: gcc/testsuite/gcc.c-torture/execute/pr77767.c
+===================================================================
+--- 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 ();
++}
++
++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;
++
++int fn1() {
++ return a || 1 >> a;
++}
++
++int fn2(int p1, int p2) {
++ return p2 >= 2 ? p1 : p1 >> 1;
++}
++
++int fn3(int p1) {
++ return d ^ p1;
++}
++
++int fn4(int p1, int p2) {
++ return fn3(!d > fn2((f = fn1() - 1000) || p2, p1));
++}
++
++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 */
++
++unsigned long b;
++
++unsigned long
++foo (float *a, float *x)
++{
++ __builtin_memcpy (a, x, sizeof (float));
++ return *a;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr79411.c
+===================================================================
+--- 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/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" }
++
++with Array28_Pkg; use Array28_Pkg;
++
++procedure Array28 is
++
++ function Get return Outer_type is
++ Ret : Outer_Type;
++ begin
++ Ret (Inner_Type'Range) := F;
++ return Ret;
++ end;
++
++ A : Outer_Type := Get;
++ B : Inner_Type := A (Inner_Type'Range);
++
++begin
++ if B /= "12345" then
++ raise Program_Error;
++ end if;
++end;
+Index: gcc/testsuite/gnat.dg/opt63.adb
+===================================================================
+--- 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" }
++
++procedure Opt63 is
++
++ 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;
++
++ 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
+===================================================================
+--- 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
++
++ function F return Inner_Type is
++ begin
++ return "123";
++ end;
++
++end Array26_Pkg;
+Index: gcc/testsuite/gnat.dg/array26_pkg.ads
+===================================================================
+--- 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/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/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);
++
++ function F return Inner_Type;
++
++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" }
++
++with Array26_Pkg; use Array26_Pkg;
++
++procedure Array26 is
++
++ function Get return Outer_type is
++ Ret : Outer_Type;
++ begin
++ Ret (Inner_Type'Range) := F;
++ return Ret;
++ end;
++
++ A : Outer_Type := Get;
++ B : Inner_Type := A (Inner_Type'Range);
++
++begin
++ if B /= "123" then
++ raise Program_Error;
++ end if;
++end;
+Index: gcc/testsuite/gnat.dg/array27.adb
+===================================================================
+--- 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" }
++
++with Array27_Pkg; use Array27_Pkg;
++
++procedure Array27 is
++
++ function Get return Outer_type is
++ Ret : Outer_Type;
++ begin
++ Ret (Inner_Type'Range) := F;
++ return Ret;
++ end;
++
++ A : Outer_Type := Get;
++ B : Inner_Type := A (Inner_Type'Range);
++
++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
++
++ function F return Inner_Type is
++ begin
++ return "12345";
++ end;
++
++end Array28_Pkg;
+Index: gcc/testsuite/gnat.dg/array28_pkg.ads
+===================================================================
+--- 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
++
++ subtype Outer_Type is String (1 .. 8);
++ subtype Inner_Type is String (1 .. 5);
++
++ function F return Inner_Type;
++
++end Array28_Pkg;
+Index: gcc/testsuite/gcc.dg/vector-1.c
+===================================================================
+--- 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" } */
++
++typedef int V __attribute__ ((vector_size(4)));
++void fn1 ()
++{
++ (V){(1,0)}[0] = 0;
++}
+Index: gcc/testsuite/gcc.dg/pr80218.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>
++
++void foo (float *);
++
++void
++f1 (float *x)
++{
++ x[0] = sqrtf (x[0]);
++}
++
++void
++f2 (float *x)
++{
++ sqrtf (x[0]);
++ foo (x);
++}
++
++void
++f3 (float *x)
++{
++ acosf (x[0]);
++ foo (x);
++}
++
++/* { 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)
++{
++#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 ();
++ }
++}
++
++/* { 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
+===================================================================
+--- 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)));
++
++V x4;
++
++static V
++bar (u128 x2, u128 x3)
++{
++ while (x4[0]--)
++ x2 /= x3 >>= 1;
++ return x2 + x3 + x4;
++}
++
++void
++foo (void)
++{
++ bar (0, 0);
++}
+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)
++{
++ volatile int b;
++ for (;; b)
++ ;
++}
+Index: gcc/testsuite/gcc.dg/debug/pr80321.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" } */
++
++void bar (void);
++
++static inline void
++test (int x)
++{
++ inline void
++ foo (int x)
++ {
++ test (0);
++ asm volatile ("" : : : "memory");
++ }
++ if (x != 0)
++ foo (x);
++ else
++ bar ();
++}
++
++void
++baz (int x)
++{
++ test (x);
++}
+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)
++{
++ __label__ lab;
++ __attribute__((noinline, noclone)) void bar (int b)
++ {
++ switch (b)
++ {
++ case 1:
++ goto lab;
++ case 2:
++ goto lab;
++ }
++ }
++ bar (a);
++lab:;
++}
+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)
++{
++ int b = (1 / a >= 1);
++ return b;
++}
+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;
++
++int
++foo (void)
++{
++ struct S { int c[a]; int q : 8; int e : 4; } f;
++ f.e = 4;
++ return f.e;
++}
+Index: gcc/testsuite/gcc.dg/pr79255.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);
++
++int
++baz (void)
++{
++ return foo (3) + foo (6) + foo (9);
++}
++
++static inline __attribute__((always_inline)) int
++foo (int x)
++{
++ auto inline int __attribute__((noinline)) bar (int x)
++ {
++ return x + 3;
++ }
++ return bar (x) + bar (x + 2);
++}
+Index: gcc/testsuite/gcc.dg/fixed-point/pr79971.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" } */
++
++void
++a ()
++{
++ 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);
++}
+Index: gcc/testsuite/gcc.dg/graphite/pr80167.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" } */
++
++typedef struct
++{
++ short a;
++ short b;
++ short c;
++} d;
++extern d e[];
++int f[8];
++void
++g (d *i)
++{
++ 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;
++}
+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
++{
++ int bz;
++} od, ka[2];
++
++int fw;
++
++void
++pc (void)
++{
++ for (od.bz = 0; od.bz < 2; ++od.bz)
++ {
++ ++fw;
++ ka[0] = ka[1];
++ }
++}
+Index: gcc/testsuite/gcc.dg/graphite/pr71824.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" } */
++
++int uo[3];
++int di;
++
++void
++i7 (int mp)
++{
++ int l4;
++
++wh:
++ while (l4 > 1)
++ {
++ for (di = 0; di < 2; ++di)
++ uo[di] = 0;
++
++ for (di = 0; di < 3; ++di)
++ {
++ uo[di] = 0;
++ if (mp != 0)
++ goto wh;
++ }
++
++ --l4;
++ }
++}
+Index: gcc/testsuite/gcc.dg/pr78644-2.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)));
++
++U
++bar4 (U u0, U u1)
++{
++ if (u1[0])
++ u1 <<= 1;
++ return u0 + u1;
++}
++
++V
++foo (U u, V v)
++{
++ v |= (unsigned)bar4(u, (U){})[0];
++ return v;
++}
+Index: gcc/testsuite/gcc.dg/comp-goto-4.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 */
++/* { dg-do compile } */
++/* { dg-options "" } */
++/* { dg-require-effective-target indirect_jumps } */
++/* { dg-require-effective-target label_values } */
++
++void
++f (void)
++{
++L:
++ *&&L;
++}
++
++void
++f2 (void)
++{
++ void *p;
++L:
++ p = &&L;
++ *p; /* { dg-warning "dereferencing 'void \\*' pointer" } */
++}
+Index: gcc/testsuite/gcc.dg/lto/pr69188_0.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 } } } */
++/* { dg-require-profiling "-fprofile-generate" } */
++
++void fn1(void)
++{
++}
+Index: gcc/testsuite/gcc.dg/lto/pr50199_0.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;
++}
++
++int
++main ()
++{
++ const char *a = "ab";
++ if (a != foo (a))
++ __builtin_abort ();
++ 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 main() {
++ fn1();
++ return 0;
++}
++
+Index: gcc/testsuite/gcc.dg/pr79574-2.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];
++
++int rd (int *pppp, int n, ...)
++{
++ 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;
++}
++
++int mpx_test (int argc, const char **argv)
++{
++ rd (buf1, 2, 10.0d, 10.0d, buf, 100, buf1);
++ return 0;
++}
+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)
++{
++ if ((x + (x - y) * 1i) != -(-x + (y - x) * 1i))
++ return 1;
++ return 0;
++}
+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()
++{
++ union U u;
++ u.i = 10;
++ u.b = 0;
++ foo (&u);
++ return 0;
++}
+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
++{
++ unsigned a:6;
++} b;
++
++int c, e, g = 7;
++signed char d, f = 6, h = -10;
++
++void fn1 ()
++{
++ 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;
++ }
++}
++
++int main ()
++{
++ fn1 ();
++ return 0;
++}
+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)
++{
++}
++
++void
++it (int dl)
++{
++ int vp = 0;
++
++ for (;;)
++ {
++ dl = vp ^ nr ();
++ dl ^= vp;
++ vp = 1;
++ }
++}
+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()
++{
++ signed char var_0, var_1 = -128;
++ var_0 = (signed char)(-var_1) / 3;
++ if (var_0 > 0)
++ __builtin_abort();
++}
+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, ...)
++{
++ char s[256];
++ int nArgs = __builtin_va_arg_pack_len();
++ if (nArgs != 2)
++ __builtin_abort ();
++ __builtin_sprintf (s, "%d", __builtin_va_arg_pack ());
++ if (__builtin_strcmp (s, "99") != 0)
++ __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)
++ __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)
++ __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
+===================================================================
+--- 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)
+@@ -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;
++
++long int
++foo (void)
++{
++}
++
++void
++bar (int x, short int y, unsigned short int z)
++{
++}
++
++int
++baz (void)
++{
++ a -= b;
++ b = !foo ();
++ bar (b ^= (c ^ 1) ? (c ^ 1) : foo (), (__INTPTR_TYPE__) &bar, a);
++}
+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
+===================================================================
+--- 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 @@
++/* { 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);
++
++jmp_buf buf;
++
++void raise0(void)
++{
++ __builtin_longjmp (buf, 1);
++}
++
++int execute(int cmd) /* { dg-warning "'l1-cache-size' parameter is not a power of two 3" } */
++{
++ int last = 0;
++
++ if (__builtin_setjmp (buf) == 0)
++ while (1)
++ {
++ last = 1;
++ raise0 ();
++ }
++
++ if (last == 0)
++ return 0;
++ else
++ return cmd;
++}
++
++int execute2(int cmd, int cmd2)
++{
++ int last = 0;
++
++ if (__builtin_setjmp (buf) == 0)
++ while (1)
++ {
++ last = 1;
++ raise0 ();
++ }
++
++ if (last == 0)
++ return 0;
++ else
++ return cmd;
++}
++
++
++int main(void)
++{
++ if (execute (1) == 0)
++ abort ();
++
++ if (execute2 (1, 2) == 0)
++ abort ();
++
++ return 0;
++}
+Index: gcc/testsuite/gcc.dg/tree-ssa/pr78428.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" } */
++/* { dg-do run } */
++
++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 } };
++
++int main ()
++{
++ volatile struct S0 *j;
++ for (; a;)
++ {
++ __builtin_printf ("", b.f2);
++ j = &b;
++ *j = global[1];
++ a--;
++ }
++ 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
+===================================================================
+--- 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 @@
++/* { dg-do compile } */
++/* { dg-options "-w -O2 -fdump-tree-optimized" } */
++
++static __inline__ __attribute__((__always_inline__))
++void syscall_7 (int val)
++{
++ register int reg __asm ("4") = val;
++ __asm __volatile__ ("/* Some Code %0 */" :: "r" (reg));
++}
++
++void do_syscalls (void)
++{
++ for (int s = 0; s < 2; s++)
++ {
++ syscall_7 (0);
++ syscall_7 (1);
++ }
++}
++
++/* { dg-final { scan-tree-dump-times "reg = " 4 "optimized" } } */
+Index: gcc/testsuite/gcc.dg/tree-prof/pr66295.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-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/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 */
++/* { dg-do compile } */
++/* { dg-options "-Os -fmodulo-sched" } */
++
++void **a;
++
++void
++foo (int c)
++{
++ void *d[] = {&&e, &&f};
++ a = d;
++ switch (c)
++ {
++ f:
++ c = 9;
++ /* FALLTHRU */
++ case 9:
++ goto *a++;
++ e:;
++ }
++}
+Index: gcc/testsuite/gcc.dg/pr80286.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 */
++/* { dg-do run } */
++/* { dg-options "-O2 -Wno-psabi" } */
++
++typedef int V __attribute__((vector_size (4 * sizeof (int))));
++
++__attribute__((noinline, noclone)) V
++foo (V x, V y)
++{
++ return x << y[0];
++}
++
++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)))
++ __builtin_abort ();
++ 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>
++
++ PR middle-end/71310
++ * gcc.target/powerpc/pr71310.c: New testcase.
++
++2017-05-05 Jakub Jelinek <jakub@redhat.com>
++
++ 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>
++
++ PR c/80097
++ * gcc.dg/ubsan/pr80097.c: New test.
++
++ 2017-03-10 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/79896
++ * g++.dg/ext/int128-5.C: New test.
++
++ 2017-03-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR sanitizer/79944
++ * c-c++-common/asan/pr79944.c: New test.
++
++ PR target/79932
++ * gcc.target/i386/pr79932-2.c: New test.
++
++ PR target/79932
++ * gcc.target/i386/pr79932-1.c: New test.
++
++ 2017-03-07 Jakub Jelinek <jakub@redhat.com>
++
++ 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>
++
++ Backport from mainline
++ 2017-03-30 Martin Jambor <mjambor@suse.cz>
++
++ PR ipa/77333
++ * g++.dg/ipa/pr77333.C: New test.
++
++2017-04-06 Uros Bizjak <ubizjak@gmail.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>
++
++ PR target/80298
++ * gcc.target/i386/pr80298-1.c: New test.
++ * gcc.target/i386/pr80298-2.c: Ditto.
++
++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>
++
++ 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.
++
++ PR target/80246
++ * gcc.target/powerpc/pr80246.c: Require hard_dfp.
++
++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>
++
++ Backport from mainline
++ 2017-03-30 Peter Bergner <bergner@vnet.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.
++
++2017-03-29 Michael Meissner <meissner@linux.vnet.ibm.com>
++
++ Back port from trunk
++ 2017-03-16 Michael Meissner <meissner@linux.vnet.ibm.com>
++
++ PR target/71294
++ * g++.dg/pr71294.C: New test.
++
++2017-03-29 Richard Biener <rguenther@suse.de>
++
++ 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>
++
++ PR tree-optimization/80181
++ * gcc.dg/torture/pr80181.c: New testcase.
++
++2017-03-28 Marek Polacek <polacek@redhat.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>
++
++ PR target/78543
++ * gcc.target/powerpc/pr78543.c: New test.
++
++2017-03-27 Tom de Vries <tom@codesourcery.com>
++
++ backport from trunk:
++ 2017-03-24 Tom de Vries <tom@codesourcery.com>
++
++ PR testsuite/80092
++ * gcc.dg/tls/emutls-2.c: Add dg-require-effective-target
++ global_constructor.
++
++2017-03-26 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.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-16 Segher Boessenkool <segher@kernel.crashing.org>
++
++ * 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>
++
++ PR lto/66295
++ * gcc.dg/tree-prof/pr66295.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-02-22 Martin Liska <mliska@suse.cz>
++
++ PR lto/79587
++ * gcc.dg/tree-prof/pr79587.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ 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>
++
++ Backport from mainline
++ 2017-03-22 Martin Liska <mliska@suse.cz>
++
++ PR target/79906
++ * g++.dg/ext/mv8.C: Add power* targets.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-21 Martin Liska <mliska@suse.cz>
++
++ * gcc.target/i386/pr65044.c: Add '.' in order to catch
++ apostrophes.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-20 Martin Liska <mliska@suse.cz>
++
++ PR middle-end/79753
++ * gcc.target/i386/mpx/pr79753.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-20 Martin Liska <mliska@suse.cz>
++
++ PR target/79769
++ PR target/79770
++ * g++.dg/pr79769.C: New test.
++ * gcc.target/i386/mpx/pr79770.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-13 Martin Liska <mliska@suse.cz>
++
++ PR middle-end/78339
++ * gcc.target/i386/mpx/pr78339.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-09 Martin Liska <mliska@suse.cz>
++
++ PR tree-optimization/79631
++ * gcc.target/i386/mpx/pr79631.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-09 Martin Liska <mliska@suse.cz>
++
++ PR target/65705
++ PR target/69804
++ * gcc.target/i386/pr71458.c: Update scanned pattern.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-09 Martin Liska <mliska@suse.cz>
++
++ PR ipa/79761
++ * g++.dg/pr79761.C: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-03 Martin Liska <mliska@suse.cz>
++
++ PR tree-optimization/79803
++ * gcc.dg/tree-ssa/pr79803.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-03-03 Martin Liska <mliska@suse.cz>
++
++ PR rtl-optimization/79574
++ * gcc.dg/pr79574-2.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-02-17 Martin Liska <mliska@suse.cz>
++
++ PR rtl-optimization/79574
++ * gcc.dg/pr79574.c: New test.
++
++2017-03-22 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-06-13 Martin Liska <mliska@suse.cz>
++
++ PR sanitizer/71458
++ * gcc.target/i386/pr71458.c: New test.
++
++2017-03-21 Martin Sebor <msebor@redhat.com>
++
++ PR c++/79548
++ * g++.dg/warn/Wunused-var-26.C: New test.
++
++2017-03-21 Pat Haugen <pthaugen@us.ibm.com>
++
++ Backport from mainline:
++ 2017-03-17 Pat Haugen <pthaugen@us.ibm.com>
++
++ PR target/79951
++ * gcc.target/powerpc/pr79951.c: New.
++
++2017-03-16 Richard Biener <rguenther@suse.de>
++
++ Backport from mainline
++ 2017-02-28 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/79732
++ * gcc.dg/torture/pr79732.c: New testcase.
++
++2017-03-15 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/80019
++ * gcc.target/i386/pr80019.c: New test.
++
++2017-03-15 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2016-12-14 Marek Polacek <polacek@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.
++
++2017-03-14 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2017-03-09 Marek Polacek <polacek@redhat.com>
++
++ PR c++/79900 - ICE in strip_typedefs
++ * g++.dg/warn/Wpadded-1.C: New test.
++
++ PR c++/79687
++ * g++.dg/expr/ptrmem8.C: New test.
++ * g++.dg/expr/ptrmem9.C: New test.
++
++ Backported from mainline
++ 2017-01-31 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/79264
++ * g++.dg/cpp1y/pr61636-1.C: Augment.
++
++ Backported from mainline
++ 2017-01-17 Nathan Sidwell <nathan@acm.org>
++
++ 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>
++
++ 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>
++
++ PR c++/79796 - ICE with NSDMI and this pointer
++ * g++.dg/cpp0x/nsdmi13.C: New test.
++
++2017-03-06 Michael Meissner <meissner@linux.vnet.ibm.com>
++
++ Back port from trunk
++ 2017-03-01 Michael Meissner <meissner@linux.vnet.ibm.com>
++
++ PR target/79439
++ * gcc.target/powerpc/pr79439.c: New test.
++
++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>
++
++ * gcc.target/powerpc/pr79544.c: Add test for vec_vsrad and fix up
++ scan string.
++
++ 2017-02-27 Pat Haugen <pthaugen@us.ibm.com>
++
++ PR target/79544
++ * gcc.target/powerpc/pr79544.c: New.
++
++2017-02-28 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc.target/sparc/20170228-1.c: New test.
++
++2017-02-25 Paul Thomas <pault@gcc.gnu.org>
++
++ PR fortran/78474
++ * gfortran.dg/submodule_22.f08: New test.
++
++ PR fortran/78331
++ * gfortran.dg/submodule_21.f08: New test.
++
++2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gnat.dg/opt63.adb: New test.
++
++2017-02-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ PR target/79268
++ * gcc.target/powerpc/pr79268.c: Enable for BE targets also.
++
++2017-02-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-02-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ PR target/79261
++ * gcc.target/powerpc/vec-xxpermdi.c: New file.
++
++2017-02-20 Marek Polacek <polacek@redhat.com>
++
++ Backport from mainline
++ 2017-02-20 Marek Polacek <polacek@redhat.com>
++
++ PR middle-end/79537
++ * gcc.dg/comp-goto-4.c: New.
++
++ PR sanitizer/79558
++ * c-c++-common/ubsan/bounds-14.c: New test.
++
++2017-02-20 Marek Polacek <polacek@redhat.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>
++
++ Backport from mainline commit r245460 on 2017-02-14
++
++ PR 79545
++ * gcc.target/powerpc/vsx-builtin-3.c: Add missing test case for the
++ xvcvsxdsp and xvcvuxdsp instructions.
++
++2017-02-16 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-02-09 Marek Polacek <polacek@redhat.com>
++
++ 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.
++
++2017-02-15 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-02-10 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/79411
++ * gcc.c-torture/compile/pr79411.c: New test.
++
++ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/79429
++ * c-c++-common/gomp/pr79429.c: New test.
++ * g++.dg/gomp/pr79429.C: New test.
++
++ PR c/79431
++ * c-c++-common/gomp/pr79431.c: New test.
++
++ 2017-02-06 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/79377
++ * g++.dg/lookup/pr79377.C: New test.
++
++ 2017-02-02 Jakub Jelinek <jakub@redhat.com>
++
++ PR target/79197
++ * gcc.target/powerpc/pr79197.c: New test.
++ * gcc.c-torture/compile/pr79197.c: New test.
++
++ 2017-01-31 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/79267
++ * g++.dg/opt/pr79267.C: New test.
++
++2017-02-14 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/79495
++ * gcc.target/i386/pr79495.c: New test.
++
++ 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.
++
++2017-02-13 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/79296
++ * g++.dg/cpp0x/pr79296.C: New.
++
++2017-02-08 Richard Biener <rguenther@suse.de>
++
++ Backport from mainline
++ 2017-02-08 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/71824
++ PR tree-optimization/79409
++ * gcc.dg/graphite/pr71824-3.c: New testcase.
++
++ 2017-02-08 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/71824
++ * gcc.dg/graphite/pr71824-2.c: New testcase.
++
++ 2017-02-01 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/71824
++ * gcc.dg/graphite/pr71824.c: New testcase.
++
++2017-02-03 Carl Love <cel@us.ibm.com>
++
++ * gcc.target/powerpc/builtins-3-p8.c: Add new testfile for missing
++ vec_packs built-in tests.
++
++2017-02-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-01-27 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ 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.
++
++2017-01-31 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-01-29 Bill Schmidt <wschmidt@linux.vnet.ibm.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.
++
++2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ Backport from trunk
++ 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ PR fortran/70697
++ * gfortran.dg/coarray/event_4.f08: New test.
++
++2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ Backport from trunk
++ 2017-01-19 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ PR fortran/70696
++ * gfortran.dg/coarray_43.f90: New test.
++
++ 2017-01-18 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ PR fortran/70696
++ * gfortran.dg/coarray_event_1.f08: New test.
++
++ 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ PR fortran/70696
++ * gfortran.dg/coarray/event_3.f08: New test.
++
++2017-01-28 John David Anglin <danglin@gcc.gnu.org>
++
++ PR testsuite/70583
++ * g++.old-deja/g++.abi/vtable2.C: Adjust CMP_VPTR define on hppa.
++
++2017-01-26 Eric Botcazou <ebotcazou@adacore.com>
++
++ 2017-01-09 Eric Botcazou <ebotcazou@adacore.com>
++
++ * 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.
++
++2017-01-26 Richard Biener <rguenther@suse.de>
++
++ Backport from mainline
++ 2016-01-10 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/79034
++ * g++.dg/torture/pr79034.C: New testcase.
++
++ 2016-12-13 Richard Biener <rguenther@suse.de>
++
++ PR middle-end/78742
++ * gcc.dg/torture/pr78742.c: New testcase.
++
++2017-01-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc.target/arm/vfp-longcall-apcs.c: New test.
++
++2017-01-23 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-01-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
++
++ * gcc.dg/lto/pr69188_0.c: Require profiling support for testcase.
++
++2017-01-23 Martin Liska <mliska@suse.cz>
++
++ 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>
++
++ Backport from mainline
++ 2017-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ * gcc.target/powerpc/swaps-p8-27.c: New.
++
++2017-01-20 Wilco Dijkstra <wdijkstr@arm.com>
++
++ Backport from mainline
++ PR target/77455
++ * gcc.target/aarch64/eh_return.c: New test.
++
++2017-01-20 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2017-01-04 Marek Polacek <polacek@redhat.com>
++
++ PR c++/77545
++ PR c++/77284
++ * g++.dg/cpp0x/range-for32.C: New test.
++ * g++.dg/cpp0x/range-for33.C: New test.
++
++2017-01-20 Richard Earnshaw <rearnsha@arm.com>
++
++ Backported from mainline
++ 2017-01-19 Richard Earnshaw <rearnsha@arm.com>
++
++ PR rtl-optimization/79121
++ * gcc.c-torture/execute/pr79121.c: New test.
++
++2017-01-20 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-01-13 Martin Liska <mliska@suse.cz>
++
++ PR ipa/79043
++ * gcc.c-torture/execute/pr79043.c: New test.
++
++2017-01-20 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2017-01-17 Martin Liska <mliska@suse.cz>
++
++ PR ipa/71207
++ * g++.dg/ipa/pr71207.C: New test.
++
++2017-01-17 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-01-11 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/78341
++ * g++.dg/cpp0x/pr78341.C: New test.
++
++ PR middle-end/50199
++ * gcc.dg/lto/pr50199_0.c: New test.
++
++ 2017-01-04 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/78949
++ * c-c++-common/Wunused-var-16.c: New test.
++
++ PR c++/78693
++ * g++.dg/cpp0x/pr78693.C: New test.
++
++ PR c++/71182
++ * g++.dg/cpp0x/pr71182.C: New test.
++
++ 2016-12-21 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++2017-01-17 Thomas Preud'homme <thomas.preudhomme@arm.com>
++
++ Backport from mainline
++ 2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
++
++ PR rtl-optimization/78617
++ * gcc.c-torture/execute/pr78617.c: New test.
++
++2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2017-01-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
++
++ PR target/79044
++ * gcc.target/powerpc/swaps-p8-26.c: New.
++
++2017-01-11 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/77812
++ * g++.dg/pr77812.C: New.
++
++2017-01-10 Thomas Schwinge <thomas@codesourcery.com>
++
++ Backport from trunk r241334:
++ 2016-10-19 Thomas Schwinge <thomas@codesourcery.com>
++
++ PR tree-optimization/78024
++ * gcc.dg/goacc/loop-processing-1.c: New file.
++
++2017-01-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++
++ Backport from mainline
++ 2016-12-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
++
++ * gcc.target/arm/pr78255-2.c: Fix to work for targets
++ that do not optimize for tailcall.
++
++2017-01-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++
++ Backport from mainline
++ 2016-12-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
++
++ PR rtl-optimization/78255
++ * gcc.target/aarch64/pr78255.c: New.
++ * gcc.target/arm/pr78255-1.c: New.
++ * gcc.target/arm/pr78255-2.c: New.
++
++2017-01-06 Wilco Dijkstra <wdijkstr@arm.com>
++
++ Backport from mainline
++ 2016-10-25 Wilco Dijkstra <wdijkstr@arm.com>
++
++ PR target/78041
++ * gcc.target/arm/pr78041.c: New test.
++
++2017-01-05 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2016-12-22 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
++
++ * gcc.target/s390/litpool-str-1.c: New test.
++
++2017-01-04 Richard Biener <rguenther@suse.de>
++
++ Backport from mainline
++ 2016-05-11 Richard Biener <rguenther@suse.de>
++
++ PR tree-optimization/71055
++ * gcc.dg/torture/pr71055.c: New testcase.
++
++2017-01-03 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-12-21 Martin Liska <mliska@suse.cz>
++
++ PR driver/78863
++ * gcc.dg/spellcheck-options-13.c: New test.
++
++2017-01-03 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-12-22 Martin Liska <mliska@suse.cz>
++
++ PR tree-optimization/78886
++ * gcc.dg/tree-ssa/pr78886.c: New test.
++
++2017-01-03 Martin Liska <mliska@suse.cz>
++
++ Backport from mainline
++ 2016-12-13 Martin Liska <mliska@suse.cz>
++
++ PR tree-optimization/78428
++ * gcc.dg/tree-ssa/pr78428.c: New test.
++
++2016-12-22 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.
++
++2016-12-21 Jakub Jelinek <jakub@redhat.com>
++
++ PR c/77767
++ * gcc.c-torture/execute/pr77767.c: New test.
++
++ Backported from mainline
++ 2016-12-13 Jakub Jelinek <jakub@redhat.com>
++
++ PR ipa/77905
++ * g++.dg/ipa/pr77905.C: New test.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.0 released.
+@@ -46,8 +1114,8 @@
+ Backport from mainline
+ 2016-11-07 Bernd Schmidt <bschmidt@redhat.com>
+
+- PR rtl-optimization/77309
+- * gcc.dg/torture/pr77309.c: New test.
++ PR rtl-optimization/77309
++ * gcc.dg/torture/pr77309.c: New test.
+
+ 2016-12-12 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+@@ -456,7 +1524,7 @@
+ * g++.dg/torture/pr77822.C: New test.
+
+ 2016-11-20 Harald Anlauf <anlauf@gmx.de>
+-
++
+ PR fortran/69741
+ * gfortran.dg/forall_18.f90: New testcase.
+
+Index: gcc/testsuite/g++.dg/pr80222.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 = static_cast <C&> (b);
++}
++
++// { dg-final { scan-tree-dump "{ref-all}\\\)&b\];" "optimized" } } */
+Index: gcc/testsuite/g++.dg/opt/call3.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" }
++
++struct Foo
++{
++ Foo() : a(1), c('a') {}
++ short int a;
++ char c;
++};
++
++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)) {}
++};
++
++Foo F;
++
++int main (void)
++{
++ Bar B (F);
++
++ if (B.a != 1 || B.c != 'a')
++ __builtin_abort ();
++
++ return 0;
++}
+Index: gcc/testsuite/g++.dg/opt/pr80275.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" }
++
++#include <algorithm>
++
++int g()
++{
++ return 1234;
++}
++
++int f2()
++{
++ return std::min({1, g(), 4});
++}
++
++// { dg-final { scan-tree-dump "return 1;" "optimized" } }
+Index: gcc/testsuite/g++.dg/opt/pr79396.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 (); };
++
++float
++foo (float x)
++{
++ A a;
++ return __builtin_pow (x, 2) + 2;
++}
+Index: gcc/testsuite/g++.dg/opt/declone3.C
+===================================================================
+--- 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" }
++
++struct A {};
++struct Object {
++ virtual bool m_fn1();
++ virtual ~Object();
++};
++struct Item : Object, virtual A {
++ ~Item() {
++ [] {};
++ }
++ bool m_fn1();
++};
++bool Item::m_fn1() {}
+Index: gcc/testsuite/g++.dg/opt/pr80385.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
++// { 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;
++};
++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 ();
++}
++
++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 ()); }
++};
++
++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 @@
++// { dg-do run }
++// { dg-options "-O" }
++
++struct Foo
++{
++ Foo() : a(1), b(1), c('a') {}
++ int a;
++ int b;
++ char c;
++};
++
++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)) {}
++};
++
++Foo F;
++
++int main (void)
++{
++ 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);
++}
+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 ()
++{
++ (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)
++{
++ if (&iref)
++ __builtin_printf ("iref %d\n", iref);
++ else
++ __builtin_printf ("iref is NULL\n");
++}
++
++int
++main ()
++{
++ foo (*((int*) __null));
++}
+Index: gcc/testsuite/g++.dg/parse/ptrmem7.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 } }
++
++template <class T>
++void
++foo (T t)
++{
++ auto i = t, j = 1; // { dg-bogus "inconsistent deduction" }
++}
++
++template <class T>
++void
++bar (T t)
++{
++ auto i = 1, j = t, k = 2; // { dg-bogus "inconsistent deduction" }
++}
++
++template <class T, class U>
++void
++foo (T t, U u)
++{
++ auto i = t, j = u; // { dg-bogus "inconsistent deduction" }
++}
++
++void
++foo ()
++{
++ 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 } }
++
++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
+===================================================================
+--- 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)
+@@ -0,0 +1,13 @@
++// PR c++/79796
++// { dg-do compile { target c++11 } }
++
++struct A
++{
++ A* p = this;
++};
++
++void foo()
++{
++ A a;
++ a = A({});
++}
+Index: gcc/testsuite/g++.dg/cpp0x/range-for32.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)
+@@ -0,0 +1,16 @@
++// PR c++/77545
++// { dg-do compile { target c++11 } }
++// { dg-options "-Wno-pedantic" }
++
++template < typename T > struct A
++{
++ A ();
++ ~A ();
++ T t;
++};
++
++void f (A < int > a)
++{
++ for (auto x : (A<int>[]) { a })
++ ;
++}
+Index: gcc/testsuite/g++.dg/cpp0x/range-for34.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
++// { dg-do compile { target c++11 } }
++
++struct X {
++ struct Y { };
++
++ Y* begin();
++ Y* end();
++};
++
++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 } }
++
++// PR 79296 ICE mangling local class of localized instantiation
++
++struct X {
++ template <typename T> X (T const *) {
++ struct Z {};
++ }
++};
++
++void Baz ()
++{
++ struct Y { } y;
++
++ 0, X (&y);
++}
+Index: gcc/testsuite/g++.dg/cpp0x/pr80091.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 @@
++// { dg-do compile { target c++11 } }
++
++// PR 80091 ICE with member fn call from lambda in template
++
++struct A {
++ void m_fn1();
++};
++template <int> struct B : A {
++ void m_fn2() {
++ [&] { m_fn1(); };
++ }
++};
+Index: gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.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
++// { dg-do compile { target c++11 } }
++
++template <typename R, typename... Args>
++bool compare_functions(R(*funcA)(Args...), R(*funcB)(Args...), Args... args) {
++ return false;
++}
++
++int foo(int x) {
++ return x;
++}
++
++float foo(float x) {
++ return x;
++}
++
++int main() {
++ int a = 10;
++ compare_functions<int>(foo, foo, a);
++}
+Index: gcc/testsuite/g++.dg/cpp0x/range-for33.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>
++
++struct A
++{
++ ~A () {}
++};
++
++void foo (A & v)
++{
++ for (A a : { v }) {};
++}
+Index: gcc/testsuite/g++.dg/cpp0x/deleted13.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
++// { dg-do compile { target c++11 } }
++
++struct A
++{
++ template<typename> void foo();
++};
++
++struct B
++{
++ template<typename> friend void A::foo() = delete; // { dg-error "" }
++};
+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]);
++ }
++};
++
++void destruct(void *);
++
++class Container {
++
++ T Ts[1];
++
++public:
++ ~Container() {
++ destruct((void *)Ts);
++ }
++
++ T& operator[](int n) {
++ return Ts[0];
++ }
++};
++
++void fill(Container&);
++
++void doit()
++{
++ Container data;
++ float max = 10;
++
++ int i, j, k;
++
++ 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;
++ }
++ }
++ }
++}
+Index: gcc/testsuite/g++.dg/torture/pr80171.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 }
++
++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;
++};
++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
++main ()
++{
++ bool c = false;
++ const A x = c ? A {true, 1} : A {false, 0};
++ if (x.a)
++ __builtin_abort ();
++}
+Index: gcc/testsuite/g++.dg/torture/pr80334.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 }
++
++struct A { alignas(16) char c; };
++struct B { A unpacked; char d; } __attribute__((packed));
++
++char x;
++
++int
++main()
++{
++ 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;
++ }
++}
+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)
++{
++ 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;
++}
+Index: gcc/testsuite/g++.dg/torture/pr80297.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 }
++
++extern const unsigned long int b;
++extern const long long int c;
++
++int
++foo ()
++{
++ int a = 809 >> -(b & !c) + b - (long long)(b & !c);
++ return a;
++}
+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);
++}
++
++B::B() : A(1) {}
++
++C::C(int) : A(1) {}
+Index: gcc/testsuite/g++.dg/ipa/pr71207.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 */
++/* { dg-do run } */
++
++class Class1
++{
++public:
++ Class1() {};
++ virtual ~Class1() {};
++
++protected:
++ unsigned Field1;
++};
++
++class Class2 : public virtual Class1
++{
++};
++
++class Class3 : public virtual Class1
++{
++public:
++ virtual void Method1() = 0;
++
++ void Method2()
++ {
++ Method1();
++ }
++};
++
++class Class4 : public Class2, public virtual Class3
++{
++public:
++ Class4() {};
++ virtual void Method1() {};
++};
++
++int main()
++{
++ Class4 var1;
++ var1.Method2();
++
++ return 0;
++}
+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)
++{
++ global = i;
++ return i;
++}
++
++typedef int array[32];
++
++namespace {
++
++char buf[512];
++
++class A
++{
++public:
++ int field;
++ char *s;
++
++ A() : field(223344)
++ {
++ s = buf;
++ }
++
++ 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;
++ }
++
++ 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;
++ }
++};
++
++}
++
++int main (int argc, char **argv)
++{
++ A a;
++ int r = a.bar();
++ r = a.bar ();
++ if (a.field != 223344)
++ __builtin_abort ();
++ if (global != 20)
++ __builtin_abort ();
++
++ return r;
++}
+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) { }
++
++int main() {
++ f(2);
++ f(3l); // { dg-error "ambiguous" }
++}
+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
++{
++ 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); };
++
++ lam (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 ()
++{
++ A x[] = { 1 };
++ return x[0].i;
++}
++
++static_assert (foo(), "");
+Index: gcc/testsuite/g++.dg/cpp1y/constexpr-union1.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/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
++// { dg-do compile { target c++14 } }
++
++struct A
++{
++ void foo () {}
++ void bar () {}
++};
++typedef void (A::*T) ();
++
++constexpr T
++foo (T f)
++{
++ f = 0;
++ return f;
++}
++
++constexpr T
++bar (T f)
++{
++ 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) {}
++}
++
++int Check (bool expect, unsigned size)
++{
++ 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;
++}
++
++int main ()
++{
++ A a;
++
++ return a.b () ? 1 : 0;
++}
+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
++{
++ long long u;
++ A a[1];
++ B b[1];
++};
++
++constexpr bool
++foo ()
++{
++ 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;
++}
++
++constexpr bool
++bar ()
++{
++ 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;
++}
++
++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
++{
++ null_node(const null_node&);
++};
++
++extern null_node null;
++
++template <typename T>
++auto get() { return null; }
++
++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
+===================================================================
+--- 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" }
++}
+
+ constexpr void f4() {
+- throw;
+-}// { dg-error "not a constant-expression" }
++ throw; // { dg-error "not a constant-expression" }
++}
+
+ constexpr int fun(int n) {
+ switch (n) {
+Index: gcc/testsuite/g++.dg/cpp1y/pr61636-3.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
++// { 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.
++
++template <typename T> struct Base
++{
++ void Foo (int);
++};
++
++template <typename T> struct A : Base<T> {
++ void b ();
++};
++
++template <typename T> void A<T>::b() {
++
++ auto lam = [&](auto asdf) { Foo (asdf); }; // { dg-error "not declared" }
++
++ lam (T(0));
++}
++
++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()
++{
++ const int i = i;
++ foo([] (auto) { sizeof(i); });
++}
++
++void baz() { bar<1>(); }
+Index: gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.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" }
++};
++
++struct T {
++ 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
++{
++ static const double b;
++};
++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)
++{
++ if (*a < *b) // { dg-error "could not convert\[^#]*from" }
++ return 1;
++ return 0;
++}
+Index: gcc/testsuite/g++.dg/ext/flexary20.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 }
++
++struct S {
++ int i;
++ char a[] = "foo";
++ S () {} // { dg-error "member initializer for flexible array member" }
++};
++
++struct T { // { dg-error "member initializer for flexible array member" }
++ int i;
++ char a[] = "foo";
++};
++
++struct U {
++ int i;
++ char a[] = "foo";
++ U ();
++};
++
++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 <class T>
++struct X { // { dg-error "member initializer for flexible array member" }
++ int i;
++ T a[] = "foo";
++};
++
++void
++fn ()
++{
++ struct X<char> x;
++}
+Index: gcc/testsuite/g++.dg/ext/flexary12.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
++// { dg-do run }
++// { dg-options "-fpermissive" }
++
++struct A
++{
++ A () : a (0) {}
++ A& operator++ () { ++a; ++c; return *this; }
++ int a;
++ static int c;
++};
++
++int A::c = 0;
++
++template <typename>
++void
++foo (A& a)
++{
++ 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 ();
++}
++
++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 ();
++}
+Index: gcc/testsuite/g++.dg/expr/ptrmem9.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 }
++
++struct A
++{
++ char c;
++};
++
++int main()
++{
++ static char A::* p1 = &A::c;
++ char A::* const q1 = p1;
++
++ char A::* p2 = &A::c;
++ static char A::* const q2 = p2;
++
++ A a;
++ return (&(a.*q1) - &a.c) || (&(a.*q2) - &a.c);
++}
+Index: gcc/testsuite/g++.dg/expr/ptrmem8.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;
++};
++
++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
+===================================================================
+--- 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<0> v;
++
++template <int N>
++struct B
++{
++ typedef A<N> T;
++ int i, j;
++};
++
++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; };
++
++struct L { static double h; int i, j; };
++
++int
++fn1 (int a, B<0> b) // { dg-message "note: parameter passing for argument of type \[^\n\r]* will change in GCC 7\.1" }
++{
++ return a + b.i;
++}
++
++int
++fn2 (int a, B<1> b)
++{
++ return a + b.i;
++}
++
++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;
++}
++
++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;
++}
++
++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;
++}
++
++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;
++}
++
++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;
++}
++
++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;
++}
++
++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, ...)
++{
++ va_list ap;
++ va_start (ap, n);
++ int x = va_arg (ap, int);
++ va_end (ap);
++ return x;
++}
++
++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;
++}
++
++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;
++}
++
++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;
++}
++
++void
++test ()
++{
++ 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" }
++
++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;
++}
++
++constexpr int
++f2 ()
++{
++ int i = 0;
++#pragma omp parallel // { dg-error "is not a constant-expression" }
++ i = 5;
++ return 0;
++}
++
++constexpr int
++f3 ()
++{
++ int i = 0;
++#pragma omp task // { dg-error "is not a constant-expression" }
++ i = 5;
++ return 0;
++}
++
++constexpr int
++f4 ()
++{
++ int i = 0;
++#pragma omp for // { dg-error "is not a constant-expression" }
++ for (i = 0; i < 10; ++i)
++ ;
++ return 0;
++}
++
++constexpr int
++f5 ()
++{
++ int i = 0;
++#pragma omp taskloop // { dg-error "is not a constant-expression" }
++ for (i = 0; i < 10; ++i)
++ ;
++ return 0;
++}
++
++constexpr int
++f6 ()
++{
++ int i = 0;
++#pragma omp target teams // { dg-error "is not a constant-expression" }
++ i = 5;
++ return 0;
++}
++
++constexpr int
++f7 ()
++{
++ int i = 0;
++#pragma omp target data map(tofrom:i) // { dg-error "is not a constant-expression" }
++ i = 5;
++ return 0;
++}
++
++constexpr int
++f8 ()
++{
++ int i = 0;
++#pragma omp target // { dg-error "is not a constant-expression" }
++ i = 5;
++ return 0;
++}
++
++constexpr int
++f9 ()
++{
++ int i = 0;
++#pragma omp sections // { dg-error "is not a constant-expression" }
++ {
++#pragma omp section
++ i = 5;
++ }
++ return 0;
++}
++
++constexpr int
++f10 ()
++{
++ int i = 0;
++#pragma omp ordered // { dg-error "is not a constant-expression" }
++ i = 1;
++ return 0;
++}
++
++constexpr int
++f11 ()
++{
++ int i = 0;
++#pragma omp critical // { dg-error "is not a constant-expression" }
++ i = 1;
++ return 0;
++}
++
++constexpr int
++f12 ()
++{
++ int i = 0;
++#pragma omp single // { dg-error "is not a constant-expression" }
++ i = 1;
++ return 0;
++}
++
++constexpr int
++f13 ()
++{
++ int i = 0;
++#pragma omp master // { dg-error "is not a constant-expression" }
++ i = 1;
++ return 0;
++}
++
++constexpr int
++f14 ()
++{
++ int i = 0;
++#pragma omp taskgroup // { dg-error "is not a constant-expression" }
++ i = 1;
++ return 0;
++}
++
++constexpr int
++f15 ()
++{
++ int i = 0;
++#pragma omp target update to(i) // { dg-error "is not a constant-expression" }
++ i = 1;
++ return 0;
++}
++
++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;
++}
++
++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 }
++
++#pragma omp declare simd aligned (p : 2 && 2)
++template<int> void foo (int *p);
++
++#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
++
++#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 }
++
++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" } */
++
++struct Foo
++{
++ Foo() : a(1), b(1), c('a') {}
++ int a;
++ int b;
++ char c;
++};
++
++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)) {}
++};
++
++Foo F;
++
++int main (void)
++{
++ Bar B (F);
++
++ if (B.a != 1 || B.b != 1 || B.c != 'a')
++ __builtin_abort ();
++
++ return 0;
++}
+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
+===================================================================
+--- 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 }
++
++int main ()
++{
++ auto foo ();
++}
+Index: gcc/testsuite/g++.dg/warn/Wnonnull3.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; };
++
++void
++g ()
++{
++ f<S1>(0); // { dg-warning "null argument where non-null required" }
++ f<S2>(0); // { dg-warning "null argument where non-null required" }
++}
+Index: gcc/testsuite/g++.dg/warn/Wunused-var-26.C
+===================================================================
+--- 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
++// { dg-do compile }
++// { dg-options "-Wunused" }
++
++
++#define UNUSED __attribute__ ((unused))
++
++template <class T>
++void f_int ()
++{
++ T t; // { dg-warning "unused variable" }
++
++ typedef T U;
++ U u; // { dg-warning "unused variable" }
++}
++
++template void f_int<int>();
++
++
++template <class T>
++void f_intptr ()
++{
++ T *t = 0; // { dg-warning "unused variable" }
++
++ typedef T U;
++ U *u = 0; // { dg-warning "unused variable" }
++}
++
++template void f_intptr<int>();
++
++
++template <class T>
++void f_var_unused ()
++{
++ // The variable is marked unused.
++ T t UNUSED;
++
++ typedef T U;
++ U u UNUSED;
++}
++
++template void f_var_unused<int>();
++
++
++template <class T>
++void f_var_type_unused ()
++{
++ // 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" }
++}
++
++template void f_var_type_unused<int>();
++
++
++struct A { int i; };
++
++template <class T>
++void f_A ()
++{
++ T t; // { dg-warning "unused variable" }
++
++ typedef T U;
++ U u; // { dg-warning "unused variable" }
++}
++
++template void f_A<A>();
++
++
++template <class T>
++void f_A_unused ()
++{
++ T t UNUSED;
++
++ typedef T U;
++ U u UNUSED;
++}
++
++template void f_A_unused<A>();
++
++
++struct B { B (); };
++
++template <class T>
++void f_B ()
++{
++ T t;
++
++ typedef T U;
++ U u;
++}
++
++template void f_B<B>();
++
++
++struct NonTrivialDtor { ~NonTrivialDtor (); };
++
++template <class T>
++void f_with_NonTrivialDtor ()
++{
++ // Expect no warnings when instantiated on a type with a non-trivial
++ // destructor.
++ T t;
++
++ typedef T U;
++ U u;
++}
++
++template void f_with_NonTrivialDtor<NonTrivialDtor>();
++
++
++struct D { NonTrivialDtor b; };
++
++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;
++
++ typedef T U;
++ U u;
++}
++
++template void f_D<D>();
++
++
++struct UNUSED DeclaredUnused { };
++
++template <class T>
++void f_with_unused ()
++{
++ // Expect no warnings when instantiatiated on a type declared
++ // with attribute unused.
++ T t;
++
++ typedef T U;
++ U u;
++}
++
++template void f_with_unused<DeclaredUnused>();
+Index: gcc/testsuite/g++.dg/warn/Wpadded-1.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" }
++
++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
++
++struct C
++{
++ template< void(*F)()> void set_default() { }
++};
++
++
++template <class T> void random_positive()
++{
++}
++
++template<class T> void initialize(T& x)
++{
++ x.template set_default<random_positive<T> >();
++}
++
++int main ()
++{
++ C x;
++ initialize<C>(x);
++}
+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
++{
++ 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
++
++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; }
++
++int
++main ()
++{
++ A a = { 0 };
++ O<int> o;
++ if (o.foo (a) != 123)
++ __builtin_abort ();
++ signed char d = 2;
++ if ((b << d) != 123)
++ __builtin_abort ();
++}
+Index: gcc/testsuite/c-c++-common/ubsan/shift-10.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)
+@@ -0,0 +1,10 @@
++/* PR sanitizer/80067 */
++/* { dg-do compile } */
++/* { dg-options "-fsanitize=shift" } */
++
++extern signed char a;
++void
++foo ()
++{
++ 0 << ((647 > a) - 1);
++}
+Index: gcc/testsuite/c-c++-common/ubsan/bounds-14.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 */
++/* { dg-do compile } */
++/* { dg-options "-fsanitize=bounds" } */
++
++void
++fn1 (int n)
++{
++ int i, j;
++ int x[2][0];
++ for (i = 0; i < n; i++)
++ for (j = 0; j < n; j++)
++ x[i][j] = 5;
++}
+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 ()
++{
++ 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;
++}
+Index: gcc/testsuite/c-c++-common/Wunused-var-16.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)
+@@ -0,0 +1,15 @@
++/* PR c++/78949 */
++/* { dg-do compile } */
++/* { dg-options "-Wunused" } */
++
++typedef unsigned char V __attribute__((vector_size(16)));
++V v;
++
++void
++foo ()
++{
++ V y = {};
++ V x = {}; // { dg-bogus "set but not used" }
++ y &= ~x;
++ v = y;
++}
+Index: gcc/testsuite/c-c++-common/nonnull-3.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 */
++/* { dg-do compile } */
++/* { dg-options "-Wnonnull-compare" } */
++
++enum { r = 1 };
++
++__attribute__ ((nonnull (r))) int
++f (int *p)
++{
++ return p == 0; /* { dg-warning "nonnull argument 'p' compared to NULL" } */
++}
+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
++foo (void)
++{
++ #pragma omp target
++ #pragma omp teams
++ {
++ int i;
++ for (i = 0; i < 10; i++)
++ ;
++ }
++}
+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)
++{
++ int a;
++ #pragma omp declare target (a)
++}
+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 ()
++{
++#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" } */
+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;
+
+ 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);
++ }
+
+ 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 (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 @@
+
+ for (d = &BLOCK_VARS (block); *d; )
+ {
+- 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)
+ {
+ 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 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;
+ }
+- 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;
+
+ case TYPEID_EXPR:
+@@ -5295,6 +5335,7 @@
+ /* We can see these in statement-expressions. */
+ return true;
+
++ case CLEANUP_STMT:
+ case EMPTY_CLASS_EXPR:
+ return false;
+
+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;
+
+ 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
+===================================================================
+--- 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)))
++ {
++ 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));
++ }
+ 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))
+ {
+- 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 (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;
++ }
+ }
++
++ 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));
+- }
++
+ 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;
+
+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>
++
++ 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.
++
++ 2017-04-10 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++ 2017-03-31 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.
++
++ 2017-03-22 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.
++
++ 2017-03-10 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.
++
++ 2017-02-22 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.
++
++ 2017-02-21 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.
++
++ 2017-02-16 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/79512
++ * parser.c (cp_parser_omp_target): For -fopenmp-simd
++ ignore #pragma omp target even when not followed by identifier.
++
++2017-04-12 Jason Merrill <jason@redhat.com>
++
++ PR c++/80150 - ICE with overloaded variadic deduction.
++ * pt.c (try_one_overload): Remove asserts.
++
++ PR c++/77563 - missing ambiguous conversion error.
++ * call.c (convert_like_real): Use LOOKUP_IMPLICIT.
++
++ PR c++/79519 - ICE with deleted template friend.
++ * decl.c (grokdeclarator): Complain about misplaced function
++ definition using =, as well.
++
++ PR c++/79640 - infinite recursion with generic lambda.
++ * pt.c (tsubst_copy) [VAR_DECL]: Register the dummy instantiation
++ before substituting its initializer.
++
++ PR c++/80043 - ICE with -fpermissive
++ * typeck.c (convert_for_assignment): Handle instantiate_type
++ not giving an error.
++
++ 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++/79607 - ICE with T{} initializer
++ * decl.c (type_dependent_init_p): Check the type of a CONSTRUCTOR.
++
++ PR c++/79566 - elaborated-type-specifier in range for
++ * parser.c (cp_parser_simple_declaration): Fix check for type
++ definition.
++
++ 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.
++
++ 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++/79050 - ICE with undeduced auto and LTO
++ * decl.c (poplevel): Remove undeduced auto decls.
++
++ PR c++/79461 - ICE with lambda in constexpr constructor
++ * constexpr.c (build_data_member_initialization): Ignore
++ initialization of a local variable.
++
++2017-03-20 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/80091
++ * lambda.c (maybe_generic_this_capture): Capture when fn
++ is an identifier node.
++
++2017-03-15 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2016-12-14 Marek Polacek <polacek@redhat.com>
++
++ PR c++/72775
++ * init.c (perform_member_init): Diagnose member initializer for
++ flexible array member.
++
++2017-03-14 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2017-03-09 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++/79687
++ * init.c (constant_value_1): Break if the variable has a dynamic
++ initializer.
++
++ Backported from mainline
++ 2017-01-31 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/79264
++ * lambda.c (maybe_generic_this_capture): Deal with template-id-exprs.
++ * semantics.c (finish_member_declaration): Assert class is being
++ defined.
++
++ Backported from mainline
++ 2017-01-17 Nathan Sidwell <nathan@acm.org>
++
++ 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.
++
++2017-03-07 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2017-03-06 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.
++
++2017-02-15 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-02-09 Jakub Jelinek <jakub@redhat.com>
++
++ 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 c/79431
++ * parser.c (cp_parser_oacc_declare): Formatting fix.
++ (cp_parser_omp_declare_target): Don't invoke symtab_node::get on
++ automatic variables.
++
++ 2017-02-06 Jakub Jelinek <jakub@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.
++
++2017-02-13 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/79296 - ICE mangling localized template instantiation
++ * decl2.c (determine_visibility): Use template fn context for
++ local class instantiations.
++
++2017-02-11 Jason Merrill <jason@redhat.com>
++
++ PR c++/78908 - template ops and bitfields
++ * tree.c (build_min_non_dep): Use unlowered_expr_type.
++
++2017-02-10 Jason Merrill <jason@redhat.com>
++
++ PR c++/78897 - constexpr union
++ * constexpr.c (cxx_eval_store_expression): A store to a union member
++ erases a previous store to another member.
++
++2017-01-26 Jason Merrill <jason@redhat.com>
++
++ PR c++/79176 - lambda ICE with -flto -Os
++ * decl2.c (vague_linkage_p): Handle decloned 'tors.
++ * tree.c (decl_linkage): Likewise.
++
++2017-01-20 Marek Polacek <polacek@redhat.com>
++
++ Backported from mainline
++ 2017-01-04 Marek Polacek <polacek@redhat.com>
++
++ PR c++/77545
++ PR c++/77284
++ * constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT.
++
++2017-01-17 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2017-01-11 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/78341
++ * parser.c (cp_parser_std_attribute_spec): Remove over-eager
++ assertion. Formatting fix.
++
++ 2017-01-04 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/78949
++ * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
++ vector type.
++
++ PR c++/78693
++ * parser.c (cp_parser_simple_declaration): Only complain about
++ inconsistent auto deduction if auto_result doesn't use auto.
++
++ PR c++/71182
++ * parser.c (cp_lexer_previous_token): Use vec_safe_address in the
++ assertion, as lexer->buffer may be NULL.
++
++2017-01-11 Nathan Sidwell <nathan@acm.org>
++
++ PR c++/77812
++ * name-lookup.c (set_namespace_binding_1): An overload of 1 decl
++ is a new overload.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.0 released.
+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 @@
+ }
+ }
+
++ 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)
++ {
++ *walk_subtrees = 0;
++ return NULL_TREE;
++ }
++ }
++
+ /* 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);
+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 @@
+
+ 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);
+
+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 @@
+ {
+ 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;
+ }
+@@ -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;
+-
+ /* 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));
++ {
++ if (CLASSTYPE_USE_TEMPLATE (TREE_TYPE (decl)))
++ template_decl = decl;
++ }
+ 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 (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 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 @@
+ }
+ }
+
+- if (use_template)
++ if (template_decl)
+ {
+ /* 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))
+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)))
+ {
+- if (last_type && last_type != error_mark_node
++ if (last_type
++ && last_type != error_mark_node
+ && !same_type_p (auto_result, last_type))
+ {
+ /* 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;
+ }
+
+@@ -15164,7 +15168,12 @@
+ && (!parser->scope
+ || (TYPE_P (parser->scope)
+ && dependent_type_p (parser->scope))))
+- return identifier;
++ {
++ /* 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;
++ }
+ }
+
+ /* 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);
+ }
+
+@@ -24140,11 +24152,7 @@
+
+ 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;
+
+- 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))
+ {
+ 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);
+ }
+ }
+@@ -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;
+
+- 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))
+ {
+ 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);
+ }
+ }
++ if (!flag_openmp) /* flag_openmp_simd */
++ {
++ cp_parser_skip_to_pragma_eol (parser, pragma_tok);
++ return false;
++ }
+
+ 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;
+
+ 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
+===================================================================
+--- 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/lambda.c (.../tags/gcc_6_3_0_release)
++++ b/src/gcc/cp/lambda.c (.../branches/gcc-6-branch)
+@@ -746,16 +746,14 @@
+ return result;
+ }
+
+-/* 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);
+- }
+
+ return object;
+ }
+
++/* 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. */
++
++void
++maybe_generic_this_capture (tree object, tree fns)
++{
++ 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);
++
++ 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. */
+
+ tree
+Index: gcc/cp/cp-tree.h
+===================================================================
+--- 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/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)))
+ {
+- 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;
++ }
+ }
++ 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
+===================================================================
+--- 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)
+ {
+ 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
+===================================================================
+--- 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
+ {
+@@ -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)
+ {
+ 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));
++ }
+
+- 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);
++
++ 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;
++
++ unsigned int call_frequency = apply_probability (src_bb->frequency,
++ call_edge->probability);
++
++ bi_call_bb->count += call_edge->count;
++ bi_call_bb->frequency += call_frequency;
++
++ if (nocall_edge->dest != join_tgt_bb)
++ {
++ nocall_edge->dest->count = nocall_edge->count;
++ nocall_edge->dest->frequency = src_bb->frequency - call_frequency;
++ }
+ }
+
+ if (dom_info_available_p (CDI_DOMINATORS))
+Index: gcc/ipa-pure-const.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");
+ }
+
+@@ -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;
+ }
+
+Index: gcc/ira-int.h
+===================================================================
+--- 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 @@
+
+ /* 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;
+
+ /* 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 @@
+ }
+
+ 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);
+
+- 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;
+
+ #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);
+ }
++
++ object_offset_in_bytes
++ = wi::lrshift (object_offset_in_bits, LOG2_BITS_PER_UNIT);
++ if (ctx->variant_part_offset == NULL_TREE)
++ {
++ *cst_offset = object_offset_in_bytes.to_shwi ();
++ return NULL;
++ }
++ 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);
++ {
++ 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);
++ else
++ process_scope_var (stmt, NULL_TREE, decl, context_die);
++ }
+ }
+
+ /* Even if we're at -g1, we need to process the subblocks in order to get
+@@ -23752,7 +23767,16 @@
+ {
+ 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);
++ }
+ }
+ }
+
+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 @@
+
+ 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);
+ }
+ 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);
+ }
+
+
+@@ -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;
+
+ switch (TREE_CODE (type))
+ {
+@@ -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));
+- }
+-
+ /* 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)
++ {
++ 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;
++ }
++
++ /* Handle calls that return BLKmode values in registers. */
++ else if (mode == BLKmode && 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;
++ }
++
++ /* 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;
+- }
+- }
+
+ /* Store the value in the bitfield. */
+ store_bit_field (target, bitsize, bitpos,
+@@ -8800,6 +8785,18 @@
+ if (temp != 0)
+ return temp;
+
++ /* 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))
++ {
++ 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);
++ }
++
+ /* 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 @@
+ }
+
+ // 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;
+ }
+
++ // 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
++ {
++ // Use default alignment.
++ align = 0;
++ }
++
+ // 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))
+ {
+ 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());
+ }
+ }
+
+@@ -3747,12 +3751,15 @@
+ }
+
+ // 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.
+
+ 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)
+ {
+ case OPERATOR_PLUS:
+@@ -3897,7 +3904,12 @@
+ mpz_clear(uval);
+ mpz_clear(val);
+
+- return nc->set_type(unc->type(), true, location);
++ if (!nc->set_type(unc->type(), true, location))
++ {
++ *issued_error = true;
++ return false;
++ }
++ return true;
+ }
+
+ // 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 the type of a unary expression.
+@@ -4539,13 +4552,15 @@
+
+ // 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.
+
+ 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);
+
+ 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);
+ }
+
+ // 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)
++ {
+ // 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();
+ }
+
+- if (!is_constant_expr)
+- this->left_->determine_type(&subcontext);
++ this->left_->determine_type(&subcontext);
+
+ if (is_shift_op)
+ {
+@@ -5417,8 +5447,7 @@
+ subcontext.may_be_abstract = false;
+ }
+
+- 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
+===================================================================
+--- 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 @@
+ {
+ 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;
++
++ 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;
++
++ 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;
++
++ build_new_reduction (reduction_list, double_reduc_stmts[i], phi);
++ }
++ destroy_loop_vec_info (simple_loop_info, true);
++ }
++ }
++
+ 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>
++
++ Backport from trunk
++
++ 2017-03-28 Andreas Schwab <schwab@suse.de>
++
++ 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.
++
++2017-03-08 Thanassis Tsiodras <ttsiodras@gmail.com>
++
++ PR ada/79903
++ * socket.c (__gnat_gethostbyaddr): Add missing test for __rtems__.
++
++2017-03-08 Eric Botcazou <ebotcazou@adacore.com>
++
++ PR ada/79945
++ * system-linux-ppc.ads (Default_Bit_Order): Use Standard's setting.
++
++2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * 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.
++
++2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
++ of boolean rvalues to function calls.
++
++2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * 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.
++
++2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.
++
++2017-02-12 John Marino <gnugcc@marino.st>
++
++ * gcc-interface/Makefile.in: Support aarch64-freebsd.
++
+ 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. */
++
++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));
++}
++
+ /* 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;
++
++ op0_cst = split_plus (op0, &op0_var);
++ op1_cst = split_plus (op1, &op1_var);
++ result = size_binop (MINUS_EXPR, op0_cst, op1_cst);
++
+ 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;
++
++ 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
++
+ 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;
++
+ 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;
++
+ /* 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);
++ }
++
+ 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;
++
+ 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);
++
++ /* 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;
++ }
++
+ 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>
++
++ 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.
++
++2017-04-21 Janus Weil <janus@gcc.gnu.org>
++
++ Backport from trunk
++ PR fortran/80361
++ * class.c (generate_finalization_wrapper): Give the finalization wrapper
++ the recursive attribute.
++
++2017-04-01 Paul Thomas <pault@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.
++
++2017-04-01 Paul Thomas <pault@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.
++
++2017-03-26 Paul Thomas <pault@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.
++
++2017-03-14 Richard Biener <rguenther@suse.de>
++
++ Backport from mainline
++ 2017-03-06 Richard Biener <rguenther@suse.de>
++
++ PR fortran/79894
++ * trans.c (gfc_add_modify_loc): Weaken assert.
++
++2017-02-25 Paul Thomas <pault@gcc.gnu.org>
++
++ PR fortran/78474
++ * module.c (gfc_match_submodule): If there is more than one
++ colon, it is a syntax error.
++
++ 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.
++
++2017-02-07 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ * 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.
++
++2017-01-29 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ Backported from trunk
++ 2017-01-13 Andre Vehreschild <vehre@gcc.gnu.org>
++
++ PR fortran/70697
++ * resolve.c (resolve_lock_unlock_event): Resolve the expression for
++ event's until_count.
++
++2017-01-29 Andre Vehreschild <vehre@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.
++
++2017-01-17 Jakub Jelinek <jakub@redhat.com>
++
++ Backported from mainline
++ 2016-12-21 Jakub Jelinek <jakub@redhat.com>
++
++ 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.
++
++2016-12-22 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.
++
+ 2016-12-21 Release Manager
+
+ * 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;
+
+-/* 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;
+
+ /* 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;
+
+ 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 (gfc_match_char (':') != MATCH_YES)
++ if (gfc_match_char (':') != MATCH_YES
++ || seen_colon)
+ goto syntax;
++
++ seen_colon = true;
+ }
+
+ 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 @@
+ }
+
+
++/* 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;
++}
++
++
+ void
+ gfc_dump_module (const char *name, int dump_flag)
+ {
+@@ -6134,6 +6143,8 @@
+ dump_smod =false;
+
+ no_module_procedures = true;
++ gfc_traverse_ns (gfc_current_ns, check_for_module_procedures);
++
+ dump_module (name, dump_flag);
+
+ if (no_module_procedures || dump_smod)
+@@ -6917,8 +6928,17 @@
+ }
+
+ 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
+===================================================================
+--- 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;
+
++ 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;
++ }
++ }
+
++ if (kind != -1)
++ return kind;
++
+ /* 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;
+
+- return -1;
++ return kind;
+ }
+
+
+@@ -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
+===================================================================
+--- 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);
++ }
+ }
+
+
+Index: gcc/fortran/trans-decl.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);
+ }
++ 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
+===================================================================
+--- 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;
+
+-/* 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 (sym->attr.flavor == FL_DERIVED)
+ {
+- 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)
++ {
++ for (c = sym->components; c; c = c->next)
++ c->attr.access = ACCESS_PUBLIC;
++ }
++ else
++ {
++ sym->attr.use_assoc = 1;
++ sym->attr.host_assoc = 0;
++ }
+ }
+ }
+
+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)
++ {
++ if (flag_sanitize & SANITIZE_UNREACHABLE)
++ *completep = false;
++ }
++ else if (flag_ltrans
++ || !type_in_anonymous_namespace_p (DECL_CONTEXT (target)))
+ *completep = false;
+ }
+
+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. */
+
+ void
+-set_cfun (struct function *new_cfun)
++set_cfun (struct function *new_cfun, bool force)
+ {
+- if (cfun != new_cfun)
++ if (cfun != new_cfun || force)
+ {
+ 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;
+
+ gcc_assert (!optimize_function_for_speed_p (cfun)
+ && optimize_function_for_size_p (cfun));
+@@ -797,7 +799,8 @@
+
+ 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;
+
+@@ -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))
+ {
+ unsigned int regno = REGNO (dest);
+- int max_distance = 0;
++ HOST_WIDE_INT max_distance = 0;
+
+ /* See if a REG_EQUAL note shows this equivalent to a simpler expression.
+
+@@ -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)
+ {
+- 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 @@
+ }
+ }
+
+- 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)
++ {
++ fprintf_indent (f, indent, "%s = unshare_expr (captures[%u]);\n",
++ dest, where);
++ cinfo->info[cinfo->info[where].same_as].result_use_count--;
++ }
++ 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
+===================================================================
+--- 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;
+
++ /* 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;
++ }
++
+ /* 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))
+ {
+ 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);
+
+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)
+ {
+- 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))
++ {
++ base_bitpos -= mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
++ base_bitpos &= (base_alignment - 1);
++ }
++ 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++)
+ {
+- 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);
+ }
+ gimplify_seq_add_stmt (pre_p, gforo);
+ }
+@@ -11156,8 +11172,11 @@
+ if (fallback == fb_none && *expr_p && !is_gimple_stmt (*expr_p))
+ {
+ /* 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)
++ {
++ if (exits[i] != exit
++ && bb_in_region (exits[i]->src, entry->dest, exit->src))
++ {
++ DEBUG_PRINT (dp << "[scop-detection-fail] cannot merge seses.\n");
++ exits.release ();
++ return invalid_sese;
++ }
++ }
++ 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 @@
+
+ sese_l combined = merge_sese (s1, s2);
+
++ /* 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))
++ {
++ combined = invalid_sese;
++ break;
++ }
++
++ 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);
+ }
+
+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;
+
+ /* 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--;
+
+ free (stack_usage_map_buf);
++ free (args);
+
+ /* 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)
++ {
++ error_at (gimple_location (call),
++ "target does not support function version dispatcher");
++ break;
++ }
++
+ 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;
+
+- 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);
++
+ return 0;
+ }
+
+@@ -360,7 +372,7 @@
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+- 0 /* todo_flags_finish */
++ TODO_update_ssa /* todo_flags_finish */
+ };
+
+ 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
+===================================================================
+--- 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 @@
+ }
+ 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;
++ }
+ }
+ 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;
+ }
+ /* 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);
+ }
+
+-/* 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;
+
+ 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. */
+
+ 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));
+
++ if (depth == 128)
++ return 0;
++
+ for (l = e->locs; l; l = l->next)
+ {
+ 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;
+ }
+
+@@ -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;
+ }
+
+@@ -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;
+
+ /* 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);
+
+ return 0;
+ }
+@@ -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;
+
+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;
+
+@@ -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>
++
++ Backported from mainline
++ 2017-01-11 Jakub Jelinek <jakub@redhat.com>
++
++ PR middle-end/50199
++ * lto-lang.c (lto_post_options): Force flag_merge_constants = 1
++ if it was 0.
++
+ 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++;
+ }
++ 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
+===================================================================
+--- 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/frv/frv.opt:42
+-#, fuzzy
+-#| msgid "Dynamically allocate cc registers"
+ msgid "Dynamically allocate cc registers."
+ msgstr "Asigna dinámicamente los registros cc."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/frv/frv.opt:65
+-#, fuzzy
+-#| msgid "Enable conditional moves"
+ msgid "Enable conditional moves."
+ msgstr "Activa moves condicionales."
+
+ #: 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=):"
+
+ #: config/frv/frv.opt:122
+-#, fuzzy
+-#| msgid "Use fp double instructions"
+ msgid "Use fp double instructions."
+ msgstr "Usa instrucciones fp double."
+
+ #: 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."
+
+ #: config/frv/frv.opt:138
+-#, fuzzy
+-#| msgid "Only use 32 FPRs"
+ msgid "Only use 32 FPRs."
+ msgstr "Usa solamente 32 FPRs."
+
+ #: config/frv/frv.opt:142
+-#, fuzzy
+-#| msgid "Use 64 FPRs"
+ msgid "Use 64 FPRs."
+ msgstr "Usa 64 FPRs."
+
+ #: config/frv/frv.opt:146
+-#, fuzzy
+-#| msgid "Only use 32 GPRs"
+ msgid "Only use 32 GPRs."
+ msgstr "Usa solamente 32 GPRs."
+
+ #: config/frv/frv.opt:150
+-#, fuzzy
+-#| msgid "Use 64 GPRs"
+ msgid "Use 64 GPRs."
+ msgstr "Usa 64 GPRs."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/frv/frv.opt:178
+-#, fuzzy
+-#| msgid "Use media instructions"
+ msgid "Use media instructions."
+ msgstr "Usa instrucciones de medios."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/frv/frv.opt:199
+-#, fuzzy
+-#| msgid "Remove redundant membars"
+ msgid "Remove redundant membars."
+ msgstr "Remueve miembros redundantes."
+
+ #: config/frv/frv.opt:203
+-#, fuzzy
+-#| msgid "Pack VLIW instructions"
+ msgid "Pack VLIW instructions."
+ msgstr "Empaca las instrucciones VLIW."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/frv/frv.opt:219
+-#, fuzzy
+-#| msgid "Assume a large TLS segment"
+ msgid "Assume a large TLS segment."
+ msgstr "Asume un segmento TLS grande."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/mn10300/mn10300.opt:30
+-#, fuzzy
+-#| msgid "Target the AM33 processor"
+ msgid "Target the AM33 processor."
+ msgstr "Apunta al procesador AM33."
+
+ #: 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."
+
+ #: config/mn10300/mn10300.opt:38
+-#, fuzzy
+-#| msgid "Target the AM34 processor"
+ msgid "Target the AM34 processor."
+ msgstr "Apunta al procesador AM34."
+
+ #: 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."
+
+ #: config/mn10300/mn10300.opt:55
+-#, fuzzy
+-#| msgid "Enable linker relaxations"
+ msgid "Enable linker relaxations."
+ msgstr "Activa la relajación del enlazador."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/nds32/nds32.opt:62
+ msgid "Specify the size of each cache block, which must be a power of 2 between 4 and 512."
+-msgstr ""
++msgstr "Especifica el tamaño de cada bloque de caché, que ha de ser potencia de 2 entre 4 y 512."
+
+ #: config/nds32/nds32.opt:70
+-#, 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."
+-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."
+
+ #: 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=."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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)."
+
+ #: 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)."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/cris/cris.opt:142
+-#, 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."
+
+ #: 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."
+
+ #: config/cris/cris.opt:158
+-#, fuzzy
+-#| msgid "Override -mbest-lib-options"
+ msgid "Override -mbest-lib-options."
+ msgstr "Anula -mbest-lib-options."
+
+ #: 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."
+
+ #: config/cris/cris.opt:169
+-#, 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."
+
+ #: config/cris/cris.opt:173
+-#, 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()."
+
+ #: 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."
+-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."
+
+ #: 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/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/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/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/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/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/sh/sh.opt:165
+-#, fuzzy
+-#| msgid "Generate SH4a code"
+ msgid "Generate SH4a code."
+ msgstr "Genera código SH4a."
+
+ #: config/sh/sh.opt:169
+-#, fuzzy
+-#| msgid "Generate SH4a FPU-less code"
+ msgid "Generate SH4a FPU-less code."
+ msgstr "Genera código SH4a sin FPU."
+
+ #: config/sh/sh.opt:173
+-#, 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."
+
+ #: config/sh/sh.opt:177
+-#, 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."
+
+ #: config/sh/sh.opt:181
+-#, fuzzy
+-#| msgid "Generate SH4al-dsp code"
+ msgid "Generate SH4al-dsp code."
+ msgstr "Genera código SH4al-dsp."
+
+ #: config/sh/sh.opt:185
+-#, fuzzy
+-#| msgid "Generate 32-bit SHmedia code"
+ msgid "Generate 32-bit SHmedia code."
+ msgstr "Genera código SHmedia de 32-bit."
+
+ #: config/sh/sh.opt:189
+-#, 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."
+
+ #: 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/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/sh/sh.opt:201
+-#, fuzzy
+-#| msgid "Generate SHcompact code"
+ msgid "Generate SHcompact code."
+ msgstr "Genera código SHcompact."
+
+ #: 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/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/sh/sh.opt:221
+-#, 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."
+
+ #: config/sh/sh.opt:225
+-#, fuzzy
+-#| msgid "Generate bit instructions"
+ msgid "Generate bit instructions."
+-msgstr "Genera instrucciones bit."
++msgstr "Genera instrucciones de bit."
+
+ #: config/sh/sh.opt:229
+-#, 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."
+
+ #: 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."
+
+ #: config/sh/sh.opt:236 config/sh/sh.opt:240
+-#, fuzzy, c-format
+-#| msgid "Deprecated. This switch has no effect"
++#, 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 @@
+
+ #: config/sh/sh.opt:245
+ msgid "Force the usage of delay slots for conditional branches."
+-msgstr ""
++msgstr "Fuerza el uso de ranuras de retardo para las ramificaciones condicionales."
+
+ #: 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."
+
+ #: config/sh/sh.opt:309
+-#, fuzzy
+-#| msgid "Mark MAC register as call-clobbered"
+ msgid "Mark MAC register as call-clobbered."
+ msgstr "Marca los registros MAC como sobreescritos por llamada."
+
+ #: 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/sh/sh.opt:319
+-#, 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."
+
+@@ -12617,34 +12314,26 @@
+ msgstr "Asume que las instrucciones pt* no capturarán"
+
+ #: 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."
+-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."
+
+ #: 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/sh/sh.opt:347
+-#, fuzzy
+-#| msgid "Deprecated. Use -Os instead"
+ msgid "Deprecated. Use -Os instead."
+ msgstr "Obsoleto. Utilice en su lugar -Os."
+
+ #: 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/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)."
+-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)."
+
+ #: 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."
+
+ #: 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."
+-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."
+
+ #: 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."
+
+ #: config/mips/mips.opt:218
+ msgid "-mnan=ENCODING\tSelect the IEEE 754 NaN data encoding."
+-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."
+
+ #: 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."
+
+ #: 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."
+-msgstr ""
++msgstr "Especifica la política de uso de ramificación compacta."
+
+ #: 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."
+
+ #: 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."
+-msgstr ""
++msgstr "Genera código de 32 bits ARCompact para el procesador ARC600."
+
+ #: config/arc/arc.opt:42
+-#, fuzzy
+-#| msgid "Same as -mcpu=i386"
+ msgid "Same as -mA6."
+-msgstr "Igual que -mcpu=i386."
++msgstr "Igual que -mA6."
+
+ #: config/arc/arc.opt:46
+ msgid "Generate ARCompact 32-bit code for ARC601 processor."
+-msgstr ""
++msgstr "Genera código de 32 bits ARCompact para el procesador ARC601."
+
+ #: 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."
+
+ #: 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."
+-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."
+
+ #: 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."
+
+ #: config/arc/arc.opt:66
+-#, 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."
+
+ #: config/arc/arc.opt:70
+-#, 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: config/arc/arc.opt:108
+ msgid "Generate Extended arithmetic instructions. Currently only divaw, adds, subs and sat16 are supported."
+-msgstr ""
++msgstr "Genera instrucciones de aritmética extendida. Actualmente solo se dispone de divaw, adds, subs y sat16."
+
+ #: config/arc/arc.opt:112
+ msgid "Dummy flag. This is the default unless FPX switches are provided explicitly."
+-msgstr ""
++msgstr "Indicador tonto. Es el predefinido a menos que que se proporcionen switches FPX explícitamente."
+
+ #: 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)."
+
+ #: 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."
+-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)."
+
+ #: 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)."
+
+ #: config/arc/arc.opt:160
+ msgid "Disable LR and SR instructions from using FPX extension aux registers."
+-msgstr ""
++msgstr "Desactivar en las instrucciones LR y SR el uso de registros auxiliares de la extensión FPX."
+
+ #: 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."
+
+ #: 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."
+-msgstr ""
++msgstr "nivel de optimización del tamaño: 0:nada 1:oportunista 2:regalloc 3:alineación libre, -Os."
+
+ #: 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."
+
+ #: config/arc/arc.opt:217
+ msgid "Tune for ARC600 cpu."
+-msgstr ""
++msgstr "Afinado para cpu ARC600."
+
+ #: config/arc/arc.opt:221
+ msgid "Tune for ARC601 cpu."
+-msgstr ""
++msgstr "Afinado para cpu ARC601."
+
+ #: config/arc/arc.opt:225
+ msgid "Tune for ARC700 R4.2 Cpu with standard multiplier block."
+-msgstr ""
++msgstr "Afinado para Cpu ARC700 R4.2 con bloque multiplicador estándar."
+
+ #: 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."
+
+ #: config/arc/arc.opt:245
+ msgid "Enable the use of pre/post modify with register displacement."
+-msgstr ""
++msgstr "Activa el uso de pre/post modify con desplazamiento de registro."
+
+ #: 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."
+
+ #: config/arc/arc.opt:255
+ msgid "Set probability threshold for unaligning branches."
+-msgstr ""
++msgstr "Establece el umbral de probabilidad para ramificaciones desalineadas."
+
+ #: 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."
+
+ #: config/arc/arc.opt:263
+ msgid "Explain what alignment considerations lead to the decision to make an insn short or long."
+-msgstr ""
++msgstr "Explicar qué consideraciones de alineamiento llevan a la decisión de hacer una insn corta o larga."
+
+ #: 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."
+
+ #: config/arc/arc.opt:271
+ msgid "Enable Rcq constraint handling - most short code generation depends on this."
+-msgstr ""
++msgstr "Activa el manejo de restricciones Rcq - la mayor parte de la generación de código corto depende de esto."
+
+ #: 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."
+
+ #: config/arc/arc.opt:279
+-#, 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."
+
+ #: config/arc/arc.opt:287
+ msgid "Use pc-relative switch case tables - this enables case table shortening."
+-msgstr ""
++msgstr "Usa tables switch case relativas a contador de programa - esto activa el acortamiento de tablas case."
+
+ #: 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."
+
+ #: 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."
+-msgstr ""
++msgstr "Expande adddi3 y subdi3 en tiempo de generación de rtl en add.f / adc, etc."
+
+ #: 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."
+
+ #: config/arc/arc.opt:328
+ msgid "Enable XY Memory extension (DSP version 3)."
+-msgstr ""
++msgstr "Activa la extensión XY Memory (DSP versión 3)."
+
+ #: 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."
+
+ #: config/arc/arc.opt:349
+-#, 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."
+
+ #: 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."
+-msgstr ""
++msgstr "Pasa la opción -marclinux_prof al enlazador."
+
+ #: config/arc/arc.opt:365
+-#, fuzzy
+-#| msgid "Enable linker relaxation."
+ msgid "Enable lra."
+-msgstr "Activa la relajación del enlazador."
++msgstr "Activa lra."
+
+ #: config/arc/arc.opt:369
+ msgid "Don't indicate any priority with TARGET_REGISTER_PRIORITY."
+-msgstr ""
++msgstr "No indica ninguna prioridad con TARGET_REGISTER_PRIORITY."
+
+ #: config/arc/arc.opt:373
+ msgid "Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY."
+-msgstr ""
++msgstr "Indica prioridad para r0..r3 / r12..r15 con TARGET_REGISTER_PRIORITY."
+
+ #: 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."
+
+ #: config/arc/arc.opt:381
+ msgid "instrument with mcount calls as in the ucb code."
+-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."
+
+ #: 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."
+
+ #: java/lang.opt:273
+-#, 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."
+
+ #: 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"
+
+ #: lto/lang.opt:47
+ msgid "Set linker output type (used internally during LTO optimization)"
+-msgstr ""
++msgstr "Establece el tipo de salida del enlazador (usado internamente durante la optimización LTO)"
+
+ #: lto/lang.opt:52
+ msgid "Run the link-time optimizer in local transformation (LTRANS) mode."
+@@ -13922,165 +13264,113 @@
+
+ #: lto/lang.opt:64
+ msgid "Whole program analysis (WPA) mode with number of parallel jobs specified."
+-msgstr ""
++msgstr "Modo de análisis del programa completo (WPA) con número de trabajos paralelos especificado."
+
+ #: 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."
+
+ #: common.opt:302
+-#, fuzzy
+-#| msgid "Display this information"
+ msgid "Display this information."
+ msgstr "Muestra esta información."
+
+ #: common.opt:306
+-#, 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."
+
+ #: common.opt:424
+-#, fuzzy
+-#| msgid "Alias for --help=target"
+ msgid "Alias for --help=target."
+-msgstr "Alias para -mhelp=target."
++msgstr "Alias para --help=target."
+
+ #: common.opt:449
+-#, 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."
+
+ #: common.opt:477
+-#, 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>."
+
+ #: 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."
+
+ #: 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."
+-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."
+
+ #: common.opt:652
+-#, 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."
+
+ #: common.opt:656
+-#, 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."
+
+ #: 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))."
+
+ #: common.opt:696
+-#, 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))."
+
+ #: common.opt:700
+-#, 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))."
+
+ #: common.opt:704
+ msgid "Warn about C++ polymorphic types where adding final keyword would improve code quality."
+-msgstr ""
++msgstr "Advierte de tipos polimórficos en C++ cuando añadir la palabra clave final mejoraría la calidad del código."
+
+ #: common.opt:708
+ msgid "Warn about C++ virtual methods where adding final keyword would improve code quality."
+-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-."
+
+ #: 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."
+
+ #: common.opt:811
+-#, 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."
+
+ #: common.opt:815
+-#, 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."
+
+ #: common.opt:888
+ msgid "Aggressively optimize loops using language constraints."
+-msgstr ""
++msgstr "Optimiza los bucles de forma agresiva empleando restricciones del lenguaje."
+
+ #: common.opt:892
+-#, fuzzy
+-#| msgid "Align the start of functions"
+ msgid "Align the start of functions."
+ msgstr "Alinea el inicio de las funciones."
+
+ #: 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."
+-msgstr ""
++msgstr "Tras el diagnóstico de comportamiento indefinido intenta continuar la ejecución."
+
+ #: common.opt:953
+-#, 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=."
+
+ #: common.opt:957
+ msgid "Use trap instead of a library function for undefined behavior sanitization."
+-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."
+
+ #: common.opt:965
+-#, fuzzy
+-#| msgid "Generate auto-inc/dec instructions"
+ msgid "Generate auto-inc/dec instructions."
+ msgstr "Genera instrucciones auto-inc/dec."
+
+ #: common.opt:969
+ msgid "Use sample profile information for call graph node weights. The default"
+-msgstr ""
++msgstr "Usa información de perfil de muestra para los pesos de los nodos de los grafos de llamadas. Lo predeterminado"
+
+ #: common.opt:974
+-#, 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"
+
+ #: 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
+ #, 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."
+
+ #: 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."
+-msgstr ""
++msgstr "-fdiagnostics-color=[never|always|auto]\tColorea los diagnósticos."
+
+ #: common.opt:1181
+ #, 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."
+
+ #: 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."
+-msgstr ""
++msgstr "Avertir si des objets CFString constants contiennent des caractères non portables."
+
+ #: config/darwin.opt:216
+ msgid "Generate AT&T-style stubs for Mach-O."
+-msgstr ""
++msgstr "Générer des stubs dans le style AT&T pour Mach-O."
+
+ #: 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."
+
+ #: config/darwin.opt:232
+ msgid "The earliest MacOS X version on which this program will run."
+-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."
+
+ #: config/darwin.opt:240
+-#, 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."
+
+ #: config/bfin/bfin.opt:40 config/msp430/msp430.opt:3 config/c6x/c6x.opt:38
+ #: config/mep/mep.opt:143
+-#, fuzzy
+-#| msgid "Use the WindISS simulator"
+ msgid "Use simulator runtime."
+-msgstr "Utiliser le simulateur WindISS"
++msgstr "Produire l'exécutable pour un simulateur."
+
+ #: 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."
+
+ #: config/bfin/bfin.opt:48
+-#, 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."
+
+ #: config/bfin/bfin.opt:52
+ msgid "Program is entirely located in low 64k of memory."
+-msgstr ""
++msgstr "Le programme est entièrement situé dans les 64k inférieurs de la mémoire."
+
+ #: 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."
+
+ #: config/bfin/bfin.opt:61
+ msgid "Avoid speculative loads to work around a hardware anomaly."
+-msgstr ""
++msgstr "Éviter les chargements spéculatifs pour contourner une anomalie matérielle."
+
+ #: 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."
+
+ #: config/bfin/bfin.opt:69
+ msgid "Generate code that won't be linked against any other ID shared libraries,"
+-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."
+
+ #: 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."
+-msgstr ""
++msgstr "Éviter des générer des appels relatifs au PC; utiliser des indirections."
+
+ #: 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."
+
+ #: config/bfin/bfin.opt:106
+-#, fuzzy
+-#| msgid "Build for Core A"
+ msgid "Build for Core A."
+-msgstr "Compiler pour Core A"
++msgstr "Compiler pour le cœur A."
+
+ #: 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."
+
+ #: config/bfin/bfin.opt:114
+-#, 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=):"
+
+ #: config/m68k/m68k-tables.opt:365
+ msgid "Known M68K microarchitectures (for use with the -mtune= option):"
+-msgstr ""
++msgstr "Microarchitectures M68K connues (à utiliser avec l'option -mtune=):"
+
+ #: config/m68k/m68k-tables.opt:411
+ msgid "Known M68K ISAs (for use with the -march= option):"
+-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."
+
+ #: 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."
+
+ #: config/m68k/m68k.opt:107
+-#, 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."
+
+ #: config/m68k/m68k.opt:119
+-#, 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."
+
+ #: 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/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."
+
+ #: 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."
+
+ #: config/m68k/m68k.opt:191
+ msgid "Support more than 8192 GOT entries on ColdFire."
+-msgstr ""
++msgstr "Supporter plus de 8192 entrées dans la GOT d'un ColdFire."
+
+ #: config/m68k/m68k.opt:195
+ msgid "Support TLS segment larger than 64K."
+-msgstr ""
++msgstr "Supporter des segments TLS plus grands que 64K."
+
+ #: 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."
+
+ #: config/ft32/ft32.opt:23
+ msgid "target the software simulator."
+-msgstr ""
++msgstr "cible le simulateur logiciel."
+
+ #: 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."
+
+ #: 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"
+
+ #: 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."
+
+ #: 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."
+
+ #: config/h8300/h8300.opt:31
+-#, 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."
+
+ #: 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."
+
+ #: config/h8300/h8300.opt:42
+-#, 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."
+
+ #: 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."
+
+ #: config/h8300/h8300.opt:50
+-#, 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."
+
+ #: config/h8300/h8300.opt:54
+-#, 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."
+
+ #: config/h8300/h8300.opt:58
+-#, fuzzy
+-#| msgid "Enable the normal mode"
+ msgid "Enable the normal mode."
+-msgstr "Activer le mode normal"
++msgstr "Activer le mode normal."
+
+ #: config/h8300/h8300.opt:62
+-#, 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."
+
+ #: 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."
+
+ #: config/pdp11/pdp11.opt:27
+-#, 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."
+
+ #: 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."
+
+ #: config/pdp11/pdp11.opt:35
+-#, 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."
+
+ #: config/pdp11/pdp11.opt:55
+-#, 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."
+
+ #: 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."
+
+ #: config/pdp11/pdp11.opt:63
+-#, 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."
+
+ #: 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."
+
+ #: config/pdp11/pdp11.opt:71
+-#, 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."
+
+ #: 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."
+
+ #: config/pdp11/pdp11.opt:79 config/rs6000/rs6000.opt:173
+-#, 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."
+
+ #: 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é."
+
+ #: config/pdp11/pdp11.opt:87
+-#, 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."
+
+ #: 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."
+
+ #: config/xtensa/xtensa.opt:27
+-#, 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."
+
+ #: 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."
+
+ #: config/xtensa/xtensa.opt:35
+-#, 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."
+
+ #: 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/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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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++."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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."
+
+ #: 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/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/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/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/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/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/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/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/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."
+
+ #: 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=):"
+
+ #: 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é."
+
+ #: 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=):"
+
+ #: config/i386/i386.opt:309
+-#, 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=%>"
+
+ #: 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."
+
+ #: config/i386/i386.opt:317
+ msgid "Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack."
+-msgstr ""
++msgstr "Toujours utiliser DRAP (Dynamic Realigned Argument Pointer) pour ré-aligner la pile."
+
+ #: 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."
+
+ #: config/i386/i386.opt:325
+-#, 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é."
+
+ #: 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=:"
+
+ #: config/i386/i386.opt:362
+-#, 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."
+
+ #: 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%>"
+
+ #: config/i386/i386.opt:374
+-#, 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)."
+
+ #: 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/i386/i386.opt:398
+-#, 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."
+
+ #: config/i386/i386.opt:402
+-#, 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."
+
+ #: 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."
+
+ #: config/i386/i386.opt:410
+-#, 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."
+
+ #: 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."
+
+ #: config/i386/i386.opt:418
+-#, 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."
+
+ #: 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."
+
+ #: config/i386/i386.opt:426
+-#, fuzzy
+-#| msgid "Alternate calling convention"
+ msgid "Alternate calling convention."
+-msgstr "Convention alternative d'appels"
++msgstr "Convention d'appel alternative."
+
+ #: config/i386/i386.opt:430 config/alpha/alpha.opt:23
+-#, 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."
+
+ #: 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."
+
+ #: config/i386/i386.opt:454
+-#, 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."
+
+ #: config/i386/i386.opt:458
+ msgid "Valid arguments to -mstringop-strategy=:"
+-msgstr ""
++msgstr "Les arguments valables pour -mstringop-strategy=:"
+
+ #: config/i386/i386.opt:486
+-#, 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=):"
+
+ #: 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."
+
+ #: config/i386/i386.opt:508
+-#, 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."
+
+ #: config/i386/i386.opt:512
+-#, 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."
+
+ #: 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."
+
+ #: config/i386/i386.opt:523
+-#, 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."
+
+ #: config/i386/i386.opt:527
+ msgid "Known ABIs (for use with the -mabi= option):"
+-msgstr ""
++msgstr "ABI connues (à utiliser avec l'option -mabi=):"
+
+ #: config/i386/i386.opt:537 config/rs6000/rs6000.opt:189
+-#, 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."
+
+ #: 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=):"
+
+ #: config/i386/i386.opt:551
+-#, 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."
+
+ #: 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
+-#, 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."
+
+ #: 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é."
+
+ #: config/i386/i386.opt:582
+ msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer."
+-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."
+
+ #: 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."
+
+ #: 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/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/i386/i386.opt:644
+-#, 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."
+
+ #: config/i386/i386.opt:647
+ msgid "%<-msse5%> was removed"
+-msgstr ""
++msgstr "%<-msse5%> a été supprimé"
+
+ #: config/i386/i386.opt:652
+-#, 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."
+
+ #: 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/i386/i386.opt:660
+-#, 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."
+
+ #: config/i386/i386.opt:664
+-#, 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."
+
+ #: config/i386/i386.opt:668
+-#, 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."
+
+ #: 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/i386/i386.opt:676
+-#, 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."
+
+ #: config/i386/i386.opt:680
+-#, 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."
+
+ #: config/i386/i386.opt:684
+-#, 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."
+
+ #: 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/i386/i386.opt:692
+-#, 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."
+
+ #: 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/i386/i386.opt:700
+-#, 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."
+
+ #: config/i386/i386.opt:704
+-#, 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."
+
+ #: config/i386/i386.opt:708
+-#, 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."
+
+ #: config/i386/i386.opt:712
+-#, 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)."
+
+ #: 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/i386/i386.opt:724
+-#, 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."
+
+ #: 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/i386/i386.opt:732
+-#, 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)."
+
+ #: config/i386/i386.opt:740
+-#, fuzzy
+-#| msgid "Support RDSEED instruction"
+ msgid "Support RDSEED instruction."
+-msgstr "Supporte l'instruction RDSEED"
++msgstr "Supporter l'instruction RDSEED."
+
+ #: config/i386/i386.opt:744
+-#, fuzzy
+-#| msgid "Support PREFETCHW instruction"
+ msgid "Support PREFETCHW instruction."
+-msgstr "Supporte l'instruction PREFETCHW"
++msgstr "Supporter l'instruction PREFETCHW."
+
+ #: 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/i386/i386.opt:752
+-#, fuzzy
+-#| msgid "Support CLFLUSHOPT instructions"
+ msgid "Support CLFLUSHOPT instructions."
+-msgstr "Supporte les instructions CLFLUSHOPT"
++msgstr "Supporter les instructions CLFLUSHOPT."
+
+ #: config/i386/i386.opt:756
+-#, fuzzy
+-#| msgid "Support CLWB instruction"
+ msgid "Support CLWB instruction."
+-msgstr "Supporte l'instruction CLWB"
++msgstr "Supporter l'instruction CLWB."
+
+ #: 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/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/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/i386/i386.opt:772
+-#, fuzzy
+-#| msgid "Support XSAVEOPT instruction"
+ msgid "Support XSAVEOPT instruction."
+-msgstr "Supporte les instructions XSAVEOPT"
++msgstr "Supporter l'instruction XSAVEOPT."
+
+ #: config/i386/i386.opt:776
+-#, fuzzy
+-#| msgid "Support XSAVEC instructions"
+ msgid "Support XSAVEC instructions."
+-msgstr "Supporte les instructions XSAVEC"
++msgstr "Supporter les instructions XSAVEC."
+
+ #: 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/i386/i386.opt:784
+-#, 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."
+
+ #: config/i386/i386.opt:788
+-#, 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."
+
+ #: 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/i386/i386.opt:796
+-#, 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."
+
+ #: 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/i386/i386.opt:804
+-#, 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."
+
+ #: 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/i386/i386.opt:812
+-#, 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."
+
+ #: 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
+-#, 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."
+
+ #: 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/i386/i386.opt:828
+-#, 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."
+
+ #: 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/i386/i386.opt:836
+-#, 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."
+
+ #: config/i386/i386.opt:865
+ #, 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 ""
+
+-#: 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 ""
+
+-#: config/avr/avr.c:5634
++#: config/avr/avr.c:5670
+ msgid "bad shift insn:"
+ msgstr ""
+
+-#: 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 ""
+
+-#: config/avr/avr.c:7975
++#: config/avr/avr.c:8011
+ msgid "unsupported fixed-point conversion"
+ msgstr ""
+
+@@ -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
+ #, 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 ""
+
+-#: 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 ""
+
+-#: 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
+ #, 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: fortran/trans-expr.c:8170
++#: fortran/trans-expr.c:8196
+ #, c-format
+ msgid "Target of rank remapping is too small (%ld < %ld)"
+ msgstr ""
+
+-#: fortran/trans-expr.c:9375
++#: fortran/trans-expr.c:9401
+ msgid "Assignment of scalar to unallocated array"
+ msgstr ""
+
+@@ -5292,12 +5292,12 @@
+ msgid "Unequal character lengths (%ld/%ld) in %s"
+ msgstr ""
+
+-#: 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 ""
+
+-#: fortran/trans-intrinsic.c:7034
++#: fortran/trans-intrinsic.c:7047
+ msgid "Argument NCOPIES of REPEAT intrinsic is too large"
+ msgstr ""
+
+@@ -5601,35 +5601,39 @@
+ msgid "-E or -x required when input is from standard input"
+ msgstr ""
+
+-#: config/darwin.h:252
++#: config/darwin.h:171
++msgid "rdynamic is not supported"
++msgstr ""
++
++#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: c-family/c.opt:694
++#: config/arc/arc.opt:30
++msgid "Compile code for little endian mode. This is the default."
++msgstr ""
++
++#: 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 ""
++
+ #: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
++#: 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/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 ""
+-
+-#: 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
++#: 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 ""
+
+-#: config/sh/sh.opt:297
+-msgid "Assume symbols might be invalid."
++#: config/frv/frv.opt:228
++msgid "Cause gas to print tomcat statistics."
+ msgstr ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+-
+-#: 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 ""
+-
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
++
++#: 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 ""
++
++#: config/rs6000/rs6000.opt:318
++msgid "Put everything in the regular TOC."
++msgstr ""
++
++#: config/rs6000/rs6000.opt:322
++msgid "Generate VRSAVE instructions when generating AltiVec code."
++msgstr ""
++
++#: 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 ""
+
+-#: 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 ""
+
+-#: config/arc/arc.opt:112
++#: config/rs6000/rs6000.opt:550
++msgid "Allow 128-bit integers in VSX registers."
++msgstr ""
++
++#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: config/arc/arc.opt:144
++#: config/rs6000/rs6000.opt:582
++msgid "Generate the quad word memory atomic instructions (lqarx/stqcx)."
++msgstr ""
++
++#: 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 ""
+
+-#: 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 ""
++
++#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
++
++#: 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 ""
+
+-#: 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 ""
+
++#: go/lang.opt:70
++msgid "Functions which return values must end with return statements."
++msgstr ""
++
+ #: 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 ""
+
+ #: common.opt:1217
+@@ -14345,12 +12323,14 @@
+
+ #: 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 ""
+
+ #: common.opt:1354
+ msgid ""
+-"Perform global common subexpression elimination after register allocation has"
++"Perform global common subexpression elimination after register allocation "
++"has finished."
+ msgstr ""
+
+ #: common.opt:1371
+@@ -14368,7 +12348,9 @@
+ msgstr ""
+
+ #: 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 ""
+
+ #: common.opt:1393
+@@ -14547,10 +12529,14 @@
+ msgid "unknown IRA region %qs"
+ msgstr ""
+
+-#: 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 ""
+
++#: common.opt:1612
++msgid "Use IRA based register pressure calculation in RTL loop optimizations."
++msgstr ""
++
+ #: 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 ""
+
+ #: 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 ""
+
+ #: 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 ""
++
++#: 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 ""
+
+-#: 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 ""
+
+-#: 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 ""
+
+-#: multiple_target.c:256
++#: multiple_target.c:250
+ #, gcc-internal-format
+ msgid "single target_clones attribute is ignored"
+ msgstr ""
+
+-#: multiple_target.c:268
++#: multiple_target.c:262
+ #, gcc-internal-format
+ msgid "default target was not set"
+ msgstr ""
+
+-#: multiple_target.c:300
+-#, gcc-internal-format, gfc-internal-format
+-msgid "attribute(target_clones(\"%s\")) is not valid for current target"
+-msgstr ""
+-
+-#: 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 ""
+-
+-#: 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 ""
+
+-#: 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 ""
+
+-#: fortran/interface.c:769
++#: fortran/interface.c:521
++#, gcc-internal-format
++msgid "gfc_compare_derived_types: invalid derived type"
++msgstr ""
++
++#: 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 ""
++
++#: fortran/match.c:2800
++#, gcc-internal-format, gfc-internal-format
++msgid "STOP code at %C cannot be negative"
++msgstr ""
++
++#: fortran/match.c:2806
++#, gcc-internal-format, gfc-internal-format
++msgid "STOP code at %C contains too many digits"
++msgstr ""
++
++#: 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 ""
++
++#: 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 ""
+
+-#: 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 ""
+
+-#: fortran/openmp.c:3932
++#: fortran/openmp.c:3924
+ #, gcc-internal-format, gfc-internal-format
++msgid "unexpected !$OMP ATOMIC expression at %L"
++msgstr ""
++
++#: 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 ""
++
++#: 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 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 ""
++
++#: 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 ""
+
+-#: 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);
+ }
+
+- /* 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 ();
+ }
+
+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;
+
+@@ -436,11 +436,11 @@
+ /* Returns a linear expression for tree T evaluated in PBB. */
+
+ 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);
+
+- t = scalar_evolution_in_region (scop->scop_info->region, pbb_loop (pbb), t);
++ t = scalar_evolution_in_region (scop->scop_info->region, loop, t);
+
+ 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)
+ {
+- 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))
+ {
+ 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);
+ }
+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;
+
+- /* 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 ());
+ }
+
+ /* 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.
+-
+-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 files COPYING3. If not,
+-see <http://www.gnu.org/licenses/>. */
+-
+-Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
+-
+-#undef DEF_ENUM
+-#define DEF_ENUM EnumValue
+-
+-#undef DEF_ALG
+-#define DEF_ALG(alg, name) Enum(stringop_alg) String(name) Value(alg)
+-
+-#include "stringop.def"
+-
+-#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
+===================================================================
+--- 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
+ __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)
+ {
+- __builtin_ia32_scatterpfdps (mask, (__v16si) index, (int const *) addr,
+- scale, hint);
++ __builtin_ia32_scatterpfdps (mask, (__v16si) index, addr, scale, hint);
+ }
+
+ 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 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);
+ }
+
+ 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);
+ }
+
+ extern __inline void
+@@ -150,58 +143,57 @@
+ _mm512_mask_prefetch_i64scatter_ps (void *addr, __mmask16 mask,
+ __m512i index, int scale, int hint)
+ {
+- __builtin_ia32_scatterpfqps (mask, (__v8di) index, (int const *) addr,
+- scale, hint);
++ __builtin_ia32_scatterpfqps (mask, (__v8di) index, addr, scale, hint);
+ }
+
+ #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
+===================================================================
+--- 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
+
+ #undef ASM_SPEC
+-#define ASM_SPEC "%{m32:--32} %{m64:--64} %{mx32:--x32}"
++#define ASM_SPEC "%{m16|m32:--32} %{m64:--64} %{mx32:--x32}"
+
+ #undef ASM_OUTPUT_ALIGNED_BSS
+ #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
+Index: gcc/config/i386/avx512bwintrin.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);
+ }
+
++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 @@
+
+ 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);
+-}
+-
+-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
+===================================================================
+--- 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)
+
+-#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);
+
+- if (__get_cpuid_max (__ext, 0) < __leaf)
++ if (__maxlevel == 0 || __maxlevel < __leaf)
+ return 0;
+
+ __cpuid (__leaf, *__eax, *__ebx, *__ecx, *__edx);
+@@ -255,8 +256,9 @@
+ unsigned int *__ecx, unsigned int *__edx)
+ {
+ unsigned int __ext = __leaf & 0x80000000;
++ unsigned int __maxlevel = __get_cpuid_max (__ext, 0);
+
+- if (__get_cpuid_max (__ext, 0) < __leaf)
++ if (__maxlevel == 0 || __maxlevel < __leaf)
+ return 0;
+
+ __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>
+
+-#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__ */
+
+Index: gcc/config/i386/sse.md
+===================================================================
+--- 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"
+ "@
+ 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>"
+ "@
+ 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>"
+ "@
+ 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)
+ {
+ __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)
+ {
+ return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
+ __addr,
+@@ -9305,7 +9305,7 @@
+
+ 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)
+ {
+ __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 @@
+
+ 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)
+ {
+ __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)
+ {
+ 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)
+ {
+ __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)
+ {
+ return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
+ __addr,
+@@ -9378,7 +9378,7 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scattersiv16sf (__addr, (__mmask16) 0xFFFF,
+ (__v16si) __index, (__v16sf) __v1, __scale);
+@@ -9411,7 +9411,7 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scatterdiv16sf (__addr, (__mmask8) 0xFF,
+ (__v8di) __index, (__v8sf) __v1, __scale);
+@@ -9446,7 +9446,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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,
+@@ -9491,7 +9491,7 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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
+===================================================================
+--- 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);
+ }
+
++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);
++}
++
+ #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 @@
+
+ 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)
+ {
+ __builtin_ia32_scattersiv4sf (__addr, (__mmask8) 0xFF,
+@@ -10437,7 +11013,7 @@
+
+ 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)
+ {
+@@ -10447,7 +11023,7 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scattersiv2df (__addr, (__mmask8) 0xFF,
+@@ -10477,7 +11053,7 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scatterdiv4df (__addr, (__mmask8) 0xFF,
+@@ -10537,7 +11113,7 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scatterdiv8si (__addr, (__mmask8) 0xFF,
+@@ -10657,7 +11233,7 @@
+
+ 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 @@
+
+ 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)
+ {
+ __builtin_ia32_scatterdiv4si (__addr, (__mmask8) 0xFF,
+@@ -10677,7 +11253,7 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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 @@
+
+ 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)
+ {
+@@ -11771,582 +12347,6 @@
+ (__mmask8) -1);
+ }
+
+-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;
+
+ 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;
+
+ default:
+- output_operand_lossage ("invalid operand code '%c'", code);
++ output_operand_lossage ("invalid operand code '%c'", code);
+ }
+ }
+
+@@ -27721,7 +27736,7 @@
+ else if (disp && !base && !index)
+ {
+ 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;
+ }
+@@ -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;
+ }
+ 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);
++
++ emit_insn (gen_movstricthi
++ (gen_lowpart (HImode, op2), op0));
++ }
++ else
++ {
++ op2 = gen_reg_rtx (SImode);
++
++ emit_insn (gen_zero_extendhisi2 (op2, op0));
++ }
+ }
+ 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);
+ }
++
++ op0 = gen_reg_rtx (mode0);
++ emit_insn (GEN_FCN (icode) (op0));
++
+ emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
+
+ op2 = gen_reg_rtx (QImode);
+@@ -41488,14 +41537,12 @@
+
+ case IX86_BUILTIN_KORTESTC16:
+ icode = CODE_FOR_kortestchi;
+- mode0 = HImode;
+- mode1 = CCCmode;
++ mode3 = CCCmode;
+ goto kortest;
+
+ case IX86_BUILTIN_KORTESTZ16:
+ icode = CODE_FOR_kortestzhi;
+- mode0 = HImode;
+- mode1 = CCZmode;
++ mode3 = CCZmode;
+
+ kortest:
+ arg0 = CALL_EXPR_ARG (exp, 0); /* Mask reg src1. */
+@@ -41503,19 +41550,32 @@
+ op0 = expand_normal (arg0);
+ op1 = expand_normal (arg1);
+
+- 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;
+
++ 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));
+
+ /* 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;
+
+ 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 ());
++ }
+
+ 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;
+
+ case PARM_DECL:
+ if (as = avr_nonconst_pointer_addrspace (TREE_TYPE (node)), as)
+- reason = "function parameter";
++ reason = _("function parameter");
+ break;
+
+ case FIELD_DECL:
+ if (as = avr_nonconst_pointer_addrspace (TREE_TYPE (node)), as)
+- reason = "structure field";
++ reason = _("structure field");
+ break;
+
+ 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;
+
+ case POINTER_TYPE:
+ if (as = avr_nonconst_pointer_addrspace (node), as)
+- reason = "pointer";
++ reason = _("pointer");
+ break;
+ }
+
+@@ -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);
+ }
+
+ 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;
+ })
+
+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)
+@@ -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 @@
+ }
+ }
+ [(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
++
++#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
++
++#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
++
++#undef LINK_SPEC
++#define LINK_SPEC FBSD_TARGET_LINK_SPEC \
++ CA53_ERR_835769_SPEC \
++ CA53_ERR_843419_SPEC
++
++#define GNU_USER_TARGET_MATHFILE_SPEC \
++ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
++
++#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));
+ }
+
+ /* 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);
+
+- 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));
+ }
+ else
+- emit_stack_probe (plus_constant (ptr_mode, reg1, -rem));
++ emit_stack_probe (plus_constant (Pmode, reg1, -rem));
+ }
+
+ /* 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));
+
+
+ /* Step 4: probe at FIRST + SIZE if we cannot assert at compile-time
+@@ -2422,11 +2419,11 @@
+ {
+ const HOST_WIDE_INT base = ROUND_UP (rem, ARITH_FACTOR);
+
+- 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));
+ }
+ else
+- emit_stack_probe (plus_constant (ptr_mode, reg2, -rem));
++ emit_stack_probe (plus_constant (Pmode, reg2, -rem));
+ }
+ }
+
+@@ -2480,6 +2477,10 @@
+ && (!crtl->is_leaf || df_regs_ever_live_p (LR_REGNUM)))
+ return true;
+
++ /* Force a frame pointer for EH returns so the return address is at FP+8. */
++ if (crtl->calls_eh_return)
++ return true;
++
+ return false;
+ }
+
+@@ -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)
+- {
+- 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));
+- }
+-
+- /* 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;
+ }
+
+ /* 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 @@
+ }
+
+ 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 */
+ {
+@@ -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)
+ {
++ /* 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;
+ }
+@@ -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)
+ {
+ error ("argument 1 must be a 5-bit signed literal");
+- return const0_rtx;
++ return CONST0_RTX (tmode);
+ }
+ }
+
+@@ -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)
+ {
+ error ("argument 1 must be 0 or 2");
+- return const0_rtx;
++ return CONST0_RTX (tmode);
+ }
+ }
+ else if (icode == CODE_FOR_dfp_denbcd_dd
+@@ -14214,7 +14250,7 @@
+ || TREE_INT_CST_LOW (arg0) & ~0x1)
+ {
+ error ("argument 1 must be a 1-bit unsigned literal");
+- return const0_rtx;
++ return CONST0_RTX (tmode);
+ }
+ }
+ 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);
+ }
+ }
+ 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);
+ }
+ }
+
+@@ -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;
+
+ /* 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 @@
+
+ else
+ {
+- 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));
++ {
++ /* 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));
++ }
+ }
+
+ 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--;
+ }
+- }
+- 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;
+ }
+ }
+- 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;
++ }
++ 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;
+ }
+ }
+- 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--;
+- }
+- }
+ }
+
+- /* 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;
+ }
+ }
+
+@@ -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;
+ }
+
+ /* Free _SC. */
+@@ -36141,7 +36112,10 @@
+ }
+
+ else
+- gcc_unreachable ();
++ {
++ error ("attribute %<target%> argument not a string");
++ return false;
++ }
+
+ return ret;
+ }
+@@ -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
+ };
+
+@@ -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)")])
+
+-(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;
+ })
+
+-(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];
+
++ 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;
+ }
+ })
+
+ ;; 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;
+ }
+- [(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);
+
+@@ -6239,12 +6256,16 @@
+ }
+ }
+
+-/* 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;
++ }
+
+- return false;
++ return ret;
+ }
+
+
+@@ -6316,10 +6346,15 @@
+ }
+
+ /* 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++;
++ }
+
+ /* 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;
+ }
+
+ 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;
+ }
+
+-/* AAPCS based ABIs use short enums by default. */
+
+ static bool
+ arm_default_short_enums (void)
+ {
+- return TARGET_AAPCS_BASED && arm_abi != ARM_ABI_AAPCS_LINUX;
++ return ARM_DEFAULT_SHORT_ENUMS;
+ }
+
+
+Index: gcc/config/arm/arm.h
+===================================================================
+--- 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)
+
+ /* 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
+
++/* 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);
+ }
+
+ 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. */
+
+ #define LTO_major_version 5
+-#define LTO_minor_version 1
++#define LTO_minor_version 2
+
+ typedef unsigned char lto_decl_flags_t;
+
+Index: gcc
+===================================================================
+--- 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
+ };
+
+-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};
+
+ const struct __go_type_descriptor unsafe_Pointer =
+ {
+Index: libgo/runtime/runtime.h
+===================================================================
+--- 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
+
+
++# 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. */
++
++int
++main ()
++{
++
++ #ifdef _SOFT_FLOAT
++ int ok;
++ #else
++ choke me
++ #endif
++
++ ;
++ return 0;
++}
++_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.
++
+ 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.
+
+ 2016-09-28 Steven G. Kargl <kargl@gcc.gnu.org>
+@@ -20,7 +35,7 @@
+
+ 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], [
+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>
++
++ Backport from mainline
++ 2017-01-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ PR libstdc++/78979
++ * inclhack.def (solaris_gets_c11, solaris_gets_cxx14)
++ (solaris_std_gets_cxx14, solaris_stdlib_noreturn): New fixes.
++ * 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.
++
+ 2016-12-21 Release Manager
+
+ * GCC 6.3.0 released.
+Index: fixincludes/tests/base/stdio.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 @@
++/* DO NOT EDIT THIS FILE.
++
++ It has been auto-edited by fixincludes from:
++
++ "fixinc/tests/inc/iso/stdlib_c99.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 */
+Index: fixincludes/fixincl.x
+===================================================================
+--- a/src/fixincludes/fixincl.x (.../tags/gcc_6_3_0_release)
++++ b/src/fixincludes/fixincl.x (.../branches/gcc-6-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
+ * 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
+ *
+ * You must regenerate it. Use the ./genfixes script.
+ *
+@@ -15,7 +15,7 @@
+ * 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.
+ *
+ * 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 @@
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
++ * Description of Solaris_Std_Gets_Cxx14 fix
++ */
++tSCC zSolaris_Std_Gets_Cxx14Name[] =
++ "solaris_std_gets_cxx14";
++
++/*
++ * File name selection pattern
++ */
++tSCC zSolaris_Std_Gets_Cxx14List[] =
++ "stdio.h\0";
++/*
++ * Machine/OS name selection pattern
++ */
++tSCC* apzSolaris_Std_Gets_Cxx14Machs[] = {
++ "*-*-solaris2*",
++ (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 };
++
++/*
++ * content selection pattern - do fix if pattern found
++ */
++tSCC zSolaris_Stdlib_NoreturnSelect0[] =
++ "(extern) _Noreturn (void quick_exit\\(int\\));";
++
++#define SOLARIS_STDLIB_NORETURN_TEST_CT 1
++static tTestDesc aSolaris_Stdlib_NoreturnTests[] = {
++ { TT_EGREP, zSolaris_Stdlib_NoreturnSelect0, (regex_t*)NULL }, };
++
++/*
++ * Fix Command Arguments for Solaris_Stdlib_Noreturn
++ */
++static const char* apzSolaris_Stdlib_NoreturnPatch[] = {
++ "format",
++ "%1 %2 __attribute__((__noreturn__));",
++ (char*)NULL };
++
++/* * * * * * * * * * * * * * * * * * * * * * * * * *
++ *
+ * Description of Statsswtch fix
+ */
+ tSCC zStatsswtchName[] =
+@@ -9664,9 +9818,9 @@
+ *
+ * List of all fixes
+ */
+-#define REGEX_COUNT 272
++#define REGEX_COUNT 276
+ #define MACH_LIST_SIZE_LIMIT 187
+-#define FIX_COUNT 236
++#define FIX_COUNT 240
+
+ /*
+ * 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,
+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 @@
+ };
+
+ /*
++ * Solaris <iso/stdio_iso.h> should deprecate gets before C11.
++ */
++fix = {
++ hackname = solaris_gets_c11;
++ mach = "*-*-solaris2*";
++ files = "iso/stdio_iso.h";
++ select = "(extern char[ \t]*\\*gets\\(char \\*\\));";
++
++ 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_;
++};
++
++/*
+ * 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.
+ */
+ 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