summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog5
-rw-r--r--debian/control2
-rw-r--r--debian/patches/svn-updates.diff4098
3 files changed, 3806 insertions, 299 deletions
diff --git a/debian/changelog b/debian/changelog
index cddb3b3..d92ae0a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
-gcc-5 (5.2.1-15) UNRELEASED; urgency=medium
+gcc-5 (5.2.1-15) unstable; urgency=medium
+ * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch.
* Adjust libstdc++-breaks: Break libantlr-dev instead of antlr;
adjust libreoffice version (closes: #794203), drop xxsd break (see
#793289), remove cython breaks (closes: #794511), add breaks for
@@ -7,7 +8,7 @@ gcc-5 (5.2.1-15) UNRELEASED; urgency=medium
pysph, pytaglib, python-scipy, python-sfml, rasterio).
* Ignore missing libstdc++ symbols on sparc64 (work around #792204).
- -- Matthias Klose <doko@debian.org> Sat, 01 Aug 2015 20:27:57 +0200
+ -- Matthias Klose <doko@debian.org> Sat, 08 Aug 2015 11:18:24 +0200
gcc-5 (5.2.1-14) unstable; urgency=high
diff --git a/debian/control b/debian/control
index 3665b87..0a7807d 100644
--- a/debian/control
+++ b/debian/control
@@ -1927,7 +1927,7 @@ Depends: gcc-5-base (= ${gcc:Version}), ${dep:libc}, ${shlibs:Depends}, ${misc:D
Provides: libstdc++6-armel [armel], libstdc++6-armhf [armhf]
Multi-Arch: same
Pre-Depends: multiarch-support
-Breaks: ${multiarch:breaks}, libantlr-dev (<= 2.7.7+dfsg-6), libaqsis1 (<= 1.8.2-1), libassimp3 (<= 3.0~dfsg-4), blockattack (<= 1.4.1+ds1-2.1+b2), boo (<= 0.9.5~git20110729.r1.202a430-2), libboost-date-time1.54.0, libboost-date-time1.55.0, libcpprest2.4 (<= 2.4.0-2), printer-driver-brlaser (<= 3-3), c++-annotations (<= 10.2.0-1), clustalx (<= 2.1+lgpl-3), cython (<= 0.22.1-1), cython3 (<= 0.22.1-1), libdavix0 (<= 0.4.0-1+b1), libdballe6 (<= 6.8-1), dff (<= 1.3.0+dfsg.1-4.1+b3), libdiet-sed2.8 (<= 2.8.0-1+b3), libdiet-client2.8 (<= 2.8.0-1+b3), libdiet-admin2.8 (<= 2.8.0-1+b3), digikam-private-libs (<= 4:4.4.0-1.1+b2), emscripten (<= 1.22.1-1), ergo (<= 3.4.0-1), fceux (<= 2.2.2+dfsg0-1), flush (<= 0.9.12-3.1), libfreefem++ (<= 3.37.1-1), freeorion (<= 0.4.4+git20150327-2), fslview (<= 4.0.1-4), fwbuilder (<= 5.1.0-4), libgazebo5 (<= 5.0.1+dfsg-2.1), libgetfem4++ (<= 4.2.1~beta1~svn4635~dfsg-3+b1), libgmsh2 (<= 2.9.3+dfsg1-1), gnote (<= 3.16.2-1), gnudatalanguage (<= 0.9.5-2+b2), python-healpy (<= 1.8.1-1+b1), innoextract (<= 1.4-1+b1), libinsighttoolkit4.7 (<= 4.7.2-2), libdap17 (<= 3.14.0-2), libdapclient6 (<= 3.14.0-2), libdapserver7 (<= 3.14.0-2), libkolabxml1 (<= 1.1.0-3), libpqxx-4.0 (<= 4.0.1+dfsg-3), libreoffice-core (<= 1:4.4.5-2), librime1 (<= 1.2+dfsg-2), libwibble-dev (<= 1.1-1), lightspark (<= 0.7.2+git20150512-2+b1), libmarisa0 (<= 0.2.4-8), mira-assembler (<= 4.9.5-1), mongodb (<= 1:2.4.14-2), mongodb-server (<= 1:2.4.14-2), ncbi-blast+ (<= 2.2.30-4), libogre-1.8.0 (<= 1.8.0+dfsg1-7+b1), libogre-1.9.0 (<= 1.9.0+dfsg1-4), openscad (<= 2014.03+dfsg-1+b1), libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1+b1), passepartout (<= 0.7.1-1.1), pdf2djvu (<= 0.7.21-2), photoprint (<= 0.4.2~pre2-2.3+b2), plastimatch (<= 1.6.2+dfsg-1), plee-the-bear (<= 0.6.0-3.1), povray (<= 1:3.7.0.0-8), powertop (<= 2.6.1-1), psi4 (<= 4.0~beta5+dfsg-2+b1), python3-taglib (<= 0.3.6+dfsg-2+b2), realtimebattle (<= 1.0.8-14), ruby-passenger (<= 5.0.7-1), libapache2-mod-passenger (<= 5.0.7-1), schroot (<= 1.6.10-1+b1), sqlitebrowser (<= 3.5.1-3), tecnoballz (<= 0.93.1-6), wesnoth-1.12-core (<= 1:1.12.4-1), widelands (<= 1:18-3+b1), libwreport2 (<= 2.14-1), xflr5 (<= 6.09.06-2), libxmltooling6 (<= 1.5.3-2.1), xsdcxx (<= 4.0.0-1),
+Breaks: ${multiarch:breaks}, libantlr-dev (<= 2.7.7+dfsg-6), libaqsis1 (<= 1.8.2-1), libassimp3 (<= 3.0~dfsg-4), blockattack (<= 1.4.1+ds1-2.1+b2), boo (<= 0.9.5~git20110729.r1.202a430-2), libboost-date-time1.54.0, libboost-date-time1.55.0, libcpprest2.4 (<= 2.4.0-2), printer-driver-brlaser (<= 3-3), c++-annotations (<= 10.2.0-1), clustalx (<= 2.1+lgpl-3), libdavix0 (<= 0.4.0-1+b1), libdballe6 (<= 6.8-1), dff (<= 1.3.0+dfsg.1-4.1+b3), libdiet-sed2.8 (<= 2.8.0-1+b3), libdiet-client2.8 (<= 2.8.0-1+b3), libdiet-admin2.8 (<= 2.8.0-1+b3), digikam-private-libs (<= 4:4.4.0-1.1+b2), emscripten (<= 1.22.1-1), ergo (<= 3.4.0-1), fceux (<= 2.2.2+dfsg0-1), flush (<= 0.9.12-3.1), libfreefem++ (<= 3.37.1-1), freeorion (<= 0.4.4+git20150327-2), fslview (<= 4.0.1-4), fwbuilder (<= 5.1.0-4), libgazebo5 (<= 5.0.1+dfsg-2.1), libgetfem4++ (<= 4.2.1~beta1~svn4635~dfsg-3+b1), libgmsh2 (<= 2.9.3+dfsg1-1), gnote (<= 3.16.2-1), gnudatalanguage (<= 0.9.5-2+b2), python-healpy (<= 1.8.1-1+b1), innoextract (<= 1.4-1+b1), libinsighttoolkit4.7 (<= 4.7.2-2), libdap17 (<= 3.14.0-2), libdapclient6 (<= 3.14.0-2), libdapserver7 (<= 3.14.0-2), libkolabxml1 (<= 1.1.0-3), libpqxx-4.0 (<= 4.0.1+dfsg-3), libreoffice-core (<= 1:4.4.5-2), librime1 (<= 1.2+dfsg-2), libwibble-dev (<= 1.1-1), lightspark (<= 0.7.2+git20150512-2+b1), libmarisa0 (<= 0.2.4-8), mira-assembler (<= 4.9.5-1), mongodb (<= 1:2.4.14-2), mongodb-server (<= 1:2.4.14-2), ncbi-blast+ (<= 2.2.30-4), libogre-1.8.0 (<= 1.8.0+dfsg1-7+b1), libogre-1.9.0 (<= 1.9.0+dfsg1-4), openscad (<= 2014.03+dfsg-1+b1), libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1+b1), passepartout (<= 0.7.1-1.1), pdf2djvu (<= 0.7.21-2), photoprint (<= 0.4.2~pre2-2.3+b2), plastimatch (<= 1.6.2+dfsg-1), plee-the-bear (<= 0.6.0-3.1), povray (<= 1:3.7.0.0-8), powertop (<= 2.6.1-1), psi4 (<= 4.0~beta5+dfsg-2+b1), python3-taglib (<= 0.3.6+dfsg-2+b2), realtimebattle (<= 1.0.8-14), ruby-passenger (<= 5.0.7-1), libapache2-mod-passenger (<= 5.0.7-1), schroot (<= 1.6.10-1+b1), sqlitebrowser (<= 3.5.1-3), tecnoballz (<= 0.93.1-6), wesnoth-1.12-core (<= 1:1.12.4-1), widelands (<= 1:18-3+b1), libwreport2 (<= 2.14-1), xflr5 (<= 6.09.06-2), libxmltooling6 (<= 1.5.3-2.1), libchemps2-1 (<= 1.5-1), python-fiona (<= 1.5.1-2), python3-fiona (<= 1.5.1-2), fiona (<= 1.5.1-2), python-guiqwt (<= 2.3.1-1), python-htseq (<= 0.5.4p3-2), python-imposm (<= 2.5.0-3+b2), python-pysph (<= 0~20150606.gitfa26de9-5), python3-taglib (<= 0.3.6+dfsg-2+b2), python-scipy (<= 0.14.1-1), python3-scipy (<= 0.14.1-1), python-sfml (<= 2.2~git20150611.196c88+dfsg-1+b1), python3-sfml (<= 2.2~git20150611.196c88+dfsg-1+b1), python-rasterio (<= 0.24.0-1),
Conflicts: scim (<< 1.4.2-1)
Replaces: libstdc++6-5-dbg (<< 4.9.0-3)
Description: GNU Standard C++ Library v3
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 0e3b53e..312e116 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 5 branch upto 20150730 (r226411).
+# DP: updates from the 5 branch upto 20150808 (r226731).
last_update()
{
cat > ${dir}LAST_UPDATED <EOF
-Thu Jul 30 21:43:56 CEST 2015
-Thu Jul 30 19:43:56 UTC 2015 (revision 226411)
+Sat Aug 8 11:15:17 CEST 2015
+Sat Aug 8 09:15:17 UTC 2015 (revision 226731)
EOF
}
@@ -538,13 +538,134 @@ Index: gcc/tree-chkp.h
extern void chkp_expand_bounds_reset_for_mem (tree mem, tree ptr);
extern tree chkp_insert_retbnd_call (tree bndval, tree retval,
gimple_stmt_iterator *gsi);
+Index: gcc/c-family/c-common.c
+===================================================================
+--- a/src/gcc/c-family/c-common.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/c-family/c-common.c (.../branches/gcc-5-branch)
+@@ -10741,7 +10741,7 @@
+ if (TREE_CODE (p) == INTEGER_CST)
+ {
+ int i = tree_to_uhwi (p);
+- if (i < 0 || (i & MEMMODEL_MASK) >= MEMMODEL_LAST)
++ if (i < 0 || (memmodel_base (i) >= MEMMODEL_LAST))
+ {
+ warning_at (loc, OPT_Winvalid_memory_model,
+ "invalid memory model argument %d of %qE", x + 1,
+Index: gcc/lra-int.h
+===================================================================
+--- a/src/gcc/lra-int.h (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/lra-int.h (.../branches/gcc-5-branch)
+@@ -314,8 +314,8 @@
+ extern void lra_process_new_insns (rtx_insn *, rtx_insn *, rtx_insn *,
+ const char *);
+
+-extern bool lra_substitute_pseudo (rtx *, int, rtx);
+-extern bool lra_substitute_pseudo_within_insn (rtx_insn *, int, rtx);
++extern bool lra_substitute_pseudo (rtx *, int, rtx, bool);
++extern bool lra_substitute_pseudo_within_insn (rtx_insn *, int, rtx, bool);
+
+ extern lra_insn_recog_data_t lra_set_insn_recog_data (rtx_insn *);
+ extern lra_insn_recog_data_t lra_update_insn_recog_data (rtx_insn *);
+Index: gcc/optabs.c
+===================================================================
+--- a/src/gcc/optabs.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/optabs.c (.../branches/gcc-5-branch)
+@@ -7178,7 +7178,7 @@
+ success = NULL_RTX;
+ oldval = cmp_reg;
+ if (!expand_atomic_compare_and_swap (&success, &oldval, mem, old_reg,
+- new_reg, false, MEMMODEL_SEQ_CST,
++ new_reg, false, MEMMODEL_SYNC_SEQ_CST,
+ MEMMODEL_RELAXED))
+ return false;
+
+@@ -7239,9 +7239,7 @@
+ exists, and the memory model is stronger than acquire, add a release
+ barrier before the instruction. */
+
+- if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST
+- || (model & MEMMODEL_MASK) == MEMMODEL_RELEASE
+- || (model & MEMMODEL_MASK) == MEMMODEL_ACQ_REL)
++ if (is_mm_seq_cst (model) || is_mm_release (model) || is_mm_acq_rel (model))
+ expand_mem_thread_fence (model);
+
+ if (icode != CODE_FOR_nothing)
+@@ -7348,11 +7346,12 @@
+ rtx ret;
+
+ /* Try an atomic_exchange first. */
+- ret = maybe_emit_atomic_exchange (target, mem, val, MEMMODEL_ACQUIRE);
++ ret = maybe_emit_atomic_exchange (target, mem, val, MEMMODEL_SYNC_ACQUIRE);
+ if (ret)
+ return ret;
+
+- ret = maybe_emit_sync_lock_test_and_set (target, mem, val, MEMMODEL_ACQUIRE);
++ ret = maybe_emit_sync_lock_test_and_set (target, mem, val,
++ MEMMODEL_SYNC_ACQUIRE);
+ if (ret)
+ return ret;
+
+@@ -7363,7 +7362,7 @@
+ /* If there are no other options, try atomic_test_and_set if the value
+ being stored is 1. */
+ if (val == const1_rtx)
+- ret = maybe_emit_atomic_test_and_set (target, mem, MEMMODEL_ACQUIRE);
++ ret = maybe_emit_atomic_test_and_set (target, mem, MEMMODEL_SYNC_ACQUIRE);
+
+ return ret;
+ }
+@@ -7620,7 +7619,7 @@
+ {
+ if (HAVE_mem_thread_fence)
+ emit_insn (gen_mem_thread_fence (GEN_INT (model)));
+- else if ((model & MEMMODEL_MASK) != MEMMODEL_RELAXED)
++ else if (!is_mm_relaxed (model))
+ {
+ if (HAVE_memory_barrier)
+ emit_insn (gen_memory_barrier ());
+@@ -7644,7 +7643,7 @@
+ {
+ if (HAVE_mem_signal_fence)
+ emit_insn (gen_mem_signal_fence (GEN_INT (model)));
+- else if ((model & MEMMODEL_MASK) != MEMMODEL_RELAXED)
++ else if (!is_mm_relaxed (model))
+ {
+ /* By default targets are coherent between a thread and the signal
+ handler running on the same thread. Thus this really becomes a
+@@ -7699,7 +7698,7 @@
+ target = gen_reg_rtx (mode);
+
+ /* For SEQ_CST, emit a barrier before the load. */
+- if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ expand_mem_thread_fence (model);
+
+ emit_move_insn (target, mem);
+@@ -7745,7 +7744,7 @@
+ if (maybe_expand_insn (icode, 2, ops))
+ {
+ /* lock_release is only a release barrier. */
+- if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ expand_mem_thread_fence (model);
+ return const0_rtx;
+ }
+@@ -7772,7 +7771,7 @@
+ emit_move_insn (mem, val);
+
+ /* For SEQ_CST, also emit a barrier after the store. */
+- if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ expand_mem_thread_fence (model);
+
+ return const0_rtx;
Index: gcc/DATESTAMP
===================================================================
--- a/src/gcc/DATESTAMP (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/DATESTAMP (.../branches/gcc-5-branch)
@@ -1 +1 @@
-20150716
-+20150730
++20150808
Index: gcc/postreload.c
===================================================================
--- a/src/gcc/postreload.c (.../tags/gcc_5_2_0_release)
@@ -580,6 +701,258 @@ Index: gcc/postreload.c
}
}
return changed;
+Index: gcc/lra.c
+===================================================================
+--- a/src/gcc/lra.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/lra.c (.../branches/gcc-5-branch)
+@@ -1818,9 +1818,10 @@
+
+
+ /* Replace all references to register OLD_REGNO in *LOC with pseudo
+- register NEW_REG. Return true if any change was made. */
++ register NEW_REG. Try to simplify subreg of constant if SUBREG_P.
++ Return true if any change was made. */
+ bool
+-lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg)
++lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg, bool subreg_p)
+ {
+ rtx x = *loc;
+ bool result = false;
+@@ -1832,9 +1833,25 @@
+ return false;
+
+ code = GET_CODE (x);
+- if (code == REG && (int) REGNO (x) == old_regno)
++ if (code == SUBREG && subreg_p)
+ {
+- machine_mode mode = GET_MODE (*loc);
++ rtx subst, inner = SUBREG_REG (x);
++ /* Transform subreg of constant while we still have inner mode
++ of the subreg. The subreg internal should not be an insn
++ operand. */
++ if (REG_P (inner) && (int) REGNO (inner) == old_regno
++ && CONSTANT_P (new_reg)
++ && (subst = simplify_subreg (GET_MODE (x), new_reg, GET_MODE (inner),
++ SUBREG_BYTE (x))) != NULL_RTX)
++ {
++ *loc = subst;
++ return true;
++ }
++
++ }
++ else if (code == REG && (int) REGNO (x) == old_regno)
++ {
++ machine_mode mode = GET_MODE (x);
+ machine_mode inner_mode = GET_MODE (new_reg);
+
+ if (mode != inner_mode
+@@ -1856,13 +1873,15 @@
+ {
+ if (fmt[i] == 'e')
+ {
+- if (lra_substitute_pseudo (&XEXP (x, i), old_regno, new_reg))
++ if (lra_substitute_pseudo (&XEXP (x, i), old_regno,
++ new_reg, subreg_p))
+ result = true;
+ }
+ else if (fmt[i] == 'E')
+ {
+ for (j = XVECLEN (x, i) - 1; j >= 0; j--)
+- if (lra_substitute_pseudo (&XVECEXP (x, i, j), old_regno, new_reg))
++ if (lra_substitute_pseudo (&XVECEXP (x, i, j), old_regno,
++ new_reg, subreg_p))
+ result = true;
+ }
+ }
+@@ -1869,13 +1888,15 @@
+ return result;
+ }
+
+-/* Call lra_substitute_pseudo within an insn. This won't update the insn ptr,
+- just the contents of the insn. */
++/* Call lra_substitute_pseudo within an insn. Try to simplify subreg
++ of constant if SUBREG_P. This won't update the insn ptr, just the
++ contents of the insn. */
+ bool
+-lra_substitute_pseudo_within_insn (rtx_insn *insn, int old_regno, rtx new_reg)
++lra_substitute_pseudo_within_insn (rtx_insn *insn, int old_regno,
++ rtx new_reg, bool subreg_p)
+ {
+ rtx loc = insn;
+- return lra_substitute_pseudo (&loc, old_regno, new_reg);
++ return lra_substitute_pseudo (&loc, old_regno, new_reg, subreg_p);
+ }
+
+
+Index: gcc/tree.h
+===================================================================
+--- a/src/gcc/tree.h (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/tree.h (.../branches/gcc-5-branch)
+@@ -4381,6 +4381,69 @@
+ extern void warn_deprecated_use (tree, tree);
+ extern void cache_integer_cst (tree);
+
++/* Return the memory model from a host integer. */
++static inline enum memmodel
++memmodel_from_int (unsigned HOST_WIDE_INT val)
++{
++ return (enum memmodel) (val & MEMMODEL_MASK);
++}
++
++/* Return the base memory model from a host integer. */
++static inline enum memmodel
++memmodel_base (unsigned HOST_WIDE_INT val)
++{
++ return (enum memmodel) (val & MEMMODEL_BASE_MASK);
++}
++
++/* Return TRUE if the memory model is RELAXED. */
++static inline bool
++is_mm_relaxed (enum memmodel model)
++{
++ return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELAXED;
++}
++
++/* Return TRUE if the memory model is CONSUME. */
++static inline bool
++is_mm_consume (enum memmodel model)
++{
++ return (model & MEMMODEL_BASE_MASK) == MEMMODEL_CONSUME;
++}
++
++/* Return TRUE if the memory model is ACQUIRE. */
++static inline bool
++is_mm_acquire (enum memmodel model)
++{
++ return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQUIRE;
++}
++
++/* Return TRUE if the memory model is RELEASE. */
++static inline bool
++is_mm_release (enum memmodel model)
++{
++ return (model & MEMMODEL_BASE_MASK) == MEMMODEL_RELEASE;
++}
++
++/* Return TRUE if the memory model is ACQ_REL. */
++static inline bool
++is_mm_acq_rel (enum memmodel model)
++{
++ return (model & MEMMODEL_BASE_MASK) == MEMMODEL_ACQ_REL;
++}
++
++/* Return TRUE if the memory model is SEQ_CST. */
++static inline bool
++is_mm_seq_cst (enum memmodel model)
++{
++ return (model & MEMMODEL_BASE_MASK) == MEMMODEL_SEQ_CST;
++}
++
++/* Return TRUE if the memory model is a SYNC variant. */
++static inline bool
++is_mm_sync (enum memmodel model)
++{
++ return (model & MEMMODEL_SYNC);
++}
++
+ /* Compare and hash for any structure which begins with a canonical
+ pointer. Assumes all pointers are interchangeable, which is sort
+ of already assumed by gcc elsewhere IIRC. */
+Index: gcc/builtins.c
+===================================================================
+--- a/src/gcc/builtins.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/builtins.c (.../branches/gcc-5-branch)
+@@ -5271,7 +5271,7 @@
+ mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode);
+ val = expand_expr_force_mode (CALL_EXPR_ARG (exp, 1), mode);
+
+- return expand_atomic_fetch_op (target, mem, val, code, MEMMODEL_SEQ_CST,
++ return expand_atomic_fetch_op (target, mem, val, code, MEMMODEL_SYNC_SEQ_CST,
+ after);
+ }
+
+@@ -5301,8 +5301,8 @@
+ poval = &target;
+ }
+ if (!expand_atomic_compare_and_swap (pbool, poval, mem, old_val, new_val,
+- false, MEMMODEL_SEQ_CST,
+- MEMMODEL_SEQ_CST))
++ false, MEMMODEL_SYNC_SEQ_CST,
++ MEMMODEL_SYNC_SEQ_CST))
+ return NULL_RTX;
+
+ return target;
+@@ -5337,7 +5337,7 @@
+ /* Expand the operands. */
+ mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode);
+
+- expand_atomic_store (mem, const0_rtx, MEMMODEL_RELEASE, true);
++ expand_atomic_store (mem, const0_rtx, MEMMODEL_SYNC_RELEASE, true);
+ }
+
+ /* Given an integer representing an ``enum memmodel'', verify its
+@@ -5366,7 +5366,8 @@
+ return MEMMODEL_SEQ_CST;
+ }
+
+- if ((INTVAL (op) & MEMMODEL_MASK) >= MEMMODEL_LAST)
++ /* Should never see a user explicit SYNC memodel model, so >= LAST works. */
++ if (memmodel_base (val) >= MEMMODEL_LAST)
+ {
+ warning (OPT_Winvalid_memory_model,
+ "invalid memory model argument to builtin");
+@@ -5433,8 +5434,7 @@
+ success = MEMMODEL_SEQ_CST;
+ }
+
+- if ((failure & MEMMODEL_MASK) == MEMMODEL_RELEASE
+- || (failure & MEMMODEL_MASK) == MEMMODEL_ACQ_REL)
++ if (is_mm_release (failure) || is_mm_acq_rel (failure))
+ {
+ warning (OPT_Winvalid_memory_model,
+ "invalid failure memory model for "
+@@ -5496,8 +5496,7 @@
+ enum memmodel model;
+
+ model = get_memmodel (CALL_EXPR_ARG (exp, 1));
+- if ((model & MEMMODEL_MASK) == MEMMODEL_RELEASE
+- || (model & MEMMODEL_MASK) == MEMMODEL_ACQ_REL)
++ if (is_mm_release (model) || is_mm_acq_rel (model))
+ {
+ warning (OPT_Winvalid_memory_model,
+ "invalid memory model for %<__atomic_load%>");
+@@ -5526,9 +5525,8 @@
+ enum memmodel model;
+
+ model = get_memmodel (CALL_EXPR_ARG (exp, 2));
+- if ((model & MEMMODEL_MASK) != MEMMODEL_RELAXED
+- && (model & MEMMODEL_MASK) != MEMMODEL_SEQ_CST
+- && (model & MEMMODEL_MASK) != MEMMODEL_RELEASE)
++ if (!(is_mm_relaxed (model) || is_mm_seq_cst (model)
++ || is_mm_release (model)))
+ {
+ warning (OPT_Winvalid_memory_model,
+ "invalid memory model for %<__atomic_store%>");
+@@ -5635,9 +5633,7 @@
+ mem = get_builtin_sync_mem (CALL_EXPR_ARG (exp, 0), mode);
+ model = get_memmodel (CALL_EXPR_ARG (exp, 1));
+
+- if ((model & MEMMODEL_MASK) == MEMMODEL_CONSUME
+- || (model & MEMMODEL_MASK) == MEMMODEL_ACQUIRE
+- || (model & MEMMODEL_MASK) == MEMMODEL_ACQ_REL)
++ if (is_mm_consume (model) || is_mm_acquire (model) || is_mm_acq_rel (model))
+ {
+ warning (OPT_Winvalid_memory_model,
+ "invalid memory model for %<__atomic_store%>");
+@@ -5833,7 +5829,7 @@
+ static void
+ expand_builtin_sync_synchronize (void)
+ {
+- expand_mem_thread_fence (MEMMODEL_SEQ_CST);
++ expand_mem_thread_fence (MEMMODEL_SYNC_SEQ_CST);
+ }
+
+ static rtx
Index: gcc/jit/ChangeLog
===================================================================
--- a/src/gcc/jit/ChangeLog (.../tags/gcc_5_2_0_release)
@@ -739,7 +1112,189 @@ Index: gcc/ChangeLog
===================================================================
--- a/src/gcc/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,278 @@
+@@ -1,3 +1,460 @@
++2015-08-07 Kaz Kojima <kkojima@gcc.gnu.org>
++
++ Backport from mainline
++ 2015-08-07 Kaz Kojima <kkojima@gcc.gnu.org>
++
++ PR target/67002
++ * config/sh/sh.c (sh_recog_treg_set_expr): Return false when
++ currently_expanding_to_rtl is set.
++
++2015-08-07 Kirill Yukhin <kirill.yukhin@intel.com>
++
++ * config/i386/i386.md (define_attr "isa"): Addd avx512vl and
++ noavx512vl.
++ (define_attr "enabled"): Handle avx521vl and noavx512vl.
++ * config/i386/sse.md (define_insn "vec_dupv2df<mask_name>"): Split
++ AVX-512 alternative out of SSE.
++ (define_insn "*vec_concatv2df"): Ditto.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk:
++ 2015-06-29 Matthew Wahab <matthew.wahab@arm.com>
++
++ PR target/65697
++ * config/arm/arm.c (arm_split_compare_and_swap): For ARMv8,
++ replace an initial acquire barrier with final barrier.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk:
++ 2015-06-29 Matthew Wahab <matthew.wahab@arm.com>
++
++ PR target/65697
++ * config/arm/arm.c (arm_split_atomic_op): For ARMv8, replace an
++ initial acquire barrier with final barrier.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk.
++ 2015-06-01 Matthew Wahab <matthew.wahab@arm.com>
++
++ PR target/65697
++ * config/aarch64/aarch64.c (aarch64_split_compare_and_swap): Check
++ for __sync memory models, emit initial loads and final barriers as
++ appropriate.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk.
++ 2015-06-01 Matthew Wahab <matthew.wahab@arm.com>
++
++ PR target/65697
++ * config/aarch64/aarch64.c (aarch64_emit_post_barrier): New.
++ (aarch64_split_atomic_op): Check for __sync memory models, emit
++ appropriate initial loads and final barriers.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk
++ 2015-05-12 Andrew MacLeod <amacleod@redhat.com>
++
++ PR target/65697
++ * coretypes.h (MEMMODEL_SYNC, MEMMODEL_BASE_MASK): New macros.
++ (enum memmodel): Add SYNC_{ACQUIRE,RELEASE,SEQ_CST}.
++ * tree.h (memmodel_from_int, memmodel_base, is_mm_relaxed)
++ (is_mm_consume,is_mm_acquire, is_mm_release, is_mm_acq_rel)
++ (is_mm_seq_cst, is_mm_sync): New accessor functions.
++ * builtins.c (expand_builtin_sync_operation)
++ (expand_builtin_compare_and_swap): Use MEMMODEL_SYNC_SEQ_CST.
++ (expand_builtin_sync_lock_release): Use MEMMODEL_SYNC_RELEASE.
++ (get_memmodel, expand_builtin_atomic_compare_exchange)
++ (expand_builtin_atomic_load, expand_builtin_atomic_store)
++ (expand_builtin_atomic_clear): Use new accessor routines.
++ (expand_builtin_sync_synchronize): Use MEMMODEL_SYNC_SEQ_CST.
++ * optabs.c (expand_compare_and_swap_loop): Use MEMMODEL_SYNC_SEQ_CST.
++ (maybe_emit_sync_lock_test_and_set): Use new accessors and
++ MEMMODEL_SYNC_ACQUIRE.
++ (expand_sync_lock_test_and_set): Use MEMMODEL_SYNC_ACQUIRE.
++ (expand_mem_thread_fence, expand_mem_signal_fence, expand_atomic_load)
++ (expand_atomic_store): Use new accessors.
++ * emit-rtl.c (need_atomic_barrier_p): Add additional enum cases.
++ * tsan.c (instrument_builtin_call): Update check for memory model beyond
++ final enum to use MEMMODEL_LAST.
++ * c-family/c-common.c: Use new accessor for memmodel_base.
++ * config/aarch64/aarch64.c (aarch64_expand_compare_and_swap): Use new
++ accessors.
++ * config/aarch64/atomics.md (atomic_load<mode>,atomic_store<mode>)
++ (arch64_load_exclusive<mode>, aarch64_store_exclusive<mode>)
++ (mem_thread_fence, *dmb): Likewise.
++ * config/alpha/alpha.c (alpha_split_compare_and_swap)
++ (alpha_split_compare_and_swap_12): Likewise.
++ * config/arm/arm.c (arm_expand_compare_and_swap)
++ (arm_split_compare_and_swap, arm_split_atomic_op): Likewise.
++ * config/arm/sync.md (atomic_load<mode>, atomic_store<mode>)
++ (atomic_loaddi): Likewise.
++ * config/i386/i386.c (ix86_destroy_cost_data, ix86_memmodel_check):
++ Likewise.
++ * config/i386/sync.md (mem_thread_fence, atomic_store<mode>): Likewise.
++ * config/ia64/ia64.c (ia64_expand_atomic_op): Add new memmodel cases and
++ use new accessors.
++ * config/ia64/sync.md (mem_thread_fence, atomic_load<mode>)
++ (atomic_store<mode>, atomic_compare_and_swap<mode>)
++ (atomic_exchange<mode>): Use new accessors.
++ * config/mips/mips.c (mips_process_sync_loop): Likewise.
++ * config/pa/pa.md (atomic_loaddi, atomic_storedi): Likewise.
++ * config/rs6000/rs6000.c (rs6000_pre_atomic_barrier)
++ (rs6000_post_atomic_barrier): Add new cases.
++ (rs6000_expand_atomic_compare_and_swap): Use new accessors.
++ * config/rs6000/sync.md (mem_thread_fence): Add new cases.
++ (atomic_load<mode>): Add new cases and use new accessors.
++ (store_quadpti): Add new cases.
++ * config/s390/s390.md (mem_thread_fence, atomic_store<mode>): Use new
++ accessors.
++ * config/sparc/sparc.c (sparc_emit_membar_for_model): Use new accessors.
++ * doc/extend.texi: Update docs to indicate 16 bits are used for memory
++ model, not 8.
++
++2015-08-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ Backport from mainline:
++ 2015-08-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ PR target/66731
++ * config/aarch64/aarch64.c (aarch64_rtx_costs): Fix NEG cost for FNMUL.
++ (aarch64_rtx_mult_cost): Fix MULT cost with -frounding-math.
++
++ 2015-07-06 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ PR target/66731
++ * config/aarch64/aarch64.md (fnmul<mode>3): Handle -frounding-math.
++
++2015-08-03 Peter Bergner <bergner@vnet.ibm.com>
++
++ Backport from mainline:
++ 2015-08-03 Peter Bergner <bergner@vnet.ibm.com>
++
++ * config/rs6000/htm.md (tabort.): Restrict the source operand to
++ using a base register.
++
++2015-08-03 John David Anglin <danglin@gcc.gnu.org>
++
++ PR target/67060
++ * config/pa/pa.md (call_reg_64bit): Remove reg:DI 1 clobber.
++ Adjust splits to match new pattern.
++
++2015-08-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ Backport form mainline r226496.
++ 2015-08-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ PR target/66731
++ * config/arm/vfp.md (negmuldf3_vfp): Add new pattern.
++ (negmulsf3_vfp): Likewise.
++ (muldf3negdf_vfp): Disable for -frounding-math.
++ (mulsf3negsf_vfp): Likewise.
++ * config/arm/arm.c (arm_new_rtx_costs): Fix NEG cost for VNMUL,
++ fix MULT cost with -frounding-math.
++
++2015-07-31 Kaz Kojima <kkojima@gcc.gnu.org>
++
++ Backport form mainline
++ 2015-07-31 Kaz Kojima <kkojima@gcc.gnu.org>
++
++ PR target/67049
++ * config/sh/sh.md (GOTaddr2picreg): Fix typo.
++
++2015-07-31 Vladimir Makarov <vmakarov@redhat.com>
++
++ PR debug/66691
++ * lra-int.h (lra_substitute_pseudo): Add a parameter.
++ (lra_substitute_pseudo_within_insn): Ditto.
++ * lra.c (lra_substitute_pseudo): Add a parameter. Simplify subreg
++ of constant.
++ (lra_substitute_pseudo_within_insn): Add a parameter. Transfer it
++ to lra_substitute_pseudo.
++ * lra-lives.c (process_bb_lives): Add an argument to
++ lra_substitute_pseudo_within_insn call.
++ * lra-constraints.c (inherit_reload_reg, split_reg): Add an
++ argument to lra_substitute_pseudo and
++ lra_substitute_pseudo_within_insn calls.
++ (remove_inheritance_pseudos, undo_optional_reloads): Ditto.
++
+2015-07-27 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
@@ -1018,7 +1573,7 @@ Index: gcc/ChangeLog
2015-07-16 Release Manager
* GCC 5.2.0 released.
-@@ -119,8 +394,8 @@
+@@ -119,8 +576,8 @@
2015-07-09 Iain Sandoe <iain@codesourcery.com>
PR target/66523
@@ -1029,6 +1584,73 @@ Index: gcc/ChangeLog
2015-07-06 Alan Lawrence <alan.lawrence@arm.com>
+Index: gcc/testsuite/jit.dg/test-benchmark.c
+===================================================================
+--- a/src/gcc/testsuite/jit.dg/test-benchmark.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/jit.dg/test-benchmark.c (.../branches/gcc-5-branch)
+@@ -209,6 +209,7 @@
+ {
+ int opt_level;
+ int num_iterations = 100;
++ double elapsed_time[4];
+
+ ticks_to_msec = TICKS_TO_MSEC;
+
+@@ -215,7 +216,7 @@
+ for (opt_level = 0; opt_level < 4; opt_level++)
+ {
+ int i;
+- double start_time, end_time, elapsed_time;
++ double start_time, end_time;
+ start_time = get_wallclock_time ();
+ for (i = 1; i <= num_iterations; i++)
+ {
+@@ -226,15 +227,26 @@
+ test_jit (argv[0], opt_level);
+ }
+ end_time = get_wallclock_time ();
+- elapsed_time = end_time - start_time;
++ elapsed_time[opt_level] = end_time - start_time;
+ pass ("%s: survived %i iterations at optlevel %i",
+ argv[0], num_iterations, opt_level);
+ note (("%s: %i iterations at optlevel %i"
+ " took a total of %.3fs (%.3fs per iteration)"),
+ argv[0], num_iterations, opt_level,
+- elapsed_time, elapsed_time / num_iterations);
++ elapsed_time[opt_level],
++ elapsed_time[opt_level] / num_iterations);
+ }
++
+ totals ();
+
++ /* Print a summary. */
++ printf ("%s: %i iterations: time taken (lower is better)\n",
++ argv[0], num_iterations);
++ for (opt_level = 0; opt_level < 4; opt_level++)
++ printf ("optlevel %i: %.3fs (%.3fs per iteration)\n",
++ opt_level,
++ elapsed_time[opt_level],
++ elapsed_time[opt_level] / num_iterations);
++
+ return 0;
+ }
+Index: gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,12 @@
++/* { dg-do compile { target { powerpc*-*-* } } } */
++/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
++/* { dg-require-effective-target powerpc_htm_ok } */
++/* { dg-options "-O2 -mhtm -ffixed-r3 -ffixed-r4 -ffixed-r5 -ffixed-r6 -ffixed-r7 -ffixed-r8 -ffixed-r9 -ffixed-r10 -ffixed-r11 -ffixed-r12" } */
++
++/* { dg-final { scan-assembler-not "tabort\\.\[ \t\]0" } } */
++
++int
++foo (void)
++{
++ return __builtin_tabort (10);
++}
Index: gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c (.../tags/gcc_5_2_0_release)
@@ -1042,6 +1664,21 @@ Index: gcc/testsuite/gcc.target/arm/thumb1-far-jump-2.c
void f3(int i)
{
#define GO(n) \
+Index: gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v8a_ok } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_arch_v8a } */
++
++#include "../aarch64/sync-comp-swap.x"
++
++/* { dg-final { scan-assembler-times "ldrex" 2 } } */
++/* { dg-final { scan-assembler-times "stlex" 2 } } */
++/* { dg-final { scan-assembler-times "dmb" 2 } } */
Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/arm/thumb-ltu.c (.../tags/gcc_5_2_0_release)
@@ -1056,6 +1693,90 @@ Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
void f(unsigned a, unsigned b, unsigned c, unsigned d)
{
if (a <= b || c > d)
+Index: gcc/testsuite/gcc.target/arm/vnmul-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/vnmul-1.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/vnmul-1.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-O2 -fno-rounding-math -mfpu=vfp -mfloat-abi=hard" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "vnmul\\.f64" } } */
++ return -a * b;
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "vnmul\\.f32" } } */
++ return -a * b;
++}
+Index: gcc/testsuite/gcc.target/arm/vnmul-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/vnmul-2.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/vnmul-2.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-O2 -frounding-math -mfpu=vfp -mfloat-abi=hard" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler-not "vnmul\\.f64" } } */
++ return -a * b;
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler-not "vnmul\\.f32" } } */
++ return -a * b;
++}
+Index: gcc/testsuite/gcc.target/arm/vnmul-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/vnmul-3.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/vnmul-3.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-O2 -fno-rounding-math -mfpu=vfp -mfloat-abi=hard" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "vnmul\\.f64" } } */
++ return -(a * b);
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "vnmul\\.f32" } } */
++ return -(a * b);
++}
+Index: gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v8a_ok } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_arch_v8a } */
++
++#include "../aarch64/sync-op-acquire.x"
++
++/* { dg-final { scan-assembler-times "ldrex" 1 } } */
++/* { dg-final { scan-assembler-times "strex" 1 } } */
++/* { dg-final { scan-assembler-times "dmb" 1 } } */
Index: gcc/testsuite/gcc.target/arm/macro_defs0.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/arm/macro_defs0.c (.../tags/gcc_5_2_0_release)
@@ -1068,6 +1789,44 @@ Index: gcc/testsuite/gcc.target/arm/macro_defs0.c
/* { dg-options "-march=armv7-m -mcpu=cortex-m3 -mfloat-abi=soft -mthumb" } */
#ifdef __ARM_FP
+Index: gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/armv8-sync-op-full.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v8a_ok } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_arch_v8a } */
++
++#include "../aarch64/sync-op-full.x"
++
++/* { dg-final { scan-assembler-times "ldrex" 12 } } */
++/* { dg-final { scan-assembler-times "stlex" 12 } } */
++/* { dg-final { scan-assembler-times "dmb" 12 } } */
+Index: gcc/testsuite/gcc.target/arm/vnmul-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/vnmul-4.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/vnmul-4.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-O2 -frounding-math -mfpu=vfp -mfloat-abi=hard" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "vnmul\\.f64" } } */
++ return -(a * b);
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "vnmul\\.f32" } } */
++ return -(a * b);
++}
Index: gcc/testsuite/gcc.target/arm/macro_defs1.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/arm/macro_defs1.c (.../tags/gcc_5_2_0_release)
@@ -1105,6 +1864,344 @@ Index: gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
int foo (char *, char *, int);
int test (int d, char * out, char *in, int len)
+Index: gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/arm/armv8-sync-op-release.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v8a_ok } */
++/* { dg-options "-O2" } */
++/* { dg-add-options arm_arch_v8a } */
++
++#include "../aarch64/sync-op-release.x"
++
++/* { dg-final { scan-assembler-times "stl" 1 } } */
+Index: gcc/testsuite/gcc.target/aarch64/sync-op-release.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-release.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-release.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,6 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++#include "sync-op-release.x"
++
++/* { dg-final { scan-assembler-times "stlr" 1 } } */
+Index: gcc/testsuite/gcc.target/aarch64/sync-op-release.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-release.x (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-release.x (.../branches/gcc-5-branch)
+@@ -0,0 +1,7 @@
++int v;
++
++void
++sync_lock_release (void)
++{
++ __sync_lock_release (&v);
++}
+Index: gcc/testsuite/gcc.target/aarch64/fnmul-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/fnmul-1.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/fnmul-1.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "fnmul\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */
++ return -a * b;
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "fnmul\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */
++ return -a * b;
++}
+Index: gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++#include "sync-op-acquire.x"
++
++/* { dg-final { scan-assembler-times "ldxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 1 } } */
++/* { dg-final { scan-assembler-times "stxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 1 } } */
++/* { dg-final { scan-assembler-times "dmb\tish" 1 } } */
+Index: gcc/testsuite/gcc.target/aarch64/sync-op-acquire.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.x (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.x (.../branches/gcc-5-branch)
+@@ -0,0 +1,7 @@
++int v;
++
++int
++sync_lock_test_and_set (int a)
++{
++ return __sync_lock_test_and_set (&v, a);
++}
+Index: gcc/testsuite/gcc.target/aarch64/fnmul-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/fnmul-2.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/fnmul-2.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -frounding-math" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "fneg\\td\[0-9\]+, d\[0-9\]+" } } */
++ /* { dg-final { scan-assembler "fmul\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */
++ return -a * b;
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "fneg\\ts\[0-9\]+, s\[0-9\]+" } } */
++ /* { dg-final { scan-assembler "fmul\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */
++ return -a * b;
++}
+Index: gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fno-ipa-icf" } */
++
++#include "sync-comp-swap.x"
++
++/* { dg-final { scan-assembler-times "ldxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 2 } } */
++/* { dg-final { scan-assembler-times "stlxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 2 } } */
++/* { dg-final { scan-assembler-times "dmb\tish" 2 } } */
+Index: gcc/testsuite/gcc.target/aarch64/sync-op-full.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++#include "sync-op-full.x"
++
++/* { dg-final { scan-assembler-times "ldxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 12 } } */
++/* { dg-final { scan-assembler-times "stlxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 12 } } */
++/* { dg-final { scan-assembler-times "dmb\tish" 12 } } */
+Index: gcc/testsuite/gcc.target/aarch64/sync-comp-swap.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.x (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.x (.../branches/gcc-5-branch)
+@@ -0,0 +1,13 @@
++int v = 0;
++
++int
++sync_bool_compare_swap (int a, int b)
++{
++ return __sync_bool_compare_and_swap (&v, &a, &b);
++}
++
++int
++sync_val_compare_swap (int a, int b)
++{
++ return __sync_val_compare_and_swap (&v, &a, &b);
++}
+Index: gcc/testsuite/gcc.target/aarch64/sync-op-full.x
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.x (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.x (.../branches/gcc-5-branch)
+@@ -0,0 +1,73 @@
++int v = 0;
++
++int
++sync_fetch_and_add (int a)
++{
++ return __sync_fetch_and_add (&v, a);
++}
++
++int
++sync_fetch_and_sub (int a)
++{
++ return __sync_fetch_and_sub (&v, a);
++}
++
++int
++sync_fetch_and_and (int a)
++{
++ return __sync_fetch_and_and (&v, a);
++}
++
++int
++sync_fetch_and_nand (int a)
++{
++ return __sync_fetch_and_nand (&v, a);
++}
++
++int
++sync_fetch_and_xor (int a)
++{
++ return __sync_fetch_and_xor (&v, a);
++}
++
++int
++sync_fetch_and_or (int a)
++{
++ return __sync_fetch_and_or (&v, a);
++}
++
++int
++sync_add_and_fetch (int a)
++{
++ return __sync_add_and_fetch (&v, a);
++}
++
++int
++sync_sub_and_fetch (int a)
++{
++ return __sync_sub_and_fetch (&v, a);
++}
++
++int
++sync_and_and_fetch (int a)
++{
++ return __sync_and_and_fetch (&v, a);
++}
++
++int
++sync_nand_and_fetch (int a)
++{
++ return __sync_nand_and_fetch (&v, a);
++}
++
++int
++sync_xor_and_fetch (int a)
++{
++ return __sync_xor_and_fetch (&v, a);
++}
++
++int
++sync_or_and_fetch (int a)
++{
++ return __sync_or_and_fetch (&v, a);
++}
+Index: gcc/testsuite/gcc.target/aarch64/fnmul-3.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/fnmul-3.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/fnmul-3.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "fnmul\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */
++ return -(a * b);
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "fnmul\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */
++ return -(a * b);
++}
+Index: gcc/testsuite/gcc.target/aarch64/fnmul-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/aarch64/fnmul-4.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/aarch64/fnmul-4.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -frounding-math" } */
++
++double
++foo_d (double a, double b)
++{
++ /* { dg-final { scan-assembler "fnmul\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */
++ return -(a * b);
++}
++
++float
++foo_s (float a, float b)
++{
++ /* { dg-final { scan-assembler "fnmul\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */
++ return -(a * b);
++}
+Index: gcc/testsuite/gcc.target/i386/pr66691.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr66691.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr66691.c (.../branches/gcc-5-branch)
+@@ -0,0 +1,64 @@
++/* PR debug/66691 */
++/* { dg-do compile } */
++/* { dg-require-effective-target ia32 } */
++/* { dg-options "-O3 -g -mtune=generic -march=i686" } */
++
++unsigned int a;
++int b[2], c, d, e, f, g, h, i, k[8], l, m, s, t, w;
++static int j;
++
++void
++fn1 (long long p)
++{
++ int t = p;
++ c = c ^ b[c ^ (t & 1)];
++}
++
++static void
++fn2 (long long p)
++{
++ c = c ^ b[1 ^ (d & 1)];
++ fn1 (p >> 1 & 1);
++ fn1 (p >> 2);
++}
++
++static void
++fn3 ()
++{
++ unsigned char p;
++ f = g = 0;
++ for (h = 0; h < 6; h++)
++ {
++ for (s = 0; s < 7; s++)
++ if (k[s+1])
++ g = 0;
++ else
++ for (j = 0; j < 2; j++)
++ ;
++ t = j > 2 ? 0 : 1 >> j;
++ }
++ if (l)
++ {
++ short q[2];
++ q[0] = q[1] = 0;
++ if (m)
++ for (i = 0; i < 2; i++)
++ {
++ unsigned char r = q[i];
++ p = f ? r % f : r;
++ e = ((p > 0) <= (q[i] ^ 1)) + a;
++ if (k[1])
++ for (e = 0; e != 18; ++e)
++ k[0] = 0;
++ }
++ }
++}
++
++int
++main ()
++{
++ fn3 ();
++ fn2 (w);
++ fn2 (j);
++ return 0;
++}
Index: gcc/testsuite/gcc.target/i386/pr66838.c
===================================================================
--- a/src/gcc/testsuite/gcc.target/i386/pr66838.c (.../tags/gcc_5_2_0_release)
@@ -1500,6 +2597,46 @@ Index: gcc/testsuite/gfortran.dg/co_reduce_1.f90
+end program simple_reduce
+
+! { dg-final { scan-tree-dump "_gfortran_caf_co_reduce \\(&desc\\.\\d+,\\s*simple_reduction," "original" } }
+Index: gcc/testsuite/gfortran.dg/generic_31.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/generic_31.f90 (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/generic_31.f90 (.../branches/gcc-5-branch)
+@@ -0,0 +1,35 @@
++! { dg-do run }
++!
++! PR fortran/66929
++! Check that the specific FIRST symbol is used for the call to FOO,
++! so that the J argument is not assumed to be present
++
++module m
++ interface foo
++ module procedure first
++ end interface foo
++contains
++ elemental function bar(j) result(r)
++ integer, intent(in), optional :: j
++ integer :: r, s(2)
++ ! We used to have NULL dereference here, in case of a missing J argument
++ s = foo(j, [3, 7])
++ r = sum(s)
++ end function bar
++ elemental function first(i, j) result(r)
++ integer, intent(in), optional :: i
++ integer, intent(in) :: j
++ integer :: r
++ if (present(i)) then
++ r = i
++ else
++ r = -5
++ end if
++ end function first
++end module m
++program p
++ use m
++ integer :: i
++ i = bar()
++ if (i /= -10) call abort
++end program p
Index: gcc/testsuite/gfortran.dg/pr56520.f90
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/pr56520.f90 (.../tags/gcc_5_2_0_release)
@@ -1533,6 +2670,43 @@ Index: gcc/testsuite/gfortran.dg/coarray_collectives_16.f90
+! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce \\(&val2, gz, 0, 4, &stat2, errmesg2, 0, 7\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce \\(&desc.., hc, 1, res, &stat3, errmesg3, 99, 8\\);" 1 "original" } }
! { dg-final { cleanup-tree-dump "original" } }
+Index: gcc/testsuite/gfortran.dg/class_allocate_20.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/class_allocate_20.f90 (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_20.f90 (.../branches/gcc-5-branch)
+@@ -0,0 +1,32 @@
++! { dg-do run }
++!
++! PR fortran/64921
++! Test that the finalization wrapper procedure get the always_explicit
++! attribute so that the array is not passed without descriptor from
++! T3's finalization wrapper procedure to T2's one.
++!
++! Contributed by Mat Cross <mathewc@nag.co.uk>
++
++Program test
++ Implicit None
++ Type :: t1
++ Integer, Allocatable :: i
++ End Type
++ Type :: t2
++ Integer, Allocatable :: i
++ End Type
++ Type, Extends (t1) :: t3
++ Type (t2) :: j
++ End Type
++ Type, Extends (t3) :: t4
++ Integer, Allocatable :: k
++ End Type
++ Call s
++ Print *, 'ok'
++Contains
++ Subroutine s
++ Class (t1), Allocatable :: x
++ Allocate (t4 :: x)
++ End Subroutine
++End Program
++! { dg-output "ok" }
Index: gcc/testsuite/gfortran.dg/pr66545_2.f90
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/pr66545_2.f90 (.../tags/gcc_5_2_0_release)
@@ -1597,6 +2771,52 @@ Index: gcc/testsuite/gfortran.dg/pr66725.f90
+ write (unit=1, pad=257) ! { dg-error "PAD requires" }
+
+end program foo
+Index: gcc/testsuite/gfortran.dg/generic_30.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/generic_30.f90 (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/generic_30.f90 (.../branches/gcc-5-branch)
+@@ -0,0 +1,41 @@
++! { dg-do compile }
++!
++! PR fortran/66929
++! Generic procedures as actual argument used to lead to
++! a NULL pointer dereference in gfc_get_proc_ifc_for_expr
++! because the generic symbol was used as procedure symbol,
++! instead of the specific one.
++
++module iso_varying_string
++ type, public :: varying_string
++ character(LEN=1), dimension(:), allocatable :: chars
++ end type varying_string
++ interface operator(/=)
++ module procedure op_ne_VS_CH
++ end interface operator (/=)
++ interface trim
++ module procedure trim_
++ end interface
++contains
++ elemental function op_ne_VS_CH (string_a, string_b) result (op_ne)
++ type(varying_string), intent(in) :: string_a
++ character(LEN=*), intent(in) :: string_b
++ logical :: op_ne
++ op_ne = .true.
++ end function op_ne_VS_CH
++ elemental function trim_ (string) result (trim_string)
++ type(varying_string), intent(in) :: string
++ type(varying_string) :: trim_string
++ trim_string = varying_string(["t", "r", "i", "m", "m", "e", "d"])
++ end function trim_
++end module iso_varying_string
++module syntax_rules
++ use iso_varying_string, string_t => varying_string
++contains
++ subroutine set_rule_type_and_key
++ type(string_t) :: key
++ if (trim (key) /= "") then
++ print *, "non-empty"
++ end if
++ end subroutine set_rule_type_and_key
++end module syntax_rules
Index: gcc/testsuite/gfortran.dg/structure_constructor_13.f03
===================================================================
--- a/src/gcc/testsuite/gfortran.dg/structure_constructor_13.f03 (.../tags/gcc_5_2_0_release)
@@ -2143,7 +3363,105 @@ Index: gcc/testsuite/ChangeLog
===================================================================
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,240 @@
+@@ -1,3 +1,338 @@
++2015-08-07 Mikael Morin <mikael@gcc.gnu.org>
++
++ PR fortran/66929
++ * gfortran.dg/generic_30.f90: New.
++ * gfortran.dg/generic_31.f90: New.
++
++2015-08-06 David Malcolm <dmalcolm@redhat.com>
++
++ Backport from trunk r226697:
++ 2015-08-06 David Malcolm <dmalcolm@redhat.com>
++
++ * jit.dg/test-benchmark.c (main): Record all elapsed times at each
++ optimization level, and print a summary at the end.
++
++2015-08-05 Mikael Morin <mikael@gcc.gnu.org>
++
++ PR fortran/64921
++ * gfortran.dg/class_allocate_20.f90: New.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk:
++ 2015-07-01 Matthew Wahab <matthew.wahab@arm.com>
++
++ * gcc.target/arm/armv8-sync-comp-swap.c: Replace
++ 'do-require-effective-target' with 'dg-require-effective-target'.
++ * gcc.target/arm/armv8-sync-op-full.c: Likewise.
++ * gcc.target/arm/armv8-sync-op-release.c: Likewise.
++ * gcc.target/arm/armv8-sync-op-acquire.c: Likewise. Also, replace
++ 'stlex' with 'strex' as the expected output.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk:
++ 2015-06-29 Matthew Wahab <matthew.wahab@arm.com>
++
++ PR target/65697
++ * gcc.target/arm/armv-sync-comp-swap.c: New.
++ * gcc.target/arm/armv-sync-op-acquire.c: New.
++ * gcc.target/arm/armv-sync-op-full.c: New.
++ * gcc.target/arm/armv-sync-op-release.c: New.
++
++2015-08-05 Matthew Wahab <matthew.wahab@arm.com>
++
++ Backport from trunk
++ 2015-06-01 Matthew Wahab <matthew.wahab@arm.com>
++
++ PR target/65697
++ * gcc.target/aarch64/sync-comp-swap.c: New.
++ * gcc.target/aarch64/sync-comp-swap.x: New.
++ * gcc.target/aarch64/sync-op-acquire.c: New.
++ * gcc.target/aarch64/sync-op-acquire.x: New.
++ * gcc.target/aarch64/sync-op-full.c: New.
++ * gcc.target/aarch64/sync-op-full.x: New.
++ * gcc.target/aarch64/sync-op-release.c: New.
++ * gcc.target/aarch64/sync-op-release.x: New.
++
++2015-08-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ * gcc.target/aarch64/fnmul-1.c: Fix whitespace.
++ * gcc.target/aarch64/fnmul-2.c: Likewise.
++ * gcc.target/aarch64/fnmul-3.c: Likewise.
++ * gcc.target/aarch64/fnmul-4.c: Likewise.
++
++2015-08-04 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ Backport from mainline r225450:
++ 2015-07-06 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ PR target/66731
++ * gcc.target/aarch64/fnmul-1.c: New.
++ * gcc.target/aarch64/fnmul-2.c: New.
++ * gcc.target/aarch64/fnmul-3.c: New.
++ * gcc.target/aarch64/fnmul-4.c: New.
++
++2015-08-03 Peter Bergner <bergner@vnet.ibm.com>
++
++ Backport from mainline:
++ 2015-08-03 Peter Bergner <bergner@vnet.ibm.com>
++
++ * gcc.target/powerpc/htm-tabort-no-r0.c: New test.
++
++2015-08-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ Backport form mainline r226496.
++ 2015-08-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
++
++ PR target/66731
++ * gcc.target/arm/vnmul-1.c: New.
++ * gcc.target/arm/vnmul-2.c: New.
++ * gcc.target/arm/vnmul-3.c: New.
++ * gcc.target/arm/vnmul-4.c: New.
++
++2015-07-31 Vladimir Makarov <vmakarov@redhat.com>
++
++ PR debug/66691
++ * gcc.target/i386/pr66691.c: New.
++
+2015-07-28 Alex Velenko <Alex.Velenko@arm.com>
+
+ backport from trunk:
@@ -2384,7 +3702,7 @@ Index: gcc/testsuite/ChangeLog
2015-07-16 Release Manager
* GCC 5.2.0 released.
-@@ -792,7 +1029,7 @@
+@@ -792,7 +1127,7 @@
Add missing ChangeLog entry for r222341.
Backport from trunk r222273
@@ -2422,6 +3740,220 @@ Index: gcc/testsuite/g++.dg/cpp0x/alias-decl-52.C
+int main() {
+ static_assert(A(42), "");
+}
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ43.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ43.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ43.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,35 @@
++// PR c++/67130
++// { dg-do compile { target c++14 } }
++
++namespace std {
++template <typename> struct __success_type;
++template <typename> void declval();
++template <typename> class decay {
++public:
++ typedef int type;
++};
++template <typename...> struct common_type;
++struct A {
++ template <typename, typename _Up>
++ static __success_type<typename decay<decltype(declval<_Up>)>::type> _S_test;
++};
++template <typename _Tp, typename _Up> struct __common_type_impl : A {
++ typedef decltype(_S_test<_Tp, _Up>) type;
++};
++template <typename _Tp, typename _Up>
++struct common_type<_Tp, _Up> : __common_type_impl<_Tp, _Up> {};
++}
++template <typename> struct B { struct _; };
++template <typename T> typename B<T>::_ type;
++template <template <typename...> class> struct C;
++template <template <typename...> class f> C<f> metafunction;
++template <typename T> struct B<T>::_ {};
++namespace detail {
++template <typename> struct _decltype;
++}
++template <template <typename...> class F> struct C {
++ template <typename... T>
++ auto operator()(T...)
++ -> decltype(type<typename F<detail::_decltype<T>...>::type>);
++};
++auto common_type = metafunction<std::common_type>(0, 0);
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ35.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ35.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ35.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,5 @@
++// PR c++/66595
++// { dg-do compile { target c++14 } }
++
++template<typename T> int typeID{42};
++template<typename T> double typeID<double>{10.10}; // { dg-error "primary template|redeclaration|not deducible" }
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ39.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ39.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ39.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,16 @@
++// PR c++/66260
++// { dg-do compile { target c++14 } }
++
++template <class>
++constexpr bool foo = false;
++template <>
++constexpr bool foo<int> = true;
++template <class T, int N>
++constexpr bool foo<T[N]> = foo<T>;
++
++static_assert(foo<int>, "");
++static_assert(!foo<double>, "");
++static_assert(foo<int[3]>, "");
++static_assert(!foo<double[3]>, "");
++static_assert(foo<int[2][5][3]>, "");
++static_assert(!foo<double[2][5][3]>, "");
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ40.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ40.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ40.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,9 @@
++// PR c++/66619
++// { dg-do compile { target c++14 } }
++
++int y;
++template<class T> T val1 = y;
++auto&& x1 = val1<int&>;
++
++template<class T> T val2 = 0;
++auto&& x2 = val2<int&&>;
+Index: gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice3.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice3.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice3.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,3 @@
++// PR c++/66533
++// { dg-do compile { target c++14 } }
++auto a([](auto) -> decltype((void)0) {});
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ32.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ32.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ32.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,7 @@
++// { dg-do compile { target c++14 } }
++
++template<typename T>
++bool V1 = true;
++
++template<typename T>
++bool V1<int> = false; // { dg-error "primary template|not deducible" }
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ36.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ36.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ36.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,15 @@
++// { dg-do compile { target c++14 } }
++
++template <class T>
++constexpr T v = T();
++
++template <class T>
++constexpr T v<T*> = T();
++
++template <class T>
++struct A {
++ static constexpr decltype (v<T>) v = ::v<T>;
++};
++
++double d1 = v<double*>;
++double d2 = A<double*>::v;
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ33.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ33.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ33.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,20 @@
++// Test for variable templates in pack expansion
++// { dg-do compile { target c++14 } }
++
++template <int I> const int Val = I;
++
++constexpr int f () { return 0; }
++template <class T, class ...Ts>
++constexpr int f(T t, Ts... ts)
++{
++ return t + f(ts...);
++}
++
++template <int... Is>
++constexpr int g()
++{
++ return f(Val<Is>...);
++}
++
++#define SA(X) static_assert((X),#X)
++SA((g<1,2,3,4>() == 1+2+3+4));
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ37.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ37.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ37.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,23 @@
++// PR c++/65195
++// { dg-do compile { target c++14 } }
++
++template<typename T>
++T constant {};
++
++template<typename T>
++struct foo {
++ int operator()() const
++ { return 3; }
++};
++
++template<typename T>
++auto& f = constant<foo<T>>;
++
++int main()
++{
++ // fine
++ auto& ref = f<int>; ref();
++
++ // error: f<int> cannot be used as a function
++ f<int>();
++}
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ42.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ42.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ42.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,17 @@
++// PR c++/67131
++// { dg-do compile { target c++14 } }
++
++template <typename T> typename T::_ type;
++template <template <typename...> class> struct A;
++template <template <typename> class f> A<f> metafunction;
++namespace detail {
++template <typename> struct _decltype;
++}
++template <template <typename...> class F> struct A {
++ template <typename... T>
++ auto operator()() -> decltype(type<F<detail::_decltype<T>...>>);
++};
++template <typename F> auto valid_call(F f) -> decltype(f());
++constexpr auto valid_call(...) { return 0; }
++template <typename> struct no_type;
++static_assert(!valid_call(metafunction<no_type>),""); // { dg-error "" }
+Index: gcc/testsuite/g++.dg/cpp1y/var-templ38.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ38.C (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ38.C (.../branches/gcc-5-branch)
+@@ -0,0 +1,9 @@
++// PR c++/66596
++// { dg-do compile { target c++14 } }
++
++struct U { void f() {} };
++struct V { void f() {} };
++template<class T> U t;
++template<> V t<int>;
++template<class T> void g() { t<T>.f(); }
++int main() { g<int>(); }
Index: gcc/testsuite/g++.dg/abi/abi-tag15.C
===================================================================
--- a/src/gcc/testsuite/g++.dg/abi/abi-tag15.C (.../tags/gcc_5_2_0_release)
@@ -2490,7 +4022,44 @@ Index: gcc/cp/ChangeLog
===================================================================
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,18 @@
+@@ -1,3 +1,55 @@
++2015-08-06 Jason Merrill <jason@redhat.com>
++
++ PR c++/66533
++ * parser.c (cp_parser_primary_expression): Don't skip to the end
++ of the statement if we're parsing tentatively.
++
++ PR c++/67130
++ PR c++/67131
++ PR c++/66260
++ * mangle.c (write_expression) [TEMPLATE_ID_EXPR]: Handle variable
++ templates.
++ * pt.c (tsubst_copy_and_build): Check for argument substitution
++ failure.
++
++2015-08-05 Jason Merrill <jason@redhat.com>
++
++ PR c++/66260
++ PR c++/66596
++ PR c++/66649
++ PR c++/66923
++ * pt.c (lookup_template_variable): Use NULL_TREE for type.
++ (instantiate_template_1): Also set DECL_TI_ARGS based on
++ the immediate parent.
++ (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Handle variable templates.
++ (finish_template_variable): Add complain parm.
++ * cp-tree.h: Adjust.
++
++ PR c++/65195
++ PR c++/66619
++ * semantics.c (finish_id_expression): Call convert_from_reference
++ for variable template.
++
++ PR c++/66336
++ * pt.c (find_parameter_packs_r): Handle variable templates.
++ (variable_template_specialization_p): New.
++ * cp-tree.h: Declare it.
++
+2015-07-30 Jason Merrill <jason@redhat.com>
+
+ DR 1558
@@ -2513,7 +4082,65 @@ Index: gcc/cp/pt.c
===================================================================
--- a/src/gcc/cp/pt.c (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/cp/pt.c (.../branches/gcc-5-branch)
-@@ -11547,6 +11547,10 @@
+@@ -3222,6 +3222,13 @@
+ ppd, ppd->visited);
+ *walk_subtrees = 0;
+ }
++ else if (variable_template_specialization_p (t))
++ {
++ cp_walk_tree (&DECL_TI_ARGS (t),
++ find_parameter_packs_r,
++ ppd, ppd->visited);
++ *walk_subtrees = 0;
++ }
+ break;
+
+ case BASES:
+@@ -5323,6 +5330,17 @@
+ return instantiate_non_dependent_expr_sfinae (expr, tf_error);
+ }
+
++/* True iff T is a specialization of a variable template. */
++
++bool
++variable_template_specialization_p (tree t)
++{
++ if (!VAR_P (t) || !DECL_LANG_SPECIFIC (t) || !DECL_TEMPLATE_INFO (t))
++ return false;
++ tree tmpl = DECL_TI_TEMPLATE (t);
++ return variable_template_p (tmpl);
++}
++
+ /* Return TRUE iff T is a type alias, a TEMPLATE_DECL for an alias
+ template declaration, or a TYPE_DECL for an alias declaration. */
+
+@@ -8161,7 +8179,7 @@
+ tree
+ lookup_template_variable (tree templ, tree arglist)
+ {
+- tree type = unknown_type_node;
++ tree type = NULL_TREE;
+ return build2 (TEMPLATE_ID_EXPR, type, templ, arglist);
+ }
+
+@@ -8168,7 +8186,7 @@
+ /* Instantiate a variable declaration from a TEMPLATE_ID_EXPR for use. */
+
+ tree
+-finish_template_variable (tree var)
++finish_template_variable (tree var, tsubst_flags_t complain)
+ {
+ tree templ = TREE_OPERAND (var, 0);
+
+@@ -8177,7 +8195,6 @@
+ arglist = add_outermost_template_args (tmpl_args, arglist);
+
+ tree parms = DECL_TEMPLATE_PARMS (templ);
+- tsubst_flags_t complain = tf_warning_or_error;
+ arglist = coerce_innermost_template_parms (parms, arglist, templ, complain,
+ /*req_all*/true,
+ /*use_default*/true);
+@@ -11547,6 +11564,10 @@
{
DECL_ORIGINAL_TYPE (r) = NULL_TREE;
set_underlying_type (r);
@@ -2524,6 +4151,98 @@ Index: gcc/cp/pt.c
}
layout_decl (r, 0);
+@@ -14714,7 +14735,20 @@
+
+ if (targs)
+ targs = tsubst_template_args (targs, args, complain, in_decl);
++ if (targs == error_mark_node)
++ return error_mark_node;
+
++ if (variable_template_p (templ))
++ {
++ templ = lookup_template_variable (templ, targs);
++ if (!any_dependent_template_arguments_p (targs))
++ {
++ templ = finish_template_variable (templ, complain);
++ mark_used (templ);
++ }
++ RETURN (convert_from_reference (templ));
++ }
++
+ if (TREE_CODE (templ) == COMPONENT_REF)
+ {
+ object = TREE_OPERAND (templ, 0);
+@@ -16112,6 +16146,8 @@
+ /* The DECL_TI_TEMPLATE should always be the immediate parent
+ template, not the most general template. */
+ DECL_TI_TEMPLATE (fndecl) = tmpl;
++ if (VAR_P (fndecl))
++ DECL_TI_ARGS (fndecl) = targ_ptr;
+
+ /* Now we know the specialization, compute access previously
+ deferred. */
+Index: gcc/cp/semantics.c
+===================================================================
+--- a/src/gcc/cp/semantics.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/cp/semantics.c (.../branches/gcc-5-branch)
+@@ -3580,6 +3580,7 @@
+ {
+ decl = finish_template_variable (decl);
+ mark_used (decl);
++ decl = convert_from_reference (decl);
+ }
+ else if (scope)
+ {
+Index: gcc/cp/parser.c
+===================================================================
+--- a/src/gcc/cp/parser.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/cp/parser.c (.../branches/gcc-5-branch)
+@@ -4432,7 +4432,8 @@
+ parser->greater_than_is_operator_p
+ = saved_greater_than_is_operator_p;
+ /* Consume the `)'. */
+- if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN))
++ if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN)
++ && !cp_parser_uncommitted_to_tentative_parse_p (parser))
+ cp_parser_skip_to_end_of_statement (parser);
+
+ return expr;
+Index: gcc/cp/mangle.c
+===================================================================
+--- a/src/gcc/cp/mangle.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/cp/mangle.c (.../branches/gcc-5-branch)
+@@ -2771,7 +2771,9 @@
+ {
+ tree fn = TREE_OPERAND (expr, 0);
+ if (is_overloaded_fn (fn))
+- fn = DECL_NAME (get_first_fn (fn));
++ fn = get_first_fn (fn);
++ if (DECL_P (fn))
++ fn = DECL_NAME (fn);
+ if (IDENTIFIER_OPNAME_P (fn))
+ write_string ("on");
+ write_unqualified_id (fn);
+Index: gcc/cp/cp-tree.h
+===================================================================
+--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-5-branch)
+@@ -5762,6 +5762,7 @@
+ extern tree instantiate_non_dependent_expr (tree);
+ extern tree instantiate_non_dependent_expr_sfinae (tree, tsubst_flags_t);
+ extern tree instantiate_non_dependent_expr_internal (tree, tsubst_flags_t);
++extern bool variable_template_specialization_p (tree);
+ extern bool alias_type_or_template_p (tree);
+ extern bool alias_template_specialization_p (const_tree);
+ extern bool dependent_alias_template_spec_p (const_tree);
+@@ -5944,7 +5945,7 @@
+ tsubst_flags_t);
+ extern tree finish_call_expr (tree, vec<tree, va_gc> **, bool,
+ bool, tsubst_flags_t);
+-extern tree finish_template_variable (tree);
++extern tree finish_template_variable (tree, tsubst_flags_t = tf_warning_or_error);
+ extern tree finish_increment_expr (tree, enum tree_code);
+ extern tree finish_this_expr (void);
+ extern tree finish_pseudo_destructor_expr (tree, tree, tree, location_t);
Index: gcc/lto-cgraph.c
===================================================================
--- a/src/gcc/lto-cgraph.c (.../tags/gcc_5_2_0_release)
@@ -2554,10 +4273,73 @@ Index: gcc/lto-cgraph.c
}
}
+Index: gcc/lra-lives.c
+===================================================================
+--- a/src/gcc/lra-lives.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/lra-lives.c (.../branches/gcc-5-branch)
+@@ -759,7 +759,7 @@
+ {
+ insn = lra_insn_recog_data[uid]->insn;
+ lra_substitute_pseudo_within_insn (insn, dst_regno,
+- SET_SRC (set));
++ SET_SRC (set), true);
+ lra_update_insn_regno_info (insn);
+ }
+ }
+Index: gcc/tsan.c
+===================================================================
+--- a/src/gcc/tsan.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/tsan.c (.../branches/gcc-5-branch)
+@@ -535,7 +535,7 @@
+ case fetch_op:
+ last_arg = gimple_call_arg (stmt, num - 1);
+ if (!tree_fits_uhwi_p (last_arg)
+- || tree_to_uhwi (last_arg) > MEMMODEL_SEQ_CST)
++ || memmodel_base (tree_to_uhwi (last_arg)) >= MEMMODEL_LAST)
+ return;
+ gimple_call_set_fndecl (stmt, decl);
+ update_stmt (stmt);
+@@ -600,10 +600,10 @@
+ for (j = 0; j < 6; j++)
+ args[j] = gimple_call_arg (stmt, j);
+ if (!tree_fits_uhwi_p (args[4])
+- || tree_to_uhwi (args[4]) > MEMMODEL_SEQ_CST)
++ || memmodel_base (tree_to_uhwi (args[4])) >= MEMMODEL_LAST)
+ return;
+ if (!tree_fits_uhwi_p (args[5])
+- || tree_to_uhwi (args[5]) > MEMMODEL_SEQ_CST)
++ || memmodel_base (tree_to_uhwi (args[5])) >= MEMMODEL_LAST)
+ return;
+ update_gimple_call (gsi, decl, 5, args[0], args[1], args[2],
+ args[4], args[5]);
Index: gcc/fortran/trans-expr.c
===================================================================
--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-5-branch)
+@@ -5698,18 +5698,18 @@
+ vec_safe_reserve (retargs, arglen);
+
+ /* Add the return arguments. */
+- retargs->splice (arglist);
++ vec_safe_splice (retargs, arglist);
+
+ /* Add the hidden present status for optional+value to the arguments. */
+- retargs->splice (optionalargs);
++ vec_safe_splice (retargs, optionalargs);
+
+ /* Add the hidden string length parameters to the arguments. */
+- retargs->splice (stringargs);
++ vec_safe_splice (retargs, stringargs);
+
+ /* We may want to append extra arguments here. This is used e.g. for
+ calls to libgfortran_matmul_??, which need extra information. */
+- if (!vec_safe_is_empty (append_args))
+- retargs->splice (append_args);
++ vec_safe_splice (retargs, append_args);
++
+ arglist = retargs;
+
+ /* Generate the actual call. */
@@ -6732,6 +6732,29 @@
TREE_TYPE (tmp), tmp,
fold_convert (TREE_TYPE (tmp), size));
@@ -2607,11 +4389,57 @@ Index: gcc/fortran/trans-expr.c
}
/* When assigning a character function result to a deferred-length variable,
+Index: gcc/fortran/trans-array.c
+===================================================================
+--- a/src/gcc/fortran/trans-array.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/fortran/trans-array.c (.../branches/gcc-5-branch)
+@@ -8972,7 +8972,11 @@
+ return NULL;
+
+ /* Normal procedure case. */
+- sym = procedure_ref->symtree->n.sym;
++ if (procedure_ref->expr_type == EXPR_FUNCTION
++ && procedure_ref->value.function.esym)
++ sym = procedure_ref->value.function.esym;
++ else
++ sym = procedure_ref->symtree->n.sym;
+
+ /* Typebound procedure case. */
+ for (ref = procedure_ref->ref; ref; ref = ref->next)
+Index: gcc/fortran/class.c
+===================================================================
+--- a/src/gcc/fortran/class.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/fortran/class.c (.../branches/gcc-5-branch)
+@@ -1599,6 +1599,7 @@
+ final->ts.type = BT_INTEGER;
+ final->ts.kind = 4;
+ final->attr.artificial = 1;
++ final->attr.always_explicit = 1;
+ final->attr.if_source = expr_null_wrapper ? IFSRC_IFBODY : IFSRC_DECL;
+ if (ns->proc_name->attr.flavor == FL_MODULE)
+ final->module = ns->proc_name->name;
Index: gcc/fortran/ChangeLog
===================================================================
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,62 @@
+@@ -1,3 +1,79 @@
++2015-08-07 Mikael Morin <mikael@gcc.gnu.org>
++
++ PR fortran/66929
++ * trans-array.c (gfc_get_proc_ifc_for_expr): Use esym as procedure
++ symbol if available.
++
++2015-08-05 Mikael Morin <mikael@gcc.gnu.org>
++
++ PR fortran/64921
++ * class.c (generate_finalization_wrapper): Set finalization
++ procedure symbol's always_explicit attribute.
++
++2015-08-03 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/66942
++ * trans-expr.c (gfc_conv_procedure_call): Avoid NULL pointer reference
++
+2015-07-25 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/64986
@@ -3523,6 +5351,102 @@ Index: gcc/ipa-inline-analysis.c
struct inline_edge_summary *es = inline_edge_summary (e);
if (!es->predicate
|| evaluate_predicate (es->predicate, possible_truths))
+Index: gcc/coretypes.h
+===================================================================
+--- a/src/gcc/coretypes.h (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/coretypes.h (.../branches/gcc-5-branch)
+@@ -263,6 +263,18 @@
+ function_c11_misc
+ };
+
++/* Suppose that higher bits are target dependent. */
++#define MEMMODEL_MASK ((1<<16)-1)
++
++/* Legacy sync operations set this upper flag in the memory model. This allows
++ targets that need to do something stronger for sync operations to
++ differentiate with their target patterns and issue a more appropriate insn
++ sequence. See bugzilla 65697 for background. */
++#define MEMMODEL_SYNC (1<<15)
++
++/* Memory model without SYNC bit for targets/operations that do not care. */
++#define MEMMODEL_BASE_MASK (MEMMODEL_SYNC-1)
++
+ /* Memory model types for the __atomic* builtins.
+ This must match the order in libstdc++-v3/include/bits/atomic_base.h. */
+ enum memmodel
+@@ -273,12 +285,12 @@
+ MEMMODEL_RELEASE = 3,
+ MEMMODEL_ACQ_REL = 4,
+ MEMMODEL_SEQ_CST = 5,
+- MEMMODEL_LAST = 6
++ MEMMODEL_LAST = 6,
++ MEMMODEL_SYNC_ACQUIRE = MEMMODEL_ACQUIRE | MEMMODEL_SYNC,
++ MEMMODEL_SYNC_RELEASE = MEMMODEL_RELEASE | MEMMODEL_SYNC,
++ MEMMODEL_SYNC_SEQ_CST = MEMMODEL_SEQ_CST | MEMMODEL_SYNC
+ };
+
+-/* Suppose that higher bits are target dependent. */
+-#define MEMMODEL_MASK ((1<<16)-1)
+-
+ /* Support for user-provided GGC and PCH markers. The first parameter
+ is a pointer to a pointer, the second a cookie. */
+ typedef void (*gt_pointer_operator) (void *, void *);
+Index: gcc/lra-constraints.c
+===================================================================
+--- a/src/gcc/lra-constraints.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/lra-constraints.c (.../branches/gcc-5-branch)
+@@ -4729,7 +4729,7 @@
+ }
+ return false;
+ }
+- lra_substitute_pseudo_within_insn (insn, original_regno, new_reg);
++ lra_substitute_pseudo_within_insn (insn, original_regno, new_reg, false);
+ lra_update_insn_regno_info (insn);
+ if (! def_p)
+ /* We now have a new usage insn for original regno. */
+@@ -4761,7 +4761,7 @@
+ lra_assert (DEBUG_INSN_P (usage_insn));
+ next_usage_insns = XEXP (next_usage_insns, 1);
+ }
+- lra_substitute_pseudo (&usage_insn, original_regno, new_reg);
++ lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false);
+ lra_update_insn_regno_info (as_a <rtx_insn *> (usage_insn));
+ if (lra_dump_file != NULL)
+ {
+@@ -5023,7 +5023,7 @@
+ usage_insn = XEXP (next_usage_insns, 0);
+ lra_assert (DEBUG_INSN_P (usage_insn));
+ next_usage_insns = XEXP (next_usage_insns, 1);
+- lra_substitute_pseudo (&usage_insn, original_regno, new_reg);
++ lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false);
+ lra_update_insn_regno_info (as_a <rtx_insn *> (usage_insn));
+ if (lra_dump_file != NULL)
+ {
+@@ -5955,8 +5955,9 @@
+ {
+ if (change_p && bitmap_bit_p (remove_pseudos, regno))
+ {
+- lra_substitute_pseudo_within_insn (
+- curr_insn, regno, regno_reg_rtx[restore_regno]);
++ lra_substitute_pseudo_within_insn
++ (curr_insn, regno, regno_reg_rtx[restore_regno],
++ false);
+ restored_regs_p = true;
+ }
+ else
+@@ -6079,9 +6080,9 @@
+ we remove the inheritance pseudo and the optional
+ reload. */
+ }
+- lra_substitute_pseudo_within_insn (
+- insn, regno,
+- regno_reg_rtx[lra_reg_info[regno].restore_regno]);
++ lra_substitute_pseudo_within_insn
++ (insn, regno, regno_reg_rtx[lra_reg_info[regno].restore_regno],
++ false);
+ lra_update_insn_regno_info (insn);
+ if (lra_dump_file != NULL)
+ {
Index: gcc/calls.c
===================================================================
--- a/src/gcc/calls.c (.../tags/gcc_5_2_0_release)
@@ -3558,6 +5482,25 @@ Index: gcc/calls.c
if (CALL_EXPR_STATIC_CHAIN (exp))
static_chain_value = expand_normal (CALL_EXPR_STATIC_CHAIN (exp));
else
+Index: gcc/emit-rtl.c
+===================================================================
+--- a/src/gcc/emit-rtl.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/emit-rtl.c (.../branches/gcc-5-branch)
+@@ -6323,11 +6323,14 @@
+ case MEMMODEL_CONSUME:
+ return false;
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ return pre;
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ return !pre;
+ case MEMMODEL_ACQ_REL:
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ return true;
+ default:
+ gcc_unreachable ();
Index: gcc/cfgexpand.c
===================================================================
--- a/src/gcc/cfgexpand.c (.../tags/gcc_5_2_0_release)
@@ -106550,7 +108493,11 @@ Index: gcc/po/ChangeLog
===================================================================
--- a/src/gcc/po/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/po/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,10 @@
+@@ -1,3 +1,14 @@
++2015-07-31 Joseph Myers <joseph@codesourcery.com>
++
++ * sv.po: Update.
++
+2015-07-24 Joseph Myers <joseph@codesourcery.com>
+
+ * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
@@ -315654,15 +317601,20 @@ Index: gcc/po/sv.po
===================================================================
--- a/src/gcc/po/sv.po (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/po/sv.po (.../branches/gcc-5-branch)
-@@ -16,7 +16,7 @@
+@@ -14,10 +14,10 @@
+ # rank ordning
+ msgid ""
msgstr ""
- "Project-Id-Version: gcc 5.1.0\n"
+-"Project-Id-Version: gcc 5.1.0\n"
++"Project-Id-Version: gcc 5.2.0\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2015-04-13 20:12+0000\n"
+-"PO-Revision-Date: 2015-07-04 11:22+0200\n"
+"POT-Creation-Date: 2015-07-02 12:31+0000\n"
- "PO-Revision-Date: 2015-07-04 11:22+0200\n"
++"PO-Revision-Date: 2015-07-30 10:38+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+ "Language: sv\n"
@@ -202,13 +202,13 @@
#. TARGET_PRINT_OPERAND must handle them.
#. We can't handle floating point constants;
@@ -316771,16 +318723,23 @@ Index: gcc/po/sv.po
#, c-format
msgid "missing filename after %qs"
msgstr "filnamn saknas efter %qs"
-@@ -7665,44 +7667,50 @@
+@@ -6151,7 +6153,7 @@
+
+ #: c-family/c.opt:527
+ msgid "Warn when a jump misses a variable initialization"
+-msgstr "Varna när ett hopp missare en variabelinitiering"
++msgstr "Varna när ett hopp missar en variabelinitiering"
+
+ #: c-family/c.opt:531
+ msgid "Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore."
+@@ -7665,44 +7667,48 @@
msgid "Workaround for ARM Cortex-A53 Erratum number 835769"
msgstr "Sätt att gå runt ARM Cortex-A53:s errata nummer 835796"
-#: config/aarch64/aarch64.opt:76 config/arm/arm.opt:151
+#: config/aarch64/aarch64.opt:76
-+#, fuzzy
-+#| msgid "Workaround for ARM Cortex-A53 Erratum number 835769"
+msgid "Workaround for ARM Cortex-A53 Erratum number 843419"
-+msgstr "Sätt att gå runt ARM Cortex-A53:s errata nummer 835796"
++msgstr "Sätt att gå runt ARM Cortex-A53:s errata nummer 843419"
+
+#: config/aarch64/aarch64.opt:80 config/arm/arm.opt:151
#: config/microblaze/microblaze.opt:64
@@ -316832,14 +318791,21 @@ Index: gcc/po/sv.po
msgid "Known AArch64 ABIs (for use with the -mabi= option):"
msgstr "Kända AArch64-ABI:er (att användas med flaggan -mabi=):"
-@@ -8771,10 +8779,16 @@
+@@ -8024,7 +8030,7 @@
+
+ #: config/epiphany/epiphany.opt:128
+ msgid "Split unaligned 8 byte vector moves before post-modify address generation."
+-msgstr "Dela ojusterade 8-bytes vektorerförflyttningar före adressgenerering efter ändring."
++msgstr "Dela ojusterade 8-bytes vektorförflyttningar före adressgenerering efter ändring."
+
+ #: config/epiphany/epiphany.opt:132
+ msgid "Use the floating point unit for integer add/subtract."
+@@ -8771,10 +8777,14 @@
msgstr "Stöd MPX-kodgenerering "
#: config/i386/i386.opt:864
-+#, fuzzy
-+#| msgid "Support MMX and SSE built-in functions and code generation"
+msgid "Support MWAITX and MONITORX built-in functions and code generation"
-+msgstr "Stöd inbyggda MMX- och SSE-funktioner och -kodgenerering"
++msgstr "Stöd inbyggda MWAITX- och MONITORX-funktioner och -kodgenerering"
+
+#: config/i386/i386.opt:868
msgid "Use given stack-protector guard"
@@ -316850,18 +318816,27 @@ Index: gcc/po/sv.po
msgid "Known stack protector guard (for use with the -mstack-protector-guard= option):"
msgstr "Kända stackskyddsvakter (att användas med flaggan -mstack-protector-guard=):"
-@@ -9121,7 +9135,9 @@
+@@ -9102,7 +9112,7 @@
+
+ #: config/avr/avr.opt:79
+ msgid "Accumulate outgoing function arguments and acquire/release the needed stack space for outpoing function arguments in function prologue/epilogue. Without this option, outgoing arguments are pushed before calling a function and popped afterwards. This option can lead to reduced code size for functions that call many functions that get their arguments on the stack like, for example printf."
+-msgstr "Samla utgående funktionsargument och ta/släpp det nödvändiga stackutrymmet för utgående funktionsargument i funktionsprologen/-epilogen. Utan denna flagga trycks utgående argment på stacken före anrop av en funktion och plockas efteråt. Denna flagga kan medföra reducerad kodstorlek för funktioner som anropar många funktioner som får sina argument på stacken som, till exempel printf."
++msgstr "Samla utgående funktionsargument och ta/släpp det nödvändiga stackutrymmet för utgående funktionsargument i funktionsprologen/-epilogen. Utan denna flagga trycks utgående argument på stacken före anrop av en funktion och plockas efteråt. Denna flagga kan medföra reducerad kodstorlek för funktioner som anropar många funktioner som får sina argument på stacken som, till exempel printf."
+
+ #: config/avr/avr.opt:83
+ msgid "When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register. Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X."
+@@ -9121,8 +9131,8 @@
msgstr "Tillåt avhuggning istället för avrundning mot 0 för decimalheltalstyper"
#: config/avr/avr.opt:100
-msgid "Do not link against the device-specific library libdev.a"
-+#, fuzzy
-+#| msgid "Do not link against the device-specific library libdev.a"
+-msgstr "Länka inte mot det enhetsspecifika biblioteket libdev.a"
+msgid "Do not link against the device-specific library lib<MCU>.a"
- msgstr "Länka inte mot det enhetsspecifika biblioteket libdev.a"
++msgstr "Länka inte mot det enhetsspecifika biblioteket lib<MCU>.a"
#: config/m32r/m32r.opt:34
-@@ -9268,7 +9284,7 @@
+ msgid "Compile for the m32rx"
+@@ -9268,7 +9278,7 @@
msgid "Set the branch costs for conditional branch instructions. Reasonable"
msgstr "Ange grenkostnaden för villkorliga greninstruktioner. Rimliga"
@@ -316870,7 +318845,7 @@ Index: gcc/po/sv.po
#: config/mips/mips.opt:389
msgid "Use LRA instead of reload"
msgstr "Använd LRA istället för omladdning"
-@@ -9393,7 +9409,7 @@
+@@ -9393,7 +9403,7 @@
msgid "Permit scheduling of a function's prologue sequence"
msgstr "Tillåt schemaläggning av en funktions prologsekvens"
@@ -316879,7 +318854,7 @@ Index: gcc/po/sv.po
msgid "Do not load the PIC register in function prologues"
msgstr "Ladda inte PIC-registret i funktionsprologer"
-@@ -9711,299 +9727,301 @@
+@@ -9711,299 +9721,299 @@
msgid "Use vector/scalar (VSX) instructions"
msgstr "Använd vektor-/skalärinstruktioner (VSX)"
@@ -317207,10 +319182,8 @@ Index: gcc/po/sv.po
-msgid "Use ISA 2.07 crypto instructions"
-msgstr "Använd ISA 2.07 kryptoinstruktioner"
+#: config/rs6000/rs6000.opt:566
-+#, fuzzy
-+#| msgid "Use ISA 2.07 transactional memory (HTM) instructions"
+msgid "Use ISA 2.07 Category:Vector.AES and Category:Vector.SHA2 instructions"
-+msgstr "Använd ISA 2.07 transaktionsminnesinstruktioner (HTM)"
++msgstr "Använd ISA 2.07 instruktioner Category:Vector.AES och Category:Vector.SHA2"
-#: config/rs6000/rs6000.opt:566
+#: config/rs6000/rs6000.opt:570
@@ -317257,7 +319230,34 @@ Index: gcc/po/sv.po
msgid "Analyze and remove doubleword swaps from VSX computations."
msgstr "Analysera och ta bort dubbelordsbyten från VSX-beräkningar."
-@@ -12783,1542 +12801,1542 @@
+@@ -10353,7 +10363,7 @@
+
+ #: config/nios2/nios2.opt:178
+ msgid "Do not use the floatis custom instruction"
+-msgstr "Använd inte den anpassade instruktionen floatis"
++msgstr "Använd inte den anpassade instruktionen floatis"
+
+ #: config/nios2/nios2.opt:182
+ msgid "Integer id (N) of floatis custom instruction"
+@@ -10369,7 +10379,7 @@
+
+ #: config/nios2/nios2.opt:194
+ msgid "Do not use the fcmpeqd custom instruction"
+-msgstr "Använd inte den anpassade instruktionen fcmpeqd"
++msgstr "Använd inte den anpassade instruktionen fcmpeqd"
+
+ #: config/nios2/nios2.opt:198
+ msgid "Integer id (N) of fcmpeqd custom instruction"
+@@ -10777,7 +10787,7 @@
+
+ #: config/rx/rx.opt:93
+ msgid "Generate assembler output that is compatible with the Renesas AS100 assembler. This may restrict some of the compiler's capabilities. The default is to generate GAS compatible syntax."
+-msgstr "Genereara assemblerutdatat som är kompatibel med Renesas AS100-assembler. Detta kan begränsa några av kompilatorns egenskaper. Standard är att generera GAS-kopatibel sysntax."
++msgstr "Genereara assemblerutdatat som är kompatibel med Renesas AS100-assembler. Detta kan begränsa några av kompilatorns egenskaper. Standard är att generera GAS-kompatibel syntax."
+
+ #: config/rx/rx.opt:99
+ msgid "Enable linker relaxation."
+@@ -12783,1542 +12793,1542 @@
msgid "-dumpdir <dir>\tSet the directory name to be used for dumps"
msgstr "-dumpdir <kat>\tAnge katalognamn att användas för dumpar"
@@ -319182,7 +321182,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "value computed is not used"
msgstr "beräknat värde används inte"
-@@ -14348,221 +14366,221 @@
+@@ -14348,221 +14358,221 @@
msgid "expected integer or boolean type"
msgstr "heltal eller boolesk typ förväntades"
@@ -319466,7 +321466,7 @@ Index: gcc/po/sv.po
msgid "invalid receive on send-only channel"
msgstr "ogiltig receive på kanal endast för sändning"
-@@ -14672,71 +14690,71 @@
+@@ -14672,71 +14682,71 @@
msgid "cannot use type %s as type %s"
msgstr "det går inte att använda typ %s som typ %s"
@@ -319555,7 +321555,7 @@ Index: gcc/po/sv.po
#, c-format
msgid "method %s%s%s is marked go:nointerface"
msgstr "metoden %s%s%s är märkt go:nointerface"
-@@ -14856,7 +14874,7 @@
+@@ -14856,7 +14866,7 @@
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr "ogiltigt tredje argument till %<__builtin_prefetch%>; använder noll"
@@ -319564,7 +321564,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr "För många argument till funktionen %<va_start%>"
-@@ -15037,12 +15055,12 @@
+@@ -15037,12 +15047,12 @@
msgid "%Kattempt to free a non-heap object"
msgstr "%Kförsök att frigöra ett icke-heap-objekt"
@@ -319579,7 +321579,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "passing too large argument on stack"
msgstr "skickar för många argument på stacken"
-@@ -15602,242 +15620,247 @@
+@@ -15602,242 +15612,247 @@
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr "antal gb-noter i instruktionskedjan (%d) != n_basic_blocks (%d)"
@@ -319797,7 +321797,7 @@ Index: gcc/po/sv.po
+#: cgraph.c:3046
#, gcc-internal-format
+msgid "Alias chain for instrumented node is broken"
-+msgstr ""
++msgstr "En aliaskedja för en instrumenterad not är bruten"
+
+#: cgraph.c:3055
+#, gcc-internal-format
@@ -319875,7 +321875,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "%s: section %s is missing"
msgstr "%s sektion %s saknas"
-@@ -15967,7 +15990,7 @@
+@@ -15967,7 +15982,7 @@
msgid "COLLECT_LTO_WRAPPER must be set"
msgstr "COLLECT_LTO_WRAPPER måste vara satt"
@@ -319884,7 +321884,7 @@ Index: gcc/po/sv.po
#: config/i386/intelmic-mkoffload.c:504
#, gcc-internal-format
msgid "atexit failed"
-@@ -16208,17 +16231,17 @@
+@@ -16208,17 +16223,17 @@
msgid " %s"
msgstr " %s"
@@ -319905,7 +321905,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr "globala konstruerare stödjs inte för denna målarkitektur"
-@@ -16263,12 +16286,12 @@
+@@ -16263,12 +16278,12 @@
msgid "multiple EH personalities are supported only with assemblers supporting .cfi_personality directive"
msgstr "multipla EH-personligheter stödjs endast med assemblerare som stödjer direktivet .cfi.personality."
@@ -319920,7 +321920,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "-feliminate-dwarf2-dups is broken for C++, ignoring"
msgstr "-feliminate-dwarf2-dups är trasig för C++, ignorerar"
-@@ -16463,7 +16486,7 @@
+@@ -16463,7 +16478,7 @@
msgid "total size of local objects too large"
msgstr "total storlek på lokala objekt är för stor"
@@ -319929,7 +321929,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr "omöjlig begränsning i %<asm%>"
-@@ -16910,9 +16933,9 @@
+@@ -16910,9 +16925,9 @@
msgstr "kan inte skriva PCH-fil"
#: gimple-ssa-isolate-paths.c:319 gimple-ssa-isolate-paths.c:448 tree.c:12136
@@ -319942,7 +321942,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "declared here"
msgstr "deklarerad här"
-@@ -16927,152 +16950,147 @@
+@@ -16927,152 +16942,147 @@
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "gimple-kontroll: %s(%s) förväntades, har %s(%s) i %s, vid %s:%d"
@@ -320124,7 +322124,31 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr "om denna kod nås, kommer programmet att avbryta"
-@@ -17486,47 +17504,47 @@
+@@ -17272,7 +17282,7 @@
+ #: ipa-devirt.c:1206
+ #, gcc-internal-format
+ msgid "an enum with different values is defined in another translation unit"
+-msgstr "en uppräkningstyptyp med andra värden är definierad i en annan översättningsenhet"
++msgstr "en uppräkningstyp med andra värden är definierad i en annan översättningsenhet"
+
+ #: ipa-devirt.c:1214
+ #, gcc-internal-format
+@@ -17337,12 +17347,12 @@
+ #: ipa-devirt.c:1436
+ #, gcc-internal-format
+ msgid "a field with different name is defined in another translation unit"
+-msgstr "ett fält med ett annat namn är definerat i en annan översättningsenhet"
++msgstr "ett fält med ett annat namn är definierat i en annan översättningsenhet"
+
+ #: ipa-devirt.c:1449
+ #, gcc-internal-format
+ msgid "a field of same name but different type is defined in another translation unit"
+-msgstr "ett fält med samma namn men annan typ är definerat i en annan översättningsenhet"
++msgstr "ett fält med samma namn men annan typ är definierat i en annan översättningsenhet"
+
+ #: ipa-devirt.c:1462
+ #, gcc-internal-format
+@@ -17486,47 +17496,47 @@
msgid "Max. number of generated reload insns per insn is achieved (%d)\n"
msgstr "Maximalt antal genererade omladdningsinstruktioner per instruktion uppnått (%d)\n"
@@ -320181,7 +322205,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "invalid offload table in %s"
msgstr "ogiltig avlastningstabell i %s"
-@@ -17607,47 +17625,47 @@
+@@ -17607,47 +17617,47 @@
msgid "malformed COLLECT_GCC_OPTIONS"
msgstr "felformaterad COLLECT_GCC_OPTIONS"
@@ -320238,7 +322262,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "fopen: %s: %m"
msgstr "fopen: %s: %m"
-@@ -17782,28 +17800,28 @@
+@@ -17782,28 +17792,28 @@
msgid "setjmp/longjmp inside simd construct"
msgstr "setjmp/longjmp inuti simd-konstruktion"
@@ -320272,7 +322296,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "ignoring zero linear step"
msgstr "ignorera linjärt steg noll"
-@@ -18324,8 +18342,8 @@
+@@ -18324,8 +18334,8 @@
msgstr "det går inte att använda %qs som ett fast register"
#: reginfo.c:790 config/ia64/ia64.c:5983 config/ia64/ia64.c:5990
@@ -320283,7 +322307,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "unknown register name: %s"
msgstr "okänt registernamn: %s"
-@@ -18765,7 +18783,7 @@
+@@ -18765,7 +18775,7 @@
msgid "ld returned %d exit status"
msgstr "ld returnerade avslutningsstatus %d"
@@ -320292,7 +322316,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%q+F used but never defined"
msgstr "%q+F är använd men inte definierad"
-@@ -19743,42 +19761,42 @@
+@@ -19743,42 +19753,42 @@
msgid "memory access check always fail"
msgstr "minnesåtkomstkontrollen misslyckas alltid"
@@ -320343,7 +322367,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "chkp_walk_pointer_assignments: unexpected RHS type: %s"
msgstr "chkp_walk_pointer_assignments: oväntad RHS-typ: %s"
-@@ -20159,47 +20177,47 @@
+@@ -20159,47 +20169,47 @@
msgid "vectorization did not happen for a simd loop"
msgstr "vektorisering hände inte för en simd-slinga"
@@ -320400,7 +322424,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X%> or %<-X%>"
msgstr "antar att teckenspill inte förekommer vid förenkling av %<abs (X)%> till %<X%> eller %<-X%>"
-@@ -20243,9 +20261,9 @@
+@@ -20243,9 +20253,9 @@
#: c-family/c-common.c:9217 c-family/c-common.c:9299 c-family/c-common.c:9446
#: config/darwin.c:2069 config/arm/arm.c:6250 config/arm/arm.c:6278
#: config/arm/arm.c:6295 config/avr/avr.c:8975 config/h8300/h8300.c:5496
@@ -320413,7 +322437,7 @@ Index: gcc/po/sv.po
#: lto/lto-lang.c:260
#, gcc-internal-format
msgid "%qE attribute ignored"
-@@ -20476,7 +20494,7 @@
+@@ -20476,7 +20486,7 @@
msgid "requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr "begärd justering för %q+D är större än implementerad justering av %wu"
@@ -320422,7 +322446,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr "lagringsstorlek på %q+D är okänd"
-@@ -20624,27 +20642,27 @@
+@@ -20624,27 +20634,27 @@
msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support"
msgstr "stränglängden %qd är större än den längden %qd som ISO C%d kompilatorer skall stödja"
@@ -320455,7 +322479,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr "spill i konstant uttryck"
-@@ -20974,12 +20992,12 @@
+@@ -20974,12 +20984,12 @@
msgid "the address of %qD will always evaluate as %<true%>"
msgstr "adressen till %qD kommer alltid beräknas till %<true%>"
@@ -320470,7 +322494,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr "ogiltigt användning av %<restrict%>"
-@@ -21426,12 +21444,12 @@
+@@ -21426,12 +21436,12 @@
msgid "invalid vector type for attribute %qE"
msgstr "ogiltig vektortyp för attributet %qE"
@@ -320485,7 +322509,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "zero vector size"
msgstr "vektorstorlek noll"
-@@ -21441,22 +21459,22 @@
+@@ -21441,22 +21451,22 @@
msgid "number of components of the vector not a power of two"
msgstr "antal komponenter i vektorn inte en tvåpotens"
@@ -320512,7 +322536,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr "nonnull-argument refererar icke-pekar-operand (argument %lu, operand %lu)"
-@@ -21496,12 +21514,12 @@
+@@ -21496,12 +21506,12 @@
msgid "%qE attribute only applies to variadic functions"
msgstr "attributet %qE är bara tillämplig på funktioner med variabelt antal argument"
@@ -320527,7 +322551,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr "begärd position är mindre än noll"
-@@ -21581,7 +21599,7 @@
+@@ -21581,7 +21591,7 @@
msgid "cannot apply %<offsetof%> to a non constant address"
msgstr "det går inte att använda %<offsetof%> på en icke-konstant adress"
@@ -320536,7 +322560,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr "försök att ta adressen till en medlemmen %qD i en bitfältspost"
-@@ -21997,7 +22015,7 @@
+@@ -21997,7 +22007,7 @@
msgstr "indexvärdet är utanför gränsen"
#: c-family/c-common.c:12214 c-family/c-common.c:12264
@@ -320545,7 +322569,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "conversion of scalar %qT to vector %qT involves truncation"
msgstr "konvertering av skalären %qT till vektorn %qT innebär avhuggning"
-@@ -22453,7 +22471,7 @@
+@@ -22453,7 +22463,7 @@
msgid "%<#pragma omp atomic capture%> uses two different variables for memory"
msgstr "%<#pragma omp atomic capture%> använder två olika variabler till minne"
@@ -320554,7 +322578,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid type for iteration variable %qE"
msgstr "ogiltig typ för iterationsvariabeln %qE"
-@@ -22463,22 +22481,22 @@
+@@ -22463,22 +22473,22 @@
msgid "%qE is not initialized"
msgstr "%qE är inte initierad"
@@ -320581,20 +322605,19 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid increment expression"
msgstr "ogiltigt ökningsuttryck"
-@@ -23013,6 +23031,12 @@
+@@ -23013,6 +23023,11 @@
msgid "too many input files"
msgstr "för många indatafiler"
+#: common/config/aarch64/aarch64-common.c:116
-+#, fuzzy, gcc-internal-format
-+#| msgid "stack frame too large"
++#, gcc-internal-format
+msgid "-mcpu string too large"
-+msgstr "för stor stackram"
++msgstr "strängen till -mcpu är för stor"
+
#: common/config/alpha/alpha-common.c:76
#, gcc-internal-format
msgid "bad value %qs for -mtls-size switch"
-@@ -23038,47 +23062,47 @@
+@@ -23038,47 +23053,47 @@
msgid "-mcpu=%s has invalid silicon revision"
msgstr "-mcpu=%s har ogiltig kiselversion"
@@ -320651,7 +322674,16 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<-fsplit-stack%> requires assembler support for CFI directives"
msgstr "%<-fsplit-stack%> kräver assemblerstöd för CFI-direktiv"
-@@ -23460,63 +23484,63 @@
+@@ -23388,7 +23403,7 @@
+ #: config/aarch64/aarch64-builtins.c:1021
+ #, gcc-internal-format
+ msgid "%Ktotal size and element size must be a non-zero constant immediate"
+-msgstr "%Ktotal storlek och elementstorlek måste vara en konstant omedelbar"
++msgstr "%Ktotal storlek och elementstorlek måste vara en konstant omedelbar skild från noll"
+
+ #: config/aarch64/aarch64.c:6643
+ #, gcc-internal-format
+@@ -23460,63 +23475,63 @@
msgid "lane %ld out of range %ld - %ld"
msgstr "bana %ld utanför intervallet %ld - %ld"
@@ -320728,7 +322760,7 @@ Index: gcc/po/sv.po
#: config/tilegx/tilegx.c:3579 config/tilepro/tilepro.c:3147
#, gcc-internal-format
msgid "bad builtin fcode"
-@@ -23990,14 +24014,14 @@
+@@ -23990,14 +24005,14 @@
#: config/arm/arm.c:6218 config/arm/arm.c:6236 config/avr/avr.c:8995
#: config/avr/avr.c:9011 config/bfin/bfin.c:4699 config/bfin/bfin.c:4760
#: config/bfin/bfin.c:4789 config/epiphany/epiphany.c:507
@@ -320749,7 +322781,7 @@ Index: gcc/po/sv.po
#: config/v850/v850.c:2117 config/visium/visium.c:653
#, gcc-internal-format
msgid "%qE attribute only applies to functions"
-@@ -24636,376 +24660,394 @@
+@@ -24636,376 +24651,392 @@
msgid "can%'t set position in PCH file: %m"
msgstr "det går inte att sätta position i PCH-fil: %m"
@@ -320774,13 +322806,12 @@ Index: gcc/po/sv.po
-#: config/i386/i386.c:2999
+#. rep; movq isn't available in 32-bit code.
+#: config/i386/i386.c:2997
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "wrong stringop strategy name %s specified for option %s"
+ #, gcc-internal-format, gfc-internal-format
+msgid "stringop strategy name %s specified for option %s not supported for 32-bit code"
-+msgstr "felaktigt stringop-strateginamn %s angivet till flaggan %s"
++msgstr "stringop-strateginamn %s angivet till flaggan %s stödjs inte i 32-bitars kod"
+
+#: config/i386/i386.c:3012
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "unknown alignment %s specified for option %s"
msgstr "okänd justering %s angiven till flaggan %s"
@@ -321186,15 +323217,14 @@ Index: gcc/po/sv.po
-#: config/i386/i386.c:8138
+#: config/i386/i386.c:7551 config/i386/i386.c:7801
-+#, fuzzy, gcc-internal-format
-+#| msgid "calling %qD with SSE caling convention without SSE/SSE2 enabled"
++#, gcc-internal-format
+msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled"
+msgstr "anrop av %qD med SSE-anropskonvention utan SSE/SSE2 aktiverat"
+
+#: config/i386/i386.c:7553 config/i386/i386.c:7803 config/i386/i386.c:8289
+#, gcc-internal-format
+msgid "this is a GCC bug that can be worked around by adding attribute used to function called"
-+msgstr ""
++msgstr "detta är ett fel i GCC som kan gås runt genom att lägga till attributet used till den anropade funktionen"
+
+#: config/i386/i386.c:8190
#, gcc-internal-format, gfc-internal-format
@@ -321223,7 +323253,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "-fsplit-stack does not support 2 register parameters for a nested function"
msgstr "-fsplit-stack stödjer inte 2 registerparametrar för en nästad funktion"
-@@ -25012,252 +25054,252 @@
+@@ -25012,252 +25043,252 @@
#. FIXME: We could make this work by pushing a register
#. around the addition and comparison.
@@ -321526,7 +323556,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Pointer Checker requires MPX support on this target. Use -mmpx options to enable MPX."
msgstr "Pekarkontrolleraren kräver stöd för MPX på detta mål. Använd flaggan -mmpx för att aktivera MPX."
-@@ -25348,13 +25390,13 @@
+@@ -25348,13 +25379,13 @@
msgid "%qE attribute requires a string constant argument"
msgstr "attributet %qE kräver en strängkonstant som argument"
@@ -321542,7 +323572,7 @@ Index: gcc/po/sv.po
#: config/spu/spu.c:4971
#, gcc-internal-format, gfc-internal-format
msgid "%s-%s is an empty range"
-@@ -25426,7 +25468,7 @@
+@@ -25426,7 +25457,7 @@
msgstr "attributet %qE stödjs inte för denna målarkitekturen R8C"
#. The argument must be a constant integer.
@@ -321551,7 +323581,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE attribute argument not an integer constant"
msgstr "argumentet till attribut %qE är inte en heltalskonstant"
-@@ -25486,7 +25528,7 @@
+@@ -25486,7 +25517,7 @@
msgid "interrupt_thread is available only on fido"
msgstr "interrupt_thread är tillgängligt endast för fido"
@@ -321560,7 +323590,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr "stackgränsuttryck stödjs inte"
-@@ -26336,16 +26378,11 @@
+@@ -26336,16 +26367,11 @@
msgid "-g option disabled"
msgstr "flaggan -g är avslagen"
@@ -321578,7 +323608,7 @@ Index: gcc/po/sv.po
#. Address spaces are currently only supported by C.
#: config/rl78/rl78.c:379
#, gcc-internal-format
-@@ -26603,307 +26640,313 @@
+@@ -26603,307 +26629,312 @@
msgid "target attribute or pragma changes double precision floating point"
msgstr "målattribut eller pragma ändrar dubbel precisions flyttal"
@@ -321662,13 +323692,12 @@ Index: gcc/po/sv.po
-#: config/rs6000/rs6000.c:12718
+#: config/rs6000/rs6000.c:12714
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "%srtd%s is ignored in 64bit mode"
+ #, gcc-internal-format, gfc-internal-format
+msgid "builtin %s is only valid in 64-bit mode"
-+msgstr "%srtd%s ignoreras i 64-bitsläge"
++msgstr "inbyggd %s är endast giltigt i 64-bitsläge"
+
+#: config/rs6000/rs6000.c:12763
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "argument %d must be an unsigned literal"
msgstr "argument %d måste vara en literal utan tecken"
@@ -321953,7 +323982,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "%s\"%s\"%s is invalid"
msgstr "%s”%s”%s är ogiltigt"
-@@ -27154,88 +27197,88 @@
+@@ -27154,88 +27185,88 @@
msgid "requested %qE attribute is not a comma separated pair of non-negative integer constants or too large (max. %d)"
msgstr "begärt attribut %qE är inte ett kommaseparerat par av ickenegativa heltalskonstanter eller för stort (max. %d)"
@@ -322059,7 +324088,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "-mstack-guard implies use of -mstack-size"
msgstr "-mstack-guard implicerar användning av -mstack-size"
-@@ -27250,53 +27293,53 @@
+@@ -27250,53 +27281,53 @@
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
msgstr "utrullningstabeller kräver för närvarande antingen en rampekare eller -maccumulate-outgoing-args för att bli korrekt"
@@ -322123,7 +324152,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "need a call-clobbered target register"
msgstr "behöver ett anropsöverskrivet målregister"
-@@ -27677,43 +27720,43 @@
+@@ -27677,43 +27708,43 @@
msgid "subprogram %q+F not marked Inline"
msgstr "underprogrammet %q+F är inte markerat Inline"
@@ -322176,7 +324205,7 @@ Index: gcc/po/sv.po
#: cp/cp-array-notation.c:264
#, gcc-internal-format
msgid "Invalid builtin arguments"
-@@ -27771,7 +27814,7 @@
+@@ -27771,7 +27802,7 @@
#. making it a constraint in that case was rejected in
#. DR#252.
#: c/c-convert.c:110 c/c-typeck.c:2144 c/c-typeck.c:5879 c/c-typeck.c:11329
@@ -322185,7 +324214,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr "värdet av typen void ignoreras inte vilket bör göras"
-@@ -27801,62 +27844,62 @@
+@@ -27801,62 +27832,62 @@
msgid "GCC supports only %u nested scopes"
msgstr "GCC stödjer endast %u nästade definitionsområden"
@@ -322223,7 +324252,8 @@ Index: gcc/po/sv.po
+#: c/c-decl.c:1310
#, gcc-internal-format
msgid "type of array %q+D completed incompatibly with implicit initialization"
- msgstr "den kompletterade typen på vektor %q+D är okompatibel med implicit initiering"
+-msgstr "den kompletterade typen på vektor %q+D är okompatibel med implicit initiering"
++msgstr "den kompletterade typen på vektor %q+D är inkompatibel med implicit initiering"
-#: c/c-decl.c:1588 c/c-decl.c:6358 c/c-decl.c:7220 c/c-decl.c:7929
+#: c/c-decl.c:1589 c/c-decl.c:6359 c/c-decl.c:7221 c/c-decl.c:7930
@@ -322260,7 +324290,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "prototype for %q+D declares argument %d with incompatible type"
msgstr "prototypen för %q+D deklarerar argument %d med inkompatibel typ"
-@@ -27863,42 +27906,42 @@
+@@ -27863,42 +27894,42 @@
#. If we get here, no errors were found, but do issue a warning
#. for this poor-style construct.
@@ -322311,7 +324341,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "redeclaration of enumerator %q+D"
msgstr "omdeklaration av uppräkningstyp %q+D"
-@@ -27906,340 +27949,340 @@
+@@ -27906,340 +27937,340 @@
#. If types don't match for a built-in, throw away the
#. built-in. No point in calling locate_old_decl here, it
#. won't print anything.
@@ -322355,7 +324385,8 @@ Index: gcc/po/sv.po
+#: c/c-decl.c:1982
#, gcc-internal-format
msgid "redefinition of typedef %q+D with different type"
- msgstr "omdefiniering av typedef %q+D med annan typ"
+-msgstr "omdefiniering av typedef %q+D med annan typ"
++msgstr "omdefinition av typedef %q+D med annan typ"
-#: c/c-decl.c:1994
+#: c/c-decl.c:1995
@@ -322367,13 +324398,15 @@ Index: gcc/po/sv.po
+#: c/c-decl.c:2000
#, gcc-internal-format
msgid "redefinition of typedef %q+D"
- msgstr "omdefiniering av typedef %q+D"
+-msgstr "omdefiniering av typedef %q+D"
++msgstr "omdefinition av typedef %q+D"
-#: c/c-decl.c:2051 c/c-decl.c:2154
+#: c/c-decl.c:2052 c/c-decl.c:2155
#, gcc-internal-format
msgid "redefinition of %q+D"
- msgstr "omdefiniering av %q+D"
+-msgstr "omdefiniering av %q+D"
++msgstr "omdefinition av %q+D"
-#: c/c-decl.c:2086 c/c-decl.c:2192
+#: c/c-decl.c:2087 c/c-decl.c:2193
@@ -322457,7 +324490,8 @@ Index: gcc/po/sv.po
+#: c/c-decl.c:2299
#, gcc-internal-format
msgid "redefinition of parameter %q+D"
- msgstr "omdefiniering av parametern %q+D"
+-msgstr "omdefiniering av parametern %q+D"
++msgstr "omdefinition av parametern %q+D"
-#: c/c-decl.c:2325
+#: c/c-decl.c:2326
@@ -322719,7 +324753,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "ISO C90 does not support %<[*]%> array declarators"
msgstr "ISO C90 stödjer inte %<[*]%>-vektordeklarerare"
-@@ -28247,38 +28290,38 @@
+@@ -28247,38 +28278,38 @@
#. C99 6.7.5.2p4
#. A function definition isn't function prototype scope C99 6.2.1p4.
#. C99 6.7.5.2p4
@@ -322765,7 +324799,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "parameter %qD is initialized"
msgstr "parametern %qD är initierad"
-@@ -28287,257 +28330,257 @@
+@@ -28287,257 +28318,257 @@
#. 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.
@@ -323074,7 +325108,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "function-scope %qE implicitly auto and declared %qs"
msgstr "%qE i funktions definitionsområde är implicit auto och deklarerad %qs"
-@@ -28545,683 +28588,683 @@
+@@ -28545,683 +28576,683 @@
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
@@ -323894,7 +325928,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "parameter %qD set but not used"
msgstr "parametern %qD sätts men används inte"
-@@ -29229,197 +29272,197 @@
+@@ -29229,197 +29260,197 @@
#. 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.
@@ -324131,7 +326165,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not %<omp_priv%> nor %<omp_orig%>"
msgstr "%<#pragma omp declare reduction%>-initierare refererar till variabeln %qD som inte är varken %<omp_priv%> eller %<omp_orig%>"
-@@ -29429,7 +29472,7 @@
+@@ -29429,7 +29460,7 @@
msgid "identifier %qE conflicts with C++ keyword"
msgstr "identifieraren %qE står i konflikt med ett nyckelord i C++"
@@ -324140,7 +326174,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected end of line"
msgstr "oväntat radslut"
-@@ -29449,8 +29492,8 @@
+@@ -29449,8 +29480,8 @@
msgid "unknown type name %qE"
msgstr "okänt typnamn %qE"
@@ -324151,7 +326185,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr "deklarationsspecificerare förväntades"
-@@ -29465,7 +29508,7 @@
+@@ -29465,7 +29496,7 @@
msgid "expected %<;%>, identifier or %<(%>"
msgstr "%<;%>, identifierare eller %<(%> förväntades"
@@ -324160,7 +326194,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "prefix attributes are ignored for methods"
msgstr "prefixattribut ignoreras för metoder"
-@@ -29541,7 +29584,7 @@
+@@ -29541,7 +29572,7 @@
msgid "ISO C90 does not support %<_Static_assert%>"
msgstr "ISO C90 stödjer inte %<_Static_assert%>"
@@ -324169,7 +326203,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected string literal"
msgstr "strängkonstant förväntades"
-@@ -29598,14 +29641,14 @@
+@@ -29598,14 +29629,14 @@
#: c/c-parser.c:8456 c/c-parser.c:8464 c/c-parser.c:8493 c/c-parser.c:8506
#: c/c-parser.c:8811 c/c-parser.c:8935 c/c-parser.c:9375 c/c-parser.c:9410
#: c/c-parser.c:9463 c/c-parser.c:9516 c/c-parser.c:9532 c/c-parser.c:9578
@@ -324188,7 +326222,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr "komma i slutet av uppräkningslista"
-@@ -30054,32 +30097,32 @@
+@@ -30054,32 +30085,32 @@
msgid "no type or storage class may be specified here,"
msgstr "ingen typ eller lagringsklass kan anges här,"
@@ -324227,7 +326261,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "the %<getter%> attribute may only be specified once"
msgstr "attributet %<getter%> kan bara anges en gång"
-@@ -30089,47 +30132,47 @@
+@@ -30089,47 +30120,47 @@
msgid "%<#pragma acc update%> may only be used in compound statements"
msgstr "%<#pragma acc update%> får bara användas i sammansatta satser"
@@ -324284,7 +326318,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr "%<#pragma GCC pch_preprocess%> måste komma först"
-@@ -30144,12 +30187,12 @@
+@@ -30144,12 +30175,12 @@
msgid "%<#pragma grainsize%> must be inside a function"
msgstr "%<#pragma grainsize%> måste vara inuti en funktion"
@@ -324299,7 +326333,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected integer expression before ')'"
msgstr "heltalsuttryck förväntades före ”)”"
-@@ -30159,27 +30202,27 @@
+@@ -30159,27 +30190,27 @@
msgid "expression must be integral"
msgstr "uttrycket måste vara ett heltal"
@@ -324332,7 +326366,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr "%<none%> eller %<shared%> förväntades"
-@@ -30211,17 +30254,17 @@
+@@ -30211,17 +30242,17 @@
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
msgstr "%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> eller %<max%> förväntades"
@@ -324353,7 +326387,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr "ogiltig schedule-sort"
-@@ -30241,12 +30284,12 @@
+@@ -30241,12 +30272,12 @@
msgid "%<thread_limit%> value must be positive"
msgstr "%<thread_limit%>-värdet måste vara positivt"
@@ -324368,7 +326402,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "using parameters for %<linear%> step is not supported yet"
msgstr "att använda parametrar för %<linear%>-steg stödjs inte än"
-@@ -30266,17 +30309,17 @@
+@@ -30266,17 +30297,17 @@
msgid "%<simdlen%> clause expression must be positive constant integer expression"
msgstr "%<simdlen%>-klausulens uttryck måste vara ett positivt konstant heltalsuttryck"
@@ -324389,7 +326423,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid dist_schedule kind"
msgstr "ogiltig dist_schedule-sort"
-@@ -30286,57 +30329,57 @@
+@@ -30286,57 +30317,57 @@
msgid "invalid proc_bind kind"
msgstr "ogiltig proc_bind-sort"
@@ -324458,7 +326492,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<#pragma omp atomic capture%> uses two different expressions for memory"
msgstr "%<#pragma omp atomic capture%> använder två olika uttryck till minne"
-@@ -30346,17 +30389,17 @@
+@@ -30346,17 +30377,17 @@
msgid "expected %<(%> or end of line"
msgstr "%<(%> eller filslut förväntades"
@@ -324479,7 +326513,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr "iterationsdeklaration eller initiering förväntades"
-@@ -30366,237 +30409,238 @@
+@@ -30366,237 +30397,237 @@
msgid "not enough perfectly nested loops"
msgstr "inte tillräckligt med perfekt nästade slingor"
@@ -324514,13 +326548,12 @@ Index: gcc/po/sv.po
msgstr "%<#pragma omp target update%> får bara användas i sammansatta satser"
-#: c/c-parser.c:13854 cp/parser.c:31398
--#, gcc-internal-format
--msgid "%<#pragma omp target update must contain at least one %<from%> or %<to%> clauses"
+#: c/c-parser.c:13851 cp/parser.c:31433
-+#, fuzzy, gcc-internal-format
-+#| msgid "%<#pragma omp target update must contain at least one %<from%> or %<to%> clauses"
+ #, gcc-internal-format
+-msgid "%<#pragma omp target update must contain at least one %<from%> or %<to%> clauses"
+-msgstr "%<#pragma omp target update måste innehålla åtminstone en %<from%>- eller %<to%>-klausul"
+msgid "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> clauses"
- msgstr "%<#pragma omp target update måste innehålla åtminstone en %<from%>- eller %<to%>-klausul"
++msgstr "%<#pragma omp target update%> måste innehålla åtminstone en %<from%>- eller %<to%>-klausul"
-#: c/c-parser.c:13996
+#: c/c-parser.c:13993
@@ -324767,7 +326800,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected array notation expression"
msgstr "vektornotationsuttryck förväntades"
-@@ -30606,7 +30650,7 @@
+@@ -30606,7 +30637,7 @@
msgid "%qD has an incomplete type"
msgstr "%qD har en ofullständig typ"
@@ -324776,7 +326809,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid use of void expression"
msgstr "ogiltig användning av void-uttryck"
-@@ -30712,7 +30756,7 @@
+@@ -30712,7 +30743,7 @@
msgid "subscripted value is neither array nor pointer nor vector"
msgstr "indexerat värde är varken en vektor eller pekare"
@@ -324785,7 +326818,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr "fältindex är inte ett heltal"
-@@ -30835,7 +30879,7 @@
+@@ -30835,7 +30866,7 @@
msgid "passing argument %d of %qE as signed due to prototype"
msgstr "skickar argument %d till %qE med tecken på grund av prototyp"
@@ -324794,7 +326827,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT when passing argument to function"
msgstr "implicit konvertering från %qT till %qT när argument skickas till en funktion"
-@@ -30865,7 +30909,7 @@
+@@ -30865,7 +30896,7 @@
msgid "arithmetic on pointer to an incomplete type"
msgstr "aritmetik på pekare till ofullständig typ"
@@ -324803,7 +326836,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "arithmetic on pointer to an empty aggregate"
msgstr "aritmetik på pekare till ett tomt aggregat"
-@@ -30950,7 +30994,7 @@
+@@ -30950,7 +30981,7 @@
msgid "non-lvalue array in conditional expression"
msgstr "icke-l-värde-vektor i villkorsuttryck"
@@ -324812,7 +326845,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other result of conditional"
msgstr "implicit konvertering från %qT till %qT för att stämma med andra resultat i villkor"
-@@ -30985,7 +31029,7 @@
+@@ -30985,7 +31016,7 @@
msgid "pointer/integer type mismatch in conditional expression"
msgstr "pekar-/heltalstyper stämmer inte i villkorsuttryck"
@@ -324821,7 +326854,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "spawned function call cannot be part of a comma expression"
msgstr "ett avynglat funktionsanrop får inte finnas i ett kommauttryck"
-@@ -31068,7 +31112,7 @@
+@@ -31068,7 +31099,7 @@
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr "typkonvertering från funktionsanrop av typ %qT till typ %qT matchar inte"
@@ -324830,7 +326863,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr "typkonvertering till pekare från heltal med annan storlek"
-@@ -31221,7 +31265,7 @@
+@@ -31221,7 +31252,7 @@
msgid "initialization left-hand side might be a candidate for a format attribute"
msgstr "vänsterhandssida av initiering kan vara en kandidat för ett formatattribut"
@@ -324839,7 +326872,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr "returtypen kan vara en kandidat för ett formatattribut"
-@@ -31358,7 +31402,7 @@
+@@ -31358,7 +31389,7 @@
msgid "initialization of a flexible array member"
msgstr "initiering av medlem som är en flexibel vektor"
@@ -324848,7 +326881,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr "char-vektor initierad från bred sträng"
-@@ -31404,7 +31448,7 @@
+@@ -31404,7 +31435,7 @@
msgid "invalid initializer"
msgstr "ogiltig initierare"
@@ -324857,7 +326890,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr "ogenomskinliga vektortyper kan inte initieras"
-@@ -31549,7 +31593,7 @@
+@@ -31549,7 +31580,7 @@
msgid "ISO C forbids %<goto *expr;%>"
msgstr "ISO C förbjuder %<goto *expr;%>"
@@ -324866,7 +326899,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr "funktion deklarerad %<noreturn%> har en %<return%>-sats"
-@@ -31559,7 +31603,7 @@
+@@ -31559,7 +31590,7 @@
msgid "array notation expression cannot be used as a return value"
msgstr "vektornotationsuttryck kan inte användas som ett returvärde"
@@ -324875,7 +326908,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "use of %<_Cilk_spawn%> in a return statement is not allowed"
msgstr "användning av %<_Cilk_spawn%> i en retursats är inte tillåtet"
-@@ -31664,17 +31708,17 @@
+@@ -31664,17 +31695,17 @@
msgid "expression statement has incomplete type"
msgstr "uttryckssats har ofullständig typ"
@@ -324896,7 +326929,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr "jämföra flyttal med == eller != är osäkert"
-@@ -31725,12 +31769,12 @@
+@@ -31725,12 +31756,12 @@
msgstr "ordningsjämförelse av pekare med nollpekare"
#: c/c-typeck.c:10947 c/c-typeck.c:10950 c/c-typeck.c:10957 c/c-typeck.c:10960
@@ -324911,7 +326944,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
msgstr "implicit konvertering från %qT till %qT för att matcha den andra operanden i binärt uttryck"
-@@ -31755,85 +31799,85 @@
+@@ -31755,85 +31786,85 @@
msgid "used vector type where scalar is required"
msgstr "vektortyp använd där skalär krävs"
@@ -325016,7 +327049,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE does not have pointer or array type"
msgstr "%qE har inte pekar- eller vektortyp"
-@@ -31843,17 +31887,17 @@
+@@ -31843,17 +31874,17 @@
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr "%qE har ogiltig typ för %<reduction(%s)%>"
@@ -325037,7 +327070,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr "%qE måste vara %<threadprivate%> för %<copyin%>"
-@@ -31863,7 +31907,7 @@
+@@ -31863,7 +31894,7 @@
msgid "linear clause applied to non-integral non-pointer variable with type %qT"
msgstr "en linjär klausul använd på variabel som inte är heltal och inte pekare med typen %qT"
@@ -325046,7 +327079,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr "%qE är inte en variabel i klausul %qs"
-@@ -31873,17 +31917,17 @@
+@@ -31873,17 +31904,17 @@
msgid "%qE appears more than once in data clauses"
msgstr "%qE förekommer mer än en gång i dataklausuler"
@@ -325067,7 +327100,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE is not a variable in %<aligned%> clause"
msgstr "%qE är inte en variabel i %<aligned%>-klausul"
-@@ -31898,47 +31942,47 @@
+@@ -31898,47 +31929,47 @@
msgid "%qE appears more than once in %<aligned%> clauses"
msgstr "%qE förekommer mer än en gång i %<aligned%>-klausuler"
@@ -325124,7 +327157,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr "%qE är förutbestämd som %qs för %qs"
-@@ -31949,33 +31993,33 @@
+@@ -31949,33 +31980,33 @@
msgstr "C++ kräver en befordrad typ, inte en uppräkningstyp, i %<va_arg%>"
#. A bad conversion for 'this' must be discarding cv-quals.
@@ -325164,7 +327197,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid " candidate expects %d argument, %d provided"
msgid_plural " candidate expects %d arguments, %d provided"
-@@ -31982,83 +32026,83 @@
+@@ -31982,83 +32013,83 @@
msgstr[0] " kandidaten förväntade sig %d argument, %d fanns"
msgstr[1] " kandidaten förväntade sig %d argument, %d fanns"
@@ -325264,7 +327297,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "call of overloaded %<%D(%A)%> is ambiguous"
msgstr "anrop av överlagrad %<%D(%A)%> är tvetydigt"
-@@ -32065,457 +32109,457 @@
+@@ -32065,457 +32096,457 @@
#. It's no good looking for an overloaded operator() on a
#. pointer-to-member-function.
@@ -325813,7 +327846,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
msgstr "ogiltig initiering av referens av typ %qT från uttryck av typ %qT"
-@@ -32671,7 +32715,7 @@
+@@ -32671,7 +32702,7 @@
msgid " by %q+D"
msgstr " av %q+D"
@@ -325822,7 +327855,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%q+#D invalid; an anonymous union can only have non-static data members"
msgstr "%q+#D ogiltig, en anonym union kan bara ha ickestatiska datamedlemmar"
-@@ -32681,7 +32725,7 @@
+@@ -32681,7 +32712,7 @@
msgid "%q+#D invalid; an anonymous struct can only have non-static data members"
msgstr "%q+#D ogiltig, en anonym post kan bara ha ickestatiska datamedlemmar"
@@ -325831,7 +327864,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "private member %q+#D in anonymous union"
msgstr "privat medlem %q+#D i anonym union"
-@@ -32691,7 +32735,7 @@
+@@ -32691,7 +32722,7 @@
msgid "private member %q+#D in anonymous struct"
msgstr "privat medlem %q+#D i anonym post"
@@ -325840,7 +327873,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "protected member %q+#D in anonymous union"
msgstr "skyddad medlem %q+#D i anonym union"
-@@ -32821,67 +32865,78 @@
+@@ -32821,67 +32852,77 @@
msgid " but does not override %<operator=(const %T&)%>"
msgstr " men ersätter inte %<operator=(const %T&)%>"
@@ -325848,13 +327881,12 @@ Index: gcc/po/sv.po
+#: cp/class.c:4300
#, gcc-internal-format
+msgid "alignment of %qD increased in -fabi-version=9 (GCC 5.2)"
-+msgstr ""
++msgstr "justeringen av %qD ökade i -fabi-version=9 (GCC 5.2)"
+
+#: cp/class.c:4303
-+#, fuzzy, gcc-internal-format
-+#| msgid "alignment of %qD is bigger than original declaration"
++#, gcc-internal-format
+msgid "alignment of %qD will increase in -fabi-version=9"
-+msgstr "justering av %qD är större än originaldeklarationen"
++msgstr "justering av %qD kommer öka med -fabi-version=9"
+
+#: cp/class.c:4557
+#, gcc-internal-format
@@ -325932,7 +327964,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "non-static const member %q+#D in class without a constructor"
msgstr "icke-statisk const-medlem %q+#D i klass utan en konstruerare"
-@@ -32888,102 +32943,102 @@
+@@ -32888,102 +32929,102 @@
#. If the function is defaulted outside the class, we just
#. give the synthesis error.
@@ -326055,7 +328087,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "cannot convert %qE from type %qT to type %qT"
msgstr "kan inte konvertera %qE från typ %qT till typ %qT"
-@@ -32993,12 +33048,12 @@
+@@ -32993,12 +33034,12 @@
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
@@ -326070,7 +328102,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr "byter betydelse av %qD från %q+#D"
-@@ -33038,254 +33093,254 @@
+@@ -33038,254 +33079,254 @@
msgid "constexpr constructor does not have empty body"
msgstr "constexpr-konstruerare har inte tom kropp"
@@ -326375,7 +328407,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "unexpected AST of kind %s"
msgstr "oväntat AST av sorten %s"
-@@ -33356,7 +33411,7 @@
+@@ -33356,7 +33397,7 @@
msgid "try statements are not allowed inside loops marked with #pragma simd"
msgstr "try-satser är inte tillåtna inuti slingor markerade med #pragma simd"
@@ -326384,7 +328416,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qE implicitly determined as %<firstprivate%> has reference type"
msgstr "%qE som implicit bestämts som %<firstprivate%> har referenstyp"
-@@ -33396,7 +33451,7 @@
+@@ -33396,7 +33437,7 @@
msgid "conversion from %qT to %qT discards qualifiers"
msgstr "konvertering från %qT till %qT kastar kvalificerare"
@@ -326393,7 +328425,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr "typkonvertering av %qT till %qT derefererar inte pekare"
-@@ -33406,292 +33461,292 @@
+@@ -33406,292 +33447,292 @@
msgid "cannot convert type %qT to type %qT"
msgstr "kan inte konvertera typ %qT till typ %qT"
@@ -326744,7 +328776,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid " candidate conversions include %qD and %qD"
msgstr " kandidater till konvertering är %qD och %qD"
-@@ -34102,238 +34157,238 @@
+@@ -34102,238 +34143,238 @@
msgid "template parameters do not match template %qD"
msgstr "mallparametrar stämmer inte med mallen %qD"
@@ -327030,7 +329062,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr "vektor med storlek noll %qD"
-@@ -34341,824 +34396,824 @@
+@@ -34341,824 +34382,824 @@
#. 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.
@@ -328020,7 +330052,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
msgstr "funktionen %qs med avslutande returtyp har %qT som sin typ istället för bara %<auto%>"
-@@ -35165,470 +35220,470 @@
+@@ -35165,470 +35206,470 @@
#. Not using maybe_warn_cpp0x because this should
#. always be an error.
@@ -328584,7 +330616,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "parameter %qD includes reference to array of unknown bound %qT"
msgstr "parameter %qD inkluderar referens till vektor %qT med okänd gräns"
-@@ -35648,173 +35703,173 @@
+@@ -35648,173 +35689,173 @@
#. 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.
@@ -328792,7 +330824,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr "%qT refererad till som enum"
-@@ -35826,88 +35881,88 @@
+@@ -35826,88 +35867,88 @@
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
@@ -328899,7 +330931,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr "underliggande typ %<%T%> till %<%T%> måste vara en heltalstyp"
-@@ -35916,87 +35971,87 @@
+@@ -35916,87 +35957,87 @@
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
@@ -329004,7 +331036,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "use of %qD before deduction of %<auto%>"
msgstr "användning av %qD före härledning av %<auto%>"
-@@ -36036,7 +36091,7 @@
+@@ -36036,7 +36077,7 @@
msgid "deleting %qT is undefined"
msgstr "radera %qT är odefinierat"
@@ -329013,7 +331045,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "template declaration of %q#D"
msgstr "malldeklaration av %q#D"
-@@ -36059,7 +36114,7 @@
+@@ -36059,7 +36100,7 @@
#. [temp.mem]
#.
#. A destructor shall not be a member template.
@@ -329022,7 +331054,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "destructor %qD declared as member template"
msgstr "destrueraren %qD deklarerad som medlemsmall"
-@@ -36149,27 +36204,27 @@
+@@ -36149,27 +36190,27 @@
msgid "width of bit-field %qD has non-integral type %qT"
msgstr "bredden på bitfältet %qD har icke-heltalstyp %qT"
@@ -329055,7 +331087,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<operator new%> must return type %qT"
msgstr "%<operator new%> måste returnera typ %qT"
-@@ -36178,47 +36233,47 @@
+@@ -36178,47 +36219,47 @@
#.
#. The first parameter shall not have an associated default
#. argument.
@@ -329112,7 +331144,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%q#D, declared using anonymous type, is used but never defined"
msgstr "%q#D, deklarerad med en anonym typ, används men är aldrig definierad"
-@@ -36227,47 +36282,47 @@
+@@ -36227,47 +36268,47 @@
#. 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.
@@ -329169,7 +331201,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "default argument missing for parameter %P of %q+#D"
msgstr "standardargumentet saknas för parameter %P till %q+#D"
-@@ -36274,12 +36329,12 @@
+@@ -36274,12 +36315,12 @@
#. We mark a lambda conversion op as deleted if we can't
#. generate it properly; see maybe_add_lambda_conv_op.
@@ -329184,7 +331216,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "use of deleted function %qD"
msgstr "användning av borttagen funktion %qD"
-@@ -36856,42 +36911,42 @@
+@@ -36856,42 +36897,42 @@
msgid "neither the destructor nor the class-specific operator delete [] will be called, even if they are declared when the class is defined"
msgstr "varken destrueraren eller den klasspecifika operatorn delete [] kommer anropas, även om de är deklarerade när klassen definieras"
@@ -329235,7 +331267,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
msgstr "typ till vektor-delete är varken pekar- eller vektortyp"
-@@ -37021,17 +37076,17 @@
+@@ -37021,17 +37062,17 @@
msgid "string literal in function template signature"
msgstr "strängliteral i funktionsmallsignatur"
@@ -329256,7 +331288,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "the mangled name of %q+D changes between -fabi-version=%d (%D) and -fabi-version=%d (%D)"
msgstr "det manglade namnet för %q+D ändras mellan -fabi-version=%d (%D) och -fabi-version=%d (%D)"
-@@ -37445,7 +37500,7 @@
+@@ -37445,7 +37486,7 @@
msgid "identifier %qE is a keyword in C++11"
msgstr "identifieraren %qE är ett nyckelord i C++11"
@@ -329265,7 +331297,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<#pragma omp declare simd%> not immediately followed by function declaration or definition"
msgstr "%<#pragma omp declare simd%> som inte omedelbart följs av en funktionsdeklaration eller -definition"
-@@ -37470,7 +37525,7 @@
+@@ -37470,7 +37511,7 @@
msgid "request for member %qE in non-class type %qT"
msgstr "begäran av medlem %qE i typ %qT som inte är en klasstyp"
@@ -329274,7 +331306,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%<%T::%E%> has not been declared"
msgstr "%<%T::%E%> har inte deklarerats"
-@@ -37535,7 +37590,7 @@
+@@ -37535,7 +37576,7 @@
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr "(kanske ett semikolon saknas efter definitionen av %qT)"
@@ -329283,7 +331315,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qT is not a template"
msgstr "%qT är inte en mall"
-@@ -37560,7 +37615,7 @@
+@@ -37560,7 +37601,7 @@
msgid "floating-point literal cannot appear in a constant-expression"
msgstr "en flyttalsliteral får inte finnas i ett konstantuttryck"
@@ -329292,7 +331324,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression"
msgstr "en typomvandling till en annan typ än en heltals- eller uppräkningstyp kan inte förekomma i ett konstantuttryck"
-@@ -37828,7 +37883,7 @@
+@@ -37828,7 +37869,7 @@
msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization"
msgstr "literala operatorsuffix som inte föregås av %<_%> är reserverade för framtida standardisering"
@@ -329301,7 +331333,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected unqualified-id"
msgstr "okvalificerat id förväntades"
-@@ -38003,7 +38058,7 @@
+@@ -38003,7 +38044,7 @@
msgid "capture of non-variable %qD "
msgstr "fångst av en icke-variabel %qD"
@@ -329310,7 +331342,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%q+#D declared here"
msgstr "%q+#D är deklarerad här"
-@@ -38063,7 +38118,7 @@
+@@ -38063,7 +38104,7 @@
msgid "compound-statement in constexpr function"
msgstr "sammansatt sats i en constexpr-funktion"
@@ -329319,7 +331351,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected selection-statement"
msgstr "selektionssats förväntades"
-@@ -38093,7 +38148,7 @@
+@@ -38093,7 +38134,7 @@
msgid "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT"
msgstr "inkonsistenta start-/sluttyper i intervallbaserat %<for%>-sats: %qT och %qT"
@@ -329328,7 +331360,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected iteration-statement"
msgstr "iterationssats förväntades"
-@@ -38124,12 +38179,12 @@
+@@ -38124,12 +38165,12 @@
msgid "ISO C++ forbids computed gotos"
msgstr "ISO C++ förbjuder beräknade goto"
@@ -329343,7 +331375,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "extra %<;%>"
msgstr "extra %<;%>"
-@@ -38176,7 +38231,7 @@
+@@ -38176,7 +38217,7 @@
msgid "class definition may not be declared a friend"
msgstr "klassdefinition kan inte deklareras som en vän"
@@ -329352,7 +331384,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "templates may not be %<virtual%>"
msgstr "mallar får inte vara %<virtual%>"
-@@ -38267,12 +38322,12 @@
+@@ -38267,12 +38308,12 @@
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr "nyckelordet %<export%> är inte implementerat och kommer ignoreras"
@@ -329367,7 +331399,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "template parameter pack cannot have a default argument"
msgstr "mallparameterpaket kan inte ha ett standardargument"
-@@ -38287,7 +38342,7 @@
+@@ -38287,7 +38328,7 @@
msgid "expected template-id"
msgstr "mall-id förväntades"
@@ -329376,7 +331408,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "expected %<<%>"
msgstr "%<<%> förväntades"
-@@ -38364,208 +38419,208 @@
+@@ -38364,208 +38405,208 @@
msgid "expected type specifier"
msgstr "typspecificerare förväntades"
@@ -329626,7 +331658,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name"
msgstr "använd %<%T::%D%> istället för %<%T::%D%> för att namnge konstrueraren i ett kvalificerat namn"
-@@ -38574,7 +38629,7 @@
+@@ -38574,7 +38615,7 @@
#. here because we do not have enough
#. information about its original syntactic
#. form.
@@ -329635,7 +331667,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "invalid declarator"
msgstr "ogiltig deklarator"
-@@ -38581,292 +38636,292 @@
+@@ -38581,292 +38622,292 @@
#. But declarations with qualified-ids can't appear in a
#. function.
@@ -329986,7 +332018,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr "för få mallparameterlistor"
-@@ -38875,533 +38930,533 @@
+@@ -38875,533 +38916,533 @@
#. something like:
#.
#. template <class T> template <class U> void S::f();
@@ -330324,7 +332356,8 @@ Index: gcc/po/sv.po
+#: cp/parser.c:26315 cp/parser.c:26333
#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
- msgstr "metodeklaration i objective-c++ förväntades"
+-msgstr "metodeklaration i objective-c++ förväntades"
++msgstr "metoddeklaration i objective-c++ förväntades"
-#: cp/parser.c:26289 cp/parser.c:26354
+#: cp/parser.c:26327 cp/parser.c:26392
@@ -330626,7 +332659,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "specializing %q#T in different namespace"
msgstr "specialiserar %q#T i en annan namnrymd"
-@@ -39408,67 +39463,67 @@
+@@ -39408,67 +39449,67 @@
#. But if we've had an implicit instantiation, that's a
#. problem ([temp.expl.spec]/6).
@@ -330707,7 +332740,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "members of an explicitly specialized class are defined without a template header"
msgstr "medlemmar av en explicit specialiserad klass definieras utan ett mallhuvud"
-@@ -39475,57 +39530,57 @@
+@@ -39475,57 +39516,57 @@
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
@@ -330776,7 +332809,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qD is not declared in %qD"
msgstr "%qD inte deklarerad i %qD"
-@@ -39538,92 +39593,92 @@
+@@ -39538,92 +39579,92 @@
#. program is ill-formed.
#.
#. Similar language is found in [temp.explicit].
@@ -330887,7 +332920,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
-@@ -39630,12 +39685,12 @@
+@@ -39630,12 +39671,12 @@
msgstr[0] "typ %qT för mallargument %qE beror på en mallparameter"
msgstr[1] "typ %qT för mallargument %qE beror på mallparametrar"
@@ -330902,7 +332935,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "no default argument for %qD"
msgstr "inget standardargument för %qD"
-@@ -39643,42 +39698,42 @@
+@@ -39643,42 +39684,42 @@
#. A primary class template can only have one
#. parameter pack, at the end of the template
#. parameter list.
@@ -330953,7 +332986,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "member template %qD may not have virt-specifiers"
msgstr "medlemsmallen %qD kan inte ha virt-specificerare"
-@@ -39688,57 +39743,57 @@
+@@ -39688,57 +39729,57 @@
#. An allocation function can be a function
#. template. ... Template allocation functions shall
#. have two or more parameters.
@@ -331022,7 +333055,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
-@@ -39745,7 +39800,7 @@
+@@ -39745,7 +39786,7 @@
msgstr[0] "omdeklarerad med %d mallparameter"
msgstr[1] "omdeklarerad med %d mallparametrar"
@@ -331031,7 +333064,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
-@@ -39752,12 +39807,12 @@
+@@ -39752,12 +39793,12 @@
msgstr[0] "tidigare deklaration av %q+D använde %d mallparameter"
msgstr[1] "tidigare deklaration av %q+D använde %d mallparametrar"
@@ -331046,7 +333079,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "redeclared here as %q#D"
msgstr "omdeklarerad här som %q#D"
-@@ -39766,102 +39821,102 @@
+@@ -39766,102 +39807,102 @@
#.
#. A template-parameter may not be given default arguments
#. by two different declarations in the same scope.
@@ -331169,7 +333202,7 @@ Index: gcc/po/sv.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"
-@@ -39868,172 +39923,172 @@
+@@ -39868,172 +39909,172 @@
msgstr[0] " kandidaten förväntade sig åtminstone %d argument, %d fanns"
msgstr[1] " kandidaten förväntade sig åtminstone %d argument, %d fanns"
@@ -331376,7 +333409,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
msgstr " förväntade en mall av typen %qD, fick %qT"
-@@ -40040,77 +40095,77 @@
+@@ -40040,77 +40081,77 @@
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
@@ -331469,7 +333502,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid " when instantiating default argument for call to %D"
msgstr " vid instansiering av standardargument för anrop av %D"
-@@ -40128,266 +40183,266 @@
+@@ -40128,266 +40169,266 @@
#.
#. is an attempt to declare a variable with function
#. type.
@@ -331789,7 +333822,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr "dubblerad explicit instansiering av %q#T"
-@@ -40399,62 +40454,62 @@
+@@ -40399,62 +40440,62 @@
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
@@ -331864,7 +333897,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
msgstr "inkonsistent härledning för %qT: %qT och sedan %qT"
-@@ -40691,260 +40746,260 @@
+@@ -40691,260 +40732,260 @@
msgid "invalid base-class specification"
msgstr "ogiltig basklasspecifikation"
@@ -332176,7 +334209,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "decltype cannot resolve address of overloaded function"
msgstr "decltype kan inte lösa upp adressen till en överlagrad funktion"
-@@ -40959,117 +41014,117 @@
+@@ -40959,117 +41000,117 @@
msgid "lambda-expression in a constant expression"
msgstr "lambdauttryck i ett konstantuttryck"
@@ -332317,7 +334350,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr "lang_*-kontroll: misslyckades i %s, vid %s:%d"
-@@ -41259,564 +41314,559 @@
+@@ -41259,564 +41300,559 @@
msgid "rank of the array%'s index is greater than 1"
msgstr "ordningen på vektorns index är större än 1"
@@ -332993,7 +335026,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr "returnerar ett värde från en destruktor"
-@@ -41823,45 +41873,45 @@
+@@ -41823,45 +41859,45 @@
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
@@ -333047,7 +335080,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
msgstr "hjälp xvärde (rvärdesreferens) som lvärde"
-@@ -42087,122 +42137,122 @@
+@@ -42087,122 +42123,122 @@
msgid "narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11"
msgstr "avsmalnande konvertering av %qE från %qT till %qT inuti { } är felaktig i C++11"
@@ -333194,7 +335227,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "call to function which throws incomplete type %q#T"
msgstr "anrop till funktion som kastar ofullständig typ %q#T"
-@@ -42379,8 +42429,8 @@
+@@ -42379,8 +42415,8 @@
#: fortran/array.c:213 fortran/array.c:596 fortran/check.c:2581
#: fortran/check.c:4859 fortran/check.c:4897 fortran/check.c:4939
@@ -333205,7 +335238,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Coarrays disabled at %C, use %<-fcoarray=%> to enable"
msgstr "Co-vektorer avaktiverade vid %C, använd %<-fcoarray=%> för att aktivera"
-@@ -42515,7 +42565,7 @@
+@@ -42515,7 +42551,7 @@
msgid "Array constructor including type specification at %C"
msgstr "Vektorkonstruerare med typspecifikation vid %C"
@@ -333214,7 +335247,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Type-spec at %L cannot contain a deferred type parameter"
msgstr "Typspecifikation vid %L kan inte innehålla ha en fördröjd typparameter"
-@@ -42631,7 +42681,7 @@
+@@ -42631,7 +42667,7 @@
msgid "%qs argument of %qs intrinsic at %L must be INTEGER or PROCEDURE"
msgstr "%qs-argumentet till inbyggd %qs vid %L måste vara INTEGER eller PROCEDURE"
@@ -333223,7 +335256,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qs argument of %qs intrinsic at %L must be a constant"
msgstr "%qs-argumentet till inbyggd %qs vid %L måste vara en konstant"
-@@ -43218,12 +43268,12 @@
+@@ -43218,12 +43254,12 @@
msgid "%<source%> argument of %<shape%> intrinsic at %L must not be an assumed size array"
msgstr "%<source%>-argumentet till inbyggd %<shape%> vid %L får inte vara en vektor med antagen storlek"
@@ -333238,19 +335271,19 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "%qs argument of %qs intrinsic at %L shall not be TYPE(*)"
msgstr "Argumentet %qs till inbyggd %qs vid %L skall inte vara TYPE(*)"
-@@ -43493,6 +43543,11 @@
+@@ -43493,6 +43529,11 @@
msgid "%qs argument of %qs intrinsic at %L must be INTEGER or LOGICAL"
msgstr "%qs-argumentet till inbyggd %qs vid %L måste vara INTEGER eller LOGICAL"
+#: fortran/check.c:6219
+#, gcc-internal-format, gfc-internal-format
+msgid "Intrinsic function NULL at %L cannot be an actual argument to STORAGE_SIZE, because it returns a disassociated pointer"
-+msgstr ""
++msgstr "Den inbyggda funktionen NULL vid %L kan inte vara ett aktuellt argument till STORATE_SIZE, eftersom den returnerar en disassocierad pekare"
+
#: fortran/class.c:614
#, gcc-internal-format, gfc-internal-format
msgid "Assumed size polymorphic objects or components, such as that at %C, have not yet been implemented"
-@@ -43500,7 +43555,7 @@
+@@ -43500,7 +43541,7 @@
#. Since the extension field is 8 bit wide, we can only have
#. up to 255 extension levels.
@@ -333259,7 +335292,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Maximum extension level reached with type %qs at %L"
msgstr "Maximal utökningsnivå nådd med typen %qs vid %L"
-@@ -43720,399 +43775,399 @@
+@@ -43720,399 +43761,399 @@
msgid "Variable %qs at %C with an initializer already appears in a DATA statement"
msgstr "Variabeln %qs vid %C med en initierare finns redan i en DATA-sats"
@@ -333740,7 +335773,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"
-@@ -44119,795 +44174,802 @@
+@@ -44119,795 +44160,800 @@
#. Use gfc_warning_now because we won't say that the symbol fails
#. just because of this.
@@ -334005,10 +336038,9 @@ Index: gcc/po/sv.po
-msgid "gfc_match_entry(): Bad state"
-msgstr "gfc_match_entry(): Felaktigt tillstånd"
+#: fortran/decl.c:5595
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "Unexpected END statement at %C"
++#, gcc-internal-format, gfc-internal-format
+msgid "Unexpected ENTRY statement at %C"
-+msgstr "Oväntad END-sats vid %C"
++msgstr "Oväntad ENTRY-sats vid %C"
-#: fortran/decl.c:5611
+#: fortran/decl.c:5609
@@ -334613,10 +336645,9 @@ Index: gcc/po/sv.po
-#: fortran/decl.c:8522
+#: fortran/decl.c:8515
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "ENTRY statement at %C"
++#, gcc-internal-format, gfc-internal-format
+msgid "Malformed GENERIC statement at %C"
-+msgstr "ENTRY-sats vid %C"
++msgstr "Felformad GENERIC-sats vid %C"
+
+#: fortran/decl.c:8526
#, gcc-internal-format
@@ -334706,7 +336737,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"
-@@ -45187,342 +45249,342 @@
+@@ -45187,342 +45233,342 @@
msgid "Different shape for %s at %L on dimension %d (%d and %d)"
msgstr "Olika form för %s vid %L på dimension %d (%d och %d)"
@@ -335117,7 +337148,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "can't open input file: %s"
msgstr "Kan inte öppna indatafil: %s"
-@@ -45544,27 +45606,27 @@
+@@ -45544,27 +45590,27 @@
msgid "Removing call to function %qs at %L"
msgstr "Tar bort anrop av funktionen %qs vid %L"
@@ -335150,19 +337181,18 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function '%s'"
msgstr "Variabeln ”%s” vid %L ej definierbar inuti slingan som börjar vid %L är argument INTENT(INOUT) till funktionen ”%s”"
-@@ -45619,592 +45681,598 @@
+@@ -45619,592 +45665,597 @@
msgid "Expected %<END INTERFACE ASSIGNMENT (=)%> at %C"
msgstr "%<END INTERFACE ASSIGNMENT (=)%> förväntades vid %C"
-#: fortran/interface.c:349
+#: fortran/interface.c:350
-+#, fuzzy, gcc-internal-format
-+#| msgid "Expecting %<END INTERFACE OPERATOR (.%s.)%> at %C"
+ #, gcc-internal-format
+msgid "Expecting %<END INTERFACE OPERATOR (%s)%> at %C, "
-+msgstr "%<END INTERFACE OPERATOR (.%s.)%> förväntades vid %C"
++msgstr "%<END INTERFACE OPERATOR (%s)%> förväntades vid %C"
+
+#: fortran/interface.c:353
- #, gcc-internal-format
++#, gcc-internal-format
msgid "Expecting %<END INTERFACE OPERATOR (%s)%> at %C, but got %s"
msgstr "%<END INTERFACE OPERATOR (%s)%> förväntades vid %C, men fick %s"
@@ -335867,7 +337897,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Passed-object dummy argument of %qs at %L must be at the same position as the passed-object dummy argument of the overridden procedure"
msgstr "Attrappargument för pass-objekt till %qs vid %L måste vara på samma position som attrappargumentet för pass-objektet i den åsidosatta proceduren"
-@@ -46614,12 +46682,12 @@
+@@ -46614,12 +46665,12 @@
msgid "ASYNCHRONOUS= at %C not allowed in Fortran 95"
msgstr "ASYNCHRONOUS= vid %C är inte tillåtet i Fortran 95"
@@ -335882,7 +337912,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "DECIMAL= at %C not allowed in Fortran 95"
msgstr "DECIMAL= vid %C är inte tillåtet i Fortran 95"
-@@ -46629,7 +46697,7 @@
+@@ -46629,7 +46680,7 @@
msgid "ENCODING= at %C not allowed in Fortran 95"
msgstr "ENCODING= vid %C är inte tillåtet i Fortran 95"
@@ -335891,7 +337921,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "ROUND= at %C not allowed in Fortran 95"
msgstr "ROUND= vid %C är inte tillåtet i Fortran 95"
-@@ -46654,776 +46722,776 @@
+@@ -46654,776 +46705,776 @@
msgid "UNIT number in CLOSE statement at %L must be non-negative"
msgstr "UNIT-tal i CLOSE-sats vid %L måste vara ickenegativt"
@@ -336824,7 +338854,7 @@ 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"
-@@ -47431,147 +47499,147 @@
+@@ -47431,147 +47482,147 @@
#. If we find an error, just print it and continue,
#. cause it's just semantic, and we can see if there
#. are more errors.
@@ -337001,7 +339031,7 @@ 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"
-@@ -47717,168 +47785,168 @@
+@@ -47717,168 +47768,168 @@
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr "Namnlistan %s får inte namnändras av USE-association till %s"
@@ -337204,7 +339234,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Can't USE the same module we're building!"
msgstr "Det går inta att USE samma modul vi bygger!"
-@@ -48173,7 +48241,7 @@
+@@ -48173,7 +48224,7 @@
msgid "Implicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %L "
msgstr "Den implicit deklarerade subrutinen %s används i !$OMP DECLARE REDUCTION vid %L "
@@ -337213,7 +339243,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr "IF-klausul vid %L kräver ett skalärt LOGICAL-uttryck"
-@@ -48865,367 +48933,362 @@
+@@ -48865,367 +48916,362 @@
msgid "Unexpected %s statement at %C"
msgstr "Oväntad %s-sats vid %C"
@@ -337653,7 +339683,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"
-@@ -49233,7 +49296,7 @@
+@@ -49233,7 +49279,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.
@@ -337662,7 +339692,7 @@ 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"
-@@ -49928,7 +49991,7 @@
+@@ -49928,7 +49974,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%>."
@@ -337671,7 +339701,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"
-@@ -49983,363 +50046,363 @@
+@@ -49983,363 +50029,363 @@
msgid "Passing internal procedure at %L by location not allowed"
msgstr "Att skicka intern procedur som plats vid %L är inte tillåtet"
@@ -338040,7 +340070,8 @@ Index: gcc/po/sv.po
+#: fortran/resolve.c:4486
#, gcc-internal-format, gfc-internal-format
msgid "Substring start index at %L is less than one"
- msgstr "Substrängs startindex vid %L är mindre än ett"
+-msgstr "Substrängs startindex vid %L är mindre än ett"
++msgstr "Delsträngs startindex vid %L är mindre än ett"
-#: fortran/resolve.c:4503
+#: fortran/resolve.c:4499
@@ -338107,7 +340138,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Assumed-type variable %s at %L may only be used as actual argument"
msgstr "Variabeln %s med antagen typ vid %L får bara användas som ett aktuellt argument"
-@@ -50348,12 +50411,12 @@
+@@ -50348,12 +50394,12 @@
#. for all inquiry functions in resolve_function; the reason is
#. that the function-name resolution happens too late in that
#. function.
@@ -338122,7 +340153,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format, gfc-internal-format
msgid "Assumed-rank variable %s at %L may only be used as actual argument"
msgstr "Variabeln %s med antagen ordning vid %L kan bara användas som ett aktuellt argument"
-@@ -50362,248 +50425,248 @@
+@@ -50362,248 +50408,248 @@
#. for all inquiry functions in resolve_function; the reason is
#. that the function-name resolution happens too late in that
#. function.
@@ -338420,7 +340451,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"
-@@ -50612,188 +50675,188 @@
+@@ -50612,188 +50658,188 @@
#. 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.
@@ -338646,7 +340677,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"
-@@ -50800,12 +50863,12 @@
+@@ -50800,12 +50846,12 @@
#. Note: A label at END CRITICAL does not leave the CRITICAL
#. construct as END CRITICAL is still part of it.
@@ -338661,7 +340692,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"
-@@ -50813,158 +50876,158 @@
+@@ -50813,158 +50859,158 @@
#. 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.
@@ -338851,7 +340882,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"
-@@ -50971,7 +51034,7 @@
+@@ -50971,7 +51017,7 @@
#. This can only happen if the variable is defined in a module - if it
#. isn't the same module, reject it.
@@ -338860,7 +340891,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"
-@@ -50979,57 +51042,57 @@
+@@ -50979,57 +51025,57 @@
#. 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.
@@ -338929,7 +340960,7 @@ Index: gcc/po/sv.po
#, 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"
-@@ -51036,422 +51099,422 @@
+@@ -51036,422 +51082,422 @@
#. The shape of a main program or module array needs to be
#. constant.
@@ -339436,7 +341467,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"
-@@ -51458,397 +51521,397 @@
+@@ -51458,397 +51504,397 @@
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
@@ -339913,7 +341944,7 @@ 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"
-@@ -51878,47 +51941,47 @@
+@@ -51878,47 +51924,47 @@
msgid "!$OMP at %C starts a commented line as it neither is followed by a space nor is a continuation line"
msgstr "!$OMP vid %C inleder en kommentarrad eftersom det varken följs av en blank eller en fortsättningsrad"
@@ -339970,7 +342001,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Can't open file %qs"
msgstr "Kan inte öppna filen %qs"
-@@ -52184,52 +52247,52 @@
+@@ -52184,52 +52230,52 @@
msgid "Reshaped array too large at %C"
msgstr "Omformad vektor är för stor vid %C"
@@ -340033,19 +342064,18 @@ 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"
-@@ -52307,252 +52370,258 @@
+@@ -52307,252 +52353,257 @@
msgid "Namelist group name at %L cannot have the SAVE attribute"
msgstr "Namnlistegruppnamnet vid %L kan inte ha attributet SAVE"
-#: fortran/symbol.c:484
+#: fortran/symbol.c:463
-+#, fuzzy, gcc-internal-format, gfc-internal-format
-+#| msgid "Internal procedure %qs is used as actual argument at %L"
+ #, gcc-internal-format, gfc-internal-format
+msgid "internal procedure '%s' at %L conflicts with DUMMY argument"
-+msgstr "Den interna proceduren %qs används som aktuellt argument vid %L"
++msgstr "den interna proceduren ”%s” vid %L står i konflikt med DUMMY-argument"
+
+#: fortran/symbol.c:489
- #, gcc-internal-format, gfc-internal-format
++#, gcc-internal-format, gfc-internal-format
msgid "Procedure pointer at %C"
msgstr "Procedurpekare vid %C"
@@ -340342,7 +342372,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Name %qs at %C is an ambiguous reference to %qs from current program unit"
msgstr "Namnet %qs vid %C är en tvetydig referens till %qs från den aktuella programenheten"
-@@ -52559,62 +52628,62 @@
+@@ -52559,62 +52610,62 @@
# Vad är "host associated"?
#. Symbol is from another namespace.
@@ -340417,7 +342447,7 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "Symbol %qs is used before it is typed at %L"
msgstr "Symbolen %qs används före den har fått sin typ vid %L"
-@@ -52873,7 +52942,7 @@
+@@ -52873,7 +52924,7 @@
msgid "Bad IO basetype (%d)"
msgstr "Felaktig IO-bastyp (%d)"
@@ -340426,28 +342456,6 @@ Index: gcc/po/sv.po
#, gcc-internal-format
msgid "gfc_trans_omp_workshare(): Bad statement code"
msgstr "gfc_trans_omp_workshare(): Felaktig satskod"
-@@ -54420,3 +54489,21 @@
- #, gcc-internal-format
- msgid "creating selector for nonexistent method %qE"
- msgstr "skapar selektor för icke existerande metod %qE"
-+
-+#~ msgid "Use ISA 2.07 crypto instructions"
-+#~ msgstr "Använd ISA 2.07 kryptoinstruktioner"
-+
-+#~ msgid "lastprivate variable %qE is private in outer context"
-+#~ msgstr "lastprivate-variabel %qE är privat i yttre sammanhang"
-+
-+#~ msgid "-munix=98 option required for C89 Amendment 1 features.\n"
-+#~ msgstr "flaggan -munix=98 krävs för funktioner från C89 tillägg 1.\n"
-+
-+#~ msgid "ISO C++ forbids subscripting non-lvalue array"
-+#~ msgstr "ISO C++ förbjuder indexering av icke-lvalue-vektor"
-+
-+#~ msgid "gfc_match_entry(): Bad state"
-+#~ msgstr "gfc_match_entry(): Felaktigt tillstånd"
-+
-+#~ msgid "Unexpected %s statement in verify_st_order() at %C"
-+#~ msgstr "Oväntad %s-sats i verify_st_order() vid %C"
Index: gcc/po/de.po
===================================================================
--- a/src/gcc/po/de.po (.../tags/gcc_5_2_0_release)
@@ -518732,11 +520740,145 @@ Index: gcc/graphite-sese-to-poly.c
}
/* Returns true when PHI contains an argument ARG. */
+Index: gcc/config/alpha/alpha.c
+===================================================================
+--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-5-branch)
+@@ -4548,8 +4548,8 @@
+ oldval = operands[3];
+ newval = operands[4];
+ is_weak = (operands[5] != const0_rtx);
+- mod_s = (enum memmodel) INTVAL (operands[6]);
+- mod_f = (enum memmodel) INTVAL (operands[7]);
++ mod_s = memmodel_from_int (INTVAL (operands[6]));
++ mod_f = memmodel_from_int (INTVAL (operands[7]));
+ mode = GET_MODE (mem);
+
+ alpha_pre_atomic_barrier (mod_s);
+@@ -4587,12 +4587,12 @@
+ emit_unlikely_jump (x, label1);
+ }
+
+- if (mod_f != MEMMODEL_RELAXED)
++ if (!is_mm_relaxed (mod_f))
+ emit_label (XEXP (label2, 0));
+
+ alpha_post_atomic_barrier (mod_s);
+
+- if (mod_f == MEMMODEL_RELAXED)
++ if (is_mm_relaxed (mod_f))
+ emit_label (XEXP (label2, 0));
+ }
+
+@@ -4653,8 +4653,8 @@
+ newval = operands[4];
+ align = operands[5];
+ is_weak = (operands[6] != const0_rtx);
+- mod_s = (enum memmodel) INTVAL (operands[7]);
+- mod_f = (enum memmodel) INTVAL (operands[8]);
++ mod_s = memmodel_from_int (INTVAL (operands[7]));
++ mod_f = memmodel_from_int (INTVAL (operands[8]));
+ scratch = operands[9];
+ mode = GET_MODE (orig_mem);
+ addr = XEXP (orig_mem, 0);
+@@ -4706,12 +4706,12 @@
+ emit_unlikely_jump (x, label1);
+ }
+
+- if (mod_f != MEMMODEL_RELAXED)
++ if (!is_mm_relaxed (mod_f))
+ emit_label (XEXP (label2, 0));
+
+ alpha_post_atomic_barrier (mod_s);
+
+- if (mod_f == MEMMODEL_RELAXED)
++ if (is_mm_relaxed (mod_f))
+ emit_label (XEXP (label2, 0));
+ }
+
+Index: gcc/config/s390/s390.md
+===================================================================
+--- a/src/gcc/config/s390/s390.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/s390/s390.md (.../branches/gcc-5-branch)
+@@ -9594,7 +9594,7 @@
+ {
+ /* Unless this is a SEQ_CST fence, the s390 memory model is strong
+ enough not to require barriers of any kind. */
+- if (INTVAL (operands[0]) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (memmodel_from_int (INTVAL (operands[0]))))
+ {
+ rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+ MEM_VOLATILE_P (mem) = 1;
+@@ -9675,7 +9675,7 @@
+ (match_operand:SI 2 "const_int_operand")] ;; model
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+
+ if (MEM_ALIGN (operands[0]) < GET_MODE_BITSIZE (GET_MODE (operands[0])))
+ FAIL;
+@@ -9686,7 +9686,7 @@
+ emit_insn (gen_atomic_storedi_1 (operands[0], operands[1]));
+ else
+ emit_move_insn (operands[0], operands[1]);
+- if (model == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ emit_insn (gen_mem_thread_fence (operands[2]));
+ DONE;
+ })
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-5-branch)
+@@ -11678,9 +11678,8 @@
+
+ if (before_after & 1)
+ {
+- if (model == MEMMODEL_RELEASE
+- || model == MEMMODEL_ACQ_REL
+- || model == MEMMODEL_SEQ_CST)
++ if (is_mm_release (model) || is_mm_acq_rel (model)
++ || is_mm_seq_cst (model))
+ {
+ if (load_store & 1)
+ mm |= LoadLoad | StoreLoad;
+@@ -11690,9 +11689,8 @@
+ }
+ if (before_after & 2)
+ {
+- if (model == MEMMODEL_ACQUIRE
+- || model == MEMMODEL_ACQ_REL
+- || model == MEMMODEL_SEQ_CST)
++ if (is_mm_acquire (model) || is_mm_acq_rel (model)
++ || is_mm_seq_cst (model))
+ {
+ if (load_store & 1)
+ mm |= LoadLoad | LoadStore;
Index: gcc/config/i386/i386.md
===================================================================
--- a/src/gcc/config/i386/i386.md (.../tags/gcc_5_2_0_release)
+++ b/src/gcc/config/i386/i386.md (.../branches/gcc-5-branch)
-@@ -5051,11 +5051,11 @@
+@@ -783,7 +783,8 @@
+ (define_attr "isa" "base,x64,x64_sse4,x64_sse4_noavx,x64_avx,nox64,
+ sse2,sse2_noavx,sse3,sse4,sse4_noavx,avx,noavx,
+ avx2,noavx2,bmi,bmi2,fma4,fma,avx512f,noavx512f,
+- fma_avx512f,avx512bw,noavx512bw,avx512dq,noavx512dq"
++ fma_avx512f,avx512bw,noavx512bw,avx512dq,noavx512dq,
++ avx512vl,noavx512vl"
+ (const_string "base"))
+
+ (define_attr "enabled" ""
+@@ -818,6 +819,8 @@
+ (eq_attr "isa" "noavx512bw") (symbol_ref "!TARGET_AVX512BW")
+ (eq_attr "isa" "avx512dq") (symbol_ref "TARGET_AVX512DQ")
+ (eq_attr "isa" "noavx512dq") (symbol_ref "!TARGET_AVX512DQ")
++ (eq_attr "isa" "avx512vl") (symbol_ref "TARGET_AVX512VL")
++ (eq_attr "isa" "noavx512vl") (symbol_ref "!TARGET_AVX512VL")
+ ]
+ (const_int 1)))
+
+@@ -5051,11 +5054,11 @@
/* The DImode arrived in a pair of integral registers (e.g. %edx:%eax).
Assemble the 64-bit DImode value in an xmm register. */
emit_insn (gen_sse2_loadld (operands[3], CONST0_RTX (V4SImode),
@@ -518751,7 +520893,7 @@ Index: gcc/config/i386/i386.md
operands[3] = gen_rtx_REG (DImode, REGNO (operands[3]));
})
-@@ -13237,7 +13237,8 @@
+@@ -13237,7 +13240,8 @@
(call:P
(mem:QI (match_operand 2 "constant_call_address_operand" "Bz"))
(match_operand 3)))
@@ -518761,7 +520903,7 @@ Index: gcc/config/i386/i386.md
UNSPEC_TLS_GD)]
"TARGET_64BIT"
{
-@@ -13261,8 +13262,9 @@
+@@ -13261,8 +13265,9 @@
(mem:QI (plus:DI (match_operand:DI 2 "register_operand" "b")
(match_operand:DI 3 "immediate_operand" "i")))
(match_operand 4)))
@@ -518773,7 +520915,7 @@ Index: gcc/config/i386/i386.md
"TARGET_64BIT && ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF
&& GET_CODE (operands[3]) == CONST
&& GET_CODE (XEXP (operands[3], 0)) == UNSPEC
-@@ -13283,7 +13285,8 @@
+@@ -13283,7 +13288,8 @@
(call:P
(mem:QI (match_operand 2))
(const_int 0)))
@@ -518783,7 +520925,7 @@ Index: gcc/config/i386/i386.md
UNSPEC_TLS_GD)])]
"TARGET_64BIT"
"ix86_tls_descriptor_calls_expanded_in_cfun = true;")
-@@ -13333,7 +13336,7 @@
+@@ -13333,7 +13339,7 @@
(call:P
(mem:QI (match_operand 1 "constant_call_address_operand" "Bz"))
(match_operand 2)))
@@ -518792,7 +520934,7 @@ Index: gcc/config/i386/i386.md
"TARGET_64BIT"
{
output_asm_insn
-@@ -13351,7 +13354,7 @@
+@@ -13351,7 +13357,7 @@
(mem:QI (plus:DI (match_operand:DI 1 "register_operand" "b")
(match_operand:DI 2 "immediate_operand" "i")))
(match_operand 3)))
@@ -518801,7 +520943,7 @@ Index: gcc/config/i386/i386.md
"TARGET_64BIT && ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF
&& GET_CODE (operands[2]) == CONST
&& GET_CODE (XEXP (operands[2], 0)) == UNSPEC
-@@ -13372,7 +13375,7 @@
+@@ -13372,7 +13378,7 @@
(call:P
(mem:QI (match_operand 1))
(const_int 0)))
@@ -518810,7 +520952,7 @@ Index: gcc/config/i386/i386.md
"TARGET_64BIT"
"ix86_tls_descriptor_calls_expanded_in_cfun = true;")
-@@ -17431,8 +17434,8 @@
+@@ -17431,8 +17437,8 @@
;; lifetime information then.
(define_peephole2
@@ -518821,7 +520963,7 @@ Index: gcc/config/i386/i386.md
"optimize_insn_for_speed_p ()
&& ((TARGET_NOT_UNPAIRABLE
&& (!MEM_P (operands[0])
-@@ -17576,8 +17579,10 @@
+@@ -17576,8 +17582,10 @@
[(match_dup 0)
(match_operand 2 "memory_operand")]))]
"REGNO (operands[0]) != REGNO (operands[1])
@@ -518834,7 +520976,7 @@ Index: gcc/config/i386/i386.md
[(set (match_dup 0) (match_dup 2))
(set (match_dup 0)
(match_op_dup 3 [(match_dup 0) (match_dup 1)]))])
-@@ -17725,7 +17730,7 @@
+@@ -17725,7 +17733,7 @@
(match_operand 1 "const0_operand"))]
"GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
&& (! TARGET_USE_MOV0 || optimize_insn_for_size_p ())
@@ -518843,7 +520985,7 @@ Index: gcc/config/i386/i386.md
&& peep2_regno_dead_p (0, FLAGS_REG)"
[(parallel [(set (match_dup 0) (const_int 0))
(clobber (reg:CC FLAGS_REG))])]
-@@ -17746,6 +17751,7 @@
+@@ -17746,6 +17754,7 @@
[(set (match_operand:SWI248 0 "register_operand")
(const_int -1))]
"(optimize_insn_for_size_p () || TARGET_MOVE_M1_VIA_OR)
@@ -518851,7 +520993,7 @@ Index: gcc/config/i386/i386.md
&& peep2_regno_dead_p (0, FLAGS_REG)"
[(parallel [(set (match_dup 0) (const_int -1))
(clobber (reg:CC FLAGS_REG))])]
-@@ -18113,11 +18119,13 @@
+@@ -18113,11 +18122,13 @@
operands[1] = gen_rtx_PLUS (word_mode, base,
gen_rtx_MULT (word_mode, index, GEN_INT (scale)));
@@ -518900,6 +521042,114 @@ Index: gcc/config/i386/sse.md
emit_insn (gen_vec_interleave_lowv4si (operands[0], operands[0],
operands[2]));
}
+@@ -8490,42 +8490,48 @@
+ (set_attr "mode" "DF,DF,V1DF,V1DF,V1DF,V2DF,V1DF,V1DF,V1DF")])
+
+ (define_insn "vec_dupv2df<mask_name>"
+- [(set (match_operand:V2DF 0 "register_operand" "=x,v")
++ [(set (match_operand:V2DF 0 "register_operand" "=x,x,v")
+ (vec_duplicate:V2DF
+- (match_operand:DF 1 "nonimmediate_operand" " 0,vm")))]
++ (match_operand:DF 1 "nonimmediate_operand" " 0,xm,vm")))]
+ "TARGET_SSE2 && <mask_avx512vl_condition>"
+ "@
+ unpcklpd\t%0, %0
+- %vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
+- [(set_attr "isa" "noavx,sse3")
++ %vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}
++ vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
++ [(set_attr "isa" "noavx,sse3,avx512vl")
+ (set_attr "type" "sselog1")
+- (set_attr "prefix" "orig,maybe_vex")
+- (set_attr "mode" "V2DF,DF")])
++ (set_attr "prefix" "orig,maybe_vex,evex")
++ (set_attr "mode" "V2DF,DF,DF")])
+
+ (define_insn "*vec_concatv2df"
+- [(set (match_operand:V2DF 0 "register_operand" "=x,v,v,x,x,v,x,x")
++ [(set (match_operand:V2DF 0 "register_operand" "=x,x,v,x,v,x,x,v,x,x")
+ (vec_concat:V2DF
+- (match_operand:DF 1 "nonimmediate_operand" " 0,v,m,0,x,m,0,0")
+- (match_operand:DF 2 "vector_move_operand" " x,v,1,m,m,C,x,m")))]
++ (match_operand:DF 1 "nonimmediate_operand" " 0,x,v,m,m,0,x,m,0,0")
++ (match_operand:DF 2 "vector_move_operand" " x,x,v,1,1,m,m,C,x,m")))]
+ "TARGET_SSE"
+ "@
+ unpcklpd\t{%2, %0|%0, %2}
+ vunpcklpd\t{%2, %1, %0|%0, %1, %2}
++ vunpcklpd\t{%2, %1, %0|%0, %1, %2}
+ %vmovddup\t{%1, %0|%0, %1}
++ vmovddup\t{%1, %0|%0, %1}
+ movhpd\t{%2, %0|%0, %2}
+ vmovhpd\t{%2, %1, %0|%0, %1, %2}
+ %vmovsd\t{%1, %0|%0, %1}
+ movlhps\t{%2, %0|%0, %2}
+ movhps\t{%2, %0|%0, %2}"
+- [(set_attr "isa" "sse2_noavx,avx,sse3,sse2_noavx,avx,sse2,noavx,noavx")
++ [(set_attr "isa" "sse2_noavx,avx,avx512vl,sse3,avx512vl,sse2_noavx,avx,sse2,noavx,noavx")
+ (set (attr "type")
+ (if_then_else
+- (eq_attr "alternative" "0,1,2")
++ (eq_attr "alternative" "0,1,2,3,4")
+ (const_string "sselog")
+ (const_string "ssemov")))
+- (set_attr "prefix_data16" "*,*,*,1,*,*,*,*")
+- (set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex,orig,orig")
+- (set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,DF,V4SF,V2SF")])
++ (set (attr "prefix_data16")
++ (if_then_else (eq_attr "alternative" "5")
++ (const_string "1")
++ (const_string "*")))
++ (set_attr "prefix" "orig,vex,evex,maybe_vex,evex,orig,vex,maybe_vex,orig,orig")
++ (set_attr "mode" "V2DF,V2DF,V2DF, DF, DF, V1DF,V1DF,DF,V4SF,V2SF")])
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;
+Index: gcc/config/i386/sync.md
+===================================================================
+--- a/src/gcc/config/i386/sync.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/i386/sync.md (.../branches/gcc-5-branch)
+@@ -105,11 +105,11 @@
+ [(match_operand:SI 0 "const_int_operand")] ;; model
+ ""
+ {
+- enum memmodel model = (enum memmodel) (INTVAL (operands[0]) & MEMMODEL_MASK);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[0]));
+
+ /* Unless this is a SEQ_CST fence, the i386 memory model is strong
+ enough not to require barriers of any kind. */
+- if (model == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ {
+ rtx (*mfence_insn)(rtx);
+ rtx mem;
+@@ -217,7 +217,7 @@
+ UNSPEC_STA))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) (INTVAL (operands[2]) & MEMMODEL_MASK);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+
+ if (<MODE>mode == DImode && !TARGET_64BIT)
+ {
+@@ -233,7 +233,7 @@
+ operands[1] = force_reg (<MODE>mode, operands[1]);
+
+ /* For seq-cst stores, when we lack MFENCE, use XCHG. */
+- if (model == MEMMODEL_SEQ_CST && !(TARGET_64BIT || TARGET_SSE2))
++ if (is_mm_seq_cst (model) && !(TARGET_64BIT || TARGET_SSE2))
+ {
+ emit_insn (gen_atomic_exchange<mode> (gen_reg_rtx (<MODE>mode),
+ operands[0], operands[1],
+@@ -246,7 +246,7 @@
+ operands[2]));
+ }
+ /* ... followed by an MFENCE, if required. */
+- if (model == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ emit_insn (gen_mem_thread_fence (operands[2]));
+ DONE;
+ })
Index: gcc/config/i386/i386.c
===================================================================
--- a/src/gcc/config/i386/i386.c (.../tags/gcc_5_2_0_release)
@@ -518950,6 +521200,33 @@ Index: gcc/config/i386/i386.c
rtx d = dst;
if (GET_MODE (dst) != dstmode)
d = gen_reg_rtx (dstmode);
+@@ -51516,7 +51526,7 @@
+ static unsigned HOST_WIDE_INT
+ ix86_memmodel_check (unsigned HOST_WIDE_INT val)
+ {
+- unsigned HOST_WIDE_INT model = val & MEMMODEL_MASK;
++ enum memmodel model = memmodel_from_int (val);
+ bool strong;
+
+ if (val & ~(unsigned HOST_WIDE_INT)(IX86_HLE_ACQUIRE|IX86_HLE_RELEASE
+@@ -51527,14 +51537,14 @@
+ "Unknown architecture specific memory model");
+ return MEMMODEL_SEQ_CST;
+ }
+- strong = (model == MEMMODEL_ACQ_REL || model == MEMMODEL_SEQ_CST);
+- if (val & IX86_HLE_ACQUIRE && !(model == MEMMODEL_ACQUIRE || strong))
++ strong = (is_mm_acq_rel (model) || is_mm_seq_cst (model));
++ if (val & IX86_HLE_ACQUIRE && !(is_mm_acquire (model) || strong))
+ {
+ warning (OPT_Winvalid_memory_model,
+ "HLE_ACQUIRE not used with ACQUIRE or stronger memory model");
+ return MEMMODEL_SEQ_CST | IX86_HLE_ACQUIRE;
+ }
+- if (val & IX86_HLE_RELEASE && !(model == MEMMODEL_RELEASE || strong))
++ if (val & IX86_HLE_RELEASE && !(is_mm_release (model) || strong))
+ {
+ warning (OPT_Winvalid_memory_model,
+ "HLE_RELEASE not used with RELEASE or stronger memory model");
Index: gcc/config/sh/sh.c
===================================================================
--- a/src/gcc/config/sh/sh.c (.../tags/gcc_5_2_0_release)
@@ -518962,6 +521239,19 @@ Index: gcc/config/sh/sh.c
&& !sh_unspec_insn_p (t_after_negc.insn)
&& !volatile_insn_p (PATTERN (t_after_negc.insn))
&& !side_effects_p (PATTERN (t_after_negc.insn))
+@@ -14162,6 +14163,12 @@
+ if (!can_create_pseudo_p ())
+ return false;
+
++ /* expand_debug_locations may call this to compute rtx costs at
++ very early stage. In that case, don't make new insns here to
++ avoid codegen differences with -g. */
++ if (currently_expanding_to_rtl)
++ return false;
++
+ /* We are going to invoke recog in a re-entrant way and thus
+ have to capture its current state and restore it afterwards. */
+ recog_data_d prev_recog_data = recog_data;
Index: gcc/config/sh/sh.md
===================================================================
--- a/src/gcc/config/sh/sh.md (.../tags/gcc_5_2_0_release)
@@ -518991,6 +521281,15 @@ Index: gcc/config/sh/sh.md
})
(define_insn "movdf_media"
+@@ -10579,7 +10597,7 @@
+ if (TARGET_SHMEDIA)
+ {
+ rtx tr = gen_rtx_REG (Pmode, TR0_REG);
+- rtx pic = operands[0];
++ rtx pic = operands[1];
+ rtx lab = PATTERN (gen_call_site ());
+ rtx insn, equiv;
+
Index: gcc/config/avr/avr-dimode.md
===================================================================
--- a/src/gcc/config/avr/avr-dimode.md (.../tags/gcc_5_2_0_release)
@@ -519015,6 +521314,240 @@ Index: gcc/config/avr/avr-dimode.md
"%~call __<extend_u>mulsidi3"
[(set_attr "adjust_len" "call")
(set_attr "cc" "clobber")])
+Index: gcc/config/ia64/ia64.c
+===================================================================
+--- a/src/gcc/config/ia64/ia64.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/ia64/ia64.c (.../branches/gcc-5-branch)
+@@ -2389,10 +2389,12 @@
+ {
+ case MEMMODEL_ACQ_REL:
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ emit_insn (gen_memory_barrier ());
+ /* FALLTHRU */
+ case MEMMODEL_RELAXED:
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ case MEMMODEL_CONSUME:
+ if (mode == SImode)
+ icode = CODE_FOR_fetchadd_acq_si;
+@@ -2400,6 +2402,7 @@
+ icode = CODE_FOR_fetchadd_acq_di;
+ break;
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ if (mode == SImode)
+ icode = CODE_FOR_fetchadd_rel_si;
+ else
+@@ -2426,8 +2429,7 @@
+ front half of the full barrier. The end half is the cmpxchg.rel.
+ For relaxed and release memory models, we don't need this. But we
+ also don't bother trying to prevent it either. */
+- gcc_assert (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_RELEASE
++ gcc_assert (is_mm_relaxed (model) || is_mm_release (model)
+ || MEM_VOLATILE_P (mem));
+
+ old_reg = gen_reg_rtx (DImode);
+@@ -2471,6 +2473,7 @@
+ {
+ case MEMMODEL_RELAXED:
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ case MEMMODEL_CONSUME:
+ switch (mode)
+ {
+@@ -2484,8 +2487,10 @@
+ break;
+
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ case MEMMODEL_ACQ_REL:
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ switch (mode)
+ {
+ case QImode: icode = CODE_FOR_cmpxchg_rel_qi; break;
+Index: gcc/config/ia64/sync.md
+===================================================================
+--- a/src/gcc/config/ia64/sync.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/ia64/sync.md (.../branches/gcc-5-branch)
+@@ -33,7 +33,7 @@
+ [(match_operand:SI 0 "const_int_operand" "")] ;; model
+ ""
+ {
+- if (INTVAL (operands[0]) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (memmodel_from_int (INTVAL (operands[0]))))
+ emit_insn (gen_memory_barrier ());
+ DONE;
+ })
+@@ -60,11 +60,11 @@
+ (match_operand:SI 2 "const_int_operand" "")] ;; model
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+
+ /* Unless the memory model is relaxed, we want to emit ld.acq, which
+ will happen automatically for volatile memories. */
+- gcc_assert (model == MEMMODEL_RELAXED || MEM_VOLATILE_P (operands[1]));
++ gcc_assert (is_mm_relaxed (model) || MEM_VOLATILE_P (operands[1]));
+ emit_move_insn (operands[0], operands[1]);
+ DONE;
+ })
+@@ -75,17 +75,17 @@
+ (match_operand:SI 2 "const_int_operand" "")] ;; model
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+
+ /* Unless the memory model is relaxed, we want to emit st.rel, which
+ will happen automatically for volatile memories. */
+- gcc_assert (model == MEMMODEL_RELAXED || MEM_VOLATILE_P (operands[0]));
++ gcc_assert (is_mm_relaxed (model) || MEM_VOLATILE_P (operands[0]));
+ emit_move_insn (operands[0], operands[1]);
+
+ /* Sequentially consistent stores need a subsequent MF. See
+ http://www.decadent.org.uk/pipermail/cpp-threads/2008-December/001952.html
+ for a discussion of why a MF is needed here, but not for atomic_load. */
+- if (model == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ emit_insn (gen_memory_barrier ());
+ DONE;
+ })
+@@ -101,7 +101,8 @@
+ (match_operand:SI 7 "const_int_operand" "")] ;; fail model
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[6]);
++ /* No need to distinquish __sync from __atomic, so get base value. */
++ enum memmodel model = memmodel_base (INTVAL (operands[6]));
+ rtx ccv = gen_rtx_REG (DImode, AR_CCV_REGNUM);
+ rtx dval, eval;
+
+@@ -200,7 +201,8 @@
+ (match_operand:SI 3 "const_int_operand" "")] ;; succ model
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[3]);
++ /* No need to distinquish __sync from __atomic, so get base value. */
++ enum memmodel model = memmodel_base (INTVAL (operands[3]));
+
+ switch (model)
+ {
+Index: gcc/config/aarch64/atomics.md
+===================================================================
+--- a/src/gcc/config/aarch64/atomics.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/aarch64/atomics.md (.../branches/gcc-5-branch)
+@@ -260,10 +260,8 @@
+ UNSPECV_LDA))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_RELEASE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model))
+ return "ldr<atomic_sfx>\t%<w>0, %1";
+ else
+ return "ldar<atomic_sfx>\t%<w>0, %1";
+@@ -278,10 +276,8 @@
+ UNSPECV_STL))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_ACQUIRE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_acquire (model))
+ return "str<atomic_sfx>\t%<w>1, %0";
+ else
+ return "stlr<atomic_sfx>\t%<w>1, %0";
+@@ -297,10 +293,8 @@
+ UNSPECV_LX)))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_RELEASE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model))
+ return "ldxr<atomic_sfx>\t%w0, %1";
+ else
+ return "ldaxr<atomic_sfx>\t%w0, %1";
+@@ -315,10 +309,8 @@
+ UNSPECV_LX))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_RELEASE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model))
+ return "ldxr\t%<w>0, %1";
+ else
+ return "ldaxr\t%<w>0, %1";
+@@ -335,10 +327,8 @@
+ UNSPECV_SX))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[3]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_ACQUIRE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[3]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_acquire (model))
+ return "stxr<atomic_sfx>\t%w0, %<w>2, %1";
+ else
+ return "stlxr<atomic_sfx>\t%w0, %<w>2, %1";
+@@ -349,8 +339,8 @@
+ [(match_operand:SI 0 "const_int_operand" "")]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[0]);
+- if (model != MEMMODEL_RELAXED && model != MEMMODEL_CONSUME)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[0]));
++ if (!(is_mm_relaxed (model) || is_mm_consume (model)))
+ emit_insn (gen_dmb (operands[0]));
+ DONE;
+ }
+@@ -373,8 +363,8 @@
+ UNSPEC_MB))]
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[1]);
+- if (model == MEMMODEL_ACQUIRE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[1]));
++ if (is_mm_acquire (model))
+ return "dmb\\tishld";
+ else
+ return "dmb\\tish";
+Index: gcc/config/aarch64/aarch64.md
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-5-branch)
+@@ -3971,6 +3971,16 @@
+ (mult:GPF
+ (neg:GPF (match_operand:GPF 1 "register_operand" "w"))
+ (match_operand:GPF 2 "register_operand" "w")))]
++ "TARGET_FLOAT && !flag_rounding_math"
++ "fnmul\\t%<s>0, %<s>1, %<s>2"
++ [(set_attr "type" "fmul<s>")]
++)
++
++(define_insn "*fnmul<mode>3"
++ [(set (match_operand:GPF 0 "register_operand" "=w")
++ (neg:GPF (mult:GPF
++ (match_operand:GPF 1 "register_operand" "w")
++ (match_operand:GPF 2 "register_operand" "w"))))]
+ "TARGET_FLOAT"
+ "fnmul\\t%<s>0, %<s>1, %<s>2"
+ [(set_attr "type" "fmul<s>")]
Index: gcc/config/aarch64/aarch64-elf-raw.h
===================================================================
--- a/src/gcc/config/aarch64/aarch64-elf-raw.h (.../tags/gcc_5_2_0_release)
@@ -519033,6 +521566,171 @@ Index: gcc/config/aarch64/aarch64-elf-raw.h
-maarch64elf%{mabi=ilp32*:32}%{mbig-endian:b}" \
CA53_ERR_835769_SPEC \
CA53_ERR_843419_SPEC
+Index: gcc/config/aarch64/aarch64.c
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-5-branch)
+@@ -5246,11 +5246,17 @@
+ if (speed)
+ {
+ /* Floating-point FMA/FMUL can also support negations of the
+- operands. */
+- if (GET_CODE (op0) == NEG)
+- op0 = XEXP (op0, 0);
+- if (GET_CODE (op1) == NEG)
+- op1 = XEXP (op1, 0);
++ operands, unless the rounding mode is upward or downward in
++ which case FNMUL is different than FMUL with operand negation. */
++ bool neg0 = GET_CODE (op0) == NEG;
++ bool neg1 = GET_CODE (op1) == NEG;
++ if (maybe_fma || !flag_rounding_math || (neg0 && neg1))
++ {
++ if (neg0)
++ op0 = XEXP (op0, 0);
++ if (neg1)
++ op1 = XEXP (op1, 0);
++ }
+
+ if (maybe_fma)
+ /* FMADD/FNMADD/FNMSUB/FMSUB. */
+@@ -5694,6 +5700,12 @@
+ *cost = rtx_cost (op0, NEG, 0, speed);
+ return true;
+ }
++ if (GET_CODE (op0) == MULT)
++ {
++ /* FNMUL. */
++ *cost = rtx_cost (op0, NEG, 0, speed);
++ return true;
++ }
+ if (speed)
+ /* FNEG. */
+ *cost += extra_cost->fp[mode == DFmode].neg;
+@@ -9020,8 +9032,8 @@
+ unlikely event of fail being ACQUIRE and succ being RELEASE we need to
+ promote succ to ACQ_REL so that we don't lose the acquire semantics. */
+
+- if (INTVAL (mod_f) == MEMMODEL_ACQUIRE
+- && INTVAL (mod_s) == MEMMODEL_RELEASE)
++ if (is_mm_acquire (memmodel_from_int (INTVAL (mod_f)))
++ && is_mm_release (memmodel_from_int (INTVAL (mod_s))))
+ mod_s = GEN_INT (MEMMODEL_ACQ_REL);
+
+ switch (mode)
+@@ -9066,6 +9078,23 @@
+ emit_insn (gen_rtx_SET (VOIDmode, bval, x));
+ }
+
++/* Emit a barrier, that is appropriate for memory model MODEL, at the end of a
++ sequence implementing an atomic operation. */
++
++static void
++aarch64_emit_post_barrier (enum memmodel model)
++{
++ const enum memmodel base_model = memmodel_base (model);
++
++ if (is_mm_sync (model)
++ && (base_model == MEMMODEL_ACQUIRE
++ || base_model == MEMMODEL_ACQ_REL
++ || base_model == MEMMODEL_SEQ_CST))
++ {
++ emit_insn (gen_mem_thread_fence (GEN_INT (MEMMODEL_SEQ_CST)));
++ }
++}
++
+ /* Split a compare and swap pattern. */
+
+ void
+@@ -9076,6 +9105,8 @@
+ bool is_weak;
+ rtx_code_label *label1, *label2;
+ rtx x, cond;
++ enum memmodel model;
++ rtx model_rtx;
+
+ rval = operands[0];
+ mem = operands[1];
+@@ -9082,8 +9113,10 @@
+ oldval = operands[2];
+ newval = operands[3];
+ is_weak = (operands[4] != const0_rtx);
++ model_rtx = operands[5];
+ scratch = operands[7];
+ mode = GET_MODE (mem);
++ model = memmodel_from_int (INTVAL (model_rtx));
+
+ label1 = NULL;
+ if (!is_weak)
+@@ -9093,7 +9126,13 @@
+ }
+ label2 = gen_label_rtx ();
+
+- aarch64_emit_load_exclusive (mode, rval, mem, operands[5]);
++ /* The initial load can be relaxed for a __sync operation since a final
++ barrier will be emitted to stop code hoisting. */
++ if (is_mm_sync (model))
++ aarch64_emit_load_exclusive (mode, rval, mem,
++ GEN_INT (MEMMODEL_RELAXED));
++ else
++ aarch64_emit_load_exclusive (mode, rval, mem, model_rtx);
+
+ cond = aarch64_gen_compare_reg (NE, rval, oldval);
+ x = gen_rtx_NE (VOIDmode, cond, const0_rtx);
+@@ -9101,7 +9140,7 @@
+ gen_rtx_LABEL_REF (Pmode, label2), pc_rtx);
+ aarch64_emit_unlikely_jump (gen_rtx_SET (VOIDmode, pc_rtx, x));
+
+- aarch64_emit_store_exclusive (mode, scratch, mem, newval, operands[5]);
++ aarch64_emit_store_exclusive (mode, scratch, mem, newval, model_rtx);
+
+ if (!is_weak)
+ {
+@@ -9118,6 +9157,10 @@
+ }
+
+ emit_label (label2);
++
++ /* Emit any final barrier needed for a __sync operation. */
++ if (is_mm_sync (model))
++ aarch64_emit_post_barrier (model);
+ }
+
+ /* Split an atomic operation. */
+@@ -9128,6 +9171,8 @@
+ {
+ machine_mode mode = GET_MODE (mem);
+ machine_mode wmode = (mode == DImode ? DImode : SImode);
++ const enum memmodel model = memmodel_from_int (INTVAL (model_rtx));
++ const bool is_sync = is_mm_sync (model);
+ rtx_code_label *label;
+ rtx x;
+
+@@ -9142,7 +9187,13 @@
+ old_out = new_out;
+ value = simplify_gen_subreg (wmode, value, mode, 0);
+
+- aarch64_emit_load_exclusive (mode, old_out, mem, model_rtx);
++ /* The initial load can be relaxed for a __sync operation since a final
++ barrier will be emitted to stop code hoisting. */
++ if (is_sync)
++ aarch64_emit_load_exclusive (mode, old_out, mem,
++ GEN_INT (MEMMODEL_RELAXED));
++ else
++ aarch64_emit_load_exclusive (mode, old_out, mem, model_rtx);
+
+ switch (code)
+ {
+@@ -9178,6 +9229,10 @@
+ x = gen_rtx_IF_THEN_ELSE (VOIDmode, x,
+ gen_rtx_LABEL_REF (Pmode, label), pc_rtx);
+ aarch64_emit_unlikely_jump (gen_rtx_SET (VOIDmode, pc_rtx, x));
++
++ /* Emit any final barrier needed for a __sync operation. */
++ if (is_sync)
++ aarch64_emit_post_barrier (model);
+ }
+
+ static void
Index: gcc/config/aarch64/aarch64-linux.h
===================================================================
--- a/src/gcc/config/aarch64/aarch64-linux.h (.../tags/gcc_5_2_0_release)
@@ -519049,6 +521747,784 @@ Index: gcc/config/aarch64/aarch64-linux.h
-X \
%{mbig-endian:-EB} %{mlittle-endian:-EL} \
-maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}"
+Index: gcc/config/rs6000/htm.md
+===================================================================
+--- a/src/gcc/config/rs6000/htm.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/rs6000/htm.md (.../branches/gcc-5-branch)
+@@ -48,7 +48,7 @@
+
+ (define_insn "tabort"
+ [(set (match_operand:CC 1 "cc_reg_operand" "=x")
+- (unspec_volatile:CC [(match_operand:SI 0 "gpc_reg_operand" "r")]
++ (unspec_volatile:CC [(match_operand:SI 0 "base_reg_operand" "b")]
+ UNSPECV_HTM_TABORT))]
+ "TARGET_HTM"
+ "tabort. %0"
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-5-branch)
+@@ -20537,12 +20537,15 @@
+ case MEMMODEL_RELAXED:
+ case MEMMODEL_CONSUME:
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ break;
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ case MEMMODEL_ACQ_REL:
+ emit_insn (gen_lwsync ());
+ break;
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ emit_insn (gen_hwsync ());
+ break;
+ default:
+@@ -20559,10 +20562,13 @@
+ case MEMMODEL_RELAXED:
+ case MEMMODEL_CONSUME:
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ break;
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ case MEMMODEL_ACQ_REL:
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ emit_insn (gen_isync ());
+ break;
+ default:
+@@ -20662,8 +20668,8 @@
+ oldval = operands[3];
+ newval = operands[4];
+ is_weak = (INTVAL (operands[5]) != 0);
+- mod_s = (enum memmodel) INTVAL (operands[6]);
+- mod_f = (enum memmodel) INTVAL (operands[7]);
++ mod_s = memmodel_from_int (INTVAL (operands[6]));
++ mod_f = memmodel_from_int (INTVAL (operands[7]));
+ orig_mode = mode = GET_MODE (mem);
+
+ mask = shift = NULL_RTX;
+@@ -20751,12 +20757,12 @@
+ emit_unlikely_jump (x, label1);
+ }
+
+- if (mod_f != MEMMODEL_RELAXED)
++ if (!is_mm_relaxed (mod_f))
+ emit_label (XEXP (label2, 0));
+
+ rs6000_post_atomic_barrier (mod_s);
+
+- if (mod_f == MEMMODEL_RELAXED)
++ if (is_mm_relaxed (mod_f))
+ emit_label (XEXP (label2, 0));
+
+ if (shift)
+Index: gcc/config/rs6000/sync.md
+===================================================================
+--- a/src/gcc/config/rs6000/sync.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/rs6000/sync.md (.../branches/gcc-5-branch)
+@@ -41,7 +41,7 @@
+ [(match_operand:SI 0 "const_int_operand" "")] ;; model
+ ""
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[0]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[0]));
+ switch (model)
+ {
+ case MEMMODEL_RELAXED:
+@@ -48,11 +48,14 @@
+ break;
+ case MEMMODEL_CONSUME:
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ case MEMMODEL_ACQ_REL:
+ emit_insn (gen_lwsync ());
+ break;
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ emit_insn (gen_hwsync ());
+ break;
+ default:
+@@ -144,9 +147,9 @@
+ if (<MODE>mode == TImode && !TARGET_SYNC_TI)
+ FAIL;
+
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+
+- if (model == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ emit_insn (gen_hwsync ());
+
+ if (<MODE>mode != TImode)
+@@ -182,7 +185,9 @@
+ break;
+ case MEMMODEL_CONSUME:
+ case MEMMODEL_ACQUIRE:
++ case MEMMODEL_SYNC_ACQUIRE:
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ emit_insn (gen_loadsync_<mode> (operands[0]));
+ break;
+ default:
+@@ -209,15 +214,17 @@
+ if (<MODE>mode == TImode && !TARGET_SYNC_TI)
+ FAIL;
+
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+ switch (model)
+ {
+ case MEMMODEL_RELAXED:
+ break;
+ case MEMMODEL_RELEASE:
++ case MEMMODEL_SYNC_RELEASE:
+ emit_insn (gen_lwsync ());
+ break;
+ case MEMMODEL_SEQ_CST:
++ case MEMMODEL_SYNC_SEQ_CST:
+ emit_insn (gen_hwsync ());
+ break;
+ default:
+Index: gcc/config/arm/arm.c
+===================================================================
+--- a/src/gcc/config/arm/arm.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-5-branch)
+@@ -10269,7 +10269,7 @@
+
+ *cost = COSTS_N_INSNS (1);
+
+- if (GET_CODE (op0) == NEG)
++ if (GET_CODE (op0) == NEG && !flag_rounding_math)
+ op0 = XEXP (op0, 0);
+
+ if (speed_p)
+@@ -10345,6 +10345,13 @@
+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
+ && (mode == SFmode || !TARGET_VFP_SINGLE))
+ {
++ if (GET_CODE (XEXP (x, 0)) == MULT)
++ {
++ /* VNMUL. */
++ *cost = rtx_cost (XEXP (x, 0), NEG, 0, speed_p);
++ return true;
++ }
++
+ *cost = COSTS_N_INSNS (1);
+ if (speed_p)
+ *cost += extra_cost->fp[mode != SFmode].neg;
+@@ -27678,8 +27685,8 @@
+ promote succ to ACQ_REL so that we don't lose the acquire semantics. */
+
+ if (TARGET_HAVE_LDACQ
+- && INTVAL (mod_f) == MEMMODEL_ACQUIRE
+- && INTVAL (mod_s) == MEMMODEL_RELEASE)
++ && is_mm_acquire (memmodel_from_int (INTVAL (mod_f)))
++ && is_mm_release (memmodel_from_int (INTVAL (mod_s))))
+ mod_s = GEN_INT (MEMMODEL_ACQ_REL);
+
+ switch (mode)
+@@ -27752,21 +27759,26 @@
+ oldval = operands[2];
+ newval = operands[3];
+ is_weak = (operands[4] != const0_rtx);
+- mod_s = (enum memmodel) INTVAL (operands[5]);
+- mod_f = (enum memmodel) INTVAL (operands[6]);
++ mod_s = memmodel_from_int (INTVAL (operands[5]));
++ mod_f = memmodel_from_int (INTVAL (operands[6]));
+ scratch = operands[7];
+ mode = GET_MODE (mem);
+
++ bool is_armv8_sync = arm_arch8 && is_mm_sync (mod_s);
++
+ bool use_acquire = TARGET_HAVE_LDACQ
+- && !(mod_s == MEMMODEL_RELAXED
+- || mod_s == MEMMODEL_CONSUME
+- || mod_s == MEMMODEL_RELEASE);
+-
++ && !(is_mm_relaxed (mod_s) || is_mm_consume (mod_s)
++ || is_mm_release (mod_s));
++
+ bool use_release = TARGET_HAVE_LDACQ
+- && !(mod_s == MEMMODEL_RELAXED
+- || mod_s == MEMMODEL_CONSUME
+- || mod_s == MEMMODEL_ACQUIRE);
++ && !(is_mm_relaxed (mod_s) || is_mm_consume (mod_s)
++ || is_mm_acquire (mod_s));
+
++ /* For ARMv8, the load-acquire is too weak for __sync memory orders. Instead,
++ a full barrier is emitted after the store-release. */
++ if (is_armv8_sync)
++ use_acquire = false;
++
+ /* Checks whether a barrier is needed and emits one accordingly. */
+ if (!(use_acquire || use_release))
+ arm_pre_atomic_barrier (mod_s);
+@@ -27803,14 +27815,15 @@
+ emit_unlikely_jump (gen_rtx_SET (VOIDmode, pc_rtx, x));
+ }
+
+- if (mod_f != MEMMODEL_RELAXED)
++ if (!is_mm_relaxed (mod_f))
+ emit_label (label2);
+
+ /* Checks whether a barrier is needed and emits one accordingly. */
+- if (!(use_acquire || use_release))
++ if (is_armv8_sync
++ || !(use_acquire || use_release))
+ arm_post_atomic_barrier (mod_s);
+
+- if (mod_f == MEMMODEL_RELAXED)
++ if (is_mm_relaxed (mod_f))
+ emit_label (label2);
+ }
+
+@@ -27818,22 +27831,27 @@
+ arm_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem,
+ rtx value, rtx model_rtx, rtx cond)
+ {
+- enum memmodel model = (enum memmodel) INTVAL (model_rtx);
++ enum memmodel model = memmodel_from_int (INTVAL (model_rtx));
+ machine_mode mode = GET_MODE (mem);
+ machine_mode wmode = (mode == DImode ? DImode : SImode);
+ rtx_code_label *label;
+ rtx x;
+
++ bool is_armv8_sync = arm_arch8 && is_mm_sync (model);
++
+ bool use_acquire = TARGET_HAVE_LDACQ
+- && !(model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_RELEASE);
++ && !(is_mm_relaxed (model) || is_mm_consume (model)
++ || is_mm_release (model));
+
+ bool use_release = TARGET_HAVE_LDACQ
+- && !(model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_ACQUIRE);
++ && !(is_mm_relaxed (model) || is_mm_consume (model)
++ || is_mm_acquire (model));
+
++ /* For ARMv8, a load-acquire is too weak for __sync memory orders. Instead,
++ a full barrier is emitted after the store-release. */
++ if (is_armv8_sync)
++ use_acquire = false;
++
+ /* Checks whether a barrier is needed and emits one accordingly. */
+ if (!(use_acquire || use_release))
+ arm_pre_atomic_barrier (model);
+@@ -27904,7 +27922,8 @@
+ emit_unlikely_jump (gen_cbranchsi4 (x, cond, const0_rtx, label));
+
+ /* Checks whether a barrier is needed and emits one accordingly. */
+- if (!(use_acquire || use_release))
++ if (is_armv8_sync
++ || !(use_acquire || use_release))
+ arm_post_atomic_barrier (model);
+ }
+
+Index: gcc/config/arm/vfp.md
+===================================================================
+--- a/src/gcc/config/arm/vfp.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/arm/vfp.md (.../branches/gcc-5-branch)
+@@ -770,6 +770,17 @@
+ [(set (match_operand:SF 0 "s_register_operand" "=t")
+ (mult:SF (neg:SF (match_operand:SF 1 "s_register_operand" "t"))
+ (match_operand:SF 2 "s_register_operand" "t")))]
++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP && !flag_rounding_math"
++ "vnmul%?.f32\\t%0, %1, %2"
++ [(set_attr "predicable" "yes")
++ (set_attr "predicable_short_it" "no")
++ (set_attr "type" "fmuls")]
++)
++
++(define_insn "*negmulsf3_vfp"
++ [(set (match_operand:SF 0 "s_register_operand" "=t")
++ (neg:SF (mult:SF (match_operand:SF 1 "s_register_operand" "t")
++ (match_operand:SF 2 "s_register_operand" "t"))))]
+ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
+ "vnmul%?.f32\\t%0, %1, %2"
+ [(set_attr "predicable" "yes")
+@@ -781,6 +792,18 @@
+ [(set (match_operand:DF 0 "s_register_operand" "=w")
+ (mult:DF (neg:DF (match_operand:DF 1 "s_register_operand" "w"))
+ (match_operand:DF 2 "s_register_operand" "w")))]
++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE
++ && !flag_rounding_math"
++ "vnmul%?.f64\\t%P0, %P1, %P2"
++ [(set_attr "predicable" "yes")
++ (set_attr "predicable_short_it" "no")
++ (set_attr "type" "fmuld")]
++)
++
++(define_insn "*negmuldf3_vfp"
++ [(set (match_operand:DF 0 "s_register_operand" "=w")
++ (neg:DF (mult:DF (match_operand:DF 1 "s_register_operand" "w")
++ (match_operand:DF 2 "s_register_operand" "w"))))]
+ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
+ "vnmul%?.f64\\t%P0, %P1, %P2"
+ [(set_attr "predicable" "yes")
+Index: gcc/config/arm/sync.md
+===================================================================
+--- a/src/gcc/config/arm/sync.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/arm/sync.md (.../branches/gcc-5-branch)
+@@ -73,10 +73,8 @@
+ VUNSPEC_LDA))]
+ "TARGET_HAVE_LDACQ"
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_RELEASE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model))
+ return \"ldr<sync_sfx>\\t%0, %1\";
+ else
+ return \"lda<sync_sfx>\\t%0, %1\";
+@@ -91,10 +89,8 @@
+ VUNSPEC_STL))]
+ "TARGET_HAVE_LDACQ"
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
+- if (model == MEMMODEL_RELAXED
+- || model == MEMMODEL_CONSUME
+- || model == MEMMODEL_ACQUIRE)
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_acquire (model))
+ return \"str<sync_sfx>\t%1, %0\";
+ else
+ return \"stl<sync_sfx>\t%1, %0\";
+@@ -110,10 +106,10 @@
+ (match_operand:SI 2 "const_int_operand")] ;; model
+ "TARGET_HAVE_LDREXD && ARM_DOUBLEWORD_ALIGN"
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+ expand_mem_thread_fence (model);
+ emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
+- if (model == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ expand_mem_thread_fence (model);
+ DONE;
+ })
+Index: gcc/config/pa/pa.md
+===================================================================
+--- a/src/gcc/config/pa/pa.md (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/pa/pa.md (.../branches/gcc-5-branch)
+@@ -707,12 +707,12 @@
+ (match_operand:SI 2 "const_int_operand")] ;; model
+ "!TARGET_64BIT && !TARGET_SOFT_FLOAT"
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+ operands[1] = force_reg (SImode, XEXP (operands[1], 0));
+ operands[2] = gen_reg_rtx (DImode);
+ expand_mem_thread_fence (model);
+ emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1], operands[2]));
+- if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ expand_mem_thread_fence (model);
+ DONE;
+ })
+@@ -734,12 +734,12 @@
+ (match_operand:SI 2 "const_int_operand")] ;; model
+ "!TARGET_64BIT && !TARGET_SOFT_FLOAT"
+ {
+- enum memmodel model = (enum memmodel) INTVAL (operands[2]);
++ enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
+ operands[0] = force_reg (SImode, XEXP (operands[0], 0));
+ operands[2] = gen_reg_rtx (DImode);
+ expand_mem_thread_fence (model);
+ emit_insn (gen_atomic_storedi_1 (operands[0], operands[1], operands[2]));
+- if ((model & MEMMODEL_MASK) == MEMMODEL_SEQ_CST)
++ if (is_mm_seq_cst (model))
+ expand_mem_thread_fence (model);
+ DONE;
+ })
+@@ -7516,7 +7516,6 @@
+ (define_insn "call_reg_64bit"
+ [(call (mem:SI (match_operand:DI 0 "register_operand" "r"))
+ (match_operand 1 "" "i"))
+- (clobber (reg:DI 1))
+ (clobber (reg:DI 2))
+ (clobber (match_operand 2))
+ (use (reg:DI 27))
+@@ -7537,7 +7536,6 @@
+ (define_split
+ [(parallel [(call (mem:SI (match_operand 0 "register_operand" ""))
+ (match_operand 1 "" ""))
+- (clobber (reg:DI 1))
+ (clobber (reg:DI 2))
+ (clobber (match_operand 2))
+ (use (reg:DI 27))
+@@ -7548,7 +7546,6 @@
+ [(set (match_dup 2) (reg:DI 27))
+ (parallel [(call (mem:SI (match_dup 0))
+ (match_dup 1))
+- (clobber (reg:DI 1))
+ (clobber (reg:DI 2))
+ (use (reg:DI 27))
+ (use (reg:DI 29))
+@@ -7558,7 +7555,6 @@
+ (define_split
+ [(parallel [(call (mem:SI (match_operand 0 "register_operand" ""))
+ (match_operand 1 "" ""))
+- (clobber (reg:DI 1))
+ (clobber (reg:DI 2))
+ (clobber (match_operand 2))
+ (use (reg:DI 27))
+@@ -7568,7 +7564,6 @@
+ [(set (match_dup 2) (reg:DI 27))
+ (parallel [(call (mem:SI (match_dup 0))
+ (match_dup 1))
+- (clobber (reg:DI 1))
+ (clobber (reg:DI 2))
+ (use (reg:DI 27))
+ (use (reg:DI 29))
+@@ -7579,7 +7574,6 @@
+ (define_insn "*call_reg_64bit_post_reload"
+ [(call (mem:SI (match_operand:DI 0 "register_operand" "r"))
+ (match_operand 1 "" "i"))
+- (clobber (reg:DI 1))
+ (clobber (reg:DI 2))
+ (use (reg:DI 27))
+ (use (reg:DI 29))
+Index: gcc/config/mips/mips.c
+===================================================================
+--- a/src/gcc/config/mips/mips.c (.../tags/gcc_5_2_0_release)
++++ b/src/gcc/config/mips/mips.c (.../branches/gcc-5-branch)
+@@ -13111,7 +13111,7 @@
+ model = MEMMODEL_ACQUIRE;
+ break;
+ default:
+- model = (enum memmodel) INTVAL (operands[memmodel_attr]);
++ model = memmodel_from_int (INTVAL (operands[memmodel_attr]));
+ }
+
+ mips_multi_start ();
+Index: libgo/Makefile.in
+===================================================================
+--- a/src/libgo/Makefile.in (.../tags/gcc_5_2_0_release)
++++ b/src/libgo/Makefile.in (.../branches/gcc-5-branch)
+@@ -1848,6 +1848,10 @@
+
+ # Define socket sizes and types.
+ @LIBGO_IS_LINUX_TRUE@syscall_socket_file = go/syscall/socket_linux.go epoll.go
++@LIBGO_IS_LINUX_FALSE@syscall_socket_type_file =
++@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_FALSE@@LIBGO_IS_PPC64_FALSE@syscall_socket_type_file = go/syscall/socket_linux_type.go
++@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_FALSE@@LIBGO_IS_PPC64_TRUE@syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
++@LIBGO_IS_LINUX_TRUE@@LIBGO_IS_PPC64LE_TRUE@syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
+ @LIBGO_IS_SOLARIS_FALSE@syscall_socket_os_file = go/syscall/socket_posix.go
+
+ # Define socket functions.
+@@ -1898,6 +1902,7 @@
+ $(syscall_size_file) \
+ $(syscall_socket_file) \
+ $(syscall_socket_os_file) \
++ $(syscall_socket_type_file) \
+ $(syscall_uname_file) \
+ $(syscall_netlink_file) \
+ $(syscall_lsf_file) \
+Index: libgo/mksysinfo.sh
+===================================================================
+--- a/src/libgo/mksysinfo.sh (.../tags/gcc_5_2_0_release)
++++ b/src/libgo/mksysinfo.sh (.../branches/gcc-5-branch)
+@@ -201,6 +201,67 @@
+ #ifdef TCSETS
+ TCSETS_val = TCSETS,
+ #endif
++#ifdef TUNSETIFF
++ TUNSETIFF_val = TUNSETIFF,
++#endif
++#ifdef TUNSETNOCSUM
++ TUNSETNOCSUM_val = TUNSETNOCSUM,
++#endif
++#ifdef TUNSETDEBUG
++ TUNSETDEBUG_val = TUNSETDEBUG,
++#endif
++#ifdef TUNSETPERSIST
++ TUNSETPERSIST_val = TUNSETPERSIST,
++#endif
++#ifdef TUNSETOWNER
++ TUNSETOWNER_val = TUNSETOWNER,
++#endif
++#ifdef TUNSETLINK
++ TUNSETLINK_val = TUNSETLINK,
++#endif
++#ifdef TUNSETGROUP
++ TUNSETGROUP_val = TUNSETGROUP,
++#endif
++#ifdef TUNGETFEATURES
++ TUNGETFEATURES_val = TUNGETFEATURES,
++#endif
++#ifdef TUNSETOFFLOAD
++ TUNSETOFFLOAD_val = TUNSETOFFLOAD,
++#endif
++#ifdef TUNSETTXFILTER
++ TUNSETTXFILTER_val = TUNSETTXFILTER,
++#endif
++#ifdef TUNGETIFF
++ TUNGETIFF_val = TUNGETIFF,
++#endif
++#ifdef TUNGETSNDBUF
++ TUNGETSNDBUF_val = TUNGETSNDBUF,
++#endif
++#ifdef TUNSETSNDBUF
++ TUNSETSNDBUF_val = TUNSETSNDBUF,
++#endif
++#ifdef TUNATTACHFILTER
++ TUNATTACHFILTER_val = TUNATTACHFILTER,
++#endif
++#ifdef TUNDETACHFILTER
++ TUNDETACHFILTER_val = TUNDETACHFILTER,
++#endif
++#ifdef TUNGETVNETHDRSZ
++ TUNGETVNETHDRSZ_val = TUNGETVNETHDRSZ,
++#endif
++#ifdef TUNSETVNETHDRSZ
++ TUNSETVNETHDRSZ_val = TUNSETVNETHDRSZ,
++#endif
++#ifdef TUNSETQUEUE
++ TUNSETQUEUE_val = TUNSETQUEUE,
++#endif
++#ifdef TUNSETIFINDEX
++ TUNSETIFINDEX_val = TUNSETIFINDEX,
++#endif
++#ifdef TUNGETFILTER
++ TUNGETFILTER_val = TUNGETFILTER,
++#endif
++
+ };
+ EOF
+
+@@ -830,6 +891,9 @@
+ grep '^const _TIOC' gen-sysinfo.go | \
+ grep -v '_val =' | \
+ sed -e 's/^\(const \)_\(TIOC[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
++grep '^const _TUNSET' gen-sysinfo.go | \
++ grep -v '_val =' | \
++ sed -e 's/^\(const \)_\(TUNSET[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+ # We need TIOCGWINSZ.
+ if ! grep '^const TIOCGWINSZ' ${OUT} >/dev/null 2>&1; then
+ if grep '^const _TIOCGWINSZ_val' ${OUT} >/dev/null 2>&1; then
+@@ -872,6 +936,129 @@
+ fi
+ fi
+
++if ! grep '^const TUNSETNOCSUM' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETNOCSUM_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETNOCSUM = _TUNSETNOCSUM_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETDEBUG' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETDEBUG_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETDEBUG = _TUNSETDEBUG_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETIFF' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETIFF_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETIFF = _TUNSETIFF_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETPERSIST' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETPERSIST_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETPERSIST = _TUNSETPERSIST_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETOWNER' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETOWNER_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETOWNER = _TUNSETOWNER_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETLINK' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETLINK_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETLINK = _TUNSETLINK_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETGROUP' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETGROUP_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETGROUP = _TUNSETGROUP_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNGETFEATURES' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNGETFEATURES_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNGETFEATURES = _TUNGETFEATURES_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETOFFLOAD' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETOFFLOAD_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETOFFLOAD = _TUNSETOFFLOAD_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETTXFILTER' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETTXFILTER_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETTXFILTER = _TUNSETTXFILTER_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNGETIFF' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNGETIFF_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNGETIFF = _TUNGETIFF_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNGETSNDBUF' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNGETSNDBUF_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNGETSNDBUF = _TUNGETSNDBUF_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETSNDBUF' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETSNDBUF_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETSNDBUF = _TUNSETSNDBUF_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNATTACHFILTER' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNATTACHFILTER_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNATTACHFILTER = _TUNATTACHFILTER_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNDETACHFILTER' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNDETACHFILTER_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNDETACHFILTER = _TUNDETACHFILTER_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNGETVNETHDRSZ' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNGETVNETHDRSZ_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNGETVNETHDRSZ = _TUNGETVNETHDRSZ_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETVNETHDRSZ' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETVNETHDRSZ_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETVNETHDRSZ = _TUNSETVNETHDRSZ_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNSETQUEUE' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETQUEUE_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETQUEUE = _TUNSETQUEUE_val' >> ${OUT}
++ fi
++fi
++
++
++if ! grep '^const TUNSETIFINDEX' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNSETIFINDEX_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNSETIFINDEX = _TUNSETIFINDEX_val' >> ${OUT}
++ fi
++fi
++
++if ! grep '^const TUNGETFILTER' ${OUT} >/dev/null 2>&1; then
++ if grep '^const _TUNGETFILTER_val' ${OUT} >/dev/null 2>&1; then
++ echo 'const TUNGETFILTER = _TUNGETFILTER_val' >> ${OUT}
++ fi
++fi
++
++
++
+ # The ioctl flags for terminal control
+ grep '^const _TC[GS]ET' gen-sysinfo.go | grep -v _val | \
+ sed -e 's/^\(const \)_\(TC[GS]ET[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+Index: libgo/go/syscall/socket_linux_ppc64x_type.go
+===================================================================
+--- a/src/libgo/go/syscall/socket_linux_ppc64x_type.go (.../tags/gcc_5_2_0_release)
++++ b/src/libgo/go/syscall/socket_linux_ppc64x_type.go (.../branches/gcc-5-branch)
+@@ -0,0 +1,14 @@
++// socket_linux_ppc64x_type.go -- Socket handling specific to ppc64 GNU/Linux.
++
++// Copyright 2015 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package syscall
++
++// Type needed on ppc64le & ppc64
++
++type RawSockaddr struct {
++ Family uint16
++ Data [14]uint8
++}
+Index: libgo/go/syscall/socket_linux_type.go
+===================================================================
+--- a/src/libgo/go/syscall/socket_linux_type.go (.../tags/gcc_5_2_0_release)
++++ b/src/libgo/go/syscall/socket_linux_type.go (.../branches/gcc-5-branch)
+@@ -0,0 +1,14 @@
++// socket_linux_type.go -- Socket handling specific to GNU/Linux.
++
++// Copyright 2015 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++package syscall
++
++// Type needed if not on ppc64le or ppc64
++
++type RawSockaddr struct {
++ Family uint16
++ Data [14]int8
++}
+Index: libgo/go/syscall/socket_linux.go
+===================================================================
+--- a/src/libgo/go/syscall/socket_linux.go (.../tags/gcc_5_2_0_release)
++++ b/src/libgo/go/syscall/socket_linux.go (.../branches/gcc-5-branch)
+@@ -136,11 +136,6 @@
+ Groups uint32
+ }
+
+-type RawSockaddr struct {
+- Family uint16
+- Data [14]int8
+-}
+-
+ // BindToDevice binds the socket associated with fd to device.
+ func BindToDevice(fd int, device string) (err error) {
+ return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)
+Index: libgo/Makefile.am
+===================================================================
+--- a/src/libgo/Makefile.am (.../tags/gcc_5_2_0_release)
++++ b/src/libgo/Makefile.am (.../branches/gcc-5-branch)
+@@ -1676,7 +1676,17 @@
+ # Define socket sizes and types.
+ if LIBGO_IS_LINUX
+ syscall_socket_file = go/syscall/socket_linux.go epoll.go
++if LIBGO_IS_PPC64LE
++syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
+ else
++if LIBGO_IS_PPC64
++syscall_socket_type_file = go/syscall/socket_linux_ppc64x_type.go
++else
++syscall_socket_type_file = go/syscall/socket_linux_type.go
++endif
++endif
++else
++syscall_socket_type_file =
+ if LIBGO_IS_SOLARIS
+ syscall_socket_file = go/syscall/socket_solaris.go
+ else
+@@ -1762,6 +1772,7 @@
+ $(syscall_size_file) \
+ $(syscall_socket_file) \
+ $(syscall_socket_os_file) \
++ $(syscall_socket_type_file) \
+ $(syscall_uname_file) \
+ $(syscall_netlink_file) \
+ $(syscall_lsf_file) \
Index: libgfortran/ChangeLog
===================================================================
--- a/src/libgfortran/ChangeLog (.../tags/gcc_5_2_0_release)
@@ -519354,7 +522830,11 @@ Index: libcpp/po/ChangeLog
===================================================================
--- a/src/libcpp/po/ChangeLog (.../tags/gcc_5_2_0_release)
+++ b/src/libcpp/po/ChangeLog (.../branches/gcc-5-branch)
-@@ -1,3 +1,7 @@
+@@ -1,3 +1,11 @@
++2015-07-31 Joseph Myers <joseph@codesourcery.com>
++
++ * sv.po: Update.
++
+2015-07-24 Joseph Myers <joseph@codesourcery.com>
+
+ * nl.po: Update.
@@ -519362,3 +522842,29 @@ Index: libcpp/po/ChangeLog
2015-07-16 Release Manager
* GCC 5.2.0 released.
+Index: libcpp/po/sv.po
+===================================================================
+--- a/src/libcpp/po/sv.po (.../tags/gcc_5_2_0_release)
++++ b/src/libcpp/po/sv.po (.../branches/gcc-5-branch)
+@@ -8,10 +8,10 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: cpplib 5.1.0\n"
++"Project-Id-Version: cpplib 5.2.0\n"
+ "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
+ "POT-Creation-Date: 2015-04-13 20:12+0000\n"
+-"PO-Revision-Date: 2015-05-01 14:05+0200\n"
++"PO-Revision-Date: 2015-07-30 10:21+0200\n"
+ "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
+ "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+ "Language: sv\n"
+@@ -533,7 +533,7 @@
+
+ #: expr.c:1086
+ msgid "assertions are a deprecated extension"
+-msgstr "försäkringar är en GCC-utvidgning som avrådes ifrån"
++msgstr "försäkringar är en utvidgning som avrådes ifrån"
+
+ #: expr.c:1331
+ #, c-format