[gcc-6] 145/401: * Update to SVN 20160519 (r236452, 6.1.1) from the gcc-6-branch. * libgnat{prj, svn}-dev: Don't recommend gnat when building cross compiler packages.
Ximin Luo
infinity0 at debian.org
Wed Apr 5 15:48:32 UTC 2017
This is an automated email from the git hooks/post-receive script.
infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.
commit 386acf6f4804c65654e70934ec1a7d026834d230
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date: Thu May 19 14:08:00 2016 +0000
* Update to SVN 20160519 (r236452, 6.1.1) from the gcc-6-branch.
* libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler
packages.
git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@8848 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
debian/changelog | 14 +
debian/control.m4 | 10 +-
debian/patches/svn-updates.diff | 10562 +++++++++++++++++++++++++++++++++++---
debian/rules.conf | 6 +-
4 files changed, 9950 insertions(+), 642 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index ab9879b..962cec8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+gcc-6 (6.1.1-4) unstable; urgency=medium
+
+ * Update to SVN 20160519 (r236452, 6.1.1) from the gcc-6-branch.
+ - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86),
+ PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466,
+ PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857,
+ PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931,
+ PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM),
+ PR fortran/69603, PR fortran/71047, PR fortran/56226.
+ * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler
+ packages.
+
+ -- Matthias Klose <doko at debian.org> Thu, 19 May 2016 15:50:56 +0200
+
gcc-6 (6.1.1-3) unstable; urgency=medium
* Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch.
diff --git a/debian/control.m4 b/debian/control.m4
index 013b3d0..7859c39 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -4897,8 +4897,11 @@ Package: libgnatvsn`'GNAT_V-dev`'LS
Section: libdevel
Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
Priority: extra
-Depends: BASELDEP, gnat`'PV`'TS (ifdef(`TARGET',`>= ${gnat:SoftVersion}',`= ${gnat:Version}')),
+Depends: BASELDEP, ifdef(`TARGET',`',`gnat`'PV`'TS (ifdef(`TARGET',`>= ${gnat:SoftVersion}',`= ${gnat:Version}')),')
libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends}
+ifdef(`TARGET',`
+Recommends: gnat`'PV`'TS (>= ${gnat:SoftVersion}
+')`'dnl
Conflicts: libgnatvsn-dev (<< `'GNAT_V),
libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev,
libgnatvsn4.5-dev, libgnatvsn4.6-dev, libgnatvsn4.9-dev,
@@ -4958,9 +4961,12 @@ Package: libgnatprj`'GNAT_V-dev`'LS
Section: libdevel
Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
Priority: extra
-Depends: BASELDEP, gnat`'PV`'TS (ifdef(`TARGET',`>= ${gnat:SoftVersion}',`= ${gnat:Version}')),
+Depends: BASELDEP, ifdef(`TARGET',`',`gnat`'PV`'TS (ifdef(`TARGET',`>= ${gnat:SoftVersion}',`= ${gnat:Version}')),')
libgnatprj`'GNAT_V`'LS (= ${gnat:Version}),
libgnatvsn`'GNAT_V-dev`'LS (= ${gnat:Version}), ${misc:Depends}
+ifdef(`TARGET',`
+Recommends: gnat`'PV`'TS (>= ${gnat:SoftVersion}
+')`'dnl
Conflicts: libgnatprj-dev (<< `'GNAT_V),
libgnatprj4.1-dev, libgnatprj4.3-dev, libgnatprj4.4-dev,
libgnatprj4.5-dev, libgnatprj4.6-dev, libgnatprj4.9-dev,
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index d0f6b6a..dc4fb66 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 6 branch upto 20160511 (r236144).
+# DP: updates from the 6 branch upto 20160519 (r236452).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Wed May 11 22:27:24 CEST 2016
-Wed May 11 20:27:24 UTC 2016 (revision 236144)
+Thu May 19 13:28:08 CEST 2016
+Thu May 19 11:28:08 UTC 2016 (revision 236452)
EOF
}
@@ -16,7 +16,11 @@ Index: libgomp/ChangeLog
===================================================================
--- a/src/libgomp/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/libgomp/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,19 @@
+@@ -1,3 +1,23 @@
++2016-05-16 Martin Jambor <mjambor at suse.cz>
++
++ * testsuite/libgomp.hsa.c/complex-align-2.c: New test.
++
+2016-04-29 Cesar Philippidis <cesar at codesourcery.com>
+
+ PR middle-end/70626
@@ -76,6 +80,38 @@ Index: libgomp/testsuite/libgomp.oacc-c++/template-reduction.C
for (int i = 0; i < n; i++)
s += i+c;
+Index: libgomp/testsuite/libgomp.hsa.c/complex-align-2.c
+===================================================================
+--- a/src/libgomp/testsuite/libgomp.hsa.c/complex-align-2.c (.../tags/gcc_6_1_0_release)
++++ b/src/libgomp/testsuite/libgomp.hsa.c/complex-align-2.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,27 @@
++#pragma omp declare target
++ _Complex int *g;
++#pragma omp end declare target
++
++
++
++_Complex float f(void);
++
++int
++main ()
++{
++ _Complex int y;
++#pragma omp target map(from:y)
++ {
++ _Complex int x;
++ g = &x;
++ __imag__ x = 1;
++ __real__ x = 2;
++ y = x;
++ }
++
++ if ((__imag__ y != 1)
++ || (__real__ y != 2))
++ __builtin_abort ();
++ return 0;
++}
++
Index: libgomp/testsuite/libgomp.oacc-fortran/combined-reduction.f90
===================================================================
--- a/src/libgomp/testsuite/libgomp.oacc-fortran/combined-reduction.f90 (.../tags/gcc_6_1_0_release)
@@ -292,6 +328,101 @@ Index: libgomp/testsuite/libgomp.c/pr70680-2.c
+ f4 ();
+ return 0;
+}
+Index: libsanitizer/asan/asan_malloc_linux.cc
+===================================================================
+--- a/src/libsanitizer/asan/asan_malloc_linux.cc (.../tags/gcc_6_1_0_release)
++++ b/src/libsanitizer/asan/asan_malloc_linux.cc (.../branches/gcc-6-branch)
+@@ -24,33 +24,49 @@
+ // ---------------------- Replacement functions ---------------- {{{1
+ using namespace __asan; // NOLINT
+
++static uptr allocated_for_dlsym;
++static const uptr kDlsymAllocPoolSize = 1024;
++static uptr alloc_memory_for_dlsym[kDlsymAllocPoolSize];
++
++static bool IsInDlsymAllocPool(const void *ptr) {
++ uptr off = (uptr)ptr - (uptr)alloc_memory_for_dlsym;
++ return off < sizeof(alloc_memory_for_dlsym);
++}
++
++static void *AllocateFromLocalPool(uptr size_in_bytes) {
++ uptr size_in_words = RoundUpTo(size_in_bytes, kWordSize) / kWordSize;
++ void *mem = (void*)&alloc_memory_for_dlsym[allocated_for_dlsym];
++ allocated_for_dlsym += size_in_words;
++ CHECK_LT(allocated_for_dlsym, kDlsymAllocPoolSize);
++ return mem;
++}
++
+ INTERCEPTOR(void, free, void *ptr) {
+ GET_STACK_TRACE_FREE;
++ if (UNLIKELY(IsInDlsymAllocPool(ptr)))
++ return;
+ asan_free(ptr, &stack, FROM_MALLOC);
+ }
+
+ INTERCEPTOR(void, cfree, void *ptr) {
+ GET_STACK_TRACE_FREE;
++ if (UNLIKELY(IsInDlsymAllocPool(ptr)))
++ return;
+ asan_free(ptr, &stack, FROM_MALLOC);
+ }
+
+ INTERCEPTOR(void*, malloc, uptr size) {
++ if (UNLIKELY(!asan_inited))
++ // Hack: dlsym calls malloc before REAL(malloc) is retrieved from dlsym.
++ return AllocateFromLocalPool(size);
+ GET_STACK_TRACE_MALLOC;
+ return asan_malloc(size, &stack);
+ }
+
+ INTERCEPTOR(void*, calloc, uptr nmemb, uptr size) {
+- if (UNLIKELY(!asan_inited)) {
++ if (UNLIKELY(!asan_inited))
+ // Hack: dlsym calls calloc before REAL(calloc) is retrieved from dlsym.
+- const uptr kCallocPoolSize = 1024;
+- static uptr calloc_memory_for_dlsym[kCallocPoolSize];
+- static uptr allocated;
+- uptr size_in_words = ((nmemb * size) + kWordSize - 1) / kWordSize;
+- void *mem = (void*)&calloc_memory_for_dlsym[allocated];
+- allocated += size_in_words;
+- CHECK(allocated < kCallocPoolSize);
+- return mem;
+- }
++ return AllocateFromLocalPool(nmemb * size);
+ GET_STACK_TRACE_MALLOC;
+ return asan_calloc(nmemb, size, &stack);
+ }
+@@ -57,6 +73,13 @@
+
+ INTERCEPTOR(void*, realloc, void *ptr, uptr size) {
+ GET_STACK_TRACE_MALLOC;
++ if (UNLIKELY(IsInDlsymAllocPool(ptr))) {
++ uptr offset = (uptr)ptr - (uptr)alloc_memory_for_dlsym;
++ uptr copy_size = Min(size, kDlsymAllocPoolSize - offset);
++ void *new_ptr = asan_malloc(size, &stack);
++ internal_memcpy(new_ptr, ptr, copy_size);
++ return new_ptr;
++ }
+ return asan_realloc(ptr, size, &stack);
+ }
+
+Index: libsanitizer/ChangeLog
+===================================================================
+--- a/src/libsanitizer/ChangeLog (.../tags/gcc_6_1_0_release)
++++ b/src/libsanitizer/ChangeLog (.../branches/gcc-6-branch)
+@@ -1,3 +1,12 @@
++2016-05-18 Jakub Jelinek <jakub at redhat.com>
++
++ Backported from mainline
++ 2016-05-17 Jakub Jelinek <jakub at redhat.com>
++
++ PR sanitizer/71160
++ * asan/asan_malloc_linux.cc: Cherry pick upstream r254395
++ and r269633.
++
+ 2016-04-27 Release Manager
+
+ * GCC 6.1.0 released.
Index: libstdc++-v3/src/c++11/cow-stdexcept.cc
===================================================================
--- a/src/libstdc++-v3/src/c++11/cow-stdexcept.cc (.../tags/gcc_6_1_0_release)
@@ -476,6 +607,280 @@ Index: libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.
+ tuple<Something> t2 = t1;
+}
+
+Index: libiberty/ChangeLog
+===================================================================
+--- a/src/libiberty/ChangeLog (.../tags/gcc_6_1_0_release)
++++ b/src/libiberty/ChangeLog (.../branches/gcc-6-branch)
+@@ -1,3 +1,30 @@
++2016-05-19 Jakub Jelinek <jakub at redhat.com>
++
++ Backported from mainline
++ 2016-05-19 Jakub Jelinek <jakub at redhat.com>
++
++ PR c++/70498
++ * cp-demangle.c (d_expression_1): Formatting fix.
++
++ 2016-05-02 Marcel Böhme <boehme.marcel at gmail.com>
++
++ PR c++/70498
++ * cp-demangle.c: Parse numbers as integer instead of long to avoid
++ overflow after sanity checks. Include <limits.h> if available.
++ (INT_MAX): Define if necessary.
++ (d_make_template_param): Takes integer argument instead of long.
++ (d_make_function_param): Likewise.
++ (d_append_num): Likewise.
++ (d_identifier): Likewise.
++ (d_number): Parse as and return integer.
++ (d_compact_number): Handle overflow.
++ (d_source_name): Change variable type to integer for parsed number.
++ (d_java_resource): Likewise.
++ (d_special_name): Likewise.
++ (d_discriminator): Likewise.
++ (d_unnamed_type): Likewise.
++ * testsuite/demangle-expected: Add regression test cases.
++
+ 2016-04-27 Release Manager
+
+ * GCC 6.1.0 released.
+@@ -16,7 +43,7 @@
+ -1.
+
+ 2016-03-31 Mikhail Maltsev <maltsevm at gmail.com>
+- Marcel Bohme boehme.marcel at gmail.com
++ Marcel Bohme <boehme.marcel at gmail.com>
+
+ PR c++/67394
+ PR c++/70481
+@@ -2037,7 +2064,7 @@
+ that are locale-independent.
+ * Makefile.in (filename_cmp.o): Add dependency on safe-ctype.h.
+
+-2007-04-11 Thomas Neumann tneumann at users.sourceforge.net
++2007-04-11 Thomas Neumann <tneumann at users.sourceforge.net>
+
+ * argv.c: Use ANSI C declarations.
+ * make-relative-prefix.c: Likewise.
+Index: libiberty/testsuite/demangle-expected
+===================================================================
+--- a/src/libiberty/testsuite/demangle-expected (.../tags/gcc_6_1_0_release)
++++ b/src/libiberty/testsuite/demangle-expected (.../branches/gcc-6-branch)
+@@ -4422,12 +4422,22 @@
+ _Z3fooI1FEN1XIXszdtcl1PclcvT__EEE5arrayEE4TypeEv
+ X<sizeof ((P(((F)())())).array)>::Type foo<F>()
+ #
+-# Tests a use-after-free problem
++# Tests a use-after-free problem PR70481
+
+ _Q.__0
+ ::Q.(void)
+ #
+-# Tests a use-after-free problem
++# Tests a use-after-free problem PR70481
+
+ _Q10-__9cafebabe.
+ cafebabe.::-(void)
++#
++# Tests integer overflow problem PR70492
++
++__vt_90000000000cafebabe
++__vt_90000000000cafebabe
++#
++# Tests write access violation PR70498
++
++_Z80800000000000000000000
++_Z80800000000000000000000
+Index: libiberty/cp-demangle.c
+===================================================================
+--- a/src/libiberty/cp-demangle.c (.../tags/gcc_6_1_0_release)
++++ b/src/libiberty/cp-demangle.c (.../branches/gcc-6-branch)
+@@ -128,6 +128,13 @@
+ # endif /* alloca */
+ #endif /* HAVE_ALLOCA_H */
+
++#ifdef HAVE_LIMITS_H
++#include <limits.h>
++#endif
++#ifndef INT_MAX
++# define INT_MAX (int)(((unsigned int) ~0) >> 1) /* 0x7FFFFFFF */
++#endif
++
+ #include "ansidecl.h"
+ #include "libiberty.h"
+ #include "demangle.h"
+@@ -398,7 +405,7 @@
+ struct demangle_component *);
+
+ static struct demangle_component *
+-d_make_template_param (struct d_info *, long);
++d_make_template_param (struct d_info *, int);
+
+ static struct demangle_component *
+ d_make_sub (struct d_info *, const char *, int);
+@@ -421,9 +428,9 @@
+
+ static struct demangle_component *d_source_name (struct d_info *);
+
+-static long d_number (struct d_info *);
++static int d_number (struct d_info *);
+
+-static struct demangle_component *d_identifier (struct d_info *, long);
++static struct demangle_component *d_identifier (struct d_info *, int);
+
+ static struct demangle_component *d_operator_name (struct d_info *);
+
+@@ -1119,7 +1126,7 @@
+ /* Add a new template parameter. */
+
+ static struct demangle_component *
+-d_make_template_param (struct d_info *di, long i)
++d_make_template_param (struct d_info *di, int i)
+ {
+ struct demangle_component *p;
+
+@@ -1135,7 +1142,7 @@
+ /* Add a new function parameter. */
+
+ static struct demangle_component *
+-d_make_function_param (struct d_info *di, long i)
++d_make_function_param (struct d_info *di, int i)
+ {
+ struct demangle_component *p;
+
+@@ -1620,7 +1627,7 @@
+ static struct demangle_component *
+ d_source_name (struct d_info *di)
+ {
+- long len;
++ int len;
+ struct demangle_component *ret;
+
+ len = d_number (di);
+@@ -1633,12 +1640,12 @@
+
+ /* number ::= [n] <(non-negative decimal integer)> */
+
+-static long
++static int
+ d_number (struct d_info *di)
+ {
+ int negative;
+ char peek;
+- long ret;
++ int ret;
+
+ negative = 0;
+ peek = d_peek_char (di);
+@@ -1681,7 +1688,7 @@
+ /* identifier ::= <(unqualified source code identifier)> */
+
+ static struct demangle_component *
+-d_identifier (struct d_info *di, long len)
++d_identifier (struct d_info *di, int len)
+ {
+ const char *name;
+
+@@ -1702,7 +1709,7 @@
+ /* Look for something which looks like a gcc encoding of an
+ anonymous namespace, and replace it with a more user friendly
+ name. */
+- if (len >= (long) ANONYMOUS_NAMESPACE_PREFIX_LEN + 2
++ if (len >= (int) ANONYMOUS_NAMESPACE_PREFIX_LEN + 2
+ && memcmp (name, ANONYMOUS_NAMESPACE_PREFIX,
+ ANONYMOUS_NAMESPACE_PREFIX_LEN) == 0)
+ {
+@@ -1870,7 +1877,7 @@
+ {
+ struct demangle_component *p = NULL;
+ struct demangle_component *next = NULL;
+- long len, i;
++ int len, i;
+ char c;
+ const char *str;
+
+@@ -2012,7 +2019,7 @@
+ case 'C':
+ {
+ struct demangle_component *derived_type;
+- long offset;
++ int offset;
+ struct demangle_component *base_type;
+
+ derived_type = cplus_demangle_type (di);
+@@ -2946,10 +2953,10 @@
+
+ /* <non-negative number> _ */
+
+-static long
++static int
+ d_compact_number (struct d_info *di)
+ {
+- long num;
++ int num;
+ if (d_peek_char (di) == '_')
+ num = 0;
+ else if (d_peek_char (di) == 'n')
+@@ -2957,7 +2964,7 @@
+ else
+ num = d_number (di) + 1;
+
+- if (! d_check_char (di, '_'))
++ if (num < 0 || ! d_check_char (di, '_'))
+ return -1;
+ return num;
+ }
+@@ -2969,7 +2976,7 @@
+ static struct demangle_component *
+ d_template_param (struct d_info *di)
+ {
+- long param;
++ int param;
+
+ if (! d_check_char (di, 'T'))
+ return NULL;
+@@ -3171,9 +3178,10 @@
+ }
+ else
+ {
+- index = d_compact_number (di) + 1;
+- if (index == 0)
++ index = d_compact_number (di);
++ if (index == INT_MAX || index == -1)
+ return NULL;
++ index++;
+ }
+ return d_make_function_param (di, index);
+ }
+@@ -3502,7 +3510,7 @@
+ static int
+ d_discriminator (struct d_info *di)
+ {
+- long discrim;
++ int discrim;
+
+ if (d_peek_char (di) != '_')
+ return 1;
+@@ -3558,7 +3566,7 @@
+ d_unnamed_type (struct d_info *di)
+ {
+ struct demangle_component *ret;
+- long num;
++ int num;
+
+ if (! d_check_char (di, 'U'))
+ return NULL;
+@@ -4086,10 +4094,10 @@
+ }
+
+ static inline void
+-d_append_num (struct d_print_info *dpi, long l)
++d_append_num (struct d_print_info *dpi, int l)
+ {
+ char buf[25];
+- sprintf (buf,"%ld", l);
++ sprintf (buf,"%d", l);
+ d_append_string (dpi, buf);
+ }
+
Index: libatomic/configure.tgt
===================================================================
--- a/src/libatomic/configure.tgt (.../tags/gcc_6_1_0_release)
@@ -610,6 +1015,50 @@ Index: libatomic/config/rtems/lock.c
+{
+ _Libatomic_Unlock_n (ptr, n);
+}
+Index: libbacktrace/elf.c
+===================================================================
+--- a/src/libbacktrace/elf.c (.../tags/gcc_6_1_0_release)
++++ b/src/libbacktrace/elf.c (.../branches/gcc-6-branch)
+@@ -866,6 +866,9 @@
+ libraries. */
+
+ static int
++#ifdef __i386__
++__attribute__ ((__force_align_arg_pointer__))
++#endif
+ phdr_callback (struct dl_phdr_info *info, size_t size ATTRIBUTE_UNUSED,
+ void *pdata)
+ {
+Index: libbacktrace/ChangeLog
+===================================================================
+--- a/src/libbacktrace/ChangeLog (.../tags/gcc_6_1_0_release)
++++ b/src/libbacktrace/ChangeLog (.../branches/gcc-6-branch)
+@@ -1,3 +1,9 @@
++2016-05-18 Uros Bizjak <ubizjak at gmail.com>
++
++ PR target/71161
++ * elf.c (phdr_callback) [__i386__]: Add
++ __attribute__((__force_align_arg_pointer__)).
++
+ 2016-04-27 Release Manager
+
+ * GCC 6.1.0 released.
+@@ -19,12 +25,13 @@
+
+ 2015-12-18 Andris Pavenis <andris.pavenis at iki.fi>
+
+- * configure.ac: Specify that DJGPP do not have mmap even when sys/mman.h exists
++ * configure.ac: Specify that DJGPP do not have mmap
++ even when sys/mman.h exists.
+ * configure: Regenerate
+
+ 2015-12-09 John David Anglin <danglin at gcc.gnu.org>
+
+- PR 68115/libfortran
++ PR libgfortran/68115
+ * configure.ac: Set libbacktrace_cv_sys_sync to no on hppa*-*-hpux*.
+ * configure: Regenerate.
+ * elf.c (backtrace_initialize): Cast __sync_bool_compare_and_swap call
Index: libjava/ChangeLog
===================================================================
--- a/src/libjava/ChangeLog (.../tags/gcc_6_1_0_release)
@@ -639,6 +1088,46 @@ Index: libjava/testsuite/lib/libjava.exp
foreach x {. .. ../.. ../../..} {
if {[file exists $d/$x/libtool]} then {
# We have to run silently to avoid DejaGNU lossage.
+Index: libgcc/config.host
+===================================================================
+--- a/src/libgcc/config.host (.../tags/gcc_6_1_0_release)
++++ b/src/libgcc/config.host (.../branches/gcc-6-branch)
+@@ -931,15 +931,10 @@
+ mn10300-*-*)
+ tmake_file=t-fdpbit
+ ;;
+-moxie-*-elf | moxie-*-moxiebox* | moxie-*-uclinux*)
+- tmake_file="moxie/t-moxie t-softfp-sfdf t-softfp-excl t-softfp"
++moxie-*-elf | moxie-*-moxiebox* | moxie-*-uclinux* | moxie-*-rtems*)
++ tmake_file="$tmake_file moxie/t-moxie t-softfp-sfdf t-softfp-excl t-softfp"
+ extra_parts="$extra_parts crti.o crtn.o crtbegin.o crtend.o"
+ ;;
+-moxie-*-rtems*)
+- tmake_file="$tmake_file moxie/t-moxie t-softfp-sfdf t-softfp-excl t-softfp"
+- # Don't use default.
+- extra_parts=
+- ;;
+ msp430*-*-elf)
+ tmake_file="$tm_file t-crtstuff t-fdpbit msp430/t-msp430"
+ extra_parts="$extra_parts libmul_none.a libmul_16.a libmul_32.a libmul_f5.a"
+Index: libgcc/ChangeLog
+===================================================================
+--- a/src/libgcc/ChangeLog (.../tags/gcc_6_1_0_release)
++++ b/src/libgcc/ChangeLog (.../branches/gcc-6-branch)
+@@ -1,3 +1,13 @@
++2016-05-17 Sebastian Huber <sebastian.huber at embedded-brains.de>
++
++ Backport from mainline
++ 2016-05-10 Joel Sherrill <joel at rtems.org>
++
++ PR libgcc/70720
++ * config.host (moxie-*-rtems*): Merge this stanza with other moxie
++ targets so the same extra_parts are built. Also have tmake_file add
++ on to its value rather than override.
++
+ 2016-04-27 Release Manager
+
+ * GCC 6.1.0 released.
Index: gcc/tree-chkp.c
===================================================================
--- a/src/gcc/tree-chkp.c (.../tags/gcc_6_1_0_release)
@@ -871,18 +1360,64 @@ Index: gcc/c/c-parser.c
tree block = c_begin_omp_parallel ();
tree clauses;
c_parser_oacc_loop (loc, parser, p_name, mask, &clauses, if_p);
+Index: gcc/cgraph.c
+===================================================================
+--- a/src/gcc/cgraph.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/cgraph.c (.../branches/gcc-6-branch)
+@@ -1507,7 +1507,8 @@
+ /* If the call becomes noreturn, remove the LHS if possible. */
+ if (lhs
+ && (gimple_call_flags (new_stmt) & ECF_NORETURN)
+- && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST)
++ && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST
++ && !TREE_ADDRESSABLE (TREE_TYPE (lhs)))
+ {
+ if (TREE_CODE (lhs) == SSA_NAME)
+ {
Index: gcc/DATESTAMP
===================================================================
--- a/src/gcc/DATESTAMP (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/DATESTAMP (.../branches/gcc-6-branch)
@@ -1 +1 @@
-20160427
-+20160511
++20160519
Index: gcc/fold-const.c
===================================================================
--- a/src/gcc/fold-const.c (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/fold-const.c (.../branches/gcc-6-branch)
-@@ -13549,6 +13549,9 @@
+@@ -836,11 +836,10 @@
+ *minus_litp = *litp, *litp = 0;
+ if (neg_conp_p)
+ *conp = negate_expr (*conp);
+- if (neg_var_p)
++ if (neg_var_p && var)
+ {
+- /* Convert to TYPE before negating a pointer type expr. */
+- if (var && POINTER_TYPE_P (TREE_TYPE (var)))
+- var = fold_convert_loc (loc, type, var);
++ /* Convert to TYPE before negating. */
++ var = fold_convert_loc (loc, type, var);
+ var = negate_expr (var);
+ }
+ }
+@@ -863,10 +862,12 @@
+ else if (*minus_litp)
+ *litp = *minus_litp, *minus_litp = 0;
+ *conp = negate_expr (*conp);
+- /* Convert to TYPE before negating a pointer type expr. */
+- if (var && POINTER_TYPE_P (TREE_TYPE (var)))
+- var = fold_convert_loc (loc, type, var);
+- var = negate_expr (var);
++ if (var)
++ {
++ /* Convert to TYPE before negating. */
++ var = fold_convert_loc (loc, type, var);
++ var = negate_expr (var);
++ }
+ }
+
+ return var;
+@@ -13549,6 +13550,9 @@
if (!DECL_P (base))
base = get_base_address (base);
@@ -892,11 +1427,144 @@ Index: gcc/fold-const.c
if (!base)
return false;
+Index: gcc/omp-low.c
+===================================================================
+--- a/src/gcc/omp-low.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/omp-low.c (.../branches/gcc-6-branch)
+@@ -13680,6 +13680,9 @@
+ tree new_parm_decl = copy_node (DECL_ARGUMENTS (kern_fndecl));
+ DECL_CONTEXT (new_parm_decl) = kern_fndecl;
+ DECL_ARGUMENTS (kern_fndecl) = new_parm_decl;
++ gcc_assert (VOID_TYPE_P (TREE_TYPE (DECL_RESULT (kern_fndecl))));
++ DECL_RESULT (kern_fndecl) = copy_node (DECL_RESULT (kern_fndecl));
++ DECL_CONTEXT (DECL_RESULT (kern_fndecl)) = kern_fndecl;
+ struct function *kern_cfun = DECL_STRUCT_FUNCTION (kern_fndecl);
+ kern_cfun->curr_properties = cfun->curr_properties;
+
Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,196 @@
+@@ -1,3 +1,315 @@
++2016-05-18 Martin Liska <mliska at suse.cz>
++
++ Backport from mainline
++ 2016-05-18 Martin Liska <mliska at suse.cz>
++
++ PR fortran/70856
++ * ipa-icf.c (sem_variable::merge): Set DECL_PT_UID for
++ merged variables.
++
++2016-05-18 Jakub Jelinek <jakub at redhat.com>
++
++ PR c++/71100
++ * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't drop
++ lhs if it has TREE_ADDRESSABLE type.
++
++2016-05-18 Uros Bizjak <ubizjak at gmail.com>
++
++ PR target/71145
++ * config/alpha/alpha.md (trap): Add (use (reg:DI 29)).
++ (*exception_receiver_1): Return "#" for TARGET_EXPLICIT_RELOCS.
++
++2016-05-17 Thomas Schwinge <thomas at codesourcery.com>
++
++ Backport trunk r235748:
++ PR target/70860
++ * config/nvptx/nvptx.c (nvptx_libcall_value): Handle NULL cfun.
++ (nvptx_function_value): Assert non-NULL cfun.
++
++2016-05-17 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ Backport from mainline
++ 2016-05-17 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ PR target/70809
++ * config/aarch64/aarch64-simd.md (aarch64_vmls<mode>): Delete.
++
++2016-05-16 Martin Jambor <mjambor at suse.cz>
++
++ * hsa-gen.c (fillup_for_decl): Increase alignment to natural one.
++ (get_symbol_for_decl): Sorry if a global symbol in under-aligned.
++
++2016-05-16 Martin Jambor <mjambor at suse.cz>
++
++ PR hsa/70857
++ * omp-low.c (grid_expand_target_grid_body): Copy RESULT_DECL of
++ the outlined kernel function.
++
++2016-05-16 James Norris <jnorris at codesourcery.com>
++
++ Backport from mainline r236098.
++ 2016-05-10 James Norris <jnorris at codesourcery.com>
++
++ PR driver/68463
++ * config/rs6000/sysv4.h (CRTOFFLOADBEGIN): Define. Add crtoffloadbegin.o
++ if offloading is enabled and -fopenacc or -fopenmp is specified.
++ (CRTOFFLOADEND): Likewise.
++ (STARTFILE_LINUX_SPEC): Add CRTOFFLOADBEGIN.
++ (ENDFILE_LINUX_SPEC): Add CRTOFFLOADEND.
++
++2016-05-16 Alan Modra <amodra at gmail.com>
++
++ Apply from mainline
++ 2016-05-10 Alan Modra <amodra at gmail.com>
++ PR target/70947
++ * config/rs6000/rs6000.c (rs6000_expand_split_stack_prologue): Stop
++ regrename modifying insns saving lr before __morestack call.
++ * config/rs6000/rs6000.md (split_stack_return): Similarly for
++ insns restoring lr after __morestack call.
++
++2016-05-13 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-04-27 Richard Biener <rguenther at suse.de>
++
++ PR ipa/70760
++ * tree-ssa-structalias.c (find_func_aliases_for_call): Use
++ aggregate_value_p to determine if a function result is
++ returned by reference.
++
++ 2016-05-06 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/70931
++ * dwarf2out.c (native_encode_initializer): Skip zero-sized fields.
++
++ 2016-05-06 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/70941
++ * fold-const.c (split_tree): Always convert to the original type
++ before negating.
++
++2016-05-12 Martin Liska <mliska at suse.cz>
++
++ Backport from mainline
++ 2016-05-10 Martin Liska <mliska at suse.cz>
++
++ * tree-inline.c (remap_dependence_clique): Do not remap
++ debugging statements.
++
++2016-05-12 Ilya Enkovich <ilya.enkovich at intel.com>
++
++ Backport from mainline r236171.
++ 2016-05-12 Ilya Enkovich <ilya.enkovich at intel.com>
++
++ PR tree-optimization/71006
++ * tree-vect-loop.c (vect_determine_vectorization_factor): Don't
++ consider COND_EXPR as a mask producer.
++
++2016-05-12 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ Backport from mainline
++ 2016-05-12 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ PR target/70830
++ * config/arm/arm.c (arm_output_multireg_pop): Avoid POP instruction
++ when popping the PC and within an interrupt handler routine.
++ Add missing tab to output of "ldmfd".
++ (output_return_instruction): Output LDMFD with SP update rather
++ than POP when returning from interrupt handler.
++
+2016-05-11 Ilya Enkovich <ilya.enkovich at intel.com>
+
+ Backport from mainline r236088.
@@ -1093,7 +1761,7 @@ Index: gcc/ChangeLog
2016-04-27 Release Manager
* GCC 6.1.0 released.
-@@ -49,7 +242,7 @@
+@@ -49,7 +361,7 @@
constant boolean.
2016-04-20 Andrew Pinski <apinski at cavium.com>
@@ -1106,11 +1774,12 @@ Index: gcc/testsuite/gcc.target/powerpc/pr70963.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/powerpc/pr70963.c (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/testsuite/gcc.target/powerpc/pr70963.c (.../branches/gcc-6-branch)
-@@ -0,0 +1,43 @@
-+/* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */
-+/* { dg-require-effective-target powerpc_vsx_ok } */
+@@ -0,0 +1,44 @@
++/* { dg-do run { target powerpc64*-*-* } } */
++/* { dg-require-effective-target p8vector_hw } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-options "-maltivec" } */
++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
++/* { dg-options "-mcpu=power8" } */
+
+#include <stdlib.h>
+#include <stdio.h>
@@ -1150,6 +1819,116 @@ Index: gcc/testsuite/gcc.target/powerpc/pr70963.c
+ check (vec_all_eq (c, y), "xvcvdpuxds");
+ check (vec_all_eq (d, x), "vec_ctf unsigned");
+}
+Index: gcc/testsuite/gcc.target/arm/interrupt-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/interrupt-1.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/interrupt-1.c (.../branches/gcc-6-branch)
+@@ -1,8 +1,8 @@
+ /* Verify that prologue and epilogue are correct for functions with
+ __attribute__ ((interrupt)). */
+-/* { dg-do compile } */
++/* { dg-do assemble } */
+ /* { dg-require-effective-target arm_nothumb } */
+-/* { dg-options "-O0 -marm" } */
++/* { dg-options "-O0 -marm -save-temps" } */
+
+ /* This test is not valid when -mthumb. */
+ extern void bar (int);
+@@ -14,4 +14,4 @@
+ }
+
+ /* { dg-final { scan-assembler "push\t{r0, r1, r2, r3, r4, fp, ip, lr}" } } */
+-/* { dg-final { scan-assembler "pop\t{r0, r1, r2, r3, r4, fp, ip, pc}\\^" } } */
++/* { dg-final { scan-assembler "ldmfd\tsp!, {r0, r1, r2, r3, r4, fp, ip, pc}\\^" } } */
+Index: gcc/testsuite/gcc.target/arm/interrupt-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/interrupt-2.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/interrupt-2.c (.../branches/gcc-6-branch)
+@@ -1,8 +1,8 @@
+ /* Verify that prologue and epilogue are correct for functions with
+ __attribute__ ((interrupt)). */
+-/* { dg-do compile } */
++/* { dg-do assemble } */
+ /* { dg-require-effective-target arm_nothumb } */
+-/* { dg-options "-O1 -marm" } */
++/* { dg-options "-O1 -marm -save-temps" } */
+
+ /* This test is not valid when -mthumb. */
+ extern void bar (int);
+@@ -16,4 +16,4 @@
+ }
+
+ /* { dg-final { scan-assembler "push\t{r0, r1, r2, r3, r4, r5, ip, lr}" } } */
+-/* { dg-final { scan-assembler "pop\t{r0, r1, r2, r3, r4, r5, ip, pc}\\^" } } */
++/* { dg-final { scan-assembler "ldmfd\tsp!, {r0, r1, r2, r3, r4, r5, ip, pc}\\^" } } */
+Index: gcc/testsuite/gcc.target/arm/pr70830.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/pr70830.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/pr70830.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,14 @@
++/* PR target/70830. */
++/* { dg-do assemble } */
++/* { dg-require-effective-target arm_arm_ok } */
++/* { dg-options "-Os -marm -save-temps" } */
++
++/* This test is not valid when -mthumb. */
++
++extern void prints (char *);
++
++void __attribute__ ((interrupt ("IRQ"))) dm3730_IRQHandler(void)
++{
++ prints("IRQ" );
++}
++/* { dg-final { scan-assembler "ldmfd\tsp!, {r0, r1, r2, r3, ip, pc}\\^" } } */
+Index: gcc/testsuite/gcc.target/aarch64/noplt_3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/noplt_3.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/noplt_3.c (.../branches/gcc-6-branch)
+@@ -16,5 +16,5 @@
+ dec (a);
+ }
+
+-/* { dg-final { scan-assembler-times "br" 2 } } */
++/* { dg-final { scan-assembler-times "br\t" 2 } } */
+ /* { dg-final { scan-assembler-not "b\t" } } */
+Index: gcc/testsuite/gcc.target/aarch64/pr70809_1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/pr70809_1.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/pr70809_1.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,18 @@
++/* PR target/70809. */
++/* { dg-do compile } */
++/* { dg-options "-O2 -ftree-vectorize -ffp-contract=off -mtune=xgene1" } */
++
++/* Check that vector FMLS is not generated when contraction is disabled. */
++
++void
++foo (float *__restrict__ __attribute__ ((aligned (16))) a,
++ float *__restrict__ __attribute__ ((aligned (16))) x,
++ float *__restrict__ __attribute__ ((aligned (16))) y,
++ float *__restrict__ __attribute__ ((aligned (16))) z)
++{
++ unsigned i = 0;
++ for (i = 0; i < 256; i++)
++ a[i] = x[i] - (y[i] * z[i]);
++}
++
++/* { dg-final { scan-assembler-not "fmls\tv.*" } } */
+Index: gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/tail_indirect_call_1.c (.../branches/gcc-6-branch)
+@@ -3,8 +3,8 @@
+
+ typedef void FP (int);
+
+-/* { dg-final { scan-assembler "br" } } */
+-/* { dg-final { scan-assembler-not "blr" } } */
++/* { dg-final { scan-assembler-times "br\t" 2 } } */
++/* { dg-final { scan-assembler-not "blr\t" } } */
+ void
+ f1 (FP fp, int n)
+ {
Index: gcc/testsuite/gcc.target/i386/pr70858.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/i386/pr70858.c (.../tags/gcc_6_1_0_release)
@@ -1345,6 +2124,21 @@ Index: gcc/testsuite/gcc.target/i386/pr70877.c
+{
+ d = ((double (*) (int)) foo) (i); /* { dg-warning "function called through a non-compatible type" } */
+}
+Index: gcc/testsuite/gfortran.dg/pr70931.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr70931.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr70931.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,10 @@
++! { dg-do compile }
++! { dg-options "-g" }
++program p
++ type t
++ integer :: a
++ integer :: b(0)
++ end type
++ type(t), parameter :: z = t(1, [2])
++ print *, z
++end
Index: gcc/testsuite/gfortran.dg/gomp/pr70855.f90
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/gomp/pr70855.f90 (.../tags/gcc_6_1_0_release)
@@ -1381,6 +2175,295 @@ Index: gcc/testsuite/gfortran.dg/goacc/reduction-2.f95
! { dg-final { scan-tree-dump-times "acc loop private.p. reduction..:a." 1 "gimple" } }
! { dg-final { scan-tree-dump-times "target oacc_kernels map.force_tofrom:a .len: 4.." 1 "gimple" } }
! { dg-final { scan-tree-dump-times "acc loop private.k. reduction..:a." 1 "gimple" } }
+Index: gcc/testsuite/gfortran.dg/dec_union_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_4.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_4.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,63 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test nested UNIONs.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Nested unions
++structure /s4/
++ union ! U0 ! rax
++ map
++ character(16) rx
++ end map
++ map
++ character(8) rh ! rah
++ union ! U1
++ map
++ character(8) rl ! ral
++ end map
++ map
++ character(8) ex ! eax
++ end map
++ map
++ character(4) eh ! eah
++ union ! U2
++ map
++ character(4) el ! eal
++ end map
++ map
++ character(4) x ! ax
++ end map
++ map
++ character(2) h ! ah
++ character(2) l ! al
++ end map
++ end union
++ end map
++ end union
++ end map
++ end union
++end structure
++record /s4/ r4
++
++
++! Nested unions
++r4.rx = 'AAAAAAAA.BBB.C.D'
++
++if ( r4.rx .ne. 'AAAAAAAA.BBB.C.D' ) call aborts ("rax")
++if ( r4.rh .ne. 'AAAAAAAA' ) call aborts ("rah")
++if ( r4.rl .ne. '.BBB.C.D' ) call aborts ("ral")
++if ( r4.ex .ne. '.BBB.C.D' ) call aborts ("eax")
++if ( r4.eh .ne. '.BBB' ) call aborts ("eah")
++if ( r4.el .ne. '.C.D' ) call aborts ("eal")
++if ( r4.x .ne. '.C.D' ) call aborts ("ax")
++if ( r4.h .ne. '.C' ) call aborts ("ah")
++if ( r4.l .ne. '.D' ) call aborts ("al")
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_2.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_2.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_2.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,41 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test STRUCTUREs containin other STRUCTUREs.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Basic structure
++structure /s1/
++ integer i1
++ logical l1
++ real r1
++ character c1
++end structure
++
++structure /s2/
++ integer i
++ record /s1/ r1
++endstructure
++
++record /s1/ r1
++record /s2/ r2, r2_a(10)
++
++! Nested and array records
++r2.r1.r1 = 135.79
++r2_a(3).r1.i1 = -13579
++
++if (r2.r1.r1 .ne. 135.79) then
++ call aborts("r1.r1.r1")
++endif
++
++if (r2_a(3).r1.i1 .ne. -13579) then
++ call aborts("r2_a(3).r1.i1")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_10.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_10.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_10.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,119 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Runtime tests for rules governing dot ('.') as a member accessor, including
++! voodoo with aliased user-defined vs. intrinsic operators and nested members.
++! See gcc/fortran/match.c (gfc_match_member_sep).
++!
++
++module dec_structure_10
++ ! Operator overload tests with .ne. and constant member
++ structure /s1/
++ integer i
++ integer ne
++ logical b
++ end structure
++
++ ! Operator overload tests with .eq., .test. and nested members
++ structure /s2/
++ record /s1/ eq
++ record /s1/ test
++ record /s1/ and
++ integer i
++ end structure
++
++ ! Deep nested access tests
++ structure /s3/
++ record /s2/ r2
++ end structure
++ structure /s4/
++ record /s3/ r3
++ end structure
++ structure /s5/
++ record /s4/ r4
++ end structure
++ structure /s6/
++ record /s5/ r5
++ end structure
++ structure /s7/
++ record /s6/ r6
++ end structure
++
++ ! Operator overloads to mess with nested member accesses
++ interface operator (.ne.)
++ module procedure ne_func
++ end interface operator (.ne.)
++ interface operator (.eq.)
++ module procedure eq_func
++ end interface operator (.eq.)
++ interface operator (.test.)
++ module procedure tstfunc
++ end interface operator (.test.)
++ contains
++ ! ne_func will be called on (x) .ne. (y)
++ function ne_func (r, i)
++ integer, intent(in) :: i
++ type(s1), intent(in) :: r
++ integer ne_func
++ ne_func = r%i + i
++ end function
++ ! eq_func will be called on (x) .eq. (y)
++ function eq_func (r, i)
++ integer, intent(in) :: i
++ type(s2), intent(in) :: r
++ integer eq_func
++ eq_func = r%eq%i + i
++ end function eq_func
++ ! tstfunc will be called on (x) .test. (y)
++ function tstfunc (r, i)
++ integer, intent(in) :: i
++ type(s2), intent(in) :: r
++ integer tstfunc
++ tstfunc = r%i + i
++ end function tstfunc
++end module
++
++use dec_structure_10
++
++record /s1/ r
++record /s2/ struct
++record /s7/ r7
++integer i, j
++logical l
++struct%eq%i = 5
++i = -5
++
++! Nested access: struct has a member and which has a member b
++l = struct .and. b ! struct%and%b
++l = struct .and. b .or. .false. ! (struct%and%b) .or. (.false.)
++
++! Intrinsic op: r has no member 'ne'
++j = r .ne. i ! <intrinsic> ne(r, i)
++j = (r) .ne. i ! <intrinsic> ne(r, i)
++
++! Intrinsic op; r has a member 'ne' but it is not a record
++j = r .ne. i ! <intrinsic> ne(r, i)
++j = (r) .ne. i ! <intrinsic> ne(r, i)
++
++! Nested access: struct has a member eq which has a member i
++j = struct .eq. i ! struct%eq%i
++if ( j .ne. struct%eq%i ) call abort()
++
++! User op: struct is compared to i with eq_func
++j = (struct) .eq. i ! eq_func(struct, i) -> struct%eq%i + i
++if ( j .ne. struct%eq%i + i ) call abort()
++
++! User op: struct has a member test which has a member i, but test is a uop
++j = struct .test. i ! tstfunc(struct, i) -> struct%i + i
++if ( j .ne. struct%i + i ) call abort()
++
++! User op: struct is compared to i with eq_func
++j = (struct) .test. i ! tstfunc(struct, i) -> struct%i + i
++if ( j .ne. struct%i + i ) call abort()
++
++! Deep nested access tests
++r7.r6.r5.r4.r3.r2.i = 1337
++j = r7.r6.r5.r4.r3.r2.i
++if ( j .ne. 1337 ) call abort()
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_6.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_6.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_6.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,46 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test old-style CLIST initializers in STRUCTURE.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++integer, parameter :: as = 3
++structure /s8/
++ character*20 c /"HELLO"/ ! ok
++ integer*2 j /300_4/ ! ok, converted
++ integer k /65536_8/ ! ok, implicit
++ integer*4 l /200000/ ! ok, types match
++ integer m(5) /5,4,3,2,1/! ok
++ integer n(5) /1,3*2,1/ ! ok, with repeat spec (/1,2,2,2,1/)
++ integer o(as) /as*9/ ! ok, parameter array spec
++ integer p(2,2) /1,2,3,4/! ok
++ real q(3) /1_2,3.5,2.4E-12_8/ ! ok, with some implicit conversions
++ integer :: canary = z'3D3D3D3D'
++end structure
++
++record /s8/ r8
++
++! Old-style (clist) initializers in structures
++if ( r8.c /= "HELLO" ) call aborts ("r8.c")
++if ( r8.j /= 300 ) call aborts ("r8.j")
++if ( r8.k /= 65536 ) call aborts ("r8.k")
++if ( r8.l /= 200000 ) call aborts ("r8.l")
++if ( r8.m(1) /= 5 .or. r8.m(2) /= 4 .or. r8.m(3) /= 3 &
++ .or. r8.m(4) /= 2 .or. r8.m(5) /= 1) &
++ call aborts ("r8.m")
++if ( r8.n(1) /= 1 .or. r8.n(2) /= 2 .or. r8.n(3) /= 2 .or. r8.n(4) /= 2 &
++ .or. r8.n(5) /= 1) &
++ call aborts ("r8.n")
++if ( r8.o(1) /= 9 .or. r8.o(2) /= 9 .or. r8.o(3) /= 9 ) call aborts ("r8.o")
++if ( r8.p(1,1) /= 1 .or. r8.p(2,1) /= 2 .or. r8.p(1,2) /= 3 &
++ .or. r8.p(2,2) /= 4) &
++ call aborts ("r8.p")
++if ( r8.canary /= z'3D3D3D3D' ) call aborts ("r8.canary")
++
++end
Index: gcc/testsuite/gfortran.dg/submodule_15.f08
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/submodule_15.f08 (.../tags/gcc_6_1_0_release)
@@ -1390,6 +2473,278 @@ Index: gcc/testsuite/gfortran.dg/submodule_15.f08
if (a3(i) .ne. 11) call abort
end
+! { dg-final { cleanup-submodules "a at a_son" } }
+Index: gcc/testsuite/gfortran.dg/dec_union_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_3.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_3.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,35 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test UNIONs with initializations.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Initialization expressions
++structure /s3/
++ integer(4) :: i = 8
++ union ! U7
++ map
++ integer(4) :: x = 1600
++ integer(4) :: y = 1800
++ end map
++ map
++ integer(2) a, b, c
++ end map
++ end union
++end structure
++
++record /s3/ r3
++
++! Initialized unions
++if ( r3.x .ne. 1600 .or. r3.y .ne. 1800) then
++ r3.x = r3.y ! If r3 isn't used the initializations are optimized out
++ call aborts ("union initialization")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/pr69603.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr69603.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr69603.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++! { dg-options "-fimplicit-none" }
++! PR fortran/69603 - segfault with -fimplicit-none and proc_ptr_comp_24.f90
++! Based on reduced testcase by Dominique d'Humieres
++PROGRAM prog
++ implicit none
++ TYPE object
++ PROCEDURE(), POINTER, NOPASS :: f
++ END TYPE object
++ TYPE (object) :: o1
++ CALL set_func(o1%f)
++CONTAINS
++ SUBROUTINE set_func(f)
++ PROCEDURE(), POINTER :: f
++ END SUBROUTINE set_func
++END PROGRAM prog
+Index: gcc/testsuite/gfortran.dg/dec_structure_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_1.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_1.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,56 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Basic STRUCTURE test.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Basic structure
++structure /s1/ ! type s1
++ integer i1
++ logical l1
++ real r1
++ character c1
++end structure ! end type s1
++
++record /s1/ r1 ! type (s1) r1
++record /s1/ r1_a(3) ! type (s1) r1_a(3)
++
++! Basic records
++r1.i1 = 13579 ! r1%i1 = ...
++r1.l1 = .true.
++r1.r1 = 13.579
++r1.c1 = 'F'
++r1_a(2) = r1
++r1_a(3).r1 = 135.79
++
++if (r1.i1 .ne. 13579) then
++ call aborts("r1.i1")
++endif
++
++if (r1.l1 .neqv. .true.) then
++ call aborts("r1.l1")
++endif
++
++if (r1.r1 .ne. 13.579) then
++ call aborts("r1.r1")
++endif
++
++if (r1.c1 .ne. 'F') then
++ call aborts("r1.c1")
++endif
++
++if (r1_a(2).i1 .ne. 13579) then
++ call aborts("r1_a(2).i1")
++endif
++
++if (r1_a(3).r1 .ne. 135.79) then
++ call aborts("r1_a(3).r1")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/pr71047.f08
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr71047.f08 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr71047.f08 (.../branches/gcc-6-branch)
+@@ -0,0 +1,48 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-original" }
++!
++! Fortran/PR71047
++!
++
++module m
++ implicit none
++
++ type, abstract :: c_abstr
++ integer :: i = 0
++ end type c_abstr
++
++ type, extends(c_abstr) :: t_a
++ class(c_abstr), allocatable :: f
++ end type t_a
++
++ type, extends(c_abstr) :: t_b
++ end type t_b
++
++contains
++
++ subroutine set(y,x)
++ class(c_abstr), intent(in) :: x
++ type(t_a), intent(out) :: y
++ allocate( y%f , source=x )
++ end subroutine set
++
++end module m
++
++
++program p
++ use m
++ implicit none
++
++ type(t_a) :: res
++ type(t_b) :: var
++
++ call set( res , var )
++ write(*,*) res%i
++
++end program p
++
++!
++! Check to ensure the vtable is actually initialized.
++!
++! { dg-final { scan-tree-dump "t_a\\.\\d+\\.f\\._vptr =" "original" } }
++!
+Index: gcc/testsuite/gfortran.dg/dec_union_7.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_7.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_7.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,38 @@
++! { dg-do compile }
++! { dg-options "-fdec-structure" }
++!
++! Comprehensive compile tests for what unions CAN'T do.
++!
++
++! Syntax errors
++structure /s0/
++ union a b c ! { dg-error "Junk after UNION" }
++ union
++ map a b c ! { dg-error "Junk after MAP" }
++ integer x ! { dg-error "Unexpected" }
++ structure /s2/ ! { dg-error "Unexpected" }
++ map
++ map ! { dg-error "Unexpected" }
++ end map
++ end union
++end structure
++
++! Initialization expressions
++structure /s1/
++ union
++ map
++ integer(4) :: x = 1600 ! { dg-error "Conflicting initializers" }
++ integer(4) :: y = 1800
++ end map
++ map
++ integer(2) a, b, c, d
++ integer :: e = 0 ! { dg-error "Conflicting initializers" }
++ end map
++ map
++ real :: p = 1.3, q = 3.7 ! { dg-error "Conflicting initializers" }
++ end map
++ end union
++end structure
++record /s1/ r1
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_5.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_5.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,49 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test STRUCTUREs which share names with variables.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Special regression where shared names within a module caused an ICE
++! from gfc_get_module_backend_decl
++module dec_structure_5m
++ structure /s6/
++ integer i
++ end structure
++
++ record /s6/ s6
++end module
++
++program dec_structure_5
++ use dec_structure_5m
++
++ structure /s7/
++ real r
++ end structure
++
++ record /s7/ s7(3)
++
++ s6.i = 0
++ s7(1).r = 1.0
++ s7(2).r = 2.0
++ s7(3).r = 3.0
++
++ if (s6.i .ne. 0) then
++ call aborts("s6.i")
++ endif
++
++ if (s7(1).r .ne. 1.0) then
++ call aborts("s7(1).r")
++ endif
++
++ if (s7(2).r .ne. 2.0) then
++ call aborts("s7(2).r")
++ endif
++
++end
Index: gcc/testsuite/gfortran.dg/submodule_14.f08
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/submodule_14.f08 (.../tags/gcc_6_1_0_release)
@@ -1400,6 +2755,574 @@ Index: gcc/testsuite/gfortran.dg/submodule_14.f08
end
-
+! { dg-final { cleanup-submodules "test at testson" } }
+Index: gcc/testsuite/gfortran.dg/dec_structure_9.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_9.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_9.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,42 @@
++! { dg-do compile }
++! { dg-options "-fdec-structure" }
++!
++! Basic compile tests for what CAN be done with dot ('.') as a member accessor.
++!
++
++logical :: l, l2 = .true., l3 = .false., and
++integer i
++character(5) s
++real r
++
++structure /s1/
++ integer i
++ character(5) s
++ real r
++end structure
++
++record /s1/ r1
++
++! Basic
++l = l .and. l2 .or. l3
++l = and .and. and .and. and
++l = l2 .eqv. l3
++l = (l2) .eqv. l3
++
++! Integers
++l = .not. (i .eq. 0)
++l = .not. (0 .eq. i)
++l = .not. (r1.i .eq. 0)
++l = .not. (0 .eq. r1.i)
++! Characters
++l = .not. (s .eq. "hello")
++l = .not. ("hello" .eq. s)
++l = .not. (r1.s .eq. "hello")
++l = .not. ("hello" .eq. r1.s)
++! Reals
++l = .not. (r .eq. 3.14)
++l = .not. (3.14 .eq. r)
++l = .not. (r1.r .eq. 3.14)
++l = .not. (3.14 .eq. r1.r)
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_union_2.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_2.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_2.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,60 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test basic UNION implementation.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Empty union
++structure /s0/
++ union ! U0
++ map ! M0
++ end map
++ map ! M1
++ end map
++ end union
++end structure
++
++! Basic unions
++structure /s1/
++ union ! U1
++ map ! M2
++ integer(4) a
++ end map
++ map ! M3
++ real(4) b
++ end map
++ end union
++end structure
++structure /s2/
++ union ! U2
++ map ! M4
++ integer(2) w1, w2
++ end map
++ map ! M5
++ integer(4) long
++ end map
++ end union
++end structure
++
++record /s1/ r1
++record /s2/ r2
++
++! Basic unions
++r1.a = 0
++r1.b = 1.33e7
++if ( r1.a .eq. 0 ) call aborts ("basic union 1")
++
++! Endian-agnostic runtime check
++r2.long = z'12345678'
++if (.not. ( (r2.w1 .eq. z'1234' .and. r2.w2 .eq. z'5678') &
++ .or. (r2.w1 .eq. z'5678' .and. r2.w2 .eq. z'1234')) ) then
++ call aborts ("basic union 2")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_union_6.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_6.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_6.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,59 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! sub0 and sub1 test a regression where calling gfc_use_derived from
++! gfc_find_component on the structure type symbol being parsed caused the
++! symbol to be freed and swapped for the previously seen type symbol, leaving
++! dangling pointers and causing all sorts of mayhem.
++!
++
++subroutine sub0 (u)
++ structure /s/
++ union ! U0
++ map ! M0
++ integer i
++ end map
++ end union
++ end structure
++ record /s/ u
++ u.i = 0
++end subroutine sub0
++
++subroutine sub1 ()
++ structure /s/
++ union ! U1
++ map ! M1
++ integer i
++ end map
++ end union
++ end structure
++ record /s/ u
++ interface ! matches the declaration of sub0 above
++ subroutine sub0 (u)
++ structure /s/
++ union ! U2
++ map ! M2
++ integer i ! gfc_find_component should not call gfc_use_derived
++ end map ! here, otherwise this structure's type symbol is freed
++ end union ! out from under it
++ end structure
++ record /s/ u
++ end subroutine sub0
++ end interface
++ call sub0(u)
++end subroutine
++
++! If sub0 and sub1 aren't used they may be omitted
++structure /s/
++ union ! U1
++ map ! M3
++ integer i
++ end map
++ end union
++end structure
++record /s/ u
++
++call sub0(u)
++call sub1()
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_4.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_4.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_4.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,43 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test anonymous STRUCTURE definitions.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++structure /s5/
++ structure recrd, recrd_a(3)
++ real x, y
++ end structure
++end structure
++
++record /s5/ r5
++
++r5.recrd.x = 1.3
++r5.recrd.y = 5.7
++r5.recrd_a(1) = r5.recrd
++r5.recrd_a(2).x = 5.7
++r5.recrd_a(2).y = 1.3
++
++if (r5.recrd.x .ne. 1.3) then
++ call aborts("r5.recrd.x")
++endif
++
++if (r5.recrd.y .ne. 5.7) then
++ call aborts("r5.recrd.y")
++endif
++
++if (r5.recrd_a(1).x .ne. 1.3 .or. r5.recrd_a(1).y .ne. 5.7) then
++ call aborts("r5.recrd_a(1)")
++endif
++
++if (r5.recrd_a(2).x .ne. 5.7 .or. r5.recrd_a(2).y .ne. 1.3) then
++ call aborts("r5.recrd_a(2)")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_8.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_8.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_8.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,60 @@
++! { dg-do compile }
++! { dg-options "-fdec-structure -fmax-errors=0" }
++!
++! Comprehensive compile tests for what structures CAN'T do.
++!
++
++! Old-style (clist) initialization
++integer,parameter :: as = 3
++structure /t1/
++ integer*1 a /300_2/ ! { dg-error "Arithmetic overflow" }
++ integer b // ! { dg-error "Empty old style initializer list" }
++ integer c /2*3/ ! { dg-error "Repeat spec invalid in scalar" }
++ integer d /1,2,3/ ! { dg-error "End of scalar initializer expected" }
++ integer e /"HI"/ ! { dg-error "Can't convert" }
++ integer f(as) /4*9/ ! { dg-error "Too many elements" }
++ integer g(3) /1,3/ ! { dg-error "Not enough elements" }
++ integer h(3) /1,3,5,7/ ! { dg-error "Too many elements" }
++ integer i(3) /2*1/ ! { dg-error "Not enough elements" }
++ integer j(3) /10*1/ ! { dg-error "Too many elements" }
++ integer k(3) /2.5*3/ ! { dg-error "Repeat spec must be an integer" }
++ integer l(2) /2*/ ! { dg-error "Expected data constant" }
++ integer m(1) / ! { dg-error "Syntax error in old style" }
++ integer n(2) /1 ! { dg-error "Syntax error in old style" }
++ integer o(2) /1, ! { dg-error "Syntax error in old style" }
++ integer p(1) /x/ ! { dg-error "must be a PARAMETER" }
++end structure
++
++structure ! { dg-error "Structure name expected" }
++structure / ! { dg-error "Structure name expected" }
++structure // ! { dg-error "Structure name expected" }
++structure /.or./ ! { dg-error "Structure name expected" }
++structure /integer/ ! { dg-error "Structure name.*cannot be the same" }
++structure /foo/ bar ! { dg-error "Junk after" }
++structure /t1/ ! { dg-error "Type definition.*T1" }
++
++record ! { dg-error "Structure name expected" }
++record bar ! { dg-error "Structure name expected" }
++record / bar ! { dg-error "Structure name expected" }
++record // bar ! { dg-error "Structure name expected" }
++record foo/ bar ! { dg-error "Structure name expected" }
++record /foo bar ! { dg-error "Structure name expected" }
++record /foo/ bar ! { dg-error "used before it is defined" }
++record /t1/ ! { dg-error "Invalid character in name" }
++
++structure /t2/
++ ENTRY here ! { dg-error "ENTRY statement.*cannot appear" }
++ integer a
++ integer a ! { dg-error "Component.*already declared" }
++ structure $z ! { dg-error "Invalid character in name" }
++ structure // ! { dg-error "Invalid character in name" }
++ structure // x ! { dg-error "Invalid character in name" }
++ structure /t3/ ! { dg-error "Invalid character in name" }
++ structure /t3/ x,$y ! { dg-error "Invalid character in name" }
++ structure /t4/ y
++ integer i, j, k
++ end structure
++ structure /t4/ z ! { dg-error "Type definition.*T4" }
++end structure
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_union_1.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_1.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_1.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,66 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test whether union backend declarations are corrently _not_ copied when they
++! are not in fact equal. The structure defined in sub() is seen later, but
++! where siz has a different value.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++subroutine sub ()
++ integer, parameter :: siz = 1024
++ structure /s6/
++ union ! U0
++ map ! M0
++ integer ibuf(siz)
++ end map
++ map ! M1
++ character(8) cbuf(siz)
++ end map
++ map ! M2
++ real rbuf(siz)
++ end map
++ end union
++ end structure
++ record /s6/ r6
++ r6.ibuf(1) = z'badbeef'
++ r6.ibuf(2) = z'badbeef'
++end subroutine
++
++! Repeat definition from subroutine sub with different size parameter.
++! If the structure definition is copied here the stack may get messed up.
++integer, parameter :: siz = 65536
++structure /s6/
++ union ! U12
++ map
++ integer ibuf(siz)
++ end map
++ map
++ character(8) cbuf(siz)
++ end map
++ map
++ real rbuf(siz)
++ end map
++ end union
++end structure
++
++record /s6/ r6
++integer :: r6_canary = 0
++
++! Copied type declaration - this should not cause problems
++i = 1
++do while (i < siz)
++ r6.ibuf(i) = z'badbeef'
++ i = i + 1
++end do
++
++if ( r6_canary .ne. 0 ) then
++ call aborts ('copied decls: overflow')
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_union_5.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_union_5.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_union_5.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,41 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test UNIONs with array components.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++! Unions with arrays
++structure /s5/
++ union
++ map
++ character :: s(5)
++ end map
++ map
++ integer(1) :: a(5)
++ end map
++ end union
++end structure
++
++record /s5/ r5
++
++! Unions with arrays
++r5.a(1) = z'41'
++r5.a(2) = z'42'
++r5.a(3) = z'43'
++r5.a(4) = z'44'
++r5.a(5) = z'45'
++if ( r5.s(1) .ne. 'A' &
++ .or. r5.s(2) .ne. 'B' &
++ .or. r5.s(3) .ne. 'C' &
++ .or. r5.s(4) .ne. 'D' &
++ .or. r5.s(5) .ne. 'E') then
++ call aborts ("arrays")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_3.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_3.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_3.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,52 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test nested STRUCTURE definitions.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++structure /s3/
++ real p
++ structure /s4/ recrd, recrd_a(3)
++ integer i, j
++ end structure
++ real q
++end structure
++
++record /s3/ r3
++record /s4/ r4
++
++r3.p = 1.3579
++r4.i = 0
++r4.j = 1
++r3.recrd = r4
++r3.recrd_a(1) = r3.recrd
++r3.recrd_a(2).i = 1
++r3.recrd_a(2).j = 0
++
++if (r3.p .ne. 1.3579) then
++ call aborts("r3.p")
++endif
++
++if (r4.i .ne. 0) then
++ call aborts("r4.i")
++endif
++
++if (r4.j .ne. 1) then
++ call aborts("r4.j")
++endif
++
++if (r3.recrd.i .ne. 0 .or. r3.recrd.j .ne. 1) then
++ call aborts("r3.recrd")
++endif
++
++if (r3.recrd_a(2).i .ne. 1 .or. r3.recrd_a(2).j .ne. 0) then
++ call aborts("r3.recrd_a(2)")
++endif
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_11.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_11.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_11.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,20 @@
++! { dg-do compile }
++! { dg-options "-fdec-structure" }
++!
++! Tests for what CAN'T be done with dot ('.') as a member accessor.
++!
++
++structure /s1/
++ integer eq
++end structure
++
++record /s1/ r
++integer i, j, k
++
++j = i.j ! { dg-error "nonderived-type variable" }
++j = r .eq. i ! { dg-error "Operands of comparison" }
++j = r.i ! { dg-error "is not a member of" }
++j = r. ! { dg-error "Expected structure component or operator name" }
++j = .i ! { dg-error "Invalid character in name" }
++
++end
+Index: gcc/testsuite/gfortran.dg/dec_structure_7.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/dec_structure_7.f90 (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_7.f90 (.../branches/gcc-6-branch)
+@@ -0,0 +1,75 @@
++! { dg-do run }
++! { dg-options "-fdec-structure" }
++!
++! Test passing STRUCTUREs through functions and subroutines.
++!
++
++subroutine aborts (s)
++ character(*), intent(in) :: s
++ print *, s
++ call abort()
++end subroutine
++
++module dec_structure_7m
++ structure /s1/
++ integer i1
++ logical l1
++ real r1
++ character c1
++ end structure
++
++ structure /s2/
++ integer i
++ record /s1/ r1
++ endstructure
++
++contains
++ ! Pass structure through subroutine
++ subroutine sub (rec1, i)
++ implicit none
++ integer, intent(in) :: i
++ record /s1/ rec1
++ rec1.i1 = i
++ end subroutine
++
++ ! Pass structure through function
++ function func (rec2, r)
++ implicit none
++ real, intent(in) :: r
++ record /s2/ rec2
++ real func
++ rec2.r1.r1 = r
++ func = rec2.r1.r1
++ return
++ end function
++end module
++
++program dec_structure_7
++ use dec_structure_7m
++
++ implicit none
++ record /s1/ r1
++ record /s2/ r2
++ real junk
++
++ ! Passing through functions and subroutines
++ r1.i1 = 0
++ call sub (r1, 10)
++
++ r2.r1.r1 = 0.0
++ junk = func (r2, -20.14)
++
++ if (r1.i1 .ne. 10) then
++ call aborts("sub(r1, 10)")
++ endif
++
++ if (r2.r1.r1 .ne. -20.14) then
++ call aborts("func(r2, -20.14)")
++ endif
++
++ if (junk .ne. -20.14) then
++ print *, junk
++ call aborts("junk = func()")
++ endif
++
++end program
Index: gcc/testsuite/gcc.c-torture/compile/pr70916.c
===================================================================
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr70916.c (.../tags/gcc_6_1_0_release)
@@ -1487,6 +3410,27 @@ Index: gcc/testsuite/gcc.dg/ubsan/bounds-3.c
+}
+
+/* { dg-output "index 2 out of bounds for type 'S \\\[2\\\]'" } */
+Index: gcc/testsuite/gcc.dg/pr71006.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr71006.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr71006.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,16 @@
++/* PR target/71006 */
++/* { dg-do compile } */
++/* { dg-options "-O1 -ftree-vectorize" } */
++
++unsigned char uu, gu, e2;
++
++void
++fs (void)
++{
++ char *nq = (char *)&gu, *k4 = (char *)&gu;
++ while (*k4 < 1)
++ {
++ uu += (*nq != 0 || e2 != 0);
++ ++*k4;
++ }
++}
Index: gcc/testsuite/gcc.dg/graphite/pr70956.c
===================================================================
--- a/src/gcc/testsuite/gcc.dg/graphite/pr70956.c (.../tags/gcc_6_1_0_release)
@@ -1540,11 +3484,202 @@ Index: gcc/testsuite/gcc.dg/torture/pr70935.c
+ rp = 0;
+ goto ka;
+}
+Index: gcc/testsuite/gcc.dg/torture/pr70941.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/pr70941.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.dg/torture/pr70941.c (.../branches/gcc-6-branch)
+@@ -0,0 +1,12 @@
++/* { dg-do run } */
++/* { dg-require-effective-target int32plus } */
++
++signed char a = 0, b = 0, c = 0, d = 0;
++
++int main()
++{
++ a = -(b - 405418259) - ((d && c) ^ 2040097152);
++ if (a != (signed char) -1634678893)
++ __builtin_abort ();
++ return 0;
++}
+Index: gcc/testsuite/gcc.dg/vect/tree-vect.h
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/tree-vect.h (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/tree-vect.h (.../branches/gcc-6-branch)
+@@ -32,25 +32,26 @@
+ asm volatile (".long 0x10000484");
+ #elif defined(__i386__) || defined(__x86_64__)
+ {
+- unsigned int a, b, c, d, want_level, want_c, want_d;
++ unsigned int a, b, c, d,
++ want_level, want_b = 0, want_c = 0, want_d = 0;
+
+ /* Determine what instruction set we've been compiled for, and detect
+ that we're running with it. This allows us to at least do a compile
+ check for, e.g. SSE4.1 when the machine only supports SSE2. */
+-# ifdef __XOP__
+- want_level = 0x80000001, want_c = bit_XOP, want_d = 0;
++# if defined(__AVX2__)
++ want_level = 7, want_b = bit_AVX2;
+ # elif defined(__AVX__)
+- want_level = 1, want_c = bit_AVX, want_d = 0;
++ want_level = 1, want_c = bit_AVX;
+ # elif defined(__SSE4_1__)
+- want_level = 1, want_c = bit_SSE4_1, want_d = 0;
++ want_level = 1, want_c = bit_SSE4_1;
+ # elif defined(__SSSE3__)
+- want_level = 1, want_c = bit_SSSE3, want_d = 0;
++ want_level = 1, want_c = bit_SSSE3;
+ # else
+- want_level = 1, want_c = 0, want_d = bit_SSE2;
++ want_level = 1, want_d = bit_SSE2;
+ # endif
+
+ if (!__get_cpuid (want_level, &a, &b, &c, &d)
+- || ((c & want_c) | (d & want_d)) == 0)
++ || ((b & want_b) | (c & want_c) | (d & want_d)) == 0)
+ exit (0);
+ }
+ #elif defined(__sparc__)
+Index: gcc/testsuite/gcc.dg/vect/pr66636.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/vect/pr66636.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/gcc.dg/vect/pr66636.c (.../branches/gcc-6-branch)
+@@ -6,7 +6,8 @@
+
+ struct X { double x; double y; };
+
+-void foo (struct X *x, double px, int s)
++void __attribute__((noinline,noclone))
++foo (struct X *x, double px, int s)
+ {
+ int i;
+ for (i = 0; i < 256; ++i)
Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,123 @@
+@@ -1,3 +1,244 @@
++2016-05-18 Jakub Jelinek <jakub at redhat.com>
++
++ PR c++/71100
++ * g++.dg/opt/pr71100.C: New test.
++
++2016-05-18 Paolo Carlini <paolo.carlini at oracle.com>
++
++ PR c++/70466
++ * g++.dg/template/pr70466-1.C: New.
++ * g++.dg/template/pr70466-2.C: Likewise.
++
++2016-05-18 Christophe Lyon <christophe.lyon at linaro.org>
++
++ Backport from mainline r236377.
++ 2016-05-19 Christophe Lyon <christophe.lyon at linaro.org>
++
++ * gcc.target/aarch64/noplt_3.c: Scan for "br\t".
++ * gcc.target/aarch64/tail_indirect_call_1.c: Scan for "br\t",
++ "blr\t" and switch to scan-assembler-times.
++
++2016-05-17 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ Backport from mainline
++ 2016-05-17 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ PR target/70809
++ * gcc.target/aarch64/pr70809_1.c: New test.
++
++2016-05-15 Bill Schmidt <wschmidt at linux.vnet.ibm.com>
++
++ Backport from mainline
++ 2016-05-11 Bill Schmidt <wschmidt at linux.vnet.ibm.com>
++
++ * gcc.target/powerpc/pr70963.c: Require at least power8 at both
++ compile and run time.
++
++2016-05-15 Harald Anlauf <anlauf at gmx.de>
++
++ PR fortran/69603
++ * gfortran.dg/pr69603.f90: New testcase.
++
++2016-05-14 Fritz Reese <fritzoreese at gmail.com>
++
++ Backport from trunk: r235999, r236241, r236242
++ * gfortran.dg/dec_union_4.f90: Fix endian issue.
++
++ PR fortran/71047
++ * gfortran.dg/pr71047.f08: New test.
++
++ PR fortran/56226
++ * gfortran.dg/dec_structure_1.f90: New testcase.
++ * gfortran.dg/dec_structure_2.f90: Ditto.
++ * gfortran.dg/dec_structure_3.f90: Ditto.
++ * gfortran.dg/dec_structure_4.f90: Ditto.
++ * gfortran.dg/dec_structure_5.f90: Ditto.
++ * gfortran.dg/dec_structure_6.f90: Ditto.
++ * gfortran.dg/dec_structure_7.f90: Ditto.
++ * gfortran.dg/dec_structure_8.f90: Ditto.
++ * gfortran.dg/dec_structure_9.f90: Ditto.
++ * gfortran.dg/dec_structure_10.f90: Ditto.
++ * gfortran.dg/dec_structure_11.f90: Ditto.
++ * gfortran.dg/dec_union_1.f90: Ditto.
++ * gfortran.dg/dec_union_2.f90: Ditto.
++ * gfortran.dg/dec_union_3.f90: Ditto.
++ * gfortran.dg/dec_union_4.f90: Ditto.
++ * gfortran.dg/dec_union_5.f90: Ditto.
++ * gfortran.dg/dec_union_6.f90: Ditto.
++ * gfortran.dg/dec_union_7.f90: Ditto.
++
++2016-05-13 Uros Bizjak <ubizjak at gmail.com>
++
++ * gcc.dg/vect/tree-vect.h (check_vect): Handle AVX2,
++ remove XOP handling.
++ * gcc.dg/vect/pr66636.c (foo): Add __attribute__((noinline,noclone)).
++
++2016-05-13 Richard Biener <rguenther at suse.de>
++
++ Backport from mainline
++ 2016-04-27 Richard Biener <rguenther at suse.de>
++
++ PR ipa/70760
++ * g++.dg/ipa/ipa-pta-2.C: New testcase.
++
++ 2016-05-06 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/70931
++ * gfortran.dg/pr70931.f90: New testcase.
++
++ 2016-05-06 Richard Biener <rguenther at suse.de>
++
++ PR middle-end/70941
++ * gcc.dg/torture/pr70941.c: New testcase.
++
++ 2016-05-06 Jakub Jelinek <jakub at redhat.com>
++
++ PR middle-end/70941
++ * gcc.dg/torture/pr70941.c (abort): Remove prototype.
++ (a, b, c, d): Change type from char to signed char.
++ (main): Compare against (signed char) -1634678893 instead of
++ hardcoded -109. Use __builtin_abort instead of abort.
++
++2016-05-12 Ilya Enkovich <ilya.enkovich at intel.com>
++
++ Backport from mainline r236171.
++ 2016-05-12 Ilya Enkovich <ilya.enkovich at intel.com>
++
++ PR tree-optimization/71006
++ * gcc.dg/pr71006.c: New test.
++
++2016-05-12 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ Backport from mainline
++ 2016-05-12 Kyrylo Tkachov <kyrylo.tkachov at arm.com>
++
++ PR target/70830
++ * gcc.target/arm/interrupt-1.c: Change dg-compile to dg-assemble.
++ Add -save-temps to dg-options.
++ Scan for ldmfd rather than pop instruction.
++ * gcc.target/arm/interrupt-2.c: Likewise.
++ * gcc.target/arm/pr70830.c: New test.
++
+2016-05-11 Jakub Jelinek <jakub at redhat.com>
+
+ PR fortran/70855
@@ -1668,6 +3803,29 @@ Index: gcc/testsuite/ChangeLog
2016-04-27 Release Manager
* GCC 6.1.0 released.
+Index: gcc/testsuite/g++.dg/opt/pr71100.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/opt/pr71100.C (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/opt/pr71100.C (.../branches/gcc-6-branch)
+@@ -0,0 +1,18 @@
++// PR c++/71100
++// { dg-do compile }
++// { dg-options "-O2" }
++
++struct D { ~D (); };
++struct E { D foo () { throw 1; } };
++
++inline void
++bar (D (E::*f) (), E *o)
++{
++ (o->*f) ();
++}
++
++void
++baz (E *o)
++{
++ bar (&E::foo, o);
++}
Index: gcc/testsuite/g++.dg/ubsan/null-7.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/ubsan/null-7.C (.../tags/gcc_6_1_0_release)
@@ -1710,6 +3868,110 @@ Index: gcc/testsuite/g++.dg/cpp0x/auto48.C
+{
+ auto f = [&] { return f; }; // { dg-error "before deduction" }
+}
+Index: gcc/testsuite/g++.dg/ipa/ipa-pta-2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-pta-2.C (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-pta-2.C (.../branches/gcc-6-branch)
+@@ -0,0 +1,37 @@
++// { dg-do run }
++// { dg-options "-O2 -fipa-pta" }
++
++extern "C" void abort (void);
++
++struct Y { ~Y(); int i; };
++
++Y::~Y () {}
++
++static Y __attribute__((noinline)) foo ()
++{
++ Y res;
++ res.i = 3;
++ return res;
++}
++
++static Y __attribute__((noinline)) bar ()
++{
++ Y res;
++ res.i = 42;
++ return res;
++}
++
++static Y (*fn) ();
++
++int a;
++int main()
++{
++ if (a)
++ fn = foo;
++ else
++ fn = bar;
++ Y res = fn ();
++ if (res.i != 42)
++ abort ();
++ return 0;
++}
+Index: gcc/testsuite/g++.dg/template/pr70466-2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/template/pr70466-2.C (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/template/pr70466-2.C (.../branches/gcc-6-branch)
+@@ -0,0 +1,25 @@
++// PR c++/70466
++
++template < class T, class S >
++struct A
++{
++ explicit A (...) {}
++};
++
++template < class T, class S >
++A < T, S > foo (T (S::*f) ())
++{
++ return A < T, S > (f);
++}
++
++struct B
++{
++ void bar () {}
++};
++
++int
++main ()
++{
++ foo (&B::bar);
++ return 0;
++}
+Index: gcc/testsuite/g++.dg/template/pr70466-1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/template/pr70466-1.C (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/testsuite/g++.dg/template/pr70466-1.C (.../branches/gcc-6-branch)
+@@ -0,0 +1,27 @@
++// PR c++/70466
++
++template < class T, class T > // { dg-error "conflicting" }
++class A
++{
++public:
++ explicit A (T (S::*f) ()) {} // { dg-error "expected" }
++};
++
++template < class T, class S >
++A < T, S > foo (T (S::*f) ())
++{
++ return A < T, S > (f);
++}
++
++class B
++{
++public:
++ void bar () {}
++};
++
++int
++main ()
++{
++ foo (&B::bar);
++ return 0;
++}
Index: gcc/testsuite/c-c++-common/asan/pr70712.c
===================================================================
--- a/src/gcc/testsuite/c-c++-common/asan/pr70712.c (.../tags/gcc_6_1_0_release)
@@ -1785,7 +4047,13 @@ Index: gcc/cp/ChangeLog
===================================================================
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,17 @@
+@@ -1,3 +1,23 @@
++2016-05-18 Paolo Carlini <paolo.carlini at oracle.com>
++
++ PR c++/70466
++ * call.c (convert_like_real): Check that we are actually converting
++ from an init list.
++
+2016-04-29 Cesar Philippidis <cesar at codesourcery.com>
+
+ PR middle-end/70626
@@ -1847,6 +4115,21 @@ Index: gcc/cp/parser.c
tree block = begin_omp_parallel ();
tree clauses;
cp_parser_oacc_loop (parser, pragma_tok, p_name, mask, &clauses,
+Index: gcc/cp/call.c
+===================================================================
+--- a/src/gcc/cp/call.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/cp/call.c (.../branches/gcc-6-branch)
+@@ -6360,8 +6360,9 @@
+ /* When converting from an init list we consider explicit
+ constructors, but actually trying to call one is an error. */
+ if (DECL_NONCONVERTING_P (convfn) && DECL_CONSTRUCTOR_P (convfn)
++ && BRACE_ENCLOSED_INITIALIZER_P (expr)
+ /* Unless this is for direct-list-initialization. */
+- && !DIRECT_LIST_INIT_P (expr)
++ && !CONSTRUCTOR_IS_DIRECT_INIT (expr)
+ /* And in C++98 a default constructor can't be explicit. */
+ && cxx_dialect >= cxx11)
+ {
Index: gcc/dwarf2out.c
===================================================================
--- a/src/gcc/dwarf2out.c (.../tags/gcc_6_1_0_release)
@@ -1860,6 +4143,15 @@ Index: gcc/dwarf2out.c
break;
}
+@@ -17805,7 +17805,7 @@
+ fieldsize = tree_to_shwi (DECL_SIZE_UNIT (field));
+ pos = int_byte_position (field);
+ gcc_assert (pos + fieldsize <= size);
+- if (val
++ if (val && fieldsize != 0
+ && !native_encode_initializer (val, array + pos, fieldsize))
+ return false;
+ }
Index: gcc/ada/s-osinte-gnu.ads
===================================================================
--- a/src/gcc/ada/s-osinte-gnu.ads (.../tags/gcc_6_1_0_release)
@@ -2170,6 +4462,1645 @@ Index: gcc/ada/system-linux-ppc64.ads
type Name is (SYSTEM_NAME_GNAT);
System_Name : constant Name := SYSTEM_NAME_GNAT;
+Index: gcc/fortran/interface.c
+===================================================================
+--- a/src/gcc/fortran/interface.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/interface.c (.../branches/gcc-6-branch)
+@@ -387,6 +387,124 @@
+ }
+
+
++/* Compare components according to 4.4.2 of the Fortran standard. */
++
++static int
++compare_components (gfc_component *cmp1, gfc_component *cmp2,
++ gfc_symbol *derived1, gfc_symbol *derived2)
++{
++ gfc_symbol *d1, *d2;
++ bool anonymous = false;
++
++ /* Unions, maps, and anonymous structures all have names like "[xX]X$\d+"
++ which should not be compared. */
++ d1 = cmp1->ts.u.derived;
++ d2 = cmp2->ts.u.derived;
++ if ( (d1 && (d1->attr.flavor == FL_STRUCT || d1->attr.flavor == FL_UNION)
++ && ISUPPER (cmp1->name[1]))
++ || (d2 && (d2->attr.flavor == FL_STRUCT || d2->attr.flavor == FL_UNION)
++ && ISUPPER (cmp1->name[1])))
++ anonymous = true;
++
++ if (!anonymous && strcmp (cmp1->name, cmp2->name) != 0)
++ return 0;
++
++ if (cmp1->attr.access != cmp2->attr.access)
++ return 0;
++
++ if (cmp1->attr.pointer != cmp2->attr.pointer)
++ return 0;
++
++ if (cmp1->attr.dimension != cmp2->attr.dimension)
++ return 0;
++
++ if (cmp1->attr.allocatable != cmp2->attr.allocatable)
++ return 0;
++
++ if (cmp1->attr.dimension && gfc_compare_array_spec (cmp1->as, cmp2->as) == 0)
++ return 0;
++
++ /* Make sure that link lists do not put this function into an
++ endless recursive loop! */
++ if (!(cmp1->ts.type == BT_DERIVED && derived1 == cmp1->ts.u.derived)
++ && !(cmp2->ts.type == BT_DERIVED && derived2 == cmp2->ts.u.derived)
++ && gfc_compare_types (&cmp1->ts, &cmp2->ts) == 0)
++ return 0;
++
++ else if ( (cmp1->ts.type == BT_DERIVED && derived1 == cmp1->ts.u.derived)
++ && !(cmp2->ts.type == BT_DERIVED && derived2 == cmp2->ts.u.derived))
++ return 0;
++
++ else if (!(cmp1->ts.type == BT_DERIVED && derived1 == cmp1->ts.u.derived)
++ && (cmp2->ts.type == BT_DERIVED && derived2 == cmp2->ts.u.derived))
++ return 0;
++
++ return 1;
++}
++
++
++/* Compare two union types by comparing the components of their maps.
++ Because unions and maps are anonymous their types get special internal
++ names; therefore the usual derived type comparison will fail on them.
++
++ Returns nonzero if equal, as with gfc_compare_derived_types. Also as with
++ gfc_compare_derived_types, 'equal' is closer to meaning 'duplicate
++ definitions' than 'equivalent structure'. */
++
++int
++gfc_compare_union_types (gfc_symbol *un1, gfc_symbol *un2)
++{
++ gfc_component *map1, *map2, *cmp1, *cmp2;
++
++ if (un1->attr.flavor != FL_UNION || un2->attr.flavor != FL_UNION)
++ return 0;
++
++ map1 = un1->components;
++ map2 = un2->components;
++
++ /* In terms of 'equality' here we are worried about types which are
++ declared the same in two places, not types that represent equivalent
++ structures. (This is common because of FORTRAN's weird scoping rules.)
++ Though two unions with their maps in different orders could be equivalent,
++ we will say they are not equal for the purposes of this test; therefore
++ we compare the maps sequentially. */
++ for (;;)
++ {
++ cmp1 = map1->ts.u.derived->components;
++ cmp2 = map2->ts.u.derived->components;
++ for (;;)
++ {
++ /* No two fields will ever point to the same map type unless they are
++ the same component, because one map field is created with its type
++ declaration. Therefore don't worry about recursion here. */
++ /* TODO: worry about recursion into parent types of the unions? */
++ if (compare_components (cmp1, cmp2,
++ map1->ts.u.derived, map2->ts.u.derived) == 0)
++ return 0;
++
++ cmp1 = cmp1->next;
++ cmp2 = cmp2->next;
++
++ if (cmp1 == NULL && cmp2 == NULL)
++ break;
++ if (cmp1 == NULL || cmp2 == NULL)
++ return 0;
++ }
++
++ map1 = map1->next;
++ map2 = map2->next;
++
++ if (map1 == NULL && map2 == NULL)
++ break;
++ if (map1 == NULL || map2 == NULL)
++ return 0;
++ }
++
++ return 1;
++}
++
++
++
+ /* Compare two derived types using the criteria in 4.4.2 of the standard,
+ recursing through gfc_compare_types for the components. */
+
+@@ -393,7 +511,8 @@
+ int
+ gfc_compare_derived_types (gfc_symbol *derived1, gfc_symbol *derived2)
+ {
+- gfc_component *dt1, *dt2;
++ gfc_component *cmp1, *cmp2;
++ bool anonymous = false;
+
+ if (derived1 == derived2)
+ return 1;
+@@ -400,6 +519,15 @@
+
+ gcc_assert (derived1 && derived2);
+
++ /* MAP and anonymous STRUCTURE types have internal names of the form
++ mM* and sS* (we can get away this this because source names are converted
++ to lowerase). Compare anonymous type names specially because each
++ gets a unique name when it is declared. */
++ anonymous = (derived1->name[0] == derived2->name[0]
++ && derived1->name[1] && derived2->name[1] && derived2->name[2]
++ && derived1->name[1] == (char) TOUPPER (derived1->name[0])
++ && derived2->name[2] == (char) TOUPPER (derived2->name[0]));
++
+ /* Special case for comparing derived types across namespaces. If the
+ true names and module names are the same and the module name is
+ nonnull, then they are equal. */
+@@ -409,9 +537,11 @@
+ return 1;
+
+ /* Compare type via the rules of the standard. Both types must have
+- the SEQUENCE or BIND(C) attribute to be equal. */
++ the SEQUENCE or BIND(C) attribute to be equal. STRUCTUREs are special
++ because they can be anonymous; therefore two structures with different
++ names may be equal. */
+
+- if (strcmp (derived1->name, derived2->name))
++ if (strcmp (derived1->name, derived2->name) != 0 && !anonymous)
+ return 0;
+
+ if (derived1->component_access == ACCESS_PRIVATE
+@@ -422,53 +552,30 @@
+ && !(derived1->attr.is_bind_c && derived2->attr.is_bind_c))
+ return 0;
+
+- dt1 = derived1->components;
+- dt2 = derived2->components;
++ /* Protect against null components. */
++ if (derived1->attr.zero_comp != derived2->attr.zero_comp)
++ return 0;
+
++ if (derived1->attr.zero_comp)
++ return 1;
++
++ cmp1 = derived1->components;
++ cmp2 = derived2->components;
++
+ /* Since subtypes of SEQUENCE types must be SEQUENCE types as well, a
+ simple test can speed things up. Otherwise, lots of things have to
+ match. */
+ for (;;)
+ {
+- if (strcmp (dt1->name, dt2->name) != 0)
+- return 0;
++ if (!compare_components (cmp1, cmp2, derived1, derived2))
++ return 0;
+
+- if (dt1->attr.access != dt2->attr.access)
+- return 0;
++ cmp1 = cmp1->next;
++ cmp2 = cmp2->next;
+
+- if (dt1->attr.pointer != dt2->attr.pointer)
+- return 0;
+-
+- if (dt1->attr.dimension != dt2->attr.dimension)
+- return 0;
+-
+- if (dt1->attr.allocatable != dt2->attr.allocatable)
+- return 0;
+-
+- if (dt1->attr.dimension && gfc_compare_array_spec (dt1->as, dt2->as) == 0)
+- return 0;
+-
+- /* Make sure that link lists do not put this function into an
+- endless recursive loop! */
+- if (!(dt1->ts.type == BT_DERIVED && derived1 == dt1->ts.u.derived)
+- && !(dt2->ts.type == BT_DERIVED && derived2 == dt2->ts.u.derived)
+- && gfc_compare_types (&dt1->ts, &dt2->ts) == 0)
+- return 0;
+-
+- else if ((dt1->ts.type == BT_DERIVED && derived1 == dt1->ts.u.derived)
+- && !(dt1->ts.type == BT_DERIVED && derived1 == dt1->ts.u.derived))
+- return 0;
+-
+- else if (!(dt1->ts.type == BT_DERIVED && derived1 == dt1->ts.u.derived)
+- && (dt1->ts.type == BT_DERIVED && derived1 == dt1->ts.u.derived))
+- return 0;
+-
+- dt1 = dt1->next;
+- dt2 = dt2->next;
+-
+- if (dt1 == NULL && dt2 == NULL)
++ if (cmp1 == NULL && cmp2 == NULL)
+ break;
+- if (dt1 == NULL || dt2 == NULL)
++ if (cmp1 == NULL || cmp2 == NULL)
+ return 0;
+ }
+
+@@ -509,18 +616,18 @@
+ && (ts1->u.derived->attr.sequence || ts1->u.derived->attr.is_bind_c))
+ return 1;
+
++ if (ts1->type == BT_UNION && ts2->type == BT_UNION)
++ return gfc_compare_union_types (ts1->u.derived, ts2->u.derived);
++
+ if (ts1->type != ts2->type
+- && ((ts1->type != BT_DERIVED && ts1->type != BT_CLASS)
+- || (ts2->type != BT_DERIVED && ts2->type != BT_CLASS)))
++ && ((!gfc_bt_struct (ts1->type) && ts1->type != BT_CLASS)
++ || (!gfc_bt_struct (ts2->type) && ts2->type != BT_CLASS)))
+ return 0;
+ if (ts1->type != BT_DERIVED && ts1->type != BT_CLASS)
+ return (ts1->kind == ts2->kind);
+
+ /* Compare derived types. */
+- if (gfc_type_compatible (ts1, ts2))
+- return 1;
+-
+- return gfc_compare_derived_types (ts1->u.derived ,ts2->u.derived);
++ return gfc_type_compatible (ts1, ts2);
+ }
+
+
+@@ -1585,7 +1692,7 @@
+ functions or subroutines. */
+ if (((!p->sym->attr.function && !p->sym->attr.subroutine)
+ || !p->sym->attr.if_source)
+- && p->sym->attr.flavor != FL_DERIVED)
++ && !gfc_fl_struct (p->sym->attr.flavor))
+ {
+ if (p->sym->attr.external)
+ gfc_error ("Procedure %qs in %s at %L has no explicit interface",
+@@ -1599,14 +1706,14 @@
+
+ /* Verify that procedures are either all SUBROUTINEs or all FUNCTIONs. */
+ if ((psave->sym->attr.function && !p->sym->attr.function
+- && p->sym->attr.flavor != FL_DERIVED)
++ && !gfc_fl_struct (p->sym->attr.flavor))
+ || (psave->sym->attr.subroutine && !p->sym->attr.subroutine))
+ {
+- if (p->sym->attr.flavor != FL_DERIVED)
++ if (!gfc_fl_struct (p->sym->attr.flavor))
+ gfc_error ("In %s at %L procedures must be either all SUBROUTINEs"
+ " or all FUNCTIONs", interface_name,
+ &p->sym->declared_at);
+- else
++ else if (p->sym->attr.flavor == FL_DERIVED)
+ gfc_error ("In %s at %L procedures must be all FUNCTIONs as the "
+ "generic name is also the name of a derived type",
+ interface_name, &p->sym->declared_at);
+@@ -1666,8 +1773,8 @@
+ if (p->sym->name == q->sym->name && p->sym->module == q->sym->module)
+ continue;
+
+- if (p->sym->attr.flavor != FL_DERIVED
+- && q->sym->attr.flavor != FL_DERIVED
++ if (!gfc_fl_struct (p->sym->attr.flavor)
++ && !gfc_fl_struct (q->sym->attr.flavor)
+ && gfc_compare_interfaces (p->sym, q->sym, q->sym->name,
+ generic_flag, 0, NULL, 0, NULL, NULL))
+ {
+@@ -2006,7 +2113,7 @@
+ }
+
+ ppc = gfc_get_proc_ptr_comp (actual);
+- if (ppc)
++ if (ppc && ppc->ts.interface)
+ {
+ if (!gfc_compare_interfaces (formal, ppc->ts.interface, ppc->name, 0, 1,
+ err, sizeof(err), NULL, NULL))
+@@ -3550,7 +3657,7 @@
+
+ for (; intr; intr = intr->next)
+ {
+- if (intr->sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (intr->sym->attr.flavor))
+ continue;
+ if (sub_flag && intr->sym->attr.function)
+ continue;
+Index: gcc/fortran/trans-expr.c
+===================================================================
+--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-6-branch)
+@@ -2297,6 +2297,7 @@
+ tree tmp;
+ tree decl;
+ tree field;
++ tree context;
+
+ c = ref->u.c.component;
+
+@@ -2307,6 +2308,7 @@
+ field = c->backend_decl;
+ gcc_assert (field && TREE_CODE (field) == FIELD_DECL);
+ decl = se->expr;
++ context = DECL_FIELD_CONTEXT (field);
+
+ /* Components can correspond to fields of different containing
+ types, as components are created without context, whereas
+@@ -2313,9 +2315,13 @@
+ a concrete use of a component has the type of decl as context.
+ So, if the type doesn't match, we search the corresponding
+ FIELD_DECL in the parent type. To not waste too much time
+- we cache this result in norestrict_decl. */
++ we cache this result in norestrict_decl.
++ On the other hand, if the context is a UNION or a MAP (a
++ RECORD_TYPE within a UNION_TYPE) always use the given FIELD_DECL. */
+
+- if (DECL_FIELD_CONTEXT (field) != TREE_TYPE (decl))
++ if (context != TREE_TYPE (decl)
++ && !( TREE_CODE (TREE_TYPE (field)) == UNION_TYPE /* Field is union */
++ || TREE_CODE (context) == UNION_TYPE)) /* Field is map */
+ {
+ tree f2 = c->norestrict_decl;
+ if (!f2 || DECL_FIELD_CONTEXT (f2) != TREE_TYPE (decl))
+@@ -6715,7 +6721,7 @@
+ {
+ switch (ts->type)
+ {
+- case BT_DERIVED:
++ case_bt_struct:
+ case BT_CLASS:
+ gfc_init_se (&se, NULL);
+ if (ts->type == BT_CLASS && expr->expr_type == EXPR_NULL)
+@@ -6860,7 +6866,7 @@
+ gfc_add_modify (&block, dest, se.expr);
+
+ /* Deal with arrays of derived types with allocatable components. */
+- if (cm->ts.type == BT_DERIVED
++ if (gfc_bt_struct (cm->ts.type)
+ && cm->ts.u.derived->attr.alloc_comp)
+ tmp = gfc_copy_alloc_comp (cm->ts.u.derived,
+ se.expr, dest,
+@@ -7033,7 +7039,7 @@
+ /* Ensure that cm->ts.u.cl->backend_decl is a componentref to _%s_length
+ component. */
+ sprintf (name, "_%s_length", cm->name);
+- strlen = gfc_find_component (sym, name, true, true);
++ strlen = gfc_find_component (sym, name, true, true, NULL);
+ lhs_cl_size = fold_build3_loc (input_location, COMPONENT_REF,
+ gfc_charlen_type_node,
+ TREE_OPERAND (comp, 0),
+@@ -7245,7 +7251,7 @@
+ fold_convert (TREE_TYPE (tmp), se.expr));
+ gfc_add_block_to_block (&block, &se.post);
+ }
+- else if (expr->ts.type == BT_DERIVED && expr->ts.f90_type != BT_VOID)
++ else if (gfc_bt_struct (expr->ts.type) && expr->ts.f90_type != BT_VOID)
+ {
+ if (expr->expr_type != EXPR_STRUCTURE)
+ {
+@@ -7416,6 +7422,24 @@
+ return;
+ }
+
++ /* Though unions appear to have multiple map components, they must only
++ have a single initializer since each map overlaps. TODO: squash map
++ constructors? */
++ if (expr->ts.type == BT_UNION)
++ {
++ c = gfc_constructor_first (expr->value.constructor);
++ cm = c->n.component;
++ val = gfc_conv_initializer (c->expr, &expr->ts,
++ TREE_TYPE (cm->backend_decl),
++ cm->attr.dimension, cm->attr.pointer,
++ cm->attr.proc_pointer);
++ val = unshare_expr_without_location (val);
++
++ /* Append it to the constructor list. */
++ CONSTRUCTOR_APPEND_ELT (v, cm->backend_decl, val);
++ goto finish;
++ }
++
+ cm = expr->ts.u.derived->components;
+
+ for (c = gfc_constructor_first (expr->value.constructor);
+@@ -7462,6 +7486,7 @@
+ CONSTRUCTOR_APPEND_ELT (v, cm->backend_decl, val);
+ }
+ }
++finish:
+ se->expr = build_constructor (type, v);
+ if (init)
+ TREE_CONSTANT (se->expr) = 1;
+@@ -8246,7 +8271,7 @@
+ gfc_trans_string_copy (&block, llen, lse->expr, ts.kind, rlen,
+ rse->expr, ts.kind);
+ }
+- else if (ts.type == BT_DERIVED && ts.u.derived->attr.alloc_comp)
++ else if (gfc_bt_struct (ts.type) && ts.u.derived->attr.alloc_comp)
+ {
+ tree tmp_var = NULL_TREE;
+ cond = NULL_TREE;
+@@ -8299,7 +8324,7 @@
+ gfc_add_expr_to_block (&block, tmp);
+ }
+ }
+- else if (ts.type == BT_DERIVED || ts.type == BT_CLASS)
++ else if (gfc_bt_struct (ts.type) || ts.type == BT_CLASS)
+ {
+ gfc_add_block_to_block (&block, &lse->pre);
+ gfc_add_block_to_block (&block, &rse->pre);
+@@ -9503,7 +9528,7 @@
+ case BT_CHARACTER:
+ return false;
+
+- case BT_DERIVED:
++ case_bt_struct:
+ return !expr->ts.u.derived->attr.alloc_comp;
+
+ default:
+Index: gcc/fortran/symbol.c
+===================================================================
+--- a/src/gcc/fortran/symbol.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/symbol.c (.../branches/gcc-6-branch)
+@@ -40,6 +40,7 @@
+ minit ("VARIABLE", FL_VARIABLE), minit ("PARAMETER", FL_PARAMETER),
+ minit ("LABEL", FL_LABEL), minit ("PROCEDURE", FL_PROCEDURE),
+ minit ("DERIVED", FL_DERIVED), minit ("NAMELIST", FL_NAMELIST),
++ minit ("UNION", FL_UNION), minit ("STRUCTURE", FL_STRUCT),
+ minit (NULL, -1)
+ };
+
+@@ -444,7 +445,7 @@
+ case FL_BLOCK_DATA:
+ case FL_MODULE:
+ case FL_LABEL:
+- case FL_DERIVED:
++ case_fl_struct:
+ case FL_PARAMETER:
+ a1 = gfc_code2string (flavors, attr->flavor);
+ a2 = save;
+@@ -740,7 +741,7 @@
+
+ break;
+
+- case FL_DERIVED:
++ case_fl_struct:
+ conf2 (dummy);
+ conf2 (pointer);
+ conf2 (target);
+@@ -1579,7 +1580,7 @@
+ {
+
+ if ((f == FL_PROGRAM || f == FL_BLOCK_DATA || f == FL_MODULE
+- || f == FL_PARAMETER || f == FL_LABEL || f == FL_DERIVED
++ || f == FL_PARAMETER || f == FL_LABEL || gfc_fl_struct(f)
+ || f == FL_NAMELIST) && check_used (attr, name, where))
+ return false;
+
+@@ -2048,6 +2049,11 @@
+ {
+ gfc_component *p, *tail;
+
++ /* Check for existing components with the same name, but not for union
++ components or containers. Unions and maps are anonymous so they have
++ unique internal names which will never conflict.
++ Don't use gfc_find_component here because it calls gfc_use_derived,
++ but the derived type may not be fully defined yet. */
+ tail = NULL;
+
+ for (p = sym->components; p; p = p->next)
+@@ -2063,7 +2069,8 @@
+ }
+
+ if (sym->attr.extension
+- && gfc_find_component (sym->components->ts.u.derived, name, true, true))
++ && gfc_find_component (sym->components->ts.u.derived,
++ name, true, true, NULL))
+ {
+ gfc_error ("Component %qs at %C already in the parent type "
+ "at %L", name, &sym->components->ts.u.derived->declared_at);
+@@ -2154,7 +2161,7 @@
+ return NULL;
+ }
+
+- if (s == NULL || s->attr.flavor != FL_DERIVED)
++ if (s == NULL || !gfc_fl_struct (s->attr.flavor))
+ goto bad;
+
+ /* Get rid of symbol sym, translating all references to s. */
+@@ -2188,29 +2195,114 @@
+ }
+
+
++/* Find the component with the given name in the union type symbol.
++ If ref is not NULL it will be set to the chain of components through which
++ the component can actually be accessed. This is necessary for unions because
++ intermediate structures may be maps, nested structures, or other unions,
++ all of which may (or must) be 'anonymous' to user code. */
++
++static gfc_component *
++find_union_component (gfc_symbol *un, const char *name,
++ bool noaccess, gfc_ref **ref)
++{
++ gfc_component *m, *check;
++ gfc_ref *sref, *tmp;
++
++ for (m = un->components; m; m = m->next)
++ {
++ check = gfc_find_component (m->ts.u.derived, name, noaccess, true, &tmp);
++ if (check == NULL)
++ continue;
++
++ /* Found component somewhere in m; chain the refs together. */
++ if (ref)
++ {
++ /* Map ref. */
++ sref = gfc_get_ref ();
++ sref->type = REF_COMPONENT;
++ sref->u.c.component = m;
++ sref->u.c.sym = m->ts.u.derived;
++ sref->next = tmp;
++
++ *ref = sref;
++ }
++ /* Other checks (such as access) were done in the recursive calls. */
++ return check;
++ }
++ return NULL;
++}
++
++
+ /* Given a derived type node and a component name, try to locate the
+ component structure. Returns the NULL pointer if the component is
+ not found or the components are private. If noaccess is set, no access
+- checks are done. */
++ checks are done. If silent is set, an error will not be generated if
++ the component cannot be found or accessed.
++
++ If ref is not NULL, *ref is set to represent the chain of components
++ required to get to the ultimate component.
+
++ If the component is simply a direct subcomponent, or is inherited from a
++ parent derived type in the given derived type, this is a single ref with its
++ component set to the returned component.
++
++ Otherwise, *ref is constructed as a chain of subcomponents. This occurs
++ when the component is found through an implicit chain of nested union and
++ map components. Unions and maps are "anonymous" substructures in FORTRAN
++ which cannot be explicitly referenced, but the reference chain must be
++ considered as in C for backend translation to correctly compute layouts.
++ (For example, x.a may refer to x->(UNION)->(MAP)->(UNION)->(MAP)->a). */
++
+ gfc_component *
+ gfc_find_component (gfc_symbol *sym, const char *name,
+- bool noaccess, bool silent)
++ bool noaccess, bool silent, gfc_ref **ref)
+ {
+- gfc_component *p;
++ gfc_component *p, *check;
++ gfc_ref *sref = NULL, *tmp = NULL;
+
+ if (name == NULL || sym == NULL)
+ return NULL;
+
+- sym = gfc_use_derived (sym);
++ if (sym->attr.flavor == FL_DERIVED)
++ sym = gfc_use_derived (sym);
++ else
++ gcc_assert (gfc_fl_struct (sym->attr.flavor));
+
+ if (sym == NULL)
+ return NULL;
+
++ /* Handle UNIONs specially - mutually recursive with gfc_find_component. */
++ if (sym->attr.flavor == FL_UNION)
++ return find_union_component (sym, name, noaccess, ref);
++
++ if (ref) *ref = NULL;
+ for (p = sym->components; p; p = p->next)
+- if (strcmp (p->name, name) == 0)
+- break;
++ {
++ /* Nest search into union's maps. */
++ if (p->ts.type == BT_UNION)
++ {
++ check = find_union_component (p->ts.u.derived, name, noaccess, &tmp);
++ if (check != NULL)
++ {
++ /* Union ref. */
++ if (ref)
++ {
++ sref = gfc_get_ref ();
++ sref->type = REF_COMPONENT;
++ sref->u.c.component = p;
++ sref->u.c.sym = p->ts.u.derived;
++ sref->next = tmp;
++ *ref = sref;
++ }
++ return check;
++ }
++ }
++ else if (strcmp (p->name, name) == 0)
++ break;
+
++ continue;
++ }
++
+ if (p && sym->attr.use_assoc && !noaccess)
+ {
+ bool is_parent_comp = sym->attr.extension && (p == sym->components);
+@@ -2231,7 +2323,7 @@
+ && sym->components->ts.type == BT_DERIVED)
+ {
+ p = gfc_find_component (sym->components->ts.u.derived, name,
+- noaccess, silent);
++ noaccess, silent, ref);
+ /* Do not overwrite the error. */
+ if (p == NULL)
+ return p;
+@@ -2241,6 +2333,25 @@
+ gfc_error ("%qs at %C is not a member of the %qs structure",
+ name, sym->name);
+
++ /* Component was found; build the ultimate component reference. */
++ if (p != NULL && ref)
++ {
++ tmp = gfc_get_ref ();
++ tmp->type = REF_COMPONENT;
++ tmp->u.c.component = p;
++ tmp->u.c.sym = sym;
++ /* Link the final component ref to the end of the chain of subrefs. */
++ if (sref)
++ {
++ *ref = sref;
++ for (; sref->next; sref = sref->next)
++ ;
++ sref->next = tmp;
++ }
++ else
++ *ref = tmp;
++ }
++
+ return p;
+ }
+
+@@ -3338,11 +3449,9 @@
+ /* The derived type is saved in the symtree with the first
+ letter capitalized; the all lower-case version to the
+ derived type contains its associated generic function. */
+- if (p->attr.flavor == FL_DERIVED)
+- gfc_delete_symtree (&p->ns->sym_root, gfc_get_string ("%c%s",
+- (char) TOUPPER ((unsigned char) p->name[0]),
+- &p->name[1]));
+- else
++ if (gfc_fl_struct (p->attr.flavor))
++ gfc_delete_symtree (&p->ns->sym_root,gfc_dt_upper_string (p->name));
++ else
+ gfc_delete_symtree (&p->ns->sym_root, p->name);
+
+ gfc_release_symbol (p);
+@@ -4526,10 +4635,7 @@
+ const char *hidden_name;
+ gfc_interface *intr, *head;
+
+- hidden_name = gfc_get_string ("%c%s",
+- (char) TOUPPER ((unsigned char)
+- tmp_sym->name[0]),
+- &tmp_sym->name[1]);
++ hidden_name = gfc_dt_upper_string (tmp_sym->name);
+ tmp_symtree = gfc_find_symtree (gfc_current_ns->sym_root,
+ hidden_name);
+ gcc_assert (tmp_symtree == NULL);
+@@ -4740,6 +4846,8 @@
+ bool is_class2 = (ts2->type == BT_CLASS);
+ bool is_derived1 = (ts1->type == BT_DERIVED);
+ bool is_derived2 = (ts2->type == BT_DERIVED);
++ bool is_union1 = (ts1->type == BT_UNION);
++ bool is_union2 = (ts2->type == BT_UNION);
+
+ if (is_class1
+ && ts1->u.derived->components
+@@ -4749,10 +4857,11 @@
+ || ts1->u.derived->attr.unlimited_polymorphic))
+ return 1;
+
+- if (!is_derived1 && !is_derived2 && !is_class1 && !is_class2)
++ if (!is_derived1 && !is_derived2 && !is_class1 && !is_class2
++ && !is_union1 && !is_union2)
+ return (ts1->type == ts2->type);
+
+- if (is_derived1 && is_derived2)
++ if ((is_derived1 && is_derived2) || (is_union1 && is_union1))
+ return gfc_compare_derived_types (ts1->u.derived, ts2->u.derived);
+
+ if (is_derived1 && is_class2)
+@@ -4821,12 +4930,12 @@
+ {
+ gfc_interface *intr = NULL;
+
+- if (!sym || sym->attr.flavor == FL_DERIVED)
++ if (!sym || gfc_fl_struct (sym->attr.flavor))
+ return sym;
+
+ if (sym->attr.generic)
+ for (intr = sym->generic; intr; intr = intr->next)
+- if (intr->sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (intr->sym->attr.flavor))
+ break;
+ return intr ? intr->sym : NULL;
+ }
+Index: gcc/fortran/class.c
+===================================================================
+--- a/src/gcc/fortran/class.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/class.c (.../branches/gcc-6-branch)
+@@ -78,12 +78,11 @@
+ gcc_assert (ts->type == BT_DERIVED || ts->type == BT_CLASS);
+ type_sym = ts->u.derived;
+
+- new_ref = gfc_get_ref ();
+- new_ref->type = REF_COMPONENT;
++ gfc_find_component (type_sym, name, true, true, &new_ref);
++ gcc_assert (new_ref->u.c.component);
++ while (new_ref->next)
++ new_ref = new_ref->next;
+ new_ref->next = *ref;
+- new_ref->u.c.sym = type_sym;
+- new_ref->u.c.component = gfc_find_component (type_sym, name, true, true);
+- gcc_assert (new_ref->u.c.component);
+
+ if (new_ref->next)
+ {
+@@ -206,8 +205,9 @@
+ void
+ gfc_add_component_ref (gfc_expr *e, const char *name)
+ {
++ gfc_component *c;
+ gfc_ref **tail = &(e->ref);
+- gfc_ref *next = NULL;
++ gfc_ref *ref, *next = NULL;
+ gfc_symbol *derived = e->symtree->n.sym->ts.u.derived;
+ while (*tail != NULL)
+ {
+@@ -237,14 +237,13 @@
+ else
+ /* Avoid losing memory. */
+ gfc_free_ref_list (*tail);
+- (*tail) = gfc_get_ref();
+- (*tail)->next = next;
+- (*tail)->type = REF_COMPONENT;
+- (*tail)->u.c.sym = derived;
+- (*tail)->u.c.component = gfc_find_component (derived, name, true, true);
+- gcc_assert((*tail)->u.c.component);
++ c = gfc_find_component (derived, name, true, true, tail);
++ gcc_assert (c);
++ for (ref = *tail; ref->next; ref = ref->next)
++ ;
++ ref->next = next;
+ if (!next)
+- e->ts = (*tail)->u.c.component->ts;
++ e->ts = c->ts;
+ }
+
+
+@@ -477,8 +476,7 @@
+ if (derived->attr.unlimited_polymorphic)
+ strcpy (dt_name, "STAR");
+ else
+- strcpy (dt_name, derived->name);
+- dt_name[0] = TOUPPER (dt_name[0]);
++ strcpy (dt_name, gfc_dt_upper_string (derived->name));
+ if (derived->attr.unlimited_polymorphic)
+ sprintf (string, "_%s", dt_name);
+ else if (derived->module)
+@@ -751,7 +749,7 @@
+ if (tb->non_overridable)
+ return;
+
+- c = gfc_find_component (vtype, name, true, true);
++ c = gfc_find_component (vtype, name, true, true, NULL);
+
+ if (c == NULL)
+ {
+@@ -820,7 +818,7 @@
+
+ for (cmp = vtab->ts.u.derived->components; cmp; cmp = cmp->next)
+ {
+- if (gfc_find_component (vtype, cmp->name, true, true))
++ if (gfc_find_component (vtype, cmp->name, true, true, NULL))
+ continue;
+
+ add_proc_comp (vtype, cmp->name, cmp->tb);
+Index: gcc/fortran/decl.c
+===================================================================
+--- a/src/gcc/fortran/decl.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/decl.c (.../branches/gcc-6-branch)
+@@ -391,13 +391,13 @@
+
+ if (sym == NULL
+ || (sym->attr.flavor != FL_PARAMETER
+- && (!dt_sym || dt_sym->attr.flavor != FL_DERIVED)))
++ && (!dt_sym || !gfc_fl_struct (dt_sym->attr.flavor))))
+ {
+ gfc_error ("Symbol %qs must be a PARAMETER in DATA statement at %C",
+ name);
+ return MATCH_ERROR;
+ }
+- else if (dt_sym && dt_sym->attr.flavor == FL_DERIVED)
++ else if (dt_sym && gfc_fl_struct (dt_sym->attr.flavor))
+ return gfc_match_structure_constructor (dt_sym, result);
+
+ /* Check to see if the value is an initialization array expression. */
+@@ -606,6 +606,161 @@
+ /************************ Declaration statements *********************/
+
+
++/* Like gfc_match_init_expr, but matches a 'clist' (old-style initialization
++ list). The difference here is the expression is a list of constants
++ and is surrounded by '/'.
++ The typespec ts must match the typespec of the variable which the
++ clist is initializing.
++ The arrayspec tells whether this should match a list of constants
++ corresponding to array elements or a scalar (as == NULL). */
++
++static match
++match_clist_expr (gfc_expr **result, gfc_typespec *ts, gfc_array_spec *as)
++{
++ gfc_constructor_base array_head = NULL;
++ gfc_expr *expr = NULL;
++ match m;
++ locus where;
++ mpz_t repeat, size;
++ bool scalar;
++ int cmp;
++
++ gcc_assert (ts);
++
++ mpz_init_set_ui (repeat, 0);
++ mpz_init (size);
++ scalar = !as || !as->rank;
++
++ /* We have already matched '/' - now look for a constant list, as with
++ top_val_list from decl.c, but append the result to an array. */
++ if (gfc_match ("/") == MATCH_YES)
++ {
++ gfc_error ("Empty old style initializer list at %C");
++ goto cleanup;
++ }
++
++ where = gfc_current_locus;
++ for (;;)
++ {
++ m = match_data_constant (&expr);
++ if (m != MATCH_YES)
++ expr = NULL; /* match_data_constant may set expr to garbage */
++ if (m == MATCH_NO)
++ goto syntax;
++ if (m == MATCH_ERROR)
++ goto cleanup;
++
++ /* Found r in repeat spec r*c; look for the constant to repeat. */
++ if ( gfc_match_char ('*') == MATCH_YES)
++ {
++ if (scalar)
++ {
++ gfc_error ("Repeat spec invalid in scalar initializer at %C");
++ goto cleanup;
++ }
++ if (expr->ts.type != BT_INTEGER)
++ {
++ gfc_error ("Repeat spec must be an integer at %C");
++ goto cleanup;
++ }
++ mpz_set (repeat, expr->value.integer);
++ gfc_free_expr (expr);
++ expr = NULL;
++
++ m = match_data_constant (&expr);
++ if (m == MATCH_NO)
++ gfc_error ("Expected data constant after repeat spec at %C");
++ if (m != MATCH_YES)
++ goto cleanup;
++ }
++ /* No repeat spec, we matched the data constant itself. */
++ else
++ mpz_set_ui (repeat, 1);
++
++ if (!scalar)
++ {
++ /* Add the constant initializer as many times as repeated. */
++ for (; mpz_cmp_ui (repeat, 0) > 0; mpz_sub_ui (repeat, repeat, 1))
++ {
++ /* Make sure types of elements match */
++ if(ts && !gfc_compare_types (&expr->ts, ts)
++ && !gfc_convert_type (expr, ts, 1))
++ goto cleanup;
++
++ gfc_constructor_append_expr (&array_head,
++ gfc_copy_expr (expr), &gfc_current_locus);
++ }
++
++ gfc_free_expr (expr);
++ expr = NULL;
++ }
++
++ /* For scalar initializers quit after one element. */
++ else
++ {
++ if(gfc_match_char ('/') != MATCH_YES)
++ {
++ gfc_error ("End of scalar initializer expected at %C");
++ goto cleanup;
++ }
++ break;
++ }
++
++ if (gfc_match_char ('/') == MATCH_YES)
++ break;
++ if (gfc_match_char (',') == MATCH_NO)
++ goto syntax;
++ }
++
++ /* Set up expr as an array constructor. */
++ if (!scalar)
++ {
++ expr = gfc_get_array_expr (ts->type, ts->kind, &where);
++ expr->ts = *ts;
++ expr->value.constructor = array_head;
++
++ expr->rank = as->rank;
++ expr->shape = gfc_get_shape (expr->rank);
++
++ /* Validate sizes. */
++ gcc_assert (gfc_array_size (expr, &size));
++ gcc_assert (spec_size (as, &repeat));
++ cmp = mpz_cmp (size, repeat);
++ if (cmp < 0)
++ gfc_error ("Not enough elements in array initializer at %C");
++ else if (cmp > 0)
++ gfc_error ("Too many elements in array initializer at %C");
++ if (cmp)
++ goto cleanup;
++ }
++
++ /* Make sure scalar types match. */
++ else if (!gfc_compare_types (&expr->ts, ts)
++ && !gfc_convert_type (expr, ts, 1))
++ goto cleanup;
++
++ if (expr->ts.u.cl)
++ expr->ts.u.cl->length_from_typespec = 1;
++
++ *result = expr;
++ mpz_clear (size);
++ mpz_clear (repeat);
++ return MATCH_YES;
++
++syntax:
++ gfc_error ("Syntax error in old style initializer list at %C");
++
++cleanup:
++ if (expr)
++ expr->value.constructor = NULL;
++ gfc_free_expr (expr);
++ gfc_constructor_free (array_head);
++ mpz_clear (size);
++ mpz_clear (repeat);
++ return MATCH_ERROR;
++}
++
++
+ /* Auxiliary function to merge DIMENSION and CODIMENSION array specs. */
+
+ static bool
+@@ -1239,7 +1394,8 @@
+
+ st = gfc_find_symtree (gfc_current_ns->sym_root, u_name);
+
+- if (st != 0)
++ /* STRUCTURE types can alias symbol names */
++ if (st != 0 && st->n.sym->attr.flavor != FL_STRUCT)
+ {
+ gfc_error ("Symbol %qs at %C also declared as a type at %L", name,
+ &st->n.sym->declared_at);
+@@ -1469,7 +1625,7 @@
+
+ /* Check if the assignment can happen. This has to be put off
+ until later for derived type variables and procedure pointers. */
+- if (sym->ts.type != BT_DERIVED && init->ts.type != BT_DERIVED
++ if (!gfc_bt_struct (sym->ts.type) && !gfc_bt_struct (init->ts.type)
+ && sym->ts.type != BT_CLASS && init->ts.type != BT_CLASS
+ && !sym->attr.proc_pointer
+ && !gfc_check_assign_symbol (sym, NULL, init))
+@@ -1608,7 +1764,7 @@
+ If we mark my_int as iso_c (since we can see it's value
+ is equal to one of the named constants), then my_int_2
+ will be considered C interoperable. */
+- if (sym->ts.type != BT_CHARACTER && sym->ts.type != BT_DERIVED)
++ if (sym->ts.type != BT_CHARACTER && !gfc_bt_struct (sym->ts.type))
+ {
+ sym->ts.is_iso_c |= init->ts.is_iso_c;
+ sym->ts.is_c_interop |= init->ts.is_c_interop;
+@@ -1666,6 +1822,7 @@
+ build_struct (const char *name, gfc_charlen *cl, gfc_expr **init,
+ gfc_array_spec **as)
+ {
++ gfc_state_data *s;
+ gfc_component *c;
+ bool t = true;
+
+@@ -1689,6 +1846,35 @@
+ }
+ }
+
++ /* If we are in a nested union/map definition, gfc_add_component will not
++ properly find repeated components because:
++ (i) gfc_add_component does a flat search, where components of unions
++ and maps are implicity chained so nested components may conflict.
++ (ii) Unions and maps are not linked as components of their parent
++ structures until after they are parsed.
++ For (i) we use gfc_find_component which searches recursively, and for (ii)
++ we search each block directly from the parse stack until we find the top
++ level structure. */
++
++ s = gfc_state_stack;
++ if (s->state == COMP_UNION || s->state == COMP_MAP)
++ {
++ while (s->state == COMP_UNION || gfc_comp_struct (s->state))
++ {
++ c = gfc_find_component (s->sym, name, true, true, NULL);
++ if (c != NULL)
++ {
++ gfc_error_now ("Component '%s' at %C already declared at %L",
++ name, &c->loc);
++ return false;
++ }
++ /* Break after we've searched the entire chain. */
++ if (s->state == COMP_DERIVED || s->state == COMP_STRUCTURE)
++ break;
++ s = s->previous;
++ }
++ }
++
+ if (!gfc_add_component (gfc_current_block(), name, &c))
+ return false;
+
+@@ -1868,7 +2054,7 @@
+ {
+ match m;
+
+- if (gfc_pure (NULL) && gfc_state_stack->state != COMP_DERIVED)
++ if (gfc_pure (NULL) && !gfc_comp_struct (gfc_state_stack->state))
+ {
+ gfc_error ("Initialization of pointer at %C is not allowed in "
+ "a PURE procedure");
+@@ -2062,7 +2248,7 @@
+ /* If this symbol has already shown up in a Cray Pointer declaration,
+ and this is not a component declaration,
+ then we want to set the type & bail out. */
+- if (flag_cray_pointer && gfc_current_state () != COMP_DERIVED)
++ if (flag_cray_pointer && !gfc_comp_struct (gfc_current_state ()))
+ {
+ gfc_find_symbol (name, gfc_current_ns, 1, &sym);
+ if (sym != NULL && sym->attr.cray_pointee)
+@@ -2127,7 +2313,7 @@
+ For components of derived types, it is not true, so we don't
+ create a symbol for those yet. If we fail to create the symbol,
+ bail out. */
+- if (gfc_current_state () != COMP_DERIVED
++ if (!gfc_comp_struct (gfc_current_state ())
+ && !build_sym (name, cl, cl_deferred, &as, &var_locus))
+ {
+ m = MATCH_ERROR;
+@@ -2154,6 +2340,9 @@
+ if (!gfc_notify_std (GFC_STD_GNU, "Old-style "
+ "initialization at %C"))
+ return MATCH_ERROR;
++
++ /* Allow old style initializations for components of STRUCTUREs and MAPs
++ but not components of derived types. */
+ else if (gfc_current_state () == COMP_DERIVED)
+ {
+ gfc_error ("Invalid old style initialization for derived type "
+@@ -2162,7 +2351,23 @@
+ goto cleanup;
+ }
+
+- return match_old_style_init (name);
++ /* For structure components, read the initializer as a special
++ expression and let the rest of this function apply the initializer
++ as usual. */
++ else if (gfc_comp_struct (gfc_current_state ()))
++ {
++ m = match_clist_expr (&initializer, ¤t_ts, as);
++ if (m == MATCH_NO)
++ gfc_error ("Syntax error in old style initialization of %s at %C",
++ name);
++ if (m != MATCH_YES)
++ goto cleanup;
++ }
++
++ /* Otherwise we treat the old style initialization just like a
++ DATA declaration for the current variable. */
++ else
++ return match_old_style_init (name);
+ }
+
+ /* The double colon must be present in order to have initializers.
+@@ -2200,7 +2405,7 @@
+ }
+
+ if (current_attr.flavor != FL_PARAMETER && gfc_pure (NULL)
+- && gfc_state_stack->state != COMP_DERIVED)
++ && !gfc_comp_struct (gfc_state_stack->state))
+ {
+ gfc_error ("Initialization of variable at %C is not allowed in "
+ "a PURE procedure");
+@@ -2208,7 +2413,7 @@
+ }
+
+ if (current_attr.flavor != FL_PARAMETER
+- && gfc_state_stack->state != COMP_DERIVED)
++ && !gfc_comp_struct (gfc_state_stack->state))
+ gfc_unset_implicit_pure (gfc_current_ns->proc_name);
+
+ if (m != MATCH_YES)
+@@ -2217,7 +2422,7 @@
+ }
+
+ if (initializer != NULL && current_attr.allocatable
+- && gfc_current_state () == COMP_DERIVED)
++ && gfc_comp_struct (gfc_current_state ()))
+ {
+ gfc_error ("Initialization of allocatable component at %C is not "
+ "allowed");
+@@ -2228,7 +2433,7 @@
+ /* Add the initializer. Note that it is fine if initializer is
+ NULL here, because we sometimes also need to check if a
+ declaration *must* have an initialization expression. */
+- if (gfc_current_state () != COMP_DERIVED)
++ if (!gfc_comp_struct (gfc_current_state ()))
+ t = add_init_expr_to_sym (name, &initializer, &var_locus);
+ else
+ {
+@@ -2236,6 +2441,12 @@
+ && !current_attr.pointer && !initializer)
+ initializer = gfc_default_initializer (¤t_ts);
+ t = build_struct (name, cl, &initializer, &as);
++
++ /* If we match a nested structure definition we expect to see the
++ * body even if the variable declarations blow up, so we need to keep
++ * the structure declaration around. */
++ if (gfc_new_block && gfc_new_block->attr.flavor == FL_STRUCT)
++ gfc_commit_symbol (gfc_new_block);
+ }
+
+ m = (t) ? MATCH_YES : MATCH_ERROR;
+@@ -2724,6 +2935,36 @@
+ }
+
+
++/* Matches a RECORD declaration. */
++
++static match
++match_record_decl (const char *name)
++{
++ locus old_loc;
++ old_loc = gfc_current_locus;
++
++ if (gfc_match (" record") == MATCH_YES)
++ {
++ if (!gfc_option.flag_dec_structure)
++ {
++ gfc_current_locus = old_loc;
++ gfc_error ("RECORD at %C is an extension, enable it with "
++ "-fdec-structure");
++ return MATCH_ERROR;
++ }
++ if (gfc_match (" /%n/", name) != MATCH_YES)
++ {
++ gfc_error ("Structure name expected after RECORD at %C");
++ gfc_current_locus = old_loc;
++ return MATCH_ERROR;
++ }
++ return MATCH_YES;
++ }
++
++ gfc_current_locus = old_loc;
++ return MATCH_NO;
++}
++
+ /* Matches a declaration-type-spec (F03:R502). If successful, sets the ts
+ structure to the matched specification. This is necessary for FUNCTION and
+ IMPLICIT statements.
+@@ -2781,7 +3022,7 @@
+ {
+ if ((m = gfc_match ("*)")) != MATCH_YES)
+ return m;
+- if (gfc_current_state () == COMP_DERIVED)
++ if (gfc_comp_struct (gfc_current_state ()))
+ {
+ gfc_error ("Assumed type at %C is not allowed for components");
+ return MATCH_ERROR;
+@@ -2892,10 +3133,51 @@
+ if (matched_type)
+ m = gfc_match_char (')');
+
+- if (m == MATCH_YES)
+- ts->type = BT_DERIVED;
++ if (m != MATCH_YES)
++ m = match_record_decl (name);
++
++ if (matched_type || m == MATCH_YES)
++ {
++ ts->type = BT_DERIVED;
++ /* We accept record/s/ or type(s) where s is a structure, but we
++ * don't need all the extra derived-type stuff for structures. */
++ if (gfc_find_symbol (gfc_dt_upper_string (name), NULL, 1, &sym))
++ {
++ gfc_error ("Type name '%s' at %C is ambiguous", name);
++ return MATCH_ERROR;
++ }
++ if (sym && sym->attr.flavor == FL_STRUCT)
++ {
++ ts->u.derived = sym;
++ return MATCH_YES;
++ }
++ /* Actually a derived type. */
++ }
++
+ else
+ {
++ /* Match nested STRUCTURE declarations; only valid within another
++ structure declaration. */
++ m = gfc_match (" structure");
++ if (m == MATCH_ERROR)
++ return MATCH_ERROR;
++ else if (m == MATCH_YES)
++ {
++ if ( gfc_current_state () != COMP_STRUCTURE
++ && gfc_current_state () != COMP_MAP)
++ return MATCH_ERROR;
++
++ m = gfc_match_structure_decl ();
++ if (m == MATCH_YES)
++ {
++ /* gfc_new_block is updated by match_structure_decl. */
++ ts->type = BT_DERIVED;
++ ts->u.derived = gfc_new_block;
++ return MATCH_YES;
++ }
++ return MATCH_ERROR;
++ }
++
+ /* Match CLASS declarations. */
+ m = gfc_match (" class ( * )");
+ if (m == MATCH_ERROR)
+@@ -2964,9 +3246,7 @@
+ stored in a symtree with the first letter of the name capitalized; the
+ symtree with the all lower-case name contains the associated
+ generic function. */
+- dt_name = gfc_get_string ("%c%s",
+- (char) TOUPPER ((unsigned char) name[0]),
+- (const char*)&name[1]);
++ dt_name = gfc_dt_upper_string (name);
+ sym = NULL;
+ dt_sym = NULL;
+ if (ts->kind != -1)
+@@ -2998,7 +3278,7 @@
+ return MATCH_NO;
+ }
+
+- if ((sym->attr.flavor != FL_UNKNOWN
++ if ((sym->attr.flavor != FL_UNKNOWN && sym->attr.flavor != FL_STRUCT
+ && !(sym->attr.flavor == FL_PROCEDURE && sym->attr.generic))
+ || sym->attr.subroutine)
+ {
+@@ -3038,7 +3318,7 @@
+
+ gfc_set_sym_referenced (dt_sym);
+
+- if (dt_sym->attr.flavor != FL_DERIVED
++ if (dt_sym->attr.flavor != FL_DERIVED && dt_sym->attr.flavor != FL_STRUCT
+ && !gfc_add_flavor (&dt_sym->attr, FL_DERIVED, sym->name, NULL))
+ return MATCH_ERROR;
+
+@@ -3480,9 +3760,7 @@
+ letter of the name capitalized; the symtree with the all
+ lower-case name contains the associated generic function. */
+ st = gfc_new_symtree (&gfc_current_ns->sym_root,
+- gfc_get_string ("%c%s",
+- (char) TOUPPER ((unsigned char) name[0]),
+- &name[1]));
++ gfc_dt_upper_string (name));
+ st->n.sym = sym;
+ sym->refs++;
+ sym->attr.imported = 1;
+@@ -4497,7 +4775,7 @@
+ return m;
+
+ if ((current_ts.type == BT_DERIVED || current_ts.type == BT_CLASS)
+- && gfc_current_state () != COMP_DERIVED)
++ && !gfc_comp_struct (gfc_current_state ()))
+ {
+ sym = gfc_use_derived (current_ts.u.derived);
+
+@@ -4526,7 +4804,7 @@
+ && !current_ts.u.derived->attr.zero_comp)
+ {
+
+- if (current_attr.pointer && gfc_current_state () == COMP_DERIVED)
++ if (current_attr.pointer && gfc_comp_struct (gfc_current_state ()))
+ goto ok;
+
+ gfc_find_symbol (current_ts.u.derived->name,
+@@ -4533,10 +4811,12 @@
+ current_ts.u.derived->ns, 1, &sym);
+
+ /* Any symbol that we find had better be a type definition
+- which has its components defined. */
+- if (sym != NULL && sym->attr.flavor == FL_DERIVED
++ which has its components defined, or be a structure definition
++ actively being parsed. */
++ if (sym != NULL && gfc_fl_struct (sym->attr.flavor)
+ && (current_ts.u.derived->components != NULL
+- || current_ts.u.derived->attr.zero_comp))
++ || current_ts.u.derived->attr.zero_comp
++ || current_ts.u.derived == gfc_new_block))
+ goto ok;
+
+ gfc_error ("Derived type at %C has not been previously defined "
+@@ -5791,6 +6071,10 @@
+ gfc_error ("ENTRY statement at %C cannot appear within "
+ "an INTERFACE");
+ break;
++ case COMP_STRUCTURE:
++ gfc_error ("ENTRY statement at %C cannot appear within "
++ "a STRUCTURE block");
++ break;
+ case COMP_DERIVED:
+ gfc_error ("ENTRY statement at %C cannot appear within "
+ "a DERIVED TYPE block");
+@@ -6450,6 +6734,24 @@
+ eos_ok = 0;
+ break;
+
++ case COMP_MAP:
++ *st = ST_END_MAP;
++ target = " map";
++ eos_ok = 0;
++ break;
++
++ case COMP_UNION:
++ *st = ST_END_UNION;
++ target = " union";
++ eos_ok = 0;
++ break;
++
++ case COMP_STRUCTURE:
++ *st = ST_END_STRUCTURE;
++ target = " structure";
++ eos_ok = 0;
++ break;
++
+ case COMP_DERIVED:
+ case COMP_DERIVED_CONTAINS:
+ *st = ST_END_TYPE;
+@@ -8020,6 +8322,208 @@
+ }
+
+
++/* Common function for type declaration blocks similar to derived types, such
++ as STRUCTURES and MAPs. Unlike derived types, a structure type
++ does NOT have a generic symbol matching the name given by the user.
++ STRUCTUREs can share names with variables and PARAMETERs so we must allow
++ for the creation of an independent symbol.
++ Other parameters are a message to prefix errors with, the name of the new
++ type to be created, and the flavor to add to the resulting symbol. */
++
++static bool
++get_struct_decl (const char *name, sym_flavor fl, locus *decl,
++ gfc_symbol **result)
++{
++ gfc_symbol *sym;
++ locus where;
++
++ gcc_assert (name[0] == (char) TOUPPER (name[0]));
++
++ if (decl)
++ where = *decl;
++ else
++ where = gfc_current_locus;
++
++ if (gfc_get_symbol (name, NULL, &sym))
++ return false;
++
++ if (!sym)
++ {
++ gfc_internal_error ("Failed to create structure type '%s' at %C", name);
++ return false;
++ }
++
++ if (sym->components != NULL || sym->attr.zero_comp)
++ {
++ gfc_error ("Type definition of '%s' at %C was already defined at %L",
++ sym->name, &sym->declared_at);
++ return false;
++ }
++
++ sym->declared_at = where;
++
++ if (sym->attr.flavor != fl
++ && !gfc_add_flavor (&sym->attr, fl, sym->name, NULL))
++ return false;
++
++ if (!sym->hash_value)
++ /* Set the hash for the compound name for this type. */
++ sym->hash_value = gfc_hash_value (sym);
++
++ /* Normally the type is expected to have been completely parsed by the time
++ a field declaration with this type is seen. For unions, maps, and nested
++ structure declarations, we need to indicate that it is okay that we
++ haven't seen any components yet. This will be updated after the structure
++ is fully parsed. */
++ sym->attr.zero_comp = 0;
++
++ /* Structures always act like derived-types with the SEQUENCE attribute */
++ gfc_add_sequence (&sym->attr, sym->name, NULL);
++
++ if (result) *result = sym;
++
++ return true;
++}
++
++
++/* Match the opening of a MAP block. Like a struct within a union in C;
++ behaves identical to STRUCTURE blocks. */
++
++match
++gfc_match_map (void)
++{
++ /* Counter used to give unique internal names to map structures. */
++ static unsigned int gfc_map_id = 0;
++ char name[GFC_MAX_SYMBOL_LEN + 1];
++ gfc_symbol *sym;
++ locus old_loc;
++
++ old_loc = gfc_current_locus;
++
++ if (gfc_match_eos () != MATCH_YES)
++ {
++ gfc_error ("Junk after MAP statement at %C");
++ gfc_current_locus = old_loc;
++ return MATCH_ERROR;
++ }
++
++ /* Map blocks are anonymous so we make up unique names for the symbol table
++ which are invalid Fortran identifiers. */
++ snprintf (name, GFC_MAX_SYMBOL_LEN + 1, "MM$%u", gfc_map_id++);
++
++ if (!get_struct_decl (name, FL_STRUCT, &old_loc, &sym))
++ return MATCH_ERROR;
++
++ gfc_new_block = sym;
++
++ return MATCH_YES;
++}
++
++
++/* Match the opening of a UNION block. */
++
++match
++gfc_match_union (void)
++{
++ /* Counter used to give unique internal names to union types. */
++ static unsigned int gfc_union_id = 0;
++ char name[GFC_MAX_SYMBOL_LEN + 1];
++ gfc_symbol *sym;
++ locus old_loc;
++
++ old_loc = gfc_current_locus;
++
++ if (gfc_match_eos () != MATCH_YES)
++ {
++ gfc_error ("Junk after UNION statement at %C");
++ gfc_current_locus = old_loc;
++ return MATCH_ERROR;
++ }
++
++ /* Unions are anonymous so we make up unique names for the symbol table
++ which are invalid Fortran identifiers. */
++ snprintf (name, GFC_MAX_SYMBOL_LEN + 1, "UU$%u", gfc_union_id++);
++
++ if (!get_struct_decl (name, FL_UNION, &old_loc, &sym))
++ return MATCH_ERROR;
++
++ gfc_new_block = sym;
++
++ return MATCH_YES;
++}
++
++
++/* Match the beginning of a STRUCTURE declaration. This is similar to
++ matching the beginning of a derived type declaration with a few
++ twists. The resulting type symbol has no access control or other
++ interesting attributes. */
++
++match
++gfc_match_structure_decl (void)
++{
++ /* Counter used to give unique internal names to anonymous structures. */
++ int gfc_structure_id = 0;
++ char name[GFC_MAX_SYMBOL_LEN + 1];
++ gfc_symbol *sym;
++ match m;
++ locus where;
++
++ if(!gfc_option.flag_dec_structure)
++ {
++ gfc_error ("STRUCTURE at %C is a DEC extension, enable with "
++ "-fdec-structure");
++ return MATCH_ERROR;
++ }
++
++ name[0] = '\0';
++
++ m = gfc_match (" /%n/", name);
++ if (m != MATCH_YES)
++ {
++ /* Non-nested structure declarations require a structure name. */
++ if (!gfc_comp_struct (gfc_current_state ()))
++ {
++ gfc_error ("Structure name expected in non-nested structure "
++ "declaration at %C");
++ return MATCH_ERROR;
++ }
++ /* This is an anonymous structure; make up a unique name for it
++ (upper-case letters never make it to symbol names from the source).
++ The important thing is initializing the type variable
++ and setting gfc_new_symbol, which is immediately used by
++ parse_structure () and variable_decl () to add components of
++ this type. */
++ snprintf (name, GFC_MAX_SYMBOL_LEN + 1, "SS$%u", gfc_structure_id++);
++ }
++
++ where = gfc_current_locus;
++ /* No field list allowed after non-nested structure declaration. */
++ if (!gfc_comp_struct (gfc_current_state ())
++ && gfc_match_eos () != MATCH_YES)
++ {
++ gfc_error ("Junk after non-nested STRUCTURE statement at %C");
++ return MATCH_ERROR;
++ }
++
++ /* Make sure the name is not the name of an intrinsic type. */
++ if (gfc_is_intrinsic_typename (name))
++ {
++ gfc_error ("Structure name '%s' at %C cannot be the same as an"
++ " intrinsic type", name);
++ return MATCH_ERROR;
++ }
++
++ /* Store the actual type symbol for the structure with an upper-case first
++ letter (an invalid Fortran identifier). */
++
++ sprintf (name, gfc_dt_upper_string (name));
++ if (!get_struct_decl (name, FL_STRUCT, &where, &sym))
++ return MATCH_ERROR;
++
++ gfc_new_block = sym;
++ return MATCH_YES;
++}
++
+ /* Match the beginning of a derived type declaration. If a type name
+ was the result of a function, then it is possible to have a symbol
+ already to be known as a derived type yet have no components. */
+@@ -8037,7 +8541,7 @@
+ bool seen_attr = false;
+ gfc_interface *intr = NULL, *head;
+
+- if (gfc_current_state () == COMP_DERIVED)
++ if (gfc_comp_struct (gfc_current_state ()))
+ return MATCH_NO;
+
+ name[0] = '\0';
+@@ -8111,9 +8615,7 @@
+ if (!sym)
+ {
+ /* Use upper case to save the actual derived-type symbol. */
+- gfc_get_symbol (gfc_get_string ("%c%s",
+- (char) TOUPPER ((unsigned char) gensym->name[0]),
+- &gensym->name[1]), NULL, &sym);
++ gfc_get_symbol (gfc_dt_upper_string (gensym->name), NULL, &sym);
+ sym->name = gfc_get_string (gensym->name);
+ head = gensym->generic;
+ intr = gfc_get_interface ();
+Index: gcc/fortran/dump-parse-tree.c
+===================================================================
+--- a/src/gcc/fortran/dump-parse-tree.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/dump-parse-tree.c (.../branches/gcc-6-branch)
+@@ -106,6 +106,7 @@
+ {
+ case BT_DERIVED:
+ case BT_CLASS:
++ case BT_UNION:
+ fprintf (dumpfile, "%s", ts->u.derived->name);
+ break;
+
Index: gcc/fortran/trans-openmp.c
===================================================================
--- a/src/gcc/fortran/trans-openmp.c (.../tags/gcc_6_1_0_release)
@@ -2184,11 +6115,209 @@ Index: gcc/fortran/trans-openmp.c
oacc_clauses = gfc_trans_omp_clauses (&block, &construct_clauses,
code->loc);
}
+Index: gcc/fortran/gfortran.h
+===================================================================
+--- a/src/gcc/fortran/gfortran.h (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/gfortran.h (.../branches/gcc-6-branch)
+@@ -62,6 +62,15 @@
+
+ #define gfc_is_whitespace(c) ((c==' ') || (c=='\t'))
+
++/* Macros to check for groups of structure-like types and flavors since
++ derived types, structures, maps, unions are often treated similarly. */
++#define gfc_bt_struct(t) \
++ ((t) == BT_DERIVED || (t) == BT_UNION)
++#define gfc_fl_struct(f) \
++ ((f) == FL_DERIVED || (f) == FL_UNION || (f) == FL_STRUCT)
++#define case_bt_struct case BT_DERIVED: case BT_UNION
++#define case_fl_struct case FL_DERIVED: case FL_UNION: case FL_STRUCT
++
+ /* Stringization. */
+ #define stringize(x) expand_macro(x)
+ #define expand_macro(x) # x
+@@ -203,6 +212,8 @@
+ ST_POINTER_ASSIGNMENT, ST_SELECT_CASE, ST_SEQUENCE, ST_SIMPLE_IF,
+ ST_STATEMENT_FUNCTION, ST_DERIVED_DECL, ST_LABEL_ASSIGNMENT, ST_ENUM,
+ ST_ENUMERATOR, ST_END_ENUM, ST_SELECT_TYPE, ST_TYPE_IS, ST_CLASS_IS,
++ ST_STRUCTURE_DECL, ST_END_STRUCTURE,
++ ST_UNION, ST_END_UNION, ST_MAP, ST_END_MAP,
+ ST_OACC_PARALLEL_LOOP, ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL,
+ ST_OACC_END_PARALLEL, ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_DATA,
+ ST_OACC_END_DATA, ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA, ST_OACC_LOOP,
+@@ -254,12 +265,12 @@
+ };
+
+ /* Symbol flavors: these are all mutually exclusive.
+- 10 elements = 4 bits. */
++ 12 elements = 4 bits. */
+ enum sym_flavor
+ {
+ FL_UNKNOWN = 0, FL_PROGRAM, FL_BLOCK_DATA, FL_MODULE, FL_VARIABLE,
+ FL_PARAMETER, FL_LABEL, FL_PROCEDURE, FL_DERIVED, FL_NAMELIST,
+- FL_VOID
++ FL_UNION, FL_STRUCT, FL_VOID
+ };
+
+ /* Procedure types. 7 elements = 3 bits. */
+@@ -2523,6 +2534,8 @@
+ int flag_init_character;
+ char flag_init_character_value;
+
++ int flag_dec_structure;
++
+ int fpe;
+ int fpe_summary;
+ int rtcheck;
+@@ -2743,6 +2756,7 @@
+ int gfc_validate_kind (bt, int, bool);
+ int gfc_get_int_kind_from_width_isofortranenv (int size);
+ int gfc_get_real_kind_from_width_isofortranenv (int size);
++tree gfc_get_union_type (gfc_symbol *);
+ tree gfc_get_derived_type (gfc_symbol * derived);
+ extern int gfc_index_integer_kind;
+ extern int gfc_default_integer_kind;
+@@ -2831,7 +2845,8 @@
+ bool gfc_add_component (gfc_symbol *, const char *, gfc_component **);
+ gfc_symbol *gfc_use_derived (gfc_symbol *);
+ gfc_symtree *gfc_use_derived_tree (gfc_symtree *);
+-gfc_component *gfc_find_component (gfc_symbol *, const char *, bool, bool);
++gfc_component *gfc_find_component (gfc_symbol *, const char *, bool, bool,
++ gfc_ref **);
+
+ gfc_st_label *gfc_get_st_label (int);
+ void gfc_free_st_label (gfc_st_label *);
+@@ -3174,6 +3189,8 @@
+ void gfc_dump_module (const char *, int);
+ bool gfc_check_symbol_access (gfc_symbol *);
+ void gfc_free_use_stmts (gfc_use_list *);
++const char *gfc_dt_lower_string (const char *);
++const char *gfc_dt_upper_string (const char *);
+
+ /* primary.c */
+ symbol_attribute gfc_variable_attr (gfc_expr *, gfc_typespec *);
+Index: gcc/fortran/lang.opt
+===================================================================
+--- a/src/gcc/fortran/lang.opt (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/lang.opt (.../branches/gcc-6-branch)
+@@ -416,6 +416,14 @@
+ Fortran RejectNegative
+ Treat lines with 'D' in column one as comments.
+
++fdec
++Fortran
++Enable all DEC language extensions.
++
++fdec-structure
++Fortran
++Enable support for DEC STRUCTURE/RECORD.
++
+ fdefault-double-8
+ Fortran Var(flag_default_double)
+ Set the default double precision kind to an 8 byte wide type.
Index: gcc/fortran/ChangeLog
===================================================================
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,14 @@
+@@ -1,3 +1,113 @@
++2016-05-15 Harald Anlauf <anlauf at gmx.de>
++
++ PR fortran/69603
++ * interface.c (compare_parameter): Check for non-NULL pointer.
++
++2016-05-14 Fritz Reese <fritzoreese at gmail.com>
++
++ Backport from trunk: r236242
++ * gfortran.texi: Update example of DEC UNION extension.
++
++ Backport from trunk: r236241
++ PR fortran/71047
++ * expr.c (gfc_default_initializer): Avoid extra component refs in
++ constructors for derived types and classes.
++
++ Backport from trunk: r235999
++ PR fortran/56226
++ * module.c (dt_upper_string): Rename to gfc_dt_upper_string
++ (dt_lower_string): Likewise.
++ * gfortran.h: Make new gfc_dt_upper/lower_string global.
++ * class.c: Use gfc_dt_upper_string.
++ * decl.c: Likewise.
++ * symbol.c: Likewise.
++ * resolve.c (resolve_component): New function.
++ (resolve_fl_derived0): Move component loop code to resolve_component.
++ * parse.c (check_component): New function.
++ (parse_derived): Move loop code to check_component.
++ * lang.opt, invoke.texi, options.c : New option -fdec-structure.
++ * libgfortran.h (bt): New basic type BT_UNION.
++ * gfortran.h (gfc_option): New option -fdec-structure.
++ (gfc_get_union_type, gfc_compare_union_types): New prototypes.
++ (gfc_bt_struct, gfc_fl_struct, case_bt_struct, case_fl_struct): New
++ macros.
++ (gfc_find_component): Change prototype.
++ * match.h (gfc_match_member_sep, gfc_match_map, gfc_match_union,
++ gfc_match_structure_decl): New prototypes.
++ * parse.h (gfc_comp_struct): New macro.
++ * symbol.c (gfc_find_component): Search for components in nested unions
++ * class.c (insert_component_ref, gfc_add_component_ref, add_proc_comp,
++ copy_vtab_proc_comps): Update calls to gfc_find_component.
++ * primary.c (gfc_convert_to_structure_constructor): Likewise.
++ * symbol.c (gfc_add_component): Likewise.
++ * resolve.c (resolve_typebound_function, resolve_typebound_subroutine,
++ resolve_typebound_procedure, resolve_component, resolve_fl_derived):
++ Likewise.
++ * expr.c (get_union_init, component_init): New functions.
++ * decl.c (match_clist_expr, match_record_decl, get_struct_decl,
++ gfc_match_map, gfc_match_union, gfc_match_structure_decl): Likewise.
++ * interface.c (compare_components, gfc_compare_union_types): Likewise.
++ * match.c (gfc_match_member_sep): Likewise.
++ * parse.c (check_component, parse_union, parse_struct_map): Likewise.
++ * resolve.c (resolve_fl_struct): Likewise.
++ * symbol.c (find_union_component): Likewise.
++ * trans-types.c (gfc_get_union_type): Likewise.
++ * parse.c (parse_derived): Use new functions.
++ * interface.c (gfc_compare_derived_types, gfc_compare_types): Likewise.
++ * expr.c (gfc_default_initializer): Likewise.
++ * gfortran.texi: Support for DEC structures, unions, and maps.
++ * gfortran.h (gfc_statement, sym_flavor): Likewise.
++ * check.c (gfc_check_kill_sub): Likewise.
++ * expr.c (gfc_copy_expr, simplify_const_ref,
++ gfc_has_default_initializer): Likewise.
++ * decl.c (build_sym, match_data_constant, add_init_expr_to_sym,
++ match_pointer_init, build_struct, variable_decl,
++ gfc_match_decl_type_spec, gfc_mach_data-decl, gfc_match_entry,
++ gfc_match_end, gfc_match_derived_decl): Likewise.
++ * interface.c (check_interface0, check_interface1,
++ gfc_search_interface): Likewise.
++ * misc.c (gfc_basic_typename, gfc_typename): Likewise.
++ * module.c (add_true_name, build_tnt, bt_types, mio_typespec,
++ fix_mio_expr, load_needed, mio_symbol, read_module, write_symbol,
++ gfc_get_module_backend_decl): Likewise.
++ * parse.h (gfc_compile_state): Likewise.
++ * parse.c (decode_specification_statement, decode_statement,
++ gfc_ascii_statement, verify_st_order, parse_spec): Likewise.
++ * primary.c (gfc_match_varspec, gfc_match_structure_constructor,
++ gfc_match_rvalue, match_variable): Likewise.
++ * resolve.c (find_arglists, resolve_structure_cons,
++ is_illegal_recursion, resolve_generic_f, get_declared_from_expr,
++ resolve_typebound_subroutine, resolve_allocate_expr,
++ nonscalar_typebound_assign, generate_component_assignments,
++ resolve_fl_variable_derived, check_defined_assignments,
++ resolve_component, resolve_symbol, resolve_equivalence_derived):
++ Likewise.
++ * symbol.c (flavors, check_conflict, gfc_add_flavor, gfc_use_derived,
++ gfc_restore_last_undo_checkpoint, gfc_type_compatible,
++ gfc_find_dt_in_generic): Likewise.
++ * trans-decl.c (gfc_get_module_backend_decl, create_function_arglist,
++ gfc_create_module_variable, check_constant_initializer): Likewise.
++ * trans-expr.c (gfc_conv_component_ref, gfc_conv_initializer,
++ gfc_trans_alloc_subarray_assign, gfc_trans_subcomponent_assign,
++ gfc_conv_structure, gfc_trans_scalar_assign, copyable_array_p):
++ Likewise.
++ * trans-io.c (transfer_namelist_element, transfer_expr,
++ gfc_trans_transfer): Likewise.
++ * trans-stmt.c (gfc_trans_deallocate): Likewise.
++ * trans-types.c (gfc_typenode_for_spec, gfc_copy_dt_decls_ifequal,
++ gfc_get_derived_type): Likewise.
++
+2016-05-11 Jakub Jelinek <jakub at redhat.com>
+
+ PR fortran/70855
@@ -2203,6 +6332,370 @@ Index: gcc/fortran/ChangeLog
2016-04-27 Release Manager
* GCC 6.1.0 released.
+Index: gcc/fortran/trans-stmt.c
+===================================================================
+--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-6-branch)
+@@ -6275,7 +6275,7 @@
+ {
+ gfc_ref *ref;
+
+- if (expr->ts.type == BT_DERIVED && expr->ts.u.derived->attr.alloc_comp
++ if (gfc_bt_struct (expr->ts.type) && expr->ts.u.derived->attr.alloc_comp
+ && !gfc_is_finalizable (expr->ts.u.derived, NULL))
+ {
+ gfc_ref *last = NULL;
+Index: gcc/fortran/expr.c
+===================================================================
+--- a/src/gcc/fortran/expr.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/expr.c (.../branches/gcc-6-branch)
+@@ -335,7 +335,7 @@
+
+ case BT_HOLLERITH:
+ case BT_LOGICAL:
+- case BT_DERIVED:
++ case_bt_struct:
+ case BT_CLASS:
+ case BT_ASSUMED:
+ break; /* Already done. */
+@@ -1279,7 +1279,7 @@
+ /* For extended types, check if the desired component is in one of the
+ * parent types. */
+ while (ext > 0 && gfc_find_component (dt->components->ts.u.derived,
+- pick->name, true, true))
++ pick->name, true, true, NULL))
+ {
+ dt = dt->components->ts.u.derived;
+ c = gfc_constructor_first (c->expr->value.constructor);
+@@ -1649,7 +1649,7 @@
+
+ case AR_FULL:
+ if (p->ref->next != NULL
+- && (p->ts.type == BT_CHARACTER || p->ts.type == BT_DERIVED))
++ && (p->ts.type == BT_CHARACTER || gfc_bt_struct (p->ts.type)))
+ {
+ for (c = gfc_constructor_first (p->value.constructor);
+ c; c = gfc_constructor_next (c))
+@@ -1659,7 +1659,7 @@
+ return false;
+ }
+
+- if (p->ts.type == BT_DERIVED
++ if (gfc_bt_struct (p->ts.type)
+ && p->ref->next
+ && (c = gfc_constructor_first (p->value.constructor)))
+ {
+@@ -3926,9 +3926,9 @@
+ {
+ gfc_component *c;
+
+- gcc_assert (der->attr.flavor == FL_DERIVED);
++ gcc_assert (gfc_fl_struct (der->attr.flavor));
+ for (c = der->components; c; c = c->next)
+- if (c->ts.type == BT_DERIVED)
++ if (gfc_bt_struct (c->ts.type))
+ {
+ if (!c->attr.pointer && !c->attr.proc_pointer
+ && gfc_has_default_initializer (c->ts.u.derived))
+@@ -3975,6 +3975,10 @@
+
+ if (comp->initializer)
+ {
++ /* Save the component ref for STRUCTUREs and UNIONs. */
++ if (ts->u.derived->attr.flavor == FL_STRUCT
++ || ts->u.derived->attr.flavor == FL_UNION)
++ ctor->n.component = comp;
+ ctor->expr = gfc_copy_expr (comp->initializer);
+ if ((comp->ts.type != comp->initializer->ts.type
+ || comp->ts.kind != comp->initializer->ts.kind)
+Index: gcc/fortran/libgfortran.h
+===================================================================
+--- a/src/gcc/fortran/libgfortran.h (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/libgfortran.h (.../branches/gcc-6-branch)
+@@ -164,6 +164,6 @@
+ typedef enum
+ { BT_UNKNOWN = 0, BT_INTEGER, BT_LOGICAL, BT_REAL, BT_COMPLEX,
+ BT_DERIVED, BT_CHARACTER, BT_CLASS, BT_PROCEDURE, BT_HOLLERITH, BT_VOID,
+- BT_ASSUMED
++ BT_ASSUMED, BT_UNION
+ }
+ bt;
+Index: gcc/fortran/module.c
+===================================================================
+--- a/src/gcc/fortran/module.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/module.c (.../branches/gcc-6-branch)
+@@ -422,8 +422,8 @@
+ to convert the symtree name of a derived-type to the symbol name or to
+ the name of the associated generic function. */
+
+-static const char *
+-dt_lower_string (const char *name)
++const char *
++gfc_dt_lower_string (const char *name)
+ {
+ if (name[0] != (char) TOLOWER ((unsigned char) name[0]))
+ return gfc_get_string ("%c%s", (char) TOLOWER ((unsigned char) name[0]),
+@@ -437,8 +437,8 @@
+ symtree/symbol name of the associated generic function start with a lower-
+ case character. */
+
+-static const char *
+-dt_upper_string (const char *name)
++const char *
++gfc_dt_upper_string (const char *name)
+ {
+ if (name[0] != (char) TOUPPER ((unsigned char) name[0]))
+ return gfc_get_string ("%c%s", (char) TOUPPER ((unsigned char) name[0]),
+@@ -832,7 +832,7 @@
+
+ /* For derived types. */
+ if (name[0] != (char) TOLOWER ((unsigned char) name[0]))
+- low_name = dt_lower_string (name);
++ low_name = gfc_dt_lower_string (name);
+
+ i = 0;
+ for (u = gfc_rename_list; u; u = u->next)
+@@ -861,7 +861,7 @@
+ {
+ if (u->local_name[0] == '\0')
+ return name;
+- return dt_upper_string (u->local_name);
++ return gfc_dt_upper_string (u->local_name);
+ }
+
+ return (u->local_name[0] != '\0') ? u->local_name : name;
+@@ -989,8 +989,8 @@
+
+ t = XCNEW (true_name);
+ t->sym = sym;
+- if (sym->attr.flavor == FL_DERIVED)
+- t->name = dt_upper_string (sym->name);
++ if (gfc_fl_struct (sym->attr.flavor))
++ t->name = gfc_dt_upper_string (sym->name);
+ else
+ t->name = sym->name;
+
+@@ -1011,8 +1011,8 @@
+ build_tnt (st->left);
+ build_tnt (st->right);
+
+- if (st->n.sym->attr.flavor == FL_DERIVED)
+- name = dt_upper_string (st->n.sym->name);
++ if (gfc_fl_struct (st->n.sym->attr.flavor))
++ name = gfc_dt_upper_string (st->n.sym->name);
+ else
+ name = st->n.sym->name;
+
+@@ -2452,6 +2452,7 @@
+ minit ("COMPLEX", BT_COMPLEX),
+ minit ("LOGICAL", BT_LOGICAL),
+ minit ("CHARACTER", BT_CHARACTER),
++ minit ("UNION", BT_UNION),
+ minit ("DERIVED", BT_DERIVED),
+ minit ("CLASS", BT_CLASS),
+ minit ("PROCEDURE", BT_PROCEDURE),
+@@ -2505,7 +2506,7 @@
+
+ ts->type = MIO_NAME (bt) (ts->type, bt_types);
+
+- if (ts->type != BT_DERIVED && ts->type != BT_CLASS)
++ if (!gfc_bt_struct (ts->type) && ts->type != BT_CLASS)
+ mio_integer (&ts->kind);
+ else
+ mio_symbol_ref (&ts->u.derived);
+@@ -3322,8 +3323,8 @@
+ if (e->symtree->n.sym && check_unique_name (e->symtree->name))
+ {
+ const char *name = e->symtree->n.sym->name;
+- if (e->symtree->n.sym->attr.flavor == FL_DERIVED)
+- name = dt_upper_string (name);
++ if (gfc_fl_struct (e->symtree->n.sym->attr.flavor))
++ name = gfc_dt_upper_string (name);
+ ns_st = gfc_find_symtree (gfc_current_ns->sym_root, name);
+ }
+
+@@ -4265,7 +4266,7 @@
+
+ mio_integer (&(sym->intmod_sym_id));
+
+- if (sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (sym->attr.flavor))
+ mio_integer (&(sym->hash_value));
+
+ if (sym->formal_ns
+@@ -4845,7 +4846,7 @@
+ 1, &ns->proc_name);
+
+ sym = gfc_new_symbol (p->u.rsym.true_name, ns);
+- sym->name = dt_lower_string (p->u.rsym.true_name);
++ sym->name = gfc_dt_lower_string (p->u.rsym.true_name);
+ sym->module = gfc_get_string (p->u.rsym.module);
+ if (p->u.rsym.binding_label)
+ sym->binding_label = IDENTIFIER_POINTER (get_identifier
+@@ -4857,6 +4858,12 @@
+ mio_symbol (sym);
+ sym->attr.use_assoc = 1;
+
++ /* Unliked derived types, a STRUCTURE may share names with other symbols.
++ We greedily converted the the symbol name to lowercase before we knew its
++ type, so now we must fix it. */
++ if (sym->attr.flavor == FL_STRUCT)
++ sym->name = gfc_dt_upper_string (sym->name);
++
+ /* Mark as only or rename for later diagnosis for explicitly imported
+ but not used warnings; don't mark internal symbols such as __vtab,
+ __def_init etc. Only mark them if they have been explicitly loaded. */
+@@ -5059,7 +5066,7 @@
+ can be used in expressions in the module. To avoid the module loading
+ failing, we need to associate the module's component pointer indexes
+ with the existing symbol's component pointers. */
+- if (sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (sym->attr.flavor))
+ {
+ gfc_component *c;
+
+@@ -5213,7 +5220,7 @@
+ {
+ info->u.rsym.sym = gfc_new_symbol (info->u.rsym.true_name,
+ gfc_current_ns);
+- info->u.rsym.sym->name = dt_lower_string (info->u.rsym.true_name);
++ info->u.rsym.sym->name = gfc_dt_lower_string (info->u.rsym.true_name);
+ sym = info->u.rsym.sym;
+ sym->module = gfc_get_string (info->u.rsym.module);
+
+@@ -5557,10 +5564,10 @@
+
+ mio_integer (&n);
+
+- if (sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (sym->attr.flavor))
+ {
+ const char *name;
+- name = dt_upper_string (sym->name);
++ name = gfc_dt_upper_string (sym->name);
+ mio_pool_string (&name);
+ }
+ else
+@@ -6568,7 +6575,7 @@
+ sym->attr.function = 1;
+ sym->attr.generic = 1;
+
+- gfc_get_sym_tree (dt_upper_string (sym->name),
++ gfc_get_sym_tree (gfc_dt_upper_string (sym->name),
+ gfc_current_ns, &tmp_symtree, false);
+ dt_sym = tmp_symtree->n.sym;
+ dt_sym->name = gfc_get_string (sym->name);
+Index: gcc/fortran/trans-types.c
+===================================================================
+--- a/src/gcc/fortran/trans-types.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/trans-types.c (.../branches/gcc-6-branch)
+@@ -1101,6 +1101,10 @@
+ gfc_index_one_node);
+ break;
+
++ case BT_UNION:
++ basetype = gfc_get_union_type (spec->u.derived);
++ break;
++
+ case BT_DERIVED:
+ case BT_CLASS:
+ basetype = gfc_get_derived_type (spec->u.derived);
+@@ -2314,7 +2318,9 @@
+ for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next)
+ {
+ to_cm->backend_decl = from_cm->backend_decl;
+- if (from_cm->ts.type == BT_DERIVED
++ if (from_cm->ts.type == BT_UNION)
++ gfc_get_union_type (to_cm->ts.u.derived);
++ else if (from_cm->ts.type == BT_DERIVED
+ && (!from_cm->attr.pointer || from_gsym))
+ gfc_get_derived_type (to_cm->ts.u.derived);
+ else if (from_cm->ts.type == BT_CLASS
+@@ -2349,6 +2355,62 @@
+ }
+
+
++/* Build a tree node for a union type. Requires building each map
++ structure which is an element of the union. */
++
++tree
++gfc_get_union_type (gfc_symbol *un)
++{
++ gfc_component *map = NULL;
++ tree typenode = NULL, map_type = NULL, map_field = NULL;
++ tree *chain = NULL;
++
++ if (un->backend_decl)
++ {
++ if (TYPE_FIELDS (un->backend_decl) || un->attr.proc_pointer_comp)
++ return un->backend_decl;
++ else
++ typenode = un->backend_decl;
++ }
++ else
++ {
++ typenode = make_node (UNION_TYPE);
++ TYPE_NAME (typenode) = get_identifier (un->name);
++ }
++
++ /* Add each contained MAP as a field. */
++ for (map = un->components; map; map = map->next)
++ {
++ gcc_assert (map->ts.type == BT_DERIVED);
++
++ /* The map's type node, which is defined within this union's context. */
++ map_type = gfc_get_derived_type (map->ts.u.derived);
++ TYPE_CONTEXT (map_type) = typenode;
++
++ /* The map field's declaration. */
++ map_field = gfc_add_field_to_struct(typenode, get_identifier(map->name),
++ map_type, &chain);
++ if (map->loc.lb)
++ gfc_set_decl_location (map_field, &map->loc);
++ else if (un->declared_at.lb)
++ gfc_set_decl_location (map_field, &un->declared_at);
++
++ DECL_PACKED (map_field) |= TYPE_PACKED (typenode);
++ DECL_NAMELESS(map_field) = true;
++
++ /* We should never clobber another backend declaration for this map,
++ because each map component is unique. */
++ if (!map->backend_decl)
++ map->backend_decl = map_field;
++ }
++
++ un->backend_decl = typenode;
++ gfc_finish_type (typenode);
++
++ return typenode;
++}
++
++
+ /* Build a tree node for a derived type. If there are equal
+ derived types, with different local names, these are built
+ at the same time. If an equal derived type has been built
+@@ -2491,6 +2553,9 @@
+ will be built and so we can return the type. */
+ for (c = derived->components; c; c = c->next)
+ {
++ if (c->ts.type == BT_UNION && c->ts.u.derived->backend_decl == NULL)
++ c->ts.u.derived->backend_decl = gfc_get_union_type (c->ts.u.derived);
++
+ if (c->ts.type != BT_DERIVED && c->ts.type != BT_CLASS)
+ continue;
+
+@@ -2520,7 +2585,10 @@
+ return derived->backend_decl;
+
+ /* Build the type member list. Install the newly created RECORD_TYPE
+- node as DECL_CONTEXT of each FIELD_DECL. */
++ node as DECL_CONTEXT of each FIELD_DECL. In this case we must go
++ through only the top-level linked list of components so we correctly
++ build UNION_TYPE nodes for BT_UNION components. MAPs and other nested
++ types are built as part of gfc_get_union_type. */
+ for (c = derived->components; c; c = c->next)
+ {
+ /* Prevent infinite recursion, when the procedure pointer type is
Index: gcc/fortran/frontend-passes.c
===================================================================
--- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_6_1_0_release)
@@ -2220,6 +6713,2377 @@ Index: gcc/fortran/frontend-passes.c
expr1 = co->expr1;
expr2 = co->expr2;
if (expr2->expr_type != EXPR_FUNCTION
+Index: gcc/fortran/resolve.c
+===================================================================
+--- a/src/gcc/fortran/resolve.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/resolve.c (.../branches/gcc-6-branch)
+@@ -535,7 +535,7 @@
+ find_arglists (gfc_symbol *sym)
+ {
+ if (sym->attr.if_source == IFSRC_UNKNOWN || sym->ns != gfc_current_ns
+- || sym->attr.flavor == FL_DERIVED || sym->attr.intrinsic)
++ || gfc_fl_struct (sym->attr.flavor) || sym->attr.intrinsic)
+ return;
+
+ resolve_formal_arglist (sym);
+@@ -1116,6 +1116,7 @@
+
+
+ static bool resolve_fl_derived0 (gfc_symbol *sym);
++static bool resolve_fl_struct (gfc_symbol *sym);
+
+
+ /* Resolve all of the elements of a structure constructor and make sure that
+@@ -1132,8 +1133,13 @@
+
+ t = true;
+
+- if (expr->ts.type == BT_DERIVED)
+- resolve_fl_derived0 (expr->ts.u.derived);
++ if (expr->ts.type == BT_DERIVED || expr->ts.type == BT_UNION)
++ {
++ if (expr->ts.u.derived->attr.flavor == FL_DERIVED)
++ resolve_fl_derived0 (expr->ts.u.derived);
++ else
++ resolve_fl_struct (expr->ts.u.derived);
++ }
+
+ cons = gfc_constructor_first (expr->value.constructor);
+
+@@ -1561,7 +1567,7 @@
+ gfc_namespace* real_context;
+
+ if (sym->attr.flavor == FL_PROGRAM
+- || sym->attr.flavor == FL_DERIVED)
++ || gfc_fl_struct (sym->attr.flavor))
+ return false;
+
+ gcc_assert (sym->attr.flavor == FL_PROCEDURE);
+@@ -2548,7 +2554,7 @@
+ generic:
+ if (!intr)
+ for (intr = sym->generic; intr; intr = intr->next)
+- if (intr->sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (intr->sym->attr.flavor))
+ break;
+
+ if (sym->ns->parent == NULL)
+@@ -5715,7 +5721,7 @@
+ continue;
+
+ if ((ref->u.c.component->ts.type == BT_CLASS
+- || (check_types && ref->u.c.component->ts.type == BT_DERIVED))
++ || (check_types && gfc_bt_struct (ref->u.c.component->ts.type)))
+ && ref->u.c.component->attr.flavor != FL_PROCEDURE)
+ {
+ declared = ref->u.c.component->ts.u.derived;
+@@ -5978,7 +5984,7 @@
+ is present. */
+ ts = expr->ts;
+ declared = ts.u.derived;
+- c = gfc_find_component (declared, "_vptr", true, true);
++ c = gfc_find_component (declared, "_vptr", true, true, NULL);
+ if (c->ts.u.derived == NULL)
+ c->ts.u.derived = gfc_find_derived_vtab (declared);
+
+@@ -6025,7 +6031,7 @@
+ return false;
+
+ /* Weed out cases of the ultimate component being a derived type. */
+- if ((class_ref && class_ref->u.c.component->ts.type == BT_DERIVED)
++ if ((class_ref && gfc_bt_struct (class_ref->u.c.component->ts.type))
+ || (!class_ref && st->n.sym->ts.type != BT_CLASS))
+ {
+ gfc_free_ref_list (new_ref);
+@@ -6032,7 +6038,7 @@
+ return resolve_compcall (e, NULL);
+ }
+
+- c = gfc_find_component (declared, "_data", true, true);
++ c = gfc_find_component (declared, "_data", true, true, NULL);
+ declared = c->ts.u.derived;
+
+ /* Treat the call as if it is a typebound procedure, in order to roll
+@@ -6111,7 +6117,7 @@
+ that any delays in resolution are corrected and that the vtab
+ is present. */
+ declared = expr->ts.u.derived;
+- c = gfc_find_component (declared, "_vptr", true, true);
++ c = gfc_find_component (declared, "_vptr", true, true, NULL);
+ if (c->ts.u.derived == NULL)
+ c->ts.u.derived = gfc_find_derived_vtab (declared);
+
+@@ -6156,7 +6162,7 @@
+ get_declared_from_expr (&class_ref, &new_ref, code->expr1, true);
+
+ /* Weed out cases of the ultimate component being a derived type. */
+- if ((class_ref && class_ref->u.c.component->ts.type == BT_DERIVED)
++ if ((class_ref && gfc_bt_struct (class_ref->u.c.component->ts.type))
+ || (!class_ref && st->n.sym->ts.type != BT_CLASS))
+ {
+ gfc_free_ref_list (new_ref);
+@@ -7140,7 +7146,7 @@
+ gfc_typespec ts;
+ gfc_expr *init_e;
+
+- if (code->ext.alloc.ts.type == BT_DERIVED)
++ if (gfc_bt_struct (code->ext.alloc.ts.type))
+ ts = code->ext.alloc.ts;
+ else
+ ts = e->ts;
+@@ -7148,7 +7154,7 @@
+ if (ts.type == BT_CLASS)
+ ts = ts.u.derived->components->ts;
+
+- if (ts.type == BT_DERIVED && (init_e = gfc_default_initializer (&ts)))
++ if (gfc_bt_struct (ts.type) && (init_e = gfc_default_initializer (&ts)))
+ {
+ gfc_code *init_st = gfc_get_code (EXEC_INIT_ASSIGN);
+ init_st->loc = code->loc;
+@@ -7282,7 +7288,7 @@
+ sym = a->expr->symtree->n.sym;
+
+ /* TODO - check derived type components. */
+- if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
++ if (gfc_bt_struct (sym->ts.type) || sym->ts.type == BT_CLASS)
+ continue;
+
+ if ((ar->start[i] != NULL
+@@ -8220,7 +8226,7 @@
+ if (!gfc_build_class_symbol (&sym->ts, &attr, &as))
+ gcc_unreachable ();
+ /* Make sure the _vptr is set. */
+- c = gfc_find_component (sym->ts.u.derived, "_vptr", true, true);
++ c = gfc_find_component (sym->ts.u.derived, "_vptr", true, true, NULL);
+ if (c->ts.u.derived == NULL)
+ c->ts.u.derived = gfc_find_derived_vtab (sym->ts.u.derived);
+ CLASS_DATA (sym)->attr.pointer = 1;
+@@ -9911,7 +9917,7 @@
+
+ for (c= derived->components; c; c = c->next)
+ {
+- if ((c->ts.type != BT_DERIVED
++ if ((!gfc_bt_struct (c->ts.type)
+ || c->attr.pointer
+ || c->attr.allocatable
+ || c->attr.proc_pointer_comp
+@@ -10051,7 +10057,7 @@
+
+ /* The intrinsic assignment does the right thing for pointers
+ of all kinds and allocatable components. */
+- if (comp1->ts.type != BT_DERIVED
++ if (!gfc_bt_struct (comp1->ts.type)
+ || comp1->attr.pointer
+ || comp1->attr.allocatable
+ || comp1->attr.proc_pointer_comp
+@@ -11433,7 +11439,7 @@
+ gfc_find_symbol (sym->ts.u.derived->name, sym->ns, 0, &s);
+ if (s && s->attr.generic)
+ s = gfc_find_dt_in_generic (s);
+- if (s && s->attr.flavor != FL_DERIVED)
++ if (s && !gfc_fl_struct (s->attr.flavor))
+ {
+ gfc_error ("The type %qs cannot be host associated at %L "
+ "because it is blocked by an incompatible object "
+@@ -12733,7 +12739,8 @@
+ }
+
+ /* Try to find a name collision with an inherited component. */
+- if (super_type && gfc_find_component (super_type, stree->name, true, true))
++ if (super_type && gfc_find_component (super_type, stree->name, true, true,
++ NULL))
+ {
+ gfc_error ("Procedure %qs at %L has the same name as an inherited"
+ " component of %qs",
+@@ -12881,7 +12888,7 @@
+
+ for (c = derived->components; c; c = c->next)
+ {
+- if (c->ts.type != BT_DERIVED
++ if (!gfc_bt_struct (c->ts.type)
+ || c->attr.pointer
+ || c->attr.allocatable
+ || c->attr.proc_pointer_comp
+@@ -12907,438 +12914,501 @@
+ }
+
+
+-/* Resolve the components of a derived type. This does not have to wait until
+- resolution stage, but can be done as soon as the dt declaration has been
+- parsed. */
++/* Resolve a single component of a derived type or structure. */
+
+ static bool
+-resolve_fl_derived0 (gfc_symbol *sym)
++resolve_component (gfc_component *c, gfc_symbol *sym)
+ {
+- gfc_symbol* super_type;
+- gfc_component *c;
++ gfc_symbol *super_type;
+
+- if (sym->attr.unlimited_polymorphic)
++ if (c->attr.artificial)
+ return true;
+
+- super_type = gfc_get_derived_super_type (sym);
++ /* F2008, C442. */
++ if ((!sym->attr.is_class || c != sym->components)
++ && c->attr.codimension
++ && (!c->attr.allocatable || (c->as && c->as->type != AS_DEFERRED)))
++ {
++ gfc_error ("Coarray component %qs at %L must be allocatable with "
++ "deferred shape", c->name, &c->loc);
++ return false;
++ }
+
+- /* F2008, C432. */
+- if (super_type && sym->attr.coarray_comp && !super_type->attr.coarray_comp)
++ /* F2008, C443. */
++ if (c->attr.codimension && c->ts.type == BT_DERIVED
++ && c->ts.u.derived->ts.is_iso_c)
+ {
+- gfc_error ("As extending type %qs at %L has a coarray component, "
+- "parent type %qs shall also have one", sym->name,
+- &sym->declared_at, super_type->name);
++ gfc_error ("Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) "
++ "shall not be a coarray", c->name, &c->loc);
+ return false;
+ }
+
+- /* Ensure the extended type gets resolved before we do. */
+- if (super_type && !resolve_fl_derived0 (super_type))
+- return false;
++ /* F2008, C444. */
++ if (gfc_bt_struct (c->ts.type) && c->ts.u.derived->attr.coarray_comp
++ && (c->attr.codimension || c->attr.pointer || c->attr.dimension
++ || c->attr.allocatable))
++ {
++ gfc_error ("Component %qs at %L with coarray component "
++ "shall be a nonpointer, nonallocatable scalar",
++ c->name, &c->loc);
++ return false;
++ }
+
+- /* An ABSTRACT type must be extensible. */
+- if (sym->attr.abstract && !gfc_type_is_extensible (sym))
++ /* F2008, C448. */
++ if (c->attr.contiguous && (!c->attr.dimension || !c->attr.pointer))
+ {
+- gfc_error ("Non-extensible derived-type %qs at %L must not be ABSTRACT",
+- sym->name, &sym->declared_at);
++ gfc_error ("Component %qs at %L has the CONTIGUOUS attribute but "
++ "is not an array pointer", c->name, &c->loc);
+ return false;
+ }
+
+- c = (sym->attr.is_class) ? sym->components->ts.u.derived->components
+- : sym->components;
++ if (c->attr.proc_pointer && c->ts.interface)
++ {
++ gfc_symbol *ifc = c->ts.interface;
+
+- bool success = true;
++ if (!sym->attr.vtype && !check_proc_interface (ifc, &c->loc))
++ {
++ c->tb->error = 1;
++ return false;
++ }
+
+- for ( ; c != NULL; c = c->next)
++ if (ifc->attr.if_source || ifc->attr.intrinsic)
++ {
++ /* Resolve interface and copy attributes. */
++ if (ifc->formal && !ifc->formal_ns)
++ resolve_symbol (ifc);
++ if (ifc->attr.intrinsic)
++ gfc_resolve_intrinsic (ifc, &ifc->declared_at);
++
++ if (ifc->result)
++ {
++ c->ts = ifc->result->ts;
++ c->attr.allocatable = ifc->result->attr.allocatable;
++ c->attr.pointer = ifc->result->attr.pointer;
++ c->attr.dimension = ifc->result->attr.dimension;
++ c->as = gfc_copy_array_spec (ifc->result->as);
++ c->attr.class_ok = ifc->result->attr.class_ok;
++ }
++ else
++ {
++ c->ts = ifc->ts;
++ c->attr.allocatable = ifc->attr.allocatable;
++ c->attr.pointer = ifc->attr.pointer;
++ c->attr.dimension = ifc->attr.dimension;
++ c->as = gfc_copy_array_spec (ifc->as);
++ c->attr.class_ok = ifc->attr.class_ok;
++ }
++ c->ts.interface = ifc;
++ c->attr.function = ifc->attr.function;
++ c->attr.subroutine = ifc->attr.subroutine;
++
++ c->attr.pure = ifc->attr.pure;
++ c->attr.elemental = ifc->attr.elemental;
++ c->attr.recursive = ifc->attr.recursive;
++ c->attr.always_explicit = ifc->attr.always_explicit;
++ c->attr.ext_attr |= ifc->attr.ext_attr;
++ /* Copy char length. */
++ if (ifc->ts.type == BT_CHARACTER && ifc->ts.u.cl)
++ {
++ gfc_charlen *cl = gfc_new_charlen (sym->ns, ifc->ts.u.cl);
++ if (cl->length && !cl->resolved
++ && !gfc_resolve_expr (cl->length))
++ {
++ c->tb->error = 1;
++ return false;
++ }
++ c->ts.u.cl = cl;
++ }
++ }
++ }
++ else if (c->attr.proc_pointer && c->ts.type == BT_UNKNOWN)
+ {
+- if (c->attr.artificial)
+- continue;
++ /* Since PPCs are not implicitly typed, a PPC without an explicit
++ interface must be a subroutine. */
++ gfc_add_subroutine (&c->attr, c->name, &c->loc);
++ }
+
+- /* F2008, C442. */
+- if ((!sym->attr.is_class || c != sym->components)
+- && c->attr.codimension
+- && (!c->attr.allocatable || (c->as && c->as->type != AS_DEFERRED)))
+- {
+- gfc_error ("Coarray component %qs at %L must be allocatable with "
+- "deferred shape", c->name, &c->loc);
+- success = false;
+- continue;
+- }
++ /* Procedure pointer components: Check PASS arg. */
++ if (c->attr.proc_pointer && !c->tb->nopass && c->tb->pass_arg_num == 0
++ && !sym->attr.vtype)
++ {
++ gfc_symbol* me_arg;
+
+- /* F2008, C443. */
+- if (c->attr.codimension && c->ts.type == BT_DERIVED
+- && c->ts.u.derived->ts.is_iso_c)
+- {
+- gfc_error ("Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) "
+- "shall not be a coarray", c->name, &c->loc);
+- success = false;
+- continue;
+- }
++ if (c->tb->pass_arg)
++ {
++ gfc_formal_arglist* i;
+
+- /* F2008, C444. */
+- if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.coarray_comp
+- && (c->attr.codimension || c->attr.pointer || c->attr.dimension
+- || c->attr.allocatable))
+- {
+- gfc_error ("Component %qs at %L with coarray component "
+- "shall be a nonpointer, nonallocatable scalar",
+- c->name, &c->loc);
+- success = false;
+- continue;
+- }
++ /* If an explicit passing argument name is given, walk the arg-list
++ and look for it. */
+
+- /* F2008, C448. */
+- if (c->attr.contiguous && (!c->attr.dimension || !c->attr.pointer))
+- {
+- gfc_error ("Component %qs at %L has the CONTIGUOUS attribute but "
+- "is not an array pointer", c->name, &c->loc);
+- success = false;
+- continue;
+- }
++ me_arg = NULL;
++ c->tb->pass_arg_num = 1;
++ for (i = c->ts.interface->formal; i; i = i->next)
++ {
++ if (!strcmp (i->sym->name, c->tb->pass_arg))
++ {
++ me_arg = i->sym;
++ break;
++ }
++ c->tb->pass_arg_num++;
++ }
+
+- if (c->attr.proc_pointer && c->ts.interface)
+- {
+- gfc_symbol *ifc = c->ts.interface;
++ if (!me_arg)
++ {
++ gfc_error ("Procedure pointer component %qs with PASS(%s) "
++ "at %L has no argument %qs", c->name,
++ c->tb->pass_arg, &c->loc, c->tb->pass_arg);
++ c->tb->error = 1;
++ return false;
++ }
++ }
++ else
++ {
++ /* Otherwise, take the first one; there should in fact be at least
++ one. */
++ c->tb->pass_arg_num = 1;
++ if (!c->ts.interface->formal)
++ {
++ gfc_error ("Procedure pointer component %qs with PASS at %L "
++ "must have at least one argument",
++ c->name, &c->loc);
++ c->tb->error = 1;
++ return false;
++ }
++ me_arg = c->ts.interface->formal->sym;
++ }
+
+- if (!sym->attr.vtype && !check_proc_interface (ifc, &c->loc))
+- {
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
++ /* Now check that the argument-type matches. */
++ gcc_assert (me_arg);
++ if ((me_arg->ts.type != BT_DERIVED && me_arg->ts.type != BT_CLASS)
++ || (me_arg->ts.type == BT_DERIVED && me_arg->ts.u.derived != sym)
++ || (me_arg->ts.type == BT_CLASS
++ && CLASS_DATA (me_arg)->ts.u.derived != sym))
++ {
++ gfc_error ("Argument %qs of %qs with PASS(%s) at %L must be of"
++ " the derived type %qs", me_arg->name, c->name,
++ me_arg->name, &c->loc, sym->name);
++ c->tb->error = 1;
++ return false;
++ }
+
+- if (ifc->attr.if_source || ifc->attr.intrinsic)
+- {
+- /* Resolve interface and copy attributes. */
+- if (ifc->formal && !ifc->formal_ns)
+- resolve_symbol (ifc);
+- if (ifc->attr.intrinsic)
+- gfc_resolve_intrinsic (ifc, &ifc->declared_at);
++ /* Check for C453. */
++ if (me_arg->attr.dimension)
++ {
++ gfc_error ("Argument %qs of %qs with PASS(%s) at %L "
++ "must be scalar", me_arg->name, c->name, me_arg->name,
++ &c->loc);
++ c->tb->error = 1;
++ return false;
++ }
+
+- if (ifc->result)
+- {
+- c->ts = ifc->result->ts;
+- c->attr.allocatable = ifc->result->attr.allocatable;
+- c->attr.pointer = ifc->result->attr.pointer;
+- c->attr.dimension = ifc->result->attr.dimension;
+- c->as = gfc_copy_array_spec (ifc->result->as);
+- c->attr.class_ok = ifc->result->attr.class_ok;
+- }
+- else
+- {
+- c->ts = ifc->ts;
+- c->attr.allocatable = ifc->attr.allocatable;
+- c->attr.pointer = ifc->attr.pointer;
+- c->attr.dimension = ifc->attr.dimension;
+- c->as = gfc_copy_array_spec (ifc->as);
+- c->attr.class_ok = ifc->attr.class_ok;
+- }
+- c->ts.interface = ifc;
+- c->attr.function = ifc->attr.function;
+- c->attr.subroutine = ifc->attr.subroutine;
++ if (me_arg->attr.pointer)
++ {
++ gfc_error ("Argument %qs of %qs with PASS(%s) at %L "
++ "may not have the POINTER attribute", me_arg->name,
++ c->name, me_arg->name, &c->loc);
++ c->tb->error = 1;
++ return false;
++ }
+
+- c->attr.pure = ifc->attr.pure;
+- c->attr.elemental = ifc->attr.elemental;
+- c->attr.recursive = ifc->attr.recursive;
+- c->attr.always_explicit = ifc->attr.always_explicit;
+- c->attr.ext_attr |= ifc->attr.ext_attr;
+- /* Copy char length. */
+- if (ifc->ts.type == BT_CHARACTER && ifc->ts.u.cl)
+- {
+- gfc_charlen *cl = gfc_new_charlen (sym->ns, ifc->ts.u.cl);
+- if (cl->length && !cl->resolved
+- && !gfc_resolve_expr (cl->length))
+- {
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
+- c->ts.u.cl = cl;
+- }
+- }
+- }
+- else if (c->attr.proc_pointer && c->ts.type == BT_UNKNOWN)
+- {
+- /* Since PPCs are not implicitly typed, a PPC without an explicit
+- interface must be a subroutine. */
+- gfc_add_subroutine (&c->attr, c->name, &c->loc);
+- }
++ if (me_arg->attr.allocatable)
++ {
++ gfc_error ("Argument %qs of %qs with PASS(%s) at %L "
++ "may not be ALLOCATABLE", me_arg->name, c->name,
++ me_arg->name, &c->loc);
++ c->tb->error = 1;
++ return false;
++ }
+
+- /* Procedure pointer components: Check PASS arg. */
+- if (c->attr.proc_pointer && !c->tb->nopass && c->tb->pass_arg_num == 0
+- && !sym->attr.vtype)
+- {
+- gfc_symbol* me_arg;
++ if (gfc_type_is_extensible (sym) && me_arg->ts.type != BT_CLASS)
++ {
++ gfc_error ("Non-polymorphic passed-object dummy argument of %qs"
++ " at %L", c->name, &c->loc);
++ return false;
++ }
+
+- if (c->tb->pass_arg)
+- {
+- gfc_formal_arglist* i;
++ }
+
+- /* If an explicit passing argument name is given, walk the arg-list
+- and look for it. */
++ /* Check type-spec if this is not the parent-type component. */
++ if (((sym->attr.is_class
++ && (!sym->components->ts.u.derived->attr.extension
++ || c != sym->components->ts.u.derived->components))
++ || (!sym->attr.is_class
++ && (!sym->attr.extension || c != sym->components)))
++ && !sym->attr.vtype
++ && !resolve_typespec_used (&c->ts, &c->loc, c->name))
++ return false;
+
+- me_arg = NULL;
+- c->tb->pass_arg_num = 1;
+- for (i = c->ts.interface->formal; i; i = i->next)
+- {
+- if (!strcmp (i->sym->name, c->tb->pass_arg))
+- {
+- me_arg = i->sym;
+- break;
+- }
+- c->tb->pass_arg_num++;
+- }
++ super_type = gfc_get_derived_super_type (sym);
+
+- if (!me_arg)
+- {
+- gfc_error ("Procedure pointer component %qs with PASS(%s) "
+- "at %L has no argument %qs", c->name,
+- c->tb->pass_arg, &c->loc, c->tb->pass_arg);
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
+- }
+- else
+- {
+- /* Otherwise, take the first one; there should in fact be at least
+- one. */
+- c->tb->pass_arg_num = 1;
+- if (!c->ts.interface->formal)
+- {
+- gfc_error ("Procedure pointer component %qs with PASS at %L "
+- "must have at least one argument",
+- c->name, &c->loc);
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
+- me_arg = c->ts.interface->formal->sym;
+- }
++ /* If this type is an extension, set the accessibility of the parent
++ component. */
++ if (super_type
++ && ((sym->attr.is_class
++ && c == sym->components->ts.u.derived->components)
++ || (!sym->attr.is_class && c == sym->components))
++ && strcmp (super_type->name, c->name) == 0)
++ c->attr.access = super_type->attr.access;
+
+- /* Now check that the argument-type matches. */
+- gcc_assert (me_arg);
+- if ((me_arg->ts.type != BT_DERIVED && me_arg->ts.type != BT_CLASS)
+- || (me_arg->ts.type == BT_DERIVED && me_arg->ts.u.derived != sym)
+- || (me_arg->ts.type == BT_CLASS
+- && CLASS_DATA (me_arg)->ts.u.derived != sym))
+- {
+- gfc_error ("Argument %qs of %qs with PASS(%s) at %L must be of"
+- " the derived type %qs", me_arg->name, c->name,
+- me_arg->name, &c->loc, sym->name);
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
++ /* If this type is an extension, see if this component has the same name
++ as an inherited type-bound procedure. */
++ if (super_type && !sym->attr.is_class
++ && gfc_find_typebound_proc (super_type, NULL, c->name, true, NULL))
++ {
++ gfc_error ("Component %qs of %qs at %L has the same name as an"
++ " inherited type-bound procedure",
++ c->name, sym->name, &c->loc);
++ return false;
++ }
+
+- /* Check for C453. */
+- if (me_arg->attr.dimension)
+- {
+- gfc_error ("Argument %qs of %qs with PASS(%s) at %L "
+- "must be scalar", me_arg->name, c->name, me_arg->name,
+- &c->loc);
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
++ if (c->ts.type == BT_CHARACTER && !c->attr.proc_pointer
++ && !c->ts.deferred)
++ {
++ if (c->ts.u.cl->length == NULL
++ || (!resolve_charlen(c->ts.u.cl))
++ || !gfc_is_constant_expr (c->ts.u.cl->length))
++ {
++ gfc_error ("Character length of component %qs needs to "
++ "be a constant specification expression at %L",
++ c->name,
++ c->ts.u.cl->length ? &c->ts.u.cl->length->where : &c->loc);
++ return false;
++ }
++ }
+
+- if (me_arg->attr.pointer)
+- {
+- gfc_error ("Argument %qs of %qs with PASS(%s) at %L "
+- "may not have the POINTER attribute", me_arg->name,
+- c->name, me_arg->name, &c->loc);
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
++ if (c->ts.type == BT_CHARACTER && c->ts.deferred
++ && !c->attr.pointer && !c->attr.allocatable)
++ {
++ gfc_error ("Character component %qs of %qs at %L with deferred "
++ "length must be a POINTER or ALLOCATABLE",
++ c->name, sym->name, &c->loc);
++ return false;
++ }
+
+- if (me_arg->attr.allocatable)
+- {
+- gfc_error ("Argument %qs of %qs with PASS(%s) at %L "
+- "may not be ALLOCATABLE", me_arg->name, c->name,
+- me_arg->name, &c->loc);
+- c->tb->error = 1;
+- success = false;
+- continue;
+- }
++ /* Add the hidden deferred length field. */
++ if (c->ts.type == BT_CHARACTER && c->ts.deferred && !c->attr.function
++ && !sym->attr.is_class)
++ {
++ char name[GFC_MAX_SYMBOL_LEN+9];
++ gfc_component *strlen;
++ sprintf (name, "_%s_length", c->name);
++ strlen = gfc_find_component (sym, name, true, true, NULL);
++ if (strlen == NULL)
++ {
++ if (!gfc_add_component (sym, name, &strlen))
++ return false;
++ strlen->ts.type = BT_INTEGER;
++ strlen->ts.kind = gfc_charlen_int_kind;
++ strlen->attr.access = ACCESS_PRIVATE;
++ strlen->attr.artificial = 1;
++ }
++ }
+
+- if (gfc_type_is_extensible (sym) && me_arg->ts.type != BT_CLASS)
+- {
+- gfc_error ("Non-polymorphic passed-object dummy argument of %qs"
+- " at %L", c->name, &c->loc);
+- success = false;
+- continue;
+- }
++ if (c->ts.type == BT_DERIVED
++ && sym->component_access != ACCESS_PRIVATE
++ && gfc_check_symbol_access (sym)
++ && !is_sym_host_assoc (c->ts.u.derived, sym->ns)
++ && !c->ts.u.derived->attr.use_assoc
++ && !gfc_check_symbol_access (c->ts.u.derived)
++ && !gfc_notify_std (GFC_STD_F2003, "the component %qs is a "
++ "PRIVATE type and cannot be a component of "
++ "%qs, which is PUBLIC at %L", c->name,
++ sym->name, &sym->declared_at))
++ return false;
+
+- }
++ if ((sym->attr.sequence || sym->attr.is_bind_c) && c->ts.type == BT_CLASS)
++ {
++ gfc_error ("Polymorphic component %s at %L in SEQUENCE or BIND(C) "
++ "type %s", c->name, &c->loc, sym->name);
++ return false;
++ }
+
+- /* Check type-spec if this is not the parent-type component. */
+- if (((sym->attr.is_class
+- && (!sym->components->ts.u.derived->attr.extension
+- || c != sym->components->ts.u.derived->components))
+- || (!sym->attr.is_class
+- && (!sym->attr.extension || c != sym->components)))
+- && !sym->attr.vtype
+- && !resolve_typespec_used (&c->ts, &c->loc, c->name))
+- return false;
++ if (sym->attr.sequence)
++ {
++ if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.sequence == 0)
++ {
++ gfc_error ("Component %s of SEQUENCE type declared at %L does "
++ "not have the SEQUENCE attribute",
++ c->ts.u.derived->name, &sym->declared_at);
++ return false;
++ }
++ }
+
+- /* If this type is an extension, set the accessibility of the parent
+- component. */
+- if (super_type
+- && ((sym->attr.is_class
+- && c == sym->components->ts.u.derived->components)
+- || (!sym->attr.is_class && c == sym->components))
+- && strcmp (super_type->name, c->name) == 0)
+- c->attr.access = super_type->attr.access;
++ if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.generic)
++ c->ts.u.derived = gfc_find_dt_in_generic (c->ts.u.derived);
++ else if (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->ts.u.derived->attr.generic)
++ CLASS_DATA (c)->ts.u.derived
++ = gfc_find_dt_in_generic (CLASS_DATA (c)->ts.u.derived);
+
+- /* If this type is an extension, see if this component has the same name
+- as an inherited type-bound procedure. */
+- if (super_type && !sym->attr.is_class
+- && gfc_find_typebound_proc (super_type, NULL, c->name, true, NULL))
+- {
+- gfc_error ("Component %qs of %qs at %L has the same name as an"
+- " inherited type-bound procedure",
+- c->name, sym->name, &c->loc);
+- return false;
+- }
++ if (!sym->attr.is_class && c->ts.type == BT_DERIVED && !sym->attr.vtype
++ && c->attr.pointer && c->ts.u.derived->components == NULL
++ && !c->ts.u.derived->attr.zero_comp)
++ {
++ gfc_error ("The pointer component %qs of %qs at %L is a type "
++ "that has not been declared", c->name, sym->name,
++ &c->loc);
++ return false;
++ }
+
+- if (c->ts.type == BT_CHARACTER && !c->attr.proc_pointer
+- && !c->ts.deferred)
+- {
+- if (c->ts.u.cl->length == NULL
+- || (!resolve_charlen(c->ts.u.cl))
+- || !gfc_is_constant_expr (c->ts.u.cl->length))
+- {
+- gfc_error ("Character length of component %qs needs to "
+- "be a constant specification expression at %L",
+- c->name,
+- c->ts.u.cl->length ? &c->ts.u.cl->length->where : &c->loc);
+- return false;
+- }
+- }
++ if (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->attr.class_pointer
++ && CLASS_DATA (c)->ts.u.derived->components == NULL
++ && !CLASS_DATA (c)->ts.u.derived->attr.zero_comp
++ && !UNLIMITED_POLY (c))
++ {
++ gfc_error ("The pointer component %qs of %qs at %L is a type "
++ "that has not been declared", c->name, sym->name,
++ &c->loc);
++ return false;
++ }
+
+- if (c->ts.type == BT_CHARACTER && c->ts.deferred
+- && !c->attr.pointer && !c->attr.allocatable)
+- {
+- gfc_error ("Character component %qs of %qs at %L with deferred "
+- "length must be a POINTER or ALLOCATABLE",
+- c->name, sym->name, &c->loc);
+- return false;
+- }
++ /* C437. */
++ if (c->ts.type == BT_CLASS && c->attr.flavor != FL_PROCEDURE
++ && (!c->attr.class_ok
++ || !(CLASS_DATA (c)->attr.class_pointer
++ || CLASS_DATA (c)->attr.allocatable)))
++ {
++ gfc_error ("Component %qs with CLASS at %L must be allocatable "
++ "or pointer", c->name, &c->loc);
++ /* Prevent a recurrence of the error. */
++ c->ts.type = BT_UNKNOWN;
++ return false;
++ }
+
+- /* Add the hidden deferred length field. */
+- if (c->ts.type == BT_CHARACTER && c->ts.deferred && !c->attr.function
+- && !sym->attr.is_class)
+- {
+- char name[GFC_MAX_SYMBOL_LEN+9];
+- gfc_component *strlen;
+- sprintf (name, "_%s_length", c->name);
+- strlen = gfc_find_component (sym, name, true, true);
+- if (strlen == NULL)
+- {
+- if (!gfc_add_component (sym, name, &strlen))
+- return false;
+- strlen->ts.type = BT_INTEGER;
+- strlen->ts.kind = gfc_charlen_int_kind;
+- strlen->attr.access = ACCESS_PRIVATE;
+- strlen->attr.artificial = 1;
+- }
+- }
++ /* Ensure that all the derived type components are put on the
++ derived type list; even in formal namespaces, where derived type
++ pointer components might not have been declared. */
++ if (c->ts.type == BT_DERIVED
++ && c->ts.u.derived
++ && c->ts.u.derived->components
++ && c->attr.pointer
++ && sym != c->ts.u.derived)
++ add_dt_to_dt_list (c->ts.u.derived);
+
+- if (c->ts.type == BT_DERIVED
+- && sym->component_access != ACCESS_PRIVATE
+- && gfc_check_symbol_access (sym)
+- && !is_sym_host_assoc (c->ts.u.derived, sym->ns)
+- && !c->ts.u.derived->attr.use_assoc
+- && !gfc_check_symbol_access (c->ts.u.derived)
+- && !gfc_notify_std (GFC_STD_F2003, "the component %qs is a "
+- "PRIVATE type and cannot be a component of "
+- "%qs, which is PUBLIC at %L", c->name,
+- sym->name, &sym->declared_at))
+- return false;
++ if (!gfc_resolve_array_spec (c->as,
++ !(c->attr.pointer || c->attr.proc_pointer
++ || c->attr.allocatable)))
++ return false;
+
+- if ((sym->attr.sequence || sym->attr.is_bind_c) && c->ts.type == BT_CLASS)
+- {
+- gfc_error ("Polymorphic component %s at %L in SEQUENCE or BIND(C) "
+- "type %s", c->name, &c->loc, sym->name);
+- return false;
+- }
++ if (c->initializer && !sym->attr.vtype
++ && !gfc_check_assign_symbol (sym, c, c->initializer))
++ return false;
+
+- if (sym->attr.sequence)
+- {
+- if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.sequence == 0)
+- {
+- gfc_error ("Component %s of SEQUENCE type declared at %L does "
+- "not have the SEQUENCE attribute",
+- c->ts.u.derived->name, &sym->declared_at);
+- return false;
+- }
+- }
++ return true;
++}
+
+- if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.generic)
+- c->ts.u.derived = gfc_find_dt_in_generic (c->ts.u.derived);
+- else if (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->ts.u.derived->attr.generic)
+- CLASS_DATA (c)->ts.u.derived
+- = gfc_find_dt_in_generic (CLASS_DATA (c)->ts.u.derived);
+
+- if (!sym->attr.is_class && c->ts.type == BT_DERIVED && !sym->attr.vtype
+- && c->attr.pointer && c->ts.u.derived->components == NULL
+- && !c->ts.u.derived->attr.zero_comp)
+- {
+- gfc_error ("The pointer component %qs of %qs at %L is a type "
+- "that has not been declared", c->name, sym->name,
+- &c->loc);
+- return false;
+- }
++/* Be nice about the locus for a structure expression - show the locus of the
++ first non-null sub-expression if we can. */
+
+- if (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->attr.class_pointer
+- && CLASS_DATA (c)->ts.u.derived->components == NULL
+- && !CLASS_DATA (c)->ts.u.derived->attr.zero_comp
+- && !UNLIMITED_POLY (c))
+- {
+- gfc_error ("The pointer component %qs of %qs at %L is a type "
+- "that has not been declared", c->name, sym->name,
+- &c->loc);
+- return false;
+- }
++static locus *
++cons_where (gfc_expr *struct_expr)
++{
++ gfc_constructor *cons;
+
+- /* C437. */
+- if (c->ts.type == BT_CLASS && c->attr.flavor != FL_PROCEDURE
+- && (!c->attr.class_ok
+- || !(CLASS_DATA (c)->attr.class_pointer
+- || CLASS_DATA (c)->attr.allocatable)))
+- {
+- gfc_error ("Component %qs with CLASS at %L must be allocatable "
+- "or pointer", c->name, &c->loc);
+- /* Prevent a recurrence of the error. */
+- c->ts.type = BT_UNKNOWN;
+- return false;
+- }
++ gcc_assert (struct_expr && struct_expr->expr_type == EXPR_STRUCTURE);
+
+- /* Ensure that all the derived type components are put on the
+- derived type list; even in formal namespaces, where derived type
+- pointer components might not have been declared. */
+- if (c->ts.type == BT_DERIVED
+- && c->ts.u.derived
+- && c->ts.u.derived->components
+- && c->attr.pointer
+- && sym != c->ts.u.derived)
+- add_dt_to_dt_list (c->ts.u.derived);
++ cons = gfc_constructor_first (struct_expr->value.constructor);
++ for (; cons; cons = gfc_constructor_next (cons))
++ {
++ if (cons->expr && cons->expr->expr_type != EXPR_NULL)
++ return &cons->expr->where;
++ }
+
+- if (!gfc_resolve_array_spec (c->as,
+- !(c->attr.pointer || c->attr.proc_pointer
+- || c->attr.allocatable)))
+- return false;
++ return &struct_expr->where;
++}
+
+- if (c->initializer && !sym->attr.vtype
+- && !gfc_check_assign_symbol (sym, c, c->initializer))
+- return false;
++/* Resolve the components of a structure type. Much less work than derived
++ types. */
++
++static bool
++resolve_fl_struct (gfc_symbol *sym)
++{
++ gfc_component *c;
++ gfc_expr *init = NULL;
++ bool success;
++
++ /* Make sure UNIONs do not have overlapping initializers. */
++ if (sym->attr.flavor == FL_UNION)
++ {
++ for (c = sym->components; c; c = c->next)
++ {
++ if (init && c->initializer)
++ {
++ gfc_error ("Conflicting initializers in union at %L and %L",
++ cons_where (init), cons_where (c->initializer));
++ gfc_free_expr (c->initializer);
++ c->initializer = NULL;
++ }
++ if (init == NULL)
++ init = c->initializer;
++ }
+ }
+
++ success = true;
++ for (c = sym->components; c; c = c->next)
++ if (!resolve_component (c, sym))
++ success = false;
++
+ if (!success)
+ return false;
+
++ if (sym->components)
++ add_dt_to_dt_list (sym);
++
++ return true;
++}
++
++
++/* Resolve the components of a derived type. This does not have to wait until
++ resolution stage, but can be done as soon as the dt declaration has been
++ parsed. */
++
++static bool
++resolve_fl_derived0 (gfc_symbol *sym)
++{
++ gfc_symbol* super_type;
++ gfc_component *c;
++ bool success;
++
++ if (sym->attr.unlimited_polymorphic)
++ return true;
++
++ super_type = gfc_get_derived_super_type (sym);
++
++ /* F2008, C432. */
++ if (super_type && sym->attr.coarray_comp && !super_type->attr.coarray_comp)
++ {
++ gfc_error ("As extending type %qs at %L has a coarray component, "
++ "parent type %qs shall also have one", sym->name,
++ &sym->declared_at, super_type->name);
++ return false;
++ }
++
++ /* Ensure the extended type gets resolved before we do. */
++ if (super_type && !resolve_fl_derived0 (super_type))
++ return false;
++
++ /* An ABSTRACT type must be extensible. */
++ if (sym->attr.abstract && !gfc_type_is_extensible (sym))
++ {
++ gfc_error ("Non-extensible derived-type %qs at %L must not be ABSTRACT",
++ sym->name, &sym->declared_at);
++ return false;
++ }
++
++ c = (sym->attr.is_class) ? sym->components->ts.u.derived->components
++ : sym->components;
++
++ success = true;
++ for ( ; c != NULL; c = c->next)
++ if (!resolve_component (c, sym))
++ success = false;
++
++ if (!success)
++ return false;
++
+ check_defined_assignments (sym);
+
+ if (!sym->attr.defined_assign_comp && super_type)
+@@ -13396,8 +13466,8 @@
+ if (sym->attr.is_class && sym->ts.u.derived == NULL)
+ {
+ /* Fix up incomplete CLASS symbols. */
+- gfc_component *data = gfc_find_component (sym, "_data", true, true);
+- gfc_component *vptr = gfc_find_component (sym, "_vptr", true, true);
++ gfc_component *data = gfc_find_component (sym, "_data", true, true, NULL);
++ gfc_component *vptr = gfc_find_component (sym, "_vptr", true, true, NULL);
+
+ /* Nothing more to do for unlimited polymorphic entities. */
+ if (data->ts.u.derived->attr.unlimited_polymorphic)
+@@ -13616,6 +13686,11 @@
+ return;
+ sym->resolved = 1;
+
++ /* No symbol will ever have union type; only components can be unions.
++ Union type declaration symbols have type BT_UNKNOWN but flavor FL_UNION
++ (just like derived type declaration symbols have flavor FL_DERIVED). */
++ gcc_assert (sym->ts.type != BT_UNION);
++
+ if (sym->attr.artificial)
+ return;
+
+@@ -13687,6 +13762,10 @@
+ if (sym->attr.flavor == FL_DERIVED && !resolve_fl_derived (sym))
+ return;
+
++ else if ((sym->attr.flavor == FL_STRUCT || sym->attr.flavor == FL_UNION)
++ && !resolve_fl_struct (sym))
++ return;
++
+ /* Symbols that are module procedures with results (functions) have
+ the types and array specification copied for type checking in
+ procedures that call them, as well as for saving to a module
+@@ -15030,7 +15109,7 @@
+
+ for (; c ; c = c->next)
+ {
+- if (c->ts.type == BT_DERIVED
++ if (gfc_bt_struct (c->ts.type)
+ && (!resolve_equivalence_derived(c->ts.u.derived, sym, e)))
+ return false;
+
+Index: gcc/fortran/trans-decl.c
+===================================================================
+--- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-6-branch)
+@@ -732,6 +732,7 @@
+ st = NULL;
+ s = NULL;
+
++ /* Check for a symbol with the same name. */
+ if (gsym)
+ gfc_find_symbol (sym->name, gsym->ns, 0, &s);
+
+@@ -748,7 +749,7 @@
+ st->n.sym = sym;
+ sym->refs++;
+ }
+- else if (sym->attr.flavor == FL_DERIVED)
++ else if (gfc_fl_struct (sym->attr.flavor))
+ {
+ if (s && s->attr.flavor == FL_PROCEDURE)
+ {
+@@ -755,7 +756,7 @@
+ gfc_interface *intr;
+ gcc_assert (s->attr.generic);
+ for (intr = s->generic; intr; intr = intr->next)
+- if (intr->sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (intr->sym->attr.flavor))
+ {
+ s = intr->sym;
+ break;
+@@ -762,8 +763,23 @@
+ }
+ }
+
+- if (!s->backend_decl)
+- s->backend_decl = gfc_get_derived_type (s);
++ /* Normally we can assume that s is a derived-type symbol since it
++ shares a name with the derived-type sym. However if sym is a
++ STRUCTURE, it may in fact share a name with any other basic type
++ variable. If s is in fact of derived type then we can continue
++ looking for a duplicate type declaration. */
++ if (sym->attr.flavor == FL_STRUCT && s->ts.type == BT_DERIVED)
++ {
++ s = s->ts.u.derived;
++ }
++
++ if (gfc_fl_struct (s->attr.flavor) && !s->backend_decl)
++ {
++ if (s->attr.flavor == FL_UNION)
++ s->backend_decl = gfc_get_union_type (s);
++ else
++ s->backend_decl = gfc_get_derived_type (s);
++ }
+ gfc_copy_dt_decls_ifequal (s, sym, true);
+ return true;
+ }
+@@ -2384,7 +2400,7 @@
+ Thus, we will use a hidden argument in that case. */
+ else if (f->sym->attr.optional && f->sym->attr.value
+ && !f->sym->attr.dimension && f->sym->ts.type != BT_CLASS
+- && f->sym->ts.type != BT_DERIVED)
++ && !gfc_bt_struct (f->sym->ts.type))
+ {
+ tree tmp;
+ strcpy (&name[1], f->sym->name);
+@@ -4596,7 +4612,7 @@
+ && sym->ts.type == BT_DERIVED)
+ sym->backend_decl = gfc_typenode_for_spec (&(sym->ts));
+
+- if (sym->attr.flavor == FL_DERIVED
++ if (gfc_fl_struct (sym->attr.flavor)
+ && sym->backend_decl
+ && TREE_CODE (sym->backend_decl) == RECORD_TYPE)
+ {
+@@ -4839,7 +4855,7 @@
+ }
+ else switch (ts->type)
+ {
+- case BT_DERIVED:
++ case_bt_struct:
+ if (expr->expr_type != EXPR_STRUCTURE)
+ return false;
+ cm = expr->ts.u.derived->components;
+Index: gcc/fortran/match.c
+===================================================================
+--- a/src/gcc/fortran/match.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/match.c (.../branches/gcc-6-branch)
+@@ -113,6 +113,128 @@
+
+ /******************** Generic matching subroutines ************************/
+
++/* Matches a member separator. With standard FORTRAN this is '%', but with
++ DEC structures we must carefully match dot ('.').
++ Because operators are spelled ".op.", a dotted string such as "x.y.z..."
++ can be either a component reference chain or a combination of binary
++ operations.
++ There is no real way to win because the string may be grammatically
++ ambiguous. The following rules help avoid ambiguities - they match
++ some behavior of other (older) compilers. If the rules here are changed
++ the test cases should be updated. If the user has problems with these rules
++ they probably deserve the consequences. Consider "x.y.z":
++ (1) If any user defined operator ".y." exists, this is always y(x,z)
++ (even if ".y." is the wrong type and/or x has a member y).
++ (2) Otherwise if x has a member y, and y is itself a derived type,
++ this is (x->y)->z, even if an intrinsic operator exists which
++ can handle (x,z).
++ (3) If x has no member y or (x->y) is not a derived type but ".y."
++ is an intrinsic operator (such as ".eq."), this is y(x,z).
++ (4) Lastly if there is no operator ".y." and x has no member "y", it is an
++ error.
++ It is worth noting that the logic here does not support mixed use of member
++ accessors within a single string. That is, even if x has component y and y
++ has component z, the following are all syntax errors:
++ "x%y.z" "x.y%z" "(x.y).z" "(x%y)%z"
++ */
++
++match
++gfc_match_member_sep(gfc_symbol *sym)
++{
++ char name[GFC_MAX_SYMBOL_LEN + 1];
++ locus dot_loc, start_loc;
++ gfc_intrinsic_op iop;
++ match m;
++ gfc_symbol *tsym;
++ gfc_component *c = NULL;
++
++ /* What a relief: '%' is an unambiguous member separator. */
++ if (gfc_match_char ('%') == MATCH_YES)
++ return MATCH_YES;
++
++ /* Beware ye who enter here. */
++ if (!gfc_option.flag_dec_structure || !sym)
++ return MATCH_NO;
++
++ tsym = NULL;
++
++ /* We may be given either a derived type variable or the derived type
++ declaration itself (which actually contains the components);
++ we need the latter to search for components. */
++ if (gfc_fl_struct (sym->attr.flavor))
++ tsym = sym;
++ else if (gfc_bt_struct (sym->ts.type))
++ tsym = sym->ts.u.derived;
++
++ iop = INTRINSIC_NONE;
++ name[0] = '\0';
++ m = MATCH_NO;
++
++ /* If we have to reject come back here later. */
++ start_loc = gfc_current_locus;
++
++ /* Look for a component access next. */
++ if (gfc_match_char ('.') != MATCH_YES)
++ return MATCH_NO;
++
++ /* If we accept, come back here. */
++ dot_loc = gfc_current_locus;
++
++ /* Try to match a symbol name following the dot. */
++ if (gfc_match_name (name) != MATCH_YES)
++ {
++ gfc_error ("Expected structure component or operator name "
++ "after '.' at %C");
++ goto error;
++ }
++
++ /* If no dot follows we have "x.y" which should be a component access. */
++ if (gfc_match_char ('.') != MATCH_YES)
++ goto yes;
++
++ /* Now we have a string "x.y.z" which could be a nested member access
++ (x->y)->z or a binary operation y on x and z. */
++
++ /* First use any user-defined operators ".y." */
++ if (gfc_find_uop (name, sym->ns) != NULL)
++ goto no;
++
++ /* Match accesses to existing derived-type components for
++ derived-type vars: "x.y.z" = (x->y)->z */
++ c = gfc_find_component(tsym, name, false, true, NULL);
++ if (c && (gfc_bt_struct (c->ts.type) || c->ts.type == BT_CLASS))
++ goto yes;
++
++ /* If y is not a component or has no members, try intrinsic operators. */
++ gfc_current_locus = start_loc;
++ if (gfc_match_intrinsic_op (&iop) != MATCH_YES)
++ {
++ /* If ".y." is not an intrinsic operator but y was a valid non-
++ structure component, match and leave the trailing dot to be
++ dealt with later. */
++ if (c)
++ goto yes;
++
++ gfc_error ("'%s' is neither a defined operator nor a "
++ "structure component in dotted string at %C", name);
++ goto error;
++ }
++
++ /* .y. is an intrinsic operator, overriding any possible member access. */
++ goto no;
++
++ /* Return keeping the current locus consistent with the match result. */
++error:
++ m = MATCH_ERROR;
++no:
++ gfc_current_locus = start_loc;
++ return m;
++yes:
++ gfc_current_locus = dot_loc;
++ return MATCH_YES;
++}
++
++
+ /* This function scans the current statement counting the opened and closed
+ parenthesis to make sure they are balanced. */
+
+Index: gcc/fortran/trans-io.c
+===================================================================
+--- a/src/gcc/fortran/trans-io.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/trans-io.c (.../branches/gcc-6-branch)
+@@ -1685,7 +1685,7 @@
+ gfc_add_expr_to_block (block, tmp);
+ }
+
+- if (ts->type == BT_DERIVED && ts->u.derived->components)
++ if (gfc_bt_struct (ts->type) && ts->u.derived->components)
+ {
+ gfc_component *cmp;
+
+@@ -2211,7 +2211,7 @@
+
+ break;
+
+- case BT_DERIVED:
++ case_bt_struct:
+ if (ts->u.derived->components == NULL)
+ return;
+
+@@ -2330,7 +2330,7 @@
+ gcc_assert (ref && ref->type == REF_ARRAY);
+ }
+
+- if (expr->ts.type != BT_DERIVED
++ if (!gfc_bt_struct (expr->ts.type)
+ && ref && ref->next == NULL
+ && !is_subref_array (expr))
+ {
+Index: gcc/fortran/match.h
+===================================================================
+--- a/src/gcc/fortran/match.h (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/match.h (.../branches/gcc-6-branch)
+@@ -60,6 +60,7 @@
+ match gfc_match_iterator (gfc_iterator *, int);
+ match gfc_match_parens (void);
+ match gfc_match_type_spec (gfc_typespec *);
++match gfc_match_member_sep(gfc_symbol *);
+
+
+ /* Statement matchers. */
+@@ -208,6 +209,9 @@
+ match gfc_match_entry (void);
+ match gfc_match_subroutine (void);
+ match gfc_match_submod_proc (void);
++match gfc_match_map (void);
++match gfc_match_union (void);
++match gfc_match_structure_decl (void);
+ match gfc_match_derived_decl (void);
+ match gfc_match_final_decl (void);
+
+Index: gcc/fortran/parse.c
+===================================================================
+--- a/src/gcc/fortran/parse.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/parse.c (.../branches/gcc-6-branch)
+@@ -256,6 +256,7 @@
+
+ case 's':
+ match ("save", gfc_match_save, ST_ATTR_DECL);
++ match ("structure", gfc_match_structure_decl, ST_STRUCTURE_DECL);
+ break;
+
+ case 't':
+@@ -507,6 +508,7 @@
+ break;
+
+ case 'm':
++ match ("map", gfc_match_map, ST_MAP);
+ match ("module% procedure", gfc_match_modproc, ST_MODULE_PROC);
+ match ("module", gfc_match_module, ST_MODULE);
+ break;
+@@ -542,6 +544,7 @@
+ break;
+
+ case 's':
++ match ("structure", gfc_match_structure_decl, ST_STRUCTURE_DECL);
+ match ("sequence", gfc_match_eos, ST_SEQUENCE);
+ match ("stop", gfc_match_stop, ST_STOP);
+ match ("save", gfc_match_save, ST_ATTR_DECL);
+@@ -558,6 +561,7 @@
+ break;
+
+ case 'u':
++ match ("union", gfc_match_union, ST_UNION);
+ match ("unlock", gfc_match_unlock, ST_UNLOCK);
+ break;
+
+@@ -1642,6 +1646,15 @@
+ case ST_DEALLOCATE:
+ p = "DEALLOCATE";
+ break;
++ case ST_MAP:
++ p = "MAP";
++ break;
++ case ST_UNION:
++ p = "UNION";
++ break;
++ case ST_STRUCTURE_DECL:
++ p = "STRUCTURE";
++ break;
+ case ST_DERIVED_DECL:
+ p = _("derived type declaration");
+ break;
+@@ -1711,6 +1724,15 @@
+ case ST_END_WHERE:
+ p = "END WHERE";
+ break;
++ case ST_END_STRUCTURE:
++ p = "END STRUCTURE";
++ break;
++ case ST_END_UNION:
++ p = "END UNION";
++ break;
++ case ST_END_MAP:
++ p = "END MAP";
++ break;
+ case ST_END_TYPE:
+ p = "END TYPE";
+ break;
+@@ -2457,6 +2479,7 @@
+
+ case ST_PUBLIC:
+ case ST_PRIVATE:
++ case ST_STRUCTURE_DECL:
+ case ST_DERIVED_DECL:
+ case_decl:
+ if (p->state >= ORDER_EXEC)
+@@ -2646,6 +2669,358 @@
+ }
+
+
++/* Set attributes for the parent symbol based on the attributes of a component
++ and raise errors if conflicting attributes are found for the component. */
++
++static void
++check_component (gfc_symbol *sym, gfc_component *c, gfc_component **lockp,
++ gfc_component **eventp)
++{
++ bool coarray, lock_type, event_type, allocatable, pointer;
++ coarray = lock_type = event_type = allocatable = pointer = false;
++ gfc_component *lock_comp = NULL, *event_comp = NULL;
++
++ if (lockp) lock_comp = *lockp;
++ if (eventp) event_comp = *eventp;
++
++ /* Look for allocatable components. */
++ if (c->attr.allocatable
++ || (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->attr.allocatable)
++ || (c->ts.type == BT_DERIVED && !c->attr.pointer
++ && c->ts.u.derived->attr.alloc_comp))
++ {
++ allocatable = true;
++ sym->attr.alloc_comp = 1;
++ }
++
++ /* Look for pointer components. */
++ if (c->attr.pointer
++ || (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->attr.class_pointer)
++ || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.pointer_comp))
++ {
++ pointer = true;
++ sym->attr.pointer_comp = 1;
++ }
++
++ /* Look for procedure pointer components. */
++ if (c->attr.proc_pointer
++ || (c->ts.type == BT_DERIVED
++ && c->ts.u.derived->attr.proc_pointer_comp))
++ sym->attr.proc_pointer_comp = 1;
++
++ /* Looking for coarray components. */
++ if (c->attr.codimension
++ || (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->attr.codimension))
++ {
++ coarray = true;
++ sym->attr.coarray_comp = 1;
++ }
++
++ if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.coarray_comp
++ && !c->attr.pointer)
++ {
++ coarray = true;
++ sym->attr.coarray_comp = 1;
++ }
++
++ /* Looking for lock_type components. */
++ if ((c->ts.type == BT_DERIVED
++ && c->ts.u.derived->from_intmod == INTMOD_ISO_FORTRAN_ENV
++ && c->ts.u.derived->intmod_sym_id == ISOFORTRAN_LOCK_TYPE)
++ || (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->ts.u.derived->from_intmod
++ == INTMOD_ISO_FORTRAN_ENV
++ && CLASS_DATA (c)->ts.u.derived->intmod_sym_id
++ == ISOFORTRAN_LOCK_TYPE)
++ || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.lock_comp
++ && !allocatable && !pointer))
++ {
++ lock_type = 1;
++ lock_comp = c;
++ sym->attr.lock_comp = 1;
++ }
++
++ /* Looking for event_type components. */
++ if ((c->ts.type == BT_DERIVED
++ && c->ts.u.derived->from_intmod == INTMOD_ISO_FORTRAN_ENV
++ && c->ts.u.derived->intmod_sym_id == ISOFORTRAN_EVENT_TYPE)
++ || (c->ts.type == BT_CLASS && c->attr.class_ok
++ && CLASS_DATA (c)->ts.u.derived->from_intmod
++ == INTMOD_ISO_FORTRAN_ENV
++ && CLASS_DATA (c)->ts.u.derived->intmod_sym_id
++ == ISOFORTRAN_EVENT_TYPE)
++ || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.event_comp
++ && !allocatable && !pointer))
++ {
++ event_type = 1;
++ event_comp = c;
++ sym->attr.event_comp = 1;
++ }
++
++ /* Check for F2008, C1302 - and recall that pointers may not be coarrays
++ (5.3.14) and that subobjects of coarray are coarray themselves (2.4.7),
++ unless there are nondirect [allocatable or pointer] components
++ involved (cf. 1.3.33.1 and 1.3.33.3). */
++
++ if (pointer && !coarray && lock_type)
++ gfc_error ("Component %s at %L of type LOCK_TYPE must have a "
++ "codimension or be a subcomponent of a coarray, "
++ "which is not possible as the component has the "
++ "pointer attribute", c->name, &c->loc);
++ else if (pointer && !coarray && c->ts.type == BT_DERIVED
++ && c->ts.u.derived->attr.lock_comp)
++ gfc_error ("Pointer component %s at %L has a noncoarray subcomponent "
++ "of type LOCK_TYPE, which must have a codimension or be a "
++ "subcomponent of a coarray", c->name, &c->loc);
++
++ if (lock_type && allocatable && !coarray)
++ gfc_error ("Allocatable component %s at %L of type LOCK_TYPE must have "
++ "a codimension", c->name, &c->loc);
++ else if (lock_type && allocatable && c->ts.type == BT_DERIVED
++ && c->ts.u.derived->attr.lock_comp)
++ gfc_error ("Allocatable component %s at %L must have a codimension as "
++ "it has a noncoarray subcomponent of type LOCK_TYPE",
++ c->name, &c->loc);
++
++ if (sym->attr.coarray_comp && !coarray && lock_type)
++ gfc_error ("Noncoarray component %s at %L of type LOCK_TYPE or with "
++ "subcomponent of type LOCK_TYPE must have a codimension or "
++ "be a subcomponent of a coarray. (Variables of type %s may "
++ "not have a codimension as already a coarray "
++ "subcomponent exists)", c->name, &c->loc, sym->name);
++
++ if (sym->attr.lock_comp && coarray && !lock_type)
++ gfc_error ("Noncoarray component %s at %L of type LOCK_TYPE or with "
++ "subcomponent of type LOCK_TYPE must have a codimension or "
++ "be a subcomponent of a coarray. (Variables of type %s may "
++ "not have a codimension as %s at %L has a codimension or a "
++ "coarray subcomponent)", lock_comp->name, &lock_comp->loc,
++ sym->name, c->name, &c->loc);
++
++ /* Similarly for EVENT TYPE. */
++
++ if (pointer && !coarray && event_type)
++ gfc_error ("Component %s at %L of type EVENT_TYPE must have a "
++ "codimension or be a subcomponent of a coarray, "
++ "which is not possible as the component has the "
++ "pointer attribute", c->name, &c->loc);
++ else if (pointer && !coarray && c->ts.type == BT_DERIVED
++ && c->ts.u.derived->attr.event_comp)
++ gfc_error ("Pointer component %s at %L has a noncoarray subcomponent "
++ "of type EVENT_TYPE, which must have a codimension or be a "
++ "subcomponent of a coarray", c->name, &c->loc);
++
++ if (event_type && allocatable && !coarray)
++ gfc_error ("Allocatable component %s at %L of type EVENT_TYPE must have "
++ "a codimension", c->name, &c->loc);
++ else if (event_type && allocatable && c->ts.type == BT_DERIVED
++ && c->ts.u.derived->attr.event_comp)
++ gfc_error ("Allocatable component %s at %L must have a codimension as "
++ "it has a noncoarray subcomponent of type EVENT_TYPE",
++ c->name, &c->loc);
++
++ if (sym->attr.coarray_comp && !coarray && event_type)
++ gfc_error ("Noncoarray component %s at %L of type EVENT_TYPE or with "
++ "subcomponent of type EVENT_TYPE must have a codimension or "
++ "be a subcomponent of a coarray. (Variables of type %s may "
++ "not have a codimension as already a coarray "
++ "subcomponent exists)", c->name, &c->loc, sym->name);
++
++ if (sym->attr.event_comp && coarray && !event_type)
++ gfc_error ("Noncoarray component %s at %L of type EVENT_TYPE or with "
++ "subcomponent of type EVENT_TYPE must have a codimension or "
++ "be a subcomponent of a coarray. (Variables of type %s may "
++ "not have a codimension as %s at %L has a codimension or a "
++ "coarray subcomponent)", event_comp->name, &event_comp->loc,
++ sym->name, c->name, &c->loc);
++
++ /* Look for private components. */
++ if (sym->component_access == ACCESS_PRIVATE
++ || c->attr.access == ACCESS_PRIVATE
++ || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.private_comp))
++ sym->attr.private_comp = 1;
++
++ if (lockp) *lockp = lock_comp;
++ if (eventp) *eventp = event_comp;
++}
++
++
++static void parse_struct_map (gfc_statement);
++
++/* Parse a union component definition within a structure definition. */
++
++static void
++parse_union (void)
++{
++ int compiling;
++ gfc_statement st;
++ gfc_state_data s;
++ gfc_component *c, *lock_comp = NULL, *event_comp = NULL;
++ gfc_symbol *un;
++
++ accept_statement(ST_UNION);
++ push_state (&s, COMP_UNION, gfc_new_block);
++ un = gfc_new_block;
++
++ compiling = 1;
++
++ while (compiling)
++ {
++ st = next_statement ();
++ /* Only MAP declarations valid within a union. */
++ switch (st)
++ {
++ case ST_NONE:
++ unexpected_eof ();
++
++ case ST_MAP:
++ accept_statement (ST_MAP);
++ parse_struct_map (ST_MAP);
++ /* 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_new_block->name);
++ reject_statement ();
++ return;
++ }
++ c->ts.type = BT_DERIVED;
++ c->ts.u.derived = gfc_new_block;
++ /* Normally components get their initialization expressions when they
++ are created in decl.c (build_struct) so we can look through the
++ flat component list for initializers during resolution. Unions and
++ maps create components along with their type definitions so we
++ have to generate initializers here. */
++ c->initializer = gfc_default_initializer (&c->ts);
++ break;
++
++ case ST_END_UNION:
++ compiling = 0;
++ accept_statement (ST_END_UNION);
++ break;
++
++ default:
++ unexpected_statement (st);
++ break;
++ }
++ }
++
++ for (c = un->components; c; c = c->next)
++ check_component (un, c, &lock_comp, &event_comp);
++
++ /* Add the union as a component in its parent structure. */
++ pop_state ();
++ if (!gfc_add_component (gfc_current_block (), un->name, &c))
++ {
++ gfc_internal_error ("failed to create union component '%s'", un->name);
++ reject_statement ();
++ return;
++ }
++ c->ts.type = BT_UNION;
++ c->ts.u.derived = un;
++ c->initializer = gfc_default_initializer (&c->ts);
++
++ un->attr.zero_comp = un->components == NULL;
++}
++
++
++/* Parse a STRUCTURE or MAP. */
++
++static void
++parse_struct_map (gfc_statement block)
++{
++ int compiling_type;
++ gfc_statement st;
++ gfc_state_data s;
++ gfc_symbol *sym;
++ gfc_component *c, *lock_comp = NULL, *event_comp = NULL;
++ gfc_compile_state comp;
++ gfc_statement ends;
++
++ if (block == ST_STRUCTURE_DECL)
++ {
++ comp = COMP_STRUCTURE;
++ ends = ST_END_STRUCTURE;
++ }
++ else
++ {
++ gcc_assert (block == ST_MAP);
++ comp = COMP_MAP;
++ ends = ST_END_MAP;
++ }
++
++ accept_statement(block);
++ push_state (&s, comp, gfc_new_block);
++
++ gfc_new_block->component_access = ACCESS_PUBLIC;
++ compiling_type = 1;
++
++ while (compiling_type)
++ {
++ st = next_statement ();
++ switch (st)
++ {
++ case ST_NONE:
++ unexpected_eof ();
++
++ /* Nested structure declarations will be captured as ST_DATA_DECL. */
++ case ST_STRUCTURE_DECL:
++ /* Let a more specific error make it to decode_statement(). */
++ if (gfc_error_check () == 0)
++ gfc_error ("Syntax error in nested structure declaration at %C");
++ reject_statement ();
++ /* Skip the rest of this statement. */
++ gfc_error_recovery ();
++ break;
++
++ case ST_UNION:
++ accept_statement (ST_UNION);
++ parse_union ();
++ break;
++
++ case ST_DATA_DECL:
++ /* The data declaration was a nested/ad-hoc STRUCTURE field. */
++ accept_statement (ST_DATA_DECL);
++ if (gfc_new_block && gfc_new_block != gfc_current_block ()
++ && gfc_new_block->attr.flavor == FL_STRUCT)
++ parse_struct_map (ST_STRUCTURE_DECL);
++ break;
++
++ case ST_END_STRUCTURE:
++ case ST_END_MAP:
++ if (st == ends)
++ {
++ accept_statement (st);
++ compiling_type = 0;
++ }
++ else
++ unexpected_statement (st);
++ break;
++
++ default:
++ unexpected_statement (st);
++ break;
++ }
++ }
++
++ /* Validate each component. */
++ sym = gfc_current_block ();
++ for (c = sym->components; c; c = c->next)
++ check_component (sym, c, &lock_comp, &event_comp);
++
++ sym->attr.zero_comp = (sym->components == NULL);
++
++ /* Allow parse_union to find this structure to add to its list of maps. */
++ if (block == ST_MAP)
++ gfc_new_block = gfc_current_block ();
++
++ pop_state ();
++}
++
++
+ /* Parse a derived type. */
+
+ static void
+@@ -2762,171 +3137,8 @@
+ */
+ sym = gfc_current_block ();
+ for (c = sym->components; c; c = c->next)
+- {
+- bool coarray, lock_type, event_type, allocatable, pointer;
+- coarray = lock_type = event_type = allocatable = pointer = false;
++ check_component (sym, c, &lock_comp, &event_comp);
+
+- /* Look for allocatable components. */
+- if (c->attr.allocatable
+- || (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->attr.allocatable)
+- || (c->ts.type == BT_DERIVED && !c->attr.pointer
+- && c->ts.u.derived->attr.alloc_comp))
+- {
+- allocatable = true;
+- sym->attr.alloc_comp = 1;
+- }
+-
+- /* Look for pointer components. */
+- if (c->attr.pointer
+- || (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->attr.class_pointer)
+- || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.pointer_comp))
+- {
+- pointer = true;
+- sym->attr.pointer_comp = 1;
+- }
+-
+- /* Look for procedure pointer components. */
+- if (c->attr.proc_pointer
+- || (c->ts.type == BT_DERIVED
+- && c->ts.u.derived->attr.proc_pointer_comp))
+- sym->attr.proc_pointer_comp = 1;
+-
+- /* Looking for coarray components. */
+- if (c->attr.codimension
+- || (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->attr.codimension))
+- {
+- coarray = true;
+- sym->attr.coarray_comp = 1;
+- }
+-
+- if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.coarray_comp
+- && !c->attr.pointer)
+- {
+- coarray = true;
+- sym->attr.coarray_comp = 1;
+- }
+-
+- /* Looking for lock_type components. */
+- if ((c->ts.type == BT_DERIVED
+- && c->ts.u.derived->from_intmod == INTMOD_ISO_FORTRAN_ENV
+- && c->ts.u.derived->intmod_sym_id == ISOFORTRAN_LOCK_TYPE)
+- || (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->ts.u.derived->from_intmod
+- == INTMOD_ISO_FORTRAN_ENV
+- && CLASS_DATA (c)->ts.u.derived->intmod_sym_id
+- == ISOFORTRAN_LOCK_TYPE)
+- || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.lock_comp
+- && !allocatable && !pointer))
+- {
+- lock_type = 1;
+- lock_comp = c;
+- sym->attr.lock_comp = 1;
+- }
+-
+- /* Looking for event_type components. */
+- if ((c->ts.type == BT_DERIVED
+- && c->ts.u.derived->from_intmod == INTMOD_ISO_FORTRAN_ENV
+- && c->ts.u.derived->intmod_sym_id == ISOFORTRAN_EVENT_TYPE)
+- || (c->ts.type == BT_CLASS && c->attr.class_ok
+- && CLASS_DATA (c)->ts.u.derived->from_intmod
+- == INTMOD_ISO_FORTRAN_ENV
+- && CLASS_DATA (c)->ts.u.derived->intmod_sym_id
+- == ISOFORTRAN_EVENT_TYPE)
+- || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.event_comp
+- && !allocatable && !pointer))
+- {
+- event_type = 1;
+- event_comp = c;
+- sym->attr.event_comp = 1;
+- }
+-
+- /* Check for F2008, C1302 - and recall that pointers may not be coarrays
+- (5.3.14) and that subobjects of coarray are coarray themselves (2.4.7),
+- unless there are nondirect [allocatable or pointer] components
+- involved (cf. 1.3.33.1 and 1.3.33.3). */
+-
+- if (pointer && !coarray && lock_type)
+- gfc_error ("Component %s at %L of type LOCK_TYPE must have a "
+- "codimension or be a subcomponent of a coarray, "
+- "which is not possible as the component has the "
+- "pointer attribute", c->name, &c->loc);
+- else if (pointer && !coarray && c->ts.type == BT_DERIVED
+- && c->ts.u.derived->attr.lock_comp)
+- gfc_error ("Pointer component %s at %L has a noncoarray subcomponent "
+- "of type LOCK_TYPE, which must have a codimension or be a "
+- "subcomponent of a coarray", c->name, &c->loc);
+-
+- if (lock_type && allocatable && !coarray)
+- gfc_error ("Allocatable component %s at %L of type LOCK_TYPE must have "
+- "a codimension", c->name, &c->loc);
+- else if (lock_type && allocatable && c->ts.type == BT_DERIVED
+- && c->ts.u.derived->attr.lock_comp)
+- gfc_error ("Allocatable component %s at %L must have a codimension as "
+- "it has a noncoarray subcomponent of type LOCK_TYPE",
+- c->name, &c->loc);
+-
+- if (sym->attr.coarray_comp && !coarray && lock_type)
+- gfc_error ("Noncoarray component %s at %L of type LOCK_TYPE or with "
+- "subcomponent of type LOCK_TYPE must have a codimension or "
+- "be a subcomponent of a coarray. (Variables of type %s may "
+- "not have a codimension as already a coarray "
+- "subcomponent exists)", c->name, &c->loc, sym->name);
+-
+- if (sym->attr.lock_comp && coarray && !lock_type)
+- gfc_error ("Noncoarray component %s at %L of type LOCK_TYPE or with "
+- "subcomponent of type LOCK_TYPE must have a codimension or "
+- "be a subcomponent of a coarray. (Variables of type %s may "
+- "not have a codimension as %s at %L has a codimension or a "
+- "coarray subcomponent)", lock_comp->name, &lock_comp->loc,
+- sym->name, c->name, &c->loc);
+-
+- /* Similarly for EVENT TYPE. */
+-
+- if (pointer && !coarray && event_type)
+- gfc_error ("Component %s at %L of type EVENT_TYPE must have a "
+- "codimension or be a subcomponent of a coarray, "
+- "which is not possible as the component has the "
+- "pointer attribute", c->name, &c->loc);
+- else if (pointer && !coarray && c->ts.type == BT_DERIVED
+- && c->ts.u.derived->attr.event_comp)
+- gfc_error ("Pointer component %s at %L has a noncoarray subcomponent "
+- "of type EVENT_TYPE, which must have a codimension or be a "
+- "subcomponent of a coarray", c->name, &c->loc);
+-
+- if (event_type && allocatable && !coarray)
+- gfc_error ("Allocatable component %s at %L of type EVENT_TYPE must have "
+- "a codimension", c->name, &c->loc);
+- else if (event_type && allocatable && c->ts.type == BT_DERIVED
+- && c->ts.u.derived->attr.event_comp)
+- gfc_error ("Allocatable component %s at %L must have a codimension as "
+- "it has a noncoarray subcomponent of type EVENT_TYPE",
+- c->name, &c->loc);
+-
+- if (sym->attr.coarray_comp && !coarray && event_type)
+- gfc_error ("Noncoarray component %s at %L of type EVENT_TYPE or with "
+- "subcomponent of type EVENT_TYPE must have a codimension or "
+- "be a subcomponent of a coarray. (Variables of type %s may "
+- "not have a codimension as already a coarray "
+- "subcomponent exists)", c->name, &c->loc, sym->name);
+-
+- if (sym->attr.event_comp && coarray && !event_type)
+- gfc_error ("Noncoarray component %s at %L of type EVENT_TYPE or with "
+- "subcomponent of type EVENT_TYPE must have a codimension or "
+- "be a subcomponent of a coarray. (Variables of type %s may "
+- "not have a codimension as %s at %L has a codimension or a "
+- "coarray subcomponent)", event_comp->name, &event_comp->loc,
+- sym->name, c->name, &c->loc);
+-
+- /* Look for private components. */
+- if (sym->component_access == ACCESS_PRIVATE
+- || c->attr.access == ACCESS_PRIVATE
+- || (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.private_comp))
+- sym->attr.private_comp = 1;
+- }
+-
+ if (!seen_component)
+ sym->attr.zero_comp = 1;
+
+@@ -3348,6 +3560,7 @@
+ case ST_PARAMETER:
+ case ST_PUBLIC:
+ case ST_PRIVATE:
++ case ST_STRUCTURE_DECL:
+ case ST_DERIVED_DECL:
+ case_decl:
+ declSt:
+@@ -3364,6 +3577,10 @@
+ parse_interface ();
+ break;
+
++ case ST_STRUCTURE_DECL:
++ parse_struct_map (ST_STRUCTURE_DECL);
++ break;
++
+ case ST_DERIVED_DECL:
+ parse_derived ();
+ break;
+Index: gcc/fortran/check.c
+===================================================================
+--- a/src/gcc/fortran/check.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/check.c (.../branches/gcc-6-branch)
+@@ -2592,7 +2592,7 @@
+ bool
+ gfc_check_kind (gfc_expr *x)
+ {
+- if (x->ts.type == BT_DERIVED || x->ts.type == BT_CLASS)
++ if (gfc_bt_struct (x->ts.type) || x->ts.type == BT_CLASS)
+ {
+ gfc_error ("%qs argument of %qs intrinsic at %L must be of "
+ "intrinsic type", gfc_current_intrinsic_arg[0]->name,
+Index: gcc/fortran/parse.h
+===================================================================
+--- a/src/gcc/fortran/parse.h (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/parse.h (.../branches/gcc-6-branch)
+@@ -28,6 +28,7 @@
+ COMP_NONE, COMP_PROGRAM, COMP_MODULE, COMP_SUBMODULE, COMP_SUBROUTINE,
+ COMP_FUNCTION, COMP_BLOCK_DATA, COMP_INTERFACE, COMP_DERIVED,
+ COMP_DERIVED_CONTAINS, COMP_BLOCK, COMP_ASSOCIATE, COMP_IF,
++ COMP_STRUCTURE, COMP_UNION, COMP_MAP,
+ COMP_DO, COMP_SELECT, COMP_FORALL, COMP_WHERE, COMP_CONTAINS, COMP_ENUM,
+ COMP_SELECT_TYPE, COMP_OMP_STRUCTURED_BLOCK, COMP_CRITICAL, COMP_DO_CONCURRENT
+ };
+@@ -58,6 +59,8 @@
+
+ #define gfc_current_block() (gfc_state_stack->sym)
+ #define gfc_current_state() (gfc_state_stack->state)
++#define gfc_comp_struct(s) \
++ ((s) == COMP_DERIVED || (s) == COMP_STRUCTURE || (s) == COMP_MAP)
+
+ int gfc_check_do_variable (gfc_symtree *);
+ bool gfc_find_state (gfc_compile_state);
+Index: gcc/fortran/primary.c
+===================================================================
+--- a/src/gcc/fortran/primary.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/primary.c (.../branches/gcc-6-branch)
+@@ -1883,11 +1883,12 @@
+ bool ppc_arg)
+ {
+ char name[GFC_MAX_SYMBOL_LEN + 1];
+- gfc_ref *substring, *tail;
++ gfc_ref *substring, *tail, *tmp;
+ gfc_component *component;
+ gfc_symbol *sym = primary->symtree->n.sym;
+ match m;
+ bool unknown;
++ char sep;
+
+ tail = NULL;
+
+@@ -1972,25 +1973,31 @@
+ if (equiv_flag)
+ return MATCH_YES;
+
+- if (sym->ts.type == BT_UNKNOWN && gfc_peek_ascii_char () == '%'
++ /* With DEC extensions, member separator may be '.' or '%'. */
++ sep = gfc_peek_ascii_char ();
++ m = gfc_match_member_sep (sym);
++ if (m == MATCH_ERROR)
++ return MATCH_ERROR;
++
++ if (sym->ts.type == BT_UNKNOWN && m == MATCH_YES
+ && gfc_get_default_type (sym->name, sym->ns)->type == BT_DERIVED)
+ gfc_set_default_type (sym, 0, sym->ns);
+
+- if (sym->ts.type == BT_UNKNOWN && gfc_match_char ('%') == MATCH_YES)
++ if (sym->ts.type == BT_UNKNOWN && m == MATCH_YES)
+ {
+ gfc_error ("Symbol %qs at %C has no IMPLICIT type", sym->name);
+ return MATCH_ERROR;
+ }
+ else if ((sym->ts.type != BT_DERIVED && sym->ts.type != BT_CLASS)
+- && gfc_match_char ('%') == MATCH_YES)
++ && m == MATCH_YES)
+ {
+- gfc_error ("Unexpected %<%%%> for nonderived-type variable %qs at %C",
+- sym->name);
++ gfc_error ("Unexpected %<%c%> for nonderived-type variable %qs at %C",
++ sep, sym->name);
+ return MATCH_ERROR;
+ }
+
+ if ((sym->ts.type != BT_DERIVED && sym->ts.type != BT_CLASS)
+- || gfc_match_char ('%') != MATCH_YES)
++ || m != MATCH_YES)
+ goto check_substring;
+
+ sym = sym->ts.u.derived;
+@@ -2061,15 +2068,24 @@
+ break;
+ }
+
+- component = gfc_find_component (sym, name, false, false);
++ component = gfc_find_component (sym, name, false, false, &tmp);
+ if (component == NULL)
+ return MATCH_ERROR;
+
+- tail = extend_ref (primary, tail);
+- tail->type = REF_COMPONENT;
++ /* Extend the reference chain determined by gfc_find_component. */
++ if (primary->ref == NULL)
++ primary->ref = tmp;
++ else
++ {
++ /* Set by the for loop below for the last component ref. */
++ gcc_assert (tail != NULL);
++ tail->next = tmp;
++ }
+
+- tail->u.c.component = component;
+- tail->u.c.sym = sym;
++ /* The reference chain may be longer than one hop for union
++ subcomponents; find the new tail. */
++ for (tail = tmp; tail->next; tail = tail->next)
++ ;
+
+ primary->ts = component->ts;
+
+@@ -2119,7 +2135,7 @@
+ }
+
+ if ((component->ts.type != BT_DERIVED && component->ts.type != BT_CLASS)
+- || gfc_match_char ('%') != MATCH_YES)
++ || gfc_match_member_sep (component->ts.u.derived) != MATCH_YES)
+ break;
+
+ sym = component->ts.u.derived;
+@@ -2127,7 +2143,7 @@
+
+ check_substring:
+ unknown = false;
+- if (primary->ts.type == BT_UNKNOWN && sym->attr.flavor != FL_DERIVED)
++ if (primary->ts.type == BT_UNKNOWN && !gfc_fl_struct (sym->attr.flavor))
+ {
+ if (gfc_get_default_type (sym->name, sym->ns)->type == BT_CHARACTER)
+ {
+@@ -2548,11 +2564,11 @@
+ /* Find the current component in the structure definition and check
+ its access is not private. */
+ if (comp)
+- this_comp = gfc_find_component (sym, comp->name, false, false);
++ this_comp = gfc_find_component (sym, comp->name, false, false, NULL);
+ else
+ {
+ this_comp = gfc_find_component (sym, (const char *)comp_tail->name,
+- false, false);
++ false, false, NULL);
+ comp = NULL; /* Reset needed! */
+ }
+
+@@ -2596,7 +2612,7 @@
+ if (comp && comp == sym->components
+ && sym->attr.extension
+ && comp_tail->val
+- && (comp_tail->val->ts.type != BT_DERIVED
++ && (!gfc_bt_struct (comp_tail->val->ts.type)
+ ||
+ comp_tail->val->ts.u.derived != this_comp->ts.u.derived))
+ {
+@@ -2697,7 +2713,7 @@
+ e->symtree = symtree;
+ e->expr_type = EXPR_FUNCTION;
+
+- gcc_assert (sym->attr.flavor == FL_DERIVED
++ gcc_assert (gfc_fl_struct (sym->attr.flavor)
+ && symtree->n.sym->attr.flavor == FL_PROCEDURE);
+ e->value.function.esym = sym;
+ e->symtree->n.sym->attr.generic = 1;
+@@ -2795,15 +2811,29 @@
+ if (m != MATCH_YES)
+ return m;
+
+- if (gfc_find_state (COMP_INTERFACE)
+- && !gfc_current_ns->has_import_set)
+- i = gfc_get_sym_tree (name, NULL, &symtree, false);
+- else
+- i = gfc_get_ha_sym_tree (name, &symtree);
+-
+- if (i)
++ /* Check if the symbol exists. */
++ if (gfc_find_sym_tree (name, NULL, 1, &symtree))
+ return MATCH_ERROR;
+
++ /* If the symbol doesn't exist, create it unless the name matches a FL_STRUCT
++ type. For derived types we create a generic symbol which links to the
++ derived type symbol; STRUCTUREs are simpler and must not conflict with
++ variables. */
++ if (!symtree)
++ if (gfc_find_sym_tree (gfc_dt_upper_string (name), NULL, 1, &symtree))
++ return MATCH_ERROR;
++ if (!symtree || symtree->n.sym->attr.flavor != FL_STRUCT)
++ {
++ if (gfc_find_state (COMP_INTERFACE)
++ && !gfc_current_ns->has_import_set)
++ i = gfc_get_sym_tree (name, NULL, &symtree, false);
++ else
++ i = gfc_get_ha_sym_tree (name, &symtree);
++ if (i)
++ return MATCH_ERROR;
++ }
++
++
+ sym = symtree->n.sym;
+ e = NULL;
+ where = gfc_current_locus;
+@@ -2914,6 +2944,7 @@
+
+ break;
+
++ case FL_STRUCT:
+ case FL_DERIVED:
+ sym = gfc_use_derived (sym);
+ if (sym == NULL)
+@@ -3054,10 +3085,12 @@
+ via an IMPLICIT statement. This can't wait for the
+ resolution phase. */
+
+- if (gfc_peek_ascii_char () == '%'
++ old_loc = gfc_current_locus;
++ if (gfc_match_member_sep (sym) == MATCH_YES
+ && sym->ts.type == BT_UNKNOWN
+ && gfc_get_default_type (sym->name, sym->ns)->type == BT_DERIVED)
+ gfc_set_default_type (sym, 0, sym->ns);
++ gfc_current_locus = old_loc;
+
+ /* If the symbol has a (co)dimension attribute, the expression is a
+ variable. */
+@@ -3210,13 +3243,19 @@
+ break;
+
+ generic_function:
+- gfc_get_sym_tree (name, NULL, &symtree, false); /* Can't fail */
++ /* Look for symbol first; if not found, look for STRUCTURE type symbol
++ specially. Creates a generic symbol for derived types. */
++ gfc_find_sym_tree (name, NULL, 1, &symtree);
++ if (!symtree)
++ gfc_find_sym_tree (gfc_dt_upper_string (name), NULL, 1, &symtree);
++ if (!symtree || symtree->n.sym->attr.flavor != FL_STRUCT)
++ gfc_get_sym_tree (name, NULL, &symtree, false); /* Can't fail */
+
+ e = gfc_get_expr ();
+ e->symtree = symtree;
+ e->expr_type = EXPR_FUNCTION;
+
+- if (sym->attr.flavor == FL_DERIVED)
++ if (gfc_fl_struct (sym->attr.flavor))
+ {
+ e->value.function.esym = sym;
+ e->symtree->n.sym->attr.generic = 1;
+@@ -3260,10 +3299,10 @@
+ static match
+ match_variable (gfc_expr **result, int equiv_flag, int host_flag)
+ {
+- gfc_symbol *sym;
++ gfc_symbol *sym, *dt_sym;
+ gfc_symtree *st;
+ gfc_expr *expr;
+- locus where;
++ locus where, old_loc;
+ match m;
+
+ /* Since nothing has any business being an lvalue in a module
+@@ -3294,6 +3333,17 @@
+ sym->attr.implied_index = 0;
+
+ gfc_set_sym_referenced (sym);
++
++ /* STRUCTUREs may share names with variables, but derived types may not. */
++ if (sym->attr.flavor == FL_PROCEDURE && sym->generic
++ && (dt_sym = gfc_find_dt_in_generic (sym)))
++ {
++ if (dt_sym->attr.flavor == FL_DERIVED)
++ gfc_error ("Derived type '%s' cannot be used as a variable at %C",
++ sym->name);
++ return MATCH_ERROR;
++ }
++
+ switch (sym->attr.flavor)
+ {
+ case FL_VARIABLE:
+@@ -3379,11 +3429,13 @@
+ implicit_ns = gfc_current_ns;
+ else
+ implicit_ns = sym->ns;
+-
+- if (gfc_peek_ascii_char () == '%'
++
++ old_loc = gfc_current_locus;
++ if (gfc_match_member_sep (sym) == MATCH_YES
+ && sym->ts.type == BT_UNKNOWN
+ && gfc_get_default_type (sym->name, implicit_ns)->type == BT_DERIVED)
+ gfc_set_default_type (sym, 0, implicit_ns);
++ gfc_current_locus = old_loc;
+ }
+
+ expr = gfc_get_expr ();
+Index: gcc/fortran/misc.c
+===================================================================
+--- a/src/gcc/fortran/misc.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/misc.c (.../branches/gcc-6-branch)
+@@ -83,6 +83,9 @@
+ case BT_HOLLERITH:
+ p = "HOLLERITH";
+ break;
++ case BT_UNION:
++ p = "UNION";
++ break;
+ case BT_DERIVED:
+ p = "DERIVED";
+ break;
+@@ -144,6 +147,9 @@
+ case BT_HOLLERITH:
+ sprintf (buffer, "HOLLERITH");
+ break;
++ case BT_UNION:
++ sprintf (buffer, "UNION(%s)", ts->u.derived->name);
++ break;
+ case BT_DERIVED:
+ sprintf (buffer, "TYPE(%s)", ts->u.derived->name);
+ break;
+Index: gcc/fortran/options.c
+===================================================================
+--- a/src/gcc/fortran/options.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/fortran/options.c (.../branches/gcc-6-branch)
+@@ -47,6 +47,15 @@
+ }
+
+
++/* Set all the DEC extension flags. */
++
++static void
++set_dec_flags (int value)
++{
++ gfc_option.flag_dec_structure = value;
++}
++
++
+ /* Return language mask for Fortran options. */
+
+ unsigned int
+@@ -102,6 +111,8 @@
+ if (!global_options_set.x_cpp_warn_missing_include_dirs)
+ global_options.x_cpp_warn_missing_include_dirs = 1;
+
++ set_dec_flags (0);
++
+ set_default_std_flags ();
+
+ /* Initialize cpp-related options. */
+@@ -709,6 +720,15 @@
+ case OPT_fcheck_:
+ gfc_handle_runtime_check_option (arg);
+ break;
++
++ case OPT_fdec:
++ /* Enable all DEC extensions. */
++ set_dec_flags (1);
++ break;
++
++ case OPT_fdec_structure:
++ gfc_option.flag_dec_structure = 1;
++ break;
+ }
+
+ Fortran_handle_option_auto (&global_options, &global_options_set,
Index: gcc/BASE-VER
===================================================================
--- a/src/gcc/BASE-VER (.../tags/gcc_6_1_0_release)
@@ -2284,6 +9148,21 @@ Index: gcc/stor-layout.h
extern unsigned int update_alignment_for_field (record_layout_info, tree,
unsigned int);
extern record_layout_info start_record_layout (tree);
+Index: gcc/tree-vect-loop.c
+===================================================================
+--- a/src/gcc/tree-vect-loop.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/tree-vect-loop.c (.../branches/gcc-6-branch)
+@@ -437,7 +437,9 @@
+ /* Bool ops don't participate in vectorization factor
+ computation. For comparison use compared types to
+ compute a factor. */
+- if (TREE_CODE (scalar_type) == BOOLEAN_TYPE)
++ if (TREE_CODE (scalar_type) == BOOLEAN_TYPE
++ && is_gimple_assign (stmt)
++ && gimple_assign_rhs_code (stmt) != COND_EXPR)
+ {
+ if (STMT_VINFO_RELEVANT_P (stmt_info))
+ mask_producers.safe_push (stmt_info);
Index: gcc/gimplify.c
===================================================================
--- a/src/gcc/gimplify.c (.../tags/gcc_6_1_0_release)
@@ -158176,7 +165055,11 @@ Index: gcc/po/ChangeLog
===================================================================
--- a/src/gcc/po/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/po/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,21 @@
+@@ -1,3 +1,25 @@
++2016-05-18 Joseph Myers <joseph at codesourcery.com>
++
++ * da.po, sv.po: Update.
++
+2016-05-09 Joseph Myers <joseph at codesourcery.com>
+
+ * sv.po: Update.
@@ -274278,16 +281161,40 @@ Index: gcc/po/da.po
===================================================================
--- a/src/gcc/po/da.po (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/po/da.po (.../branches/gcc-6-branch)
-@@ -135,7 +135,7 @@
+@@ -1,8 +1,8 @@
+ # Danish version of GCC strings.
+-# Copyright (C) 2015 Free Software Foundation, Inc.
++# Copyright (C) 2016 Free Software Foundation, Inc.
+ # This file is distributed under the same license as the gcc package.
+ # Ole Laursen <olau at hardworking.dk>, 2001, 02, 03, 04.
+-# Joe Hansen <joedalton2 at yahoo.dk>, 2015.
++# Joe Hansen <joedalton2 at yahoo.dk>, 2015, 2016.
+ #
+ # Konventioner:
+ #
+@@ -30,6 +30,7 @@
+ # declared -> erklæret
+ # defaults to -> antages at være
+ # dereference -> følge
++# directory -> mappe
+ # discard -> fjerne
+ # discard -> kassere
+ # divide -> division
+@@ -133,10 +134,10 @@
+ #
+ msgid ""
msgstr ""
- "Project-Id-Version: gcc 5.2.0\n"
+-"Project-Id-Version: gcc 5.2.0\n"
++"Project-Id-Version: gcc 6.1.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2016-01-31 15:50+0000\n"
+-"PO-Revision-Date: 2015-08-16 18:00+0200\n"
+"POT-Creation-Date: 2016-04-21 15:24+0000\n"
- "PO-Revision-Date: 2015-08-16 18:00+0200\n"
++"PO-Revision-Date: 2016-05-16 18:00+0200\n"
"Last-Translator: Joe Hansen <joedalton2 at yahoo.dk>\n"
"Language-Team: Danish <dansk at dansk-gruppen.dk>\n"
-@@ -219,32 +219,32 @@
+ "Language: da\n"
+@@ -219,32 +220,32 @@
msgid "const/copy propagation disabled"
msgstr "konstruk/kopi-propagering deaktiveret"
@@ -274326,7 +281233,7 @@ Index: gcc/po/da.po
#, c-format
msgid ""
"Please submit a full bug report,\n"
-@@ -253,22 +253,22 @@
+@@ -253,22 +254,22 @@
"Indsend venligst en komplet fejlrapport med\n"
"præprocesseret kildekode om nødvendigt.\n"
@@ -274353,7 +281260,7 @@ Index: gcc/po/da.po
#, c-format
msgid "Internal compiler error: Error reporting routines re-entered.\n"
msgstr "Intern oversætterfejl: fejlrapporteringsrutiner blev kaldt igen.\n"
-@@ -321,13 +321,13 @@
+@@ -321,13 +322,13 @@
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
@@ -274369,9 +281276,368 @@ Index: gcc/po/da.po
#: config/pdp11/pdp11.c:1732
#, c-format
msgid "invalid expression as operand"
-@@ -741,22 +741,22 @@
- msgid "Preprocessed source stored into %s file, please attach this to your bugreport.\n"
+@@ -400,22 +401,16 @@
+ msgstr "Tilvalg:\n"
+
+ #: gcc.c:3384
+-#, fuzzy
+-#| msgid " -pass-exit-codes Exit with highest error code from a phase\n"
+ msgid " -pass-exit-codes Exit with highest error code from a phase.\n"
+-msgstr " -pass-exit-codes Afslut med den højeste fejlkode fra en fase\n"
++msgstr " -pass-exit-codes Afslut med den højeste fejlkode fra en fase.\n"
+
+ #: gcc.c:3385
+-#, fuzzy
+-#| msgid " --help Display this information\n"
+ msgid " --help Display this information.\n"
+-msgstr " --help Vis disse oplysninger\n"
++msgstr " --help Vis disse oplysninger.\n"
+
+ #: gcc.c:3386
+-#, fuzzy
+-#| msgid " --target-help Display target specific command line options\n"
+ msgid " --target-help Display target specific command line options.\n"
+-msgstr " --target-help Vis målspecifikke kommandolinjetilvalg\n"
++msgstr " --target-help Vis målspecifikke kommandolinjetilvalg.\n"
+
+ #: gcc.c:3387
+ msgid " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...].\n"
+@@ -422,160 +417,108 @@
+ msgstr ""
+
+ #: gcc.c:3388
+-#, fuzzy
+-#| msgid " Display specific types of command line options\n"
+ msgid " Display specific types of command line options.\n"
+-msgstr " Vis specifikke typer af tilvalg for kommandolinjen\n"
++msgstr " Vis specifikke typer af tilvalg for kommandolinjen.\n"
+
+ #: gcc.c:3390
+-#, fuzzy
+-#| msgid " (Use '-v --help' to display command line options of sub-processes)\n"
+ msgid " (Use '-v --help' to display command line options of sub-processes).\n"
+-msgstr " (benyt »-v --help« for at vise kommandolinjetilvalg for underprocesser)\n"
++msgstr " (benyt »-v --help« for at vise kommandolinjetilvalg for underprocesser).\n"
+
+ #: gcc.c:3391
+-#, fuzzy
+-#| msgid " --version Display compiler version information\n"
+ msgid " --version Display compiler version information.\n"
+-msgstr " --version Udskriv oversætterens version\n"
++msgstr " --version Udskriv oversætterens version.\n"
+
+ #: gcc.c:3392
+-#, fuzzy
+-#| msgid " -dumpspecs Display all of the built in spec strings\n"
+ msgid " -dumpspecs Display all of the built in spec strings.\n"
+-msgstr " -dumpspecs Vis alle de indbyggede specifikationsstrenge\n"
++msgstr " -dumpspecs Vis alle de indbyggede specifikationsstrenge.\n"
+
+ #: gcc.c:3393
+-#, fuzzy
+-#| msgid " -dumpversion Display the version of the compiler\n"
+ msgid " -dumpversion Display the version of the compiler.\n"
+-msgstr " -dumpversion Vis oversætterens versionsnummer\n"
++msgstr " -dumpversion Vis oversætterens versionsnummer.\n"
+
+ #: gcc.c:3394
+-#, fuzzy
+-#| msgid " -dumpmachine Display the compiler's target processor\n"
+ msgid " -dumpmachine Display the compiler's target processor.\n"
+-msgstr " -dumpmachine Vis oversætterens målprocessor\n"
++msgstr " -dumpmachine Vis oversætterens målprocessor.\n"
+
+ #: gcc.c:3395
+-#, fuzzy
+-#| msgid " -print-search-dirs Display the directories in the compiler's search path\n"
+ msgid " -print-search-dirs Display the directories in the compiler's search path.\n"
+-msgstr " -print-search-dirs Vis katalogerne i oversætterens søgesti\n"
++msgstr " -print-search-dirs Vis mapperne i oversætterens søgesti.\n"
+
+ #: gcc.c:3396
+-#, fuzzy
+-#| msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n"
+ msgid " -print-libgcc-file-name Display the name of the compiler's companion library.\n"
+-msgstr " -print-libgcc-file-name Vis navnet på oversætterens tilhørende bibliotek\n"
++msgstr " -print-libgcc-file-name Vis navnet på oversætterens tilhørende bibliotek.\n"
+
+ #: gcc.c:3397
+-#, fuzzy
+-#| msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
+ msgid " -print-file-name=<lib> Display the full path to library <lib>.\n"
+-msgstr " -print-file-name=<bibl> Vis den komplette sti til biblioteket <bibl>\n"
++msgstr " -print-file-name=<bibl> Vis den komplette sti til biblioteket <bibl>.\n"
+
+ #: gcc.c:3398
+-#, fuzzy
+-#| msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>\n"
+ msgid " -print-prog-name=<prog> Display the full path to compiler component <prog>.\n"
+-msgstr " -print-prog-name=<prog> Vis den komplette sti til oversætterkomponenten <prog>\n"
++msgstr " -print-prog-name=<prog> Vis den komplette sti til oversætterkomponenten <prog>.\n"
+
+ #: gcc.c:3399
+-#, fuzzy
+-#| msgid ""
+-#| " -print-multiarch Display the target's normalized GNU triplet, used as\n"
+-#| " a component in the library path\n"
+ msgid ""
+ " -print-multiarch Display the target's normalized GNU triplet, used as\n"
+ " a component in the library path.\n"
+ msgstr ""
+ " -print-multi-lib Vis målets normaliseret GNU-triplet, brugt som\n"
+-" en komponent i bibioteksstien\n"
++" en komponent i bibioteksstien.\n"
+
+ #: gcc.c:3402
+-#, fuzzy
+-#| msgid " -print-multi-directory Display the root directory for versions of libgcc\n"
+ msgid " -print-multi-directory Display the root directory for versions of libgcc.\n"
+-msgstr " -print-multi-directory Vis rodkataloget for versioner af libgcc\n"
++msgstr " -print-multi-directory Vis rodmappen for versioner af libgcc.\n"
+
+ #: gcc.c:3403
+-#, fuzzy
+-#| msgid ""
+-#| " -print-multi-lib Display the mapping between command line options and\n"
+-#| " multiple library search directories\n"
+ msgid ""
+ " -print-multi-lib Display the mapping between command line options and\n"
+ " multiple library search directories.\n"
+ msgstr ""
+ " -print-multi-lib Vis afbildningen mellem kommandolinjetilvalg og\n"
+-" flere bibliotekssøgekataloger\n"
++" flere bibliotekssøgemapper.\n"
+
+ #: gcc.c:3406
+-#, fuzzy
+-#| msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
+ msgid " -print-multi-os-directory Display the relative path to OS libraries.\n"
+-msgstr " -print-multi-os-directory Vis den relative sti for OS-biblioteker\n"
++msgstr " -print-multi-os-directory Vis den relative sti for OS-biblioteker.\n"
+
+ #: gcc.c:3407
+-#, fuzzy
+-#| msgid " -print-sysroot Display the target libraries directory\n"
+ msgid " -print-sysroot Display the target libraries directory.\n"
+-msgstr " -print-sysroot Vis mappen for målets biblioteker\n"
++msgstr " -print-sysroot Vis mappen for målets biblioteker.\n"
+
+ #: gcc.c:3408
+-#, fuzzy
+-#| msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n"
+ msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers.\n"
+-msgstr " -print-sysroot-headers-suffix Vis sysroot-suffikset brugt til at finde teksthoveder\n"
++msgstr " -print-sysroot-headers-suffix Vis sysroot-suffikset brugt til at finde teksthoveder.\n"
+
+ #: gcc.c:3409
+-#, fuzzy
+-#| msgid " -Wa,<options> Pass comma-separated <options> on to the assembler\n"
+ msgid " -Wa,<options> Pass comma-separated <options> on to the assembler.\n"
+-msgstr " -Wa,<tilvalg> Videregiv komma-adskilte <tilvalg> til maskinkodeoversætteren\n"
++msgstr " -Wa,<tilvalg> Videregiv komma-adskilte <tilvalg> til maskinkodeoversætteren.\n"
+
+ #: gcc.c:3410
+-#, fuzzy
+-#| msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor\n"
+ msgid " -Wp,<options> Pass comma-separated <options> on to the preprocessor.\n"
+-msgstr " -Wp,<tilvalg> Videregiv komma-adskilte <tilvalg> til præprocessoren\n"
++msgstr " -Wp,<tilvalg> Videregiv komma-adskilte <tilvalg> til forbrænderen.\n"
+
+ #: gcc.c:3411
+-#, fuzzy
+-#| msgid " -Wl,<options> Pass comma-separated <options> on to the linker\n"
+ msgid " -Wl,<options> Pass comma-separated <options> on to the linker.\n"
+-msgstr " -Wl,<tilvalg> Videregiv komma-adskilte <tilvalg> til sammenkæderen\n"
++msgstr " -Wl,<tilvalg> Videregiv komma-adskilte <tilvalg> til sammenkæderen.\n"
+
+ #: gcc.c:3412
+-#, fuzzy
+-#| msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
+ msgid " -Xassembler <arg> Pass <arg> on to the assembler.\n"
+-msgstr " -Xassembler <para> Videregiv <para> til maskinkodeoversætteren\n"
++msgstr " -Xassembler <para> Videregiv <para> til maskinkodeoversætteren.\n"
+
+ #: gcc.c:3413
+-#, fuzzy
+-#| msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
+ msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor.\n"
+-msgstr " -Xpreprocessor <para> Videregiv <para> til forbrænderen\n"
++msgstr " -Xpreprocessor <para> Videregiv <para> til forbrænderen.\n"
+
+ #: gcc.c:3414
+-#, fuzzy
+-#| msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
+ msgid " -Xlinker <arg> Pass <arg> on to the linker.\n"
+-msgstr " -Xlinker <para> Videregiv <para> til sammenkæderen\n"
++msgstr " -Xlinker <para> Videregiv <para> til sammenkæderen.\n"
+
+ #: gcc.c:3415
+-#, fuzzy
+-#| msgid " -save-temps Do not delete intermediate files\n"
+ msgid " -save-temps Do not delete intermediate files.\n"
+-msgstr " -save-temps Slet ikke midlertidige filer\n"
++msgstr " -save-temps Slet ikke midlertidige filer.\n"
+
+ #: gcc.c:3416
+-#, fuzzy
+-#| msgid " -save-temps=<arg> Do not delete intermediate files\n"
+ msgid " -save-temps=<arg> Do not delete intermediate files.\n"
+-msgstr " -save-temps=<para> Slet ikke midlertidige filer\n"
++msgstr " -save-temps=<para> Slet ikke midlertidige filer.\n"
+
+ #: gcc.c:3417
+ msgid ""
+@@ -582,30 +525,24 @@
+ " -no-canonical-prefixes Do not canonicalize paths when building relative\n"
+ " prefixes to other gcc components.\n"
+ msgstr ""
++" -no-canonical-prefixes Normaliser ikke stier når der bygges relative\n"
++" præfiks til andre gcc-komponenter.\n"
+
+ #: gcc.c:3420
+-#, fuzzy
+-#| msgid " -pipe Use pipes rather than intermediate files\n"
+ msgid " -pipe Use pipes rather than intermediate files.\n"
+-msgstr " -pipe Brug datakanaler i stedet for midlertidige filer\n"
++msgstr " -pipe Brug datakanaler i stedet for midlertidige filer.\n"
+
+ #: gcc.c:3421
+-#, fuzzy
+-#| msgid " -time Time the execution of each subprocess\n"
+ msgid " -time Time the execution of each subprocess.\n"
+-msgstr " -time Tag tid på udførslen af hver underproces\n"
++msgstr " -time Tag tid på udførslen af hver underproces.\n"
+
+ #: gcc.c:3422
+-#, fuzzy
+-#| msgid " -specs=<file> Override built-in specs with the contents of <file>\n"
+ msgid " -specs=<file> Override built-in specs with the contents of <file>.\n"
+-msgstr " -specs=<fil> Overskriv indbyggede specifikationer med indholdet af <fil>\n"
++msgstr " -specs=<fil> Overskriv indbyggede specifikationer med indholdet af <fil>.\n"
+
+ #: gcc.c:3423
+-#, fuzzy
+-#| msgid " -std=<standard> Assume that the input sources are for <standard>\n"
+ msgid " -std=<standard> Assume that the input sources are for <standard>.\n"
+-msgstr " -std=<standard> Antag at inddatakildekoden er skrevet til <standard>\n"
++msgstr " -std=<standard> Antag at inddatakildekoden er skrevet til <standard>.\n"
+
+ #: gcc.c:3424
+ msgid ""
+@@ -612,70 +549,48 @@
+ " --sysroot=<directory> Use <directory> as the root directory for headers\n"
+ " and libraries.\n"
+ msgstr ""
++" --sysroot=<mappe> Brug <mappe> som rodmappen for teksthoveder\n"
++" og biblioteker.\n"
+
+ #: gcc.c:3427
+-#, fuzzy
+-#| msgid " -B <directory> Add <directory> to the compiler's search paths\n"
+ msgid " -B <directory> Add <directory> to the compiler's search paths.\n"
+-msgstr " -B <katalog> Tilføj katalog til oversætterens søgestier\n"
++msgstr " -B <mappe> Tilføj mappe til oversætterens søgestier.\n"
+
+ #: gcc.c:3428
+-#, fuzzy
+-#| msgid " -v Display the programs invoked by the compiler\n"
+ msgid " -v Display the programs invoked by the compiler.\n"
+-msgstr " -v Vis de programmer der startes af oversætteren\n"
++msgstr " -v Vis de programmer der startes af oversætteren.\n"
+
+ #: gcc.c:3429
+-#, fuzzy
+-#| msgid " -### Like -v but options quoted and commands not executed\n"
+ msgid " -### Like -v but options quoted and commands not executed.\n"
+ msgstr ""
+ " -### Som '-v', men tilvalg anbringes i anførselstegn\n"
+-" og kommandoerne udføres ikke\n"
++" og kommandoerne udføres ikke.\n"
+
+ #: gcc.c:3430
+-#, fuzzy
+-#| msgid " -E Preprocess only; do not compile, assemble or link\n"
+ msgid " -E Preprocess only; do not compile, assemble or link.\n"
+-msgstr " -E Forbehandl kun; oversæt og sammenkæd ikke\n"
++msgstr " -E Forbehandl kun; oversæt, maskinkodeoversæt og sammenkæd ikke.\n"
+
+ #: gcc.c:3431
+-#, fuzzy
+-#| msgid " -S Compile only; do not assemble or link\n"
+ msgid " -S Compile only; do not assemble or link.\n"
+-msgstr " -S Oversæt kun; maskinekodeoversæt og sammenkæd ikke\n"
++msgstr " -S Oversæt kun; maskinekodeoversæt og sammenkæd ikke.\n"
+
+ #: gcc.c:3432
+-#, fuzzy
+-#| msgid " -c Compile and assemble, but do not link\n"
+ msgid " -c Compile and assemble, but do not link.\n"
+-msgstr " -c Oversæt, også til maskinkode, men sammenkæd ikke\n"
++msgstr " -c Oversæt, også til maskinkode, men sammenkæd ikke.\n"
+
+ #: gcc.c:3433
+-#, fuzzy
+-#| msgid " -o <file> Place the output into <file>\n"
+ msgid " -o <file> Place the output into <file>.\n"
+-msgstr " -o <fil> Anbring uddataene i <fil>\n"
++msgstr " -o <fil> Anbring uddataene i <fil>.\n"
+
+ #: gcc.c:3434
+-#, fuzzy
+-#| msgid " -pie Create a position independent executable\n"
+ msgid " -pie Create a position independent executable.\n"
+-msgstr " -pie Opret en positionsuafhængig kørbar fil\n"
++msgstr " -pie Opret en positionsuafhængig kørbar fil.\n"
+
+ #: gcc.c:3435
+-#, fuzzy
+-#| msgid " -shared Create a shared library\n"
+ msgid " -shared Create a shared library.\n"
+-msgstr " -shared Opret et delt bibliotek\n"
++msgstr " -shared Opret et delt bibliotek.\n"
+
+ #: gcc.c:3436
+-#, fuzzy
+-#| msgid ""
+-#| " -x <language> Specify the language of the following input files\n"
+-#| " Permissible languages include: c c++ assembler none\n"
+-#| " 'none' means revert to the default behavior of\n"
+-#| " guessing the language based on the file's extension\n"
+ msgid ""
+ " -x <language> Specify the language of the following input files.\n"
+ " Permissible languages include: c c++ assembler none\n"
+@@ -684,8 +599,8 @@
msgstr ""
+ " -x <sprog> Angiv sproget for de følgende inddatafiler.\n"
+ " Tilladte sprog inkluderer: c c++ assembler none\n"
+-" 'none' betyder at standardopførslen med at gætte\n"
+-" sproget på filendelsen udføres\n"
++" »none« betyder at standardopførslen med at gætte\n"
++" sproget på filendelsen udføres.\n"
+
+ #: gcc.c:3443
+ #, c-format
+@@ -699,7 +614,7 @@
+ "Tilvalg der begynder med -g, -f, -m, -O, -W eller --param bliver automatisk\n"
+ " givet videre til de forskellige underprocesser som %s starter. For at\n"
+ " videregive andre indstillinger til disse processer kan tilvalg på formen\n"
+-" '-W<bogstav>' bruges.\n"
++" »-W<bogstav>« bruges.\n"
+
+ #: gcc.c:5876
+ #, c-format
+@@ -734,29 +649,29 @@
+ #: gcc.c:6682 gcc.c:6894
+ #, c-format
+ msgid "The bug is not reproducible, so it is likely a hardware or OS problem.\n"
+-msgstr ""
++msgstr "Fejlen kan ikke genskabes, så det er sandsynligvis et udstyrsproblem eller et problem med operativsystemet.\n"
+
+ #: gcc.c:6818
+ #, c-format
+ msgid "Preprocessed source stored into %s file, please attach this to your bugreport.\n"
+-msgstr ""
++msgstr "Forbrændt kilde lagret i %s-filen, vedhæft venligst den til din fejlrapport.\n"
-#: gcc.c:7701
+#: gcc.c:7757
@@ -274396,7 +281662,7 @@ Index: gcc/po/da.po
#, c-format
msgid ""
"\n"
-@@ -765,17 +765,17 @@
+@@ -765,17 +680,17 @@
"\n"
"For fejlrapporteringsinstruktioner, se:\n"
@@ -274417,7 +281683,7 @@ Index: gcc/po/da.po
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
-@@ -785,7 +785,7 @@
+@@ -785,7 +700,7 @@
"Dette er et frit program; se kildekoden for kopieringsbetingelser. Der er\n"
"INGEN garanti; ikke engang for SALGBARHED eller BRUGBARHED TIL NOGET FORMÅL.\n"
@@ -274426,34 +281692,270 @@ Index: gcc/po/da.po
#, c-format
msgid ""
"\n"
-@@ -794,7 +794,7 @@
+@@ -793,15 +708,21 @@
+ "==============\n"
"\n"
msgstr ""
++"\n"
++"Tilvalg for sammenkæder\n"
++"==============\n"
++"\n"
-#: gcc.c:8149
+#: gcc.c:8205
#, c-format
msgid ""
"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
-@@ -801,7 +801,7 @@
"\n"
msgstr ""
++"Brug »-Wl,TILVALG« for at sende »TILVALG« til sammenkæderen.\n"
++"\n"
-#: gcc.c:9441
+#: gcc.c:9497
#, c-format
msgid ""
"Assembler options\n"
-@@ -809,7 +809,7 @@
+@@ -808,18 +729,23 @@
+ "=================\n"
"\n"
msgstr ""
++"Tilvalg for maskinkodeoversætteren\n"
++"=================\n"
++"\n"
-#: gcc.c:9442
+#: gcc.c:9498
#, c-format
msgid ""
"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n"
-@@ -1297,7 +1297,7 @@
+ "\n"
+ msgstr ""
++"Brug »-Wa,TILVALG« til at sende »TILVALG« til maskinkodeoversætteren.\n"
++"\n"
+
+ #: gcov-tool.c:166
+ #, c-format
+ msgid " merge [options] <dir1> <dir2> Merge coverage file contents\n"
+-msgstr ""
++msgstr " merge [tilvalg] <map1> <map2> Sammenføj dækningsfilindhold\n"
+
+ #: gcov-tool.c:167 gcov-tool.c:261 gcov-tool.c:417
+ #, c-format
+@@ -827,10 +753,9 @@
+ msgstr " -v, --verbose Uddybende tilstand\n"
+
+ #: gcov-tool.c:168 gcov-tool.c:262
+-#, fuzzy, c-format
+-#| msgid " -n, --no-output Do not create an output file\n"
++#, c-format
+ msgid " -o, --output <dir> Output directory\n"
+-msgstr " -n, --no-output Opret ikke en uddatafil\n"
++msgstr " -o, --output <map> Vis mappe\n"
+
+ #: gcov-tool.c:169
+ #, c-format
+@@ -840,12 +765,12 @@
+ #: gcov-tool.c:185
+ #, c-format
+ msgid "Merge subcomand usage:"
+-msgstr ""
++msgstr "Sammenføj brug af underkommando:"
+
+ #: gcov-tool.c:260
+ #, c-format
+ msgid " rewrite [options] <dir> Rewrite coverage file contents\n"
+-msgstr ""
++msgstr " rewrite [tilvalg] <map> Genskriv dækningsfilindhold\n"
+
+ #: gcov-tool.c:263
+ #, c-format
+@@ -875,46 +800,42 @@
+ #: gcov-tool.c:359
+ #, c-format
+ msgid "normalization cannot co-exist with scaling\n"
+-msgstr ""
++msgstr "normalisering kan ikke sameksistere med skalering\n"
+
+ #: gcov-tool.c:416
+ #, c-format
+ msgid " overlap [options] <dir1> <dir2> Compute the overlap of two profiles\n"
+-msgstr ""
++msgstr " overlap [tilvalg] <map1> <map2> Beregn overlap for to profiler\n"
+
+ #: gcov-tool.c:418
+-#, fuzzy, c-format
+-#| msgid " -h, --help Print this help, then exit\n"
++#, c-format
+ msgid " -h, --hotonly Only print info for hot objects/functions\n"
+-msgstr " -h, --help Udskriv denne hjælp og afslut\n"
++msgstr " -h, --hotonly Udskriv kun info for varme objekter/funktioner\n"
+
+ #: gcov-tool.c:419
+-#, fuzzy, c-format
+-#| msgid " -p Enable function profiling\n"
++#, c-format
+ msgid " -f, --function Print function level info\n"
+-msgstr " -p Aktivér funktionsprofilering\n"
++msgstr " -f, --function Udskriv info om funktionsniveau\n"
+
+ #: gcov-tool.c:420
+-#, fuzzy, c-format
+-#| msgid " -h, --help Print this help, then exit\n"
++#, c-format
+ msgid " -F, --fullname Print full filename\n"
+-msgstr " -h, --help Udskriv denne hjælp og afslut\n"
++msgstr " -F, --fullname Udskriv fuldt filnavn\n"
+
+ #: gcov-tool.c:421
+-#, fuzzy, c-format
+-#| msgid " -h, --help Print this help, then exit\n"
++#, c-format
+ msgid " -o, --object Print object level info\n"
+-msgstr " -h, --help Udskriv denne hjælp og afslut\n"
++msgstr " -o, --object Udskriv info på objektniveau\n"
+
+ #: gcov-tool.c:422
+ #, c-format
+ msgid " -t <float>, --hot_threshold <float> Set the threshold for hotness\n"
+-msgstr ""
++msgstr " -t <float>, --hot_threshold <float> Angiv tærskel for varme\n"
+
+ #: gcov-tool.c:442
+ #, c-format
+ msgid "Overlap subcomand usage:"
+-msgstr ""
++msgstr "Overlap brug af underkommando:"
+
+ #: gcov-tool.c:508
+ #, c-format
+@@ -956,13 +877,12 @@
+ "%s.\n"
+
+ #: gcov-tool.c:526
+-#, fuzzy, c-format
+-#| msgid "Copyright %s 2014-2015 Free Software Foundation, Inc.\n"
++#, c-format
+ msgid "Copyright %s 2014-2016 Free Software Foundation, Inc.\n"
+-msgstr "Ophavsret %s 2014-2015 Free Software Foundation, Inc.\n"
++msgstr "Ophavsret %s 2014-2016 Free Software Foundation, Inc.\n"
+
+ #: gcov-tool.c:529 gcov.c:506
+-#, fuzzy, c-format
++#, c-format
+ msgid ""
+ "This is free software; see the source for copying conditions.\n"
+ "There is NO warranty; not even for MERCHANTABILITY or \n"
+@@ -969,8 +889,10 @@
+ "FITNESS FOR A PARTICULAR PURPOSE.\n"
+ "\n"
+ msgstr ""
+-"Dette er et frit program; se kildekoden for kopieringsbetingelser. Der er\n"
+-"INGEN garanti; ikke engang for SALGBARHED eller BRUGBARHED TIL NOGET FORMÅL.\n"
++"Dette er et frit program; se kildekoden for kopieringsbetingelser.\n"
++"Der er INGEN garanti; ikke engang for SALGBARHED eller\n"
++"BRUGBARHED TIL NOGET FORMÅL.\n"
++"\n"
+
+ #: gcov.c:472
+ #, c-format
+@@ -1015,10 +937,9 @@
+ " for procenter\n"
+
+ #: gcov.c:479
+-#, fuzzy, c-format
+-#| msgid " --help Display this information\n"
++#, c-format
+ msgid " -d, --display-progress Display progress information\n"
+-msgstr " --help Vis disse oplysninger\n"
++msgstr " -d, --display-progress Vis statusinformation\n"
+
+ #: gcov.c:480
+ #, c-format
+@@ -1028,7 +949,7 @@
+ #: gcov.c:481
+ #, c-format
+ msgid " -i, --intermediate-format Output .gcov file in intermediate text format\n"
+-msgstr ""
++msgstr " -i, --intermediate-format Vis .gcov-filen i melleliggende tekstformat\n"
+
+ #: gcov.c:482
+ #, c-format
+@@ -1035,7 +956,9 @@
+ msgid ""
+ " -l, --long-file-names Use long output file names for included\n"
+ " source files\n"
+-msgstr " -l, --long-file-names Brug lange filnavne til inkluderede kildefiler\n"
++msgstr ""
++" -l, --long-file-names Brug lange filnavne til inkluderede\n"
++" kildefiler\n"
+
+ #: gcov.c:484
+ #, c-format
+@@ -1058,10 +981,9 @@
+ msgstr " -p, --preserve-paths Bevar alle stinavnskomponenter\n"
+
+ #: gcov.c:488
+-#, fuzzy, c-format
+-#| msgid " -a, --all-blocks Show information for every basic block\n"
++#, c-format
+ msgid " -r, --relative-only Only show data for relative sources\n"
+-msgstr " -a, --all-blocks Vis oplysninger for alle basisblokke\n"
++msgstr " -r, --relative-only Vis kun data for relative kilder\n"
+
+ #: gcov.c:489
+ #, c-format
+@@ -1119,10 +1041,9 @@
+ msgstr "%s: kildefil er nyere end notefil »%s«\n"
+
+ #: gcov.c:1144
+-#, fuzzy, c-format
+-#| msgid "(the message is only displayed one per source file)\n"
++#, c-format
+ msgid "(the message is displayed only once per source file)\n"
+-msgstr "(beskeden er kun vist en per kildefil)\n"
++msgstr "(beskeden er kun vist en gang per kildefil)\n"
+
+ #: gcov.c:1169
+ #, c-format
+@@ -1180,19 +1101,19 @@
+ msgstr "%s:ukendt funktion »%u«\n"
+
+ #: gcov.c:1466
+-#, fuzzy, c-format
++#, c-format
+ msgid "%s:profile mismatch for '%s'\n"
+-msgstr "%s før '%s'"
++msgstr "%s:forskelige profiler for »%s«\n"
+
+ #: gcov.c:1485
+-#, fuzzy, c-format
++#, c-format
+ msgid "%s:overflowed\n"
+-msgstr "%s: overløbsintervalfejl"
++msgstr "%s: overløb\n"
+
+ #: gcov.c:1531
+ #, c-format
+ msgid "%s:'%s' lacks entry and/or exit blocks\n"
+-msgstr ""
++msgstr "%s:»%s« mangler indgangs- og/eller afslutningsblokke\n"
+
+ #: gcov.c:1536
+ #, c-format
+@@ -1205,9 +1126,9 @@
+ msgstr ""
+
+ #: gcov.c:1752
+-#, fuzzy, c-format
++#, c-format
+ msgid "%s:graph is unsolvable for '%s'\n"
+-msgstr "%s før '%s'"
++msgstr "%s:graf kan ikke løses for »%s«\n"
+
+ #: gcov.c:1860
+ #, c-format
+@@ -1297,7 +1218,7 @@
msgid "GCSE disabled"
msgstr "GCSE deaktiveret"
@@ -274462,9 +281964,104 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr "funktion returnerer adressen på en lokal variabel"
-@@ -1407,11 +1407,11 @@
+@@ -1310,17 +1231,17 @@
+ #: incpath.c:72
+ #, c-format
+ msgid "ignoring duplicate directory \"%s\"\n"
+-msgstr "ignorerer mere end én angivelse af kataloget \"%s\"\n"
++msgstr "ignorerer mere end en angivelse af mappen »%s«\n"
+
+ #: incpath.c:75
+ #, c-format
+ msgid " as it is a non-system directory that duplicates a system directory\n"
+-msgstr " da det er et ikke-systemkatalog som dublerer et systemkatalog\n"
++msgstr " da det ikke er en systemmappe, som dublerer en systemmappe\n"
+
+ #: incpath.c:79
+ #, c-format
+ msgid "ignoring nonexistent directory \"%s\"\n"
+-msgstr "ignorerer det ikke-eksisterende katalog \"%s\"\n"
++msgstr "ignorerer den ikkeeksisterende mappe »%s«\n"
+
+ #: incpath.c:373
+ #, c-format
+@@ -1348,16 +1269,12 @@
+ msgstr "«"
+
+ #: ipa-pure-const.c:187
+-#, fuzzy
+-#| msgid "function might be possible candidate for attribute `noreturn'"
+ msgid "function might be candidate for attribute %<%s%>"
+-msgstr "funktion er muligvis en kandidat til egenskaben 'noreturn'"
++msgstr "funktion er muligvis en kandidat til egenskaben %<%s%>"
+
+ #: ipa-pure-const.c:188
+-#, fuzzy
+-#| msgid "function might be possible candidate for attribute `noreturn'"
+ msgid "function might be candidate for attribute %<%s%> if it is known to return normally"
+-msgstr "funktion er muligvis en kandidat til egenskaben 'noreturn'"
++msgstr "funktion er muligvis en kandidat til egenskaben %<%s%>, hvis den vides at returnere normalt"
+
+ #: langhooks.c:373
+ msgid "At top level:"
+@@ -1364,162 +1281,144 @@
+ msgstr "Ved øverste niveau:"
+
+ #: langhooks.c:393 cp/error.c:3299
+-#, fuzzy, c-format
+-#| msgid "In member function `%s':"
++#, c-format
+ msgid "In member function %qs"
+-msgstr "I medlemsfunktionen '%s':"
++msgstr "I medlemsfunktionen %qs"
+
+ #: langhooks.c:397 cp/error.c:3302
+-#, fuzzy, c-format
+-#| msgid "In function `%s':"
++#, c-format
+ msgid "In function %qs"
+-msgstr "I funktionen '%s':"
++msgstr "I funktionen %qs"
+
+ #: langhooks.c:448 cp/error.c:3252
+ msgid " inlined from %qs at %r%s:%d:%d%R"
+-msgstr ""
++msgstr " indlejret fra %qs ved %r%s:%d:%d%R"
+
+ #: langhooks.c:453 cp/error.c:3257
+-#, fuzzy
+-#| msgid "In file included from %s:%d"
+ msgid " inlined from %qs at %r%s:%d%R"
+-msgstr "I filen inkluderet af %s:%d"
++msgstr " indlejret fra %qs ved %r%s:%d%R"
+
+ #: langhooks.c:459 cp/error.c:3263
+-#, fuzzy, c-format
+-#| msgid "In file included from %s:%u"
++#, c-format
+ msgid " inlined from %qs"
+-msgstr "I filen inkluderet af %s:%u"
++msgstr " indlejret fra %qs"
+
+ #: loop-iv.c:3041 tree-ssa-loop-niter.c:2319
+ msgid "assuming that the loop is not infinite"
+-msgstr ""
++msgstr "antager at loopet ikke er uendeligt"
+
+ #: loop-iv.c:3042 tree-ssa-loop-niter.c:2320
+ msgid "cannot optimize possibly infinite loops"
+-msgstr ""
++msgstr "kan ikke opitmere eventuelle uendelige loop"
+
+ #: loop-iv.c:3050 tree-ssa-loop-niter.c:2324
+ msgid "assuming that the loop counter does not overflow"
+-msgstr ""
++msgstr "antager at looptælleren ikke løber over"
+
+ #: loop-iv.c:3051 tree-ssa-loop-niter.c:2325
msgid "cannot optimize loop, the loop counter may overflow"
- msgstr ""
+-msgstr ""
++msgstr "kan ikke optimere loop, looptælleren kan løbe over"
-#: lra-assigns.c:1417 reload1.c:2111
+#: lra-assigns.c:1417 reload1.c:2089
@@ -274476,56 +282073,73 @@ Index: gcc/po/da.po
msgid "unable to generate reloads for:"
msgstr "kunne ikke generere genindlæsninger for:"
-@@ -1426,100 +1426,100 @@
+ #. What to print when a switch has no documentation.
+ #: opts.c:184
+-#, fuzzy
+-#| msgid "This switch lacks documentation"
+ msgid "This option lacks documentation."
+-msgstr "Denne switch mangler dokumentation"
++msgstr "Dette tilvalg mangler dokumentation."
+
+ #: opts.c:185
msgid "Uses of this option are diagnosed."
- msgstr ""
+-msgstr ""
++msgstr "Brug af dette tilvalg diagnosticeres."
-#: opts.c:1056
+#: opts.c:1061
#, c-format
msgid "default %d minimum %d maximum %d"
- msgstr ""
+-msgstr ""
++msgstr "standard %d minimum %d maksimum %d"
-#: opts.c:1123
+#: opts.c:1128
#, c-format
msgid "Same as %s. Use the latter option instead."
- msgstr ""
+-msgstr ""
++msgstr "Samme som %s. Brug det sidste tilvalg i stedet."
-#: opts.c:1131
+#: opts.c:1136
#, c-format
msgid "%s Same as %s."
- msgstr ""
+-msgstr ""
++msgstr "%s Samme som %s."
-#: opts.c:1202
+#: opts.c:1207
msgid "[default]"
- msgstr ""
+-msgstr ""
++msgstr "[standard]"
-#: opts.c:1213
+#: opts.c:1218
msgid "[enabled]"
- msgstr ""
+-msgstr ""
++msgstr "[aktiveret]"
-#: opts.c:1213
+-#, fuzzy
+-#| msgid "GCSE disabled"
+#: opts.c:1218
- #, fuzzy
- #| msgid "GCSE disabled"
msgid "[disabled]"
- msgstr "GCSE deaktiveret"
+-msgstr "GCSE deaktiveret"
++msgstr "[deaktiveret]"
-#: opts.c:1232
+#: opts.c:1237
#, c-format
msgid " No options with the desired characteristics were found\n"
- msgstr ""
+-msgstr ""
++msgstr " Ingen tilvalg med de ønskede karakteristika blev fundet\n"
-#: opts.c:1241
+#: opts.c:1246
#, c-format
msgid " None found. Use --help=%s to show *all* the options supported by the %s front-end.\n"
- msgstr ""
+-msgstr ""
++msgstr " Ingen fundet. Brug --help=%s for at vise *alle* tilvalgene understøttet af brugerfladen %s.\n"
-#: opts.c:1247
+#: opts.c:1252
@@ -274544,24 +282158,27 @@ Index: gcc/po/da.po
msgstr "De følgende tilvalg kontrollerer advarselsbeskeder for oversætteren"
-#: opts.c:1338
+-#, fuzzy
+#: opts.c:1343
- #, fuzzy
msgid "The following options control optimizations"
- msgstr "Udfør løkkeoptimeringerne"
+-msgstr "Udfør løkkeoptimeringerne"
++msgstr "De følgende tilvalg kontrollerer optimeringer"
-#: opts.c:1341 opts.c:1380
+-#, fuzzy
+-#| msgid "The following options are language-independent:\n"
+#: opts.c:1346 opts.c:1385
- #, fuzzy
- #| msgid "The following options are language-independent:\n"
msgid "The following options are language-independent"
- msgstr "De følgende tilvalg er sproguafhængige:\n"
+-msgstr "De følgende tilvalg er sproguafhængige:\n"
++msgstr "De følgende tilvalg er sproguafhængige"
-#: opts.c:1344
+-#, fuzzy
+-#| msgid "The --param option recognizes the following as parameters:\n"
+#: opts.c:1349
- #, fuzzy
- #| msgid "The --param option recognizes the following as parameters:\n"
msgid "The --param option recognizes the following as parameters"
- msgstr "Tilvalget --param genkender følgende som parametre:\n"
+-msgstr "Tilvalget --param genkender følgende som parametre:\n"
++msgstr "Tilvalget --param genkender følgende som parametre"
-#: opts.c:1350
+#: opts.c:1355
@@ -274579,26 +282196,32 @@ Index: gcc/po/da.po
msgstr "De følgende tilvalg er ikke dokumenterede"
-#: opts.c:1365
+-#, fuzzy
+-#| msgid "The following options are language-independent:\n"
+#: opts.c:1370
- #, fuzzy
- #| msgid "The following options are language-independent:\n"
msgid "The following options take separate arguments"
- msgstr "De følgende tilvalg er sproguafhængige:\n"
+-msgstr "De følgende tilvalg er sproguafhængige:\n"
++msgstr "De følgende tilvalg anvender forskellige parametre"
-#: opts.c:1367
+-#, fuzzy
+-#| msgid "The following options are language-independent:\n"
+#: opts.c:1372
- #, fuzzy
- #| msgid "The following options are language-independent:\n"
msgid "The following options take joined arguments"
- msgstr "De følgende tilvalg er sproguafhængige:\n"
+-msgstr "De følgende tilvalg er sproguafhængige:\n"
++msgstr "De følgende tilvalg anvender fælles parametre"
-#: opts.c:1378
+#: opts.c:1383
msgid "The following options are language-related"
msgstr "De følgende tilvalg er sprogrelaterede"
-@@ -1537,16 +1537,16 @@
- msgstr ""
+@@ -1534,19 +1433,19 @@
+ #: plugin.c:828
+ #, c-format
+ msgid "*** WARNING *** there are active plugins, do not report this as a bug unless you can reproduce it without enabling any plugins.\n"
+-msgstr ""
++msgstr "*** ADVARSEL *** der er aktive udvidelsesmoduler, rapporter ikke dette som en fejl med mindre, at du kan genskabe det uden at udvidelsesmoduler er aktiveret.\n"
#. It's the compiler's fault.
-#: reload1.c:6135
@@ -274617,7 +282240,7 @@ Index: gcc/po/da.po
msgid "failure trying to reload:"
msgstr "kunne ikke genindlæse:"
-@@ -1558,16 +1558,16 @@
+@@ -1558,16 +1457,16 @@
msgid "insn does not satisfy its constraints:"
msgstr "instruktion tilfredsstiller ikke sine begrænsninger:"
@@ -274637,7 +282260,55 @@ Index: gcc/po/da.po
msgid "created and used with different settings of -fpie"
msgstr "oprettet og brugt med forskellige indstillinger for -fpie"
-@@ -1640,7 +1640,7 @@
+@@ -1593,39 +1492,33 @@
+ msgstr "collect: kæder sammen igen\n"
+
+ #: toplev.c:331
+-#, fuzzy, c-format
+-#| msgid "internal error"
++#, c-format
+ msgid "unrecoverable error"
+-msgstr "intern fejl"
++msgstr "uoprettelig fejl"
+
+ #: toplev.c:640
+-#, fuzzy, c-format
+-#| msgid ""
+-#| "%s%s%s version %s (%s)\n"
+-#| "%s\tcompiled by GNU C version %s.\n"
+-#| "%s%s%s version %s (%s) compiled by CC.\n"
++#, c-format
+ msgid ""
+ "%s%s%s %sversion %s (%s)\n"
+ "%s\tcompiled by GNU C version %s, "
+ msgstr ""
+-"%s%s%s version %s (%s)\n"
+-"%s\toversat af GNU C version %s.\n"
+-"%s%s%s version %s (%s) oversat af CC.\n"
++"%s%s%s %sversion %s (%s)\n"
++"%s\toversat af GNU C version %s, "
+
+ #: toplev.c:642
+ #, c-format
+ msgid "%s%s%s %sversion %s (%s) compiled by CC, "
+-msgstr ""
++msgstr "%s%s%s %sversion %s (%s) oversat af CC, "
+
+ #: toplev.c:646
+ #, c-format
+ msgid "GMP version %s, MPFR version %s, MPC version %s, isl version %s\n"
+-msgstr ""
++msgstr "GMP-version %s, MPFR-version %s, MPC-version %s, isl-version %s\n"
+
+ #: toplev.c:648
+ #, c-format
+ msgid "%s%swarning: %s header version %s differs from library version %s.\n"
+-msgstr ""
++msgstr "%s%sadvarsel: %s teksthovedversion %s svarer ikke til biblioteksversion %s.\n"
+
+ #: toplev.c:650
+ #, c-format
+@@ -1640,7 +1533,7 @@
msgid "options enabled: "
msgstr "tilvalg slået til: "
@@ -274646,7 +282317,114 @@ Index: gcc/po/da.po
#: cp/error.c:992 c-family/c-pretty-print.c:408
#, gcc-internal-format
msgid "<anonymous>"
-@@ -2735,52 +2735,62 @@
+@@ -1647,63 +1540,56 @@
+ msgstr "<anonym>"
+
+ #: cif-code.def:39
+-#, fuzzy
+ msgid "function not considered for inlining"
+-msgstr "funktion kan ikke indbygges"
++msgstr "funktion overvejes ikke for indbygning"
+
+ #: cif-code.def:43
+ msgid "caller is not optimized"
+-msgstr ""
++msgstr "kalder er ikke optimeret"
+
+ #: cif-code.def:47
+-#, fuzzy
+ msgid "function body not available"
+-msgstr "funktion kan ikke indbygges"
++msgstr "funktionskrop er ikke tilgængelig"
+
+ #: cif-code.def:51
+-#, fuzzy
+ msgid "redefined extern inline functions are not considered for inlining"
+-msgstr "Advar når en inline funktion ikke kan indbygges"
++msgstr "omdefinerede eksterne indbyggede funktioner overvejes ikke for indlejring"
+
+ #: cif-code.def:56
+-#, fuzzy
+ msgid "function not inlinable"
+ msgstr "funktion kan ikke indbygges"
+
+ #: cif-code.def:60
+-#, fuzzy
+-#| msgid "function cannot be inline"
+ msgid "function body can be overwritten at link time"
+-msgstr "funktion kan ikke indbygges"
++msgstr "funktionskrop kan ikke overskrives på sammenkædningstidspunktet"
+
+ #: cif-code.def:64
+-#, fuzzy
+ msgid "function not inline candidate"
+-msgstr "funktion kan ikke indbygges"
++msgstr "funktion er ikke en indbygningskandidat"
+
+ #: cif-code.def:68
+ msgid "--param large-function-growth limit reached"
+-msgstr ""
++msgstr "--param large-function-growth grænse nået"
+
+ #: cif-code.def:70
+ msgid "--param large-stack-frame-growth limit reached"
+-msgstr ""
++msgstr "--param large-stack-frame-growth grænse nået"
+
+ #: cif-code.def:72
+ msgid "--param max-inline-insns-single limit reached"
+-msgstr ""
++msgstr "--param max-inline-insns-single grænse nået"
+
+ #: cif-code.def:74
+ msgid "--param max-inline-insns-auto limit reached"
+-msgstr ""
++msgstr "--param max-inline-insns-auto grænse nået"
+
+ #: cif-code.def:76
+ msgid "--param inline-unit-growth limit reached"
+-msgstr ""
++msgstr "--param inline-unit-growth grænse nået"
+
+ #: cif-code.def:80
+ msgid "recursive inlining"
+-msgstr ""
++msgstr "rekursiv indbygning"
+
+ #: cif-code.def:84
+ msgid "call is unlikely and code size would grow"
+@@ -1760,7 +1646,7 @@
+
+ #: cif-code.def:125
+ msgid "function attribute mismatch"
+-msgstr ""
++msgstr "forskellige funktionsattributter"
+
+ #: cif-code.def:129
+ #, fuzzy
+@@ -1770,7 +1656,7 @@
+
+ #: cif-code.def:133
+ msgid "unreachable"
+-msgstr ""
++msgstr "kan ikke nås"
+
+ #. The remainder are real diagnostic types.
+ #: diagnostic.def:33
+@@ -1830,10 +1716,9 @@
+ msgstr ""
+
+ #: params.def:71
+-#, fuzzy, no-c-format
+-#| msgid "The maximum number of instructions in a single function eligible for inlining"
++#, no-c-format
+ msgid "The maximum number of instructions in a single function eligible for inlining."
+-msgstr "Det maksimale antal instruktioner i en enkelt funktion der må indbygges"
++msgstr "Det maksimale antal instruktioner i en enkelt funktion der må indbygges."
+
+ #: params.def:83
+ #, fuzzy, no-c-format
+@@ -2735,52 +2620,62 @@
#: params.def:1155
#, no-c-format
@@ -274717,7 +282495,7 @@ Index: gcc/po/da.po
#: c-family/c-format.c:417
msgid "format"
msgstr ""
-@@ -3143,54 +3153,54 @@
+@@ -3143,54 +3038,54 @@
msgid "<command-line>"
msgstr "<kommandolinje>"
@@ -274786,7 +282564,7 @@ Index: gcc/po/da.po
#, c-format
msgid "'%%&' used without any local dynamic TLS references"
msgstr ""
-@@ -3206,18 +3216,18 @@
+@@ -3206,18 +3101,18 @@
msgstr "ugyldig %%r-værdi"
#: config/alpha/alpha.c:5200 config/ia64/ia64.c:5436
@@ -274808,7 +282586,7 @@ Index: gcc/po/da.po
#, c-format
msgid "invalid %%P value"
msgstr "ugyldig %%P-værdi"
-@@ -3248,7 +3258,7 @@
+@@ -3248,7 +3143,7 @@
msgstr "ugyldig %%U-værdi"
#: config/alpha/alpha.c:5300 config/alpha/alpha.c:5311
@@ -274817,7 +282595,7 @@ Index: gcc/po/da.po
#, c-format
msgid "invalid %%s value"
msgstr "ugyldig %%s-værdi"
-@@ -3258,7 +3268,7 @@
+@@ -3258,7 +3153,7 @@
msgid "invalid %%C value"
msgstr "ugyldig %%C-værdi"
@@ -274826,7 +282604,7 @@ Index: gcc/po/da.po
#, c-format
msgid "invalid %%E value"
msgstr "ugyldig %%E-værdi"
-@@ -3269,7 +3279,7 @@
+@@ -3269,7 +3164,7 @@
msgstr "ukendt relokaliserings-unspec"
#: config/alpha/alpha.c:5393 config/cr16/cr16.c:1531
@@ -274835,7 +282613,7 @@ Index: gcc/po/da.po
#, c-format
msgid "invalid %%xn code"
msgstr "ugyldig %%xn-kode"
-@@ -3280,45 +3290,45 @@
+@@ -3280,45 +3175,45 @@
msgid "invalid operand address"
msgstr "ugyldig adresse"
@@ -274889,7 +282667,7 @@ Index: gcc/po/da.po
#, fuzzy, c-format
#| msgid "invalid operand to %%R code"
msgid "invalid operand to %%O code"
-@@ -3326,44 +3336,44 @@
+@@ -3326,44 +3221,44 @@
#. Unknown flag.
#. Undocumented flag.
@@ -274948,7 +282726,7 @@ Index: gcc/po/da.po
#: 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
-@@ -3372,7 +3382,7 @@
+@@ -3372,7 +3267,7 @@
msgid "invalid operand for code '%c'"
msgstr "ugyldig operandkode '%c'"
@@ -274957,7 +282735,7 @@ Index: gcc/po/da.po
#, fuzzy, c-format
#| msgid "unconditional %2d never executed\n"
msgid "instruction never executed"
-@@ -3379,95 +3389,95 @@
+@@ -3379,95 +3274,95 @@
msgstr "ubetinget %2d aldrig udført\n"
#. Former Maverick support, removed after GCC-4.7.
@@ -275076,7 +282854,7 @@ Index: gcc/po/da.po
#, fuzzy
#| msgid "unsupported version"
msgid "unsupported fixed-point conversion"
-@@ -3501,9 +3511,9 @@
+@@ -3501,9 +3396,9 @@
msgstr "ugyldige begrænsninger for operand"
#: config/cris/cris.c:612 config/ft32/ft32.c:104 config/moxie/moxie.c:103
@@ -275089,7 +282867,7 @@ Index: gcc/po/da.po
#: 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
-@@ -3763,71 +3773,71 @@
+@@ -3763,71 +3658,71 @@
msgid "bad output_condmove_single operand"
msgstr "Ugyldig output_condmove_single-operand"
@@ -275173,7 +282951,7 @@ Index: gcc/po/da.po
msgid "unknown insn mode"
msgstr "ukendt instruktionstilstand"
-@@ -3880,7 +3890,7 @@
+@@ -3880,7 +3775,7 @@
msgid "invalid %%P operand"
msgstr "ugyldig %%P-operand"
@@ -275182,7 +282960,7 @@ Index: gcc/po/da.po
#, c-format
msgid "invalid %%p value"
msgstr "ugyldig %%p-værdi"
-@@ -3944,7 +3954,7 @@
+@@ -3944,7 +3839,7 @@
msgstr "postfiks forøgelsesadresse er ikke et register"
#: config/m32r/m32r.c:2328 config/m32r/m32r.c:2343
@@ -275191,7 +282969,7 @@ Index: gcc/po/da.po
msgid "bad address"
msgstr "ugyldig adresse"
-@@ -4052,13 +4062,13 @@
+@@ -4052,13 +3947,13 @@
msgid "MMIX Internal: This is not a constant:"
msgstr "MMIX-intern: Dette er ikke en konstant:"
@@ -275207,7 +282985,7 @@ Index: gcc/po/da.po
#, fuzzy, c-format
#| msgid "invalid use of `restrict'"
msgid "invalid zero extract"
-@@ -4079,304 +4089,304 @@
+@@ -4079,304 +3974,304 @@
msgid "Try running '%s' in the shell to raise its limit.\n"
msgstr ""
@@ -275573,7 +283351,7 @@ Index: gcc/po/da.po
msgid "binary operator does not support mixing vector bool with floating point vector operands"
msgstr ""
-@@ -4392,61 +4402,61 @@
+@@ -4392,61 +4287,61 @@
msgid "invalid operand to %%S"
msgstr "ugyldig operand til %%R-koden"
@@ -275646,7 +283424,7 @@ Index: gcc/po/da.po
#, fuzzy, c-format
#| msgid "floating point constant not a valid immediate operand"
msgid "floating-point constant not a valid immediate operand"
-@@ -4605,25 +4615,25 @@
+@@ -4605,25 +4500,25 @@
msgid "illegal operand detected"
msgstr "ugyldigt operandændringsbogstav"
@@ -275677,7 +283455,7 @@ Index: gcc/po/da.po
msgid "illegal operand address (4)"
msgstr ""
-@@ -4669,13 +4679,13 @@
+@@ -4669,13 +4564,13 @@
msgid "({anonymous})"
msgstr "((anonym))"
@@ -275698,7 +283476,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "';' expected"
msgid "expected %<;%>"
-@@ -4682,180 +4692,180 @@
+@@ -4682,180 +4577,180 @@
msgstr "';' forventet"
#. Look for the two `(' tokens.
@@ -275951,7 +283729,7 @@ Index: gcc/po/da.po
#, fuzzy
msgid "candidate 2:"
msgstr "candidate%s: %+#D"
-@@ -5107,12 +5117,12 @@
+@@ -5107,12 +5002,12 @@
msgid "%r%s:%d:%R in constexpr expansion of %qs"
msgstr ""
@@ -275966,7 +283744,7 @@ Index: gcc/po/da.po
#, fuzzy
msgid "candidate is:"
msgid_plural "candidates are:"
-@@ -5119,106 +5129,106 @@
+@@ -5119,106 +5014,106 @@
msgstr[0] "candidate%s: %+#D"
msgstr[1] "candidate%s: %+#D"
@@ -276093,7 +283871,7 @@ Index: gcc/po/da.po
msgid "no post-decrement operator for type"
msgstr ""
-@@ -5404,13 +5414,13 @@
+@@ -5404,13 +5299,13 @@
msgid "%s tag"
msgstr ""
@@ -276109,7 +283887,7 @@ Index: gcc/po/da.po
#, c-format
msgid "%s tag with INQUIRE"
msgstr ""
-@@ -5546,11 +5556,11 @@
+@@ -5546,11 +5441,11 @@
msgid "implied END DO"
msgstr ""
@@ -276123,7 +283901,7 @@ Index: gcc/po/da.po
#, fuzzy
#| msgid "assignment"
msgid "pointer assignment"
-@@ -5773,19 +5783,19 @@
+@@ -5773,19 +5668,19 @@
msgid "ALLOCATE object"
msgstr ""
@@ -276147,7 +283925,7 @@ Index: gcc/po/da.po
msgid "ACQUIRED_LOCK variable"
msgstr ""
-@@ -5794,26 +5804,26 @@
+@@ -5794,26 +5689,26 @@
msgid "Different CHARACTER lengths (%ld/%ld) in array constructor"
msgstr ""
@@ -276179,7 +283957,7 @@ Index: gcc/po/da.po
msgid "Assignment of scalar to unallocated array"
msgstr ""
-@@ -5847,18 +5857,18 @@
+@@ -5847,18 +5742,18 @@
msgid "Assigned label is not a target label"
msgstr ""
@@ -276201,7 +283979,20 @@ Index: gcc/po/da.po
msgid "DO step value is zero"
msgstr ""
-@@ -6167,22 +6177,10 @@
+@@ -6039,10 +5934,9 @@
+ msgstr ""
+
+ #: java/jcf-dump.c:1211
+-#, fuzzy, c-format
+-#| msgid " -B <directory> Add <directory> to the compiler's search paths\n"
++#, c-format
+ msgid " -IDIR Append directory to class path\n"
+-msgstr " -B <katalog> Tilføj katalog til oversætterens søgestier\n"
++msgstr " -IDIR Tilføj mappe til klassesti\n"
+
+ #: java/jcf-dump.c:1212
+ #, c-format
+@@ -6167,22 +6061,10 @@
msgid "-E or -x required when input is from standard input"
msgstr "-E påkrævet når inddata kommer fra standardind"
@@ -276227,7 +284018,7 @@ Index: gcc/po/da.po
#: config/sol2.h:181
#, fuzzy
msgid "-fvtable-verify is not supported in this configuration"
-@@ -6230,11 +6228,11 @@
+@@ -6230,11 +6112,11 @@
msgid "-private_bundle not allowed with -dynamiclib"
msgstr "-private_bundle er ikke tilladt med -dynamiclib"
@@ -276244,7 +284035,7 @@ Index: gcc/po/da.po
#: config/s390/tpf.h:110
#, fuzzy
-@@ -6242,20 +6240,14 @@
+@@ -6242,20 +6124,14 @@
msgid "static is not supported on TPF-OS"
msgstr "-traditional understøttes ikke i C++"
@@ -276267,7 +284058,7 @@ Index: gcc/po/da.po
msgid "consider using '-pg' instead of '-p' with gprof(1)"
msgstr ""
-@@ -6267,6 +6259,32 @@
+@@ -6267,6 +6143,32 @@
msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead"
msgstr ""
@@ -276300,7 +284091,7 @@ Index: gcc/po/da.po
#: config/pa/pa-hpux10.h:102 config/pa/pa-hpux10.h:105
#: config/pa/pa-hpux10.h:113 config/pa/pa-hpux10.h:116
#: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137
-@@ -6283,14 +6301,11 @@
+@@ -6283,14 +6185,11 @@
msgid " profiling support are only provided in archive format"
msgstr ""
@@ -276319,7 +284110,7 @@ Index: gcc/po/da.po
#: config/cris/cris.h:184
#, fuzzy
-@@ -6302,43 +6317,24 @@
+@@ -6302,43 +6201,24 @@
msgid "may not use both -EB and -EL"
msgstr "kan ikke bruge både -EB og -EL"
@@ -276371,7 +284162,7 @@ Index: gcc/po/da.po
#: config/avr/specs.h:68
#, fuzzy
#| msgid "-pipe is not supported"
-@@ -6351,10 +6347,6 @@
+@@ -6351,10 +6231,6 @@
msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together"
msgstr "-msoft-float og -mhard_float kan ikke bruges på samme tid"
@@ -276382,7 +284173,7 @@ Index: gcc/po/da.po
#: config/vax/netbsd-elf.h:51
#, fuzzy
#| msgid "The -shared option is not currently supported for VAX ELF."
-@@ -6361,6 +6353,16 @@
+@@ -6361,6 +6237,16 @@
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "Tilvalget -shared understøttes i øjeblikket ikke for VAX ELF."
@@ -276399,7 +284190,7 @@ Index: gcc/po/da.po
#: config/vax/vax.h:46 config/vax/vax.h:47
#, fuzzy
#| msgid "profiling not supported with -mg\n"
-@@ -6367,14 +6369,10 @@
+@@ -6367,14 +6253,10 @@
msgid "profiling not supported with -mg"
msgstr "profilgenerering understøttes ikke med -mg\n"
@@ -276416,7 +284207,7 @@ Index: gcc/po/da.po
#: config/lynx.h:69
msgid "cannot use mthreads and mlegacy-threads together"
msgstr ""
-@@ -6383,6 +6381,20 @@
+@@ -6383,6 +6265,20 @@
msgid "cannot use mshared and static together"
msgstr ""
@@ -276437,7 +284228,7 @@ Index: gcc/po/da.po
#: config/arm/freebsd.h:49
msgid "consider using `-pg' instead of `-p' with gprof (1) "
msgstr ""
-@@ -6405,6 +6417,10 @@
+@@ -6405,6 +6301,10 @@
msgid "-femit-class-file should used along with -fsyntax-only"
msgstr "-femit-class-file skal bruges sammen med -fsyntax-only"
@@ -276448,7 +284239,7 @@ Index: gcc/po/da.po
#: fortran/lang.opt:146
msgid "-J<directory>\tPut MODULE files in 'directory'."
msgstr ""
-@@ -6620,10 +6636,10 @@
+@@ -6620,10 +6520,10 @@
msgid "Allow dollar signs in entity names."
msgstr ""
@@ -276463,7 +284254,7 @@ Index: gcc/po/da.po
msgid "Does nothing. Preserved for backward compatibility."
msgstr ""
-@@ -6763,129 +6779,129 @@
+@@ -6763,129 +6663,129 @@
msgid "Set default accessibility of module entities to PRIVATE."
msgstr ""
@@ -276626,7 +284417,7 @@ Index: gcc/po/da.po
msgid "Accept extensions to support legacy code."
msgstr ""
-@@ -6902,15 +6918,15 @@
+@@ -6902,15 +6802,15 @@
#: 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
@@ -276646,7 +284437,7 @@ Index: gcc/po/da.po
#, fuzzy, c-format
msgid "missing path after %qs"
msgstr "et mål mangler efter '-%s'"
-@@ -7267,1264 +7283,1268 @@
+@@ -7267,1264 +7167,1268 @@
#: c-family/c.opt:487
#, fuzzy
@@ -278190,7 +285981,7 @@ Index: gcc/po/da.po
msgid "Do not predefine system-specific and GCC-specific macros."
msgstr ""
-@@ -9370,7 +9390,7 @@
+@@ -9370,7 +9274,7 @@
msgstr ""
#: config/aarch64/aarch64.opt:154
@@ -278199,7 +285990,7 @@ Index: gcc/po/da.po
msgstr ""
#: config/linux.opt:24
-@@ -9823,6 +9843,12 @@
+@@ -9823,6 +9727,12 @@
msgid "Use LRA instead of reload."
msgstr "Benyt ROM i stedet for RAM"
@@ -278212,7 +286003,7 @@ Index: gcc/po/da.po
#: config/h8300/h8300.opt:23
#, fuzzy
#| msgid "Generate H8S code"
-@@ -11208,10 +11234,8 @@
+@@ -11208,10 +11118,8 @@
msgstr ""
#: config/nvptx/nvptx.opt:34
@@ -278225,7 +286016,7 @@ Index: gcc/po/da.po
#: config/vxworks.opt:36
#, fuzzy
-@@ -11601,11 +11625,11 @@
+@@ -11601,11 +11509,11 @@
msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):"
msgstr ""
@@ -278239,7 +286030,7 @@ Index: gcc/po/da.po
msgid "Known ARM FPUs (for use with the -mfpu= option):"
msgstr ""
-@@ -15876,6 +15900,12 @@
+@@ -15876,6 +15784,12 @@
msgid "Enable double load/store instructions for ARC HS."
msgstr "Aktiver foranstaillede zero-instruktioner"
@@ -278252,7 +286043,7 @@ Index: gcc/po/da.po
#: java/lang.opt:122
#, fuzzy
#| msgid "Warn if deprecated empty statements are found"
-@@ -16189,284 +16219,288 @@
+@@ -16189,284 +16103,288 @@
msgstr " -Wlarger-than-<tal> Advar hvis et objekt er større end <tal> byte\n"
#: common.opt:621
@@ -278595,7 +286386,7 @@ Index: gcc/po/da.po
#, fuzzy
#| msgid "Generate code to check bounds before indexing arrays"
msgid "Generate code to check bounds before indexing arrays."
-@@ -16473,99 +16507,99 @@
+@@ -16473,99 +16391,99 @@
msgstr "Generér kode til at kontrollere grænserne før tabeller indekseres"
# RETMIG: rigtig?
@@ -278714,7 +286505,7 @@ Index: gcc/po/da.po
#, fuzzy
#| msgid "Perform cross-jumping optimization"
msgid "Perform cross-jumping optimization."
-@@ -16572,1769 +16606,1773 @@
+@@ -16572,1769 +16490,1773 @@
msgstr "Udfør krydsspringsoptimering"
# RETMIG: hvad er CSE?
@@ -280840,7 +288631,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "value computed is not used"
msgstr "beregnet værdi benyttes ikke"
-@@ -18362,8 +18400,8 @@
+@@ -18362,8 +18284,8 @@
msgid "expected boolean type"
msgstr "forventet boolesk type"
@@ -280851,7 +288642,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "expected integer"
msgstr "uventet operand"
-@@ -18732,92 +18770,92 @@
+@@ -18732,92 +18654,92 @@
msgid "cannot use type %s as type %s"
msgstr "kan ikke konvertere typen '%T' til typen '%T'"
@@ -280962,7 +288753,28 @@ Index: gcc/po/da.po
#: objc/objc-act.c:6925 objc/objc-act.c:8114 objc/objc-act.c:8165
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute directive ignored"
-@@ -18945,7 +18983,7 @@
+@@ -18900,16 +18822,14 @@
+ msgstr ""
+
+ #: auto-profile.c:912
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "cannot find file for class %s"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Cannot read function profile from %s."
+-msgstr "kan ikke finde filen for klassen %s"
++msgstr "kan ikke læse funktionsprofil fra %s."
+
+ #: auto-profile.c:919
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "%s: cannot get working directory: %s\n"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Cannot read working set from %s."
+-msgstr "%s: kan ikke få fat i arbejdskataloget: %s\n"
++msgstr "Kan ikke læse arbejdssæt fra %s."
+
+ #: bt-load.c:1566
+ #, gcc-internal-format
+@@ -18945,7 +18865,7 @@
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "ugyldig tredje parameter til '__builtin_prefetch'; benytter nul"
@@ -280971,7 +288783,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "too many arguments to function `va_start'"
msgid "too few arguments to function %<va_start%>"
-@@ -19044,7 +19082,7 @@
+@@ -19044,7 +18964,7 @@
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
@@ -280980,7 +288792,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
-@@ -19075,69 +19113,69 @@
+@@ -19075,69 +18995,69 @@
msgid "target format does not support infinity"
msgstr "målprocessoren understøtter ikke uendelig"
@@ -281063,7 +288875,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "%Kattempt to free a non-heap object"
msgstr ""
-@@ -19153,36 +19191,36 @@
+@@ -19153,36 +19073,36 @@
msgid "passing too large argument on stack"
msgstr "Overbring alle parametre på stakken"
@@ -281106,7 +288918,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "more than %d operands in `asm'"
msgid "more than %d operands in %<asm%>"
-@@ -19189,7 +19227,7 @@
+@@ -19189,7 +19109,7 @@
msgstr "mere end %d operander i 'asm'"
#. ??? Diagnose during gimplification?
@@ -281115,7 +288927,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "unknown register name `%s' in `asm'"
msgid "unknown register name %qs in %<asm%>"
-@@ -19196,38 +19234,38 @@
+@@ -19196,38 +19116,38 @@
msgstr "ukendt registernavn '%s' i 'asm'"
#. ??? Diagnose during gimplification?
@@ -281161,7 +288973,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
msgstr ""
-@@ -19328,102 +19366,102 @@
+@@ -19328,102 +19248,102 @@
msgid "%s does not support can_remove_branch_p"
msgstr "%s understøtter ikke %s"
@@ -281281,7 +289093,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s does not support %s"
msgid "%s does not support flow_call_edges_add"
-@@ -19773,356 +19811,356 @@
+@@ -19773,356 +19693,356 @@
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr "antallet af basisbloknoter i instruktionskæden (%d) != n_basic_blocks (%d)"
@@ -281705,7 +289517,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "nodes with unreleased memory found"
msgstr ""
-@@ -20172,7 +20210,7 @@
+@@ -20172,7 +20092,7 @@
msgid "pex_init failed: %m"
msgstr "åbner uddatafilen %s"
@@ -281714,7 +289526,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%s: %s"
msgid "%s: %m"
-@@ -20183,7 +20221,7 @@
+@@ -20183,7 +20103,7 @@
msgid "COLLECT_LTO_WRAPPER must be set"
msgstr ""
@@ -281723,7 +289535,7 @@ Index: gcc/po/da.po
#: config/i386/intelmic-mkoffload.c:554 config/nvptx/mkoffload.c:403
#, gcc-internal-format
msgid "atexit failed"
-@@ -20194,7 +20232,7 @@
+@@ -20194,7 +20114,7 @@
msgid "no arguments"
msgstr "ingen parametre"
@@ -281732,7 +289544,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "LTO support has not been enabled in this configuration"
msgstr "%s understøttes ikke af denne konfiguration"
-@@ -20301,40 +20339,40 @@
+@@ -20301,40 +20221,40 @@
msgid "conversion to incomplete type"
msgstr "konvertering til en ufuldstændig type"
@@ -281780,7 +289592,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "aggregate value used where a float was expected"
msgid "aggregate value used where a fixed-point was expected"
-@@ -20402,7 +20440,7 @@
+@@ -20402,7 +20322,7 @@
msgid "error writing %qs"
msgstr "fejl ved skrivning til %s"
@@ -281789,7 +289601,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "cannot open %s"
msgstr "kan ikke åbne %s"
-@@ -20450,7 +20488,7 @@
+@@ -20450,7 +20370,7 @@
msgid "global constructors not supported on this target"
msgstr "stakgrænser understøttes ikke på målarkitekturen"
@@ -281798,7 +289610,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "in %s, at %s:%d"
msgstr "i %s, ved %s:%d"
-@@ -20497,28 +20535,28 @@
+@@ -20497,28 +20417,28 @@
msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
msgstr ""
@@ -281832,7 +289644,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr "ICE: emit_insn brugt hvor emit_jump_insn behøves:\n"
-@@ -20587,7 +20625,7 @@
+@@ -20587,7 +20507,7 @@
msgid "verify_eh_tree failed"
msgstr "verify_flow_info mislykkedes"
@@ -281841,7 +289653,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "stack limits not supported on this target"
msgstr "stakgrænser understøttes ikke på målarkitekturen"
-@@ -20613,12 +20651,12 @@
+@@ -20613,12 +20533,12 @@
msgid "write of %wu-bit data outside the bound of destination object, data truncated into %wu-bit"
msgstr ""
@@ -281856,7 +289668,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr "funktionen '%s' omerklæret med egenskaben noinline"
-@@ -20653,50 +20691,50 @@
+@@ -20653,50 +20573,50 @@
msgid "large fixed-point constant implicitly truncated to fixed-point type"
msgstr "stort heltal forkortes underforstået til type uden fortegn"
@@ -281916,7 +289728,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
-@@ -20707,7 +20745,7 @@
+@@ -20707,7 +20627,7 @@
msgid "total size of local objects too large"
msgstr "størrelsen af tabellen '%s' er for stor"
@@ -281925,7 +289737,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "impossible constraint in `asm'"
msgid "impossible constraint in %<asm%>"
-@@ -20791,7 +20829,7 @@
+@@ -20791,7 +20711,7 @@
msgid "%s (program %s)"
msgstr "programmer: %s\n"
@@ -281934,7 +289746,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "unrecognized command line option %qs"
msgstr "ignorerer kommandolinjetilvalget '%s'"
-@@ -20952,164 +20990,164 @@
+@@ -20952,164 +20872,164 @@
msgid "%s: -fcompare-debug failure"
msgstr ""
@@ -282129,7 +289941,34 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "too few arguments to function"
msgid "too few arguments to %%:replace-extension"
-@@ -21146,12 +21184,12 @@
+@@ -21121,20 +21041,19 @@
+ msgstr "fejl ved skrivning til %s"
+
+ #: gcov-tool.c:103
+-#, fuzzy, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
+ msgid "Cannot make directory %s"
+-msgstr "kan ikke oprette kataloget %s"
++msgstr "Kan ikke oprette mappen %s"
+
+ #: gcov-tool.c:111
+-#, fuzzy, gcc-internal-format
+-#| msgid "can't get current directory"
++#, gcc-internal-format
+ msgid "Cannot get current directory name"
+-msgstr "kan ikke få fat i det aktuelle katalog"
++msgstr "Kan ikke få fat i det aktuelle mappenavn"
+
+ #: gcov-tool.c:115 gcov-tool.c:121
+-#, fuzzy, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
+ msgid "Cannot change directory to %s"
+-msgstr "kan ikke oprette kataloget %s"
++msgstr "Kan ikke ændre mappen til %s"
+
+ #: gcov-tool.c:214
+ #, gcc-internal-format
+@@ -21146,12 +21065,12 @@
msgid "scale needs to be non-negative\n"
msgstr ""
@@ -282144,7 +289983,20 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "%s: %d basic blocks and %d registers; increase --param max-gcse-memory above %d"
msgstr "GCSE deaktiveret: %d basisblokke og %d registre"
-@@ -21240,11 +21278,11 @@
+@@ -21167,10 +21086,9 @@
+ msgstr ""
+
+ #: gentarget-def.c:126
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "invalid operand code `%c'"
++#, gcc-internal-format, gfc-internal-format
+ msgid "invalid prototype for '%s'"
+-msgstr "ugyldig operandkode '%c'"
++msgstr "ugyldig prototype for »%s«"
+
+ #: gentarget-def.c:131
+ #, gcc-internal-format, gfc-internal-format
+@@ -21240,11 +21158,11 @@
msgid "can%'t write PCH file"
msgstr "kan ikke skrive i uddatafil"
@@ -282161,7 +290013,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid " `%#D' declared here"
msgid "declared here"
-@@ -21262,6 +21300,11 @@
+@@ -21262,6 +21180,11 @@
msgid "null pointer dereference"
msgstr "henvisning"
@@ -282173,7 +290025,7 @@ Index: gcc/po/da.po
#: gimple-streamer-in.c:210
#, gcc-internal-format, gfc-internal-format
msgid "bytecode stream: unknown GIMPLE statement tag %s"
-@@ -21273,215 +21316,237 @@
+@@ -21273,215 +21196,237 @@
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "træ-kontrol: forventede %s, har %s i %s, ved %s:%d"
@@ -282450,7 +290302,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
-@@ -21498,7 +21563,7 @@
+@@ -21498,7 +21443,7 @@
msgid "could not open Go dump file %qs: %m"
msgstr "kunne ikke åbne dumpningsfilen '%s'"
@@ -282459,7 +290311,7 @@ Index: gcc/po/da.po
#: objc/objc-act.c:461
#, fuzzy, gcc-internal-format
#| msgid "can't open %s: %m"
-@@ -21510,39 +21575,39 @@
+@@ -21510,39 +21455,39 @@
msgid "Graphite loop optimizations cannot be used (isl is not available)."
msgstr ""
@@ -282506,7 +290358,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "move insn not handled"
msgid "HSA image ops not handled"
-@@ -21574,319 +21639,319 @@
+@@ -21574,319 +21519,319 @@
msgid "function cannot be instrumented"
msgstr "funktion kan ikke indbygges"
@@ -282886,7 +290738,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Declaring type %qD final would enable devirtualization of %i call"
msgid_plural "Declaring type %qD final would enable devirtualization of %i calls"
-@@ -21893,7 +21958,7 @@
+@@ -21893,7 +21838,7 @@
msgstr[0] ""
msgstr[1] ""
@@ -282895,7 +290747,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Declaring type %qD final would enable devirtualization of %i call executed %lli times"
msgid_plural "Declaring type %qD final would enable devirtualization of %i calls executed %lli times"
-@@ -21900,7 +21965,7 @@
+@@ -21900,7 +21845,7 @@
msgstr[0] ""
msgstr[1] ""
@@ -282904,7 +290756,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Declaring virtual destructor of %qD final would enable devirtualization of %i call"
msgid_plural "Declaring virtual destructor of %qD final would enable devirtualization of %i calls"
-@@ -21907,7 +21972,7 @@
+@@ -21907,7 +21852,7 @@
msgstr[0] ""
msgstr[1] ""
@@ -282913,7 +290765,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Declaring method %qD final would enable devirtualization of %i call"
msgid_plural "Declaring method %qD final would enable devirtualization of %i calls"
-@@ -21914,7 +21979,7 @@
+@@ -21914,7 +21859,7 @@
msgstr[0] ""
msgstr[1] ""
@@ -282922,7 +290774,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Declaring virtual destructor of %qD final would enable devirtualization of %i call executed %lli times"
msgid_plural "Declaring virtual destructor of %qD final would enable devirtualization of %i calls executed %lli times"
-@@ -21921,7 +21986,7 @@
+@@ -21921,7 +21866,7 @@
msgstr[0] ""
msgstr[1] ""
@@ -282931,7 +290783,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Declaring method %qD final would enable devirtualization of %i call executed %lli times"
msgid_plural "Declaring method %qD final would enable devirtualization of %i calls executed %lli times"
-@@ -21944,21 +22009,26 @@
+@@ -21944,21 +21889,26 @@
msgid "ipa reference summary is missing in ltrans unit"
msgstr ""
@@ -282961,7 +290813,7 @@ Index: gcc/po/da.po
#: lra-assigns.c:1395 reload1.c:1254
#, fuzzy, gcc-internal-format
#| msgid "asm operand %d probably doesn't match constraints"
-@@ -21971,18 +22041,18 @@
+@@ -21971,18 +21921,18 @@
msgid "unable to find a register to spill"
msgstr "kan ikke finde et register at bortødsle i klassen '%s'"
@@ -282983,7 +290835,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Max. number of generated reload insns per insn is achieved (%d)\n"
msgstr ""
-@@ -22028,7 +22098,7 @@
+@@ -22028,7 +21978,7 @@
msgid "cannot find LTO section refs in %s"
msgstr "kan ikke finde kilden %s"
@@ -282992,23 +290844,25 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid rotate insn"
msgid "invalid offload table in %s"
-@@ -22078,13 +22148,13 @@
+@@ -22078,13 +22028,12 @@
msgid "Reference statement index not found"
msgstr "Advar hvis forældede tomme sætninger bliver fundet"
-#: lto-streamer-in.c:1512
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "%s: cannot get working directory: %s\n"
+#: lto-streamer-in.c:1513
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "%s: cannot get working directory: %s\n"
++#, gcc-internal-format, gfc-internal-format
msgid "cannot read LTO mode table from %s"
- msgstr "%s: kan ikke få fat i arbejdskataloget: %s\n"
+-msgstr "%s: kan ikke få fat i arbejdskataloget: %s\n"
++msgstr "kan ikke læse LTO-tilstandstabel fra %s"
-#: lto-streamer-in.c:1610
+#: lto-streamer-in.c:1611
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unsupported version"
msgid "unsupported mode %s\n"
-@@ -22106,61 +22176,79 @@
+@@ -22106,61 +22055,79 @@
msgid "bytecode stream generated with LTO version %d.%d instead of the expected %d.%d"
msgstr ""
@@ -283104,7 +290958,7 @@ Index: gcc/po/da.po
#| msgid "fopen %s"
msgid "fopen: %s: %m"
msgstr "fopen %s"
-@@ -22199,209 +22287,219 @@
+@@ -22199,209 +22166,219 @@
msgid "attribute(target_clones(\"default\")) is not valid for current target"
msgstr ""
@@ -283364,7 +291218,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "invalid argument of `%s' attribute"
msgid "invalid entry to %s structured block"
-@@ -22408,80 +22506,85 @@
+@@ -22408,80 +22385,85 @@
msgstr "ugyldig parameter til egenskaben '%s'"
#. Otherwise, be vague and lazy, but efficient.
@@ -283472,7 +291326,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "invalid argument of `%s' attribute"
msgid "valid arguments to %qs are: %s"
-@@ -22498,32 +22601,32 @@
+@@ -22498,32 +22480,32 @@
msgid "command line option %qs is valid for %s but not for %s"
msgstr "'-%s' er gyldigt for %s, men ikke for %s"
@@ -283511,7 +291365,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "unrecognized address"
msgid "unrecognized shadow offset %qs"
-@@ -22570,55 +22673,55 @@
+@@ -22570,55 +22552,55 @@
msgid "section anchors must be disabled when toplevel reorder is disabled"
msgstr ""
@@ -283577,7 +291431,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "unrecognized include_flags 0x%x passed to print_specific_help"
msgstr ""
-@@ -22958,22 +23061,22 @@
+@@ -22958,22 +22940,22 @@
msgid "output operand %d must use %<&%> constraint"
msgstr "uddataoperand %d skal bruge %<&%>-begrænsningen"
@@ -283604,7 +291458,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr "validate_value_data: [%u] Ikke-tomt register i kæde (%s %u %i)"
-@@ -22994,8 +23097,8 @@
+@@ -22994,8 +22976,8 @@
msgstr "kan ikke bruge %qs som et fast register"
#: reginfo.c:750 config/ia64/ia64.c:5940 config/ia64/ia64.c:5947
@@ -283615,7 +291469,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "ukendt registernavn: %s"
-@@ -23015,7 +23118,7 @@
+@@ -23015,7 +22997,7 @@
msgid "register of %qD used for multiple global register variables"
msgstr "register for %qD brugt til flere globale registervariabler"
@@ -283624,7 +291478,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "conflicts with %qD"
msgstr "er i konflikt med %qD"
-@@ -23040,37 +23143,27 @@
+@@ -23040,37 +23022,27 @@
msgid "%<&%> constraint used with no register class"
msgstr "%<&%>-begrænsning brugt uden registerklasse"
@@ -283667,7 +291521,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr "uddataoperand er konstant i %<asm%>"
-@@ -23388,17 +23481,17 @@
+@@ -23388,17 +23360,17 @@
msgid "Two symbols with same comdat_group are not linked by the same_comdat_group list."
msgstr "To symboler med samme comdat_group er ikke lænket af same_comdat_group-listen."
@@ -283688,7 +291542,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "section of alias %q+D must match section of its target"
msgstr "sektion for alias %q+D skal matche sektion for dens målarkitektur"
-@@ -23418,12 +23511,12 @@
+@@ -23418,12 +23390,12 @@
msgid "nested function trampolines not supported on this target"
msgstr "indlejrede funktionstrampoliner er ikke understøttet på denne målarkitektur"
@@ -283703,7 +291557,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "#pragma GCC target is not supported for this machine"
msgstr "#pragma GCC-målarkitektur er ikke understøttet på denne maskine"
-@@ -23778,7 +23871,7 @@
+@@ -23778,7 +23750,7 @@
#: tree-cfg.c:2965
#, gcc-internal-format
@@ -283712,7 +291566,7 @@ Index: gcc/po/da.po
msgstr ""
#: tree-cfg.c:2973
-@@ -24119,7 +24212,7 @@
+@@ -24119,7 +24091,7 @@
msgid "the first argument of a VEC_COND_EXPR must be of a boolean vector type of the same number of elements as the result"
msgstr ""
@@ -283721,7 +291575,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr "typerne i betingelsesudtrykket passer ikke sammen"
-@@ -24603,79 +24696,79 @@
+@@ -24603,79 +24575,79 @@
msgid "BB %i has incorrect fallthru edge"
msgstr "forkert instruktion i fald-gennem-kant"
@@ -283816,7 +291670,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%Jinlining failed in call to '%F': %s"
msgid "inlining failed in call to %q+F: %s"
-@@ -24691,8 +24784,8 @@
+@@ -24691,8 +24663,8 @@
msgid "cannot update SSA form"
msgstr ""
@@ -283827,7 +291681,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "SSA corruption"
msgstr ""
-@@ -24912,87 +25005,87 @@
+@@ -24912,87 +24884,87 @@
msgid "tree bytecode streams do not support machine specific builtin functions on this target"
msgstr ""
@@ -283931,7 +291785,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr ""
-@@ -25013,44 +25106,44 @@
+@@ -25013,44 +24985,44 @@
msgid "ignoring attributes applied to %qT after definition"
msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
@@ -284002,7 +291856,7 @@ Index: gcc/po/da.po
#: lto/lto-lang.c:243
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute ignored"
-@@ -25057,129 +25150,129 @@
+@@ -25057,129 +25029,129 @@
msgid "%qE attribute ignored"
msgstr "egenskaben '%s' ignoreret"
@@ -284155,7 +292009,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "type is deprecated"
msgstr "type er forældet"
-@@ -25206,266 +25299,266 @@
+@@ -25206,266 +25178,266 @@
#. main variant only.
#.
#. Convenience macro for matching individual fields.
@@ -284474,7 +292328,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "verify_flow_info failed"
msgid "verify_type failed"
-@@ -25594,7 +25687,7 @@
+@@ -25594,7 +25566,7 @@
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "%Jforespurgt justering for '%D' er større end den implementerede justering på %d"
@@ -284483,7 +292337,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "storage size of `%D' isn't known"
msgid "storage size of %q+D isn%'t known"
-@@ -25611,68 +25704,68 @@
+@@ -25611,68 +25583,68 @@
msgid "initializer for floating value is not a floating constant"
msgstr "startværdien for kommatal er ikke en kommatalskonstant"
@@ -284564,7 +292418,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr "synlighedsegenskab er ikke understøttet i denne konfiguration; ignoreret"
-@@ -25758,7 +25851,8 @@
+@@ -25758,7 +25730,8 @@
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "strenglængden '%d' er større end den længde på '%d' som ISO C%d-oversættere er pålagt at understøtte"
@@ -284574,7 +292428,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "overløb i konstant udtryk"
-@@ -25851,1052 +25945,1057 @@
+@@ -25851,1052 +25824,1057 @@
msgid "type-punning to incomplete type might break strict-aliasing rules"
msgstr "typeomtvingning af ufuldstændig type bryder muligvis strenge aliasregler"
@@ -285825,7 +293679,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only member `%s'"
msgid "assignment of read-only member %qD"
-@@ -26903,7 +27002,7 @@
+@@ -26903,7 +26881,7 @@
msgstr "%s af medlemmet '%s' der kun må læses"
# RETMIG: lettere klodset konstruktion
@@ -285834,7 +293688,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only member `%s'"
msgid "increment of read-only member %qD"
-@@ -26910,42 +27009,42 @@
+@@ -26910,42 +26888,42 @@
msgstr "%s af medlemmet '%s' der kun må læses"
# RETMIG: lettere klodset konstruktion
@@ -285884,7 +293738,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only member `%s'"
msgid "assignment of read-only parameter %qD"
-@@ -26952,7 +27051,7 @@
+@@ -26952,7 +26930,7 @@
msgstr "%s af medlemmet '%s' der kun må læses"
# RETMIG: lettere klodset konstruktion
@@ -285893,7 +293747,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%s of read-only member `%s'"
msgid "increment of read-only parameter %qD"
-@@ -26959,396 +27058,396 @@
+@@ -26959,396 +26937,396 @@
msgstr "%s af medlemmet '%s' der kun må læses"
# RETMIG: lettere klodset konstruktion
@@ -286361,7 +294215,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "conversion of scalar %qT to vector %qT involves truncation"
msgstr ""
-@@ -27355,24 +27454,24 @@
+@@ -27355,24 +27333,24 @@
#. Reject arguments that are built-in functions with
#. no library fallback.
@@ -286390,7 +294244,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "size of array `%s' is too large"
msgid "size of unnamed array is too large"
-@@ -27751,21 +27850,16 @@
+@@ -27751,21 +27729,16 @@
msgid "strftime formats cannot format arguments"
msgstr "strftime-formater kan ikke formatere parametre"
@@ -286415,7 +294269,7 @@ Index: gcc/po/da.po
#: c-family/c-lex.c:222
#, gcc-internal-format
msgid "badly nested C headers from preprocessor"
-@@ -27857,7 +27951,7 @@
+@@ -27857,7 +27830,7 @@
msgid "repeated %<@%> before Objective-C string"
msgstr ""
@@ -286424,7 +294278,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "possible start of unterminated string literal"
msgid "unsupported non-standard concatenation of string literals"
-@@ -27884,7 +27978,7 @@
+@@ -27884,7 +27857,7 @@
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr ""
@@ -286433,7 +294287,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "invalid vector type for attribute `%s'"
msgid "invalid type for iteration variable %qE"
-@@ -27896,25 +27990,25 @@
+@@ -27896,25 +27869,25 @@
msgid "%qE is not initialized"
msgstr "manglende startværdi"
@@ -286463,7 +294317,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "Invalid control expression"
msgid "invalid increment expression"
-@@ -27949,33 +28043,33 @@
+@@ -27949,33 +27922,33 @@
msgid "%qD is not an function argument"
msgstr "'%D' er ikke en funktionsskabelon"
@@ -286503,7 +294357,19 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode"
msgstr "-g er kun understøttet ved brug af GAS på denne processor,"
-@@ -28329,124 +28423,124 @@
+@@ -28080,9 +28053,9 @@
+ msgstr ""
+
+ #: c-family/c-pch.c:110
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "can%'t create precompiled header %s: %m"
+-msgstr "kan ikke oprette kataloget %s"
++msgstr "kan ikke oprette prækompileret teksthoved %s: %m"
+
+ #: c-family/c-pch.c:133
+ #, fuzzy, gcc-internal-format
+@@ -28329,124 +28302,124 @@
msgid "option %qs is valid for %s but not for %s"
msgstr "'-%s' er gyldigt for %s, men ikke for %s"
@@ -286650,7 +294516,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>"
msgstr ""
-@@ -28500,7 +28594,7 @@
+@@ -28500,7 +28473,7 @@
msgid "wrong type argument to %s"
msgstr "forkert parametertype til %s"
@@ -286659,7 +294525,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%E' cannot be used as a function"
msgid "%<_Cilk_spawn%> may only be used inside a function"
-@@ -28549,7 +28643,7 @@
+@@ -28549,7 +28522,7 @@
msgid "too many input files"
msgstr "for mange inddatafiler"
@@ -286668,7 +294534,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "unknown value %qs for -mcpu"
msgstr "ukendt værdi %qs for -mcpu"
-@@ -28657,7 +28751,7 @@
+@@ -28657,7 +28630,7 @@
msgid "for the option -mcache-block-size=X, the valid X must be: 4, 8, 16, 32, 64, 128, 256, or 512"
msgstr ""
@@ -286677,7 +294543,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "unknown -mdebug-%s switch"
msgstr "ukendt tilvalg -mdebug-%s"
-@@ -29014,193 +29108,193 @@
+@@ -29014,193 +28987,193 @@
msgid "%Ktotal size and element size must be a non-zero constant immediate"
msgstr "maske skal være en umiddelbar værdi"
@@ -286905,7 +294771,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "line number out of range"
msgid "lane %wd out of range %wd - %wd"
-@@ -29268,8 +29362,8 @@
+@@ -29268,8 +29241,8 @@
msgid "bad value %qs for -mmemory-latency"
msgstr "ugyldig værdi '%s' for -mmemory-latency"
@@ -286916,7 +294782,7 @@ Index: gcc/po/da.po
#: config/tilepro/tilepro.c:3107
#, gcc-internal-format
msgid "bad builtin fcode"
-@@ -29311,33 +29405,53 @@
+@@ -29311,33 +29284,53 @@
msgid "FPX extensions not available on pre-ARC600 cores"
msgstr ""
@@ -286976,7 +294842,7 @@ Index: gcc/po/da.po
#: config/epiphany/epiphany.c:529
#, fuzzy, gcc-internal-format
#| msgid "argument of `%s' attribute is not a string constant"
-@@ -29344,134 +29458,134 @@
+@@ -29344,134 +29337,134 @@
msgid "argument of %qE attribute is not a string constant"
msgstr "parameteren til egenskaben '%s er ikke en strengkonstant"
@@ -287134,7 +295000,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "pre-increment address is not a register"
msgid "insn addresses not freed"
-@@ -29686,194 +29800,194 @@
+@@ -29686,194 +29679,194 @@
msgid "-mslow-flash-data only supports non-pic code on armv7-m targets"
msgstr ""
@@ -287373,7 +295239,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-@@ -29940,96 +30054,96 @@
+@@ -29940,96 +29933,96 @@
#. happen as options are provided by device-specs. It could be a
#. typo in a device-specs or calling the compiler proper directly
#. with -mmcu=<device>.
@@ -287487,7 +295353,7 @@ Index: gcc/po/da.po
#: config/mep/mep.c:3788 config/mep/mep.c:3926
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute only applies to variables"
-@@ -30036,114 +30150,114 @@
+@@ -30036,114 +30029,114 @@
msgid "%qE attribute only applies to variables"
msgstr "egenskaben '%s' kan kun anvendes på variabler"
@@ -287623,7 +295489,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "rounding result will always be 0"
msgstr ""
-@@ -30574,18 +30688,18 @@
+@@ -30574,18 +30567,18 @@
msgid "can%'t set position in PCH file: %m"
msgstr "kan ikke oprette informationsfilen '%s' til opbevaringssted"
@@ -287645,7 +295511,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "return type specified for `operator %T'"
msgid "wrong stringop strategy name %s specified for option %s"
-@@ -30592,403 +30706,403 @@
+@@ -30592,403 +30585,403 @@
msgstr "returtype angivet for 'operator %T'"
#. rep; movq isn't available in 32-bit code.
@@ -288125,7 +295991,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr ""
-@@ -30995,303 +31109,303 @@
+@@ -30995,303 +30988,303 @@
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
@@ -288482,7 +296348,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Pointer Checker requires MPX support on this target. Use -mmpx options to enable MPX."
msgstr ""
-@@ -31387,13 +31501,13 @@
+@@ -31387,13 +31380,13 @@
msgid "%qE attribute requires a string constant argument"
msgstr "%qE-egenskaben kræver et strengkonstant som parameter"
@@ -288498,7 +296364,7 @@ Index: gcc/po/da.po
#: config/spu/spu.c:4918
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
-@@ -31469,7 +31583,7 @@
+@@ -31469,7 +31462,7 @@
msgstr "sektionsegenskaber understøttes ikke på denne målarkitektur"
#. The argument must be a constant integer.
@@ -288507,7 +296373,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not an integer constant"
msgid "%qE attribute argument not an integer constant"
-@@ -31531,7 +31645,7 @@
+@@ -31531,7 +31524,7 @@
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread er kun tilgængelig på fido"
@@ -288516,7 +296382,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "stakgrænseudtryk understøttes ikke"
-@@ -31790,7 +31904,7 @@
+@@ -31790,7 +31783,7 @@
msgid "argument %d of %qE must be a multiple of %d"
msgstr "parameter til '%s' skal være en 2 bit-konstant"
@@ -288525,7 +296391,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "incompatible type for argument %d of `%s'"
msgid "incompatible type for argument %d of %qE"
-@@ -32213,32 +32327,32 @@
+@@ -32213,32 +32206,32 @@
msgid "msp430_select_hwmult_lib needs one or more arguments"
msgstr ""
@@ -288564,7 +296430,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unrecognised MCU name '%s', assuming that it is just a MSP430 with no hardware multiply.\n"
-@@ -32245,7 +32359,7 @@
+@@ -32245,7 +32238,7 @@
"Use the -mcpu and -mhwmult options to set these explicitly."
msgstr ""
@@ -288573,7 +296439,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unrecognised MCU name '%s', assuming that it has no hardware multiply.\n"
-@@ -32252,7 +32366,7 @@
+@@ -32252,7 +32245,7 @@
"Use the -mhwmult option to set this explicitly."
msgstr ""
@@ -288582,7 +296448,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid ""
"Unrecognised MCU name '%s', assuming that it just supports the MSP430 ISA.\n"
-@@ -32259,65 +32373,65 @@
+@@ -32259,65 +32252,65 @@
"Use the -mcpu option to set the ISA explicitly."
msgstr ""
@@ -288660,7 +296526,7 @@ Index: gcc/po/da.po
#: config/xtensa/xtensa.c:3372
#, fuzzy, gcc-internal-format
#| msgid "bad builtin fcode"
-@@ -32565,19 +32679,12 @@
+@@ -32565,19 +32558,12 @@
msgid "cannot open intermediate ptx file"
msgstr "%s: kan ikke åbne datafil\n"
@@ -288682,7 +296548,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute requires an integer constant argument"
msgid "%qE attribute requires a void return type"
-@@ -32733,345 +32840,345 @@
+@@ -32733,345 +32719,345 @@
msgid "junk at end of #pragma longcall"
msgstr "ragelse i slutningen af #pragma longcall"
@@ -289092,7 +296958,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "%s only accepts 1 argument"
msgid "builtin %s only accepts a string argument"
-@@ -33078,7 +33185,7 @@
+@@ -33078,7 +33064,7 @@
msgstr "%s accepterer kun 1 parameter"
#. Invalid CPU argument.
@@ -289101,7 +296967,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "#%s with invalid argument"
msgid "cpu %s is an invalid argument to builtin %s"
-@@ -33085,272 +33192,272 @@
+@@ -33085,272 +33071,272 @@
msgstr "#%s med ugyldig parameter"
#. Invalid HWCAP argument.
@@ -289423,7 +297289,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr ""
-@@ -33666,35 +33773,35 @@
+@@ -33666,35 +33652,35 @@
msgid "constant argument %d for builtin %qF is out of range for target type"
msgstr "konstant parameter uden for det gyldige interval for '%s'"
@@ -289465,7 +297331,7 @@ Index: gcc/po/da.po
#: config/tilepro/tilepro.c:3110
#, fuzzy, gcc-internal-format
#| msgid "bad builtin fcode"
-@@ -33701,125 +33808,130 @@
+@@ -33701,125 +33687,130 @@
msgid "bad builtin icode"
msgstr "ugyldig indbygget fcode"
@@ -289619,7 +297485,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "argument to `%s' attribute larger than %d"
msgid "argument to %qs is too large (max. %d)"
-@@ -33826,7 +33938,7 @@
+@@ -33826,7 +33817,7 @@
msgstr "parameter til egenskaben '%s' er større end %d"
#. Value is not allowed for the target attribute.
@@ -289628,7 +297494,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "__builtin_trap not supported by this target"
msgid "Value %qs is not supported by attribute %<target%>"
-@@ -33842,35 +33954,35 @@
+@@ -33842,35 +33833,35 @@
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr ""
@@ -289670,7 +297536,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute argument not an integer constant"
msgid "%qE attribute argument should be between 0 to 255"
-@@ -33877,24 +33989,24 @@
+@@ -33877,24 +33868,24 @@
msgstr "parameteren til egenskaben '%s' er ikke en heltalskonstant"
#. The argument must be a constant string.
@@ -289699,7 +297565,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr ""
-@@ -33911,27 +34023,27 @@
+@@ -33911,27 +33902,27 @@
msgid "-mrelax is only supported for RTP PIC"
msgstr "-g er kun understøttet ved brug af GAS på denne processor,"
@@ -289732,7 +297598,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "-fdata-sections not supported for this target"
msgid "-fcall-saved-REG is not supported for out registers"
-@@ -34148,7 +34260,7 @@
+@@ -34148,7 +34139,7 @@
msgid "too much stack space to prepare: %d"
msgstr "For meget stakplads at forberede: %d"
@@ -289741,7 +297607,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgid "an interrupt handler cannot be compiled with -muser-mode"
-@@ -34293,59 +34405,59 @@
+@@ -34293,59 +34284,59 @@
msgid "subprogram %q+F not marked Inline"
msgstr ""
@@ -289812,7 +297678,7 @@ Index: gcc/po/da.po
#: cp/cp-array-notation.c:250
#, fuzzy, gcc-internal-format
#| msgid "invalid option argument `%s'"
-@@ -34406,8 +34518,8 @@
+@@ -34406,8 +34397,8 @@
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
@@ -289823,7 +297689,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "tom værdi er ikke ignoreret som den burde være"
-@@ -34437,7 +34549,7 @@
+@@ -34437,7 +34428,7 @@
msgid "GCC supports only %u nested scopes"
msgstr ""
@@ -289832,7 +297698,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "label `%D' used but not defined"
msgid "label %q+D used but not defined"
-@@ -34460,7 +34572,7 @@
+@@ -34460,7 +34451,7 @@
msgid "unused variable %q+D"
msgstr "ubrugt variabel '%s'"
@@ -289841,7 +297707,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "label `%D' defined but not used"
msgid "variable %qD set but not used"
-@@ -34471,7 +34583,7 @@
+@@ -34471,7 +34462,7 @@
msgid "type of array %q+D completed incompatibly with implicit initialization"
msgstr ""
@@ -289850,7 +297716,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "originally defined here"
msgstr " oprindelig definition er her"
-@@ -34537,7 +34649,7 @@
+@@ -34537,7 +34528,7 @@
msgid "built-in function %q+D declared as non-function"
msgstr "den indbyggede funktion '%s' er erklæret som noget der ikke er en funktion"
@@ -289859,7 +297725,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "declaration of \"%s\" shadows a global declaration"
msgid "declaration of %q+D shadows a built-in function"
-@@ -34679,31 +34791,31 @@
+@@ -34679,31 +34670,31 @@
msgid "redundant redeclaration of %q+D"
msgstr "overflødig omerklæring af '%D' i samme virkefelt"
@@ -289896,7 +297762,7 @@ Index: gcc/po/da.po
#: cp/name-lookup.c:1273
#, fuzzy, gcc-internal-format
#| msgid "%Jshadowed declaration is here"
-@@ -34710,43 +34822,43 @@
+@@ -34710,43 +34701,43 @@
msgid "shadowed declaration is here"
msgstr "%Jskygget erklæring er her"
@@ -289947,7 +297813,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%s' undeclared (first use in this function)"
msgid "%qE undeclared (first use in this function)"
-@@ -34753,164 +34865,164 @@
+@@ -34753,164 +34744,164 @@
msgstr "'%s' er ikke erklæret (først benyttet i denne funktion)"
# dækkende, og pænere end original i praktisk brug
@@ -290144,7 +298010,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "ISO C90 does not support %<[*]%> array declarators"
msgstr "ISO C90 understøtter ikke %<[*]%> arrayerklæringer"
-@@ -34918,34 +35030,34 @@
+@@ -34918,34 +34909,34 @@
#. C99 6.7.5.2p4
#. A function definition isn't function prototype scope C99 6.2.1p4.
#. C99 6.7.5.2p4
@@ -290185,7 +298051,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "parameter %qD is initialized"
msgstr "parameteren %qD bliver tildelt en startværdi"
-@@ -34954,117 +35066,117 @@
+@@ -34954,117 +34945,117 @@
#. 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.
@@ -290324,7 +298190,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "width of `%s' exceeds its type"
msgid "width of %qs exceeds its type"
-@@ -35071,175 +35183,175 @@
+@@ -35071,175 +35062,175 @@
msgstr "bredden af '%s' overstiger typen"
# RETMIG: find på et eller andet med præcisionen
@@ -290530,7 +298396,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "function-scope `%s' implicitly auto and declared `__thread'"
msgid "function-scope %qE implicitly auto and declared %qs"
-@@ -35248,313 +35360,313 @@
+@@ -35248,313 +35239,313 @@
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
@@ -290900,7 +298766,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "invalid storage class for function `%s'"
msgid "invalid storage class for function %qE"
-@@ -35561,242 +35673,242 @@
+@@ -35561,242 +35552,242 @@
msgstr "ugyldig lagringsklasse for funktion '%s'"
# at oversætte inline med et udsagnsord her bliver vist for tvetydigt
@@ -291187,7 +299053,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "nested redefinition of `%s'"
msgid "nested redefinition of %<enum %E%>"
-@@ -35803,203 +35915,203 @@
+@@ -35803,203 +35794,203 @@
msgstr "indlejret omdefinering af '%s'"
#. This enum is a named one that has been declared already.
@@ -291433,7 +299299,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "label `%D' defined but not used"
msgid "parameter %qD set but not used"
-@@ -36008,243 +36120,243 @@
+@@ -36008,243 +35999,243 @@
#. 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.
@@ -291721,7 +299587,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr "højreskiftsantal er større end bredden af typen"
-@@ -36260,86 +36372,86 @@
+@@ -36260,86 +36251,86 @@
msgid "version control conflict marker in file"
msgstr ""
@@ -291824,7 +299690,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "data definition has no type or storage class"
msgstr "definition af data uden angivelse af type eller lagringsklasse"
-@@ -36347,27 +36459,27 @@
+@@ -36347,27 +36338,27 @@
#. This means there is an attribute specifier after
#. the declarator in a function definition. Provide
#. some more information for the user.
@@ -291857,7 +299723,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
-@@ -36375,220 +36487,220 @@
+@@ -36375,220 +36366,220 @@
#. This can appear in many cases looking nothing like a
#. function definition, so we don't give a more specific
#. error suggesting there was one.
@@ -292126,7 +299992,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "ISO C89 forbids specifying subobject to initialize"
msgid "ISO C90 forbids specifying subobject to initialize"
-@@ -36595,64 +36707,64 @@
+@@ -36595,64 +36586,64 @@
msgstr "ISO C89 forbyder angivelse af underobjekt til klargøring"
# RETMIG: hm, gad vide om dette er rigtigt
@@ -292203,7 +300069,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "expected identifier or %<*%>"
msgstr ""
-@@ -36661,1126 +36773,1132 @@
+@@ -36661,1126 +36652,1132 @@
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
@@ -293551,7 +301417,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "unexpected address expression"
msgid "expected array notation expression"
-@@ -37792,7 +37910,7 @@
+@@ -37792,7 +37789,7 @@
msgid "%qD has an incomplete type %qT"
msgstr "'%s' er af en ufuldstændig type"
@@ -293560,7 +301426,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "ugyldig brug af void-udtryk"
-@@ -37825,154 +37943,154 @@
+@@ -37825,154 +37822,154 @@
msgid "%qT and %qT are in disjoint named address spaces"
msgstr ""
@@ -293743,7 +301609,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "called object is not a function"
msgid "called object is not a function or function pointer"
-@@ -37981,157 +38099,157 @@
+@@ -37981,157 +37978,157 @@
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
@@ -293928,7 +301794,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "ISO C does not support `++' and `--' on complex types"
msgid "ISO C does not support %<++%> and %<--%> on complex types"
-@@ -38139,246 +38257,246 @@
+@@ -38139,246 +38136,246 @@
# man kan ikke stikke en forøgelse (++) en type som parameter, 'type
# argument' skal opfattes på en anden måde
@@ -294220,7 +302086,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "char-array initialized from wide string"
msgid "array initialized from parenthesized string constant"
-@@ -38395,202 +38513,202 @@
+@@ -38395,202 +38392,202 @@
#. 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.
@@ -294458,7 +302324,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%s from incompatible pointer type"
msgid "return from incompatible pointer type"
-@@ -38598,72 +38716,72 @@
+@@ -38598,72 +38595,72 @@
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
@@ -294543,7 +302409,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-@@ -38670,799 +38788,788 @@
+@@ -38670,799 +38667,788 @@
# 'automatic aggregate' betyder automatisk allokerede variabler, dvs.
# ganske almindelige lokale variabler (kan evt. erklæres med 'auto')
@@ -295501,7 +303367,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
-@@ -39469,91 +39576,91 @@
+@@ -39469,91 +39455,91 @@
msgstr[0] ""
msgstr[1] ""
@@ -295609,7 +303475,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "call of overloaded `%D(%A)' is ambiguous"
msgid "call of overloaded %<%D(%A)%> is ambiguous"
-@@ -39561,219 +39668,219 @@
+@@ -39561,219 +39547,219 @@
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
@@ -295869,7 +303735,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%+#D' is inaccessible"
msgid "%q#D is inaccessible within this context"
-@@ -39780,421 +39887,421 @@
+@@ -39780,421 +39766,421 @@
msgstr "'%+#D' er ikke tilgængelig"
# %s bliver til returnering eller tildeling eller noget i den retning
@@ -296368,7 +304234,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%#T' only defines private constructors and has no friends"
msgid "%q#T only defines private constructors and has no friends"
-@@ -40201,294 +40308,294 @@
+@@ -40201,294 +40187,294 @@
msgstr "'%#T' definerer kun private konstruktionsfunktioner og har ingen venner"
# %D er en funktion
@@ -296714,7 +304580,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "non-static const member `%#D' in class without a constructor"
msgid "non-static const member %q#D in class without a constructor"
-@@ -40496,152 +40603,152 @@
+@@ -40496,152 +40482,152 @@
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
@@ -296894,7 +304760,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "cannot convert `%E' from type `%T' to type `%T'"
msgid "cannot convert %qE from type %qT to type %qT"
-@@ -40652,13 +40759,13 @@
+@@ -40652,13 +40638,13 @@
#. 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.
@@ -296910,7 +304776,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "changes meaning of `%D' from `%+#D'"
msgid "changes meaning of %qD from %q#D"
-@@ -40702,279 +40809,289 @@
+@@ -40702,279 +40688,289 @@
msgid "constexpr constructor does not have empty body"
msgstr ""
@@ -297254,7 +305120,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "unexpected type for `id' (%s)"
msgid "unexpected AST of kind %s"
-@@ -41048,17 +41165,17 @@
+@@ -41048,17 +41044,17 @@
msgid "try statements are not allowed inside loops marked with #pragma simd"
msgstr ""
@@ -297275,7 +305141,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "in C++11 this throw will terminate because destructors default to noexcept"
msgstr ""
-@@ -41101,7 +41218,7 @@
+@@ -41101,7 +41097,7 @@
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "konvertering fra '%T' til '%T' forkaster modifikationer"
@@ -297284,7 +305150,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "casting `%T' to `%T' does not dereference pointer"
msgid "casting %qT to %qT does not dereference pointer"
-@@ -41113,326 +41230,326 @@
+@@ -41113,326 +41109,326 @@
msgid "cannot convert type %qT to type %qT"
msgstr "kan ikke konvertere typen '%T' til typen '%T'"
@@ -297669,7 +305535,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid " candidate conversions include `%D' and `%D'"
msgid " candidate conversions include %qD and %qD"
-@@ -41444,30 +41561,30 @@
+@@ -41444,30 +41440,30 @@
msgid "template-parameter-"
msgstr "skabelonsparameter '%#D'"
@@ -297705,7 +305571,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%D' as %s"
msgid "redeclaration %q+D differs in %<constexpr%>"
-@@ -41474,97 +41591,97 @@
+@@ -41474,97 +41470,97 @@
msgstr "erklæring af '%D' som %s"
# hænger sammen med næste tekst
@@ -297820,7 +305686,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%#D' redeclared as different kind of symbol"
msgid "%q#D redeclared as different kind of symbol"
-@@ -41571,48 +41688,48 @@
+@@ -41571,48 +41567,48 @@
msgstr "'%#D' omerklæret som en anden form for symbol"
# hænger sammen med næste tekst
@@ -297877,7 +305743,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "previous declaration of `%#D'"
msgid "previous declaration as %q#D"
-@@ -41625,72 +41742,72 @@
+@@ -41625,72 +41621,72 @@
#. A namespace-name defined at global scope shall not be
#. declared as the name of any other entity in any global scope
#. of the program.
@@ -297962,7 +305828,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "nested redefinition of `%s'"
msgid "deleted definition of %q+D"
-@@ -41704,42 +41821,42 @@
+@@ -41704,42 +41700,42 @@
#. that specialization that would cause an implicit
#. instantiation to take place, in every translation unit in
#. which such a use occurs.
@@ -298012,7 +305878,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "%q+D redeclared inline without %<gnu_inline%> attribute"
msgstr ""
-@@ -41747,22 +41864,22 @@
+@@ -41747,22 +41743,22 @@
#. is_primary=
#. is_partial=
#. is_friend_decl=
@@ -298039,7 +305905,7 @@ Index: gcc/po/da.po
#: cp/name-lookup.c:1189
#, fuzzy, gcc-internal-format
#| msgid "declaration of `%#D'"
-@@ -41769,272 +41886,272 @@
+@@ -41769,272 +41765,272 @@
msgid "redeclaration of %q#D"
msgstr "omerklæring af '%#D'"
@@ -298360,7 +306226,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%s' attribute can only be applied to class definitions"
msgid "ignoring attributes applied to class type %qT outside of definition"
-@@ -42041,145 +42158,145 @@
+@@ -42041,145 +42037,145 @@
msgstr "egenskaben '%s' kan kun anvendes med klassedefinitioner"
#. A template type parameter or other dependent type.
@@ -298531,7 +306397,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "zero-size array `%D'"
msgid "zero-size array %qD"
-@@ -42188,253 +42305,253 @@
+@@ -42188,253 +42184,253 @@
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
@@ -298830,7 +306696,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> variable"
-@@ -42441,37 +42558,37 @@
+@@ -42441,37 +42437,37 @@
msgstr "'%D' erklæret som 'inline' %s"
# %s bliver omsat til typen
@@ -298874,7 +306740,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> type"
-@@ -42478,19 +42595,19 @@
+@@ -42478,19 +42474,19 @@
msgstr "'%D' erklæret som 'inline' %s"
# %s bliver omsat til typen
@@ -298897,7 +306763,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%D' declared as an `inline' %s"
msgid "%qD declared as an %<inline%> field"
-@@ -42497,60 +42614,60 @@
+@@ -42497,60 +42493,60 @@
msgstr "'%D' erklæret som 'inline' %s"
# %s bliver omsat til typen
@@ -298968,7 +306834,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "defining explicit specialization `%D' in friend declaration"
msgid "defining explicit specialization %qD in friend declaration"
-@@ -42557,660 +42674,660 @@
+@@ -42557,660 +42553,660 @@
msgstr "definering af eksplicit specialisering '%D' i friend-erklæring"
#. Something like `template <class T> friend void f<T>()'.
@@ -299743,7 +307609,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr ""
-@@ -43217,45 +43334,45 @@
+@@ -43217,45 +43213,45 @@
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
@@ -299797,7 +307663,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "constructors cannot be declared virtual"
msgid "constructors cannot be declared %<virtual%>"
-@@ -43262,266 +43379,266 @@
+@@ -43262,266 +43258,266 @@
msgstr "konstruktionsfunktioner kan ikke erklæres virtual"
#. Cannot be both friend and virtual.
@@ -300110,7 +307976,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%T' has no non-static data member named `%D'"
msgid "non-static data member declared %<auto%>"
-@@ -43528,186 +43645,186 @@
+@@ -43528,186 +43524,186 @@
msgstr "'%T' har intet ikke-statisk medlem ved navn '%D'"
#. Something like struct S { int N::j; };
@@ -300328,7 +308194,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "cannot declare member function `%D' to have static linkage"
msgid "cannot declare member function %qD to have static linkage"
-@@ -43714,89 +43831,89 @@
+@@ -43714,89 +43710,89 @@
msgstr "kan ikke erklære medlemsfunktion '%D' til at have statisk kædning"
#. FIXME need arm citation
@@ -300433,7 +308299,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "parameter `%D' includes %s to array of unknown bound `%T'"
msgid "parameter %qD includes reference to array of unknown bound %qT"
-@@ -43817,72 +43934,72 @@
+@@ -43817,72 +43813,72 @@
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
@@ -300518,7 +308384,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "conversion to %s%s will never use a type conversion operator"
msgid "conversion to a base class will never use a type conversion operator"
-@@ -43889,123 +44006,123 @@
+@@ -43889,123 +43885,123 @@
msgstr "konvertering til %s%s vil aldrig bruge en typekonverteringsoperator"
#. 13.4.0.3
@@ -300663,7 +308529,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "'%#D' omerklæret som %C"
-@@ -44017,29 +44134,47 @@
+@@ -44017,29 +44013,47 @@
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
@@ -300717,7 +308583,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "friend declaration `%#D' declares a non-template function"
msgid "redeclaration of %qT as a non-template"
-@@ -44046,79 +44181,79 @@
+@@ -44046,79 +44060,79 @@
msgstr "friend-erklæring '%#D' erklærer en ikke-skabelonsfunktion"
# hænger sammen med næste tekst
@@ -300811,7 +308677,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
-@@ -44127,85 +44262,85 @@
+@@ -44127,85 +44141,85 @@
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
@@ -300912,7 +308778,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "use of %qD before deduction of %<auto%>"
msgstr ""
-@@ -44250,7 +44385,7 @@
+@@ -44250,7 +44264,7 @@
msgid "deleting %qT is undefined"
msgstr "benyttelse af delete på '%T' er ikke defineret"
@@ -300921,7 +308787,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "template declaration of `%#D'"
msgid "template declaration of %q#D"
-@@ -44277,7 +44412,7 @@
+@@ -44277,7 +44291,7 @@
#. [temp.mem]
#.
#. A destructor shall not be a member template.
@@ -300930,7 +308796,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "datamedlem '%D' kan ikke være en medlemsskabelon"
-@@ -44476,7 +44611,7 @@
+@@ -44476,7 +44490,7 @@
msgid "%qT declared with greater visibility than its base %qT"
msgstr ""
@@ -300939,7 +308805,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "%J'%F' declared `static' but never defined"
msgid "%q#D, declared using anonymous type, is used but never defined"
-@@ -44486,51 +44621,51 @@
+@@ -44486,51 +44500,51 @@
#. 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.
@@ -301000,7 +308866,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "default argument missing for parameter %P of `%+#D'"
msgid "default argument missing for parameter %P of %q+#D"
-@@ -44538,12 +44673,12 @@
+@@ -44538,12 +44552,12 @@
#. We mark a lambda conversion op as deleted if we can't
#. generate it properly; see maybe_add_lambda_conv_op.
@@ -301015,7 +308881,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "sizeof applied to a function type"
msgid "use of deleted function %qD"
-@@ -44645,7 +44780,7 @@
+@@ -44645,7 +44659,7 @@
msgid "%qD is not a member of %qT"
msgstr "'%D' er ikke et medlem af '%T'"
@@ -301024,7 +308890,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "%qD is not a member of %qD"
msgstr "'%D' er ikke et medlem af '%T'"
-@@ -44690,7 +44825,7 @@
+@@ -44690,7 +44704,7 @@
msgid "throwing NULL, which has integral, not pointer type"
msgstr "kaster NULL som har en heltals-, ikke en henvisningstype"
@@ -301033,7 +308899,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "%qD should never be overloaded"
msgstr "'%D' skal returnere pr. værdi (ikke reference)"
-@@ -44718,30 +44853,30 @@
+@@ -44718,30 +44732,30 @@
msgid "cannot catch type %qT because it involves types of variable size"
msgstr "kan ikke oprette typeinformation for typen '%T' fordi dens størrelse er variabel"
@@ -301069,7 +308935,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "but %qD does not throw; perhaps it should be declared %<noexcept%>"
msgstr ""
-@@ -44765,37 +44900,42 @@
+@@ -44765,37 +44779,42 @@
#. [temp.friend]
#. Friend declarations shall not declare partial
#. specializations.
@@ -301118,7 +308984,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "template parameter type `%T' declared `friend'"
msgid "template parameter type %qT declared %<friend%>"
-@@ -44802,48 +44942,48 @@
+@@ -44802,48 +44821,48 @@
msgstr "skabelonsparametertypen '%T' erklæret 'friend'"
#. template <class T> friend class A; where A is not a template
@@ -301175,7 +309041,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "(if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) -Wno-non-template-friend disables this warning"
msgid "(if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) "
-@@ -44902,20 +45042,20 @@
+@@ -44902,20 +44921,20 @@
msgid "invalid initializer for array member %q#D"
msgstr "ugyldig startværdi til virtuel medlemsfunktion '%D'"
@@ -301200,7 +309066,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "uninitialized reference member `%D'"
msgid "uninitialized reference member in %q#T"
-@@ -44973,304 +45113,310 @@
+@@ -44973,304 +44992,310 @@
msgid "base class %q#T should be explicitly initialized in the copy constructor"
msgstr "stamklassen '%#T' bør eksplicit blive klargjort i kopikonstruktionsfunktionen"
@@ -301569,7 +309435,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
msgstr ""
-@@ -45333,102 +45479,108 @@
+@@ -45333,102 +45358,108 @@
msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)"
msgstr ""
@@ -301697,7 +309563,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "creating pointer to member reference type `%T'"
msgid "copying non-static data member %q#D of rvalue reference type"
-@@ -45435,75 +45587,75 @@
+@@ -45435,75 +45466,75 @@
msgstr "opretter henvisning til medlemsreference af typen '%T'"
#. A trivial constructor doesn't have any NSDMI.
@@ -301787,7 +309653,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "defaulted function %q+D with default argument"
msgstr "%Hslutningen af filen læst inden i standardparameter"
-@@ -45697,8 +45849,8 @@
+@@ -45697,8 +45728,8 @@
msgstr "'%T' er ikke et navnerum"
#. C++11 7.3.3/10.
@@ -301798,7 +309664,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%D' is already declared in this scope"
msgid "%qD is already declared in this scope"
-@@ -45710,96 +45862,107 @@
+@@ -45710,96 +45741,107 @@
msgid "%qD not declared"
msgstr "'%D' ikke erklæret"
@@ -301923,7 +309789,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "suggested alternative:"
msgid_plural "suggested alternatives:"
-@@ -45806,22 +45969,22 @@
+@@ -45806,22 +45848,22 @@
msgstr[0] ""
msgstr[1] ""
@@ -301950,7 +309816,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
-@@ -45841,13 +46004,13 @@
+@@ -45841,13 +45883,13 @@
msgid "LEXER_DEBUGGING_ENABLED_P is not set to true"
msgstr ""
@@ -301967,7 +309833,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "%<#pragma acc routine%> not followed by a function declaration or definition"
msgstr "en global registervariabel følger en funktionsdefinition"
-@@ -45874,7 +46037,7 @@
+@@ -45874,7 +45916,7 @@
msgid "request for member %qE in non-class type %qT"
msgstr "forespørgsel efter medlemmet '%D' i '%E' som er af en ikke-klassetype '%T'"
@@ -301976,7 +309842,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "%<%T::%E%> has not been declared"
msgstr "'%#D' kan ikke erklæres"
-@@ -45944,12 +46107,6 @@
+@@ -45944,12 +45986,6 @@
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "semikolon mangler efter erklæring af '%T'"
@@ -301989,7 +309855,7 @@ Index: gcc/po/da.po
#: cp/parser.c:2975
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template"
-@@ -45972,7 +46129,7 @@
+@@ -45972,7 +46008,7 @@
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "overløb i konstant udtryk"
@@ -301998,7 +309864,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr ""
-@@ -46082,570 +46239,575 @@
+@@ -46082,570 +46118,575 @@
msgid "C++11 %<thread_local%> only available with -std=c++11 or -std=gnu++11"
msgstr ""
@@ -302680,7 +310546,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "%<friend%> used outside of class"
msgstr ""
-@@ -46652,114 +46814,114 @@
+@@ -46652,114 +46693,114 @@
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
@@ -302816,7 +310682,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "unexpected operand"
msgid "expected operator"
-@@ -46766,386 +46928,386 @@
+@@ -46766,386 +46807,386 @@
msgstr "uventet operand"
#. Warn that we do not support `export'.
@@ -303273,7 +311139,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr ""
-@@ -47154,7 +47316,7 @@
+@@ -47154,7 +47195,7 @@
#. here because we do not have enough
#. information about its original syntactic
#. form.
@@ -303282,7 +311148,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "invalid declarator"
msgstr "ugyldig erklærer"
-@@ -47161,336 +47323,341 @@
+@@ -47161,336 +47202,341 @@
#. But declarations with qualified-ids can't appear in a
#. function.
@@ -303687,7 +311553,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "for få skabelonsparameterlister angivet i erklæring af '%D'"
-@@ -47499,467 +47666,467 @@
+@@ -47499,467 +47545,467 @@
#. something like:
#.
#. template <class T> template <class U> void S::f();
@@ -304244,7 +312110,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "braced-group within expression allowed only inside a function"
msgid "%<#pragma acc routine%> does not refer to a function"
-@@ -47966,104 +48133,104 @@
+@@ -47966,104 +48012,104 @@
msgstr "sætningsblokke i udtryk er kun tilladt inde i en funktion"
#. cancel-and-throw is unimplemented.
@@ -304368,7 +312234,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "specializing `%#T' in different namespace"
msgid "specialization of %qD in different namespace"
-@@ -48070,42 +48237,42 @@
+@@ -48070,42 +48116,42 @@
msgstr "specialiserer '%#T' i andet navnerum"
# hænger sammen med foregående tekst, derfor ikke 'fra'
@@ -304418,7 +312284,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "specializing `%#T' in different namespace"
msgid "specializing %q#T in different namespace"
-@@ -48113,76 +48280,76 @@
+@@ -48113,76 +48159,76 @@
#. But if we've had an implicit instantiation, that's a
#. problem ([temp.expl.spec]/6).
@@ -304508,7 +312374,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "members of an explicitly specialized class are defined without a template header"
msgstr ""
-@@ -48189,62 +48356,62 @@
+@@ -48189,62 +48235,62 @@
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
@@ -304582,7 +312448,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%D' is not a member template function"
msgid "%qD is not a template function"
-@@ -48258,124 +48425,124 @@
+@@ -48258,124 +48304,124 @@
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
@@ -304729,7 +312595,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "template argument `%E' involves template parameter(s)"
msgid "template argument %qE involves template parameter(s)"
-@@ -48382,7 +48549,7 @@
+@@ -48382,7 +48428,7 @@
msgstr "skabelonsparameter '%E' involverer skabelonsparameter"
# flertalsform unødvendig
@@ -304738,7 +312604,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "type `%T' of template argument `%E' depends on template parameter(s)"
msgid "type %qT of template argument %qE depends on a template parameter"
-@@ -48390,19 +48557,19 @@
+@@ -48390,19 +48436,19 @@
msgstr[0] "typen '%T' af skabelonsparameteren '%E' afhænger af skabelonsparameter"
msgstr[1] "typen '%T' af skabelonsparameteren '%E' afhænger af skabelonsparameter"
@@ -304761,7 +312627,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "no default argument for `%D'"
msgid "no default argument for %qD"
-@@ -48411,52 +48578,52 @@
+@@ -48411,52 +48457,52 @@
#. A primary class template can only have one
#. parameter pack, at the end of the template
#. parameter list.
@@ -304823,7 +312689,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "member template %qD may not have virt-specifiers"
msgstr ""
-@@ -48466,66 +48633,66 @@
+@@ -48466,66 +48512,66 @@
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
@@ -304901,7 +312767,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "`%D' used without template parameters"
msgid "redeclared with %d template parameter"
-@@ -48533,7 +48700,7 @@
+@@ -48533,7 +48579,7 @@
msgstr[0] "'%D' benyttet uden skabelonsparametre"
msgstr[1] "'%D' benyttet uden skabelonsparametre"
@@ -304910,7 +312776,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "previous declaration `%#D' here"
msgid "previous declaration %qD used %d template parameter"
-@@ -48541,13 +48708,13 @@
+@@ -48541,13 +48587,13 @@
msgstr[0] "tidligere erklæring af '%#D' her"
msgstr[1] "tidligere erklæring af '%#D' her"
@@ -304926,7 +312792,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "redeclared here as `%#D'"
msgid "redeclared here as %q#D"
-@@ -48557,124 +48724,124 @@
+@@ -48557,124 +48603,124 @@
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
@@ -305073,7 +312939,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects at least %d argument, %d provided"
msgid_plural " candidate expects at least %d arguments, %d provided"
-@@ -48681,207 +48848,207 @@
+@@ -48681,207 +48727,207 @@
msgstr[0] ""
msgstr[1] ""
@@ -305317,7 +313183,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid " expected a type, got `%E'"
msgid " expected %qD but got %qD"
-@@ -48889,114 +49056,114 @@
+@@ -48889,114 +48935,114 @@
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
@@ -305452,7 +313318,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "redefinition of default argument for `%#D'"
msgid " when instantiating default argument for call to %D"
-@@ -49015,305 +49182,305 @@
+@@ -49015,305 +49061,305 @@
#.
#. is an attempt to declare a variable with function
#. type.
@@ -305811,7 +313677,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "duplicate explicit instantiation of `%#T'"
msgid "duplicate explicit instantiation of %q#T"
-@@ -49326,81 +49493,81 @@
+@@ -49326,81 +49372,81 @@
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
@@ -305907,7 +313773,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "insn does not satisfy its constraints:"
msgid "deduced expression type does not saatisy placeholder constraints"
-@@ -49444,19 +49611,19 @@
+@@ -49444,19 +49490,19 @@
msgid "typeid of qualified function type %qT"
msgstr "ISO C forbyder funktionsreturtype med modifikationer"
@@ -305930,7 +313796,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "cannot dynamic_cast `%E' (of type `%#T') to type `%#T' (%s)"
msgid "cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)"
-@@ -49474,94 +49641,94 @@
+@@ -49474,94 +49520,94 @@
msgid "%qT is an inaccessible base of %qT"
msgstr "'%T' er en utilgængelig stamklasse til '%T'"
@@ -306041,7 +313907,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "overriding final function %q+D"
msgstr ""
-@@ -49568,165 +49735,165 @@
+@@ -49568,165 +49614,165 @@
#. A static member function cannot match an inherited
#. virtual member function.
@@ -306236,7 +314102,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "use of class template `%T' as expression"
msgid "use of class template %qT as expression"
-@@ -49733,24 +49900,24 @@
+@@ -49733,24 +49779,24 @@
msgstr "brug af klasseskabelonen '%T' som udtryk"
#. Ambiguous reference to base members.
@@ -306265,7 +314131,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`%T' is not a template type"
msgid "%qT is not an enumeration type"
-@@ -49757,301 +49924,301 @@
+@@ -49757,301 +49803,301 @@
msgstr "'%T' er ikke en skabelonstype"
#. Parameter packs can only be used in templates
@@ -306624,7 +314490,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "left-hand operand of comma expression has no effect"
msgid "operand of fold expression has no unexpanded parameter packs"
-@@ -50058,156 +50225,150 @@
+@@ -50058,156 +50104,150 @@
msgstr "venstreoperanden til kommaudtrykket har ingen virkning"
# flertalsform unødvendig
@@ -306807,7 +314673,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_*-kontrol: mislykkedes i %s, ved %s:%d"
-@@ -50322,13 +50483,13 @@
+@@ -50322,13 +50362,13 @@
msgid "deprecated conversion from string constant to %qT"
msgstr "forældet konvertering fra strengkonstant til '%T'"
@@ -306823,7 +314689,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "request for member `%D' in `%E', which is of non-class type `%T'"
msgid "request for member %qD in %qE, which is of non-class type %qT"
-@@ -50356,317 +50517,311 @@
+@@ -50356,317 +50396,311 @@
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
msgstr ""
@@ -307204,7 +315070,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "parenthesis around '%E' cannot be used to form a pointer-to-member-function"
msgid "parentheses around %qE cannot be used to form a pointer-to-member-function"
-@@ -50673,12 +50828,12 @@
+@@ -50673,12 +50707,12 @@
msgstr "paranteser omkring '%E' kan ikke bruges til at danne en henvisning til medlemsfunktion"
#. An expression like &memfn.
@@ -307219,7 +315085,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&%T::%D'"
msgid "ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say %<&%T::%D%>"
-@@ -50685,387 +50840,387 @@
+@@ -50685,387 +50719,387 @@
msgstr "ISO C++ forbyder at tage adressen på en bundet medlemsfunktion for at danne en henvisning til medlemsfunktion; brug '&%T::%D'"
#. Make this a permerror because we used to accept it.
@@ -307674,7 +315540,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "returnerer en værdi fra en destruktionsfunktion"
-@@ -51072,45 +51227,45 @@
+@@ -51072,45 +51106,45 @@
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
@@ -307728,7 +315594,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "`operator new' must not return NULL unless it is declared `throw()' (or -fcheck-new is in effect)"
msgid "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -fcheck-new is in effect)"
-@@ -51117,12 +51272,12 @@
+@@ -51117,12 +51151,12 @@
msgstr "'operator new' må ikke returnere NULL medmindre den er erklæret 'throw()' (eller -fcheck-new er benyttet)"
#. Make this a permerror because we used to accept it.
@@ -307743,7 +315609,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr ""
-@@ -51371,156 +51526,156 @@
+@@ -51371,156 +51405,156 @@
msgid "insufficient contextual information to determine type"
msgstr "utilstrækkelige kontekstuelle oplysninger til at afgøre typen"
@@ -307927,7 +315793,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "call to function which throws incomplete type `%#T'"
msgid "call to function which throws incomplete type %q#T"
-@@ -51735,10 +51890,10 @@
+@@ -51735,10 +51769,10 @@
msgid "Array reference at %C cannot have more than %d dimensions"
msgstr ""
@@ -307941,7 +315807,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Coarrays disabled at %C, use %<-fcoarray=%> to enable"
msgstr ""
-@@ -51790,185 +51945,185 @@
+@@ -51790,185 +51824,185 @@
msgid "Expected expression in array specification at %C"
msgstr ""
@@ -308163,7 +316029,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "gfc_find_array_ref(): No ref found"
msgstr ""
-@@ -52937,7 +53092,7 @@
+@@ -52937,7 +52971,7 @@
#. Since the extension field is 8 bit wide, we can only have
#. up to 255 extension levels.
@@ -308172,7 +316038,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Maximum extension level reached with type %qs at %L"
msgstr ""
-@@ -53147,461 +53302,467 @@
+@@ -53147,461 +53181,467 @@
msgid "Assumed-shape array %qs at %L as dummy argument to the BIND(C) procedure %qs at %L"
msgstr ""
@@ -308729,7 +316595,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Return type of BIND(C) function %qs at %L cannot be a character string"
msgstr ""
-@@ -53608,311 +53769,311 @@
+@@ -53608,311 +53648,311 @@
#. Use gfc_warning_now because we won't say that the symbol fails
#. just because of this.
@@ -309104,7 +316970,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "No label definition for FORMAT statement at %0"
msgid "END statement instead of %s statement at %L"
-@@ -53919,550 +54080,550 @@
+@@ -53919,550 +53959,550 @@
msgstr "Ingen etiketdefinition for FORMAT-sætning ved %0"
#. We would have required END [something].
@@ -309760,7 +317626,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C"
msgstr ""
-@@ -54507,7 +54668,7 @@
+@@ -54507,7 +54547,7 @@
msgid "show_expr(): Don't know how to show expr"
msgstr ""
@@ -309769,7 +317635,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "show_code_node(): Bad statement code"
msgstr ""
-@@ -54775,27 +54936,27 @@
+@@ -54775,27 +54815,27 @@
msgid "BOZ literal at %L used to initialize non-integer variable %qs"
msgstr ""
@@ -309802,7 +317668,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option %<-fno-range-check%>"
msgstr ""
-@@ -55084,13 +55245,13 @@
+@@ -55084,13 +55124,13 @@
msgid "can't open input file: %s"
msgstr "kan ikke åbne uddatafilen '%s'"
@@ -309819,7 +317685,7 @@ Index: gcc/po/da.po
#: fortran/trans-intrinsic.c:6278
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "creating array of `%T'"
-@@ -55097,43 +55258,43 @@
+@@ -55097,43 +55137,43 @@
msgid "Creating array temporary at %L"
msgstr "opretter tabel af '%T'"
@@ -309871,7 +317737,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Scalarization using DIMEN_RANGE unimplemented"
msgstr ""
-@@ -55251,12 +55412,12 @@
+@@ -55251,12 +55291,12 @@
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
@@ -309886,7 +317752,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-@@ -56234,192 +56395,192 @@
+@@ -56234,192 +56274,192 @@
msgid "UNIT specifier not allowed with NEWUNIT at %C"
msgstr "Inge UNIT=-angivelse i I/O-kontrolliste ved %0"
@@ -310115,7 +317981,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Invalid expression statement"
msgid "Expected expression in %s statement at %C"
-@@ -56426,85 +56587,85 @@
+@@ -56426,85 +56466,85 @@
msgstr "Ugyldig udtrykssætning"
#. A general purpose syntax error.
@@ -310217,7 +318083,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "WAIT statement not allowed in PURE procedure at %C"
msgstr ""
-@@ -56568,568 +56729,574 @@
+@@ -56568,568 +56608,574 @@
msgid "Invalid character %<$%> at %L. Use %<-fdollar-ok%> to allow it as an extension"
msgstr ""
@@ -310903,7 +318769,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
msgid "Syntax error in common block name at %C"
msgstr "\"%s\" må ikke optræde i makroparameterliste"
-@@ -57137,169 +57304,169 @@
+@@ -57137,169 +57183,169 @@
#. If we find an error, just print it and continue,
#. cause it's just semantic, and we can see if there
#. are more errors.
@@ -311104,7 +318970,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Label %qs at %C doesn't match WHERE label %qs"
msgstr ""
-@@ -57638,844 +57805,844 @@
+@@ -57638,844 +57684,844 @@
msgid "Can't USE the same %smodule we're building!"
msgstr ""
@@ -312118,7 +319984,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type without default initializer at %L"
msgstr ""
-@@ -58555,28 +58722,28 @@
+@@ -58555,28 +58601,28 @@
msgid "Argument to %<-ffpe-summary%> is not valid: %s"
msgstr ""
@@ -312152,7 +320018,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "The value of n in %<-finit-character=n%> must be between 0 and 127"
msgstr ""
-@@ -58960,106 +59127,106 @@
+@@ -58960,106 +59006,106 @@
msgid "ASSOCIATE construct at %C"
msgstr ""
@@ -312279,7 +320145,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Unsupported VXT statement at %0"
msgid "Unexpected %s statement in MODULE at %C"
-@@ -59068,7 +59235,7 @@
+@@ -59068,7 +59114,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.
@@ -312288,7 +320154,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Two main PROGRAMs at %L and %C"
msgstr ""
-@@ -59270,183 +59437,189 @@
+@@ -59270,183 +59316,189 @@
msgid "Syntax error in COMPLEX constant at %C"
msgstr ""
@@ -312513,7 +320379,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "\"%s\" is not a valid filename"
msgid "%qs at %C is not a variable"
-@@ -59788,7 +59961,7 @@
+@@ -59788,7 +59840,7 @@
msgid "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively. Declare it RECURSIVE or use %<-frecursive%>"
msgstr ""
@@ -312522,7 +320388,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "Label %A already defined at %1 when redefined at %0"
msgid "Label %d referenced at %L is never defined"
-@@ -59898,7 +60071,7 @@
+@@ -59898,7 +59950,7 @@
msgid "Unable to resolve the specific function %qs at %L"
msgstr ""
@@ -312531,7 +320397,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Function %qs at %L has no IMPLICIT type"
msgstr ""
-@@ -60423,71 +60596,77 @@
+@@ -60423,71 +60475,77 @@
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr ""
@@ -312622,7 +320488,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr ""
-@@ -60496,211 +60675,211 @@
+@@ -60496,211 +60554,211 @@
#. 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.
@@ -312875,7 +320741,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
-@@ -60707,12 +60886,12 @@
+@@ -60707,12 +60765,12 @@
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
@@ -312890,7 +320756,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr ""
-@@ -60720,110 +60899,110 @@
+@@ -60720,110 +60778,110 @@
#. 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.
@@ -313022,7 +320888,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions."
msgstr ""
-@@ -60830,69 +61009,69 @@
+@@ -60830,69 +60888,69 @@
#. Even if standard does not support this feature, continue to build
#. the two statements to avoid upsetting frontend_passes.c.
@@ -313105,7 +320971,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s with binding label %s at %L uses the same global identifier as entity at %L"
msgstr ""
-@@ -60899,7 +61078,7 @@
+@@ -60899,7 +60957,7 @@
#. This can only happen if the variable is defined in a module - if it
#. isn't the same module, reject it.
@@ -313114,7 +320980,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s from module %s with binding label %s at %L uses the same global identifier as entity at %L from module %s"
msgstr ""
-@@ -60907,53 +61086,53 @@
+@@ -60907,53 +60965,53 @@
#. 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.
@@ -313178,7 +321044,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Implied SAVE for module variable %qs at %L, needed due to the default initialization"
msgstr ""
-@@ -60960,451 +61139,451 @@
+@@ -60960,451 +61018,451 @@
#. The shape of a main program or module array needs to be
#. constant.
@@ -313719,7 +321585,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER components"
msgstr ""
-@@ -61411,410 +61590,415 @@
+@@ -61411,430 +61469,433 @@
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
@@ -314216,7 +322082,33 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Contained procedure %qs at %L of a PURE procedure must also be PURE"
msgstr ""
-@@ -61894,7 +62078,7 @@
+
+ #: fortran/scanner.c:330
+-#, fuzzy, gcc-internal-format
++#, gcc-internal-format
+ msgid "Include directory %qs: %s"
+-msgstr "kan ikke oprette kataloget %s"
++msgstr "Inkluder mappe %qs: %s"
+
+ #: fortran/scanner.c:334
+-#, fuzzy, gcc-internal-format
+-#| msgid "ignoring nonexistent directory \"%s\"\n"
++#, gcc-internal-format
+ msgid "Nonexistent include directory %qs"
+-msgstr "ignorerer det ikke-eksisterende katalog \"%s\"\n"
++msgstr "Ikkeeksisterende include-mappe %qs"
+
+ #: fortran/scanner.c:339
+-#, fuzzy, gcc-internal-format
+-#| msgid "%s: Not a directory"
++#, gcc-internal-format
+ msgid "%qs is not a directory"
+-msgstr "%s: ikke et katalog"
++msgstr "%qs er ikke en mappe"
+
+ #: fortran/scanner.c:742
+ #, gcc-internal-format, gfc-internal-format
+@@ -61894,7 +61955,7 @@
msgid "Illegal preprocessor directive"
msgstr "%s i præprocessordirektiv"
@@ -314225,7 +322117,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format
#| msgid "can't open output file `%s'"
msgid "Can't open file %qs"
-@@ -62159,70 +62343,70 @@
+@@ -62159,70 +62220,70 @@
msgid "Argument NCOPIES of REPEAT intrinsic is too large at %L"
msgstr ""
@@ -314309,7 +322201,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "Character %qs in string at %L cannot be converted into character kind %d"
msgstr ""
-@@ -62667,17 +62851,17 @@
+@@ -62667,17 +62728,17 @@
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
@@ -314330,7 +322222,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
-@@ -62771,113 +62955,113 @@
+@@ -62771,113 +62832,113 @@
msgid "non-constant initialization expression at %L"
msgstr "tildeling af startværdi til new-udtryk med '='"
@@ -314465,7 +322357,7 @@ Index: gcc/po/da.po
#, fuzzy, gcc-internal-format, gfc-internal-format
#| msgid "too few arguments to function `%s'"
msgid "Unknown argument list function at %L"
-@@ -62894,7 +63078,7 @@
+@@ -62894,7 +62955,7 @@
msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
msgstr ""
@@ -314474,7 +322366,7 @@ Index: gcc/po/da.po
#, gcc-internal-format, gfc-internal-format
msgid "Sorry, the event component of derived type at %L is not yet supported"
msgstr ""
-@@ -62926,17 +63110,17 @@
+@@ -62926,17 +62987,17 @@
msgid "An alternate return at %L without a * dummy argument"
msgstr "Alternativ returangivelse ved %0 er ugyldig inden i en hovedprogramenhed"
@@ -314495,7 +322387,7 @@ Index: gcc/po/da.po
#, gcc-internal-format
msgid "gfc_trans_select(): Bad type for case expr."
msgstr ""
-@@ -64610,6 +64794,9 @@
+@@ -64610,6 +64671,9 @@
#~ msgid "Error:"
#~ msgstr "fejl: "
@@ -314505,7 +322397,7 @@ Index: gcc/po/da.po
#~ msgid "Specify the name of the target architecture"
#~ msgstr "Angiv navnet på målarkitekturen"
-@@ -64676,6 +64863,9 @@
+@@ -64676,6 +64740,9 @@
#~ msgid "-fsanitize-recover=address is not supported"
#~ msgstr "stakgrænseudtryk understøttes ikke"
@@ -314515,7 +322407,7 @@ Index: gcc/po/da.po
#, fuzzy
#~| msgid "stack frame too big"
#~ msgid "-mcpu string too large"
-@@ -64738,6 +64928,16 @@
+@@ -64738,6 +64805,16 @@
#~ msgstr " i kald af '%D'"
#, fuzzy
@@ -314532,7 +322424,7 @@ Index: gcc/po/da.po
#~| msgid "size of array is not an integral constant-expression"
#~ msgid "difference of two pointer expressions is not a constant expression"
#~ msgstr "størrelsen af tabel er ikke af et heltalligt konstantudtryk"
-@@ -64828,6 +65028,11 @@
+@@ -64828,6 +64905,11 @@
#~ msgstr "ugyldig brug af medlemmet '%D' i statisk medlemsfunktion"
#, fuzzy
@@ -314544,7 +322436,27 @@ Index: gcc/po/da.po
#~| msgid "%s %+#D"
#~ msgid "\t%+#D"
#~ msgstr "%s %+#D"
-@@ -67503,9 +67708,6 @@
+@@ -65846,9 +65928,6 @@
+ #~ msgid "%s: usage '%s [ -VqfnkN ] [ -i <istring> ] [ filename ... ]'\n"
+ #~ msgstr "%s: brug '%s [ -VqfnkN ] [ -i <istreng> ] [ filenavn ... ]'\n"
+
+-#~ msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B <dirname> ] [ filename ... ]'\n"
+-#~ msgstr "%s: brug '%s [ -VqfnkNlgC ] [ -B <katalognavn> ] [ filnavn ... ]'\n"
+-
+ #~ msgid "%s: warning: no read access for file `%s'\n"
+ #~ msgstr "%s: advarsel: ingen læseadgang til filen '%s'\n"
+
+@@ -65855,9 +65934,6 @@
+ #~ msgid "%s: warning: no write access for file `%s'\n"
+ #~ msgstr "%s: advarsel: ingen skriveadgang til filen '%s'\n"
+
+-#~ msgid "%s: warning: no write access for dir containing `%s'\n"
+-#~ msgstr "%s: advarsel: ingen skriveadgang til kataloget der indeholder '%s'\n"
+-
+ #~ msgid "%s: invalid file name: %s\n"
+ #~ msgstr "%s: ugyldigt filnavn: %s\n"
+
+@@ -67503,9 +67579,6 @@
#~ msgid "call_expr cannot be mangled due to a defect in the C++ ABI"
#~ msgstr "new kan ikke bruges på en funktionstype"
@@ -314554,7 +322466,106 @@ Index: gcc/po/da.po
#~ msgid "as `%D'"
#~ msgstr "som '%D'"
-@@ -70517,6 +70719,9 @@
+@@ -68987,23 +69060,6 @@
+ #~ " -isystem <ktlg> Føj <ktlg> til begyndelsen af systeminkluderingsstien\n"
+
+ #~ msgid ""
+-#~ " -idirafter <dir> Add <dir> to the end of the system include path\n"
+-#~ " -I <dir> Add <dir> to the end of the main include path\n"
+-#~ " -I- Fine-grained include path control; see info docs\n"
+-#~ " -nostdinc Do not search system include directories\n"
+-#~ " (dirs specified with -isystem will still be used)\n"
+-#~ " -nostdinc++ Do not search system include directories for C++\n"
+-#~ " -o <file> Put output into <file>\n"
+-#~ msgstr ""
+-#~ " -idirafter <ktlg> Føj <ktlg> til slutningen af systeminkluderingsstien\n"
+-#~ " -I <ktlg> Føj <ktlg> til slutningen af den alm. inkluderingssti\n"
+-#~ " -I- Nøje kontrolleret inkluderingssti; se info-hjælpen\n"
+-#~ " -nostdinc Søg ikke i systeminkluderingskataloger\n"
+-#~ " (kataloger angivet med -isystem søges dog stadig)\n"
+-#~ " -nostdinc++ Søg ikke i systeminkluderingskataloger til C++\n"
+-#~ " -o <fil> Send uddata til <fil>\n"
+-
+-#~ msgid ""
+ #~ " -trigraphs Support ISO C trigraphs\n"
+ #~ " -std=<std name> Specify the conformance standard; one of:\n"
+ #~ " gnu89, gnu99, c89, c99, iso9899:1990,\n"
+@@ -69202,9 +69258,6 @@
+ #~ msgid "absolute file name in remap_filename"
+ #~ msgstr "absolut filnavn i remap_filename"
+
+-#~ msgid "directory name missing after %s"
+-#~ msgstr "et katalognavn mangler efter %s"
+-
+ #~ msgid "file name missing after %s"
+ #~ msgstr "et filnavn mangler efter %s"
+
+@@ -69976,9 +70029,6 @@
+ #~ msgid "Don't announce deprecation of compiler features"
+ #~ msgstr "Annoncér ikke forældelse af oversætterfaciliteter"
+
+-#~ msgid "directory name must immediately follow -I"
+-#~ msgstr "et katalognavn skal følge umiddelbart efter -I"
+-
+ #~ msgid "Program does not use Unix-f77 dialectal features"
+ #~ msgstr "Program benytter ikke Unix f77-dialektiske faciliteter"
+
+@@ -69988,9 +70038,6 @@
+ #~ msgid "Fortran-specific form of -fbounds-check"
+ #~ msgstr "Fortran-specifik form for -fbounds-check"
+
+-#~ msgid "Add a directory for INCLUDE searching"
+-#~ msgstr "Tilføj et katalog til INCLUDE-søgning"
+-
+ #~ msgid "Set the maximum line length"
+ #~ msgstr "Angiv den maksimale linjelængde"
+
+@@ -70006,12 +70053,6 @@
+ #~ msgid "Choose class whose main method should be used"
+ #~ msgstr "Vælg klasse hvis main-metode skal bruges"
+
+-#~ msgid "Add directory to class path"
+-#~ msgstr "Tilføj katalog til klassesti"
+-
+-#~ msgid "Directory where class files should be written"
+-#~ msgstr "Katalog som klassefiler skrives i"
+-
+ #~ msgid "`%s' cannot be statically allocated"
+ #~ msgstr "'%s' kan ikke allokeres statisk"
+
+@@ -70210,21 +70251,6 @@
+ #~ msgid "operator '%s' has no left operand"
+ #~ msgstr "operatoren '%s' har ikke nogen venstre operand"
+
+-#~ msgid "changing search order for system directory \"%s\""
+-#~ msgstr "skifter søgeorden for systemkataloget \"%s\""
+-
+-#~ msgid " as it is the same as non-system directory \"%s\""
+-#~ msgstr " da det er det samme som ikke-system-kataloget \"%s\""
+-
+-#~ msgid " as it has already been specified as a non-system directory"
+-#~ msgstr " da det allerede er blevet angivet som et ikke-system-katalog"
+-
+-#~ msgid "I/O error on output"
+-#~ msgstr "I/O-fejl på uddata"
+-
+-#~ msgid "number missing after %s"
+-#~ msgstr "et tal mangler efter %s"
+-
+ #~ msgid "GNU CPP version %s (cpplib)"
+ #~ msgstr "GNU CPP version %s (cpplib)"
+
+@@ -70421,9 +70447,6 @@
+ #~ msgid "-trigraphs and -traditional are mutually exclusive"
+ #~ msgstr "-trigraphs og -traditional er indbyrdes uforenelige"
+
+-#~ msgid "directory name missing after -I option"
+-#~ msgstr "et katalognavn mangler efter '-I'-tilvalg"
+-
+ #~ msgid "`/*' within comment"
+ #~ msgstr "'/*' i en kommentar"
+
+@@ -70517,6 +70540,9 @@
#~ "Send venligst en komplet fejlrapport.\n"
#~ "Se %s for instruktioner."
@@ -314564,6 +322575,16 @@ Index: gcc/po/da.po
#~ msgid "optimization turned off"
#~ msgstr "optimeringer slået fra"
+@@ -71162,9 +71188,6 @@
+ #~ " -idirafter <ktlg> Føj <ktlg> til slutningen af systeminkluderingsstien\n"
+ #~ " -I <ktlg> Føj <ktlg> til slutningen af den alm. inkluderingssti\n"
+ #~ " -I- Nøje kontrolleret inkluderingssti; se info-hjælpen\n"
+-#~ " -nostdinc Søg ikke i systeminkluderingskataloger\n"
+-#~ " (kataloger angivet med -isystem søges dog stadig)\n"
+-#~ " -nostdinc++ Søg ikke i systeminkluderingskataloger til C++\n"
+ #~ " -o <fil> Send uddata til <fil>\n"
+ #~ " -pedantic Fremkom med alle advarsler påkrævet for nøje ISO C\n"
+ #~ " -pedantic-errors Behandl '-pedantic'-advarsler som fejl\n"
Index: gcc/po/tr.po
===================================================================
--- a/src/gcc/po/tr.po (.../tags/gcc_6_1_0_release)
@@ -431195,7 +439216,7 @@ Index: gcc/po/sv.po
-"POT-Creation-Date: 2016-01-31 15:50+0000\n"
-"PO-Revision-Date: 2016-04-24 20:48+0200\n"
+"POT-Creation-Date: 2016-04-21 15:24+0000\n"
-+"PO-Revision-Date: 2016-05-08 16:35+0200\n"
++"PO-Revision-Date: 2016-05-14 00:01+0200\n"
"Last-Translator: Göran Uddeborg <goeran at uddeborg.se>\n"
"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
"Language: sv\n"
@@ -462918,7 +470939,7 @@ Index: gcc/po/sv.po
#: fortran/decl.c:592
#, gcc-internal-format, gfc-internal-format
-@@ -46926,16 +46927,14 @@
+@@ -46926,22 +46927,19 @@
msgstr "Syntaxfel i specifikation av teckenlängd vid %C"
#: fortran/decl.c:990
@@ -462938,20 +470959,34 @@ Index: gcc/po/sv.po
+msgstr "Namnet %qs vid %C är redan definierat som ett generiskt gränssnitt vid %L"
#: fortran/decl.c:1011
- #, fuzzy, gcc-internal-format
-@@ -46999,441 +46998,447 @@
+-#, fuzzy, gcc-internal-format
+-#| msgid "Procedure '%s' at %C has an explicit interface and must not have attributes declared at %L"
++#, gcc-internal-format
+ msgid "Procedure %qs at %C has an explicit interface and must not have attributes declared at %L"
+-msgstr "Proceduren ”%s” vid %C har ett explicit gränssnitt och får inte ha attribut deklarerade vid %L"
++msgstr "Proceduren %qs vid %C har ett explicit gränssnitt och får inte ha attribut deklarerade vid %L"
+
+ #: fortran/decl.c:1082
+ #, gcc-internal-format
+@@ -46994,446 +46992,448 @@
+ msgstr "Variabeln %qs vid %L med attributet OPTIONAL i proceduren %qs som är BIND(C)"
+
+ #: fortran/decl.c:1195
+-#, fuzzy, gcc-internal-format
+-#| msgid "Assumed-shape array '%s' at %L as dummy argument to the BIND(C) procedure '%s' at %L"
++#, gcc-internal-format
msgid "Assumed-shape array %qs at %L as dummy argument to the BIND(C) procedure %qs at %L"
- msgstr "Vektorn ”%s” med antagen form vid %L som attrappargument till BIND(C)-proceduren ”%s” vid %L"
+-msgstr "Vektorn ”%s” med antagen form vid %L som attrappargument till BIND(C)-proceduren ”%s” vid %L"
++msgstr "Vektorn %qs med antagen form vid %L som attrappargument till BIND(C)-proceduren %qs vid %L"
-#: fortran/decl.c:1275
+#: fortran/decl.c:1244
-+#, fuzzy, gcc-internal-format
-+#| msgid "Symbol %qs at %L already has basic type of %s"
+ #, gcc-internal-format
+msgid "Symbol %qs at %C also declared as a type at %L"
-+msgstr "Symbolen %qs vid %L har redan grundtypen %s"
++msgstr "Symbolen %qs vid %C är också deklarerad som en typ vid %L"
+
+#: fortran/decl.c:1303
- #, gcc-internal-format
++#, gcc-internal-format
msgid "Variable %qs in common block %qs at %C must be declared with a C interoperable kind since common block %qs is BIND(C)"
msgstr "Variabeln %qs i common-blocket %qs vid %C måste deklareras med en sort som är C-interoperativ eftersom common-blocket %qs är BIND(C)"
@@ -463248,11 +471283,13 @@ Index: gcc/po/sv.po
msgstr "Typnamnet %qs vid %C är tvetydigt"
-#: fortran/decl.c:2977
+-#, fuzzy, gcc-internal-format
+-#| msgid "Type name '%s' at %C conflicts with previously declared entity at %L, which has the same name"
+#: fortran/decl.c:3005
- #, fuzzy, gcc-internal-format
- #| msgid "Type name '%s' at %C conflicts with previously declared entity at %L, which has the same name"
++#, gcc-internal-format
msgid "Type name %qs at %C conflicts with previously declared entity at %L, which has the same name"
- msgstr "Typnamnet ”%s” vid %C står i konflikt med tidigare deklarerad enhet vid %L, som har samma namn"
+-msgstr "Typnamnet ”%s” vid %C står i konflikt med tidigare deklarerad enhet vid %L, som har samma namn"
++msgstr "Typnamnet %qs vid %C står i konflikt med tidigare deklarerad enhet vid %L, som har samma namn"
-#: fortran/decl.c:3094
+#: fortran/decl.c:3122
@@ -463297,11 +471334,13 @@ Index: gcc/po/sv.po
msgstr "IMPORT-sats vid %C endast tillåten inuti en INTERFACE-kropp"
-#: fortran/decl.c:3384
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "IMPORT statement at %C only permitted in an INTERFACE body"
+#: fortran/decl.c:3412
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "IMPORT statement at %C only permitted in an INTERFACE body"
++#, gcc-internal-format, gfc-internal-format
msgid "F2008: C1210 IMPORT statement at %C is not permitted in a module procedure interface body"
- msgstr "IMPORT-sats vid %C endast tillåten inuti en INTERFACE-kropp"
+-msgstr "IMPORT-sats vid %C endast tillåten inuti en INTERFACE-kropp"
++msgstr "F2008: C1210 IMPORT-sats vid %C är inte tillåten i en moduls procedurgränssnittskropp"
-#: fortran/decl.c:3389
+#: fortran/decl.c:3417
@@ -463476,7 +471515,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Return type of BIND(C) function %qs at %L cannot be a character string"
msgstr "Returtyp till BIND(C)-funktion %qs vid %L kan inte vara en teckensträng"
-@@ -47440,829 +47445,829 @@
+@@ -47440,829 +47440,825 @@
#. Use gfc_warning_now because we won't say that the symbol fails
#. just because of this.
@@ -463524,13 +471563,12 @@ Index: gcc/po/sv.po
-#: fortran/decl.c:4619
+#: fortran/decl.c:4615
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "IMPURE procedure at %C"
+ #, gcc-internal-format, gfc-internal-format
+msgid "MODULE prefix at %C"
-+msgstr "IMPURE-procedur vid %C"
++msgstr "MODULE-prefix vid %C"
+
+#: fortran/decl.c:4660
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "IMPURE procedure at %C"
msgstr "IMPURE-procedur vid %C"
@@ -463577,11 +471615,13 @@ Index: gcc/po/sv.po
msgstr "Formella argumentnamnen till MODULE PROCEDURE stämmer inte (%s/%s) vid %C"
-#: fortran/decl.c:4850
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "double colon in MODULE PROCEDURE statement at %L"
+#: fortran/decl.c:4876
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "double colon in MODULE PROCEDURE statement at %L"
++#, gcc-internal-format, gfc-internal-format
msgid "Mismatch in number of MODULE PROCEDURE formal arguments at %C"
- msgstr "dubbelkolon i MODULE PROCEDURE-sats vid %L"
+-msgstr "dubbelkolon i MODULE PROCEDURE-sats vid %L"
++msgstr "Antalet formella MODULE PROCEDURE-argument vid %C stämmer inte"
-#: fortran/decl.c:4889
+#: fortran/decl.c:4915
@@ -463707,11 +471747,13 @@ Index: gcc/po/sv.po
msgstr "ENTRY-sats vid %C kan inte förekomma inuti en MODULE"
-#: fortran/decl.c:5750
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "ENTRY statement at %C cannot appear within a MODULE"
+#: fortran/decl.c:5784
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "ENTRY statement at %C cannot appear within a MODULE"
++#, gcc-internal-format, gfc-internal-format
msgid "ENTRY statement at %C cannot appear within a SUBMODULE"
- msgstr "ENTRY-sats vid %C kan inte förekomma inuti en MODULE"
+-msgstr "ENTRY-sats vid %C kan inte förekomma inuti en MODULE"
++msgstr "ENTRY-sats vid %C kan inte förekomma inuti en SUBMODULE"
-#: fortran/decl.c:5753
+#: fortran/decl.c:5787
@@ -464111,11 +472153,13 @@ Index: gcc/po/sv.po
msgstr "Syntaxfel i ASYNCHRONOUS-sats vid %C"
-#: fortran/decl.c:7679
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "PROCEDURE list at %C"
+#: fortran/decl.c:7719
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "PROCEDURE list at %C"
++#, gcc-internal-format, gfc-internal-format
msgid "MODULE PROCEDURE declaration at %C"
- msgstr "PROCEDURE-lista vid %C"
+-msgstr "PROCEDURE-lista vid %C"
++msgstr "MODULE PROCEDURE-deklaration vid %C"
-#: fortran/decl.c:7772
+#: fortran/decl.c:7812
@@ -464476,7 +472520,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C"
msgstr "Syntaxfel i !GCC$ ATTRIBUTES-sats vid %C"
-@@ -48307,7 +48312,7 @@
+@@ -48307,7 +48303,7 @@
msgid "show_expr(): Don't know how to show expr"
msgstr "show_expr(): Vet inte hur uttrycket skall visas"
@@ -464485,7 +472529,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "show_code_node(): Bad statement code"
msgstr "show_code_node(): Felaktig satskod"
-@@ -48567,27 +48572,27 @@
+@@ -48567,27 +48563,27 @@
msgid "BOZ literal at %L used to initialize non-integer variable %qs"
msgstr "BOZ-literal vid %L används för att initiera icke-heltalsvariabeln %qs"
@@ -464518,7 +472562,59 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option %<-fno-range-check%>"
msgstr "Aritmetisk NaN vid bitvis överförd BOZ vid %L. Denna kontroll kan avaktiveras med flaggan %<-fno-range-check%>"
-@@ -48876,58 +48881,58 @@
+@@ -48693,10 +48689,9 @@
+ msgstr "Procedurpekarmålet %qs vid %L måste vara antingen en inbyggd, värd, värd- eller användningsassocierad, refererad eller ha attributet EXTERNAL"
+
+ #: fortran/expr.c:3635
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Data-pointer-object &L must be unlimited polymorphic, a sequence derived type or of a type with the BIND attribute assignment at %L to be compatible with an unlimited polymorphic target"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Data-pointer-object at %L must be unlimited polymorphic, or of a type with the BIND or SEQUENCE attribute, to be compatible with an unlimited polymorphic target"
+-msgstr "Datapekarobjekt &L måste vara obegränsat polymorft, en sekvens härledd typ eller av en typ med attibutet BIND-tilldelning vid %L för att vara kompatibel med ett obegränsat polymorft mål"
++msgstr "Datapekarobjekt vid %L måste vara obegränsat polymorft, eller av en typ med attributet BIND eller SEQUENCE, för att vara kompatibel med ett obegränsat polymorft mål"
+
+ #: fortran/expr.c:3640
+ #, gcc-internal-format, gfc-internal-format
+@@ -48809,10 +48804,9 @@
+ msgstr "Icke-POINTER i pekarassociationssammanhang (%s) vid %L"
+
+ #: fortran/expr.c:4845
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Named constant %qs in variable definition context (%s) at %L"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Type inaccessible in variable definition context (%s) at %L"
+-msgstr "Namngiven konstant %qs i variabeldefinitionssammanhang (%s) vid %L"
++msgstr "Typen är oåtkomlig i variabeldefinitionssammanhang (%s) vid %L"
+
+ #: fortran/expr.c:4858
+ #, gcc-internal-format, gfc-internal-format
+@@ -48820,10 +48814,9 @@
+ msgstr "LOCK_TYPE i variabeldefinitionssammanhang (%s) vid %L"
+
+ #: fortran/expr.c:4871
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "LOCK_TYPE in variable definition context (%s) at %L"
++#, gcc-internal-format, gfc-internal-format
+ msgid "LOCK_EVENT in variable definition context (%s) at %L"
+-msgstr "LOCK_TYPE i variabeldefinitionssammanhang (%s) vid %L"
++msgstr "LOCK_EVENT i variabeldefinitionssammanhang (%s) vid %L"
+
+ #: fortran/expr.c:4900
+ #, gcc-internal-format
+@@ -48861,10 +48854,9 @@
+ msgstr "%qs vid %L som är associerad med uttryck kan inte användas i ett variabeldefinitionssammanhang (%s)"
+
+ #: fortran/expr.c:5015
+-#, fuzzy, gcc-internal-format
+-#| msgid "Associate-name '%s' can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
++#, gcc-internal-format
+ msgid "Associate-name %qs can not appear in a variable definition context (%s) at %L because its target at %L can not, either"
+-msgstr "Associationsnamn ”%s” kan inte förekomma i ett variabeldefinitionssammanhang (%s) vid %L eftersom dess mål vid %L inte heller kan"
++msgstr "Associationsnamn %qs kan inte förekomma i ett variabeldefinitionssammanhang (%s) vid %L eftersom dess mål vid %L inte heller kan"
+
+ #: fortran/expr.c:5057
+ #, gcc-internal-format, gfc-internal-format
+@@ -48876,58 +48868,54 @@
msgid "can't open input file: %s"
msgstr "Kan inte öppna indatafil: %s"
@@ -464550,32 +472646,40 @@ Index: gcc/po/sv.po
msgstr "otillåten OP i optimize_comparison"
-#: fortran/frontend-passes.c:1888
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable '%s' at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to subroutine '%s'"
+#: fortran/frontend-passes.c:1887
- #, fuzzy, gcc-internal-format
- #| msgid "Variable '%s' at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to subroutine '%s'"
++#, gcc-internal-format
msgid "Variable %qs at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to subroutine %qs"
- msgstr "Variabeln ”%s” vid %L satt till odefinierad inuti en slinga som börjar vid %L är argument INTENT(OUT) till subrutin ”%s”"
+-msgstr "Variabeln ”%s” vid %L satt till odefinierad inuti en slinga som börjar vid %L är argument INTENT(OUT) till subrutin ”%s”"
++msgstr "Variabeln %qs vid %L satt till odefinierad inuti en slinga som börjar vid %L är argument INTENT(OUT) till subrutin %qs"
-#: fortran/frontend-passes.c:1895
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to subroutine '%s'"
+#: fortran/frontend-passes.c:1894
- #, fuzzy, gcc-internal-format
- #| msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to subroutine '%s'"
++#, gcc-internal-format
msgid "Variable %qs at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to subroutine %qs"
- msgstr "Variabeln ”%s” vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till subrutin ”%s”"
+-msgstr "Variabeln ”%s” vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till subrutin ”%s”"
++msgstr "Variabeln %qs vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till subrutin %qs"
-#: fortran/frontend-passes.c:1960
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable '%s' at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to function '%s'"
+#: fortran/frontend-passes.c:1959
- #, fuzzy, gcc-internal-format
- #| msgid "Variable '%s' at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to function '%s'"
++#, gcc-internal-format
msgid "Variable %qs at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to function %qs"
- msgstr "Variabeln ”%s” vid %L satt till odefinierad inuti slingan som börjar vid %L är argument INTENT(OUT) till funktionen ”%s”"
+-msgstr "Variabeln ”%s” vid %L satt till odefinierad inuti slingan som börjar vid %L är argument INTENT(OUT) till funktionen ”%s”"
++msgstr "Variabeln %qs vid %L satt till odefinierad inuti slingan som börjar vid %L är argument INTENT(OUT) till funktionen %qs"
-#: fortran/frontend-passes.c:1966
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function '%s'"
+#: fortran/frontend-passes.c:1965
- #, fuzzy, gcc-internal-format
- #| msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function '%s'"
++#, gcc-internal-format
msgid "Variable %qs at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function %qs"
- msgstr "Variabeln ”%s” vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till funktionen ”%s”"
+-msgstr "Variabeln ”%s” vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till funktionen ”%s”"
++msgstr "Variabeln %qs vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till funktionen %qs"
-#: fortran/frontend-passes.c:2214 fortran/trans-expr.c:1491
+#: fortran/frontend-passes.c:2213 fortran/trans-expr.c:1522
@@ -464588,7 +472692,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Scalarization using DIMEN_RANGE unimplemented"
msgstr "Skalärisering med DIMEN_RANGE är oimplementerat"
-@@ -49042,12 +49047,12 @@
+@@ -49042,12 +49030,12 @@
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr "Andra argumentet av definierad tilldelning vid %L måste vara INTENT(IN)"
@@ -464603,7 +472707,59 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr "Andra argumentet till operatorgränssnitt vid %L måste vara INTENT(IN)"
-@@ -49996,264 +50001,264 @@
+@@ -49183,10 +49171,9 @@
+ msgstr "Co-ordning stämmer inte i argument %qs vid %L (%d och %d)"
+
+ #: fortran/interface.c:2142
+-#, fuzzy, gcc-internal-format
+-#| msgid "Actual argument to %qs at %L must be simply contiguous"
++#, gcc-internal-format
+ msgid "Actual argument to %qs at %L must be simply contiguous or an element of such an array"
+-msgstr "Aktuellt argument till %qs vid %L måste vara enkelt sammanhängande"
++msgstr "Aktuellt argument till %qs vid %L måste vara enkelt sammanhängande eller ett element i en sådan vektor"
+
+ #: fortran/interface.c:2157
+ #, gcc-internal-format
+@@ -49194,10 +49181,9 @@
+ msgstr "Aktuellt argument till icke-INTENT(INOUT)-attrappen %qs vid %L, som är LOCK_TYPE eller har en LOCK_TYPE-komponent"
+
+ #: fortran/interface.c:2172
+-#, fuzzy, gcc-internal-format
+-#| msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is LOCK_TYPE or has a LOCK_TYPE component"
++#, gcc-internal-format
+ msgid "Actual argument to non-INTENT(INOUT) dummy %qs at %L, which is EVENT_TYPE or has a EVENT_TYPE component"
+-msgstr "Aktuellt argument till icke-INTENT(INOUT)-attrappen %qs vid %L, som är LOCK_TYPE eller har en LOCK_TYPE-komponent"
++msgstr "Aktuellt argument till icke-INTENT(INOUT)-attrappen %qs vid %L, som är EVENT_TYPE eller har en EVENT_TYPE-komponent"
+
+ #: fortran/interface.c:2191
+ #, gcc-internal-format
+@@ -49465,10 +49451,9 @@
+ msgstr "Aktuellt argument till LOCK_TYPE eller med LOCK_TYPE-komponent vid %L kräver ett explicit gränssnitt för proceduren %qs"
+
+ #: fortran/interface.c:3413
+-#, fuzzy, gcc-internal-format
+-#| msgid "Actual argument of LOCK_TYPE or with LOCK_TYPE component at %L requires an explicit interface for procedure %qs"
++#, gcc-internal-format
+ msgid "Actual argument of EVENT_TYPE or with EVENT_TYPE component at %L requires an explicit interface for procedure %qs"
+-msgstr "Aktuellt argument till LOCK_TYPE eller med LOCK_TYPE-komponent vid %L kräver ett explicit gränssnitt för proceduren %qs"
++msgstr "Aktuellt argument till EVENT_TYPE eller med EVENT_TYPE-komponent vid %L kräver ett explicit gränssnitt för proceduren %qs"
+
+ #: fortran/interface.c:3422
+ #, gcc-internal-format, gfc-internal-format
+@@ -49836,10 +49821,9 @@
+ msgstr "Formatsats i modulhuvudblock vid %C"
+
+ #: fortran/io.c:1207
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "ENTRY statement at %C cannot appear within an INTERFACE"
++#, gcc-internal-format, gfc-internal-format
+ msgid "FORMAT statement at %C cannot appear within an INTERFACE"
+-msgstr "ENTRY-sats vid %C kan inte förekomma inuti ett INTERFACE"
++msgstr "FORMAT-sats vid %C kan inte förekomma inuti ett INTERFACE"
+
+ #: fortran/io.c:1213
+ #, gcc-internal-format, gfc-internal-format
+@@ -49996,264 +49980,263 @@
msgid "UNIT specifier not allowed with NEWUNIT at %C"
msgstr "UNIT-specificerare är inte tillåten med NEWUNIT vid %C"
@@ -464680,11 +472836,13 @@ Index: gcc/po/sv.po
msgstr "%s-sats är inte tillåtet i PURE-procedur vid %C"
-#: fortran/io.c:2531
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "UNIT number in INQUIRE statement at %L can not be -1"
+#: fortran/io.c:2534
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "UNIT number in INQUIRE statement at %L can not be -1"
++#, gcc-internal-format, gfc-internal-format
msgid "UNIT number missing in statement at %L"
- msgstr "UNIT-tal i INQUIRE-sats vid %L får inte vara -1"
+-msgstr "UNIT-tal i INQUIRE-sats vid %L får inte vara -1"
++msgstr "UNIT-tal saknas i satsen vid %L"
-#: fortran/io.c:2539 fortran/io.c:2976
+#: fortran/io.c:2542 fortran/io.c:2979
@@ -464920,19 +473078,18 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "WAIT statement not allowed in PURE procedure at %C"
msgstr "WAIT-sats är inte tillåtet i PURE-procedur vid %C"
-@@ -50313,556 +50318,562 @@
+@@ -50313,556 +50296,555 @@
msgid "Invalid character %<$%> at %L. Use %<-fdollar-ok%> to allow it as an extension"
msgstr "Ogiltigt tecken %<$%> vid %L. Använd %<-fdollar-ok%> för att tillåta det som en utökning"
-#: fortran/match.c:883
+#: fortran/match.c:882
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "Loop variable at %C cannot be a coarray"
+ #, gcc-internal-format, gfc-internal-format
+msgid "Loop variable at %C cannot be an array"
-+msgstr "Slingvariabel vid %C får inte vara en co-vektor"
++msgstr "Slingvariabel vid %C får inte vara en vektor"
+
+#: fortran/match.c:889
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "Loop variable at %C cannot be a coarray"
msgstr "Slingvariabel vid %C får inte vara en co-vektor"
@@ -465250,25 +473407,31 @@ Index: gcc/po/sv.po
msgstr "ERROR STOP-sats vid %C"
-#: fortran/match.c:2772
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Image control statement %s at %C in PURE procedure"
+#: fortran/match.c:2778
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Image control statement %s at %C in PURE procedure"
++#, gcc-internal-format, gfc-internal-format
msgid "Image control statement EVENT %s at %C in PURE procedure"
- msgstr "Bildstyrsats %s vid %C i PURE-procedur"
+-msgstr "Bildstyrsats %s vid %C i PURE-procedur"
++msgstr "Bildstyrsats EVENT %s vid %C i PURE-procedur"
-#: fortran/match.c:2787
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Image control statement %s at %C in CRITICAL block"
+#: fortran/match.c:2793
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Image control statement %s at %C in CRITICAL block"
++#, gcc-internal-format, gfc-internal-format
msgid "Image control statement EVENT %s at %C in CRITICAL block"
- msgstr "Bildkontrollsatsen %s vid %C i CRITICAL-block"
+-msgstr "Bildkontrollsatsen %s vid %C i CRITICAL-block"
++msgstr "Bildkontrollsatsen EVENT %s vid %C i CRITICAL-block"
-#: fortran/match.c:2794
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Image control statement %s at %C in DO CONCURRENT block"
+#: fortran/match.c:2800
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Image control statement %s at %C in DO CONCURRENT block"
++#, gcc-internal-format, gfc-internal-format
msgid "Image control statement EVENT %s at %C in DO CONCURRENT block"
- msgstr "Bildkontrollsatsen %s vid %C i DO CONCURRENT-block"
+-msgstr "Bildkontrollsatsen %s vid %C i DO CONCURRENT-block"
++msgstr "Bildkontrollsatsen EVENT %s vid %C i DO CONCURRENT-block"
-#: fortran/match.c:2824 fortran/match.c:3019 fortran/match.c:3231
-#: fortran/match.c:3741 fortran/match.c:4078
@@ -465287,25 +473450,31 @@ Index: gcc/po/sv.po
msgstr "Överflödig ERRMSG-tagg funnen vid %L "
-#: fortran/match.c:2866
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Redundant STAT tag found at %L "
+#: fortran/match.c:2872
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Redundant STAT tag found at %L "
++#, gcc-internal-format, gfc-internal-format
msgid "Redundant UNTIL_COUNT tag found at %L "
- msgstr "Överflödig STAT-tagg funnen vid %L "
+-msgstr "Överflödig STAT-tagg funnen vid %L "
++msgstr "Överflödig UNTIL_COUNT-tagg funnen vid %L "
-#: fortran/match.c:2932
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "ENTRY statement at %C"
+#: fortran/match.c:2938
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "ENTRY statement at %C"
++#, gcc-internal-format, gfc-internal-format
msgid "EVENT POST statement at %C"
- msgstr "ENTRY-sats vid %C"
+-msgstr "ENTRY-sats vid %C"
++msgstr "ENTRY POST-sats vid %C"
-#: fortran/match.c:2942
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "ENTRY statement at %C"
+#: fortran/match.c:2948
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "ENTRY statement at %C"
++#, gcc-internal-format, gfc-internal-format
msgid "EVENT WAIT statement at %C"
- msgstr "ENTRY-sats vid %C"
+-msgstr "ENTRY-sats vid %C"
++msgstr "ENTRY WAIT-sats vid %C"
-#: fortran/match.c:2967
+#: fortran/match.c:2973
@@ -465594,16 +473763,18 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in common block name at %C"
msgstr "Syntaxfel i common-blocknamn vid %C"
-@@ -50870,160 +50881,160 @@
+@@ -50870,169 +50852,165 @@
#. 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:4537
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable '%s' at %L in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is bind(c)"
+#: fortran/match.c:4543
- #, fuzzy, gcc-internal-format
- #| msgid "Variable '%s' at %L in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is bind(c)"
++#, gcc-internal-format
msgid "Variable %qs at %L in common block %qs at %C must be declared with a C interoperable kind since common block %qs is bind(c)"
- msgstr "Variabel ”%s” vid %L i common-block ”%s” vid %C måste deklareras med en C-interoperativ sort eftersom common-block ”%s” är bind(c)"
+-msgstr "Variabel ”%s” vid %L i common-block ”%s” vid %C måste deklareras med en C-interoperativ sort eftersom common-block ”%s” är bind(c)"
++msgstr "Variabel %qs vid %L i common-block %qs vid %C måste deklareras med en C-interoperativ sort eftersom common-block %qs är bind(c)"
-#: fortran/match.c:4546
+#: fortran/match.c:4552
@@ -465696,11 +473867,13 @@ Index: gcc/po/sv.po
msgstr "Satsfunktion vid %L är rekursiv"
-#: fortran/match.c:5118
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "ENTRY statement at %C cannot appear within an INTERFACE"
+#: fortran/match.c:5124
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "ENTRY statement at %C cannot appear within an INTERFACE"
++#, gcc-internal-format, gfc-internal-format
msgid "Statement function at %L cannot appear within an INTERFACE"
- msgstr "ENTRY-sats vid %C kan inte förekomma inuti ett INTERFACE"
+-msgstr "ENTRY-sats vid %C kan inte förekomma inuti ett INTERFACE"
++msgstr "Satsfunktion vid %L kan inte förekomma inuti ett INTERFACE"
-#: fortran/match.c:5123
+#: fortran/match.c:5129
@@ -465709,11 +473882,13 @@ Index: gcc/po/sv.po
msgstr "Satsfunktion vid %C"
-#: fortran/match.c:5248 fortran/match.c:5264
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Expression in CASE statement at %L must be scalar"
+#: fortran/match.c:5254 fortran/match.c:5270
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Expression in CASE statement at %L must be scalar"
++#, gcc-internal-format, gfc-internal-format
msgid "Expression in CASE selector at %L cannot be %s"
- msgstr "Uttryck i CASE-sats vid %L måste vara skalärt"
+-msgstr "Uttryck i CASE-sats vid %L måste vara skalärt"
++msgstr "Uttryck i CASE-sats vid %L får inte vara %s"
-#: fortran/match.c:5286
+#: fortran/match.c:5292
@@ -465786,9 +473961,48 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Label %qs at %C doesn't match WHERE label %qs"
msgstr "Etiketten %qs vid %C stämmer inte med WHERE-etikett %qs"
-@@ -51349,846 +51360,846 @@
+
+ #: fortran/matchexp.c:72
+-#, fuzzy, gcc-internal-format
+-#| msgid "Bad character %<%c%> in OPERATOR name at %C"
++#, gcc-internal-format
+ msgid "Bad character %qc in OPERATOR name at %C"
+-msgstr "Felaktigt tecken %<%c%> i OPERATOR-namn vid %C"
++msgstr "Felaktigt tecken %qc i OPERATOR-namn vid %C"
+
+ #: fortran/matchexp.c:80
+ #, gcc-internal-format
+@@ -51121,16 +51099,14 @@
+ msgstr "Namnet %qs vid %C har redan använts som ett externt modulnamn."
+
+ #: fortran/module.c:744
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Coarray declaration at %C"
++#, gcc-internal-format, gfc-internal-format
+ msgid "SUBMODULE declaration at %C"
+-msgstr "Co-vektordeklaration vid %C"
++msgstr "SUBMODULE-deklaration vid %C"
+
+ #: fortran/module.c:814
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Syntax error in SAVE statement at %C"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Syntax error in SUBMODULE statement at %C"
+-msgstr "Syntaxfel i SAVE-sats vid %C"
++msgstr "Syntaxfel i SUBMODULE-sats vid %C"
+
+ #: fortran/module.c:1159
+ #, gcc-internal-format
+@@ -51344,851 +51320,840 @@
+ msgstr "Kan inte läsa modulfilen %qs öppnad vid %C, eftersom den skapades av en annan version av GNU Fortran"
+
+ #: fortran/module.c:6967
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Can't USE the same module we're building!"
++#, gcc-internal-format, gfc-internal-format
msgid "Can't USE the same %smodule we're building!"
- msgstr "Det går inta att USE samma modul vi bygger!"
+-msgstr "Det går inta att USE samma modul vi bygger!"
++msgstr "Det går inta att USE samma %smodul vi bygger!"
-#: fortran/openmp.c:287 fortran/openmp.c:495 fortran/openmp.c:2397
-#: fortran/openmp.c:2471
@@ -465811,25 +474025,31 @@ Index: gcc/po/sv.po
msgstr "Syntaxfel i OpenACC-uttryckslista vid %C"
-#: fortran/openmp.c:463
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Threadprivate variable at %C is an element of a COMMON block"
+#: fortran/openmp.c:465
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Threadprivate variable at %C is an element of a COMMON block"
++#, gcc-internal-format, gfc-internal-format
msgid "Variable at %C is an element of a COMMON block"
- msgstr "Trådprivat variabel vid %C är ett element i ett COMMON-block"
+-msgstr "Trådprivat variabel vid %C är ett element i ett COMMON-block"
++msgstr "Variabel vid %C är ett element i ett COMMON-block"
-#: fortran/openmp.c:523
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Unexpected junk after !$ACC ROUTINE at %C"
+#: fortran/openmp.c:525
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Unexpected junk after !$ACC ROUTINE at %C"
++#, gcc-internal-format, gfc-internal-format
msgid "Unexpected junk after !$ACC DECLARE at %C"
- msgstr "Oväntat skräp efter !$ACC ROUTINE vid %C"
+-msgstr "Oväntat skräp efter !$ACC ROUTINE vid %C"
++msgstr "Oväntat skräp efter !$ACC DECLARE vid %C"
-#: fortran/openmp.c:533
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Syntax error in !$OMP DECLARE TARGET list at %C"
+#: fortran/openmp.c:535
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Syntax error in !$OMP DECLARE TARGET list at %C"
++#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$ACC DECLARE list at %C"
- msgstr "Syntaxfel i !$OMP DECLARE TARGET-lista vid %C"
+-msgstr "Syntaxfel i !$OMP DECLARE TARGET-lista vid %C"
++msgstr "Syntaxfel i !$OMP DECLARE-lista vid %C"
-#: fortran/openmp.c:989
+#: fortran/openmp.c:991
@@ -465844,11 +474064,13 @@ Index: gcc/po/sv.po
msgstr "COLLAPSE-klausulargument är inte ett konstant positivt heltal vid %C"
-#: fortran/openmp.c:1474
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Invalid argument to $!ACC WAIT at %L"
+#: fortran/openmp.c:1476
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Invalid argument to $!ACC WAIT at %L"
++#, gcc-internal-format, gfc-internal-format
msgid "Invalid clause in module with $!ACC DECLARE at %L"
- msgstr "Ogiltiga argument till $!ACC WAIT vid %L"
+-msgstr "Ogiltiga argument till $!ACC WAIT vid %L"
++msgstr "Ogiltig klausul i modul med $!ACC DECLARE vid %L"
-#: fortran/openmp.c:1484
+#: fortran/openmp.c:1486
@@ -465857,18 +474079,22 @@ Index: gcc/po/sv.po
msgstr "Variabel i USE-associated med $!ACC DECLARE vid %L"
-#: fortran/openmp.c:1492
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Assumed size array %qs in %s clause at %L"
+#: fortran/openmp.c:1494
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Assumed size array %qs in %s clause at %L"
++#, gcc-internal-format, gfc-internal-format
msgid "Assumed-size dummy array with $!ACC DECLARE at %L"
- msgstr "Vektor %qs med antagen storlek i %s-klausul vid %L"
+-msgstr "Vektor %qs med antagen storlek i %s-klausul vid %L"
++msgstr "Attrappvektor med antagen storlek med $!ACC DECLARE at %L"
-#: fortran/openmp.c:1539
+-#, fuzzy, gcc-internal-format
+-#| msgid "%<#pragma acc update%> must contain at least one %<device%> or %<host/self%> clause"
+#: fortran/openmp.c:1541
- #, fuzzy, gcc-internal-format
- #| msgid "%<#pragma acc update%> must contain at least one %<device%> or %<host/self%> clause"
++#, gcc-internal-format
msgid "%<acc update%> must contain at least one %<device%> or %<host%> or %<self%> clause at %L"
- msgstr "%<#pragma acc update%> måste innehålla åtminstone en %<device%>- eller %<host/self%>-klausul"
+-msgstr "%<#pragma acc update%> måste innehålla åtminstone en %<device%>- eller %<host/self%>-klausul"
++msgstr "%<acc update%> måste innehålla åtminstone en %<device%>- eller %<host%>- eller %<self%>-klausul vid %L"
-#: fortran/openmp.c:1589
+#: fortran/openmp.c:1591
@@ -465895,11 +474121,13 @@ Index: gcc/po/sv.po
msgstr "Direktivet ACC CACHE måste vara inuti en slinga %C"
-#: fortran/openmp.c:1667
+-#, fuzzy, gcc-internal-format
+-#| msgid "storage class specified for typename"
+#: fortran/openmp.c:1669
- #, fuzzy, gcc-internal-format
- #| msgid "storage class specified for typename"
++#, gcc-internal-format
msgid "Multiple loop axes specified for routine"
- msgstr "lagringsklass angiven för typnamn"
+-msgstr "lagringsklass angiven för typnamn"
++msgstr "Multipla slingaxlar angivna för rutinen"
-#: fortran/openmp.c:1693
+#: fortran/openmp.c:1695
@@ -465908,11 +474136,13 @@ Index: gcc/po/sv.po
msgstr "Endast formen !$ACC ROUTINE utan en lista är tillåten i gränssnittsblock vid %C"
-#: fortran/openmp.c:1720
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, invalid function name %qs"
+#: fortran/openmp.c:1722
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, invalid function name %qs"
++#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, invalid function name %s"
- msgstr "Syntaxfel i !$ACC ROUTINE ( NAMN ) vid %C, felaktigt funktionsnamn %qs"
+-msgstr "Syntaxfel i !$ACC ROUTINE ( NAMN ) vid %C, felaktigt funktionsnamn %qs"
++msgstr "Syntaxfel i !$ACC ROUTINE ( NAMN ) vid %C, felaktigt funktionsnamn %s"
-#: fortran/openmp.c:1729
+#: fortran/openmp.c:1731
@@ -466237,11 +474467,13 @@ Index: gcc/po/sv.po
msgstr "Symbolen %qs finns i flera fall vid %L"
-#: fortran/openmp.c:3320
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable %qs cannot appear in the expression at %L"
+#: fortran/openmp.c:3322
- #, fuzzy, gcc-internal-format
- #| msgid "Variable %qs cannot appear in the expression at %L"
++#, gcc-internal-format
msgid "Array %qs is not permitted in reduction at %L"
- msgstr "Variabeln %qs kan inte förekomma i uttrycket vid %L"
+-msgstr "Variabeln %qs kan inte förekomma i uttrycket vid %L"
++msgstr "Vektorn %qs får inte förekomma i reduktionen vid %L"
-#: fortran/openmp.c:3333
+#: fortran/openmp.c:3335
@@ -466635,11 +474867,13 @@ Index: gcc/po/sv.po
msgstr "inte tillräckligt med DO-slingor för %s !$ACC LOOP vid %L"
-#: fortran/openmp.c:4745 fortran/openmp.c:4752
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "!$ACC LOOP %s in PARALLEL region doesn't allow non-static arguments at %L"
+#: fortran/openmp.c:4747 fortran/openmp.c:4754
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "!$ACC LOOP %s in PARALLEL region doesn't allow non-static arguments at %L"
++#, gcc-internal-format, gfc-internal-format
msgid "!$ACC LOOP %s in PARALLEL region doesn't allow %s arguments at %L"
- msgstr "!$ACC LOOP %s i PARALLEL-region tillåter inte icke-statiska argument vid %L"
+-msgstr "!$ACC LOOP %s i PARALLEL-region tillåter inte icke-statiska argument vid %L"
++msgstr "!$ACC LOOP %s i PARALLEL-region tillåter inte %s-argument vid %L"
-#: fortran/openmp.c:4774
+#: fortran/openmp.c:4776
@@ -466802,7 +475036,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type without default initializer at %L"
msgstr "INITIALIZER-klausul saknas i !$OMP DECLARE REDUCTION av härledd typ utan standardinitierare vid %L"
-@@ -52268,27 +52279,27 @@
+@@ -52268,27 +52233,27 @@
msgid "Argument to %<-ffpe-summary%> is not valid: %s"
msgstr "Argumentet till %<-ffpe-summary%> är inte giltigt: %s"
@@ -466835,7 +475069,73 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "The value of n in %<-finit-character=n%> must be between 0 and 127"
msgstr "Värdet på n i %<-finit-character=n%> måste vara mellan 0 och 127"
-@@ -52665,104 +52676,104 @@
+@@ -52504,40 +52469,34 @@
+ msgstr "Icke co-vektorkomponenten %s vid %L av typen LOCK_TYPE eller med en underkomponent av typen LOCK_TYPE måste ha en co-dimension eller vara en underkomponent till en co-vektor. (Variabler av typen %s får inte ha en co-dimension eftersom %s vid %L har en co-dimension eller en co-vektorunderkomponent)"
+
+ #: fortran/parse.c:2889
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Component %s at %L of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attribute"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Component %s at %L of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray, which is not possible as the component has the pointer attribute"
+-msgstr "Komponenten %s vid %L av typen LOCK_TYPE måste ha en co-dimension eller vara en delkomponent till en co-vektor, vilket inte är möjligt eftersom komponenten har pekarattributet"
++msgstr "Komponenten %s vid %L av typen EVENT_TYPE måste ha en co-dimension eller vara en delkomponent till en co-vektor, vilket inte är möjligt eftersom komponenten har pekarattributet"
+
+ #: fortran/parse.c:2895
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Pointer component %s at %L has a noncoarray subcomponent of type LOCK_TYPE, which must have a codimension or be a subcomponent of a coarray"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Pointer component %s at %L has a noncoarray subcomponent of type EVENT_TYPE, which must have a codimension or be a subcomponent of a coarray"
+-msgstr "Pekarkomponenten %s vid %L har en icke co-vektordelkomponent av typen LOCK_TYPE, som måste ha en co-dimension eller vara en delkomponent av en co-vektor"
++msgstr "Pekarkomponenten %s vid %L har en icke co-vektordelkomponent av typen EVENT_TYPE, som måste ha en co-dimension eller vara en delkomponent av en co-vektor"
+
+ #: fortran/parse.c:2900
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Allocatable component %s at %L of type LOCK_TYPE must have a codimension"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Allocatable component %s at %L of type EVENT_TYPE must have a codimension"
+-msgstr "Allokerbar komponent %s vid %L av typen LOCK_TYPE måste ha en co-dimension"
++msgstr "Allokerbar komponent %s vid %L av typen EVENT_TYPE måste ha en co-dimension"
+
+ #: fortran/parse.c:2904
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Allocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type LOCK_TYPE"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Allocatable component %s at %L must have a codimension as it has a noncoarray subcomponent of type EVENT_TYPE"
+-msgstr "Den allokerbara komponenten %s vid %L måste ha en co-dimension eftersom den har en icke co-vektordelkomponent av typen LOCK_TYPE"
++msgstr "Den allokerbara komponenten %s vid %L måste ha en co-dimension eftersom den har en icke co-vektordelkomponent av typen EVENT_TYPE"
+
+ #: fortran/parse.c:2909
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as already a coarray subcomponent exists)"
+-msgstr "Icke co-vektorkomponenten %s vid %L av typen LOCK_TYPE eller med en underkomponent av typen LOCK_TYPE måste ha en co-dimension eller vara en underkomponent av en co-vektor. (Variabler av typen %s får inte ha en co-dimension eftersom det redan finns en co-vektorunderkomponent)"
++msgstr "Icke co-vektorkomponenten %s vid %L av typen EVENT_TYPE eller med en underkomponent av typen LOCK_TYPE måste ha en co-dimension eller vara en underkomponent av en co-vektor. (Variabler av typen %s får inte ha en co-dimension eftersom det redan finns en co-vektorunderkomponent)"
+
+ #: fortran/parse.c:2916
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Noncoarray component %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)"
++#, gcc-internal-format, gfc-internal-format
+ msgid "Noncoarray component %s at %L of type EVENT_TYPE or with subcomponent of type EVENT_TYPE must have a codimension or be a subcomponent of a coarray. (Variables of type %s may not have a codimension as %s at %L has a codimension or a coarray subcomponent)"
+-msgstr "Icke co-vektorkomponenten %s vid %L av typen LOCK_TYPE eller med en underkomponent av typen LOCK_TYPE måste ha en co-dimension eller vara en underkomponent till en co-vektor. (Variabler av typen %s får inte ha en co-dimension eftersom %s vid %L har en co-dimension eller en co-vektorunderkomponent)"
++msgstr "Icke co-vektorkomponenten %s vid %L av typen EVENT_TYPE eller med en underkomponent av typen EVENT_TYPE måste ha en co-dimension eller vara en underkomponent till en co-vektor. (Variabler av typen %s får inte ha en co-dimension eftersom %s vid %L har en co-dimension eller en co-vektorunderkomponent)"
+
+ #: fortran/parse.c:2968
+ #, gcc-internal-format, gfc-internal-format
+@@ -52630,10 +52589,9 @@
+ msgstr "En TYPE IS-, CLASS IS- eller END SELECT-sats förväntades följa efter SELECT TYPE vid %C"
+
+ #: fortran/parse.c:3855
+-#, fuzzy, gcc-internal-format
+-#| msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
++#, gcc-internal-format
+ msgid "Variable %qs at %C cannot be redefined inside loop beginning at %L"
+-msgstr "Variabeln ”%s” vid %C får inte definieras om inuti slingan som börjar vid %L"
++msgstr "Variabeln %qs vid %C får inte definieras om inuti slingan som börjar vid %L"
+
+ #: fortran/parse.c:3888
+ #, gcc-internal-format, gfc-internal-format
+@@ -52665,104 +52623,102 @@
msgid "ASSOCIATE construct at %C"
msgstr "ASSOCIATE-konstruktion vid %C"
@@ -466930,18 +475230,22 @@ Index: gcc/po/sv.po
msgstr "gfc_global_used(): Felaktig typ"
-#: fortran/parse.c:5305
+-#, fuzzy, gcc-internal-format
+-#| msgid "Global binding name '%s' at %L is already being used as a %s at %L"
+#: fortran/parse.c:5306
- #, fuzzy, gcc-internal-format
- #| msgid "Global binding name '%s' at %L is already being used as a %s at %L"
++#, gcc-internal-format
msgid "Global binding name %qs at %L is already being used as a %s at %L"
- msgstr "Globalt bindningsnamn ”%s” vid %L används redan som en %s vid %L"
+-msgstr "Globalt bindningsnamn ”%s” vid %L används redan som en %s vid %L"
++msgstr "Globalt bindningsnamn %qs vid %L används redan som en %s vid %L"
-#: fortran/parse.c:5308
+-#, fuzzy, gcc-internal-format
+-#| msgid "Global name '%s' at %L is already being used as a %s at %L"
+#: fortran/parse.c:5309
- #, fuzzy, gcc-internal-format
- #| msgid "Global name '%s' at %L is already being used as a %s at %L"
++#, gcc-internal-format
msgid "Global name %qs at %L is already being used as a %s at %L"
- msgstr "Globalt namn ”%s” vid %L används redan som en %s vid %L"
+-msgstr "Globalt namn ”%s” vid %L används redan som en %s vid %L"
++msgstr "Globalt namn %qs vid %L används redan som en %s vid %L"
-#: fortran/parse.c:5329
+#: fortran/parse.c:5330
@@ -466960,7 +475264,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Unexpected %s statement in MODULE at %C"
msgstr "Oväntad %s-sats i MODULE vid %C"
-@@ -52770,7 +52781,7 @@
+@@ -52770,7 +52726,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.
@@ -466969,16 +475273,15 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Two main PROGRAMs at %L and %C"
msgstr "Två huvud-PROGRAM vid %L och %C"
-@@ -52965,177 +52976,183 @@
+@@ -52965,177 +52921,182 @@
msgid "Syntax error in COMPLEX constant at %C"
msgstr "Syntaxfel i COMPLEX-konstant vid %C"
-#: fortran/primary.c:1637
+#: fortran/primary.c:1557
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "Namelist %s cannot be renamed by USE association to %s"
++#, gcc-internal-format, gfc-internal-format
+msgid "Namelist '%s' can not be an argument at %L"
-+msgstr "Namnlistan %s får inte namnändras av USE-association till %s"
++msgstr "Namnlistan ”%s” kan inte vara ett argument vid %L"
+
+#: fortran/primary.c:1643
#, gcc-internal-format
@@ -467188,7 +475491,62 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qs at %C is not a variable"
msgstr "%qs vid %C är inte en variabel"
-@@ -53475,7 +53492,7 @@
+@@ -53221,10 +53182,9 @@
+ msgstr "Argumentet %qs till pure-subrutin %qs vid %L måste ha sitt INTENT angivet eller ha attributet VALUE"
+
+ #: fortran/resolve.c:419
+-#, fuzzy, gcc-internal-format
+-#| msgid "INTENT(OUT) argument '%s' of pure procedure %qs at %L may not be polymorphic"
++#, gcc-internal-format
+ msgid "INTENT(OUT) argument %qs of pure procedure %qs at %L may not be polymorphic"
+-msgstr "INTENT(OUT)-argumentet ”%s” till den rena proceduren %qs vid %L får inte vara polymorf"
++msgstr "INTENT(OUT)-argumentet %qs till den rena proceduren %qs vid %L får inte vara polymorf"
+
+ #: fortran/resolve.c:452
+ #, gcc-internal-format
+@@ -53352,22 +53312,19 @@
+ msgstr "Härledd typvariabel %qs i COMMON vid %L får inte ha standardinitierare"
+
+ #: fortran/resolve.c:1000
+-#, fuzzy, gcc-internal-format
+-#| msgid "In Fortran 2003 COMMON '%s' block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %s"
++#, gcc-internal-format
+ msgid "In Fortran 2003 COMMON %qs block at %L is a global identifier and must thus have the same binding name as the same-named COMMON block at %L: %s vs %s"
+-msgstr "I Fortran 2003 är COMMON ”%s”-block vid %L en global identifierare och måste således ha samma bindningsnamn som COMMON-blocket med samma namn vid %L: %s resp %s"
++msgstr "I Fortran 2003 är COMMON %qs-block vid %L en global identifierare och måste således ha samma bindningsnamn som COMMON-blocket med samma namn vid %L: %s resp %s"
+
+ #: fortran/resolve.c:1014
+-#, fuzzy, gcc-internal-format
+-#| msgid "COMMON block '%s' at %L uses the same global identifier as entity at %L"
++#, gcc-internal-format
+ msgid "COMMON block %qs at %L uses the same global identifier as entity at %L"
+-msgstr "COMMON-block ”%s” vid %L använder samma globala identifierare som en enhet vid %L"
++msgstr "COMMON-block %qs vid %L använder samma globala identifierare som en enhet vid %L"
+
+ #: fortran/resolve.c:1022
+-#, fuzzy, gcc-internal-format
+-#| msgid "Fortran 2008: COMMON block '%s' with binding label at %L sharing the identifier with global non-COMMON-block entity at %L"
++#, gcc-internal-format
+ msgid "Fortran 2008: COMMON block %qs with binding label at %L sharing the identifier with global non-COMMON-block entity at %L"
+-msgstr "Fortran 2008: COMMON-block ”%s” med bindningsetikett vid %L delar identifierare med ett globalt ej-COMMON-blockenhet vid %L"
++msgstr "Fortran 2008: COMMON-block %qs med bindningsetikett vid %L delar identifierare med ett globalt ej-COMMON-blockenhet vid %L"
+
+ #: fortran/resolve.c:1044
+ #, gcc-internal-format, gfc-internal-format
+@@ -53375,10 +53332,9 @@
+ msgstr "COMMON-block vid %L med bindningsetikett %s använder samma globala identifierare som enheten vid %L"
+
+ #: fortran/resolve.c:1065
+-#, fuzzy, gcc-internal-format
+-#| msgid "COMMON block '%s' at %L is used as PARAMETER at %L"
++#, gcc-internal-format
+ msgid "COMMON block %qs at %L is used as PARAMETER at %L"
+-msgstr "COMMON-block ”%s” vid %L används som PARAMETER vid %L"
++msgstr "COMMON-block %qs vid %L används som PARAMETER vid %L"
+
+ #: fortran/resolve.c:1069
+ #, gcc-internal-format
+@@ -53475,7 +53431,7 @@
msgid "Non-RECURSIVE procedure %qs at %L is possibly calling itself recursively. Declare it RECURSIVE or use %<-frecursive%>"
msgstr "Icke RECURSIVE procedur %qs vid %L anropar kanske sig själv rekursivt. Deklarera den RECURSIVE eller använd %<-frecursive%>."
@@ -467197,7 +475555,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Label %d referenced at %L is never defined"
msgstr "Etikett %d som refereras vid %L är aldrig definierad"
-@@ -53580,7 +53597,7 @@
+@@ -53580,7 +53536,7 @@
msgid "Unable to resolve the specific function %qs at %L"
msgstr "Kan inte slå upp den specifika funktionen %qs vid %L"
@@ -467206,7 +475564,33 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Function %qs at %L has no IMPLICIT type"
msgstr "Funktionen %qs vid %L har ingen IMPLICIT-typ"
-@@ -54097,67 +54114,73 @@
+@@ -53672,10 +53628,9 @@
+ msgstr "Kan inte slå upp den specifika subrutinen %qs vid %L"
+
+ #: fortran/resolve.c:3375
+-#, fuzzy, gcc-internal-format
+-#| msgid "'%s' at %L has a type, which is not consistent with the CALL at %L"
++#, gcc-internal-format
+ msgid "%qs at %L has a type, which is not consistent with the CALL at %L"
+-msgstr "”%s” vid %L har en typ som inte är konsistent med CALL vid %L"
++msgstr "%qs vid %L har en typ som inte är konsistent med CALL vid %L"
+
+ #: fortran/resolve.c:3414
+ #, gcc-internal-format
+@@ -54082,10 +54037,9 @@
+ msgstr "Källuttrycket vid %L skall varken vara av typen LOCK_TYPE eller ha en LOCK_TYPE-komponent om det allokerbara objektet vid %L är en co-vektor"
+
+ #: fortran/resolve.c:7073
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "The source-expr at %L shall neither be of type LOCK_TYPE nor have a LOCK_TYPE component if allocate-object at %L is a coarray"
++#, gcc-internal-format, gfc-internal-format
+ msgid "The source-expr at %L shall neither be of type EVENT_TYPE nor have a EVENT_TYPE component if allocate-object at %L is a coarray"
+-msgstr "Källuttrycket vid %L skall varken vara av typen LOCK_TYPE eller ha en LOCK_TYPE-komponent om det allokerbara objektet vid %L är en co-vektor"
++msgstr "Källuttrycket vid %L skall varken vara av typen EVENT_TYPE eller ha en EVENT_TYPE-komponent om det allokerbara objektet vid %L är en co-vektor"
+
+ #: fortran/resolve.c:7086
+ #, gcc-internal-format, gfc-internal-format
+@@ -54097,67 +54051,72 @@
msgid "Allocating %s at %L with type-spec requires the same character-length parameter as in the declaration"
msgstr "Allokerar %s vid %L med typspecifikation kräver samma teckenlängdsparameter som i deklarationen"
@@ -467218,13 +475602,12 @@ Index: gcc/po/sv.po
-#: fortran/resolve.c:7239
+#: fortran/resolve.c:7224
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "Array specification required in ALLOCATE statement at %L"
+ #, gcc-internal-format, gfc-internal-format
+msgid "Array specification or array-valued SOURCE= expression required in ALLOCATE statement at %L"
-+msgstr "Vektorspecifikation krävs i ALLOCATE-sats vid %L"
++msgstr "Vektorspecifikation eller vektorvärt SOURCE=-uttryck krävs i ALLOCATE-sats vid %L"
+
+#: fortran/resolve.c:7247
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "Coarray specification required in ALLOCATE statement at %L"
msgstr "Co-vektorspecifikation krävs i ALLOCATE-sats vid %L"
@@ -467293,7 +475676,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Allocate-object at %L is subobject of object at %L"
msgstr "Allokeringsobjekt vid %L är underobjekt till objekt vid %L"
-@@ -54166,212 +54189,212 @@
+@@ -54166,212 +54125,208 @@
#. 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.
@@ -467479,25 +475862,31 @@ Index: gcc/po/sv.po
msgstr "Låsvariabel vid %L måste vara en skalär av typen LOCK_TYPE"
-#: fortran/resolve.c:8762
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
+#: fortran/resolve.c:8773
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
++#, gcc-internal-format, gfc-internal-format
msgid "Event variable at %L must be a scalar of type EVENT_TYPE"
- msgstr "Låsvariabel vid %L måste vara en skalär av typen LOCK_TYPE"
+-msgstr "Låsvariabel vid %L måste vara en skalär av typen LOCK_TYPE"
++msgstr "Händelsevariabeln vid %L måste vara en skalär av typen EVENT_TYPE"
-#: fortran/resolve.c:8766
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Actual argument to %qs at %L must be a coarray"
+#: fortran/resolve.c:8777
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Actual argument to %qs at %L must be a coarray"
++#, gcc-internal-format, gfc-internal-format
msgid "Event variable argument at %L must be a coarray or coindexed"
- msgstr "Aktuellt argument till %qs vid %L måste vara en co-vektor"
+-msgstr "Aktuellt argument till %qs vid %L måste vara en co-vektor"
++msgstr "Händelsevariabelargumentet vid %L måste vara en co-vektor eller co-indexerat"
-#: fortran/resolve.c:8769
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Actual argument to %qs at %L must be a coarray"
+#: fortran/resolve.c:8780
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Actual argument to %qs at %L must be a coarray"
++#, gcc-internal-format, gfc-internal-format
msgid "Event variable argument at %L must be a coarray but not coindexed"
- msgstr "Aktuellt argument till %qs vid %L måste vara en co-vektor"
+-msgstr "Aktuellt argument till %qs vid %L måste vara en co-vektor"
++msgstr "Händelsevariabelargumentet vid %L måste vara en co-vektor men inte co-indexerat"
-#: fortran/resolve.c:8776 fortran/resolve.c:8894
+#: fortran/resolve.c:8787 fortran/resolve.c:8905
@@ -467518,11 +475907,13 @@ Index: gcc/po/sv.po
msgstr "ACQUIRED_LOCK=-argumentet vid %L måste vara en skalär LOGICAL-variabel"
-#: fortran/resolve.c:8811
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
+#: fortran/resolve.c:8822
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression"
++#, gcc-internal-format, gfc-internal-format
msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression"
- msgstr "Bildmängdsargument vid %L måste vara ett skalärt eller ordning-1-uttryck"
+-msgstr "Bildmängdsargument vid %L måste vara ett skalärt eller ordning-1-uttryck"
++msgstr "UNTIL_COUNT=-argumentet vid %L måste vara ett skalärt INTEGER-uttryck"
-#: fortran/resolve.c:8871
+#: fortran/resolve.c:8882
@@ -467547,7 +475938,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Branch at %L may result in an infinite loop"
msgstr "Gren vid %L kan orsaka en oändlig slinga"
-@@ -54378,12 +54401,12 @@
+@@ -54378,12 +54333,12 @@
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
@@ -467562,7 +475953,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L"
msgstr "GOTO-sats vid %L lämnar DO CONCURRENT-konstruktion för etikett vid %L"
-@@ -54391,108 +54414,108 @@
+@@ -54391,108 +54346,108 @@
#. 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.
@@ -467692,23 +476083,27 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "TODO: type-bound defined assignment(s) at %L not done because multiple part array references would occur in intermediate expressions."
msgstr "ATT GÖRA: typbegränsad definierad tilldelning vid %L inte gjord för att multipla delvektorreferenser skulle uppträda i intermediära uttryck."
-@@ -54499,71 +54522,71 @@
+@@ -54499,71 +54454,67 @@
#. Even if standard does not support this feature, continue to build
#. the two statements to avoid upsetting frontend_passes.c.
-#: fortran/resolve.c:10239
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Invalid procedure pointer assignment at %L"
+#: fortran/resolve.c:10250
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Invalid procedure pointer assignment at %L"
++#, gcc-internal-format, gfc-internal-format
msgid "Pointer procedure assignment at %L"
- msgstr "Ogiltig procedurpekartilldelning vid %L"
+-msgstr "Ogiltig procedurpekartilldelning vid %L"
++msgstr "Procedurpekartilldelning vid %L"
-#: fortran/resolve.c:10251
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Target expression in pointer assignment at %L must deliver a pointer result"
+#: fortran/resolve.c:10262
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Target expression in pointer assignment at %L must deliver a pointer result"
++#, gcc-internal-format, gfc-internal-format
msgid "The function result on the lhs of the assignment at %L must have the pointer attribute."
- msgstr "Måluttryck i pekartilldelning vid %L måste leverera ett pekarresultat"
+-msgstr "Måluttryck i pekartilldelning vid %L måste leverera ett pekarresultat"
++msgstr "Funktionsresultatet på vänstersidan av tilldelningen vid %L måste ha attributet pointer."
-#: fortran/resolve.c:10478
+#: fortran/resolve.c:10489
@@ -467735,18 +476130,22 @@ Index: gcc/po/sv.po
msgstr "ASSIGN-sats vid %L kräver en skalär standard-INTEGER-variabel"
-#: fortran/resolve.c:10589
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Invalid kind for %s at %L"
+#: fortran/resolve.c:10600
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Invalid kind for %s at %L"
++#, gcc-internal-format, gfc-internal-format
msgid "Invalid NULL at %L"
- msgstr "Ogiltig sort på %s vid %L"
+-msgstr "Ogiltig sort på %s vid %L"
++msgstr "Ogiltig NULL vid %L"
-#: fortran/resolve.c:10593
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Arithmetic IF statement at %L requires a numeric expression"
+#: fortran/resolve.c:10604
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Arithmetic IF statement at %L requires a numeric expression"
++#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression"
- msgstr "Aritmetisk IF-sats vid %L kräver ett numeriskt uttryck"
+-msgstr "Aritmetisk IF-sats vid %L kräver ett numeriskt uttryck"
++msgstr "Aritmetisk IF-sats vid %L kräver ett skalärt REAL- eller INTEGER-uttryck"
-#: fortran/resolve.c:10649
+#: fortran/resolve.c:10660
@@ -467777,7 +476176,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s with binding label %s at %L uses the same global identifier as entity at %L"
msgstr "Variabeln %s med bindningsetiketten ”%s” vid %L använder samma globala identifierare som en enhet vid %L"
-@@ -54570,7 +54593,7 @@
+@@ -54570,7 +54521,7 @@
#. This can only happen if the variable is defined in a module - if it
#. isn't the same module, reject it.
@@ -467786,7 +476185,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Variable %s from module %s with binding label %s at %L uses the same global identifier as entity at %L from module %s"
msgstr "Variabeln %s från modulen %s med bindningsetikett %s vid %L använder samma globala identifierare som enheten vid %L från modulen %s"
-@@ -54578,53 +54601,53 @@
+@@ -54578,53 +54529,52 @@
#. 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.
@@ -467839,27 +476238,31 @@ Index: gcc/po/sv.po
msgstr "CLASS-variabel %qs vid %L måste vara en attrapp, allokerbar eller pekare"
-#: fortran/resolve.c:11427
+-#, fuzzy, gcc-internal-format
+-#| msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
+#: fortran/resolve.c:11438
- #, fuzzy, gcc-internal-format
- #| msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
++#, gcc-internal-format
msgid "The type %qs cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L"
- msgstr "Typen ”%s” kan inte vara värdassocierad vid %L för att den blockeras av ett inkompatibelt objekt med samma namn deklarerat vid %L"
+-msgstr "Typen ”%s” kan inte vara värdassocierad vid %L för att den blockeras av ett inkompatibelt objekt med samma namn deklarerat vid %L"
++msgstr "Typen %qs kan inte vara värdassocierad vid %L för att den blockeras av ett inkompatibelt objekt med samma namn deklarerat vid %L"
-#: fortran/resolve.c:11449
+#: fortran/resolve.c:11460
#, gcc-internal-format
msgid "Implied SAVE for module variable %qs at %L, needed due to the default initialization"
msgstr "Implicerad SAVE för modulvariabeln %qs vid %L, behövs på grund av standardinitieringar"
-@@ -54631,451 +54654,451 @@
+@@ -54631,451 +54581,447 @@
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:11497
+-#, fuzzy, gcc-internal-format
+-#| msgid "The module or main program array '%s' at %L must have constant shape"
+#: fortran/resolve.c:11508
- #, fuzzy, gcc-internal-format
- #| msgid "The module or main program array '%s' at %L must have constant shape"
++#, gcc-internal-format
msgid "The module or main program array %qs at %L must have constant shape"
- msgstr "Modul- eller huvudprogramvektorn ”%s” vid %L måste ha konstant form"
+-msgstr "Modul- eller huvudprogramvektorn ”%s” vid %L måste ha konstant form"
++msgstr "Modul- eller huvudprogramvektorn %qs vid %L måste ha konstant form"
-#: fortran/resolve.c:11509
+#: fortran/resolve.c:11520
@@ -467874,11 +476277,13 @@ Index: gcc/po/sv.po
msgstr "Entitet med antagen teckenlängd vid %L måste vara ett attrappargument eller en PARAMETER"
-#: fortran/resolve.c:11546
+-#, fuzzy, gcc-internal-format
+-#| msgid "'%s' at %L must have constant character length in this context"
+#: fortran/resolve.c:11557
- #, fuzzy, gcc-internal-format
- #| msgid "'%s' at %L must have constant character length in this context"
++#, gcc-internal-format
msgid "%qs at %L must have constant character length in this context"
- msgstr "”%s” vid %L måste ha konstant teckenlängd i detta sammanhang"
+-msgstr "”%s” vid %L måste ha konstant teckenlängd i detta sammanhang"
++msgstr "%qs vid %L måste ha konstant teckenlängd i detta sammanhang"
-#: fortran/resolve.c:11553
+#: fortran/resolve.c:11564
@@ -467923,11 +476328,13 @@ Index: gcc/po/sv.po
msgstr "Automatisk vektor %qs vid %L kan inte ha en initierare"
-#: fortran/resolve.c:11658
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "in %s, at %s:%d"
+#: fortran/resolve.c:11669
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "in %s, at %s:%d"
++#, gcc-internal-format, gfc-internal-format
msgid "%s at %L"
- msgstr "i %s, vid %s:%d"
+-msgstr "i %s, vid %s:%d"
++msgstr "%s vid %L"
-#: fortran/resolve.c:11685
+#: fortran/resolve.c:11696
@@ -468350,11 +476757,13 @@ Index: gcc/po/sv.po
msgstr "Procedur %qs med CLASS vid %L måste vara allokerbar eller en pekare"
-#: fortran/resolve.c:13369
+-#, fuzzy, gcc-internal-format
+-#| msgid "Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
+#: fortran/resolve.c:13380
- #, fuzzy, gcc-internal-format
- #| msgid "Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
++#, gcc-internal-format
msgid "Generic name %qs of function %qs at %L being the same name as derived type at %L"
- msgstr "Det generiska namnet ”%s” på funktionen ”%s” vid %L är samma namn som den härledda typen vid %L"
+-msgstr "Det generiska namnet ”%s” på funktionen ”%s” vid %L är samma namn som den härledda typen vid %L"
++msgstr "Det generiska namnet %qs på funktionen %qs vid %L är samma namn som den härledda typen vid %L"
-#: fortran/resolve.c:13425
+#: fortran/resolve.c:13436
@@ -468391,7 +476800,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER components"
msgstr "NAMELIST-objektet %qs i namnlistan %qs vid %L med ALLOCATABLE- eller POINTER-komponenter"
-@@ -55082,409 +55105,415 @@
+@@ -55082,409 +55028,412 @@
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
@@ -468588,11 +476997,13 @@ Index: gcc/po/sv.po
msgstr "Variabeln %s vid %L av typen LOCK_TYPE eller med en delkomponent av typen LOCK_TYPE måste vara en co-vektor"
-#: fortran/resolve.c:14067
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
+#: fortran/resolve.c:14078
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
++#, gcc-internal-format, gfc-internal-format
msgid "Variable %s at %L of type EVENT_TYPE or with subcomponent of type LOCK_TYPE must be a coarray"
- msgstr "Variabeln %s vid %L av typen LOCK_TYPE eller med en delkomponent av typen LOCK_TYPE måste vara en co-vektor"
+-msgstr "Variabeln %s vid %L av typen LOCK_TYPE eller med en delkomponent av typen LOCK_TYPE måste vara en co-vektor"
++msgstr "Variabeln %s vid %L av typen EVENT_TYPE eller med en delkomponent av typen LOCK_TYPE måste vara en co-vektor"
-#: fortran/resolve.c:14085
+#: fortran/resolve.c:14096
@@ -468607,11 +477018,13 @@ Index: gcc/po/sv.po
msgstr "Attrappargumentet %qs vid %L av LOCK_TYPE får inte vara INTENT(OUT)"
-#: fortran/resolve.c:14106
+-#, fuzzy, gcc-internal-format
+-#| msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
+#: fortran/resolve.c:14117
- #, fuzzy, gcc-internal-format
- #| msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)"
++#, gcc-internal-format
msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)"
- msgstr "Attrappargumentet %qs vid %L av LOCK_TYPE får inte vara INTENT(OUT)"
+-msgstr "Attrappargumentet %qs vid %L av LOCK_TYPE får inte vara INTENT(OUT)"
++msgstr "Attrappargumentet %qs vid %L av EVENT_TYPE får inte vara INTENT(OUT)"
-#: fortran/resolve.c:14118
+#: fortran/resolve.c:14129
@@ -468675,13 +477088,12 @@ Index: gcc/po/sv.po
-#: fortran/resolve.c:14291
+#: fortran/resolve.c:14248
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "Namelist %s cannot be renamed by USE association to %s"
+ #, gcc-internal-format, gfc-internal-format
+msgid "Namelist '%s' can not be an argument to subroutine or function at %L"
-+msgstr "Namnlistan %s får inte namnändras av USE-association till %s"
++msgstr "Namnlistan ”%s” får inte vara ett argument till en subrutin eller funktion vid %L"
+
+#: fortran/resolve.c:14317
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr "Trådprivat vid %L är inte SAVE:ad"
@@ -468888,16 +477300,31 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Contained procedure %qs at %L of a PURE procedure must also be PURE"
msgstr "Innesluten procedur %qs vid %L i en PURE-procedur måste också vara PURE"
-@@ -55561,7 +55590,7 @@
+@@ -55550,18 +55499,16 @@
+ msgstr "Ej konformt tabulatortecken i kolumn %d på rad %d"
+
+ #: fortran/scanner.c:2070
+-#, fuzzy, gcc-internal-format
+-#| msgid "%s:%d: file %s left but not entered"
++#, gcc-internal-format
+ msgid "file %qs left but not entered"
+-msgstr "%s:%d: gått ifrån men inte till filen %s"
++msgstr "gått ifrån men inte till filen %qs"
+
+ #: fortran/scanner.c:2108
+-#, fuzzy, gcc-internal-format
+-#| msgid "%s:%d: Illegal preprocessor directive"
++#, gcc-internal-format
msgid "Illegal preprocessor directive"
- msgstr "%s:%d: Ogiltigt preprocessordirektiv"
+-msgstr "%s:%d: Ogiltigt preprocessordirektiv"
++msgstr "Ogiltigt preprocessordirektiv"
-#: fortran/scanner.c:2232
+#: fortran/scanner.c:2235
#, gcc-internal-format
msgid "Can't open file %qs"
msgstr "Kan inte öppna filen %qs"
-@@ -55822,69 +55851,69 @@
+@@ -55822,69 +55769,67 @@
msgid "Argument NCOPIES of REPEAT intrinsic is too large at %L"
msgstr "Argumentet NCOPIES till inbyggd REPEAT är för stort vid %L"
@@ -468932,18 +477359,22 @@ Index: gcc/po/sv.po
msgstr "Misslyckades att bestämma längden på en konstant vektor."
-#: fortran/simplify.c:6115
+-#, fuzzy, gcc-internal-format
+-#| msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
+#: fortran/simplify.c:6118
- #, fuzzy, gcc-internal-format
- #| msgid "The number of elements in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option"
++#, gcc-internal-format
msgid "The number of elements (%d) in the array constructor at %L requires an increase of the allowed %d upper limit. See %<-fmax-array-constructor%> option."
- msgstr "Antalet element i vektorkonstrueraren vid %L kräver en ökning av den tillåtna övre gränsen %d. Se flaggan %<-fmax-array-constructor%>"
+-msgstr "Antalet element i vektorkonstrueraren vid %L kräver en ökning av den tillåtna övre gränsen %d. Se flaggan %<-fmax-array-constructor%>"
++msgstr "Antalet element (%d) i vektorkonstrueraren vid %L kräver en ökning av den tillåtna övre gränsen %d. Se flaggan %<-fmax-array-constructor%>"
-#: fortran/simplify.c:6181
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "directive not yet implemented"
+#: fortran/simplify.c:6184
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "directive not yet implemented"
++#, gcc-internal-format, gfc-internal-format
msgid "Simplification of SPREAD at %L not yet implemented"
- msgstr "direktivet är inte implementerat ännu"
+-msgstr "direktivet är inte implementerat ännu"
++msgstr "Förenkling av SPREAD vid %L är inte implementerat ännu"
-#: fortran/simplify.c:6206
+#: fortran/simplify.c:6209
@@ -468980,7 +477411,109 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Character %qs in string at %L cannot be converted into character kind %d"
msgstr "Tecknet %qs i sträng vid %L kan inte konverteras till tecken av sort %d"
-@@ -56324,17 +56353,17 @@
+@@ -55900,10 +55845,9 @@
+ msgstr "IMPLICIT NONE (type)-sats vid %L följer en IMPLICIT-sats"
+
+ #: fortran/symbol.c:168
+-#, fuzzy, gcc-internal-format
+-#| msgid "Letter %<%c%> already set in IMPLICIT statement at %C"
++#, gcc-internal-format
+ msgid "Letter %qc already set in IMPLICIT statement at %C"
+-msgstr "Tecknet %<%c%> redan satt i IMPLICIT-sats vid %C"
++msgstr "Tecknet %qc redan satt i IMPLICIT-sats vid %C"
+
+ #: fortran/symbol.c:190
+ #, gcc-internal-format, gfc-internal-format
+@@ -55911,10 +55855,9 @@
+ msgstr "Det går inte att ange IMPLICIT vid %C efter IMPLICIT NONE"
+
+ #: fortran/symbol.c:200
+-#, fuzzy, gcc-internal-format
+-#| msgid "Letter %c already has an IMPLICIT type at %C"
++#, gcc-internal-format
+ msgid "Letter %qc already has an IMPLICIT type at %C"
+-msgstr "Tecknet %c har redan en IMPLICIT-typ vid %C"
++msgstr "Tecknet %qc har redan en IMPLICIT-typ vid %C"
+
+ #: fortran/symbol.c:224
+ #, gcc-internal-format
+@@ -55965,10 +55908,9 @@
+ msgstr "Namnlistegruppnamnet vid %L kan inte ha attributet SAVE"
+
+ #: fortran/symbol.c:468
+-#, fuzzy, gcc-internal-format
+-#| msgid "internal procedure '%s' at %L conflicts with DUMMY argument"
++#, gcc-internal-format
+ msgid "internal procedure %qs at %L conflicts with DUMMY argument"
+-msgstr "den interna proceduren ”%s” vid %L står i konflikt med DUMMY-argument"
++msgstr "den interna proceduren %qs vid %L står i konflikt med DUMMY-argument"
+
+ #: fortran/symbol.c:494
+ #, gcc-internal-format, gfc-internal-format
+@@ -56130,10 +56072,9 @@
+ msgstr "%qs vid %L har attribut angivna utanför dess INTERFACE-kropp"
+
+ #: fortran/symbol.c:1813
+-#, fuzzy, gcc-internal-format
+-#| msgid "Symbol '%s' at %L conflicts with symbol from module '%s', use-associated at %L"
++#, gcc-internal-format
+ msgid "Symbol %qs at %L conflicts with symbol from module %qs, use-associated at %L"
+-msgstr "Symbolen ”%s” vid %L står i konflikt med symbolen från modulen ”%s”, användningsassocierad vid %L"
++msgstr "Symbolen %qs vid %L står i konflikt med symbolen från modulen %qs, användningsassocierad vid %L"
+
+ #: fortran/symbol.c:1817
+ #, gcc-internal-format
+@@ -56151,16 +56092,14 @@
+ msgstr "Symbolen %qs vid %L kan inte ha en typ"
+
+ #: fortran/symbol.c:2057
+-#, fuzzy, gcc-internal-format
+-#| msgid "Component '%s' at %C already declared at %L"
++#, gcc-internal-format
+ msgid "Component %qs at %C already declared at %L"
+-msgstr "Komponenten ”%s” vid %C är redan deklarerad vid %L"
++msgstr "Komponenten %qs vid %C är redan deklarerad vid %L"
+
+ #: fortran/symbol.c:2068
+-#, fuzzy, gcc-internal-format
+-#| msgid "Component '%s' at %C already in the parent type at %L"
++#, gcc-internal-format
+ msgid "Component %qs at %C already in the parent type at %L"
+-msgstr "Komponenten ”%s” vid %C finns redan i föräldratypen vid %L"
++msgstr "Komponenten %qs vid %C finns redan i föräldratypen vid %L"
+
+ #: fortran/symbol.c:2153
+ #, gcc-internal-format
+@@ -56255,22 +56194,19 @@
+ msgstr "Härledd typ %qs med attributet BIND(C) vid %L är tom, och kan vara otillgängliga av C-följeslagarprocessorn"
+
+ #: fortran/symbol.c:4074
+-#, fuzzy, gcc-internal-format
+-#| msgid "Component '%s' at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type '%s' at %L"
++#, gcc-internal-format
+ msgid "Component %qs at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type %qs at %L"
+-msgstr "Komponent ”%s” vid %L får inte ha attributet POINTER eftersom det är en medlem av den BIND(C)-härledda typen ”%s” vid %L"
++msgstr "Komponent %qs vid %L får inte ha attributet POINTER eftersom det är en medlem av den BIND(C)-härledda typen %qs vid %L"
+
+ #: fortran/symbol.c:4084
+-#, fuzzy, gcc-internal-format
+-#| msgid "Procedure pointer component '%s' at %L cannot be a member of the BIND(C) derived type '%s' at %L"
++#, gcc-internal-format
+ msgid "Procedure pointer component %qs at %L cannot be a member of the BIND(C) derived type %qs at %L"
+-msgstr "Procedurpekarkomponenten ”%s” vid %L kan inte vara en medlem av den BIND(C)-härledda typen ”%s” vid %L"
++msgstr "Procedurpekarkomponenten %qs vid %L kan inte vara en medlem av den BIND(C)-härledda typen %qs vid %L"
+
+ #: fortran/symbol.c:4095
+-#, fuzzy, gcc-internal-format
+-#| msgid "Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type '%s' at %L"
++#, gcc-internal-format
+ msgid "Component %qs at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type %qs at %L"
+-msgstr "Komponent ”%s” vid %L får inte ha attributet ALLOCATABLE eftersom det är en medlem av den BIND(C)-härledda typen ”%s” vid %L"
++msgstr "Komponent %qs vid %L får inte ha attributet ALLOCATABLE eftersom det är en medlem av den BIND(C)-härledda typen %qs vid %L"
+
+ #: fortran/symbol.c:4134
+ #, gcc-internal-format
+@@ -56324,17 +56260,17 @@
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
@@ -469001,7 +477534,33 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "bad expression type during walk (%d)"
msgstr "felaktig uttryckstyp under genomlöpning (%d)"
-@@ -56427,107 +56456,107 @@
+@@ -56365,10 +56301,9 @@
+ msgstr "Ogiltig referenstyp vid %L som EQUIVALENCE-objekt"
+
+ #: fortran/trans-common.c:913
+-#, fuzzy, gcc-internal-format
+-#| msgid "Inconsistent equivalence rules involving '%s' at %L and '%s' at %L"
++#, gcc-internal-format
+ msgid "Inconsistent equivalence rules involving %qs at %L and %qs at %L"
+-msgstr "Inkonsistenta ekvivalensregler rörande ”%s” vid %L och ”%s” vid %L"
++msgstr "Inkonsistenta ekvivalensregler rörande %qs vid %L och %qs vid %L"
+
+ #. Aligning this field would misalign a previous field.
+ #: fortran/trans-common.c:1046
+@@ -56397,10 +56332,9 @@
+ msgstr "Utfyllnad med %d byte krävs före %qs i COMMON vid %L, byt ordning på element eller använd -fno-align-commons"
+
+ #: fortran/trans-common.c:1169
+-#, fuzzy, gcc-internal-format
+-#| msgid "COMMON '%s' at %L does not exist"
++#, gcc-internal-format
+ msgid "COMMON %qs at %L does not exist"
+-msgstr "COMMON ”%s” vid %L existerar inte"
++msgstr "COMMON %qs vid %L finns inte"
+
+ #: fortran/trans-common.c:1178
+ #, gcc-internal-format
+@@ -56427,107 +56361,107 @@
msgid "non-constant initialization expression at %L"
msgstr "ej konstant initieringsuttryck vid %L"
@@ -469130,16 +477689,30 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Unknown argument list function at %L"
msgstr "Okänd argumentlistefunktion vid %L"
-@@ -56543,7 +56572,7 @@
+@@ -56543,17 +56477,15 @@
msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index"
msgstr "%<dim%>-argumentet till inbyggd %s vid %L är inte ett giltigt dimensionsindex"
-#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:913
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Sorry, the lock component of derived type at %L is not yet supported"
+#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:919
- #, fuzzy, gcc-internal-format, gfc-internal-format
- #| msgid "Sorry, the lock component of derived type at %L is not yet supported"
++#, gcc-internal-format, gfc-internal-format
msgid "Sorry, the event component of derived type at %L is not yet supported"
-@@ -56575,17 +56604,17 @@
+-msgstr "Ledsen, låskomponenten hos härledd typ vid %L stödjs inte ännu"
++msgstr "Ledsen, händelsekomponenten hos härledd typ vid %L stödjs inte ännu"
+
+ #: fortran/trans-intrinsic.c:9373
+-#, fuzzy, gcc-internal-format, gfc-internal-format
+-#| msgid "Pointer object at %C shall not be coindexed"
++#, gcc-internal-format, gfc-internal-format
+ msgid "The event variable at %L shall not be coindexed "
+-msgstr "Pekarobjektet vid %C kan inte vara co-indexerat"
++msgstr "Händelsevariabeln vid %L får inte vara co-indexerat"
+
+ #: fortran/trans-io.c:1849
+ #, gcc-internal-format
+@@ -56575,17 +56507,17 @@
msgid "An alternate return at %L without a * dummy argument"
msgstr "En alternativ retur vid %L utan ett * attrappargument"
@@ -469160,37 +477733,405 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "gfc_trans_select(): Bad type for case expr."
msgstr "gfc_trans_select(): Felaktig typ för Bad type for case-uttryck."
-@@ -58142,6 +58171,30 @@
- msgid "creating selector for nonexistent method %qE"
- msgstr "skapar selektor för icke existerande metod %qE"
+@@ -57048,10 +56980,9 @@
+ msgstr "tidigare definition här"
-+#~ msgid "Use the same size for double as for float."
-+#~ msgstr "Använd samma storlek för double som för float."
-+
-+#~ msgid "installation error, can't find crtoffloadend.o"
-+#~ msgstr "installationsfel, kan inte hitta crtoffloadend.o"
-+
-+#~ msgid "try reducing the number of local variables"
-+#~ msgstr "försök reducera antalet lokala variabler"
-+
-+#~ msgid "statement is indented as if it were guarded by..."
-+#~ msgstr "satsen är indenterad som om den vore skyddad av …"
-+
-+#~ msgid "stabs debug format not supported"
-+#~ msgstr "stabs felsökningsformat stödjs inte"
-+
-+#~ msgid "negative array subscript"
-+#~ msgstr "negativt vektorindex"
-+
-+#~ msgid "array subscript out of bound"
-+#~ msgstr "vektorindex är utanför gränserna"
-+
-+#~ msgid "comparison with string literal results in unspecified behaviour"
-+#~ msgstr "jämförelse med strängkonstant resulterar i odefinierat beteende"
-+
- #~ msgid "Bound on the number of variables in Omega constraint systems"
- #~ msgstr "Gräns för antalet variabler i Omegasystem av bivillkor"
+ #: lto/lto-symtab.c:664
+-#, fuzzy, gcc-internal-format
+-#| msgid "type %qT violates one definition rule"
++#, gcc-internal-format
+ msgid "%qD violates the C++ One Definition Rule "
+-msgstr "typen %qT bryter mot endefinitionsregeln "
++msgstr "%qD bryter mot C++ endefinitionsregel "
+
+ #: lto/lto-symtab.c:669
+ #, gcc-internal-format
+@@ -57064,16 +56995,14 @@
+ msgstr "justering av %qD är större än originaldeklarationen"
+
+ #: lto/lto-symtab.c:695
+-#, fuzzy, gcc-internal-format
+-#| msgid "type of %qD does not match original declaration"
++#, gcc-internal-format
+ msgid "size of %qD differ from the size of original declaration"
+-msgstr "typen på %qD stämmer inte med originaldeklarationen"
++msgstr "storleken på %qD skiljer från storleken på originaldeklarationen"
+
+ #: lto/lto-symtab.c:700
+-#, fuzzy, gcc-internal-format
+-#| msgid "%q#T was previously declared here"
++#, gcc-internal-format
+ msgid "%qD was previously declared here"
+-msgstr "%q#T deklarerades tidigare här"
++msgstr "%qD deklarerades tidigare här"
+ #: lto/lto-symtab.c:703
+ #, gcc-internal-format
+@@ -58141,364 +58070,3 @@
+ #, gcc-internal-format
+ msgid "creating selector for nonexistent method %qE"
+ msgstr "skapar selektor för icke existerande metod %qE"
+-
+-#~ msgid "Bound on the number of variables in Omega constraint systems"
+-#~ msgstr "Gräns för antalet variabler i Omegasystem av bivillkor"
+-
+-#~ msgid "Bound on the number of inequalities in Omega constraint systems"
+-#~ msgstr "Gräns för antalet olikheter i Omegasystem av bivillkor"
+-
+-#~ msgid "Bound on the number of equalities in Omega constraint systems"
+-#~ msgstr "Gräns för antalet likheter i Omegasystem av bivillkor"
+-
+-#~ msgid "Bound on the number of wild cards in Omega constraint systems"
+-#~ msgstr "Gräns för antalet jokrar i Omegasystem av bivillkor"
+-
+-#~ msgid "Bound on the size of the hash table in Omega constraint systems"
+-#~ msgstr "Gräns för storleken på hash-tabellen i Omegasystem av bivillkor"
+-
+-#~ msgid "Bound on the number of keys in Omega constraint systems"
+-#~ msgstr "Gräns för antalet nycklar i Omegasystem av bivillkor"
+-
+-#~ msgid "When set to 1, use expensive methods to eliminate all redundant constraints"
+-#~ msgstr "När satt till 1, använd dyra metoder för att eliminera alla överflödiga bivillkor"
+-
+-#~ msgid "size of unrolling factor for unroll-and-jam"
+-#~ msgstr "storlek på utrullningsfaktorn för unroll-and-jam"
+-
+-#~ msgid "depth of unrolled loop for unroll-and-jam"
+-#~ msgstr "djupet på utrullade slingor för unroll-and-jam"
+-
+-#~ msgid "invalid %%H value"
+-#~ msgstr "ogiltigt %%H-värde"
+-
+-#~ msgid "invalid %%S value"
+-#~ msgstr "ogiltigt %%S-värde"
+-
+-#~ msgid "memory reference expected for 'O' output modifier"
+-#~ msgstr "minnesreferens förväntas för utmatningsmodifieraren ”O”"
+-
+-#~ msgid "memory reference expected for 'R' output modifier"
+-#~ msgstr "minnesreferens förväntas för utmatningsmodifieraren ”R”"
+-
+-#~ msgid "long long constant not a valid immediate operand"
+-#~ msgstr "long long-konstant inte en giltig omedelbar operand"
+-
+-#~ msgid "Warning:"
+-#~ msgstr "Varning:"
+-
+-#~ msgid "Error:"
+-#~ msgstr "Fel:"
+-
+-#~ msgid ""
+-#~ "GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n"
+-#~ "You may redistribute copies of GNU Fortran\n"
+-#~ "under the terms of the GNU General Public License.\n"
+-#~ "For more information about these matters, see the file named COPYING\n"
+-#~ "\n"
+-#~ msgstr ""
+-#~ "GNU Fortran kommer UTAN GARANTI så långt lagen tillåter. Du kan\n"
+-#~ "vidaredistribuera kopior av GNU Fortran enligt villkoren i GNU General\n"
+-#~ "Public License. För mer information om detta ämne, se filen som heter\n"
+-#~ "COPYING\n"
+-#~ "\n"
+-
+-#~ msgid "Deprecated in favor of -Wc++11-compat"
+-#~ msgstr "Bör undvikas till förmån för -Wc++11-compat"
+-
+-#~ msgid "Conform to the ISO 2014 C++ standard (experimental and incomplete support)"
+-#~ msgstr "Följ standarden ISO 2014 C++ (experimentellt och ofullständigt stöd)"
+-
+-#~ msgid "Conform to the ISO 2011 C standard (experimental and incomplete support)"
+-#~ msgstr "Följ standarden ISO 2011 C (experimentellt och ofullständigt stöd)"
+-
+-#~ msgid "Conform to the ISO 2011 C++ standard with GNU extensions (experimental and incomplete support)"
+-#~ msgstr "Följ standarden ISO 2011 C++ med GNU-utökningar (experimentellt och ofullständigt stöd)"
+-
+-#~ msgid "Conform to the ISO 2014 C++ standard with GNU extensions (experimental and incomplete support)"
+-#~ msgstr "Följ standarden ISO 2014 C++ med GNU-utökningar (experimentellt och ofullständigt stöd)"
+-
+-#~ msgid "Conform to the ISO 2011 C standard with GNU extensions (experimental and incomplete support)"
+-#~ msgstr "Följ standarden ISO 2011 C med GNU-utökningar (experimentellt och ofullständigt stöd)"
+-
+-#~ msgid "Specify the name of the target architecture"
+-#~ msgstr "Ange namnet på målarkitekturen"
+-
+-#~ msgid "Ignored (obsolete)"
+-#~ msgstr "Ignorerad (föråldrad)"
+-
+-#~ msgid "mvcle use"
+-#~ msgstr "använd mvcle"
+-
+-#~ msgid "Select hardware or software multiplication support."
+-#~ msgstr "Välj hårdvaru- eller programvarustöd för multiplikation."
+-
+-#~ msgid "Target the RL78/G10 series"
+-#~ msgstr "Sikta på serien RL78/G10"
+-
+-#~ msgid "Use big-endian byte order"
+-#~ msgstr "Använd rak byteordning"
+-
+-#~ msgid "Use little-endian byte order"
+-#~ msgstr "Använd omvänd byteordning"
+-
+-#~ msgid "Generate floating-point multiply-add instructions"
+-#~ msgstr "Generera multiplicera-/adderainstruktioner för flyttal"
+-
+-#~ msgid "Generate ARCompact 32-bit code for ARCtangent-A5 processor"
+-#~ msgstr "Generera ARCompact 32-bitars kod för processorn ARCtangent-A5"
+-
+-#~ msgid "Disable generation of cfi for epilogues."
+-#~ msgstr "Avaktivera generering av cfi för epiloger."
+-
+-#~ msgid "Enable generation of cfi for epilogues."
+-#~ msgstr "Aktivera generering av cfi för epiloger."
+-
+-#~ msgid "Compare the results of several data dependence analyzers."
+-#~ msgstr "Jämför resultaten av flera analyserare av databeroende."
+-
+-#~ msgid "Enable Loop Strip Mining transformation"
+-#~ msgstr "Aktivera transformationen utgrävning av remsor (strip mining) i slingor"
+-
+-#~ msgid "Enable Loop Interchange transformation"
+-#~ msgstr "Aktivera transformationen utbyte (interchange) i slingor"
+-
+-#~ msgid "Enable Loop Blocking transformation"
+-#~ msgstr "Aktivera slingblockeringstransformation"
+-
+-#~ msgid "Enable Loop Unroll Jam transformation"
+-#~ msgstr "Aktivera transformationen av utrullningsstockningar i slingor"
+-
+-#~ msgid "Enable coalescing of copy-related user variables that are inlined"
+-#~ msgstr "Aktivera sammanläggning av kopieringsrelaterade användarvariabler som är inline:ade"
+-
+-#~ msgid "Replace SSA temporaries with better names in copies"
+-#~ msgstr "Ersätt SSA-temporärer med bättre namn i kopieringar"
+-
+-#~ msgid "expected integer or boolean type"
+-#~ msgstr "heltal eller boolesk typ förväntades"
+-
+-#~ msgid "invalid argument to %<__builtin_frame_address%>"
+-#~ msgstr "ogiltigt argument till %<__builtin_frame_address%>"
+-
+-#~ msgid "invalid argument to %<__builtin_return_address%>"
+-#~ msgstr "ogiltigt argument till %<__builtin_return_address%>"
+-
+-#~ msgid "unsupported argument to %<__builtin_frame_address%>"
+-#~ msgstr "ej stött argument till %<__builtin_frame_address%>"
+-
+-#~ msgid "unsupported argument to %<__builtin_return_address%>"
+-#~ msgstr "ej stött argument till %<__builtin_return_address%>"
+-
+-#~ msgid "assuming signed overflow does not occur when negating a division"
+-#~ msgstr "antar att teckenspill inte förekommer vid negering av en division"
+-
+-#~ msgid "assuming signed overflow does not occur when changing X - Y cmp 0 to X cmp Y"
+-#~ msgstr "antar att teckenspill inte förekommer vid ändring av X - Y jmf 0 till X jmf Y ± K2"
+-
+-#~ msgid "%qE not specified in enclosing parallel"
+-#~ msgstr "%qE inte angiven i omgivande parallel"
+-
+-#~ msgid "enclosing parallel"
+-#~ msgstr "omgivande parallel"
+-
+-#~ msgid "type %qT defined in anonymous namespace can not match type %qT"
+-#~ msgstr "typen %qT är definierad i en anonym namnrymd och kan inte matcha typen %qT"
+-
+-#~ msgid "the incompatible type defined in anonymous namespace in another translation unit"
+-#~ msgstr "den inkompatibla typen är definierad i en anonym namnrymd i en annan översättningsenhet"
+-
+-#~ msgid "type %qT should match type %qT but is defined in different namespace "
+-#~ msgstr "typen %qT borde matcha typen %qT men är definierad i en annan namnrymd "
+-
+-#~ msgid "type %qT should match type %qT that itself violate one definition rule"
+-#~ msgstr "typen %qT borde matcha typen %qT som själv bryter mot endefinitionsregeln"
+-
+-#~ msgid "a type with attributes is defined in another translation unit"
+-#~ msgstr "en typ med attribut är definierad i en annan översättningsenhet"
+-
+-#~ msgid "clause not supported yet"
+-#~ msgstr "klausulen stödjs inte än"
+-
+-#~ msgid "no arguments allowed to gang, worker and vector clauses inside parallel"
+-#~ msgstr "inga argument tillåtna i gang-, worker- och vector-klausuler inuti parallel"
+-
+-#~ msgid "gang, worker and vector may occur only once in a loop nest"
+-#~ msgstr "gang, worker och vector får endast förekomma en gång i ett slingnäste"
+-
+-#~ msgid "gang, worker and vector must occur in this order in a loop nest"
+-#~ msgstr "gang, worker och vector måste förekomma i denna ordning inuti ett slingnäste"
+-
+-#~ msgid "-fsanitize-recover=address is not supported"
+-#~ msgstr "-fsanitize-recover=address stödjs inte"
+-
+-#~ msgid "-mcpu string too large"
+-#~ msgstr "strängen till -mcpu är för stor"
+-
+-#~ msgid "%qs and floating point or vector arguments"
+-#~ msgstr "%qs och flyttals- eller vektorargument"
+-
+-#~ msgid "operand 2 of %s instruction should be an unsigned %d-bit value"
+-#~ msgstr "operand 2 till instruktionen %s skall vara ett teckenlöst %d-bits värde"
+-
+-#~ msgid "operand 2 of %s instruction should be an unsigned 8-bit value"
+-#~ msgstr "operand 2 till instruktionen %s skall vara ett teckenlöst 8-bitars värde"
+-
+-#~ msgid "operand 1 of %s instruction should be an unsigned 3-bit value (DR0-DR7)"
+-#~ msgstr "operand 1 till instruktionen %s skall vara ett teckenlöst 3-bitars värde (DR0-DR7)"
+-
+-#~ msgid "operand of %s instruction should be an unsigned 6-bit value"
+-#~ msgstr "operanden till instruktionen %s skall vara ett teckenlöst 6-bitars värde"
+-
+-#~ msgid "operand 3 of %s instruction should be an unsigned 8-bit value"
+-#~ msgstr "operand 3 till instruktionen %s skall vara ett teckenlöst 8-bitars värde"
+-
+-#~ msgid "incompatible type for argument %d, expected %<const int%>"
+-#~ msgstr "inkompatibel typ för argument %d, %<const int%> förväntades"
+-
+-#~ msgid "unrecognizable argument of option -foffload-abi"
+-#~ msgstr "okänt argument till flaggan -foffload-abi"
+-
+-#~ msgid "%q+D:'selectany' attribute applies only to initialized objects"
+-#~ msgstr "%q+D: attributet ”selectany” tillämpas endast på initierade objekt"
+-
+-#~ msgid "-fPIC ignored for target (all code is position independent)"
+-#~ msgstr "-fPIC ignoreras för målet (all kod är positionsoberoende)"
+-
+-#~ msgid "-f%s ignored for target (all code is position independent)"
+-#~ msgstr "-f%s ignoreras för målet (all kod är positionsoberoende)"
+-
+-#~ msgid "-mbnu210 is ignored (option is obsolete)"
+-#~ msgstr "-mbnu210 ignoreras (flaggan är föråldrad)"
+-
+-#~ msgid "the %<interrupt%> attribute requires %<-msoft-float%>"
+-#~ msgstr "attributet %<interrupt%> kräver %<-msoft-float%>"
+-
+-#~ msgid "only register based stack limit is supported"
+-#~ msgstr "endast registerbaserade stackgränser stödjs"
+-
+-#~ msgid "Transactional execution builtins not enabled (-mhtm)\n"
+-#~ msgstr "Inbyggda för transaktionsvis körning är inte aktiverade (-mhtm)\n"
+-
+-#~ msgid "non-default Scalar_Storage_Order"
+-#~ msgstr "ickestandard Scalar_Storage_Order"
+-
+-#~ msgid "%q+D in block scope inside of declare target directive"
+-#~ msgstr "%q+D i blockräckvidd inuti ett deklarationsmålsdirektiv"
+-
+-#~ msgid "%<%s %E%> declared inside parameter list"
+-#~ msgstr "%<%s %E%> deklarerad inuti parameterlista"
+-
+-#~ msgid "anonymous %s declared inside parameter list"
+-#~ msgstr "anonym %s deklarerad inuti parameterlista"
+-
+-#~ msgid "its scope is only this definition or declaration, which is probably not what you want"
+-#~ msgstr "dess scope-område är endast denna definition eller deklaration, vilket troligen inte är vad du vill."
+-
+-#~ msgid "selected for placement delete"
+-#~ msgstr "vald för placerad delete"
+-
+-#~ msgid "%q+#D is private"
+-#~ msgstr "%q+#D är privat"
+-
+-#~ msgid "%q+#D is protected"
+-#~ msgstr "%q+#D är skyddad"
+-
+-#~ msgid " initializing argument %P of %q+D"
+-#~ msgstr " initierar argument %P till %q+D"
+-
+-#~ msgid " in call to %q+D"
+-#~ msgstr " i anrop till %q+D"
+-
+-#~ msgid "difference of two pointer expressions is not a constant expression"
+-#~ msgstr "skillnaden mellan två pekaruttryck är inte ett konstant uttryck"
+-
+-#~ msgid "pointer comparison expression is not a constant expression"
+-#~ msgstr "pekarjämförelseuttryck är inte ett konstant uttryck"
+-
+-#~ msgid "%qE implicitly determined as %<firstprivate%> has reference type"
+-#~ msgstr "%qE som implicit bestämts som %<firstprivate%> har referenstyp"
+-
+-#~ msgid "variable %q+D set but not used"
+-#~ msgstr "variabeln %q+D sätts men används inte"
+-
+-#~ msgid "declaration of %qF has a different exception specifier"
+-#~ msgstr "deklaration av %qF har en annan undantagsspecificerare"
+-
+-#~ msgid "jump to label %q+D"
+-#~ msgstr "hopp till etikett %q+D"
+-
+-#~ msgid "%<constexpr%> is not allowed in declaration of friend template specialization %qD"
+-#~ msgstr "%<constexpr%> är inte tillåtet i deklaration av vänmallspecialisering %qD"
+-
+-#~ msgid "size of array %qs is too large"
+-#~ msgstr "storleken på vektorn %qs är för stor"
+-
+-#~ msgid "type qualifiers specified for friend class declaration"
+-#~ msgstr "typkvalificerare angivna för vänklassdeklaration"
+-
+-#~ msgid "no previous declaration for %q+D"
+-#~ msgstr "ingen tidigare deklaration av %q+D"
+-
+-#~ msgid "parameter %q+D set but not used"
+-#~ msgstr "parametern %q+D sätts men används inte"
+-
+-#~ msgid "%q+D declared here"
+-#~ msgstr "%q+D är deklarerad här"
+-
+-#~ msgid "previous declaration %q+#D"
+-#~ msgstr "tidigare deklaration %q+#D"
+-
+-#~ msgid "%qD is not an enumerator-name"
+-#~ msgstr "%qD är inte ett uppräkningsnamn"
+-
+-#~ msgid "deprecated use of default argument for parameter of non-function"
+-#~ msgstr "användning av standardargument för parametrar till annat än funktioner bör undvikas"
+-
+-#~ msgid "expected positive integer expression"
+-#~ msgstr "positivt heltalsuttryck förväntades"
+-
+-#~ msgid "declaration of %q+#D"
+-#~ msgstr "deklaration av %q+#D"
+-
+-#~ msgid " shadows template parm %q+#D"
+-#~ msgstr " skuggar mallparameter %q+#D"
+-
+-#~ msgid "switch condition has type bool"
+-#~ msgstr "switch-villkor har typen bool"
+-
+-#~ msgid "num_threads expression must be integral"
+-#~ msgstr "num_threads-uttryck måste vara heltal"
+-
+-#~ msgid "%qE has reference type for %qs"
+-#~ msgstr "%qE har referenstyp för %qs"
+-
+-#~ msgid "invalid use of non-static member function"
+-#~ msgstr "ogiltig användning av icke-statisk medlemsfunktion"
+-
+-#~ msgid "\t%+#D"
+-#~ msgstr "\t%+#D"
+-
+-#~ msgid "%q+D has incomplete type"
+-#~ msgstr "%q+D har en ofullständig typ"
+-
+-#~ msgid "Conflict in attributes of function argument at %C"
+-#~ msgstr "Konflikt i attribut för funktionsargument vid %C"
+-
+-#~ msgid "Error count reached limit of %d."
+-#~ msgstr "Felantal nådde gränsen vid %d."
+-
+-#~ msgid "Clause GANG conflicts with WORKER at %L"
+-#~ msgstr "Klausulen GANG står i konflikt med WORKER vid %L"
+-
+-#~ msgid "Clause GANG conflicts with VECTOR at %L"
+-#~ msgstr "Klausulen GANG står i konflikt med VECTOR vid %L"
+-
+-#~ msgid "Clause WORKER conflicts with VECTOR at %L"
+-#~ msgstr "WORKER-klausulen står i konflikt med VECTOR vid %L"
+-
+-#~ msgid "Sorry, !$ACC cache unimplemented yet"
+-#~ msgstr "Ledsen, !$ACC-cache är fortfarande oimplementerat"
+-
+-#~ msgid "CHARACTER variable at %L has negative length %d, the length has been set to zero"
+-#~ msgstr "CHARACTER-variabel vid %L har negativ längd %d, längden har satts till noll"
Index: gcc/po/de.po
===================================================================
--- a/src/gcc/po/de.po (.../tags/gcc_6_1_0_release)
@@ -743032,11 +751973,122 @@ Index: gcc/tree-vect-patterns.c
vectype2 = get_mask_type_for_scalar_type (rhs1_type);
+Index: gcc/tree-inline.c
+===================================================================
+--- a/src/gcc/tree-inline.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/tree-inline.c (.../branches/gcc-6-branch)
+@@ -840,7 +840,7 @@
+ static unsigned short
+ remap_dependence_clique (copy_body_data *id, unsigned short clique)
+ {
+- if (clique == 0)
++ if (clique == 0 || processing_debug_stmt)
+ return 0;
+ if (!id->dependence_map)
+ id->dependence_map = new hash_map<dependence_hash, unsigned short>;
+Index: gcc/hsa-gen.c
+===================================================================
+--- a/src/gcc/hsa-gen.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/hsa-gen.c (.../branches/gcc-6-branch)
+@@ -203,9 +203,13 @@
+ {
+ m_decl = decl;
+ m_type = hsa_type_for_tree_type (TREE_TYPE (decl), &m_dim, false);
++ if (hsa_seen_error ())
++ {
++ m_seen_error = true;
++ return;
++ }
+
+- if (hsa_seen_error ())
+- m_seen_error = true;
++ m_align = MAX (m_align, hsa_natural_alignment (m_type));
+ }
+
+ /* Constructor of class representing global HSA function/kernel information and
+@@ -929,6 +933,14 @@
+ BRIG_LINKAGE_PROGRAM, true,
+ BRIG_ALLOCATION_PROGRAM, align);
+ hsa_cfun->m_global_symbols.safe_push (sym);
++ sym->fillup_for_decl (decl);
++ if (sym->m_align > align)
++ {
++ sym->m_seen_error = true;
++ HSA_SORRY_ATV (EXPR_LOCATION (decl),
++ "HSA specification requires that %E is at least "
++ "naturally aligned", decl);
++ }
+ }
+ else
+ {
+@@ -944,12 +956,11 @@
+ sym = new hsa_symbol (BRIG_TYPE_NONE, BRIG_SEGMENT_PRIVATE,
+ BRIG_LINKAGE_FUNCTION);
+ sym->m_align = align;
++ sym->fillup_for_decl (decl);
+ hsa_cfun->m_private_variables.safe_push (sym);
+ }
+
+- sym->fillup_for_decl (decl);
+ sym->m_name = hsa_get_declaration_name (decl);
+-
+ *slot = sym;
+ return sym;
+ }
Index: gcc/tree-ssa-structalias.c
===================================================================
--- a/src/gcc/tree-ssa-structalias.c (.../tags/gcc_6_1_0_release)
+++ b/src/gcc/tree-ssa-structalias.c (.../branches/gcc-6-branch)
-@@ -7486,7 +7486,7 @@
+@@ -4639,12 +4639,11 @@
+ auto_vec<ce_s, 2> lhsc;
+ struct constraint_expr rhs;
+ struct constraint_expr *lhsp;
++ bool aggr_p = aggregate_value_p (lhsop, gimple_call_fntype (t));
+
+ get_constraint_for (lhsop, &lhsc);
+ rhs = get_function_part_constraint (fi, fi_result);
+- if (fndecl
+- && DECL_RESULT (fndecl)
+- && DECL_BY_REFERENCE (DECL_RESULT (fndecl)))
++ if (aggr_p)
+ {
+ auto_vec<ce_s, 2> tem;
+ tem.quick_push (rhs);
+@@ -4654,22 +4653,19 @@
+ }
+ FOR_EACH_VEC_ELT (lhsc, j, lhsp)
+ process_constraint (new_constraint (*lhsp, rhs));
+- }
+
+- /* If we pass the result decl by reference, honor that. */
+- if (lhsop
+- && fndecl
+- && DECL_RESULT (fndecl)
+- && DECL_BY_REFERENCE (DECL_RESULT (fndecl)))
+- {
+- struct constraint_expr lhs;
+- struct constraint_expr *rhsp;
++ /* If we pass the result decl by reference, honor that. */
++ if (aggr_p)
++ {
++ struct constraint_expr lhs;
++ struct constraint_expr *rhsp;
+
+- get_constraint_for_address_of (lhsop, &rhsc);
+- lhs = get_function_part_constraint (fi, fi_result);
+- FOR_EACH_VEC_ELT (rhsc, j, rhsp)
+- process_constraint (new_constraint (lhs, *rhsp));
+- rhsc.truncate (0);
++ get_constraint_for_address_of (lhsop, &rhsc);
++ lhs = get_function_part_constraint (fi, fi_result);
++ FOR_EACH_VEC_ELT (rhsc, j, rhsp)
++ process_constraint (new_constraint (lhs, *rhsp));
++ rhsc.truncate (0);
++ }
+ }
+
+ /* If we use a static chain, pass it along. */
+@@ -7486,7 +7482,7 @@
= { true, false, false, false, false, false, false, false, NULL };
/* Associate node with varinfo DATA. Worker for
@@ -743045,7 +752097,7 @@ Index: gcc/tree-ssa-structalias.c
static bool
associate_varinfo_to_alias (struct cgraph_node *node, void *data)
{
-@@ -7496,6 +7496,29 @@
+@@ -7496,6 +7492,29 @@
return false;
}
@@ -743075,7 +752127,7 @@ Index: gcc/tree-ssa-structalias.c
/* Execute the driver for IPA PTA. */
static unsigned int
ipa_pta_execute (void)
-@@ -7559,6 +7582,8 @@
+@@ -7559,6 +7578,8 @@
|| node->externally_visible
|| node->force_output
|| node_address_taken);
@@ -743084,7 +752136,7 @@ Index: gcc/tree-ssa-structalias.c
vi = create_function_info_for (node->decl,
alias_get_name (node->decl), false,
-@@ -7596,6 +7621,8 @@
+@@ -7596,6 +7617,8 @@
bool nonlocal_p = (var->used_from_other_partition
|| var->externally_visible
|| var->force_output);
@@ -743093,6 +752145,50 @@ Index: gcc/tree-ssa-structalias.c
if (nonlocal_p)
vi->is_ipa_escape_point = true;
}
+Index: gcc/config/nvptx/nvptx.c
+===================================================================
+--- a/src/gcc/config/nvptx/nvptx.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/nvptx/nvptx.c (.../branches/gcc-6-branch)
+@@ -483,7 +483,7 @@
+ static rtx
+ nvptx_libcall_value (machine_mode mode, const_rtx)
+ {
+- if (!cfun->machine->doing_call)
++ if (!cfun || !cfun->machine->doing_call)
+ /* Pretend to return in a hard reg for early uses before pseudos can be
+ generated. */
+ return gen_rtx_REG (mode, NVPTX_RETURN_REGNUM);
+@@ -502,6 +502,7 @@
+
+ if (outgoing)
+ {
++ gcc_assert (cfun);
+ cfun->machine->return_mode = mode;
+ return gen_rtx_REG (mode, NVPTX_RETURN_REGNUM);
+ }
+Index: gcc/config/alpha/alpha.md
+===================================================================
+--- a/src/gcc/config/alpha/alpha.md (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/alpha/alpha.md (.../branches/gcc-6-branch)
+@@ -3738,7 +3738,8 @@
+
+ ;; BUGCHK is documented common to OSF/1 and VMS PALcode.
+ (define_insn "trap"
+- [(trap_if (const_int 1) (const_int 0))]
++ [(trap_if (const_int 1) (const_int 0))
++ (use (reg:DI 29))]
+ ""
+ "call_pal 0x81"
+ [(set_attr "type" "callpal")])
+@@ -5157,7 +5158,7 @@
+ "TARGET_ABI_OSF"
+ {
+ if (TARGET_EXPLICIT_RELOCS)
+- return "ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*";
++ return "#";
+ else
+ return "ldgp $29,0($26)";
+ }
Index: gcc/config/s390/s390.md
===================================================================
--- a/src/gcc/config/s390/s390.md (.../tags/gcc_6_1_0_release)
@@ -743387,6 +752483,27 @@ Index: gcc/config/rtems.h
+ -latomic -lc -lgcc --end-group %{!qnolinkcmds: -T linkcmds%s}}}"
#define TARGET_POSIX_IO
+Index: gcc/config/aarch64/aarch64-simd.md
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64-simd.md (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/aarch64/aarch64-simd.md (.../branches/gcc-6-branch)
+@@ -1919,16 +1919,6 @@
+ }
+ )
+
+-(define_insn "aarch64_vmls<mode>"
+- [(set (match_operand:VDQF 0 "register_operand" "=w")
+- (minus:VDQF (match_operand:VDQF 1 "register_operand" "0")
+- (mult:VDQF (match_operand:VDQF 2 "register_operand" "w")
+- (match_operand:VDQF 3 "register_operand" "w"))))]
+- "TARGET_SIMD"
+- "fmls\\t%0.<Vtype>, %2.<Vtype>, %3.<Vtype>"
+- [(set_attr "type" "neon_fp_mla_<Vetype>_scalar<q>")]
+-)
+-
+ ;; FP Max/Min
+ ;; Max/Min are introduced by idiom recognition by GCC's mid-end. An
+ ;; expression like:
Index: gcc/config/rs6000/rs6000-builtin.def
===================================================================
--- a/src/gcc/config/rs6000/rs6000-builtin.def (.../tags/gcc_6_1_0_release)
@@ -743412,6 +752529,22 @@ Index: gcc/config/rs6000/rs6000-builtin.def
BU_VSX_X (XSABSDP, "xsabsdp", CONST)
BU_VSX_X (XSADDDP, "xsadddp", FP)
BU_VSX_X (XSCMPODP, "xscmpodp", FP)
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-6-branch)
+@@ -27724,6 +27724,11 @@
+ const0_rtx, const0_rtx));
+ call_fusage = NULL_RTX;
+ use_reg (&call_fusage, r12);
++ /* Say the call uses r0, even though it doesn't, to stop regrename
++ from twiddling with the insns saving lr, trashing args for cfun.
++ The insns restoring lr are similarly protected by making
++ split_stack_return use r0. */
++ use_reg (&call_fusage, r0);
+ add_function_usage_to (insn, call_fusage);
+ emit_insn (gen_frame_load (r0, r1, info->lr_save_offset));
+ insn = emit_move_insn (lr, r0);
Index: gcc/config/rs6000/vsx.md
===================================================================
--- a/src/gcc/config/rs6000/vsx.md (.../tags/gcc_6_1_0_release)
@@ -743456,6 +752589,134 @@ Index: gcc/config/rs6000/vsx.md
emit_insn (gen_vsx_xvcvdpuxds (op0, tmp));
DONE;
})
+Index: gcc/config/rs6000/rs6000.md
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-6-branch)
+@@ -12563,8 +12563,10 @@
+ (set_attr "indexed" "no")])
+
+ ;; A return instruction which the middle-end doesn't see.
++;; Use r0 to stop regrename twiddling with lr restore insns emitted
++;; after the call to __morestack.
+ (define_insn "split_stack_return"
+- [(unspec_volatile [(const_int 0)] UNSPECV_SPLIT_STACK_RETURN)]
++ [(unspec_volatile [(use (reg:SI 0))] UNSPECV_SPLIT_STACK_RETURN)]
+ ""
+ "blr"
+ [(set_attr "type" "jmpreg")])
+Index: gcc/config/rs6000/sysv4.h
+===================================================================
+--- a/src/gcc/config/rs6000/sysv4.h (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/rs6000/sysv4.h (.../branches/gcc-6-branch)
+@@ -744,21 +744,32 @@
+ %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \
+ %{!shared: %{profile:-lc_p} %{!profile:-lc}}}"
+
++#if ENABLE_OFFLOADING == 1
++#define CRTOFFLOADBEGIN "%{fopenacc|fopenmp:crtoffloadbegin%O%s}"
++#define CRTOFFLOADEND "%{fopenacc|fopenmp:crtoffloadend%O%s}"
++#else
++#define CRTOFFLOADBEGIN ""
++#define CRTOFFLOADEND ""
++#endif
++
+ #ifdef HAVE_LD_PIE
+ #define STARTFILE_LINUX_SPEC "\
+ %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+ %{mnewlib:ecrti.o%s;:crti.o%s} \
+-%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
++%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
++" CRTOFFLOADBEGIN
+ #else
+ #define STARTFILE_LINUX_SPEC "\
+ %{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \
+ %{mnewlib:ecrti.o%s;:crti.o%s} \
+-%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
++%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
++" CRTOFFLOADBEGIN
+ #endif
+
+ #define ENDFILE_LINUX_SPEC "\
+ %{shared|pie:crtendS.o%s;:crtend.o%s} \
+-%{mnewlib:ecrtn.o%s;:crtn.o%s}"
++%{mnewlib:ecrtn.o%s;:crtn.o%s} \
++" CRTOFFLOADEND
+
+ #define LINK_START_LINUX_SPEC ""
+
+Index: gcc/config/arm/arm.c
+===================================================================
+--- a/src/gcc/config/arm/arm.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-6-branch)
+@@ -17755,6 +17755,7 @@
+ int num_saves = XVECLEN (operands[0], 0);
+ unsigned int regno;
+ unsigned int regno_base = REGNO (operands[1]);
++ bool interrupt_p = IS_INTERRUPT (arm_current_func_type ());
+
+ offset = 0;
+ offset += update ? 1 : 0;
+@@ -17772,7 +17773,8 @@
+ }
+
+ conditional = reverse ? "%?%D0" : "%?%d0";
+- if ((regno_base == SP_REGNUM) && update)
++ /* Can't use POP if returning from an interrupt. */
++ if ((regno_base == SP_REGNUM) && !(interrupt_p && return_pc))
+ {
+ sprintf (pattern, "pop%s\t{", conditional);
+ }
+@@ -17781,11 +17783,8 @@
+ /* Output ldmfd when the base register is SP, otherwise output ldmia.
+ It's just a convention, their semantics are identical. */
+ if (regno_base == SP_REGNUM)
+- /* update is never true here, hence there is no need to handle
+- pop here. */
+- sprintf (pattern, "ldmfd%s", conditional);
+-
+- if (update)
++ sprintf (pattern, "ldmfd%s\t", conditional);
++ else if (update)
+ sprintf (pattern, "ldmia%s\t", conditional);
+ else
+ sprintf (pattern, "ldm%s\t", conditional);
+@@ -17811,7 +17810,7 @@
+
+ strcat (pattern, "}");
+
+- if (IS_INTERRUPT (arm_current_func_type ()) && return_pc)
++ if (interrupt_p && return_pc)
+ strcat (pattern, "^");
+
+ output_asm_insn (pattern, &cond);
+@@ -19622,8 +19621,12 @@
+ sprintf (instr, "ldmfd%s\t%%|sp, {", conditional);
+ }
+ }
++ /* For interrupt returns we have to use an LDM rather than
++ a POP so that we can use the exception return variant. */
++ else if (IS_INTERRUPT (func_type))
++ sprintf (instr, "ldmfd%s\t%%|sp!, {", conditional);
+ else
+- sprintf (instr, "pop%s\t{", conditional);
++ sprintf (instr, "pop%s\t{", conditional);
+
+ p = instr + strlen (instr);
+
+Index: gcc/ipa-icf.c
+===================================================================
+--- a/src/gcc/ipa-icf.c (.../tags/gcc_6_1_0_release)
++++ b/src/gcc/ipa-icf.c (.../branches/gcc-6-branch)
+@@ -2258,6 +2258,8 @@
+
+ varpool_node::create_alias (alias_var->decl, decl);
+ alias->resolve_alias (original);
++ if (DECL_PT_UID_SET_P (original->decl))
++ SET_DECL_PT_UID (alias->decl, DECL_PT_UID (original->decl));
+
+ if (dump_file)
+ fprintf (dump_file, "Unified; Variable alias has been created.\n\n");
Index: libvtv/Makefile.in
===================================================================
--- a/src/libvtv/Makefile.in (.../tags/gcc_6_1_0_release)
@@ -745824,7 +755085,15 @@ Index: libcpp/po/ChangeLog
===================================================================
--- a/src/libcpp/po/ChangeLog (.../tags/gcc_6_1_0_release)
+++ b/src/libcpp/po/ChangeLog (.../branches/gcc-6-branch)
-@@ -1,3 +1,17 @@
+@@ -1,3 +1,25 @@
++2016-05-18 Joseph Myers <joseph at codesourcery.com>
++
++ * da.po: Update.
++
++2016-05-12 Joseph Myers <joseph at codesourcery.com>
++
++ * fi.po: Update.
++
+2016-05-03 Joseph Myers <joseph at codesourcery.com>
+
+ * nl.po: Update.
@@ -747555,15 +756824,20 @@ Index: libcpp/po/da.po
===================================================================
--- a/src/libcpp/po/da.po (.../tags/gcc_6_1_0_release)
+++ b/src/libcpp/po/da.po (.../branches/gcc-6-branch)
-@@ -130,7 +130,7 @@
+@@ -128,10 +128,10 @@
+ #
+ msgid ""
msgstr ""
- "Project-Id-Version: cpplib 6.1-b20160131\n"
+-"Project-Id-Version: cpplib 6.1-b20160131\n"
++"Project-Id-Version: cpplib 6.1.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2016-01-31 15:50+0000\n"
+-"PO-Revision-Date: 2016-03-27 18:00+0200\n"
+"POT-Creation-Date: 2016-04-21 15:24+0000\n"
- "PO-Revision-Date: 2016-03-27 18:00+0200\n"
++"PO-Revision-Date: 2016-05-16 18:00+0200\n"
"Last-Translator: Joe Hansen <joedalton2 at yahoo.dk>\n"
"Language-Team: Danish <dansk at dansk-gruppen.dk>\n"
+ "Language: da\n"
@@ -208,7 +208,7 @@
msgid "universal character %.*s is not valid at the start of an identifier"
msgstr "universelt tegn %.*s er ikke gyldigt i starten af et kaldenavn"
@@ -747590,7 +756864,7 @@ Index: libcpp/po/da.po
+#: directives.c:1061
#, c-format
+msgid "file \"%s\" linemarker ignored due to incorrect nesting"
-+msgstr ""
++msgstr "filen »%s« linjemarkør ignoreret på grund af ukorrekt indlejring"
+
+#: directives.c:1120 directives.c:1122 directives.c:1124 directives.c:1710
+#, c-format
@@ -747773,18 +757047,18 @@ Index: libcpp/po/da.po
msgid "stdout"
msgstr "standardud"
-@@ -550,7 +555,9 @@
+@@ -550,8 +555,8 @@
msgstr "ugyldigt præfiks »0b« i kommatalskonstant"
#: expr.c:555
-msgid "use of C++11 hexadecimal floating constant"
-+#, fuzzy
-+#| msgid "use of C++11 hexadecimal floating constant"
+-msgstr "brug af C++11 hexadecimal kommatalskonstant"
+msgid "use of C++1z hexadecimal floating constant"
- msgstr "brug af C++11 hexadecimal kommatalskonstant"
++msgstr "brug af C++1z hexadecimal kommatalskonstant"
#: expr.c:558
-@@ -895,153 +902,153 @@
+ msgid "use of C99 hexadecimal floating constant"
+@@ -895,153 +900,153 @@
msgid "unspellable token %s"
msgstr "symbol %s kan ikke staves"
@@ -751402,15 +760676,29 @@ Index: libcpp/po/fi.po
===================================================================
--- a/src/libcpp/po/fi.po (.../tags/gcc_6_1_0_release)
+++ b/src/libcpp/po/fi.po (.../branches/gcc-6-branch)
-@@ -8,7 +8,7 @@
+@@ -6,10 +6,10 @@
+ #
+ msgid ""
msgstr ""
- "Project-Id-Version: cpplib 6.1-b20160131\n"
+-"Project-Id-Version: cpplib 6.1-b20160131\n"
++"Project-Id-Version: cpplib 6.1.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2016-01-31 15:50+0000\n"
+-"PO-Revision-Date: 2016-02-09 22:14+0200\n"
+"POT-Creation-Date: 2016-04-21 15:24+0000\n"
- "PO-Revision-Date: 2016-02-09 22:14+0200\n"
++"PO-Revision-Date: 2016-05-12 23:30+0300\n"
"Last-Translator: Lauri Nurmi <lanurmi at iki.fi>\n"
"Language-Team: Finnish <translation-team-fi at lists.sourceforge.net>\n"
+ "Language: fi\n"
+@@ -17,7 +17,7 @@
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+-"X-Generator: Poedit 1.8.6\n"
++"X-Generator: Poedit 1.8.7\n"
+
+ #: charset.c:674
+ #, c-format
@@ -89,7 +89,7 @@
msgid "universal character %.*s is not valid at the start of an identifier"
msgstr "universaali merkki %.*s ei ole kelvollinen tunnisteen alussa"
@@ -751437,7 +760725,7 @@ Index: libcpp/po/fi.po
+#: directives.c:1061
#, c-format
+msgid "file \"%s\" linemarker ignored due to incorrect nesting"
-+msgstr ""
++msgstr "tiedoston ”%s” rivinmerkitsin jätetään huomiotta virheellisen sisäkkäisyyden vuoksi"
+
+#: directives.c:1120 directives.c:1122 directives.c:1124 directives.c:1710
+#, c-format
@@ -751621,18 +760909,18 @@ Index: libcpp/po/fi.po
msgid "stdout"
msgstr "vakiotuloste"
-@@ -432,7 +437,9 @@
+@@ -432,8 +437,8 @@
msgstr "virheellinen etuliite ”0b” liukulukuvakiolle"
#: expr.c:555
-msgid "use of C++11 hexadecimal floating constant"
-+#, fuzzy
-+#| msgid "use of C++11 hexadecimal floating constant"
+-msgstr "C++11:n heksadesimaaliliukulukuvakion käyttö"
+msgid "use of C++1z hexadecimal floating constant"
- msgstr "C++11:n heksadesimaaliliukulukuvakion käyttö"
++msgstr "C++1z:n heksadesimaaliliukulukuvakion käyttö"
#: expr.c:558
-@@ -784,155 +791,155 @@
+ msgid "use of C99 hexadecimal floating constant"
+@@ -784,155 +789,155 @@
msgid "unspellable token %s"
msgstr "kirjoitusasuton symboli %s"
diff --git a/debian/rules.conf b/debian/rules.conf
index 9385734..e51adcb 100644
--- a/debian/rules.conf
+++ b/debian/rules.conf
@@ -623,9 +623,9 @@ NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \
awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}')
# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION
# or TARGET_ALIAS changes), or last version available for all architectures
-DEB_GCC_SOFT_VERSION := 6.0.1-1
-DEB_GCJ_SOFT_VERSION := 6.0.1-1
-DEB_GNAT_SOFT_VERSION := 6.0.1-1
+DEB_GCC_SOFT_VERSION := 6.1.1-2
+DEB_GCJ_SOFT_VERSION := 6.1.1-2
+DEB_GNAT_SOFT_VERSION := 6.1.1-2
ifeq ($(with_d),yes)
GDC_VERSION := $(BASE_VERSION)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git
More information about the Reproducible-commits
mailing list