]> git.pld-linux.org Git - packages/gcc.git/blobdiff - gcc-branch.diff
- package libitm.
[packages/gcc.git] / gcc-branch.diff
index 0bde537de87145d2b2269b37e0fd685b1b8ef39b..2b5c76b0f454519c59fb46a6a6c541c901100b4c 100644 (file)
-Index: gcc/optabs.c
+Index: libgomp/ChangeLog
 ===================================================================
---- gcc/optabs.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/optabs.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -7033,6 +7033,7 @@
-   if (icode == CODE_FOR_nothing)
-     return NULL_RTX;
-+  do_pending_stack_adjust ();
-   do
-     {
-       start_sequence ();
-Index: gcc/DATESTAMP
-===================================================================
---- gcc/DATESTAMP      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/DATESTAMP      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1 +1 @@
--20100731
-+20100829
-Index: gcc/postreload.c
-===================================================================
---- gcc/postreload.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/postreload.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -810,7 +810,7 @@
-         rtx reg = SET_DEST (set);
-         rtx plus = SET_SRC (set);
-         rtx base = XEXP (plus, 1);
--        rtx prev = prev_nonnote_insn (insn);
-+        rtx prev = prev_nonnote_nondebug_insn (insn);
-         rtx prev_set = prev ? single_set (prev) : NULL_RTX;
-         unsigned int regno = REGNO (reg);
-         rtx index_reg = NULL_RTX;
-@@ -1323,7 +1323,7 @@
-                      && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg),
-                                                reg_mode[REGNO (src)]))
-               {
--                rtx next = next_nonnote_insn (insn);
-+                rtx next = next_nonnote_nondebug_insn (insn);
-                 rtx set = NULL_RTX;
-                 if (next)
-                   set = single_set (next);
-Index: gcc/rtlanal.c
+--- libgomp/ChangeLog  (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libgomp/ChangeLog  (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,8 @@
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
++
++      PR middle-end/52547
++      * testsuite/libgomp.c/pr52547.c: New test.
++
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: libgomp/testsuite/libgomp.c/pr52547.c
 ===================================================================
---- gcc/rtlanal.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/rtlanal.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -4755,9 +4755,7 @@
-        stop if it isn't a single set or if it has a REG_INC note because
-        we don't want to bother dealing with it.  */
--      do
--      prev = prev_nonnote_insn (prev);
--      while (prev && DEBUG_INSN_P (prev));
-+      prev = prev_nonnote_nondebug_insn (prev);
-       if (prev == 0
-         || !NONJUMP_INSN_P (prev)
-Index: gcc/fold-const.c
+--- libgomp/testsuite/libgomp.c/pr52547.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ libgomp/testsuite/libgomp.c/pr52547.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,36 @@
++/* PR middle-end/52547 */
++/* { dg-do run } */
++
++extern void abort (void);
++
++__attribute__((noinline, noclone)) int
++baz (int *x, int (*fn) (int *))
++{
++  return fn (x);
++}
++
++__attribute__((noinline, noclone)) int
++foo (int x, int *y)
++{
++  int i, e = 0;
++#pragma omp parallel for reduction(|:e)
++  for (i = 0; i < x; ++i)
++    {
++      __label__ lab;
++      int bar (int *z) { return z - y; }
++      if (baz (&y[i], bar) != i)
++      e |= 1;
++    }
++  return e;
++}
++
++int
++main ()
++{
++  int a[100], i;
++  for (i = 0; i < 100; i++)
++    a[i] = i;
++  if (foo (100, a))
++    abort ();
++  return 0;
++}
+Index: libstdc++-v3/include/Makefile.in
+===================================================================
+--- libstdc++-v3/include/Makefile.in   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/include/Makefile.in   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1497,7 +1497,7 @@
+       sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
+       -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
+       -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
+-      -e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
++      -e "s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
+       -e "$$ldbl_compat" \
+           < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
+       sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
+Index: libstdc++-v3/include/debug/safe_iterator.h
+===================================================================
+--- libstdc++-v3/include/debug/safe_iterator.h (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/include/debug/safe_iterator.h (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,6 +1,6 @@
+ // Safe iterator implementation  -*- C++ -*-
+-// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011
++// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+@@ -169,7 +169,25 @@
+                             ._M_iterator(__x, "other"));
+       }
++#ifdef __GXX_EXPERIMENTAL_CXX0X__
+       /**
++       * @brief Move construction.
++       * @post __x is singular and unattached
++       */
++      _Safe_iterator(_Safe_iterator&& __x) : _M_current()
++      {
++      _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
++                            || __x._M_current == _Iterator(),
++                            _M_message(__msg_init_copy_singular)
++                            ._M_iterator(*this, "this")
++                            ._M_iterator(__x, "other"));
++      std::swap(_M_current, __x._M_current);
++      this->_M_attach(__x._M_sequence);
++      __x._M_detach();
++      }
++#endif
++
++      /**
+        *  @brief Converting constructor from a mutable iterator to a
+        *  constant iterator.
+       */
+@@ -208,7 +226,28 @@
+       return *this;
+       }
++#ifdef __GXX_EXPERIMENTAL_CXX0X__
+       /**
++       * @brief Move assignment.
++       * @post __x is singular and unattached
++       */
++      _Safe_iterator&
++      operator=(_Safe_iterator&& __x)
++      {
++      _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
++                            || __x._M_current == _Iterator(),
++                            _M_message(__msg_copy_singular)
++                            ._M_iterator(*this, "this")
++                            ._M_iterator(__x, "other"));
++      _M_current = __x._M_current;
++      _M_attach(__x._M_sequence);
++      __x._M_detach();
++      __x._M_current = _Iterator();
++      return *this;
++      }
++#endif
++
++      /**
+        *  @brief Iterator dereference.
+        *  @pre iterator is dereferenceable
+        */
+@@ -422,7 +461,9 @@
+       /// Is this iterator equal to the sequence's before_begin() iterator if
+       /// any?
+       bool _M_is_before_begin() const
+-      { return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence()); }
++      {
++      return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence());
++      }
+     };
+   template<typename _IteratorL, typename _IteratorR, typename _Sequence>
+Index: libstdc++-v3/include/std/array
 ===================================================================
---- gcc/fold-const.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fold-const.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -4737,9 +4737,9 @@
-         n_high = range_binop (MINUS_EXPR, exp_type,
-                               build_int_cst (exp_type, 0),
-                               0, low, 0);
--        low = n_low, high = n_high;
--        exp = arg0;
--        continue;
-+        if (n_high != 0 && TREE_OVERFLOW (n_high))
-+          break;
-+        goto normalize;
-       case BIT_NOT_EXPR:
-         /* ~ X -> -X - 1  */
-@@ -4773,6 +4773,7 @@
-         if (TYPE_OVERFLOW_UNDEFINED (arg0_type))
-           *strict_overflow_p = true;
-+      normalize:
-         /* Check for an unsigned range which has wrapped around the maximum
-            value thus making n_high < n_low, and normalize it.  */
-         if (n_low && n_high && tree_int_cst_lt (n_high, n_low))
-Index: gcc/DEV-PHASE
+--- libstdc++-v3/include/std/array     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/include/std/array     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,6 +1,7 @@
+ // <array> -*- C++ -*-
+-// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
++// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -174,8 +175,9 @@
+       const_reference
+       at(size_type __n) const
+       {
+-      return __n < _Nm ?
+-             _M_instance[__n] : __throw_out_of_range(__N("array::at"));
++      if (__n >= _Nm)
++        std::__throw_out_of_range(__N("array::at"));
++      return _M_instance[__n];
+       }
+ #endif
+Index: libstdc++-v3/include/bits/forward_list.h
 ===================================================================
---- gcc/DEV-PHASE      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/DEV-PHASE      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1 @@
-+prerelease
-Index: gcc/ChangeLog
+--- libstdc++-v3/include/bits/forward_list.h   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/include/bits/forward_list.h   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,6 +1,6 @@
+ // <forward_list.h> -*- C++ -*-
+-// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
++// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -606,8 +606,8 @@
+        *  in the range [@a __first,@a __last).
+        *
+        *  Note that the assignment completely changes the %forward_list and
+-       *  that the resulting %forward_list's size is the same as the number
+-       *  of elements assigned.  Old data may be lost.
++       *  that the number of elements of the resulting %forward_list's is the
++       *  same as the number of elements assigned.  Old data is lost.
+        */
+       template<typename _InputIterator>
+         void
+@@ -622,10 +622,10 @@
+        *  @param  __n  Number of elements to be assigned.
+        *  @param  __val  Value to be assigned.
+        *
+-       *  This function fills a %forward_list with @a __n copies of the given
+-       *  value.  Note that the assignment completely changes the
+-       *  %forward_list and that the resulting %forward_list's size is the
+-       *  same as the number of elements assigned.  Old data may be lost.
++       *  This function fills a %forward_list with @a __n copies of the
++       *  given value.  Note that the assignment completely changes the
++       *  %forward_list, and that the resulting %forward_list has __n
++       *  elements.  Old data is lost.
+        */
+       void
+       assign(size_type __n, const _Tp& __val)
+@@ -744,7 +744,7 @@
+       { return this->_M_impl._M_head._M_next == 0; }
+       /**
+-       *  Returns the largest possible size of %forward_list.
++       *  Returns the largest possible number of elements of %forward_list.
+        */
+       size_type
+       max_size() const noexcept
+@@ -997,9 +997,9 @@
+        *
+        *  This function will %resize the %forward_list to the specified
+        *  number of elements.  If the number is smaller than the
+-       *  %forward_list's current size the %forward_list is truncated,
+-       *  otherwise the %forward_list is extended and the new elements
+-       *  are default constructed.
++       *  %forward_list's current number of elements the %forward_list
++       *  is truncated, otherwise the %forward_list is extended and the
++       *  new elements are default constructed.
+        */
+       void
+       resize(size_type __sz);
+@@ -1012,9 +1012,9 @@
+        *
+        *  This function will %resize the %forward_list to the specified
+        *  number of elements.  If the number is smaller than the
+-       *  %forward_list's current size the %forward_list is truncated,
+-       *  otherwise the %forward_list is extended and new elements are
+-       *  populated with given data.
++       *  %forward_list's current number of elements the %forward_list
++       *  is truncated, otherwise the %forward_list is extended and new
++       *  elements are populated with given data.
+        */
+       void
+       resize(size_type __sz, const value_type& __val);
+@@ -1240,11 +1240,11 @@
+    *  @brief  Forward list equality comparison.
+    *  @param  __lx  A %forward_list
+    *  @param  __ly  A %forward_list of the same type as @a __lx.
+-   *  @return  True iff the size and elements of the forward lists are equal.
++   *  @return  True iff the elements of the forward lists are equal.
+    *
+-   *  This is an equivalence relation.  It is linear in the size of the
+-   *  forward lists.  Deques are considered equivalent if corresponding
+-   *  elements compare equal.
++   *  This is an equivalence relation.  It is linear in the number of 
++   *  elements of the forward lists.  Deques are considered equivalent
++   *  if corresponding elements compare equal.
+    */
+   template<typename _Tp, typename _Alloc>
+     bool
+@@ -1257,8 +1257,9 @@
+    *  @param  __ly  A %forward_list of the same type as @a __lx.
+    *  @return  True iff @a __lx is lexicographically less than @a __ly.
+    *
+-   *  This is a total ordering relation.  It is linear in the size of the
+-   *  forward lists.  The elements must be comparable with @c <.
++   *  This is a total ordering relation.  It is linear in the number of 
++   *  elements of the forward lists.  The elements must be comparable
++   *  with @c <.
+    *
+    *  See std::lexicographical_compare() for how the determination is made.
+    */
+Index: libstdc++-v3/include/Makefile.am
+===================================================================
+--- libstdc++-v3/include/Makefile.am   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/include/Makefile.am   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,7 +1,7 @@
+ ## Makefile for the include subdirectory of the GNU C++ Standard library.
+ ##
+ ## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+-## 2011
++## 2011, 2012
+ ## Free Software Foundation, Inc.
+ ##
+ ## This file is part of the libstdc++ version 3 distribution.
+@@ -1105,7 +1105,7 @@
+       sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
+       -e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
+       -e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
+-      -e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
++      -e "s,define _GLIBCXX_EXTERN_TEMPLATE$$, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
+       -e "$$ldbl_compat" \
+           < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
+       sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
+Index: libstdc++-v3/ChangeLog
 ===================================================================
---- gcc/ChangeLog      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/ChangeLog      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,3 +1,244 @@
-+2010-08-28  Eric Botcazou  <ebotcazou@adacore.com>
+--- libstdc++-v3/ChangeLog     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/ChangeLog     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,30 @@
++2012-03-23  David S. Miller  <davem@davemloft.net>
++
++      * config/abi/post/sparc-linux-gnu/baseline_symbols.txt: Update.
++
++2012-03-23  Paolo Carlini  <paolo.carlini@oracle.com>
++
++      * include/bits/forward_list.h: Fix comments.
 +
-+      * config/ia64/ia64.md (cstorebi4): Fix thinko.
++2012-03-23  Paweł Sikora  <pawel.sikora@agmk.net>
 +
-+2010-08-28  Uros Bizjak  <ubizjak@gmail.com>
++      PR libstdc++/52540
++      * include/Makefile.am (c++config.h): Fix sed rule to not break
++      the _GLIBCXX_EXTERN_TEMPLATE redefinition.
++      * include/Makefile.in: Regenerate.
 +
-+      PR target/41484
-+      * config/i386/sse.md (sse4_1_extendv8qiv8hi2): Also accept memory
-+      operands for operand 1.
-+      (sse4_1_extendv4qiv4si2): Ditto.
-+      (sse4_1_extendv2qiv2di2): Ditto.
-+      (sse4_1_extendv4hiv4si2): Ditto.
-+      (sse4_1_extendv2hiv2di2): Ditto.
-+      (sse4_1_extendv2siv2di2): Ditto.
-+      (sse4_1_zero_extendv8qiv8hi2): Ditto.
-+      (sse4_1_zero_extendv4qiv4si2): Ditto.
-+      (sse4_1_zero_extendv2qiv2di2): Ditto.
-+      (sse4_1_zero_extendv4hiv4si2): Ditto.
-+      (sse4_1_zero_extendv2hiv2di2): Ditto.
-+      (sse4_1_zero_extendv2siv2di2): Ditto.
-+      (*sse4_1_extendv8qiv8hi2): Remove insn pattern.
-+      (*sse4_1_extendv4qiv4si2): Ditto.
-+      (*sse4_1_extendv2qiv2di2): Ditto.
-+      (*sse4_1_extendv4hiv4si2): Ditto.
-+      (*sse4_1_extendv2hiv2di2): Ditto.
-+      (*sse4_1_extendv2siv2di2): Ditto.
-+      (*sse4_1_zero_extendv8qiv8hi2): Ditto.
-+      (*sse4_1_zero_extendv4qiv4si2): Ditto.
-+      (*sse4_1_zero_extendv2qiv2di2): Ditto.
-+      (*sse4_1_zero_extendv4hiv4si2): Ditto.
-+      (*sse4_1_zero_extendv2hiv2di2): Ditto.
-+      (*sse4_1_zero_extendv2siv2di2): Ditto.
++2012-03-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
 +
-+2010-08-25  Jakub Jelinek  <jakub@redhat.com>
++      PR libstdc++/52433
++      * include/debug/safe_iterator.h (_Safe_iterator): Add move
++      constructor and move assignment operator.
++      * testsuite/23_containers/vector/debug/52433.cc: New.
++
++2012-03-22  Paolo Carlini  <paolo.carlini@oracle.com>
++
++      * include/std/array (array<>::at(size_type) const): Fix version
++      for undefined __EXCEPTIONS.
++
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
+===================================================================
+--- libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,43 @@
++// Copyright (C) 2012 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++//
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++//
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++//
++// { dg-require-debug-mode "" }
++// { dg-options "-std=gnu++0x" }
++// { dg-do compile }
 +
-+      PR rtl-optimization/44858
-+      * combine.c (try_combine): If recog_for_combine added CLOBBERs to
-+      newi2pat, make sure they don't affect newpat.
++// PR libstdc++/52433
 +
-+      PR rtl-optimization/45400
-+      * combine.c (simplify_shift_const_1) <case SUBREG>: Only use
-+      SUBREG_REG if both modes are of MODE_INT class.
++#include <vector>
 +
-+2010-08-20  Changpeng Fang  <changpeng.fang@amd.com>
++struct X
++{
++    std::vector<int>::iterator i;
 +
-+      PR tree-optimization/45260
-+      * tree-flow.h (may_be_nonaddressable_p): New definition. Make the
-+      existing static function global.
++    X() = default;
++    X(const X&) = default;
++    X(X&&) = default;
++    X& operator=(const X&) = default;
++    X& operator=(X&&) = default;
++};
 +
-+      * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): This function
-+      is changed to global.
++X test01()
++{
++    X x;
++    x = X();
++    return x;
++}
 +
-+      * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Call
-+      may_be_nonaddressable_p on base, and don't collect this reference
-+      if the address of the base could not be taken.
+Index: libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
+===================================================================
+--- libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt  (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt  (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -43,6 +43,10 @@
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4
+ FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4
++FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17
++FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17
++FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17
++FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_@@GLIBCXX_3.4.17
+ FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10
+ FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10
+ FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4
+@@ -877,6 +881,7 @@
+ FUNC:_ZNSaIwEC2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSaIwED1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSaIwED2Ev@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@@GLIBCXX_3.4.16
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@@GLIBCXX_3.4
+@@ -961,6 +966,7 @@
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@@GLIBCXX_3.4
++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@@GLIBCXX_3.4.17
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@@GLIBCXX_3.4.5
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4
+ FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4
+@@ -1116,6 +1122,7 @@
+ FUNC:_ZNSolsEt@@GLIBCXX_3.4
+ FUNC:_ZNSolsEx@@GLIBCXX_3.4
+ FUNC:_ZNSolsEy@@GLIBCXX_3.4
++FUNC:_ZNSs10_S_compareEjj@@GLIBCXX_3.4.16
+ FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCXX_3.4
+ FUNC:_ZNSs12_M_leak_hardEv@@GLIBCXX_3.4
+@@ -1200,6 +1207,7 @@
+ FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCXX_3.4
+ FUNC:_ZNSs7replaceEjjjc@@GLIBCXX_3.4
+ FUNC:_ZNSs7reserveEj@@GLIBCXX_3.4
++FUNC:_ZNSs8pop_backEv@@GLIBCXX_3.4.17
+ FUNC:_ZNSs9_M_assignEPcjc@@GLIBCXX_3.4.5
+ FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4
+ FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4
+@@ -1433,6 +1441,9 @@
+ FUNC:_ZNSt13__future_base12_Result_baseD0Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt13__future_base12_Result_baseD1Ev@@GLIBCXX_3.4.15
+ FUNC:_ZNSt13__future_base12_Result_baseD2Ev@@GLIBCXX_3.4.15
++FUNC:_ZNSt13__future_base19_Async_state_commonD0Ev@@GLIBCXX_3.4.17
++FUNC:_ZNSt13__future_base19_Async_state_commonD1Ev@@GLIBCXX_3.4.17
++FUNC:_ZNSt13__future_base19_Async_state_commonD2Ev@@GLIBCXX_3.4.17
+ FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCXX_3.4
+@@ -1741,6 +1752,8 @@
+ FUNC:_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@@CXXABI_1.3.3
+ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@@GLIBCXX_3.4.16
++FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@@GLIBCXX_3.4.16
+ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4
+@@ -1780,6 +1793,8 @@
+ FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@@GLIBCXX_3.4.16
++FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@@GLIBCXX_3.4.16
+ FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4
+@@ -1824,6 +1839,7 @@
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@@GLIBCXX_3.4.16
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6
+@@ -1841,6 +1857,7 @@
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4
++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@@GLIBCXX_3.4.16
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4
+ FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6
+@@ -2145,6 +2162,7 @@
+ FUNC:_ZNSt6localeD2Ev@@GLIBCXX_3.4
+ FUNC:_ZNSt6localeaSERKS_@@GLIBCXX_3.4
+ FUNC:_ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@@GLIBCXX_3.4.11
++FUNC:_ZNSt6thread20hardware_concurrencyEv@@GLIBCXX_3.4.17
+ FUNC:_ZNSt6thread4joinEv@@GLIBCXX_3.4.11
+ FUNC:_ZNSt6thread6detachEv@@GLIBCXX_3.4.11
+ FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@@GLIBCXX_3.4
+@@ -2640,14 +2658,17 @@
+ FUNC:_ZnwjRKSt9nothrow_t@@GLIBCXX_3.4
+ FUNC:__atomic_flag_for_address@@GLIBCXX_3.4.11
+ FUNC:__atomic_flag_wait_explicit@@GLIBCXX_3.4.11
++FUNC:__cxa_allocate_dependent_exception@@CXXABI_1.3.6
+ FUNC:__cxa_allocate_exception@@CXXABI_1.3
+ FUNC:__cxa_bad_cast@@CXXABI_1.3
+ FUNC:__cxa_bad_typeid@@CXXABI_1.3
+ FUNC:__cxa_begin_catch@@CXXABI_1.3
+ FUNC:__cxa_call_unexpected@@CXXABI_1.3
+ FUNC:__cxa_current_exception_type@@CXXABI_1.3
++FUNC:__cxa_deleted_virtual@@CXXABI_1.3.6
+ FUNC:__cxa_demangle@@CXXABI_1.3
+ FUNC:__cxa_end_catch@@CXXABI_1.3
++FUNC:__cxa_free_dependent_exception@@CXXABI_1.3.6
+ FUNC:__cxa_free_exception@@CXXABI_1.3
+ FUNC:__cxa_get_exception_ptr@@CXXABI_1.3.1
+ FUNC:__cxa_get_globals@@CXXABI_1.3
+@@ -2658,6 +2679,7 @@
+ FUNC:__cxa_pure_virtual@@CXXABI_1.3
+ FUNC:__cxa_rethrow@@CXXABI_1.3
+ FUNC:__cxa_throw@@CXXABI_1.3
++FUNC:__cxa_tm_cleanup@@CXXABI_TM_1
+ FUNC:__cxa_vec_cctor@@CXXABI_1.3
+ FUNC:__cxa_vec_cleanup@@CXXABI_1.3
+ FUNC:__cxa_vec_ctor@@CXXABI_1.3
+@@ -2701,7 +2723,9 @@
+ OBJECT:0:CXXABI_1.3.3
+ OBJECT:0:CXXABI_1.3.4
+ OBJECT:0:CXXABI_1.3.5
++OBJECT:0:CXXABI_1.3.6
+ OBJECT:0:CXXABI_LDBL_1.3
++OBJECT:0:CXXABI_TM_1
+ OBJECT:0:GLIBCXX_3.4
+ OBJECT:0:GLIBCXX_3.4.1
+ OBJECT:0:GLIBCXX_3.4.10
+@@ -2710,6 +2734,8 @@
+ OBJECT:0:GLIBCXX_3.4.13
+ OBJECT:0:GLIBCXX_3.4.14
+ OBJECT:0:GLIBCXX_3.4.15
++OBJECT:0:GLIBCXX_3.4.16
++OBJECT:0:GLIBCXX_3.4.17
+ OBJECT:0:GLIBCXX_3.4.2
+ OBJECT:0:GLIBCXX_3.4.3
+ OBJECT:0:GLIBCXX_3.4.4
+@@ -2737,6 +2763,7 @@
+ OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
+ OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+ OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4
++OBJECT:12:_ZTINSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+ OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+ OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4
+ OBJECT:12:_ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4
+@@ -3245,6 +3272,7 @@
+ OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4
+ OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15
+ OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15
++OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+ OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCXX_3.4
+ OBJECT:20:_ZTVSt10bad_typeid@@GLIBCXX_3.4
+ OBJECT:20:_ZTVSt10lock_error@@GLIBCXX_3.4.11
+@@ -3437,6 +3465,7 @@
+ OBJECT:40:_ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4
+ OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4
+ OBJECT:40:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4
++OBJECT:41:_ZTSNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17
+ OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4
+ OBJECT:41:_ZTSSt15basic_streambufIwSt11char_traitsIwEE@@GLIBCXX_3.4
+ OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
+Index: libiberty/ChangeLog
+===================================================================
+--- libiberty/ChangeLog        (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libiberty/ChangeLog        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,8 @@
++2012-03-22  Jason Merrill  <jason@redhat.com>
++
++      * cp-demangle.c (cplus_demangle_operators): Add li.
++      (d_unqualified_name): Handle it specially.
++
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: libiberty/testsuite/demangle-expected
+===================================================================
+--- libiberty/testsuite/demangle-expected      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libiberty/testsuite/demangle-expected      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -4073,6 +4073,8 @@
+ _Z2f1IiEDTnw_T_ilEES0_
+ decltype (new int{}) f1<int>(int)
+ --format=gnu-v3
++_Zli2_wPKc
++operator"" _w(char const*)
+ _Z1fIiEDTnw_Dapifp_EET_
+ decltype (new auto({parm#1})) f<int>(int)
+ --format=gnu-v3
+Index: libiberty/cp-demangle.c
+===================================================================
+--- libiberty/cp-demangle.c    (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libiberty/cp-demangle.c    (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1419,7 +1419,12 @@
+       ret = d_operator_name (di);
+       if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR)
+-      di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2;
++      {
++        di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2;
++        if (!strcmp (ret->u.s_operator.op->code, "li"))
++          ret = d_make_comp (di, DEMANGLE_COMPONENT_UNARY, ret,
++                             d_source_name (di));
++      }
+       return ret;
+     }
+   else if (peek == 'C' || peek == 'D')
+@@ -1596,6 +1601,7 @@
+   { "ix", NL ("[]"),        2 },
+   { "lS", NL ("<<="),       2 },
+   { "le", NL ("<="),        2 },
++  { "li", NL ("operator\"\" "), 1 },
+   { "ls", NL ("<<"),        2 },
+   { "lt", NL ("<"),         2 },
+   { "mI", NL ("-="),        2 },
+Index: libgcc/ChangeLog
+===================================================================
+--- libgcc/ChangeLog   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libgcc/ChangeLog   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,30 @@
++2012-03-22  Georg-Johann Lay  <avr@gjlay.de>
++
++      Backport from 2012-03-07 mainline r185033.
++
++      PR target/52507
++      * config/avr/lib1funcs.S (__movmemx_hi): Fix loop label in RAM-part.
++
++      Backport from 2012-03-07 mainline r185031.
++
++      PR target/52505
++      * config/avr/lib1funcs.S (__xload_1): Don't read unintentionally
++      from RAM.
++
++      Backport from 2012-03-07 mainline r185030.
++
++      PR target/52461
++      PR target/52508
++      * config/avr/lib1funcs.S (__do_copy_data): Clear RAMPZ after usage
++      if RAMPZ affects reading from RAM.
++      (__tablejump_elpm__): Ditto.
++      (.xload): Ditto.
++      (__movmemx_hi): Ditto.
++      (__do_global_ctors): Right condition for RAMPZ usage is "have ELPM".
++      (__do_global_dtors): Ditto.
++      (__xload_1, __xload_2, __xload_3, __xload_4): Ditto.
++      (__movmemx_hi): Ditto.
++
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: libgcc/config/avr/lib1funcs.S
+===================================================================
+--- libgcc/config/avr/lib1funcs.S      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libgcc/config/avr/lib1funcs.S      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1893,6 +1893,10 @@
+       cpc     r27, r17
+       brne    .L__do_copy_data_loop
+ #endif /* !defined(__AVR_HAVE_ELPMX__) && !defined(__AVR_HAVE_ELPM__) */
++#if defined (__AVR_HAVE_ELPM__) && defined (__AVR_HAVE_RAMPD__)
++      ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM
++      out     __RAMPZ__, __zero_reg__
++#endif /* ELPM && RAMPD */
+ ENDF __do_copy_data
+ #endif /* L_copy_data */
+@@ -1920,7 +1924,7 @@
+ #ifdef L_ctors
+       .section .init6,"ax",@progbits
+ DEFUN __do_global_ctors
+-#if defined(__AVR_HAVE_RAMPZ__)
++#if defined(__AVR_HAVE_ELPM__)
+       ldi     r17, hi8(__ctors_start)
+       ldi     r28, lo8(__ctors_end)
+       ldi     r29, hi8(__ctors_end)
+@@ -1953,14 +1957,14 @@
+       cpi     r28, lo8(__ctors_start)
+       cpc     r29, r17
+       brne    .L__do_global_ctors_loop
+-#endif /* defined(__AVR_HAVE_RAMPZ__) */
++#endif /* defined(__AVR_HAVE_ELPM__) */
+ ENDF __do_global_ctors
+ #endif /* L_ctors */
+ #ifdef L_dtors
+       .section .fini6,"ax",@progbits
+ DEFUN __do_global_dtors
+-#if defined(__AVR_HAVE_RAMPZ__)
++#if defined(__AVR_HAVE_ELPM__)
+       ldi     r17, hi8(__dtors_end)
+       ldi     r28, lo8(__dtors_start)
+       ldi     r29, hi8(__dtors_start)
+@@ -1993,7 +1997,7 @@
+       cpi     r28, lo8(__dtors_end)
+       cpc     r29, r17
+       brne    .L__do_global_dtors_loop
+-#endif /* defined(__AVR_HAVE_RAMPZ__) */
++#endif /* defined(__AVR_HAVE_ELPM__) */
+ ENDF __do_global_dtors
+ #endif /* L_dtors */
+@@ -2001,18 +2005,21 @@
+     
+ #ifdef L_tablejump_elpm
+ DEFUN __tablejump_elpm__
+-#if defined (__AVR_HAVE_ELPM__)
+-#if defined (__AVR_HAVE_LPMX__)
++#if defined (__AVR_HAVE_ELPMX__)
+       elpm    __tmp_reg__, Z+
+       elpm    r31, Z
+       mov     r30, __tmp_reg__
++#if defined (__AVR_HAVE_RAMPD__)
++      ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM
++      out     __RAMPZ__, __zero_reg__
++#endif /* RAMPD */
+ #if defined (__AVR_HAVE_EIJMP_EICALL__)
+       eijmp
+ #else
+       ijmp
+ #endif
+-#else
++#elif defined (__AVR_HAVE_ELPM__)
+       elpm
+       adiw    r30, 1
+       push    r0
+@@ -2024,7 +2031,6 @@
+ #endif
+       ret
+ #endif
+-#endif /* defined (__AVR_HAVE_ELPM__) */
+ ENDF __tablejump_elpm__
+ #endif /* defined (L_tablejump_elpm) */
+@@ -2114,11 +2120,18 @@
+     adiw    r30, 1
+ .endif
+ #endif
++#if defined (__AVR_HAVE_ELPM__) && defined (__AVR_HAVE_RAMPD__)
++.if \dest == D0+\n-1
++    ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM
++    out     __RAMPZ__, __zero_reg__
++.endif
++#endif
+ .endm ; .xload
+ #if defined (L_xload_1)
+ DEFUN __xload_1
+-#if defined (__AVR_HAVE_LPMX__) && !defined (__AVR_HAVE_RAMPZ__)
++#if defined (__AVR_HAVE_LPMX__) && !defined (__AVR_HAVE_ELPM__)
++    sbrc    HHI8, 7
+     ld      D0, Z
+     sbrs    HHI8, 7
+     lpm     D0, Z
+@@ -2126,14 +2139,14 @@
+ #else
+     sbrc    HHI8, 7
+     rjmp    1f
+-#if defined (__AVR_HAVE_RAMPZ__)
++#if defined (__AVR_HAVE_ELPM__)
+     out     __RAMPZ__, HHI8
+-#endif /* __AVR_HAVE_RAMPZ__ */
++#endif /* __AVR_HAVE_ELPM__ */
+     .xload  D0, 1
+     ret
+ 1:  ld      D0, Z
+     ret
+-#endif /* LPMx && ! RAMPZ */
++#endif /* LPMx && ! ELPM */
+ ENDF __xload_1
+ #endif /* L_xload_1 */
+@@ -2141,9 +2154,9 @@
+ DEFUN __xload_2
+     sbrc    HHI8, 7
+     rjmp    1f
+-#if defined (__AVR_HAVE_RAMPZ__)
++#if defined (__AVR_HAVE_ELPM__)
+     out     __RAMPZ__, HHI8
+-#endif /* __AVR_HAVE_RAMPZ__ */
++#endif /* __AVR_HAVE_ELPM__ */
+     .xload  D0, 2
+     .xload  D1, 2
+     ret
+@@ -2157,9 +2170,9 @@
+ DEFUN __xload_3
+     sbrc    HHI8, 7
+     rjmp    1f
+-#if defined (__AVR_HAVE_RAMPZ__)
++#if defined (__AVR_HAVE_ELPM__)
+     out     __RAMPZ__, HHI8
+-#endif /* __AVR_HAVE_RAMPZ__ */
++#endif /* __AVR_HAVE_ELPM__ */
+     .xload  D0, 3
+     .xload  D1, 3
+     .xload  D2, 3
+@@ -2175,9 +2188,9 @@
+ DEFUN __xload_4
+     sbrc    HHI8, 7
+     rjmp    1f
+-#if defined (__AVR_HAVE_RAMPZ__)
++#if defined (__AVR_HAVE_ELPM__)
+     out     __RAMPZ__, HHI8
+-#endif /* __AVR_HAVE_RAMPZ__ */
++#endif /* __AVR_HAVE_ELPM__ */
+     .xload  D0, 4
+     .xload  D1, 4
+     .xload  D2, 4
+@@ -2219,7 +2232,7 @@
+ ;; Read from Flash
+-#if defined (__AVR_HAVE_RAMPZ__)
++#if defined (__AVR_HAVE_ELPM__)
+     out     __RAMPZ__, HHI8
+ #endif
+@@ -2243,6 +2256,10 @@
+     st      X+, r0
+     sbiw    LOOP, 1
+     brne    0b
++#if defined (__AVR_HAVE_ELPM__) && defined (__AVR_HAVE_RAMPD__)
++    ;; Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM
++    out       __RAMPZ__, __zero_reg__
++#endif /* ELPM && RAMPD */
+     ret
+ ;; Read from RAM
+@@ -2252,7 +2269,7 @@
+     ;; and store that Byte to RAM Destination
+     st      X+, r0
+     sbiw    LOOP, 1
+-    brne    0b
++    brne    1b
+     ret
+ ENDF __movmemx_hi
+Index: gcc/c-family/ChangeLog
+===================================================================
+--- gcc/c-family/ChangeLog     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/c-family/ChangeLog     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,8 @@
++2012-03-23  William Bader  <williambader@hotmail.com>
++
++      PR c/52682
++      * c-lex.c (c_lex_with_flags): Avoid declarations after stmts.
++
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: gcc/c-family/c-lex.c
+===================================================================
+--- gcc/c-family/c-lex.c       (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/c-family/c-lex.c       (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -342,6 +342,8 @@
+       if (flags & CPP_N_USERDEF)
+         {
++          char *str;
++          tree literal;
+           tree suffix_id = get_identifier (suffix);
+           int len = tok->val.str.len - strlen (suffix);
+           /* If this is going to be used as a C string to pass to a
+@@ -350,9 +352,9 @@
+                                           (const char *) tok->val.str.text);
+           TREE_TYPE (num_string) = char_array_type_node;
+           num_string = fix_string_type (num_string);
+-          char *str = CONST_CAST (char *, TREE_STRING_POINTER (num_string));
++          str = CONST_CAST (char *, TREE_STRING_POINTER (num_string));
+           str[len] = '\0';
+-          tree literal = build_userdef_literal (suffix_id, *value,
++          literal = build_userdef_literal (suffix_id, *value,
+                                                 num_string);
+           *value = literal;
+         }
+Index: gcc/DATESTAMP
+===================================================================
+--- gcc/DATESTAMP      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/DATESTAMP      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1 +1 @@
+-20120322
++20120323
+Index: gcc/DEV-PHASE
+===================================================================
+--- gcc/DEV-PHASE      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/DEV-PHASE      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1 @@
++prerelease
+Index: gcc/ChangeLog
+===================================================================
+--- gcc/ChangeLog      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/ChangeLog      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,173 @@
++2012-03-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++      Backported from mainline
++      2012-03-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
++
++      PR target/50310
++      * config/rs6000/vector.md (vector_uneq<mode>): Add support for
++      UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons.
++      (vector_ltgt<mode>): Likewise.
++      (vector_ordered<mode>): Likewise.
++      (vector_unordered<mode>): Likewise.
++      * config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
++
++2012-03-23  Joern Rennecke  <joern.rennecke@embecosm.com>
++
++      * config/epiphany/epiphany.c (epiphany_function_value_regno_p):
++      Make static.
++
++2012-03-22  Kaz Kojima  <kkojima@gcc.gnu.org>
++
++      Backported from mainline
++      2012-03-02  Kaz Kojima  <kkojima@gcc.gnu.org>
++
++      PR target/48596
++      PR target/48806
++      * config/sh/sh.c (sh_register_move_cost): Increase cost between
++      GENERAL_REGS and FP_REGS for SImode.
++
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
++
++      PR middle-end/52547
++      * tree-nested.c (convert_tramp_reference_stmt): Call declare_vars
++      on any new_local_var_chain vars declared during recursing on
++      GIMPLE_OMP_PARALLEL or GIMPLE_OMP_TASK body.
++
++2012-03-22  Georg-Johann Lay  <avr@gjlay.de>
++
++      Backport from 2012-03-22 mainline r185692.
++
++      PR target/52496
++      * config/avr/avr.md (unspec): Remove UNSPEC_MEMORY_BARRIER.
++      (unspecv): Add UNSPECV_MEMORY_BARRIER.
++      (cli_sei): Use unspec_volatile instead of unspec for memory barrier.
++      (delay_cycles_1, delay_cycles_2): Ditto.
++      (delay_cycles_3, delay_cycles_4): Ditto.
++      (nopv, *nopv): Ditto.
++      (sleep, *sleep): Ditto.
++      (wdr, *wdr): Ditto.
 +
-+2010-08-20  David Edelsohn  <edelsohn@gnu.org>
++      Backport from 2012-03-21 mainline r185605.
 +
-+      Backport from mainline
-+      2010-04-22  David Edelsohn  <edelsohn@gnu.org>
++      PR rtl-optimization/52543
++      PR target/52461
++      * config/avr/avr-protos.h (avr_load_lpm): New prototype.
++      * config/avr/avr.c (avr_mode_dependent_address_p): New function.
++      (TARGET_MODE_DEPENDENT_ADDRESS_P): New define.
++      (avr_load_libgcc_p): Restrict to __flash loads.
++      (avr_out_lpm): Only handle 1-byte loads from __flash.
++      (avr_load_lpm): New function.
++      (avr_find_unused_d_reg): Remove.
++      (avr_out_lpm_no_lpmx): Remove.
++      (adjust_insn_length): Handle ADJUST_LEN_LOAD_LPM.
++      * config/avr/avr.md (unspec): Add UNSPEC_LPM.
++      (load_<mode>_libgcc): Use UNSPEC_LPM instead of MEM.
++      (load_<mode>, load_<mode>_clobber): New insns.
++      (mov<mode>): For multi-byte move from non-generic
++      16-bit address spaces: Expand to load_<mode> resp.
++      load_<mode>_clobber.
++      (load<mode>_libgcc): Remove expander.
++      (split-lpmx): Remove split.
 +
-+      * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS.
++      Backport from 2012-03-13 mainline r185329.
 +
-+2010-08-19  Uros Bizjak  <ubizjak@gmail.com>
++      PR target/52488
++      * config/avr/avr.c (avr_prologue_setup_frame): Cut down stack
++      offset (size) to a value the insns can deal with.
++      (expand_epilogue): Ditto.
 +
-+      * config/i386/i386.md (*add<SWI:mode>3_cconly_overflow): Do not use
-+      ix86_binary_operator_ok.
++      Backport from 2012-03-12 mainline r185256.
 +
-+2010-08-18  Uros Bizjak  <ubizjak@gmail.com>
++      PR target/52499
++      * config/avr/avr.c (avr_mode_code_base_reg_class): Change return
++      type from reg_class_t to enum reg_class.
++      * config/avr/avr-protos.h (avr_mode_code_base_reg_class): Ditto.
 +
-+      PR target/45327
-+      * config/i386/i386.md (<any_or:code><SWI:mode>_3): Do not use
-+      ix86_binary_operator_ok.
++      Backport from 2012-03-12 mainline r185253.
 +
-+2010-08-18  H.J. Lu  <hongjiu.lu@intel.com>
++      PR target/52148
++      * config/avr/avr.c (avr_out_movmem): Fix typo in output template
++      for the case ADDR_SPACE_FLASH and AVR_HAVE_LPMX introduced in
++      r184615 from 2012-02-28.
 +
-+      Backport from mainline
-+      2010-08-18  Paolo Bonzini  <bonzini@gnu.org>
++      Backport from 2012-03-08 mainline r185105.
 +
-+      PR middle-end/45292
-+      * optabs.c (expand_bool_compare_and_swap): Expand pending
-+      pops before trying the optab.
++      * config/avr/avr.md (*addhi3, addhi3_clobber): Add "w" alternative
++      for constants in [-63,63].
 +
-+2010-08-17  Uros Bizjak  <ubizjak@gmail.com>
++      Backport from 2012-03-08 mainline r185100.
 +
-+      PR target/45296
-+      * reginfo.c (globalize_reg): Reject stack registers.
++      PR target/52496
++      * config/avr/avr.c (avr_mem_clobber): New static function.
++      (avr_expand_delay_cycles): Add memory clobber operand to
++      delay_cycles_1, delay_cycles_2, delay_cycles_3, delay_cycles_4.
++      * config/avr/avr.md (unspec): Add UNSPEC_MEMORY_BARRIER.
++      (enable_interrupt, disable_interrupt): New expander.
++      (nopv, sleep, wdr): New expanders.
++      (delay_cycles_1): Add memory clobber.
++      (delay_cycles_2): Add memory clobber.
++      (delay_cycles_3): Add memory clobber.
++      (delay_cycles_4): Add memory clobber.
++      (cli_sei): New insn from former "enable_interrupt",
++      "disable_interrupt" with memory clobber.
++      (*wdt): New insn from former "wdt" with memory clobber.
++      (*nopv): Similar, but for "nopv".
++      (*sleep): Similar, but for "sleep".
 +
-+2010-08-16  Changpeng Fang  <changpeng.fang@amd.com>
++      Backport from 2012-03-07 mainline r185043.
 +
-+      Backport from mainline:
-+      2010-08-12  Changpeng Fang  <changpeng.fang@amd.com>
++      PR target/52484
++      * config/avr/avr.md (xload<mode>_A): Add R22... to register footprint.
 +
-+      PR tree-optimization/45241
-+      * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Give
-+      up dot_prod pattern searching if a stmt is outside the loop.
++      Backport from 2012-03-07 mainline r185032.
 +
-+2010-08-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++      PR target/52506
++      * gcc/config/avr/avr.c (expand_epilogue): Fix order of restoration
++      to: RAMPZ, RAMPY, RAMPX, RAMPD.
++      (expand_prologue): Only clear RAMPZ if it has effect on RAM-read.
 +
-+      Backport from mainline:
-+      2010-08-09  Richard Guenther  <rguenther@suse.de>
++      Backport from 2012-03-07 mainline r185031.
 +
-+      PR middle-end/44632
-+      * function.c (gimplify_parameters): Do not clear addressable
-+      bit of the original parameter.
++      PR target/52505
++      * config/avr/avr.c (avr_out_xload): Don't read unintentionally
++      from RAM.
++      * config/avr/avr.md (xload_8): Adjust insn length.
 +
-+2010-08-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++      Backport from 2012-03-07 mainline r185030.
 +
-+      Revert:
-+      2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++      PR target/52461
++      * gcc/config/avr/avr.c (avr_out_lpm): Clear RAMPZ after usage
++      if RAMPZ affects reading from RAM.
 +
-+      PR boehm-gc/34544
-+      * gthr-posix.h (__gthread_start): Delete.
-+      (__gthread_active_init): Use pthread_default_stacksize_np instead of
-+      pthread_create to determine if hpux pthreads are active.
-+      * gthr-posix95.h (__gthread_start): Delete.
-+      (__gthread_active_init): Likewise use pthread_default_stacksize_np.
++      Backport from 2012-03-05 mainline r184919.
 +
-+2010-08-12  Jakub Jelinek  <jakub@redhat.com>
++      * config/avr/avr.md (*umaddqihi4.2): New insn-and-split.
 +
-+      PR middle-end/45262
-+      * fold-const.c (make_range) <case NEGATE_EXPR>: Punt if
-+      -a overflows.  Normalize the range.
++2012-03-22  Georg-Johann Lay  <avr@gjlay.de>
 +
-+      PR debug/45259
-+      * caller-save.c (save_call_clobbered_regs): Only swap notes with
-+      DEBUG_INSNs if n_regs_saved.
++      Backport from mainline r185259.
 +
-+      Backport from mainline
-+      2010-07-30  Jakub Jelinek  <jakub@redhat.com>
++      PR other/52545
++      * output.h (SECTION_EXCLUDE, SECTION_MACH_DEP): Don't use
++      SECTION_MACH_DEP reserved bits for SECTION_EXCLUDE.
 +
-+      PR debug/45055
-+      PR rtl-optimization/45137
-+      * rtl.h (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn): New
-+      prototypes.
-+      * emit-rtl.c (prev_nonnote_nondebug_insn, next_nonnote_nondebug_insn):
-+      New functions.
-+      * combine.c (next_nonnote_nondebug_insn): Removed.
-+      * ifcvt.c (noce_process_if_block): Use prev_nonnote_nondebug_insn.
-+      * haifa-sched.c (queue_to_ready): Use next_nonnote_nondebug_insn.
-+      * sched-deps.c (sched_analyze_insn): Likewise.
-+      (fixup_sched_groups, deps_start_bb): Use prev_nonnote_nondebug_insn.
-+      * rtlanal.c (canonicalize_condition): Likewise.
-+      * postreload.c (reload_combine): Likewise.
-+      (reload_cse_move2add): Use next_nonnote_nondebug_insn.
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
 +
-+2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++      Backported from mainline
++      2012-03-13  Jakub Jelinek  <jakub@redhat.com>
++ 
++      PR c/52577
++      * c-parser.c (c_parser_postfix_expression)
++      <case RID_BUILTIN_SHUFFLE>: Call mark_exp_read on argument values.
 +
-+      Backport from mainline.
-+      2010-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++      * config/i386/smmintrin.h: Avoid /* within a comment.
++      * config/i386/nmmintrin.h: Likewise.
 +
-+      PR target/44805
-+      * config/pa/pa.h (CONSTANT_ALIGNMENT): Align strings to BITS_PER_WORD
-+      on all targets.
++2012-03-22  Richard Guenther  <rguenther@suse.de>
 +
-+2010-08-08  Richard Guenther  <rguenther@suse.de>
++      * BASE-VER: Set to 4.7.1.
++      * DEV-PHASE: Set to prerelease.
 +
-+      PR middle-end/45034
-+      * convert.c (convert_to_integer): Always use an unsigned
-+      type for narrowed negate and bitwise not.
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99" } */
++/* { dg-do run } */
 +
-+2010-08-08  Richard Guenther  <rguenther@suse.de>
++#define __as __flash
 +
-+      PR tree-optimization/45109
-+      * tree-ssa-structalias.c (get_constraint_for_component_ref):
-+      Explicitly strip handled components and indirect references.
++#include "addr-space-1.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */
++/* { dg-do run } */
 +
-+2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++#define __as __flash1
 +
-+      PR boehm-gc/34544
-+      * gthr-posix.h (__gthread_start): Delete.
-+      (__gthread_active_init): Use pthread_default_stacksize_np instead of
-+      pthread_create to determine if hpux pthreads are active.
-+      * gthr-posix95.h (__gthread_start): Delete.
-+      (__gthread_active_init): Likewise use pthread_default_stacksize_np.
++#include "addr-space-1.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-0.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99" } */
++/* { dg-do run } */
 +
-+2010-08-06  Eric Botcazou  <ebotcazou@adacore.com>
++#define __as __flash
 +
-+      PR target/44942
-+      * config/sparc/sparc.c (function_arg_advance): Always take into account
-+      the padding, if any.
++#include "addr-space-2.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-1.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99 -Tavr51-flash1.x" } */
++/* { dg-do run } */
 +
-+2010-08-06  Uros Bizjak  <ubizjak@gmail.com>
++#define __as __flash1
 +
-+      * expmed.c (expand_mult_const) <case alg_shift>: Expand shift into
-+      temporary. Emit move from temporary to accum, so REG_EQUAL note will
-+      be attached to this insn in correct mode.
++#include "addr-space-2.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-x.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99" } */
++/* { dg-do run } */
 +
-+2010-08-06  Uros Bizjak  <ubizjak@gmail.com>
++#define __as __memx
 +
-+      * config/i386/i386.c (ix86_decompose_address): Check for SI_REG
-+      using REGNO of base_reg directly.
++#include "addr-space-1.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1.h
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-1.h        (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-1.h        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,83 @@
++#include <stdlib.h>
++#include <string.h>
 +
-+2010-08-03  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
++typedef struct
++{
++  char i1;
++  short i2;
++  long i4;
++  long long i8;
++  char str[2][10];
++} a_t;
++
++const __as a_t A =
++  {
++    12, 345, 678910, 1234567891011ll,
++    {
++      "xxx..xxx",
++      "yyy..yyy"
++    }
++  };
 +
-+      * config/spu/spu.c (spu_emit_branch_hint): Do not access NOTE_KIND of
-+      non-NOTE insns.
++const __as volatile a_t V =
++  {
++    12+1, 345+1, 678910+1, 1234567891011ll+1,
++    {
++      "XXX..XXX",
++      "YYY..YYY"
++    }
++  };
 +
-+2010-08-03  Uros Bizjak  <ubizjak@gmail.com>
++a_t A2;
++volatile a_t V2;
 +
-+      PR target/41089
-+      * config/alpha/alpha.c (alpha_build_builtin_va_list): Mark __offset
-+      as volatile.
++int main (void)
++{
++  if (A.i1 != 12
++      || A.i1 != V.i1 -1)
++    abort();
 +
-+2010-08-03  Martin Jambor  <mjambor@suse.cz>
++  if (A.i2 != 345
++      || A.i2 != V.i2 -1)
++    abort();
 +
-+      PR tree-optimization/44914
-+      * tree-sra.c (cfg_changed): New variable.
-+      (sra_initialize): Initialize cgf_changed to false.
-+      (scan_function): Set cfg_changed if cfg was changed.
-+      (perform_intra_sra): Return also TODO_cleanup_cfg if cfg was changed.
-+      (ipa_early_sra): Likewise.
-+
-+2010-08-02  DJ Delorie  <dj@redhat.com>
++  if (A.i4 != 678910
++      || A.i4 != V.i4 -1)
++    abort();
 +
-+      * config/rx/predicates.md (rx_constshift_operand): New.
-+      * config/rx/rx.md (zs_cond): New.
-+      (cbranchsi4): Remove mode.
-+      (*cbranchsi4_<code>): Likewise.
-+      (*tstbranchsi4_<code>): New.
-+      (*tstbranchsi4r_<code>): New.
-+      (*tstbranchsi4m_eq): New.
-+      (*tstbranchsi4m_ne): New.
-+      (cbranchsf4): Remove mode.
-+      (*cbranchsf4_<code>): Likewise.
++  if (A.i8 != 1234567891011ll
++      || A.i8 != V.i8 -1)
++    abort();
 +
-+2010-07-31  Richard Guenther  <rguenther@suse.de>
++  A2 = A;
++  V2 = V;
 +
-+      PR tree-optimization/45052
-+      * ipa-pure-const.c (check_stmt): Check volatileness.
++  if (A2.i1 != 12
++      || A2.i1 != V2.i1 -1)
++    abort();
 +
-+2010-07-31  Richard Guenther  <rguenther@suse.de>
++  if (A2.i2 != 345
++      || A2.i2 != V2.i2 -1)
++    abort();
 +
-+      * ipa-prop.c (ipa_modify_formal_parameters): Use
-+      build_distinct_type_copy.
++  if (A2.i4 != 678910
++      || A2.i4 != V2.i4 -1)
++    abort();
 +
-+2010-07-31  Richard Guenther  <rguenther@suse.de>
++  if (A2.i8 != 1234567891011ll
++      || A2.i8 != V2.i8 -1)
++    abort();
 +
-+      * DEV-PHASE: Set back to prerelease.
-+      * BASE-VER: Bump to 4.5.2.
++  if (strcmp (A2.str[0], "xxx..xxx"))
++    abort();
++  if (strcmp (A2.str[1], "yyy..yyy"))
++    abort();
 +
- 2010-07-31  Release Manager
-       * GCC 4.5.1 released.
-@@ -105,8 +346,8 @@
- 2010-07-19  Bingfeng Mei  <bmei@broadcom.com>
-       * ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes
--        of a loop.
--        * loop-doloop.c (doloop_condition_get): Skip possible debug_insn.
-+      of a loop.
-+      * loop-doloop.c (doloop_condition_get): Skip possible debug_insn.
- 2010-07-15  Jie Zhang  <jie@codesourcery.com>
-@@ -286,7 +527,7 @@
-       if old_decl was DECL_ONE_ONLY.
-       2010-06-21  Jakub Jelinek  <jakub@redhat.com>
-- 
++  if (strcmp ((const char*) V2.str[0], "XXX..XXX"))
++    abort();
++  if (strcmp ((const char*) V2.str[1], "YYY..YYY"))
++   abort();
++  
++  exit (0);
++  return 0;
++}
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,9 @@
++/* { dg-options "-std=gnu99 -Wa,--no-warn" } */
++/* { dg-do run } */
++
++/* --no-warn because: "assembling 24-bit address needs binutils extension"
++   see binutils PR13503.  */
 +
-       PR target/44575
-       * config/i386/i386.c (ix86_gimplify_va_arg): When copying
-       va_arg from a set of register save slots into a temporary,
-@@ -392,24 +633,24 @@
-       Backport from mainline
-       2010-05-17  Martin Jambor  <mjambor@suse.cz>
--        PR middle-end/44133
--        * tree-sra.c (create_access_replacement): New parameter rename, mark
--        the replaement for renaming only when it is true.
--        (get_access_replacement): Pass true in the rename parameter of
--        create_access_replacement.
--        (get_unrenamed_access_replacement): New function.
--        (replace_uses_with_default_def_ssa_name): New parameter racc, get the
--        replacement declaration from it.
-+      PR middle-end/44133
-+      * tree-sra.c (create_access_replacement): New parameter rename, mark
-+      the replaement for renaming only when it is true.
-+      (get_access_replacement): Pass true in the rename parameter of
-+      create_access_replacement.
-+      (get_unrenamed_access_replacement): New function.
-+      (replace_uses_with_default_def_ssa_name): New parameter racc, get the
-+      replacement declaration from it.
- 2010-06-29  Martin Jambor  <mjambor@suse.cz>
-       Backport from mainline
-       2010-04-13  Martin Jambor  <mjambor@suse.cz>
--        * tree-sra.c (replace_uses_with_default_def_ssa_name): New function.
--        (sra_modify_assign): Delete stmts loading dead data even if racc has no
--        children.  Call replace_uses_with_default_def_ssa_name to handle
--        SSA_NAES on lhs.
-+      * tree-sra.c (replace_uses_with_default_def_ssa_name): New function.
-+      (sra_modify_assign): Delete stmts loading dead data even if racc has no
-+      children.  Call replace_uses_with_default_def_ssa_name to handle
-+      SSA_NAES on lhs.
- 2010-06-27  Jan Hubicka  <jh@suse.cz>
-@@ -536,7 +777,7 @@
-       Backport from mainline:
-       2010-05-18  Steven Bosscher  <steven@gcc.gnu.org>
--        * darwin.c (darwin_asm_named_section): Do not add assembler comment
-+      * darwin.c (darwin_asm_named_section): Do not add assembler comment
-       after .section directive; just print it before the directive
-       instead.
-@@ -1659,7 +1900,7 @@
-       * tree-tailcall.c (find_tail_calls): Verify the tail call
-       properly.
--2010-04-19 Ira Rosen <irar@il.ibm.com>
-+2010-04-19 Ira Rosen  <irar@il.ibm.com>
-       PR tree-optimization/43771
-       * tree-vect-slp.c (vect_supported_load_permutation_p): Check that
-@@ -1925,11 +2166,11 @@
-       * Makefile.in ($(out_object_file)): Depend on
-       gt-$(basename $(notdir $(out_file))).h.
--2010-04-01  Ralf Corsépius <ralf.corsepius@rtems.org>
-+2010-04-01  Ralf Corsépius  <ralf.corsepius@rtems.org>
-       * config.gcc (lm32-*-rtems*): Add t-lm32.
--2010-04-01  Joel Sherrill <joel.sherrill@oarcorp.com>
-+2010-04-01  Joel Sherrill  <joel.sherrill@oarcorp.com>
-       * config.gcc: Add lm32-*-rtems*.
-       * config/lm32/rtems.h: New file.
-@@ -1984,8 +2225,8 @@
-       PR middle-end/43602
-       Revert
--      2010-03-30  Seongbae Park <seongbae.park@gmail.com>
--          Jack Howarth <howarth@bromo.med.uc.edu>
-+      2010-03-30  Seongbae Park  <seongbae.park@gmail.com>
-+                  Jack Howarth  <howarth@bromo.med.uc.edu>
-       * tree-profile.c (tree_init_ic_make_global_vars): Make static
-       variables TLS.
-@@ -2276,8 +2517,8 @@
-       * config/s390/s390.c (s390_emit_prologue): Omit issuing a dynamic
-       stack check if the mask would be zero.
--2010-03-30  Seongbae Park <seongbae.park@gmail.com>
--          Jack Howarth <howarth@bromo.med.uc.edu>
-+2010-03-30  Seongbae Park  <seongbae.park@gmail.com>
-+          Jack Howarth  <howarth@bromo.med.uc.edu>
-       * tree-profile.c (tree_init_ic_make_global_vars): Make static
-       variables TLS.
-@@ -2620,7 +2861,7 @@
-       instead of callq.
- 2010-03-22  Janis Johnson  <janis187@us.ibm.com>
--          Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+          Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-       * doc/sourcebuild.texi (Test Directives): Split into six
-       subsections, with most of the current text in new subsections
-@@ -2775,8 +3016,8 @@
-       (sparc_file_end): Emit a hidden comdat symbol for the PIC
-       thunk if possible.  Output CFI information as needed.
--2010-03-18  Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
--          Jack Howarth <howarth@bromo.med.uc.edu>
-+2010-03-18  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
-+          Jack Howarth  <howarth@bromo.med.uc.edu>
-       PR target/36399
-       * config/i386/i386.h: Fix ABI on darwin x86-32.
-@@ -2919,7 +3160,7 @@
-       * graphite-sese-to-poly.c (split_reduction_stmt): Skip debug
-       statements before splitting block.
--2010-03-16  Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+2010-03-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-       * doc/sourcebuild.texi (Testsuites): Fix markup.
-       Use pathnames relative to gcc/testsuite.
-@@ -3531,7 +3772,7 @@
-       * tree-vect-loop.c (vect_transform_loop): Kill out-of-loop debug
-       uses of relevant DEFs that are dead outside the loop too.
--2010-03-06  Alexandre Oliva <aoliva@redhat.com>
-+2010-03-06  Alexandre Oliva  <aoliva@redhat.com>
-       * var-tracking.c (dataflow_set_merge): Swap src and src2.
-       Reverted:
-@@ -4313,7 +4554,7 @@
-       * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Call
-       lang_hooks.types_compatible_p instead of comptypes.
--2010-02-18  Sebastian Huber <sebastian.huber@embedded-brains.de>
-+2010-02-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
-       * config/arm/lib1funcs.asm (__prefer_thumb__): New define.
-       (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Use Thumb-1 variant
-@@ -4384,7 +4625,7 @@
-       statements ...
-       (vrp_visit_phi_node): ... but only for loop PHI nodes.
--2010-02-16  Ira Rosen <irar@il.ibm.com>
-+2010-02-16  Ira Rosen  <irar@il.ibm.com>
-       PR tree-optimization/43074
-       * tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New.
-@@ -4412,8 +4653,8 @@
-       flag_var_tracking_assignments.
-       * Makefile.in (var-tracking.o): Adjust dependencies.
--2010-02-16  Jack Howarth <howarth@bromo.med.uc.edu>
--          Jakub Jelinek <jakub@redhat.com>
-+2010-02-16  Jack Howarth  <howarth@bromo.med.uc.edu>
-+          Jakub Jelinek  <jakub@redhat.com>
-       PR target/42854
-       * config/darwin.h (ASM_WEAKEN_DECL): Don't check weak attribute
-@@ -4511,7 +4752,7 @@
- 2010-02-12  Dave Korn  <dave.korn.cygwin@gmail.com>
-           Jack Howarth  <howarth@bromo.med.uc.edu>
--          Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
-+          Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
-       PR target/42982
-       Partial revert of unintended change in fix for PR41605.
-@@ -5934,7 +6175,7 @@
-       (maybe_tidy_empty_bb): Delete prototype.
-       (purge_empty_blocks): Declare.
--2010-01-14  Andrey Belevantsev <abel@ispras.ru>
-+2010-01-14  Andrey Belevantsev  <abel@ispras.ru>
-       PR rtl-optimization/42249
-       * sel-sched.c (try_replace_dest_reg): When chosen register
-Index: gcc/testsuite/gcc.c-torture/execute/pr45034.c
++#define __as __memx
++
++#include "addr-space-2.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2.h
 ===================================================================
---- gcc/testsuite/gcc.c-torture/execute/pr45034.c      (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr45034.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,45 @@
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-2.h        (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-2.h        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,106 @@
++extern void exit (int);
 +extern void abort (void);
-+static void fixnum_neg(signed char x, signed char *py, int *pv)
++
++typedef struct T
 +{
-+  unsigned char ux, uy;
++  char val;
++  const __as struct T *l, *r;
++} tree;
 +
-+  ux = (unsigned char)x;
-+  uy = -ux;
-+  *py = (uy <= 127) ? (signed char)uy : (-(signed char)(255 - uy) - 1);
-+  *pv = (x == -128) ? 1 : 0;
-+}
++/*
++                    abcd   
++                   /    \
++                 ab      cd
++                /  \    /  \
++               a    b  c    d
++*/
++
++const __as tree a = { 'a', 0, 0 };
++const __as tree b = { 'b', 0, 0 };
++const __as tree c = { 'c', 0, 0 };
++const __as tree d = { 'd', 0, 0 };
 +
-+void __attribute__((noinline)) foo(int x, int y, int v)
++const __as tree ab = { 'A', &a, &b };
++const __as tree cd = { 'C', &c, &d };
++
++const __as tree abcd = { '*', &ab, &cd };
++
++static void
++test1 (void)
 +{
-+  if (y < -128 || y > 127)
++  if (abcd.val != '*')
 +    abort();
-+}
 +
-+int test_neg(void)
-+{
-+  signed char x, y;
-+  int v, err;
-+
-+  err = 0;
-+  x = -128;
-+  for (;;) {
-+      fixnum_neg(x, &y, &v);
-+      foo((int)x, (int)y, v);
-+      if ((v && x != -128) || (!v && x == -128))
-+      ++err;
-+      if (x == 127)
-+      break;
-+      ++x;
-+  }
-+  return err;
-+}
++  if (abcd.l->val != 'A')
++    abort();
++  if (abcd.r->val != 'C')
++    abort();
 +
-+int main(void)
-+{
-+  if (sizeof (char) != 1)
-+    return 0;
-+  if (test_neg() != 0)
++  if (abcd.l->l->val != 'a')
++    abort();
++  if (abcd.l->r->val != 'b')
++    abort();
++  if (abcd.r->l->val != 'c')
++    abort();
++  if (abcd.r->r->val != 'd')
 +    abort();
-+  return 0;
 +}
 +
-Index: gcc/testsuite/gcc.c-torture/execute/pr44858.c
-===================================================================
---- gcc/testsuite/gcc.c-torture/execute/pr44858.c      (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr44858.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,28 @@
-+/* PR rtl-optimization/44858 */
++static void
++test2 (const __as tree *t)
++{
++  if (t->val != '*')
++    abort();
 +
-+extern void abort (void);
-+int a = 3;
-+int b = 1;
++  if (t->l->val != 'A')
++    abort();
++  if (t->r->val != 'C')
++    abort();
 +
-+__attribute__((noinline)) long long
-+foo (int x, int y)
-+{
-+  return x / y;
++  if (t->l->l->val != 'a')
++    abort();
++  if (t->l->r->val != 'b')
++    abort();
++  if (t->r->l->val != 'c')
++    abort();
++  if (t->r->r->val != 'd')
++    abort();
 +}
 +
-+__attribute__((noinline)) int
-+bar (void)
++static void
++test3 (const __as tree *pt)
 +{
-+  int c = 2;
-+  c &= foo (1, b) > b;
-+  b = (a != 0) | c;
-+  return c;
++  tree t = *pt;
++  
++  if (t.val != '*')
++    abort();
++
++  if (t.l->val != 'A')
++    abort();
++  if (t.r->val != 'C')
++    abort();
++
++  if (t.l->l->val != 'a')
++    abort();
++  if (t.l->r->val != 'b')
++    abort();
++  if (t.r->l->val != 'c')
++    abort();
++  if (t.r->r->val != 'd')
++    abort();
 +}
 +
-+int
-+main (void)
++int main (void)
 +{
-+  if (bar () != 0 || b != 1)
-+    abort ();
++  const __as tree *t = &abcd;
++  test1();
++  test2 (&abcd);
++  test3 (&abcd);
++
++  __asm ("" : "+r" (t));
++  test2 (t);
++  test3 (t);
++  
++  exit (0);
 +  return 0;
 +}
-Index: gcc/testsuite/gcc.c-torture/execute/pr45262.c
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99" } */
++/* { dg-do run } */
++
++#define __as
++
++#include "addr-space-1.h"
+Index: gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c
+===================================================================
+--- gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c      (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,6 @@
++/* { dg-options "-std=gnu99" } */
++/* { dg-do run } */
++
++#define __as
++
++#include "addr-space-2.h"
+Index: gcc/testsuite/gcc.target/avr/progmem.h
+===================================================================
+--- gcc/testsuite/gcc.target/avr/progmem.h     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/testsuite/gcc.target/avr/progmem.h     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -5,6 +5,7 @@
+             static const char __c[] PROGMEM = (s);          \
+             &__c[0];}))
++#ifdef __AVR_HAVE_LPMX__
+ #define pgm_read_char(addr)                                 \
+     (__extension__({                                        \
+             unsigned int __addr16 = (unsigned int)(addr);   \
+@@ -12,3 +13,13 @@
+             __asm__ ("lpm %0, %a1"                          \
+                      : "=r" (__result) : "z" (__addr16));   \
+             __result; }))
++#else
++#define pgm_read_char(addr)                                 \
++    (__extension__({                                        \
++            unsigned int __addr16 = (unsigned int)(addr);   \
++            char __result;                                  \
++            __asm__ ("lpm" "\n\t"                           \
++                     "mov %0, r0"                           \
++                     : "=r" (__result) : "z" (__addr16));   \
++            __result; }))
++#endif
+Index: gcc/testsuite/gfortran.dg/intrinsic_8.f90
 ===================================================================
---- gcc/testsuite/gcc.c-torture/execute/pr45262.c      (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr45262.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,33 @@
-+/* PR middle-end/45262 */
+--- gcc/testsuite/gfortran.dg/intrinsic_8.f90  (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gfortran.dg/intrinsic_8.f90  (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,23 @@
++! { dg-do compile }
++!
++! PR fortran/52452
++!
++! Contributed by Roger Ferrer Ibanez
++!
++PROGRAM test_etime
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    CALL etime(tarray, result)
++END PROGRAM test_etime
++
++subroutine test_etime2
++    IMPLICIT NONE
++    INTRINSIC :: etime
++    REAL(4) :: tarray(1:2)
++    REAL(4) :: result
++
++    result = etime(tarray)
++END subroutine test_etime2
+Index: gcc/testsuite/gcc.dg/Wunused-var-3.c
+===================================================================
+--- gcc/testsuite/gcc.dg/Wunused-var-3.c       (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/gcc.dg/Wunused-var-3.c       (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,34 @@
++/* PR c/52577 */
++/* { dg-do compile } */
++/* { dg-options "-Wunused" } */
 +
-+extern void abort (void);
++typedef int V __attribute__((vector_size (sizeof (int) * 4)));
 +
-+int
-+foo (unsigned int x)
++void
++f1 (V *p)
 +{
-+  return ((int) x < 0) || ((int) (-x) < 0);
++  V mask = { 1, 2, 3, 0 };
++  *p = __builtin_shuffle (*p, mask);
 +}
 +
-+int
-+bar (unsigned int x)
++void
++f2 (V *p, V *q)
 +{
-+  return x >> 31 || (-x) >> 31;
++  V mask = { 1, 2, 3, 0 };
++  *p = __builtin_shuffle (*p, *q, mask);
 +}
 +
-+int
-+main (void)
++void
++f3 (V *p, V *mask)
 +{
-+  if (foo (1) != 1)
-+    abort ();
-+  if (foo (0) != 0)
-+    abort ();
-+  if (foo (-1) != 1)
-+    abort ();
-+  if (bar (1) != 1)
-+    abort ();
-+  if (bar (0) != 0)
-+    abort ();
-+  if (bar (-1) != 1)
-+    abort ();
-+  return 0;
++  V a = { 1, 2, 3, 0 };
++  *p = __builtin_shuffle (a, *mask);
++}
++
++void
++f4 (V *p, V *mask)
++{
++  V a = { 1, 2, 3, 0 };
++  V b = { 2, 3, 4, 1 };
++  *p = __builtin_shuffle (a, b, *mask);
 +}
-Index: gcc/testsuite/gcc.c-torture/compile/pr45109.c
+Index: gcc/testsuite/ChangeLog
 ===================================================================
---- gcc/testsuite/gcc.c-torture/compile/pr45109.c      (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr45109.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,38 @@
-+struct o_fsm_t;
-+struct o_fsm_event_t;
+--- gcc/testsuite/ChangeLog    (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/testsuite/ChangeLog    (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,60 @@
++2012-03-22  Paolo Carlini  <paolo.carlini@oracle.com>
 +
-+typedef void (*fn_t) (struct o_fsm_t *,
-+                    struct o_fsm_event_t const *);
++      PR c++/52487
++      * g++.dg/cpp0x/lambda/lambda-ice7.C: New.
 +
-+struct o_fsm_state_t {
-+    fn_t dispatch;
-+};
++2012-03-22  Tobias Burnus  <burnus@net-b.de>
 +
-+struct o_fsm_t {
-+    fn_t dispatch;
-+};
++      PR fortran/52452
++      * gfortran.dg/intrinsic_8.f90: New.
 +
-+extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm,
-+                                     struct o_fsm_state_t next_state);
-+static void plist_parser_state_start(struct o_fsm_t *fsm,
-+                                   struct o_fsm_event_t const *fsm_event);
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
 +
-+struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn)
-+{
-+  return *(struct o_fsm_state_t *)&dispatch_fcn;
-+}
++      PR c++/52671
++      * g++.dg/ext/attrib44.C: New test.
 +
-+typedef struct _o_plist_parser_t {
-+    struct o_fsm_t fsm;
-+} o_plist_parser_t;
++2012-03-22  Jason Merrill  <jason@redhat.com>
 +
-+static void plist_parser_state_start(struct o_fsm_t *fsm,
-+                                   struct o_fsm_event_t const *fsm_event)
-+{
-+}
++      * g++.dg/torture/pr52582.C: New.
 +
-+void o_plist_deserialize_xml(int fin)
-+{
-+  o_plist_parser_t parser;
-+  o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start));
-+}
-Index: gcc/testsuite/gcc.target/i386/pr45296.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/pr45296.c    (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/pr45296.c    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,4 @@
-+/* { dg-do compile } */
-+/* { dg-options "" } */
++2012-03-22  Georg-Johann Lay  <avr@gjlay.de>
 +
-+register long double F80 asm("st"); /* { dg-error "stack register" } */
-Index: gcc/testsuite/gcc.dg/20050330-2.c
-===================================================================
---- gcc/testsuite/gcc.dg/20050330-2.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/20050330-2.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -19,5 +19,3 @@
-     x->b[y] = x->b[y + 1];
-   x->b[x->a] = (void *) 0;
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/gomp/pr34610.c
-===================================================================
---- gcc/testsuite/gcc.dg/gomp/pr34610.c        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/gomp/pr34610.c        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -26,5 +26,3 @@
-   for (i = 0; i < 10; ++i)
-     bar (i);
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/gomp/pr27573.c
-===================================================================
---- gcc/testsuite/gcc.dg/gomp/pr27573.c        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/gomp/pr27573.c        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -16,5 +16,3 @@
-   }
-   return 0;
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/pr32773.c
-===================================================================
---- gcc/testsuite/gcc.dg/pr32773.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/pr32773.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -7,5 +7,3 @@
-   if (p)
-     *p = 0;
- } /* { dg-message "note: \[^\n\]*execution counts estimated" } */
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/20030107-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/20030107-1.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/20030107-1.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3,5 +3,3 @@
- extern void bar(void) __attribute__((noreturn));
- int foo (void) { bar(); }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/20051201-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/20051201-1.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/20051201-1.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -24,5 +24,3 @@
-   
-   res = bar ();
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/20030702-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/20030702-1.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/20030702-1.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,5 +8,3 @@
- {
-   fork ();
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/march.c
-===================================================================
---- gcc/testsuite/gcc.dg/march.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/march.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,4 +1,5 @@
- /* { dg-do compile } */
-+/* { dg-skip-if "" { *-*-* } { "-march=*" } { "" } } */
- /* { dg-options "-march=foo" } */
- /* { dg-error "march" "" { target *-*-* } 0 } */
- /* { dg-bogus "mtune" "" { target *-*-* } 0 } */
-Index: gcc/testsuite/gcc.dg/profile-dir-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/profile-dir-1.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/profile-dir-1.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,5 @@
- /* { dg-do compile } */
- /* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */
--/* { dg-require-host-local "" } */
- /* { dg-final { scan-tree-dump " ./profile-dir-1.gcda" "tree_profile" } } */
- int
-@@ -9,5 +8,4 @@
-   return 0;
- }
--/* { dg-final { cleanup-coverage-files } } */
- /* { dg-final { cleanup-tree-dump "tree_profile" } } */
-Index: gcc/testsuite/gcc.dg/pr24225.c
-===================================================================
---- gcc/testsuite/gcc.dg/pr24225.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/pr24225.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -13,5 +13,3 @@
-     return 0;
-   }
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/graphite/interchange-0.c
-===================================================================
---- gcc/testsuite/gcc.dg/graphite/interchange-0.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/graphite/interchange-0.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -47,4 +47,4 @@
- }
- /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
--/* { dg -final { cleanup-tree-dump "graphite" } } */
-+/* { dg-final { cleanup-tree-dump "graphite" } } */
-Index: gcc/testsuite/gcc.dg/pr26570.c
-===================================================================
---- gcc/testsuite/gcc.dg/pr26570.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/pr26570.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -5,5 +5,3 @@
- {
-   return a / b;
- } /* { dg-message "note: \[^\n\]*execution counts estimated" } */
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/lto/20091216-1_0.c
-===================================================================
---- gcc/testsuite/gcc.dg/lto/20091216-1_0.c    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/lto/20091216-1_0.c    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,10 @@
- /* { dg-lto-do run } */
-+#ifdef __ia64
-+asm (".globl start_\nstart_: nop 0");
-+#else
- asm (".globl start_; start_: nop");
-+#endif
- int
- main ()
-Index: gcc/testsuite/gcc.dg/lto/20090313_0.c
-===================================================================
---- gcc/testsuite/gcc.dg/lto/20090313_0.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/lto/20090313_0.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,4 +1,5 @@
- /* { dg-lto-options "-mcpu=v9" { target sparc*-*-* } } */
-+/* { dg-require-effective-target sync_char_short } */
- void
- _cairo_clip_path_reference () {
-   int a;
-Index: gcc/testsuite/gcc.dg/profile-dir-2.c
-===================================================================
---- gcc/testsuite/gcc.dg/profile-dir-2.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/profile-dir-2.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,5 @@
- /* { dg-do compile } */
- /* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */
--/* { dg-require-host-local "" } */
- /* { dg-final { scan-tree-dump "/profile-dir-2.gcda" "tree_profile" } } */
- int
-@@ -9,5 +8,4 @@
-   return 0;
- }
--/* { dg-final { cleanup-coverage-files } } */
- /* { dg-final { cleanup-tree-dump "tree_profile" } } */
-Index: gcc/testsuite/gcc.dg/tree-ssa/sra-10.c
-===================================================================
---- gcc/testsuite/gcc.dg/tree-ssa/sra-10.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/tree-ssa/sra-10.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-esra-details" } */
-+/* { dg-options "-O1 -fdump-tree-optimized" } */
- struct S
- {
-Index: gcc/testsuite/gcc.dg/pr45055.c
-===================================================================
---- gcc/testsuite/gcc.dg/pr45055.c     (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.dg/pr45055.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,41 @@
-+/* PR debug/45055 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -ftracer -fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" } */
++      Backport from 2012-03-20 mainline r185583.
 +
-+int colormap[10];
++      * gcc.target/avr/progmem.h (pgm_read_char): Define depending on
++      __AVR_HAVE_LPMX__
 +
-+extern int bar ();
++      Backport from 2012-03-20 mainline r185570.
 +
-+void
-+foo (int *img, int fp, int y, int *ptr, int depth, int c, int t, int xm)
-+{
-+  int x, color, count;
-+  for (; y; y--)
-+    {
-+      if (depth)
-+      {
-+        count = bar ();
-+        for (x = xm; x; x--)
-+          {
-+            if (c != 1)
-+              count = color = -1;
-+            if (count == 0)
-+              color = count = bar ();
-+            if (color)
-+              t = bar (fp);
-+            *ptr++ = colormap[t];
-+          }
-+      }
-+      switch (*img)
-+      {
-+      case 1:
-+        bar ();
-+      case 3:
-+      case -1:
-+      case -3:
-+        bar ();
-+      case -4:
-+        bar ();
-+      }
-+    }
-+}
-Index: gcc/testsuite/gcc.dg/20050325-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/20050325-1.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/20050325-1.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -17,5 +17,3 @@
- {
-   g (42, ff);
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/gcc.dg/pr45259.c
-===================================================================
---- gcc/testsuite/gcc.dg/pr45259.c     (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.dg/pr45259.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,42 @@
-+/* PR debug/45259 */
-+/* { dg-do compile } */
-+/* { dg-options "-g -O2 -fpic -w" { target fpic } } */
++      PR target/49868
++      * gcc.target/avr/torture/addr-space-2.h: New file.
++      * gcc.target/avr/torture/addr-space-2-g.h: New test.
++      * gcc.target/avr/torture/addr-space-2-0.h: New test.
++      * gcc.target/avr/torture/addr-space-2-1.h: New test.
++      * gcc.target/avr/torture/addr-space-2-x.h: New test.
 +
-+struct S { void (*bar) (long); };
-+struct T { struct S *t; };
-+int w;
-+extern int baz (int);
++      Backport from 2012-03-12 mainline r185255.
 +
-+void
-+foo (int x, int u, char *z)
-+{
-+  struct T *v;
-+  static void *y[256] = { &&l1, &&l2 };
-+  for (;;)
-+    switch (x)
-+      {
-+      l2:
-+      x = 9;
-+      case 9:
-+      goto *y[*z++];
-+      case 10:
-+      case 27:
-+      case 54:
-+      case 99:
-+      case 100:
-+      case 120:
-+      case 122:
-+      case 131:
-+      case 132:
-+      case 134:
-+      case 141:
-+      case 142:
-+      v->t->bar (u);
-+      v->t->bar (u);
-+      case 143:
-+      continue;
-+      l1:
-+      default:
-+      baz (w);
-+      }
-+}
-Index: gcc/testsuite/gcc.dg/profile-dir-3.c
-===================================================================
---- gcc/testsuite/gcc.dg/profile-dir-3.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/profile-dir-3.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,5 @@
- /* { dg-do compile } */
- /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-tree_profile" } */
--/* { dg-require-host-local "" } */
- /* { dg-final { scan-tree-dump " ./profile-dir-3.gcda" "tree_profile" } } */
- int
-@@ -9,5 +8,4 @@
-   return 0;
- }
--/* { dg-final { cleanup-coverage-files } } */
- /* { dg-final { cleanup-tree-dump "tree_profile" } } */
-Index: gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
-===================================================================
---- gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c    (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,20 @@
-+/* PR tree-optimization/45241 */
-+/* { dg-do compile } */
-+/* { dg-options "-fno-tree-vectorize" } */
++      PR target/49868
++      * gcc.target/avr/torture/addr-space-1.h: New file.
++      * gcc.target/avr/torture/addr-space-g.h: New test.
++      * gcc.target/avr/torture/addr-space-0.h: New test.
++      * gcc.target/avr/torture/addr-space-1.h: New test.
++      * gcc.target/avr/torture/addr-space-x.h: New test.
 +
-+int
-+foo (short x)
-+{
-+  short i, y;
-+  int sum;
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
 +
-+  for (i = 0; i < x; i++)
-+    y = x * i;
++      Backported from mainline
++      2012-03-14  Jakub Jelinek  <jakub@redhat.com>
 +
-+  for (i = x; i > 0; i--)
-+    sum += y;
++      PR c++/52521
++      * g++.dg/cpp0x/udlit-args2.C: New test.
 +
-+  return sum;
-+}
++      2012-03-13  Jakub Jelinek  <jakub@redhat.com>
 +
-+/* { dg-final { cleanup-tree-dump "vect" } } */
-Index: gcc/testsuite/gcc.dg/mtune.c
-===================================================================
---- gcc/testsuite/gcc.dg/mtune.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/mtune.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,4 +1,5 @@
- /* { dg-do compile } */
-+/* { dg-skip-if "" { *-*-* } { "-mtune=*" } { "" } } */
- /* { dg-options "-mtune=foo" } */
- /* { dg-error "mtune" "" { target *-*-* } 0 } */
- /* { dg-bogus "march" "" { target *-*-* } 0 } */
-Index: gcc/testsuite/gcc.dg/20050309-1.c
++      PR c/52577
++      * gcc.dg/Wunused-var-3.c: New test.
++
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: gcc/testsuite/g++.dg/ext/attrib44.C
 ===================================================================
---- gcc/testsuite/gcc.dg/20050309-1.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gcc.dg/20050309-1.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -34,5 +34,3 @@
-   error (1, 0, 0, node, "%s", name);
-   return 0;
- }
--
--/* { dg-final { cleanup-coverage-files } } */
-Index: gcc/testsuite/ChangeLog
+--- gcc/testsuite/g++.dg/ext/attrib44.C        (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/g++.dg/ext/attrib44.C        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,4 @@
++// PR c++/52671
++// { dg-do compile }
++__attribute__ ((deprecated)) enum E { E0 };   // { dg-warning "attribute ignored in declaration of" }
++// { dg-message "must follow the" "" { target *-*-* } 3 }
+Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C
 ===================================================================
---- gcc/testsuite/ChangeLog    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/ChangeLog    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,3 +1,150 @@
-+2010-08-25  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR rtl-optimization/44858
-+      * gcc.c-torture/execute/pr44858.c: New test.
-+
-+      PR rtl-optimization/45400
-+      * g++.dg/other/i386-8.C: New test.
-+
-+2010-08-19  Jason Merrill  <jason@redhat.com>
-+
-+      * g++.dg/init/value8.C: New.
-+
-+2010-08-20  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR fortran/45344
-+      Backport from mainline
-+      2010-05-14  Jakub Jelinek  <jakub@redhat.com>
-+
-+      * gfortran.dg/gomp/pr44036-1.f90: Adjust.
-+
-+2010-08-17  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      PR target/45296
-+      * gcc.target/i386/pr45296.c: New test.
-+
-+2010-08-16  Changpeng Fang  <changpeng.fang@amd.com>
-+
-+        PR tree-optimization/45241
-+        * gcc.dg/vect/no-tree-pre-pr45241.c: New test.
-+
-+2010-08-14  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * g++.dg/cast.C: Change fields of structures to "long" to pass
-+      the test on targets with STRUCTURE_SIZE_BOUNDARY != BITS_PER_UNIT.
-+      * g++.dg/cpp0x/iop.C: Ditto.
-+      * g++.dg/cpp0x/named_refs.C: Ditto.
-+      * g++.dg/cpp0x/rv1p.C: Ditto.
-+      * g++.dg/cpp0x/rv2p.C: Ditto.
-+      * g++.dg/cpp0x/rv3p.C: Ditto.
-+      * g++.dg/cpp0x/rv4p.C: Ditto.
-+      * g++.dg/cpp0x/rv5p.C: Ditto.
-+      * g++.dg/cpp0x/rv6p.C: Ditto.
-+      * g++.dg/cpp0x/rv7p.C: Ditto.
-+      * g++.dg/cpp0x/rv8p.C: Ditto.
-+      * g++.dg/cpp0x/unnamed_refs.C: Ditto.
-+
-+2010-08-12  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR middle-end/45262
-+      * gcc.c-torture/execute/pr45262.c: New test.
-+
-+      PR debug/45259
-+      * gcc.dg/pr45259.c: New test.
-+
-+      Backport from mainline
-+      2010-07-30  Jakub Jelinek  <jakub@redhat.com>
+--- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C    (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice7.C    (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,9 @@
++// PR c++/52487
++// { dg-options "-std=c++0x" }
 +
-+      PR debug/45055
-+      PR rtl-optimization/45137
-+      * gcc.dg/pr45055.c: New test.
++struct A;         // { dg-error "forward declaration" }
 +
-+2010-08-08  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * gcc.dg/20030107-1.c: Do not call cleanup-coverage-files.
-+      * gcc.dg/20030702-1.c: Ditto.
-+      * gcc.dg/20050309-1.c: Ditto.
-+      * gcc.dg/20050325-1.c: Ditto.
-+      * gcc.dg/20050330-2.c: Ditto.
-+      * gcc.dg/20051201-1.c: Ditto.
-+      * gcc.dg/gomp/pr27573.c: Ditto.
-+      * gcc.dg/gomp/pr34610.c: Ditto.
-+      * gcc.dg/pr24225.c: Ditto.
-+      * gcc.dg/pr26570.c: Ditto.
-+      * gcc.dg/pr32773.c: Ditto.
-+      * g++.dg/gcov/gcov-6.C: Ditto.
-+      * g++.dg/gomp/pr34608.C: Ditto.
-+      * gfortran.dg/gomp/pr27573.f90: Ditto.
-+
-+      * gcc.dg/profile-dir-1.c: Do not call cleanup-coverage-files.  Remove
-+      dg-require-host-local dg directive.
-+      * gcc.dg/profile-dir-2.c: Ditto.
-+      * gcc.dg/profile-dir-3.c: Ditto.
-+
-+2010-08-08  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/45034
-+      * gcc.c-torture/execute/pr45034.c: New testcase.
-+
-+2010-08-08  Richard Guenther  <rguenther@suse.de>
-+
-+      PR tree-optimization/45109
-+      * gcc.c-torture/compile/pr45109.c: New testcase.
-+
-+2010-08-08  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * gcc.dg/march.c: Skip if -march defined.
-+      * gcc.dg/mtune.c: Skip if -mtune defined.
-+
-+      * g++.old-deja/g++.jason/thunk3.C: Skip for targets with
-+      generic thunk support.
-+
-+      Backport from mainline:
-+      2010-05-25  Richard Guenther  <rguenther@suse.de>
-+
-+      * gcc.dg/tree-ssa/sra-10.c: Do not dump esra details.
-+
-+      Backport from mainline:
-+      2010-04-22  Uros Bizjak  <ubizjak@gmail.com>
++void foo(A& a)
++{
++  [=](){a;};      // { dg-error "invalid use of incomplete type" }
++}
+Index: gcc/testsuite/g++.dg/cpp0x/udlit-args2.C
+===================================================================
+--- gcc/testsuite/g++.dg/cpp0x/udlit-args2.C   (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/g++.dg/cpp0x/udlit-args2.C   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,15 @@
++// PR c++/52521
++// { dg-do compile }
++// { dg-options -std=c++11 }
 +
-+      * gcc.dg/graphite/interchange-0.c: Fix dg-final directive.
++#include <cstddef>
 +
-+2010-08-05  Janus Weil  <janus@gcc.gnu.org>
++int operator "" _a (const char *);
++int operator "" _a (const char *, std::size_t);
++int a = 123_a;
++int a2 = "abc"_a;
 +
-+      PR fortran/44929
-+      * gfortran.dg/allocate_derived_3.f90: New.
++int operator "" _b (const char *, std::size_t);
++int operator "" _b (const char *);
++int b = 123_b;
++int b2 = "abc"_b;
+Index: gcc/testsuite/g++.dg/torture/pr52582.C
+===================================================================
+--- gcc/testsuite/g++.dg/torture/pr52582.C     (.../tags/gcc_4_7_0_release)    (wersja 0)
++++ gcc/testsuite/g++.dg/torture/pr52582.C     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -0,0 +1,23 @@
++// PR c++/52582
 +
-+2010-08-04  Uros Bizjak  <ubizjak@gmail.com>
++inline void *operator new (__SIZE_TYPE__, void *p) throw ()
++{
++  return p;
++}
++struct B
++{
++  virtual ~B ();
++  B ();
++};
++struct A : B
++{
++  A () : B () {}
++  virtual void bar ();
++};
++void
++foo ()
++{
++  char a[64];
++  B *b = new (&a) A ();
++  b->~B ();
++}
+Index: gcc/cp/class.c
+===================================================================
+--- gcc/cp/class.c     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/cp/class.c     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -3145,8 +3145,9 @@
+       CLASSTYPE_NON_AGGREGATE (t) = 1;
+       /* If at least one non-static data member is non-literal, the whole
+-         class becomes non-literal.  */
+-      if (!literal_type_p (type))
++         class becomes non-literal.  Note: if the type is incomplete we
++       will complain later on.  */
++      if (COMPLETE_TYPE_P (type) && !literal_type_p (type))
+         CLASSTYPE_LITERAL_P (t) = false;
+       /* A standard-layout class is a class that:
+Index: gcc/cp/decl.c
+===================================================================
+--- gcc/cp/decl.c      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/cp/decl.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -4219,7 +4219,8 @@
+   if (declspecs->attributes)
+     {
+       location_t loc = input_location;
+-      if (!CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type))
++      if (!CLASS_TYPE_P (declared_type)
++        || !CLASSTYPE_TEMPLATE_INSTANTIATION (declared_type))
+       /* For a non-template class, use the name location; for a template
+          class (an explicit instantiation), use the current location.  */
+       input_location = location_of (declared_type);
+Index: gcc/cp/method.c
+===================================================================
+--- gcc/cp/method.c    (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/cp/method.c    (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1590,6 +1590,7 @@
+       DECL_DELETED_FN (fn) = deleted_p;
+       DECL_DECLARED_CONSTEXPR_P (fn) = constexpr_p;
+     }
++  DECL_EXTERNAL (fn) = true;
+   DECL_NOT_REALLY_EXTERN (fn) = 1;
+   DECL_DECLARED_INLINE_P (fn) = 1;
+   gcc_assert (!TREE_USED (fn));
+Index: gcc/cp/ChangeLog
+===================================================================
+--- gcc/cp/ChangeLog   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/cp/ChangeLog   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,30 @@
++2012-03-22  Paolo Carlini  <paolo.carlini@oracle.com>
 +
-+      Backport from mainline:
-+      2010-07-20  Bingfeng Mei  <bmei@broadcom.com>
++      PR c++/52487
++      * class.c (check_field_decls): Call literal_type_p only
++      on complete types.
 +
-+      * gcc.dg/lto/20090313_0.c: Use dg-require-effective-target
-+      sync_char_short.
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
 +
-+      2010-06-24  Steve Ellcey  <sje@cup.hp.com>
++      PR c++/52671
++      * decl.c (check_tag_decl): Only use CLASSTYPE_TEMPLATE_INSTANTIATION
++      on CLASS_TYPE_P types.
 +
-+      PR testsuite/43283
-+      * gcc.dg/lto/20091216-1_0.c: Use newline instead of semicolon
-+      and add argument to nop for IA64.
++2012-03-22  Jason Merrill  <jason@redhat.com>
 +
-+2010-08-03  Martin Jambor  <mjambor@suse.cz>
++      PR c++/52582
++      * method.c (implicitly_declare_fn): Set DECL_EXTERNAL.
 +
-+      PR tree-optimization/44914
-+      * g++.dg/tree-ssa/pr44914.C: New test.
++2012-03-22  Jakub Jelinek  <jakub@redhat.com>
 +
-+2010-08-02  Uros Bizjak  <ubizjak@gmail.com>
++      Backported from mainline
++      2012-03-14  Jakub Jelinek  <jakub@redhat.com>
 +
-+      * lib/gcc-dg.exp (cleanup-coverage-files): Remove options from
-+      test name.
-+      (cleanup-repo-files): Ditto.
-+      (cleanup-saved-temps): Ditto.
++      PR c++/52521
++      * parser.c (lookup_literal_operator): Return fn only if
++      processed all arguments from args vector and argtypes is
++      void_list_node.
 +
-+2010-07-31  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: gcc/cp/parser.c
+===================================================================
+--- gcc/cp/parser.c    (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/cp/parser.c    (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,6 +1,6 @@
+ /* C++ Parser.
+    Copyright (C) 2000, 2001, 2002, 2003, 2004,
+-   2005, 2007, 2008, 2009, 2010, 2011  Free Software Foundation, Inc.
++   2005, 2007, 2008, 2009, 2010, 2011, 2012  Free Software Foundation, Inc.
+    Written by Mark Mitchell <mark@codesourcery.com>.
+    This file is part of GCC.
+@@ -3581,7 +3581,13 @@
+                                      TREE_TYPE (tparm))))
+               found = false;
+           }
+-        if (found)
++        if (found
++            && ix == VEC_length (tree, args)
++            /* May be this should be sufficient_parms_p instead,
++               depending on how exactly should user-defined literals
++               work in presence of default arguments on the literal
++               operator parameters.  */
++            && argtypes == void_list_node)
+           return fn;
+       }
+     }
+Index: gcc/fortran/ChangeLog
+===================================================================
+--- gcc/fortran/ChangeLog      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/fortran/ChangeLog      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,9 @@
++2012-03-22  Tobias Burnus  <burnus@net-b.de>
 +
-+      PR c++/45112
-+      * testsuite/g++.dg/pr45112.C: New test.
++      PR fortran/52452
++      * resolve.c (resolve_intrinsic): Don't search for a
++      function if we know that it is a subroutine.
 +
- 2010-07-31  Release Manager
+ 2012-03-22  Release Manager
+       * GCC 4.7.0 released.
+Index: gcc/fortran/resolve.c
+===================================================================
+--- gcc/fortran/resolve.c      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/fortran/resolve.c      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1496,7 +1496,7 @@
  
-       * GCC 4.5.1 released.
-@@ -479,15 +626,15 @@
-       Backport from mainline
-       2010-05-17  Martin Jambor  <mjambor@suse.cz>
+   if (sym->intmod_sym_id)
+     isym = gfc_intrinsic_function_by_id ((gfc_isym_id) sym->intmod_sym_id);
+-  else
++  else if (!sym->attr.subroutine)
+     isym = gfc_find_function (sym->name);
  
--        PR middle-end/44133
--        * gcc.dg/tree-ssa/pr44133.c: New test.
-+      PR middle-end/44133
-+      * gcc.dg/tree-ssa/pr44133.c: New test.
+   if (isym)
+Index: gcc/BASE-VER
+===================================================================
+--- gcc/BASE-VER       (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/BASE-VER       (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1 +1 @@
+-4.7.0
++4.7.1
+Index: gcc/tree-nested.c
+===================================================================
+--- gcc/tree-nested.c  (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/tree-nested.c  (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1954,6 +1954,7 @@
+ convert_tramp_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
+                             struct walk_stmt_info *wi)
+ {
++  struct nesting_info *info = (struct nesting_info *) wi->info;
+   gimple stmt = gsi_stmt (*gsi);
+   switch (gimple_code (stmt))
+@@ -1966,16 +1967,33 @@
+       for (i = 0; i < nargs; i++)
+         walk_tree (gimple_call_arg_ptr (stmt, i), convert_tramp_reference_op,
+                    wi, NULL);
++      break;
++      }
  
- 2010-06-29  Martin Jambor  <mjambor@suse.cz>
+-      *handled_ops_p = true;
+-      return NULL_TREE;
++    case GIMPLE_OMP_PARALLEL:
++    case GIMPLE_OMP_TASK:
++      {
++      tree save_local_var_chain;
++        walk_gimple_op (stmt, convert_tramp_reference_op, wi);
++      save_local_var_chain = info->new_local_var_chain;
++      info->new_local_var_chain = NULL;
++        walk_body (convert_tramp_reference_stmt, convert_tramp_reference_op,
++                 info, gimple_omp_body (stmt));
++      if (info->new_local_var_chain)
++        declare_vars (info->new_local_var_chain,
++                      gimple_seq_first_stmt (gimple_omp_body (stmt)),
++                      false);
++      info->new_local_var_chain = save_local_var_chain;
+       }
++      break;
  
-       Backport from mainline
-       2010-04-13  Martin Jambor  <mjambor@suse.cz>
+     default:
++      *handled_ops_p = false;
++      return NULL_TREE;
+       break;
+     }
  
--        * gcc.dg/tree-ssa/sra-9.c: New test.
-+      * gcc.dg/tree-ssa/sra-9.c: New test.
+-  *handled_ops_p = false;
++  *handled_ops_p = true;
+   return NULL_TREE;
+ }
+Index: gcc/output.h
+===================================================================
+--- gcc/output.h       (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/output.h       (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -446,8 +446,8 @@
+ #define SECTION_STYLE_MASK 0x600000   /* bits used for SECTION_STYLE */
+ #define SECTION_COMMON   0x800000     /* contains common data */
+ #define SECTION_RELRO  0x1000000      /* data is readonly after relocation processing */
+-#define SECTION_MACH_DEP 0x2000000    /* subsequent bits reserved for target */
+-#define SECTION_EXCLUDE  0x4000000      /* discarded by the linker */
++#define SECTION_EXCLUDE  0x2000000    /* discarded by the linker */
++#define SECTION_MACH_DEP 0x4000000    /* subsequent bits reserved for target */
+ /* This SECTION_STYLE is used for unnamed sections that we can switch
+    to using a special assembler directive.  */
+Index: gcc/c-parser.c
+===================================================================
+--- gcc/c-parser.c     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/c-parser.c     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,7 +1,7 @@
+ /* Parser for C and Objective-C.
+    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+-   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
+-   Free Software Foundation, Inc.
++   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011,
++   2012 Free Software Foundation, Inc.
+    Parser actions based on the old Bison parser; structure somewhat
+    influenced by and fragments based on the C++ parser.
+@@ -6647,6 +6647,8 @@
+       case RID_BUILTIN_SHUFFLE:
+         {
+           VEC(c_expr_t,gc) *cexpr_list;
++          unsigned int i;
++          c_expr_t *p;
+           c_parser_consume_token (parser);
+           if (!c_parser_get_builtin_args (parser,
+@@ -6657,6 +6659,9 @@
+               break;
+             }
++          FOR_EACH_VEC_ELT (c_expr_t, cexpr_list, i, p)
++            mark_exp_read (p->value);
++
+           if (VEC_length (c_expr_t, cexpr_list) == 2)
+             expr.value =
+               c_build_vec_perm_expr
+Index: gcc/config/i386/nmmintrin.h
+===================================================================
+--- gcc/config/i386/nmmintrin.h        (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/i386/nmmintrin.h        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
++/* Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc.
  
- 2010-06-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+    This file is part of GCC.
  
-@@ -636,7 +783,7 @@
-       PR testsuite/44518
-       * obj-c++.dg/encode-2.mm: XFAIL new test for all targets.
-       * obj-c++.dg/encode-3.mm: Restore XFAIL run for all targets.
--      
-+
- 2010-06-12  Daniel Franke  <franke.daniel@gmail.com>
+@@ -19,7 +19,7 @@
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+-   <http://www.gnu.org/licenses/>.
++   <http://www.gnu.org/licenses/>.  */
  
-       PR fortran/44347
-Index: gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
+ /* Implemented from the specification included in the Intel C++ Compiler
+    User Guide and Reference, version 10.0.  */
+Index: gcc/config/i386/smmintrin.h
 ===================================================================
---- gcc/testsuite/g++.old-deja/g++.jason/thunk3.C      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.old-deja/g++.jason/thunk3.C      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,4 +1,5 @@
--// { dg-do run { xfail rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } }
-+// { dg-do run }
-+// { dg-skip-if "fails with generic thunk support" { rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } { "*" } { "" } }
- // Test that variadic function calls using thunks work right.
- // Note that this will break on any target that uses the generic thunk
- //  support, because it doesn't support variadic functions.
-Index: gcc/testsuite/g++.dg/other/i386-8.C
+--- gcc/config/i386/smmintrin.h        (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/i386/smmintrin.h        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
++/* Copyright (C) 2007, 2008, 2009, 2010, 2012 Free Software Foundation, Inc.
+    This file is part of GCC.
+@@ -19,9 +19,8 @@
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+-   <http://www.gnu.org/licenses/>.
++   <http://www.gnu.org/licenses/>.  */
+-
+ /* Implemented from the specification included in the Intel C++ Compiler
+    User Guide and Reference, version 10.0.  */
+Index: gcc/config/sh/sh.c
 ===================================================================
---- gcc/testsuite/g++.dg/other/i386-8.C        (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/other/i386-8.C        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,23 @@
-+// PR rtl-optimization/45400
-+// { dg-do compile { target i?86-*-* x86_64-*-* } }
-+// { dg-options "-O2 -msse2" }
-+// { dg-options "-O2 -msse2 -fpic" { target fpic } }
-+// { dg-require-effective-target sse2 }
-+
-+#include <xmmintrin.h>
+--- gcc/config/sh/sh.c (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/sh/sh.c (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,6 +1,6 @@
+ /* Output routines for GCC for Renesas / SuperH SH.
+    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
++   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+    Free Software Foundation, Inc.
+    Contributed by Steve Chamberlain (sac@cygnus.com).
+    Improved by Jim Wilson (wilson@cygnus.com).
+@@ -11497,9 +11497,16 @@
+        && REGCLASS_HAS_GENERAL_REG (srcclass))
+       || (REGCLASS_HAS_GENERAL_REG (dstclass)
+         && REGCLASS_HAS_FP_REG (srcclass)))
+-    return ((TARGET_SHMEDIA ? 4 : TARGET_FMOVD ? 8 : 12)
+-          * ((GET_MODE_SIZE (mode) + 7) / 8U));
++    {
++      /* Discourage trying to use fp regs for a pointer.  This also
++       discourages fp regs with SImode because Pmode is an alias
++       of SImode on this target.  See PR target/48596.  */
++      int addend = (mode == Pmode) ? 40 : 0;
++      return (((TARGET_SHMEDIA ? 4 : TARGET_FMOVD ? 8 : 12) + addend)
++            * ((GET_MODE_SIZE (mode) + 7) / 8U));
++    }
 +
-+static inline unsigned short
-+bar (unsigned short x)
-+{
-+  return ((x << 8) | (x >> 8));
-+}
+   if ((dstclass == FPUL_REGS
+        && REGCLASS_HAS_GENERAL_REG (srcclass))
+       || (srcclass == FPUL_REGS
+Index: gcc/config/avr/avr.md
+===================================================================
+--- gcc/config/avr/avr.md      (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/avr/avr.md      (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -63,6 +63,7 @@
+   [UNSPEC_STRLEN
+    UNSPEC_MOVMEM
+    UNSPEC_INDEX_JMP
++   UNSPEC_LPM
+    UNSPEC_FMUL
+    UNSPEC_FMULS
+    UNSPEC_FMULSU
+@@ -77,6 +78,7 @@
+    UNSPECV_WRITE_SP
+    UNSPECV_GOTO_RECEIVER
+    UNSPECV_ENABLE_IRQS
++   UNSPECV_MEMORY_BARRIER
+    UNSPECV_NOP
+    UNSPECV_SLEEP
+    UNSPECV_WDR
+@@ -139,7 +141,7 @@
+   "out_bitop, out_plus, out_plus_noclobber, plus64, addto_sp,
+    tsthi, tstpsi, tstsi, compare, compare64, call,
+    mov8, mov16, mov24, mov32, reload_in16, reload_in24, reload_in32,
+-   xload, movmem,
++   xload, movmem, load_lpm,
+    ashlqi, ashrqi, lshrqi,
+    ashlhi, ashrhi, lshrhi,
+    ashlsi, ashrsi, lshrsi,
+@@ -363,36 +365,63 @@
+ ;;========================================================================
+ ;; Move stuff around
+-(define_expand "load<mode>_libgcc"
+-  [(set (match_dup 3)
+-        (match_dup 2))
+-   (set (reg:MOVMODE 22)
+-        (match_operand:MOVMODE 1 "memory_operand" ""))
+-   (set (match_operand:MOVMODE 0 "register_operand" "")
+-        (reg:MOVMODE 22))]
+-  "avr_load_libgcc_p (operands[1])"
+-  {
+-    operands[3] = gen_rtx_REG (HImode, REG_Z);
+-    operands[2] = force_operand (XEXP (operands[1], 0), NULL_RTX);
+-    operands[1] = replace_equiv_address (operands[1], operands[3]);
+-    set_mem_addr_space (operands[1], ADDR_SPACE_FLASH);
+-  })
+-    
++;; Represent a load from __flash that needs libgcc support as UNSPEC.
++;; This is legal because we read from non-changing memory.
++;; For rationale see the FIXME below.
++
++;; "load_psi_libgcc"    
++;; "load_si_libgcc"    
++;; "load_sf_libgcc"    
+ (define_insn "load_<mode>_libgcc"
+   [(set (reg:MOVMODE 22)
+-        (match_operand:MOVMODE 0 "memory_operand" "m,m"))]
+-  "avr_load_libgcc_p (operands[0])
+-   && REG_P (XEXP (operands[0], 0))
+-   && REG_Z == REGNO (XEXP (operands[0], 0))"
++        (unspec:MOVMODE [(reg:HI REG_Z)]
++                        UNSPEC_LPM))]
++  ""
+   {
+-    operands[0] = GEN_INT (GET_MODE_SIZE (<MODE>mode));
+-    return "%~call __load_%0";
++    rtx n_bytes = GEN_INT (GET_MODE_SIZE (<MODE>mode));
++    output_asm_insn ("%~call __load_%0", &n_bytes);
++    return "";
+   }
+-  [(set_attr "length" "1,2")
+-   (set_attr "isa" "rjmp,jmp")
++  [(set_attr "type" "xcall")
+    (set_attr "cc" "clobber")])
++;; Similar for inline reads from flash.  We use UNSPEC instead
++;; of MEM for the same reason as above: PR52543.
++;; $1 contains the memory segment.
++
++(define_insn "load_<mode>"
++  [(set (match_operand:MOVMODE 0 "register_operand" "=r")
++        (unspec:MOVMODE [(reg:HI REG_Z)
++                         (match_operand:QI 1 "reg_or_0_operand" "rL")]
++                        UNSPEC_LPM))]
++  "(CONST_INT_P (operands[1]) && AVR_HAVE_LPMX)
++   || (REG_P (operands[1]) && AVR_HAVE_ELPMX)"
++  {
++    return avr_load_lpm (insn, operands, NULL);
++  }
++  [(set_attr "adjust_len" "load_lpm")
++   (set_attr "cc" "clobber")])
 +
-+unsigned int
-+foo (float *x, short *y)
-+{
-+  __m128 a = _mm_set_ps1 (32767.5f);
-+  __m128 b = _mm_mul_ps (_mm_load_ps (x), a);
-+  __m64 c = _mm_cvtps_pi16 (b);
-+  __builtin_memcpy (y, &c, sizeof (short) * 4);
-+  y[0] = bar (y[0]);
-+}
-Index: gcc/testsuite/g++.dg/tree-ssa/pr44914.C
-===================================================================
---- gcc/testsuite/g++.dg/tree-ssa/pr44914.C    (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/tree-ssa/pr44914.C    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,20 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O1 -fipa-sra -fnon-call-exceptions" } */
 +
-+struct A
-+{
-+  ~A () { }
-+};
++;; Similar to above for the complementary situation when there is no [E]LPMx.
++;; Clobber Z in that case.
 +
-+struct B
-+{
-+  A a;
-+  int i;
-+  void f (int) { }
-+  B ()
++(define_insn "load_<mode>_clobber"
++  [(set (match_operand:MOVMODE 0 "register_operand" "=r")
++        (unspec:MOVMODE [(reg:HI REG_Z)
++                         (match_operand:QI 1 "reg_or_0_operand" "rL")]
++                        UNSPEC_LPM))
++   (clobber (reg:HI REG_Z))]
++  "!((CONST_INT_P (operands[1]) && AVR_HAVE_LPMX)
++     || (REG_P (operands[1]) && AVR_HAVE_ELPMX))"
 +  {
-+    f (i);
++    return avr_load_lpm (insn, operands, NULL);
 +  }
-+};
-+
-+B b;
-Index: gcc/testsuite/g++.dg/pr45112.C
-===================================================================
---- gcc/testsuite/g++.dg/pr45112.C     (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/pr45112.C     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,12 @@
-+/* { dg-do compile } */
-+
-+struct JSString
-+{
-+  unsigned char mLength;
-+  static JSString unitStringTable[];
-+};
++  [(set_attr "adjust_len" "load_lpm")
++   (set_attr "cc" "clobber")])
++
++
+ (define_insn_and_split "xload8_A"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+         (match_operand:QI 1 "memory_operand"    "m"))
+@@ -418,9 +447,15 @@
+     DONE;
+   })
++;; "xloadqi_A"
++;; "xloadhi_A"
++;; "xloadpsi_A"
++;; "xloadsi_A"
++;; "xloadsf_A"
+ (define_insn_and_split "xload<mode>_A"
+   [(set (match_operand:MOVMODE 0 "register_operand" "=r")
+         (match_operand:MOVMODE 1 "memory_operand"    "m"))
++   (clobber (reg:MOVMODE 22))
+    (clobber (reg:QI 21))
+    (clobber (reg:HI REG_Z))]
+   "can_create_pseudo_p()
+@@ -461,7 +496,7 @@
+   {
+     return avr_out_xload (insn, operands, NULL);
+   }
+-  [(set_attr "length" "3,4")
++  [(set_attr "length" "4,4")
+    (set_attr "adjust_len" "*,xload")
+    (set_attr "isa" "lpmx,lpm")
+    (set_attr "cc" "none")])
+@@ -532,12 +567,55 @@
+       DONE;
+     }
++    /* For old devices without LPMx, prefer __flash loads per libcall.  */
 +
-+JSString JSString::unitStringTable[] __attribute__ ((aligned (8))) = { 1 };
+     if (avr_load_libgcc_p (src))
+       {
+-        /* For the small devices, do loads per libgcc call.  */
+-        emit_insn (gen_load<mode>_libgcc (dest, src));
++        emit_move_insn (gen_rtx_REG (Pmode, REG_Z),
++                        force_reg (Pmode, XEXP (src, 0)));
++
++        emit_insn (gen_load_<mode>_libgcc ());
++        emit_move_insn (dest, gen_rtx_REG (<MODE>mode, 22));
+         DONE;
+       }
 +
-+int bug [__alignof__ (JSString::unitStringTable) >= 8 ? 1 : -1];
++    /* ; FIXME:  Hack around PR rtl-optimization/52543.
++       ; lower-subreg.c splits loads from the 16-bit address spaces which
++       ; causes code bloat because each load need his setting of RAMPZ.
++       ; Moreover, the split will happen in such a way that the loads don't
++       ; take advantage of POST_INC addressing.  Thus, we use UNSPEC to
++       ; represent these loads instead.  Notice that this is legitimate
++       ; because the memory content does not change:  Loads from the same
++       ; address will yield the same value.
++       ; POST_INC addressing would make the addresses mode_dependent and could
++       ; work around that PR, too.  However, notice that it is *not* legitimate
++       ; to expand to POST_INC at expand time:  The following passes assert
++       ; that pre-/post-modify addressing is introduced by .auto_inc_dec and
++       ; does not exist before that pass.  */
++
++    if (avr_mem_flash_p (src)
++        && (GET_MODE_SIZE (<MODE>mode) > 1
++            || MEM_ADDR_SPACE (src) != ADDR_SPACE_FLASH))
++      {
++        rtx xsegment = GEN_INT (avr_addrspace[MEM_ADDR_SPACE (src)].segment);
++        if (!AVR_HAVE_ELPM)
++          xsegment = const0_rtx;
++        if (xsegment != const0_rtx)
++          xsegment = force_reg (QImode, xsegment);
++
++        emit_move_insn (gen_rtx_REG (Pmode, REG_Z),
++                        force_reg (Pmode, XEXP (src, 0)));
++
++        if ((CONST_INT_P (xsegment) && AVR_HAVE_LPMX)
++            || (REG_P (xsegment) && AVR_HAVE_ELPMX))
++          emit_insn (gen_load_<mode> (dest, xsegment));
++        else
++          emit_insn (gen_load_<mode>_clobber (dest, xsegment));
++        DONE;
++      }
 +
-Index: gcc/testsuite/g++.dg/cpp0x/rv6p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv6p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv6p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -43,12 +43,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123456(a))           == 1> t1;
--    sa<sizeof(sink_6_123456(ca))          == 2> t2;
--    sa<sizeof(sink_6_123456(va))          == 3> t3;
--    sa<sizeof(sink_6_123456(cva))         == 4> t4;
--    sa<sizeof(sink_6_123456(source()))    == 5> t5;
--    sa<sizeof(sink_6_123456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_6_123456(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123456(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123456(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_123456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
++    /* ; The only address-space for which we use plain MEM and reload
++       ; machinery are 1-byte loads from __flash.  */
+   })
+ ;;========================================================================
+@@ -677,40 +755,6 @@
+     operands[5] = gen_rtx_REG (HImode, REGNO (operands[3]));
+   })
+-;; For LPM loads from AS1 we split 
+-;;    R = *Z
+-;; to
+-;;    R = *Z++
+-;;    Z = Z - sizeof (R)
+-;;
+-;; so that the second instruction can be optimized out.
+-
+-(define_split ; "split-lpmx"
+-  [(set (match_operand:HISI 0 "register_operand" "")
+-        (match_operand:HISI 1 "memory_operand" ""))]
+-  "reload_completed
+-   && AVR_HAVE_LPMX"
+-  [(set (match_dup 0)
+-        (match_dup 2))
+-   (set (match_dup 3)
+-        (plus:HI (match_dup 3)
+-                 (match_dup 4)))]
+-  {
+-     rtx addr = XEXP (operands[1], 0);
+-
+-     if (!avr_mem_flash_p (operands[1])
+-         || !REG_P (addr)
+-         || reg_overlap_mentioned_p (addr, operands[0]))
+-       {
+-         FAIL;
+-       }
+-
+-    operands[2] = replace_equiv_address (operands[1],
+-                                         gen_rtx_POST_INC (Pmode, addr));
+-    operands[3] = addr;
+-    operands[4] = gen_int_mode (-GET_MODE_SIZE (<MODE>mode), HImode);
+-  })
+-
+ ;;==========================================================================
+ ;; xpointer move (24 bit)
+   
+@@ -1081,15 +1125,16 @@
+    (set_attr "adjust_len" "addto_sp")])
+ (define_insn "*addhi3"
+-  [(set (match_operand:HI 0 "register_operand"          "=r,d,d")
+-        (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0")
+-                 (match_operand:HI 2 "nonmemory_operand" "r,s,n")))]
++  [(set (match_operand:HI 0 "register_operand"          "=r,d,!w,d")
++        (plus:HI (match_operand:HI 1 "register_operand" "%0,0,0 ,0")
++                 (match_operand:HI 2 "nonmemory_operand" "r,s,IJ,n")))]
+   ""
+   {
+     static const char * const asm_code[] =
+       {
+         "add %A0,%A2\;adc %B0,%B2",
+         "subi %A0,lo8(-(%2))\;sbci %B0,hi8(-(%2))",
++        "",
+         ""
+       };
  
-@@ -65,13 +65,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123457(a))           == 1> t1;
--    sa<sizeof(sink_6_123457(ca))          == 2> t2;
--    sa<sizeof(sink_6_123457(va))          == 3> t3;
--    sa<sizeof(sink_6_123457(cva))         == 4> t4;
--    sa<sizeof(sink_6_123457(source()))    == 5> t5;
--    sa<sizeof(sink_6_123457(c_source()))  == 2> t6;
--    sa<sizeof(sink_6_123457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_6_123457(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123457(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123457(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_123457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123457(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
+@@ -1098,9 +1143,9 @@
  
-@@ -88,14 +88,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123458(a))           == 1> t1;
--    sa<sizeof(sink_6_123458(ca))          == 2> t2;
--    sa<sizeof(sink_6_123458(va))          == 3> t3;
--    sa<sizeof(sink_6_123458(cva))         == 4> t4;
--    sa<sizeof(sink_6_123458(source()))    == 5> t5;
--    sa<sizeof(sink_6_123458(c_source()))  == 8> t6;
--    sa<sizeof(sink_6_123458(v_source()))  == 8> t7;
--    sa<sizeof(sink_6_123458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_123458(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123458(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123458(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_123458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_123458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
+     return avr_out_plus_noclobber (operands, NULL, NULL);
+   }
+-  [(set_attr "length" "2,2,2")
+-   (set_attr "adjust_len" "*,*,out_plus_noclobber")
+-   (set_attr "cc" "set_n,set_czn,out_plus_noclobber")])
++  [(set_attr "length" "2,2,2,2")
++   (set_attr "adjust_len" "*,*,out_plus_noclobber,out_plus_noclobber")
++   (set_attr "cc" "set_n,set_czn,out_plus_noclobber,out_plus_noclobber")])
+ ;; Adding a constant to NO_LD_REGS might have lead to a reload of
+ ;; that constant to LD_REGS.  We don't add a scratch to *addhi3
+@@ -1138,10 +1183,10 @@
+               (clobber (match_dup 2))])])
+ (define_insn "addhi3_clobber"
+-  [(set (match_operand:HI 0 "register_operand"           "=d,l")
+-        (plus:HI (match_operand:HI 1 "register_operand"  "%0,0")
+-                 (match_operand:HI 2 "const_int_operand"  "n,n")))
+-   (clobber (match_scratch:QI 3                          "=X,&d"))]
++  [(set (match_operand:HI 0 "register_operand"           "=!w,d,r")
++        (plus:HI (match_operand:HI 1 "register_operand"   "%0,0,0")
++                 (match_operand:HI 2 "const_int_operand"  "IJ,n,n")))
++   (clobber (match_scratch:QI 3                           "=X,X,&d"))]
+   ""
+   {
+     gcc_assert (REGNO (operands[0]) == REGNO (operands[1]));
+@@ -1692,6 +1737,29 @@
+ ;; Handle small constants
++;; Special case of a += 2*b as frequently seen with accesses to int arrays.
++;; This is shorter, faster than MUL and has lower register pressure.
++
++(define_insn_and_split "*umaddqihi4.2"
++  [(set (match_operand:HI 0 "register_operand"                                  "=r")
++        (plus:HI (mult:HI (zero_extend:HI (match_operand:QI 1 "register_operand" "r"))
++                          (const_int 2))
++                 (match_operand:HI 2 "register_operand"                          "r")))]
++  "!reload_completed
++   && !reg_overlap_mentioned_p (operands[0], operands[1])"
++  { gcc_unreachable(); }
++  "&& 1"
++  [(set (match_dup 0)
++        (match_dup 2))
++   ; *addhi3_zero_extend
++   (set (match_dup 0)
++        (plus:HI (zero_extend:HI (match_dup 1))
++                 (match_dup 0)))
++   ; *addhi3_zero_extend
++   (set (match_dup 0)
++        (plus:HI (zero_extend:HI (match_dup 1))
++                 (match_dup 0)))])
++
+ ;; "umaddqihi4.uconst"
+ ;; "maddqihi4.sconst"
+ (define_insn_and_split "*<extend_u>maddqihi4.<extend_su>const"
+@@ -5198,18 +5266,36 @@
+    (set_attr "length" "1")])
+ ;; Enable Interrupts
+-(define_insn "enable_interrupt"
+-  [(unspec_volatile [(const_int 1)] UNSPECV_ENABLE_IRQS)]
++(define_expand "enable_interrupt"
++  [(clobber (const_int 0))]
+   ""
+-  "sei"
+-  [(set_attr "length" "1")
+-   (set_attr "cc" "none")])
++  {
++    rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++    MEM_VOLATILE_P (mem) = 1;
++    emit_insn (gen_cli_sei (const1_rtx, mem));
++    DONE;
++  })
+ ;; Disable Interrupts
+-(define_insn "disable_interrupt"
+-  [(unspec_volatile [(const_int 0)] UNSPECV_ENABLE_IRQS)]
++(define_expand "disable_interrupt"
++  [(clobber (const_int 0))]
+   ""
+-  "cli"
++  {
++    rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++    MEM_VOLATILE_P (mem) = 1;
++    emit_insn (gen_cli_sei (const0_rtx, mem));
++    DONE;
++  })
++
++(define_insn "cli_sei"
++  [(unspec_volatile [(match_operand:QI 0 "const_int_operand" "L,P")]
++                    UNSPECV_ENABLE_IRQS)
++   (set (match_operand:BLK 1 "" "")
++      (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))]
++  ""
++  "@
++      cli
++      sei"
+   [(set_attr "length" "1")
+    (set_attr "cc" "none")])
+@@ -5316,10 +5402,12 @@
+   [(unspec_volatile [(match_operand:QI 0 "const_int_operand" "n")
+                      (const_int 1)]
+                     UNSPECV_DELAY_CYCLES)
+-   (clobber (match_scratch:QI 1 "=&d"))]
++   (set (match_operand:BLK 1 "" "")
++      (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
++   (clobber (match_scratch:QI 2 "=&d"))]
+   ""
+-  "ldi %1,lo8(%0)
+-      1: dec %1
++  "ldi %2,lo8(%0)
++      1: dec %2
+       brne 1b"
+   [(set_attr "length" "3")
+    (set_attr "cc" "clobber")])
+@@ -5328,11 +5416,13 @@
+   [(unspec_volatile [(match_operand:HI 0 "const_int_operand" "n")
+                      (const_int 2)]
+                     UNSPECV_DELAY_CYCLES)
+-   (clobber (match_scratch:HI 1 "=&w"))]
++   (set (match_operand:BLK 1 "" "")
++      (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
++   (clobber (match_scratch:HI 2 "=&w"))]
+   ""
+-  "ldi %A1,lo8(%0)
+-      ldi %B1,hi8(%0)
+-      1: sbiw %A1,1
++  "ldi %A2,lo8(%0)
++      ldi %B2,hi8(%0)
++      1: sbiw %A2,1
+       brne 1b"
+   [(set_attr "length" "4")
+    (set_attr "cc" "clobber")])
+@@ -5341,16 +5431,18 @@
+   [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "n")
+                      (const_int 3)]
+                     UNSPECV_DELAY_CYCLES)
+-   (clobber (match_scratch:QI 1 "=&d"))
++   (set (match_operand:BLK 1 "" "")
++      (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
+    (clobber (match_scratch:QI 2 "=&d"))
+-   (clobber (match_scratch:QI 3 "=&d"))]
++   (clobber (match_scratch:QI 3 "=&d"))
++   (clobber (match_scratch:QI 4 "=&d"))]
+   ""
+-  "ldi %1,lo8(%0)
+-      ldi %2,hi8(%0)
+-      ldi %3,hlo8(%0)
+-      1: subi %1,1
+-      sbci %2,0
++  "ldi %2,lo8(%0)
++      ldi %3,hi8(%0)
++      ldi %4,hlo8(%0)
++      1: subi %2,1
+       sbci %3,0
++      sbci %4,0
+       brne 1b"
+   [(set_attr "length" "7")
+    (set_attr "cc" "clobber")])
+@@ -5359,19 +5451,21 @@
+   [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "n")
+                      (const_int 4)]
+                     UNSPECV_DELAY_CYCLES)
+-   (clobber (match_scratch:QI 1 "=&d"))
++   (set (match_operand:BLK 1 "" "")
++      (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
+    (clobber (match_scratch:QI 2 "=&d"))
+    (clobber (match_scratch:QI 3 "=&d"))
+-   (clobber (match_scratch:QI 4 "=&d"))]
++   (clobber (match_scratch:QI 4 "=&d"))
++   (clobber (match_scratch:QI 5 "=&d"))]
+   ""
+-  "ldi %1,lo8(%0)
+-      ldi %2,hi8(%0)
+-      ldi %3,hlo8(%0)
+-      ldi %4,hhi8(%0)
+-      1: subi %1,1
+-      sbci %2,0
++  "ldi %2,lo8(%0)
++      ldi %3,hi8(%0)
++      ldi %4,hlo8(%0)
++      ldi %5,hhi8(%0)
++      1: subi %2,1
+       sbci %3,0
+       sbci %4,0
++      sbci %5,0
+       brne 1b"
+   [(set_attr "length" "9")
+    (set_attr "cc" "clobber")])
+@@ -5757,9 +5851,23 @@
+ ;; CPU instructions
+ ;; NOP taking 1 or 2 Ticks 
+-(define_insn "nopv"
++(define_expand "nopv"
++  [(parallel [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "")] 
++                               UNSPECV_NOP)
++              (set (match_dup 1)
++                   (unspec_volatile:BLK [(match_dup 1)]
++                                        UNSPECV_MEMORY_BARRIER))])]
++  ""
++  {
++    operands[1] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++    MEM_VOLATILE_P (operands[1]) = 1;
++  })
++
++(define_insn "*nopv"
+   [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "P,K")] 
+-                    UNSPECV_NOP)]
++                    UNSPECV_NOP)
++   (set (match_operand:BLK 1 "" "")
++      (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))]
+   ""
+   "@
+       nop
+@@ -5768,17 +5876,43 @@
+    (set_attr "cc" "none")])
+ ;; SLEEP
+-(define_insn "sleep"
+-  [(unspec_volatile [(const_int 0)] UNSPECV_SLEEP)]
++(define_expand "sleep"
++  [(parallel [(unspec_volatile [(const_int 0)] UNSPECV_SLEEP)
++              (set (match_dup 0)
++                   (unspec_volatile:BLK [(match_dup 0)]
++                                        UNSPECV_MEMORY_BARRIER))])]
+   ""
++  {
++    operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++    MEM_VOLATILE_P (operands[0]) = 1;
++  })
++
++(define_insn "*sleep"
++  [(unspec_volatile [(const_int 0)] UNSPECV_SLEEP)
++   (set (match_operand:BLK 0 "" "")
++      (unspec_volatile:BLK [(match_dup 0)] UNSPECV_MEMORY_BARRIER))]
++  ""
+   "sleep"
+   [(set_attr "length" "1")
+    (set_attr "cc" "none")])
+  
+ ;; WDR
+-(define_insn "wdr"
+-  [(unspec_volatile [(const_int 0)] UNSPECV_WDR)]
++(define_expand "wdr"
++  [(parallel [(unspec_volatile [(const_int 0)] UNSPECV_WDR)
++              (set (match_dup 0)
++                   (unspec_volatile:BLK [(match_dup 0)]
++                                        UNSPECV_MEMORY_BARRIER))])]
+   ""
++  {
++    operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++    MEM_VOLATILE_P (operands[0]) = 1;
++  })
++
++(define_insn "*wdr"
++  [(unspec_volatile [(const_int 0)] UNSPECV_WDR)
++   (set (match_operand:BLK 0 "" "")
++      (unspec_volatile:BLK [(match_dup 0)] UNSPECV_MEMORY_BARRIER))]
++  ""
+   "wdr"
+   [(set_attr "length" "1")
+    (set_attr "cc" "none")])
+Index: gcc/config/avr/avr-protos.h
+===================================================================
+--- gcc/config/avr/avr-protos.h        (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/avr/avr-protos.h        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -75,6 +75,8 @@
+ extern const char *avr_out_ashrpsi3 (rtx, rtx*, int*);
+ extern const char *avr_out_lshrpsi3 (rtx, rtx*, int*);
++extern const char* avr_load_lpm (rtx, rtx*, int*);
++
+ extern bool avr_rotate_bytes (rtx operands[]);
+ extern void expand_prologue (void);
+@@ -115,7 +117,7 @@
+ extern RTX_CODE avr_normalize_condition (RTX_CODE condition);
+ extern void out_shift_with_cnt (const char *templ, rtx insn,
+                               rtx operands[], int *len, int t_len);
+-extern reg_class_t avr_mode_code_base_reg_class (enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
++extern enum reg_class avr_mode_code_base_reg_class (enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
+ extern bool avr_regno_mode_code_ok_for_base_p (int, enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
+ extern rtx avr_incoming_return_addr_rtx (void);
+ extern rtx avr_legitimize_reload_address (rtx*, enum machine_mode, int, int, int, int, rtx (*)(rtx,int));
+Index: gcc/config/avr/avr.c
+===================================================================
+--- gcc/config/avr/avr.c       (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/avr/avr.c       (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -827,7 +827,11 @@
+   bool isr_p = cfun->machine->is_interrupt || cfun->machine->is_signal;
+   int live_seq = sequent_regs_live ();
++  HOST_WIDE_INT size_max
++    = (HOST_WIDE_INT) GET_MODE_MASK (AVR_HAVE_8BIT_SP ? QImode : Pmode);
++
+   bool minimize = (TARGET_CALL_PROLOGUES
++                   && size < size_max
+                    && live_seq
+                    && !isr_p
+                    && !cfun->machine->is_OS_task
+@@ -933,6 +937,7 @@
+               leaf function and thus X has already been saved.  */
+               
+           int irq_state = -1;
++          HOST_WIDE_INT size_cfa = size;
+           rtx fp_plus_insns, fp, my_fp;
+           gcc_assert (frame_pointer_needed
+@@ -951,6 +956,27 @@
+               my_fp = all_regs_rtx[FRAME_POINTER_REGNUM];
+             }
++          /* Cut down size and avoid size = 0 so that we don't run
++             into ICE like PR52488 in the remainder.  */
++
++          if (size > size_max)
++            {
++              /* Don't error so that insane code from newlib still compiles
++                 and does not break building newlib.  As PR51345 is implemented
++                 now, there are multilib variants with -mtiny-stack.
++                 
++                 If user wants sanity checks he can use -Wstack-usage=
++                 or similar options.
++
++                 For CFA we emit the original, non-saturated size so that
++                 the generic machinery is aware of the real stack usage and
++                 will print the above diagnostic as expected.  */
++              
++              size = size_max;
++            }
++
++          size = trunc_int_for_mode (size, GET_MODE (my_fp));
++          
+           /************  Method 1: Adjust frame pointer  ************/
+           
+           start_sequence ();
+@@ -975,7 +1001,7 @@
+               RTX_FRAME_RELATED_P (insn) = 1;
+               add_reg_note (insn, REG_CFA_ADJUST_CFA,
+                             gen_rtx_SET (VOIDmode, fp,
+-                                         plus_constant (fp, -size)));
++                                         plus_constant (fp, -size_cfa)));
+             }
+           
+           /* Copy to stack pointer.  Note that since we've already
+@@ -1003,7 +1029,7 @@
+               add_reg_note (insn, REG_CFA_ADJUST_CFA,
+                             gen_rtx_SET (VOIDmode, stack_pointer_rtx,
+                                          plus_constant (stack_pointer_rtx,
+-                                                        -size)));
++                                                        -size_cfa)));
+             }
+           
+           fp_plus_insns = get_insns ();
+@@ -1026,7 +1052,7 @@
+               add_reg_note (insn, REG_CFA_ADJUST_CFA,
+                             gen_rtx_SET (VOIDmode, stack_pointer_rtx,
+                                          plus_constant (stack_pointer_rtx,
+-                                                        -size)));
++                                                        -size_cfa)));
+               if (frame_pointer_needed)
+                 {
+                   insn = emit_move_insn (fp, stack_pointer_rtx);
+@@ -1048,7 +1074,7 @@
+               emit_insn (fp_plus_insns);
+             }
+-          cfun->machine->stack_usage += size;
++          cfun->machine->stack_usage += size_cfa;
+         } /* !minimize && size != 0 */
+     } /* !minimize */
+ }
+@@ -1123,11 +1149,11 @@
+           emit_push_sfr (rampy_rtx, false /* frame-related */, true /* clr */);
+         }
  
-@@ -112,12 +112,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123467(a))           == 1> t1;
--    sa<sizeof(sink_6_123467(ca))          == 2> t2;
--    sa<sizeof(sink_6_123467(va))          == 3> t3;
--    sa<sizeof(sink_6_123467(cva))         == 4> t4;
--    sa<sizeof(sink_6_123467(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_123467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_6_123467(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123467(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123467(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_123467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
+-      if (AVR_HAVE_RAMPZ 
++      if (AVR_HAVE_RAMPZ
+           && TEST_HARD_REG_BIT (set, REG_Z)
+           && TEST_HARD_REG_BIT (set, REG_Z + 1))
+         {
+-          emit_push_sfr (rampz_rtx, false /* frame-related */, true /* clr */);
++          emit_push_sfr (rampz_rtx, false /* frame-related */, AVR_HAVE_RAMPD);
+         }
+     }  /* is_interrupt is_signal */
+@@ -1261,6 +1287,7 @@
+       int irq_state = -1;
+       rtx fp, my_fp;
+       rtx fp_plus_insns;
++      HOST_WIDE_INT size_max;
+       gcc_assert (frame_pointer_needed
+                   || !isr_p
+@@ -1277,6 +1304,13 @@
+                   
+           my_fp = all_regs_rtx[FRAME_POINTER_REGNUM];
+         }
++
++      /* For rationale see comment in prologue generation.  */
++
++      size_max = (HOST_WIDE_INT) GET_MODE_MASK (GET_MODE (my_fp));
++      if (size > size_max)
++        size = size_max;
++      size = trunc_int_for_mode (size, GET_MODE (my_fp));
+               
+       /********** Method 1: Adjust fp register  **********/
+               
+@@ -1347,12 +1381,12 @@
+       /* Restore RAMPZ/Y/X/D using tmp_reg as scratch.
+          The conditions to restore them must be tha same as in prologue.  */
+       
+-      if (AVR_HAVE_RAMPX
+-          && TEST_HARD_REG_BIT (set, REG_X)
+-          && TEST_HARD_REG_BIT (set, REG_X + 1))
++      if (AVR_HAVE_RAMPZ
++          && TEST_HARD_REG_BIT (set, REG_Z)
++          && TEST_HARD_REG_BIT (set, REG_Z + 1))
+         {
+           emit_pop_byte (TMP_REGNO);
+-          emit_move_insn (rampx_rtx, tmp_reg_rtx);
++          emit_move_insn (rampz_rtx, tmp_reg_rtx);
+         }
  
-@@ -134,14 +134,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123468(a))           == 1> t1;
--    sa<sizeof(sink_6_123468(ca))          == 2> t2;
--    sa<sizeof(sink_6_123468(va))          == 3> t3;
--    sa<sizeof(sink_6_123468(cva))         == 4> t4;
--    sa<sizeof(sink_6_123468(source()))    == 6> t5;
--    sa<sizeof(sink_6_123468(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_123468(v_source()))  == 8> t7;
--    sa<sizeof(sink_6_123468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_123468(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123468(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123468(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_123468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_123468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
+       if (AVR_HAVE_RAMPY
+@@ -1364,12 +1398,12 @@
+           emit_move_insn (rampy_rtx, tmp_reg_rtx);
+         }
  
-@@ -158,14 +158,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123478(a))           == 1> t1;
--    sa<sizeof(sink_6_123478(ca))          == 2> t2;
--    sa<sizeof(sink_6_123478(va))          == 3> t3;
--    sa<sizeof(sink_6_123478(cva))         == 4> t4;
--    sa<sizeof(sink_6_123478(source()))    == 7> t5;
--    sa<sizeof(sink_6_123478(c_source()))  == 8> t6;
--    sa<sizeof(sink_6_123478(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_123478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_123478(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123478(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123478(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_123478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_123478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
+-      if (AVR_HAVE_RAMPZ
+-          && TEST_HARD_REG_BIT (set, REG_Z)
+-          && TEST_HARD_REG_BIT (set, REG_Z + 1))
++      if (AVR_HAVE_RAMPX
++          && TEST_HARD_REG_BIT (set, REG_X)
++          && TEST_HARD_REG_BIT (set, REG_X + 1))
+         {
+           emit_pop_byte (TMP_REGNO);
+-          emit_move_insn (rampz_rtx, tmp_reg_rtx);
++          emit_move_insn (rampx_rtx, tmp_reg_rtx);
+         }
  
-@@ -182,12 +182,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123567(a))           == 1> t1;
--    sa<sizeof(sink_6_123567(ca))          == 2> t2;
--    sa<sizeof(sink_6_123567(va))          == 3> t3;
--    sa<sizeof(sink_6_123567(source()))    == 5> t5;
--    sa<sizeof(sink_6_123567(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_123567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_6_123567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
+       if (AVR_HAVE_RAMPD)
+@@ -1423,6 +1457,22 @@
  }
  
-@@ -204,13 +204,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123568(a))           == 1> t1;
--    sa<sizeof(sink_6_123568(ca))          == 2> t2;
--    sa<sizeof(sink_6_123568(va))          == 3> t3;
--    sa<sizeof(sink_6_123568(source()))    == 5> t5;
--    sa<sizeof(sink_6_123568(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_123568(v_source()))  == 8> t7;
--    sa<sizeof(sink_6_123568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_123568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_123568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
  
-@@ -227,13 +227,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123578(a))           == 1> t1;
--    sa<sizeof(sink_6_123578(ca))          == 2> t2;
--    sa<sizeof(sink_6_123578(va))          == 3> t3;
--    sa<sizeof(sink_6_123578(source()))    == 5> t5;
--    sa<sizeof(sink_6_123578(c_source()))  == 8> t6;
--    sa<sizeof(sink_6_123578(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_123578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_123578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_123578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_123578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
++/* Implement `TARGET_MODE_DEPENDENT_ADDRESS_P'.  */
++
++/* FIXME:  PSImode addresses are not mode-dependent in themselves.
++      This hook just serves to hack around PR rtl-optimization/52543 by
++      claiming that PSImode addresses (which are used for the 24-bit
++      address space __memx) were mode-dependent so that lower-subreg.s
++      will skip these addresses.  See also the similar FIXME comment along
++      with mov<mode> expanders in avr.md.  */
++
++static bool
++avr_mode_dependent_address_p (const_rtx addr)
++{
++  return GET_MODE (addr) != Pmode;
++}
++
++
+ /* Helper function for `avr_legitimate_address_p'.  */
  
-@@ -250,12 +250,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_123678(a))           == 1> t1;
--    sa<sizeof(sink_6_123678(ca))          == 2> t2;
--    sa<sizeof(sink_6_123678(va))          == 3> t3;
--    sa<sizeof(sink_6_123678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_123678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_123678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_123678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_123678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_123678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_123678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_123678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_123678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
+ static inline bool
+@@ -2435,7 +2485,8 @@
+         
+   return (n_bytes > 2
+           && !AVR_HAVE_LPMX
+-          && avr_mem_flash_p (op));
++          && MEM_P (op)
++          && MEM_ADDR_SPACE (op) == ADDR_SPACE_FLASH);
  }
  
-@@ -272,13 +272,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_124567(a))           == 1> t1;
--    sa<sizeof(sink_6_124567(ca))          == 2> t2;
--    sa<sizeof(sink_6_124567(va))          == 4> t3;
--    sa<sizeof(sink_6_124567(cva))         == 4> t4;
--    sa<sizeof(sink_6_124567(source()))    == 5> t5;
--    sa<sizeof(sink_6_124567(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_124567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_6_124567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_124567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_124567(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_124567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_124567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_124567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_124567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
+ /* Return true if a value of mode MODE is read by __xload_* function.  */
+@@ -2450,155 +2501,6 @@
  }
  
-@@ -295,14 +295,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_124568(a))           == 1> t1;
--    sa<sizeof(sink_6_124568(ca))          == 2> t2;
--    sa<sizeof(sink_6_124568(va))          == 4> t3;
--    sa<sizeof(sink_6_124568(cva))         == 4> t4;
--    sa<sizeof(sink_6_124568(source()))    == 5> t5;
--    sa<sizeof(sink_6_124568(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_124568(v_source()))  == 8> t7;
--    sa<sizeof(sink_6_124568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_124568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_124568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_124568(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_124568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_124568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_124568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_124568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_124568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
  
-@@ -319,14 +319,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_124578(a))           == 1> t1;
--    sa<sizeof(sink_6_124578(ca))          == 2> t2;
--    sa<sizeof(sink_6_124578(va))          == 4> t3;
--    sa<sizeof(sink_6_124578(cva))         == 4> t4;
--    sa<sizeof(sink_6_124578(source()))    == 5> t5;
--    sa<sizeof(sink_6_124578(c_source()))  == 8> t6;
--    sa<sizeof(sink_6_124578(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_124578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_124578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_124578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_124578(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_124578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_124578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_124578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_124578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_124578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -343,13 +343,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_124678(a))           == 1> t1;
--    sa<sizeof(sink_6_124678(ca))          == 2> t2;
--    sa<sizeof(sink_6_124678(va))          == 4> t3;
--    sa<sizeof(sink_6_124678(cva))         == 4> t4;
--    sa<sizeof(sink_6_124678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_124678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_124678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_124678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_124678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_124678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_124678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_124678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_124678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_124678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -366,12 +366,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_125678(a))           == 1> t1;
--    sa<sizeof(sink_6_125678(ca))          == 2> t2;
--    sa<sizeof(sink_6_125678(source()))    == 5> t5;
--    sa<sizeof(sink_6_125678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_125678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_125678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_125678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_125678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_125678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_125678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_125678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_125678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -388,13 +388,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_134567(a))           == 1> t1;
--    sa<sizeof(sink_6_134567(ca))          == 4> t2;
--    sa<sizeof(sink_6_134567(va))          == 3> t3;
--    sa<sizeof(sink_6_134567(cva))         == 4> t4;
--    sa<sizeof(sink_6_134567(source()))    == 5> t5;
--    sa<sizeof(sink_6_134567(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_134567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_6_134567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_134567(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_134567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_134567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_134567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_134567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_134567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -411,14 +411,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_134568(a))           == 1> t1;
--    sa<sizeof(sink_6_134568(ca))          == 4> t2;
--    sa<sizeof(sink_6_134568(va))          == 3> t3;
--    sa<sizeof(sink_6_134568(cva))         == 4> t4;
--    sa<sizeof(sink_6_134568(source()))    == 5> t5;
--    sa<sizeof(sink_6_134568(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_134568(v_source()))  == 8> t7;
--    sa<sizeof(sink_6_134568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_134568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_134568(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_134568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_134568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_134568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_134568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_134568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_134568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -435,14 +435,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_134578(a))           == 1> t1;
--    sa<sizeof(sink_6_134578(ca))          == 4> t2;
--    sa<sizeof(sink_6_134578(va))          == 3> t3;
--    sa<sizeof(sink_6_134578(cva))         == 4> t4;
--    sa<sizeof(sink_6_134578(source()))    == 5> t5;
--    sa<sizeof(sink_6_134578(c_source()))  == 8> t6;
--    sa<sizeof(sink_6_134578(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_134578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_134578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_134578(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_134578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_134578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_134578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_134578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_134578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_134578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -459,13 +459,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_134678(a))           == 1> t1;
--    sa<sizeof(sink_6_134678(ca))          == 4> t2;
--    sa<sizeof(sink_6_134678(va))          == 3> t3;
--    sa<sizeof(sink_6_134678(cva))         == 4> t4;
--    sa<sizeof(sink_6_134678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_134678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_134678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_134678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_134678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_134678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_134678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_134678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_134678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_134678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -482,12 +482,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_135678(a))           == 1> t1;
--    sa<sizeof(sink_6_135678(va))          == 3> t3;
--    sa<sizeof(sink_6_135678(source()))    == 5> t5;
--    sa<sizeof(sink_6_135678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_135678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_135678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_135678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_135678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_135678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_135678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_135678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_135678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -504,14 +504,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_145678(a))           == 1> t1;
--    sa<sizeof(sink_6_145678(ca))          == 4> t2;
--    sa<sizeof(sink_6_145678(va))          == 4> t3;
--    sa<sizeof(sink_6_145678(cva))         == 4> t4;
--    sa<sizeof(sink_6_145678(source()))    == 5> t5;
--    sa<sizeof(sink_6_145678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_145678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_145678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_145678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_145678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_145678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_145678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_145678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_145678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_145678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_145678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -528,12 +528,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_234567(ca))          == 2> t2;
--    sa<sizeof(sink_6_234567(va))          == 3> t3;
--    sa<sizeof(sink_6_234567(cva))         == 4> t4;
--    sa<sizeof(sink_6_234567(source()))    == 5> t5;
--    sa<sizeof(sink_6_234567(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_234567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_6_234567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_234567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_234567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_234567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_234567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_234567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -550,13 +550,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_234568(ca))          == 2> t2;
--    sa<sizeof(sink_6_234568(va))          == 3> t3;
--    sa<sizeof(sink_6_234568(cva))         == 4> t4;
--    sa<sizeof(sink_6_234568(source()))    == 5> t5;
--    sa<sizeof(sink_6_234568(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_234568(v_source()))  == 8> t7;
--    sa<sizeof(sink_6_234568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_234568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_234568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_234568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_234568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_234568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_234568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_234568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -573,13 +573,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_234578(ca))          == 2> t2;
--    sa<sizeof(sink_6_234578(va))          == 3> t3;
--    sa<sizeof(sink_6_234578(cva))         == 4> t4;
--    sa<sizeof(sink_6_234578(source()))    == 5> t5;
--    sa<sizeof(sink_6_234578(c_source()))  == 8> t6;
--    sa<sizeof(sink_6_234578(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_234578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_234578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_234578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_234578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_234578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_234578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_234578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_234578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -596,12 +596,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_234678(ca))          == 2> t2;
--    sa<sizeof(sink_6_234678(va))          == 3> t3;
--    sa<sizeof(sink_6_234678(cva))         == 4> t4;
--    sa<sizeof(sink_6_234678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_234678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_234678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_234678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_234678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_234678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_234678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_234678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_234678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -618,12 +618,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_235678(ca))          == 2> t2;
--    sa<sizeof(sink_6_235678(va))          == 3> t3;
--    sa<sizeof(sink_6_235678(source()))    == 5> t5;
--    sa<sizeof(sink_6_235678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_235678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_235678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_235678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_235678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_235678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_235678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_235678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_235678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -640,14 +640,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_245678(a))           == 2> t1;
--    sa<sizeof(sink_6_245678(ca))          == 2> t2;
--    sa<sizeof(sink_6_245678(va))          == 4> t3;
--    sa<sizeof(sink_6_245678(cva))         == 4> t4;
--    sa<sizeof(sink_6_245678(source()))    == 5> t5;
--    sa<sizeof(sink_6_245678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_245678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_245678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_245678(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_245678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_245678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_245678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_245678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_245678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_245678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_245678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -664,14 +664,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_6_345678(a))           == 3> t1;
--    sa<sizeof(sink_6_345678(ca))          == 4> t2;
--    sa<sizeof(sink_6_345678(va))          == 3> t3;
--    sa<sizeof(sink_6_345678(cva))         == 4> t4;
--    sa<sizeof(sink_6_345678(source()))    == 5> t5;
--    sa<sizeof(sink_6_345678(c_source()))  == 6> t6;
--    sa<sizeof(sink_6_345678(v_source()))  == 7> t7;
--    sa<sizeof(sink_6_345678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_6_345678(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_6_345678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_6_345678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_6_345678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_6_345678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_6_345678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_6_345678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_6_345678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv1p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv1p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv1p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -38,7 +38,7 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_1(a))           == 1> t1;
-+    sa<sizeof(sink_1_1(a))           == 1 * sizeof(long)> t1;
-     return 0;
- }
-@@ -50,10 +50,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_2(a))           == 2> t1;
--    sa<sizeof(sink_1_2(ca))          == 2> t2;
--    sa<sizeof(sink_1_2(source()))    == 2> t5;
--    sa<sizeof(sink_1_2(c_source()))  == 2> t6;
-+    sa<sizeof(sink_1_2(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_1_2(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_1_2(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_1_2(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -65,8 +65,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_3(a))           == 3> t1;
--    sa<sizeof(sink_1_3(va))          == 3> t3;
-+    sa<sizeof(sink_1_3(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_1_3(va))          == 3 * sizeof(long)> t3;
-     return 0;
- }
-@@ -78,10 +78,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_4(a))           == 4> t1;
--    sa<sizeof(sink_1_4(ca))          == 4> t2;
--    sa<sizeof(sink_1_4(va))          == 4> t3;
--    sa<sizeof(sink_1_4(cva))         == 4> t4;
-+    sa<sizeof(sink_1_4(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_1_4(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_1_4(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_1_4(cva))         == 4 * sizeof(long)> t4;
-     return 0;
- }
-@@ -93,7 +93,7 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_5(source()))    == 5> t5;
-+    sa<sizeof(sink_1_5(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -105,8 +105,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_6(source()))    == 6> t5;
--    sa<sizeof(sink_1_6(c_source()))  == 6> t6;
-+    sa<sizeof(sink_1_6(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_1_6(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -118,8 +118,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_7(source()))    == 7> t5;
--    sa<sizeof(sink_1_7(v_source()))  == 7> t7;
-+    sa<sizeof(sink_1_7(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_1_7(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -131,10 +131,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_1_8(source()))    == 8> t5;
--    sa<sizeof(sink_1_8(c_source()))  == 8> t6;
--    sa<sizeof(sink_1_8(v_source()))  == 8> t7;
--    sa<sizeof(sink_1_8(cv_source())) == 8> t8;
-+    sa<sizeof(sink_1_8(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_1_8(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_1_8(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_1_8(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/cast.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/cast.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/cast.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,8 +8,8 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
- struct A {};
-@@ -19,8 +19,8 @@
- int test1()
- {
-     A a;
--    sa<sizeof(foo(a)) == 1> t1;
--    sa<sizeof(foo(static_cast<A&&>(a))) == 2> t2;
-+    sa<sizeof(foo(a)) == 1 * sizeof(long)> t1;
-+    sa<sizeof(foo(static_cast<A&&>(a))) == 2 * sizeof(long)> t2;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv7p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv7p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv7p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -44,13 +44,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1234567(a))           == 1> t1;
--    sa<sizeof(sink_7_1234567(ca))          == 2> t2;
--    sa<sizeof(sink_7_1234567(va))          == 3> t3;
--    sa<sizeof(sink_7_1234567(cva))         == 4> t4;
--    sa<sizeof(sink_7_1234567(source()))    == 5> t5;
--    sa<sizeof(sink_7_1234567(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_1234567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_7_1234567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1234567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1234567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1234567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_1234567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_1234567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1234567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -68,14 +68,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1234568(a))           == 1> t1;
--    sa<sizeof(sink_7_1234568(ca))          == 2> t2;
--    sa<sizeof(sink_7_1234568(va))          == 3> t3;
--    sa<sizeof(sink_7_1234568(cva))         == 4> t4;
--    sa<sizeof(sink_7_1234568(source()))    == 5> t5;
--    sa<sizeof(sink_7_1234568(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_1234568(v_source()))  == 8> t7;
--    sa<sizeof(sink_7_1234568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_1234568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1234568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1234568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1234568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_1234568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_1234568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1234568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_1234568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -93,14 +93,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1234578(a))           == 1> t1;
--    sa<sizeof(sink_7_1234578(ca))          == 2> t2;
--    sa<sizeof(sink_7_1234578(va))          == 3> t3;
--    sa<sizeof(sink_7_1234578(cva))         == 4> t4;
--    sa<sizeof(sink_7_1234578(source()))    == 5> t5;
--    sa<sizeof(sink_7_1234578(c_source()))  == 8> t6;
--    sa<sizeof(sink_7_1234578(v_source()))  == 7> t7;
--    sa<sizeof(sink_7_1234578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_1234578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1234578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1234578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1234578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_1234578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_1234578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1234578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_1234578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -118,13 +118,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1234678(a))           == 1> t1;
--    sa<sizeof(sink_7_1234678(ca))          == 2> t2;
--    sa<sizeof(sink_7_1234678(va))          == 3> t3;
--    sa<sizeof(sink_7_1234678(cva))         == 4> t4;
--    sa<sizeof(sink_7_1234678(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_1234678(v_source()))  == 7> t7;
--    sa<sizeof(sink_7_1234678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_1234678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1234678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1234678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1234678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_1234678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1234678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_1234678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -142,13 +142,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1235678(a))           == 1> t1;
--    sa<sizeof(sink_7_1235678(ca))          == 2> t2;
--    sa<sizeof(sink_7_1235678(va))          == 3> t3;
--    sa<sizeof(sink_7_1235678(source()))    == 5> t5;
--    sa<sizeof(sink_7_1235678(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_1235678(v_source()))  == 7> t7;
--    sa<sizeof(sink_7_1235678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_1235678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1235678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1235678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1235678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_1235678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1235678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_1235678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -166,14 +166,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1245678(a))           == 1> t1;
--    sa<sizeof(sink_7_1245678(ca))          == 2> t2;
--    sa<sizeof(sink_7_1245678(va))          == 4> t3;
--    sa<sizeof(sink_7_1245678(cva))         == 4> t4;
--    sa<sizeof(sink_7_1245678(source()))    == 5> t5;
--    sa<sizeof(sink_7_1245678(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_1245678(v_source()))  == 7> t7;
--    sa<sizeof(sink_7_1245678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_1245678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1245678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1245678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1245678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_1245678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_1245678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1245678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_1245678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -191,14 +191,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_1345678(a))           == 1> t1;
--    sa<sizeof(sink_7_1345678(ca))          == 4> t2;
--    sa<sizeof(sink_7_1345678(va))          == 3> t3;
--    sa<sizeof(sink_7_1345678(cva))         == 4> t4;
--    sa<sizeof(sink_7_1345678(source()))    == 5> t5;
--    sa<sizeof(sink_7_1345678(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_1345678(v_source()))  == 7> t7;
--    sa<sizeof(sink_7_1345678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_1345678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_7_1345678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_1345678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_1345678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_1345678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_1345678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_1345678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_1345678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -216,13 +216,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_7_2345678(ca))          == 2> t2;
--    sa<sizeof(sink_7_2345678(va))          == 3> t3;
--    sa<sizeof(sink_7_2345678(cva))         == 4> t4;
--    sa<sizeof(sink_7_2345678(source()))    == 5> t5;
--    sa<sizeof(sink_7_2345678(c_source()))  == 6> t6;
--    sa<sizeof(sink_7_2345678(v_source()))  == 7> t7;
--    sa<sizeof(sink_7_2345678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_7_2345678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_7_2345678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_7_2345678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_7_2345678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_7_2345678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_7_2345678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_7_2345678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv2p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv2p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv2p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -39,10 +39,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_12(a))           == 1> t1;
--    sa<sizeof(sink_2_12(ca))          == 2> t2;
--    sa<sizeof(sink_2_12(source()))    == 2> t5;
--    sa<sizeof(sink_2_12(c_source()))  == 2> t6;
-+    sa<sizeof(sink_2_12(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_12(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_12(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_12(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -55,8 +55,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_13(a))           == 1> t1;
--    sa<sizeof(sink_2_13(va))          == 3> t3;
-+    sa<sizeof(sink_2_13(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_13(va))          == 3 * sizeof(long)> t3;
-     return 0;
- }
-@@ -69,10 +69,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_14(a))           == 1> t1;
--    sa<sizeof(sink_2_14(ca))          == 4> t2;
--    sa<sizeof(sink_2_14(va))          == 4> t3;
--    sa<sizeof(sink_2_14(cva))         == 4> t4;
-+    sa<sizeof(sink_2_14(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_14(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_14(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_14(cva))         == 4 * sizeof(long)> t4;
-     return 0;
- }
-@@ -85,8 +85,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_15(a))           == 1> t1;
--    sa<sizeof(sink_2_15(source()))    == 5> t5;
-+    sa<sizeof(sink_2_15(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_15(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -99,9 +99,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_16(a))           == 1> t1;
--    sa<sizeof(sink_2_16(source()))    == 6> t5;
--    sa<sizeof(sink_2_16(c_source()))  == 6> t6;
-+    sa<sizeof(sink_2_16(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_16(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_16(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -114,9 +114,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_17(a))           == 1> t1;
--    sa<sizeof(sink_2_17(source()))    == 7> t5;
--    sa<sizeof(sink_2_17(v_source()))  == 7> t7;
-+    sa<sizeof(sink_2_17(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_17(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_17(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -129,11 +129,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_18(a))           == 1> t1;
--    sa<sizeof(sink_2_18(source()))    == 8> t5;
--    sa<sizeof(sink_2_18(c_source()))  == 8> t6;
--    sa<sizeof(sink_2_18(v_source()))  == 8> t7;
--    sa<sizeof(sink_2_18(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_18(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_18(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_18(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_18(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_18(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -146,10 +146,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_23(ca))          == 2> t2;
--    sa<sizeof(sink_2_23(va))          == 3> t3;
--    sa<sizeof(sink_2_23(source()))    == 2> t5;
--    sa<sizeof(sink_2_23(c_source()))  == 2> t6;
-+    sa<sizeof(sink_2_23(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_23(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_23(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_23(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -162,14 +162,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_24(a))           == 2> t1;
--    sa<sizeof(sink_2_24(ca))          == 2> t2;
--    sa<sizeof(sink_2_24(va))          == 4> t3;
--    sa<sizeof(sink_2_24(cva))         == 4> t4;
--    sa<sizeof(sink_2_24(source()))    == 2> t5;
--    sa<sizeof(sink_2_24(c_source()))  == 2> t6;
--//    sa<sizeof(sink_2_24(v_source()))  == 4> t7;
--//    sa<sizeof(sink_2_24(cv_source())) == 4> t8;
-+    sa<sizeof(sink_2_24(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_24(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_24(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_24(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_2_24(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_24(c_source()))  == 2 * sizeof(long)> t6;
-+//    sa<sizeof(sink_2_24(v_source()))  == 4 * sizeof(long)> t7;
-+//    sa<sizeof(sink_2_24(cv_source())) == 4 * sizeof(long)> t8;
-     return 0;
- }
-@@ -182,10 +182,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_25(a))           == 2> t1;
--    sa<sizeof(sink_2_25(ca))          == 2> t2;
--    sa<sizeof(sink_2_25(source()))    == 5> t5;
--    sa<sizeof(sink_2_25(c_source()))  == 2> t6;
-+    sa<sizeof(sink_2_25(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_25(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_25(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_25(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -198,10 +198,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_26(a))           == 2> t1;
--    sa<sizeof(sink_2_26(ca))          == 2> t2;
--    sa<sizeof(sink_2_26(source()))    == 6> t5;
--    sa<sizeof(sink_2_26(c_source()))  == 6> t6;
-+    sa<sizeof(sink_2_26(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_26(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_26(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_26(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -214,11 +214,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_27(a))           == 2> t1;
--    sa<sizeof(sink_2_27(ca))          == 2> t2;
--    sa<sizeof(sink_2_27(source()))    == 7> t5;
--    sa<sizeof(sink_2_27(c_source()))  == 2> t6;
--    sa<sizeof(sink_2_27(v_source()))  == 7> t7;
-+    sa<sizeof(sink_2_27(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_27(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_27(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_27(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_27(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -231,12 +231,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_28(a))           == 2> t1;
--    sa<sizeof(sink_2_28(ca))          == 2> t2;
--    sa<sizeof(sink_2_28(source()))    == 8> t5;
--    sa<sizeof(sink_2_28(c_source()))  == 8> t6;
--    sa<sizeof(sink_2_28(v_source()))  == 8> t7;
--    sa<sizeof(sink_2_28(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_28(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_28(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_28(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_28(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_28(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_28(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -249,14 +249,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_34(a))           == 3> t1;
--    sa<sizeof(sink_2_34(ca))          == 4> t2;
--    sa<sizeof(sink_2_34(va))          == 3> t3;
--    sa<sizeof(sink_2_34(cva))         == 4> t4;
--//    sa<sizeof(sink_2_34(source()))    == 4> t5;
--//    sa<sizeof(sink_2_34(c_source()))  == 4> t6;
--//    sa<sizeof(sink_2_34(v_source()))  == 4> t7;
--//    sa<sizeof(sink_2_34(cv_source())) == 4> t8;
-+    sa<sizeof(sink_2_34(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_34(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_34(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_34(cva))         == 4 * sizeof(long)> t4;
-+//    sa<sizeof(sink_2_34(source()))    == 4 * sizeof(long)> t5;
-+//    sa<sizeof(sink_2_34(c_source()))  == 4 * sizeof(long)> t6;
-+//    sa<sizeof(sink_2_34(v_source()))  == 4 * sizeof(long)> t7;
-+//    sa<sizeof(sink_2_34(cv_source())) == 4 * sizeof(long)> t8;
-     return 0;
- }
-@@ -269,9 +269,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_35(a))           == 3> t1;
--    sa<sizeof(sink_2_35(va))          == 3> t3;
--    sa<sizeof(sink_2_35(source()))    == 5> t5;
-+    sa<sizeof(sink_2_35(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_35(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_35(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -284,10 +284,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_36(a))           == 3> t1;
--    sa<sizeof(sink_2_36(va))          == 3> t3;
--    sa<sizeof(sink_2_36(source()))    == 6> t5;
--    sa<sizeof(sink_2_36(c_source()))  == 6> t6;
-+    sa<sizeof(sink_2_36(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_36(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_36(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_36(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -300,10 +300,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_37(a))           == 3> t1;
--    sa<sizeof(sink_2_37(va))          == 3> t3;
--    sa<sizeof(sink_2_37(source()))    == 7> t5;
--    sa<sizeof(sink_2_37(v_source()))  == 7> t7;
-+    sa<sizeof(sink_2_37(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_37(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_37(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_37(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -316,12 +316,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_38(a))           == 3> t1;
--    sa<sizeof(sink_2_38(va))          == 3> t3;
--    sa<sizeof(sink_2_38(source()))    == 8> t5;
--    sa<sizeof(sink_2_38(c_source()))  == 8> t6;
--    sa<sizeof(sink_2_38(v_source()))  == 8> t7;
--    sa<sizeof(sink_2_38(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_38(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_38(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_38(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_38(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_38(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_38(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -334,14 +334,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_45(a))           == 4> t1;
--    sa<sizeof(sink_2_45(ca))          == 4> t2;
--    sa<sizeof(sink_2_45(va))          == 4> t3;
--    sa<sizeof(sink_2_45(cva))         == 4> t4;
--    sa<sizeof(sink_2_45(source()))    == 5> t5;
--//    sa<sizeof(sink_2_45(c_source()))  == 4> t6;
--//    sa<sizeof(sink_2_45(v_source()))  == 4> t7;
--//    sa<sizeof(sink_2_45(cv_source())) == 4> t8;
-+    sa<sizeof(sink_2_45(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_45(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_45(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_45(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_2_45(source()))    == 5 * sizeof(long)> t5;
-+//    sa<sizeof(sink_2_45(c_source()))  == 4 * sizeof(long)> t6;
-+//    sa<sizeof(sink_2_45(v_source()))  == 4 * sizeof(long)> t7;
-+//    sa<sizeof(sink_2_45(cv_source())) == 4 * sizeof(long)> t8;
-     return 0;
- }
-@@ -354,14 +354,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_46(a))           == 4> t1;
--    sa<sizeof(sink_2_46(ca))          == 4> t2;
--    sa<sizeof(sink_2_46(va))          == 4> t3;
--    sa<sizeof(sink_2_46(cva))         == 4> t4;
--    sa<sizeof(sink_2_46(source()))    == 6> t5;
--    sa<sizeof(sink_2_46(c_source()))  == 6> t6;
--//    sa<sizeof(sink_2_46(v_source()))  == 4> t7;
--//    sa<sizeof(sink_2_46(cv_source())) == 4> t8;
-+    sa<sizeof(sink_2_46(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_46(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_46(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_46(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_2_46(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_46(c_source()))  == 6 * sizeof(long)> t6;
-+//    sa<sizeof(sink_2_46(v_source()))  == 4 * sizeof(long)> t7;
-+//    sa<sizeof(sink_2_46(cv_source())) == 4 * sizeof(long)> t8;
-     return 0;
- }
-@@ -374,14 +374,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_47(a))           == 4> t1;
--    sa<sizeof(sink_2_47(ca))          == 4> t2;
--    sa<sizeof(sink_2_47(va))          == 4> t3;
--    sa<sizeof(sink_2_47(cva))         == 4> t4;
--    sa<sizeof(sink_2_47(source()))    == 7> t5;
--//    sa<sizeof(sink_2_47(c_source()))  == 4> t6;
--    sa<sizeof(sink_2_47(v_source()))  == 7> t7;
--//    sa<sizeof(sink_2_47(cv_source())) == 4> t8;
-+    sa<sizeof(sink_2_47(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_47(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_47(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_47(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_2_47(source()))    == 7 * sizeof(long)> t5;
-+//    sa<sizeof(sink_2_47(c_source()))  == 4 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_47(v_source()))  == 7 * sizeof(long)> t7;
-+//    sa<sizeof(sink_2_47(cv_source())) == 4 * sizeof(long)> t8;
-     return 0;
- }
-@@ -394,14 +394,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_48(a))           == 4> t1;
--    sa<sizeof(sink_2_48(ca))          == 4> t2;
--    sa<sizeof(sink_2_48(va))          == 4> t3;
--    sa<sizeof(sink_2_48(cva))         == 4> t4;
--    sa<sizeof(sink_2_48(source()))    == 8> t5;
--    sa<sizeof(sink_2_48(c_source()))  == 8> t6;
--    sa<sizeof(sink_2_48(v_source()))  == 8> t7;
--    sa<sizeof(sink_2_48(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_48(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_2_48(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_2_48(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_2_48(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_2_48(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_48(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_48(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_48(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -414,8 +414,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_56(source()))    == 5> t5;
--    sa<sizeof(sink_2_56(c_source()))  == 6> t6;
-+    sa<sizeof(sink_2_56(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_56(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -428,8 +428,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_57(source()))    == 5> t5;
--    sa<sizeof(sink_2_57(v_source()))  == 7> t7;
-+    sa<sizeof(sink_2_57(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_57(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -442,10 +442,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_58(source()))    == 5> t5;
--    sa<sizeof(sink_2_58(c_source()))  == 8> t6;
--    sa<sizeof(sink_2_58(v_source()))  == 8> t7;
--    sa<sizeof(sink_2_58(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_58(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_58(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_58(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_58(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -458,8 +458,8 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_67(c_source()))  == 6> t6;
--    sa<sizeof(sink_2_67(v_source()))  == 7> t7;
-+    sa<sizeof(sink_2_67(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_67(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -472,10 +472,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_68(source()))    == 6> t5;
--    sa<sizeof(sink_2_68(c_source()))  == 6> t6;
--    sa<sizeof(sink_2_68(v_source()))  == 8> t7;
--    sa<sizeof(sink_2_68(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_68(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_68(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_68(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_68(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -488,10 +488,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_2_78(source()))    == 7> t5;
--    sa<sizeof(sink_2_78(c_source()))  == 8> t6;
--    sa<sizeof(sink_2_78(v_source()))  == 7> t7;
--    sa<sizeof(sink_2_78(cv_source())) == 8> t8;
-+    sa<sizeof(sink_2_78(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_2_78(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_2_78(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_2_78(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv8p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv8p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv8p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -45,14 +45,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_8_12345678(a))           == 1> t1;
--    sa<sizeof(sink_8_12345678(ca))          == 2> t2;
--    sa<sizeof(sink_8_12345678(va))          == 3> t3;
--    sa<sizeof(sink_8_12345678(cva))         == 4> t4;
--    sa<sizeof(sink_8_12345678(source()))    == 5> t5;
--    sa<sizeof(sink_8_12345678(c_source()))  == 6> t6;
--    sa<sizeof(sink_8_12345678(v_source()))  == 7> t7;
--    sa<sizeof(sink_8_12345678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_8_12345678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_8_12345678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_8_12345678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_8_12345678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_8_12345678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_8_12345678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_8_12345678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_8_12345678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv3p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv3p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv3p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -40,11 +40,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_123(a))           == 1> t1;
--    sa<sizeof(sink_3_123(ca))          == 2> t2;
--    sa<sizeof(sink_3_123(va))          == 3> t3;
--    sa<sizeof(sink_3_123(source()))    == 2> t5;
--    sa<sizeof(sink_3_123(c_source()))  == 2> t6;
-+    sa<sizeof(sink_3_123(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_123(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_123(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_123(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_123(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -58,12 +58,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_124(a))           == 1> t1;
--    sa<sizeof(sink_3_124(ca))          == 2> t2;
--    sa<sizeof(sink_3_124(va))          == 4> t3;
--    sa<sizeof(sink_3_124(cva))         == 4> t4;
--    sa<sizeof(sink_3_124(source()))    == 2> t5;
--    sa<sizeof(sink_3_124(c_source()))  == 2> t6;
-+    sa<sizeof(sink_3_124(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_124(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_124(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_124(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_124(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_124(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -77,10 +77,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_125(a))           == 1> t1;
--    sa<sizeof(sink_3_125(ca))          == 2> t2;
--    sa<sizeof(sink_3_125(source()))    == 5> t5;
--    sa<sizeof(sink_3_125(c_source()))  == 2> t6;
-+    sa<sizeof(sink_3_125(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_125(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_125(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_125(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -94,10 +94,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_126(a))           == 1> t1;
--    sa<sizeof(sink_3_126(ca))          == 2> t2;
--    sa<sizeof(sink_3_126(source()))    == 6> t5;
--    sa<sizeof(sink_3_126(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_126(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_126(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_126(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_126(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -111,11 +111,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_127(a))           == 1> t1;
--    sa<sizeof(sink_3_127(ca))          == 2> t2;
--    sa<sizeof(sink_3_127(source()))    == 7> t5;
--    sa<sizeof(sink_3_127(c_source()))  == 2> t6;
--    sa<sizeof(sink_3_127(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_127(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_127(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_127(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_127(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_127(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -129,12 +129,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_128(a))           == 1> t1;
--    sa<sizeof(sink_3_128(ca))          == 2> t2;
--    sa<sizeof(sink_3_128(source()))    == 8> t5;
--    sa<sizeof(sink_3_128(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_128(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_128(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_128(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_128(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_128(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_128(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_128(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_128(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -148,10 +148,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_134(a))           == 1> t1;
--    sa<sizeof(sink_3_134(ca))          == 4> t2;
--    sa<sizeof(sink_3_134(va))          == 3> t3;
--    sa<sizeof(sink_3_134(cva))         == 4> t4;
-+    sa<sizeof(sink_3_134(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_134(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_134(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_134(cva))         == 4 * sizeof(long)> t4;
-     return 0;
- }
-@@ -165,9 +165,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_135(a))           == 1> t1;
--    sa<sizeof(sink_3_135(va))          == 3> t3;
--    sa<sizeof(sink_3_135(source()))    == 5> t5;
-+    sa<sizeof(sink_3_135(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_135(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_135(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -181,10 +181,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_136(a))           == 1> t1;
--    sa<sizeof(sink_3_136(va))          == 3> t3;
--    sa<sizeof(sink_3_136(source()))    == 6> t5;
--    sa<sizeof(sink_3_136(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_136(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_136(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_136(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_136(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -198,10 +198,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_137(a))           == 1> t1;
--    sa<sizeof(sink_3_137(va))          == 3> t3;
--    sa<sizeof(sink_3_137(source()))    == 7> t5;
--    sa<sizeof(sink_3_137(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_137(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_137(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_137(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_137(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -215,12 +215,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_138(a))           == 1> t1;
--    sa<sizeof(sink_3_138(va))          == 3> t3;
--    sa<sizeof(sink_3_138(source()))    == 8> t5;
--    sa<sizeof(sink_3_138(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_138(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_138(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_138(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_138(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_138(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_138(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_138(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_138(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -234,11 +234,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_145(a))           == 1> t1;
--    sa<sizeof(sink_3_145(ca))          == 4> t2;
--    sa<sizeof(sink_3_145(va))          == 4> t3;
--    sa<sizeof(sink_3_145(cva))         == 4> t4;
--    sa<sizeof(sink_3_145(source()))    == 5> t5;
-+    sa<sizeof(sink_3_145(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_145(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_145(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_145(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_145(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -252,12 +252,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_146(a))           == 1> t1;
--    sa<sizeof(sink_3_146(ca))          == 4> t2;
--    sa<sizeof(sink_3_146(va))          == 4> t3;
--    sa<sizeof(sink_3_146(cva))         == 4> t4;
--    sa<sizeof(sink_3_146(source()))    == 6> t5;
--    sa<sizeof(sink_3_146(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_146(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_146(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_146(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_146(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_146(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_146(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -271,12 +271,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_147(a))           == 1> t1;
--    sa<sizeof(sink_3_147(ca))          == 4> t2;
--    sa<sizeof(sink_3_147(va))          == 4> t3;
--    sa<sizeof(sink_3_147(cva))         == 4> t4;
--    sa<sizeof(sink_3_147(source()))    == 7> t5;
--    sa<sizeof(sink_3_147(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_147(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_147(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_147(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_147(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_147(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_147(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -290,14 +290,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_148(a))           == 1> t1;
--    sa<sizeof(sink_3_148(ca))          == 4> t2;
--    sa<sizeof(sink_3_148(va))          == 4> t3;
--    sa<sizeof(sink_3_148(cva))         == 4> t4;
--    sa<sizeof(sink_3_148(source()))    == 8> t5;
--    sa<sizeof(sink_3_148(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_148(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_148(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_148(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_148(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_148(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_148(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_148(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_148(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_148(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_148(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -311,9 +311,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_156(a))           == 1> t1;
--    sa<sizeof(sink_3_156(source()))    == 5> t5;
--    sa<sizeof(sink_3_156(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_156(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_156(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_156(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -327,9 +327,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_157(a))           == 1> t1;
--    sa<sizeof(sink_3_157(source()))    == 5> t5;
--    sa<sizeof(sink_3_157(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_157(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_157(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_157(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -343,11 +343,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_158(a))           == 1> t1;
--    sa<sizeof(sink_3_158(source()))    == 5> t5;
--    sa<sizeof(sink_3_158(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_158(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_158(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_158(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_158(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_158(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_158(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_158(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -361,9 +361,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_167(a))           == 1> t1;
--    sa<sizeof(sink_3_167(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_167(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_167(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_167(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_167(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -377,11 +377,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_168(a))           == 1> t1;
--    sa<sizeof(sink_3_168(source()))    == 6> t5;
--    sa<sizeof(sink_3_168(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_168(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_168(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_168(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_168(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_168(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_168(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_168(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -395,11 +395,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_178(a))           == 1> t1;
--    sa<sizeof(sink_3_178(source()))    == 7> t5;
--    sa<sizeof(sink_3_178(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_178(v_source()))  == 7> t7;
--    sa<sizeof(sink_3_178(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_178(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_178(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_178(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_178(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_178(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -413,11 +413,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_234(ca))          == 2> t2;
--    sa<sizeof(sink_3_234(va))          == 3> t3;
--    sa<sizeof(sink_3_234(cva))         == 4> t4;
--    sa<sizeof(sink_3_234(source()))    == 2> t5;
--    sa<sizeof(sink_3_234(c_source()))  == 2> t6;
-+    sa<sizeof(sink_3_234(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_234(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_234(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_234(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_234(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -431,10 +431,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_235(ca))          == 2> t2;
--    sa<sizeof(sink_3_235(va))          == 3> t3;
--    sa<sizeof(sink_3_235(source()))    == 5> t5;
--    sa<sizeof(sink_3_235(c_source()))  == 2> t6;
-+    sa<sizeof(sink_3_235(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_235(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_235(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_235(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -448,10 +448,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_236(ca))          == 2> t2;
--    sa<sizeof(sink_3_236(va))          == 3> t3;
--    sa<sizeof(sink_3_236(source()))    == 6> t5;
--    sa<sizeof(sink_3_236(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_236(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_236(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_236(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_236(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -465,11 +465,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_237(ca))          == 2> t2;
--    sa<sizeof(sink_3_237(va))          == 3> t3;
--    sa<sizeof(sink_3_237(source()))    == 7> t5;
--    sa<sizeof(sink_3_237(c_source()))  == 2> t6;
--    sa<sizeof(sink_3_237(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_237(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_237(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_237(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_237(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_237(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -483,12 +483,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_238(ca))          == 2> t2;
--    sa<sizeof(sink_3_238(va))          == 3> t3;
--    sa<sizeof(sink_3_238(source()))    == 8> t5;
--    sa<sizeof(sink_3_238(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_238(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_238(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_238(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_238(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_238(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_238(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_238(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_238(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -502,12 +502,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_245(a))           == 2> t1;
--    sa<sizeof(sink_3_245(ca))          == 2> t2;
--    sa<sizeof(sink_3_245(va))          == 4> t3;
--    sa<sizeof(sink_3_245(cva))         == 4> t4;
--    sa<sizeof(sink_3_245(source()))    == 5> t5;
--    sa<sizeof(sink_3_245(c_source()))  == 2> t6;
-+    sa<sizeof(sink_3_245(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_245(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_245(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_245(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_245(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_245(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -521,12 +521,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_246(a))           == 2> t1;
--    sa<sizeof(sink_3_246(ca))          == 2> t2;
--    sa<sizeof(sink_3_246(va))          == 4> t3;
--    sa<sizeof(sink_3_246(cva))         == 4> t4;
--    sa<sizeof(sink_3_246(source()))    == 6> t5;
--    sa<sizeof(sink_3_246(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_246(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_246(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_246(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_246(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_246(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_246(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -540,13 +540,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_247(a))           == 2> t1;
--    sa<sizeof(sink_3_247(ca))          == 2> t2;
--    sa<sizeof(sink_3_247(va))          == 4> t3;
--    sa<sizeof(sink_3_247(cva))         == 4> t4;
--    sa<sizeof(sink_3_247(source()))    == 7> t5;
--    sa<sizeof(sink_3_247(c_source()))  == 2> t6;
--    sa<sizeof(sink_3_247(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_247(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_247(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_247(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_247(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_247(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_247(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_247(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -560,14 +560,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_248(a))           == 2> t1;
--    sa<sizeof(sink_3_248(ca))          == 2> t2;
--    sa<sizeof(sink_3_248(va))          == 4> t3;
--    sa<sizeof(sink_3_248(cva))         == 4> t4;
--    sa<sizeof(sink_3_248(source()))    == 8> t5;
--    sa<sizeof(sink_3_248(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_248(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_248(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_248(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_248(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_248(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_248(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_248(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_248(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_248(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_248(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -581,10 +581,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_256(a))           == 2> t1;
--    sa<sizeof(sink_3_256(ca))          == 2> t2;
--    sa<sizeof(sink_3_256(source()))    == 5> t5;
--    sa<sizeof(sink_3_256(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_256(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_256(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_256(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_256(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -598,11 +598,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_257(a))           == 2> t1;
--    sa<sizeof(sink_3_257(ca))          == 2> t2;
--    sa<sizeof(sink_3_257(source()))    == 5> t5;
--    sa<sizeof(sink_3_257(c_source()))  == 2> t6;
--    sa<sizeof(sink_3_257(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_257(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_257(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_257(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_257(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_257(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -616,12 +616,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_258(a))           == 2> t1;
--    sa<sizeof(sink_3_258(ca))          == 2> t2;
--    sa<sizeof(sink_3_258(source()))    == 5> t5;
--    sa<sizeof(sink_3_258(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_258(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_258(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_258(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_258(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_258(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_258(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_258(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_258(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -635,10 +635,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_267(a))           == 2> t1;
--    sa<sizeof(sink_3_267(ca))          == 2> t2;
--    sa<sizeof(sink_3_267(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_267(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_267(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_267(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_267(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_267(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -652,12 +652,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_268(a))           == 2> t1;
--    sa<sizeof(sink_3_268(ca))          == 2> t2;
--    sa<sizeof(sink_3_268(source()))    == 6> t5;
--    sa<sizeof(sink_3_268(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_268(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_268(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_268(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_268(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_268(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_268(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_268(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_268(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -671,12 +671,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_278(a))           == 2> t1;
--    sa<sizeof(sink_3_278(ca))          == 2> t2;
--    sa<sizeof(sink_3_278(source()))    == 7> t5;
--    sa<sizeof(sink_3_278(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_278(v_source()))  == 7> t7;
--    sa<sizeof(sink_3_278(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_278(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_278(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_278(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_278(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_278(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_278(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -690,11 +690,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_345(a))           == 3> t1;
--    sa<sizeof(sink_3_345(ca))          == 4> t2;
--    sa<sizeof(sink_3_345(va))          == 3> t3;
--    sa<sizeof(sink_3_345(cva))         == 4> t4;
--    sa<sizeof(sink_3_345(source()))    == 5> t5;
-+    sa<sizeof(sink_3_345(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_345(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_345(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_345(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_345(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -708,12 +708,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_346(a))           == 3> t1;
--    sa<sizeof(sink_3_346(ca))          == 4> t2;
--    sa<sizeof(sink_3_346(va))          == 3> t3;
--    sa<sizeof(sink_3_346(cva))         == 4> t4;
--    sa<sizeof(sink_3_346(source()))    == 6> t5;
--    sa<sizeof(sink_3_346(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_346(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_346(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_346(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_346(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_346(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_346(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -727,12 +727,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_347(a))           == 3> t1;
--    sa<sizeof(sink_3_347(ca))          == 4> t2;
--    sa<sizeof(sink_3_347(va))          == 3> t3;
--    sa<sizeof(sink_3_347(cva))         == 4> t4;
--    sa<sizeof(sink_3_347(source()))    == 7> t5;
--    sa<sizeof(sink_3_347(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_347(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_347(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_347(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_347(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_347(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_347(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -746,14 +746,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_348(a))           == 3> t1;
--    sa<sizeof(sink_3_348(ca))          == 4> t2;
--    sa<sizeof(sink_3_348(va))          == 3> t3;
--    sa<sizeof(sink_3_348(cva))         == 4> t4;
--    sa<sizeof(sink_3_348(source()))    == 8> t5;
--    sa<sizeof(sink_3_348(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_348(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_348(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_348(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_348(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_348(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_348(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_348(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_348(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_348(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_348(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -767,10 +767,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_356(a))           == 3> t1;
--    sa<sizeof(sink_3_356(va))          == 3> t3;
--    sa<sizeof(sink_3_356(source()))    == 5> t5;
--    sa<sizeof(sink_3_356(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_356(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_356(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_356(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_356(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -784,10 +784,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_357(a))           == 3> t1;
--    sa<sizeof(sink_3_357(va))          == 3> t3;
--    sa<sizeof(sink_3_357(source()))    == 5> t5;
--    sa<sizeof(sink_3_357(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_357(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_357(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_357(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_357(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -801,12 +801,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_358(a))           == 3> t1;
--    sa<sizeof(sink_3_358(va))          == 3> t3;
--    sa<sizeof(sink_3_358(source()))    == 5> t5;
--    sa<sizeof(sink_3_358(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_358(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_358(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_358(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_358(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_358(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_358(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_358(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_358(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -820,10 +820,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_367(a))           == 3> t1;
--    sa<sizeof(sink_3_367(va))          == 3> t3;
--    sa<sizeof(sink_3_367(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_367(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_367(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_367(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_367(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_367(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -837,12 +837,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_368(a))           == 3> t1;
--    sa<sizeof(sink_3_368(va))          == 3> t3;
--    sa<sizeof(sink_3_368(source()))    == 6> t5;
--    sa<sizeof(sink_3_368(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_368(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_368(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_368(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_368(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_368(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_368(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_368(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_368(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -856,12 +856,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_378(a))           == 3> t1;
--    sa<sizeof(sink_3_378(va))          == 3> t3;
--    sa<sizeof(sink_3_378(source()))    == 7> t5;
--    sa<sizeof(sink_3_378(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_378(v_source()))  == 7> t7;
--    sa<sizeof(sink_3_378(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_378(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_378(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_378(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_378(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_378(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_378(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -875,12 +875,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_456(a))           == 4> t1;
--    sa<sizeof(sink_3_456(ca))          == 4> t2;
--    sa<sizeof(sink_3_456(va))          == 4> t3;
--    sa<sizeof(sink_3_456(cva))         == 4> t4;
--    sa<sizeof(sink_3_456(source()))    == 5> t5;
--    sa<sizeof(sink_3_456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_3_456(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_456(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_456(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -894,12 +894,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_457(a))           == 4> t1;
--    sa<sizeof(sink_3_457(ca))          == 4> t2;
--    sa<sizeof(sink_3_457(va))          == 4> t3;
--    sa<sizeof(sink_3_457(cva))         == 4> t4;
--    sa<sizeof(sink_3_457(source()))    == 5> t5;
--    sa<sizeof(sink_3_457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_457(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_457(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_457(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -913,14 +913,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_458(a))           == 4> t1;
--    sa<sizeof(sink_3_458(ca))          == 4> t2;
--    sa<sizeof(sink_3_458(va))          == 4> t3;
--    sa<sizeof(sink_3_458(cva))         == 4> t4;
--    sa<sizeof(sink_3_458(source()))    == 5> t5;
--    sa<sizeof(sink_3_458(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_458(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_458(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_458(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_458(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -934,12 +934,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_467(a))           == 4> t1;
--    sa<sizeof(sink_3_467(ca))          == 4> t2;
--    sa<sizeof(sink_3_467(va))          == 4> t3;
--    sa<sizeof(sink_3_467(cva))         == 4> t4;
--    sa<sizeof(sink_3_467(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_467(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_467(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_467(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -953,14 +953,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_468(a))           == 4> t1;
--    sa<sizeof(sink_3_468(ca))          == 4> t2;
--    sa<sizeof(sink_3_468(va))          == 4> t3;
--    sa<sizeof(sink_3_468(cva))         == 4> t4;
--    sa<sizeof(sink_3_468(source()))    == 6> t5;
--    sa<sizeof(sink_3_468(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_468(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_468(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_468(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_468(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -974,14 +974,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_478(a))           == 4> t1;
--    sa<sizeof(sink_3_478(ca))          == 4> t2;
--    sa<sizeof(sink_3_478(va))          == 4> t3;
--    sa<sizeof(sink_3_478(cva))         == 4> t4;
--    sa<sizeof(sink_3_478(source()))    == 7> t5;
--    sa<sizeof(sink_3_478(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_478(v_source()))  == 7> t7;
--    sa<sizeof(sink_3_478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_478(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_3_478(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_3_478(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_3_478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_3_478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -995,9 +995,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_567(source()))    == 5> t5;
--    sa<sizeof(sink_3_567(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_3_567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1011,10 +1011,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_568(source()))    == 5> t5;
--    sa<sizeof(sink_3_568(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_568(v_source()))  == 8> t7;
--    sa<sizeof(sink_3_568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1028,10 +1028,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_578(source()))    == 5> t5;
--    sa<sizeof(sink_3_578(c_source()))  == 8> t6;
--    sa<sizeof(sink_3_578(v_source()))  == 7> t7;
--    sa<sizeof(sink_3_578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_3_578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1045,9 +1045,9 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_3_678(c_source()))  == 6> t6;
--    sa<sizeof(sink_3_678(v_source()))  == 7> t7;
--    sa<sizeof(sink_3_678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_3_678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_3_678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_3_678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv4p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv4p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv4p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -41,12 +41,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1234(a))           == 1> t1;
--    sa<sizeof(sink_4_1234(ca))          == 2> t2;
--    sa<sizeof(sink_4_1234(va))          == 3> t3;
--    sa<sizeof(sink_4_1234(cva))         == 4> t4;
--    sa<sizeof(sink_4_1234(source()))    == 2> t5;
--    sa<sizeof(sink_4_1234(c_source()))  == 2> t6;
-+    sa<sizeof(sink_4_1234(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1234(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1234(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1234(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1234(source()))    == 2 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1234(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -61,11 +61,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1235(a))           == 1> t1;
--    sa<sizeof(sink_4_1235(ca))          == 2> t2;
--    sa<sizeof(sink_4_1235(va))          == 3> t3;
--    sa<sizeof(sink_4_1235(source()))    == 5> t5;
--    sa<sizeof(sink_4_1235(c_source()))  == 2> t6;
-+    sa<sizeof(sink_4_1235(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1235(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1235(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1235(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1235(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -80,11 +80,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1236(a))           == 1> t1;
--    sa<sizeof(sink_4_1236(ca))          == 2> t2;
--    sa<sizeof(sink_4_1236(va))          == 3> t3;
--    sa<sizeof(sink_4_1236(source()))    == 6> t5;
--    sa<sizeof(sink_4_1236(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_1236(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1236(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1236(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1236(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1236(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -99,12 +99,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1237(a))           == 1> t1;
--    sa<sizeof(sink_4_1237(ca))          == 2> t2;
--    sa<sizeof(sink_4_1237(va))          == 3> t3;
--    sa<sizeof(sink_4_1237(source()))    == 7> t5;
--    sa<sizeof(sink_4_1237(c_source()))  == 2> t6;
--    sa<sizeof(sink_4_1237(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1237(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1237(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1237(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1237(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1237(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1237(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -119,13 +119,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1238(a))           == 1> t1;
--    sa<sizeof(sink_4_1238(ca))          == 2> t2;
--    sa<sizeof(sink_4_1238(va))          == 3> t3;
--    sa<sizeof(sink_4_1238(source()))    == 8> t5;
--    sa<sizeof(sink_4_1238(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1238(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1238(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1238(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1238(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1238(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1238(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1238(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1238(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1238(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -140,12 +140,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1245(a))           == 1> t1;
--    sa<sizeof(sink_4_1245(ca))          == 2> t2;
--    sa<sizeof(sink_4_1245(va))          == 4> t3;
--    sa<sizeof(sink_4_1245(cva))         == 4> t4;
--    sa<sizeof(sink_4_1245(source()))    == 5> t5;
--    sa<sizeof(sink_4_1245(c_source()))  == 2> t6;
-+    sa<sizeof(sink_4_1245(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1245(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1245(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1245(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1245(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1245(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -160,12 +160,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1246(a))           == 1> t1;
--    sa<sizeof(sink_4_1246(ca))          == 2> t2;
--    sa<sizeof(sink_4_1246(va))          == 4> t3;
--    sa<sizeof(sink_4_1246(cva))         == 4> t4;
--    sa<sizeof(sink_4_1246(source()))    == 6> t5;
--    sa<sizeof(sink_4_1246(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_1246(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1246(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1246(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1246(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1246(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1246(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -180,13 +180,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1247(a))           == 1> t1;
--    sa<sizeof(sink_4_1247(ca))          == 2> t2;
--    sa<sizeof(sink_4_1247(va))          == 4> t3;
--    sa<sizeof(sink_4_1247(cva))         == 4> t4;
--    sa<sizeof(sink_4_1247(source()))    == 7> t5;
--    sa<sizeof(sink_4_1247(c_source()))  == 2> t6;
--    sa<sizeof(sink_4_1247(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1247(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1247(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1247(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1247(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1247(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1247(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1247(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -201,14 +201,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1248(a))           == 1> t1;
--    sa<sizeof(sink_4_1248(ca))          == 2> t2;
--    sa<sizeof(sink_4_1248(va))          == 4> t3;
--    sa<sizeof(sink_4_1248(cva))         == 4> t4;
--    sa<sizeof(sink_4_1248(source()))    == 8> t5;
--    sa<sizeof(sink_4_1248(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1248(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1248(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1248(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1248(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1248(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1248(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1248(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1248(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1248(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1248(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -223,10 +223,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1256(a))           == 1> t1;
--    sa<sizeof(sink_4_1256(ca))          == 2> t2;
--    sa<sizeof(sink_4_1256(source()))    == 5> t5;
--    sa<sizeof(sink_4_1256(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_1256(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1256(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1256(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1256(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -241,11 +241,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1257(a))           == 1> t1;
--    sa<sizeof(sink_4_1257(ca))          == 2> t2;
--    sa<sizeof(sink_4_1257(source()))    == 5> t5;
--    sa<sizeof(sink_4_1257(c_source()))  == 2> t6;
--    sa<sizeof(sink_4_1257(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1257(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1257(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1257(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1257(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1257(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -260,12 +260,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1258(a))           == 1> t1;
--    sa<sizeof(sink_4_1258(ca))          == 2> t2;
--    sa<sizeof(sink_4_1258(source()))    == 5> t5;
--    sa<sizeof(sink_4_1258(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1258(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1258(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1258(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1258(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1258(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1258(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1258(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1258(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -280,10 +280,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1267(a))           == 1> t1;
--    sa<sizeof(sink_4_1267(ca))          == 2> t2;
--    sa<sizeof(sink_4_1267(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1267(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1267(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1267(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1267(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1267(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -298,12 +298,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1268(a))           == 1> t1;
--    sa<sizeof(sink_4_1268(ca))          == 2> t2;
--    sa<sizeof(sink_4_1268(source()))    == 6> t5;
--    sa<sizeof(sink_4_1268(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1268(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1268(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1268(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1268(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1268(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1268(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1268(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1268(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -318,12 +318,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1278(a))           == 1> t1;
--    sa<sizeof(sink_4_1278(ca))          == 2> t2;
--    sa<sizeof(sink_4_1278(source()))    == 7> t5;
--    sa<sizeof(sink_4_1278(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1278(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_1278(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1278(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1278(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1278(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1278(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1278(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1278(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -338,11 +338,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1345(a))           == 1> t1;
--    sa<sizeof(sink_4_1345(ca))          == 4> t2;
--    sa<sizeof(sink_4_1345(va))          == 3> t3;
--    sa<sizeof(sink_4_1345(cva))         == 4> t4;
--    sa<sizeof(sink_4_1345(source()))    == 5> t5;
-+    sa<sizeof(sink_4_1345(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1345(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1345(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1345(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1345(source()))    == 5 * sizeof(long)> t5;
-     return 0;
- }
-@@ -357,12 +357,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1346(a))           == 1> t1;
--    sa<sizeof(sink_4_1346(ca))          == 4> t2;
--    sa<sizeof(sink_4_1346(va))          == 3> t3;
--    sa<sizeof(sink_4_1346(cva))         == 4> t4;
--    sa<sizeof(sink_4_1346(source()))    == 6> t5;
--    sa<sizeof(sink_4_1346(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_1346(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1346(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1346(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1346(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1346(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1346(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -377,12 +377,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1347(a))           == 1> t1;
--    sa<sizeof(sink_4_1347(ca))          == 4> t2;
--    sa<sizeof(sink_4_1347(va))          == 3> t3;
--    sa<sizeof(sink_4_1347(cva))         == 4> t4;
--    sa<sizeof(sink_4_1347(source()))    == 7> t5;
--    sa<sizeof(sink_4_1347(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1347(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1347(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1347(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1347(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1347(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1347(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -397,14 +397,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1348(a))           == 1> t1;
--    sa<sizeof(sink_4_1348(ca))          == 4> t2;
--    sa<sizeof(sink_4_1348(va))          == 3> t3;
--    sa<sizeof(sink_4_1348(cva))         == 4> t4;
--    sa<sizeof(sink_4_1348(source()))    == 8> t5;
--    sa<sizeof(sink_4_1348(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1348(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1348(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1348(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1348(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1348(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1348(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1348(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1348(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1348(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1348(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -419,10 +419,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1356(a))           == 1> t1;
--    sa<sizeof(sink_4_1356(va))          == 3> t3;
--    sa<sizeof(sink_4_1356(source()))    == 5> t5;
--    sa<sizeof(sink_4_1356(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_1356(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1356(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1356(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1356(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -437,10 +437,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1357(a))           == 1> t1;
--    sa<sizeof(sink_4_1357(va))          == 3> t3;
--    sa<sizeof(sink_4_1357(source()))    == 5> t5;
--    sa<sizeof(sink_4_1357(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1357(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1357(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1357(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1357(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -455,12 +455,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1358(a))           == 1> t1;
--    sa<sizeof(sink_4_1358(va))          == 3> t3;
--    sa<sizeof(sink_4_1358(source()))    == 5> t5;
--    sa<sizeof(sink_4_1358(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1358(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1358(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1358(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1358(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1358(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1358(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1358(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1358(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -475,10 +475,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1367(a))           == 1> t1;
--    sa<sizeof(sink_4_1367(va))          == 3> t3;
--    sa<sizeof(sink_4_1367(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1367(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1367(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1367(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1367(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1367(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -493,12 +493,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1368(a))           == 1> t1;
--    sa<sizeof(sink_4_1368(va))          == 3> t3;
--    sa<sizeof(sink_4_1368(source()))    == 6> t5;
--    sa<sizeof(sink_4_1368(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1368(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1368(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1368(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1368(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1368(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1368(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1368(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1368(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -513,12 +513,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1378(a))           == 1> t1;
--    sa<sizeof(sink_4_1378(va))          == 3> t3;
--    sa<sizeof(sink_4_1378(source()))    == 7> t5;
--    sa<sizeof(sink_4_1378(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1378(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_1378(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1378(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1378(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1378(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1378(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1378(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1378(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -533,12 +533,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1456(a))           == 1> t1;
--    sa<sizeof(sink_4_1456(ca))          == 4> t2;
--    sa<sizeof(sink_4_1456(va))          == 4> t3;
--    sa<sizeof(sink_4_1456(cva))         == 4> t4;
--    sa<sizeof(sink_4_1456(source()))    == 5> t5;
--    sa<sizeof(sink_4_1456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_1456(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1456(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1456(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -553,12 +553,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1457(a))           == 1> t1;
--    sa<sizeof(sink_4_1457(ca))          == 4> t2;
--    sa<sizeof(sink_4_1457(va))          == 4> t3;
--    sa<sizeof(sink_4_1457(cva))         == 4> t4;
--    sa<sizeof(sink_4_1457(source()))    == 5> t5;
--    sa<sizeof(sink_4_1457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1457(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1457(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1457(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -573,14 +573,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1458(a))           == 1> t1;
--    sa<sizeof(sink_4_1458(ca))          == 4> t2;
--    sa<sizeof(sink_4_1458(va))          == 4> t3;
--    sa<sizeof(sink_4_1458(cva))         == 4> t4;
--    sa<sizeof(sink_4_1458(source()))    == 5> t5;
--    sa<sizeof(sink_4_1458(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1458(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1458(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1458(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1458(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -595,12 +595,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1467(a))           == 1> t1;
--    sa<sizeof(sink_4_1467(ca))          == 4> t2;
--    sa<sizeof(sink_4_1467(va))          == 4> t3;
--    sa<sizeof(sink_4_1467(cva))         == 4> t4;
--    sa<sizeof(sink_4_1467(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1467(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1467(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1467(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -615,14 +615,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1468(a))           == 1> t1;
--    sa<sizeof(sink_4_1468(ca))          == 4> t2;
--    sa<sizeof(sink_4_1468(va))          == 4> t3;
--    sa<sizeof(sink_4_1468(cva))         == 4> t4;
--    sa<sizeof(sink_4_1468(source()))    == 6> t5;
--    sa<sizeof(sink_4_1468(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1468(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1468(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1468(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1468(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -637,14 +637,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1478(a))           == 1> t1;
--    sa<sizeof(sink_4_1478(ca))          == 4> t2;
--    sa<sizeof(sink_4_1478(va))          == 4> t3;
--    sa<sizeof(sink_4_1478(cva))         == 4> t4;
--    sa<sizeof(sink_4_1478(source()))    == 7> t5;
--    sa<sizeof(sink_4_1478(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1478(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_1478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1478(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1478(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_1478(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_1478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_1478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -659,10 +659,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1567(a))           == 1> t1;
--    sa<sizeof(sink_4_1567(source()))    == 5> t5;
--    sa<sizeof(sink_4_1567(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_1567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -677,11 +677,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1568(a))           == 1> t1;
--    sa<sizeof(sink_4_1568(source()))    == 5> t5;
--    sa<sizeof(sink_4_1568(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1568(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_1568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -696,11 +696,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1578(a))           == 1> t1;
--    sa<sizeof(sink_4_1578(source()))    == 5> t5;
--    sa<sizeof(sink_4_1578(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_1578(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_1578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_1578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -715,10 +715,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_1678(a))           == 1> t1;
--    sa<sizeof(sink_4_1678(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_1678(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_1678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_1678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_1678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_1678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_1678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -733,11 +733,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2345(ca))          == 2> t2;
--    sa<sizeof(sink_4_2345(va))          == 3> t3;
--    sa<sizeof(sink_4_2345(cva))         == 4> t4;
--    sa<sizeof(sink_4_2345(source()))    == 5> t5;
--    sa<sizeof(sink_4_2345(c_source()))  == 2> t6;
-+    sa<sizeof(sink_4_2345(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2345(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2345(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2345(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2345(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -752,11 +752,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2346(ca))          == 2> t2;
--    sa<sizeof(sink_4_2346(va))          == 3> t3;
--    sa<sizeof(sink_4_2346(cva))         == 4> t4;
--    sa<sizeof(sink_4_2346(source()))    == 6> t5;
--    sa<sizeof(sink_4_2346(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_2346(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2346(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2346(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2346(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2346(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -771,12 +771,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2347(ca))          == 2> t2;
--    sa<sizeof(sink_4_2347(va))          == 3> t3;
--    sa<sizeof(sink_4_2347(cva))         == 4> t4;
--    sa<sizeof(sink_4_2347(source()))    == 7> t5;
--    sa<sizeof(sink_4_2347(c_source()))  == 2> t6;
--    sa<sizeof(sink_4_2347(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_2347(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2347(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2347(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2347(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2347(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2347(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -791,13 +791,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2348(ca))          == 2> t2;
--    sa<sizeof(sink_4_2348(va))          == 3> t3;
--    sa<sizeof(sink_4_2348(cva))         == 4> t4;
--    sa<sizeof(sink_4_2348(source()))    == 8> t5;
--    sa<sizeof(sink_4_2348(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_2348(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_2348(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2348(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2348(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2348(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2348(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2348(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2348(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2348(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -812,10 +812,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2356(ca))          == 2> t2;
--    sa<sizeof(sink_4_2356(va))          == 3> t3;
--    sa<sizeof(sink_4_2356(source()))    == 5> t5;
--    sa<sizeof(sink_4_2356(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_2356(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2356(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2356(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2356(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -830,11 +830,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2357(ca))          == 2> t2;
--    sa<sizeof(sink_4_2357(va))          == 3> t3;
--    sa<sizeof(sink_4_2357(source()))    == 5> t5;
--    sa<sizeof(sink_4_2357(c_source()))  == 2> t6;
--    sa<sizeof(sink_4_2357(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_2357(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2357(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2357(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2357(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2357(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -849,12 +849,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2358(ca))          == 2> t2;
--    sa<sizeof(sink_4_2358(va))          == 3> t3;
--    sa<sizeof(sink_4_2358(source()))    == 5> t5;
--    sa<sizeof(sink_4_2358(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_2358(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_2358(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2358(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2358(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2358(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2358(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2358(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2358(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -869,10 +869,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2367(ca))          == 2> t2;
--    sa<sizeof(sink_4_2367(va))          == 3> t3;
--    sa<sizeof(sink_4_2367(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2367(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_2367(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2367(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2367(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2367(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -887,12 +887,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2368(ca))          == 2> t2;
--    sa<sizeof(sink_4_2368(va))          == 3> t3;
--    sa<sizeof(sink_4_2368(source()))    == 6> t5;
--    sa<sizeof(sink_4_2368(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2368(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_2368(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2368(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2368(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2368(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2368(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2368(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2368(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -907,12 +907,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2378(ca))          == 2> t2;
--    sa<sizeof(sink_4_2378(va))          == 3> t3;
--    sa<sizeof(sink_4_2378(source()))    == 7> t5;
--    sa<sizeof(sink_4_2378(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_2378(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_2378(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2378(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2378(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2378(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2378(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2378(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2378(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -927,12 +927,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2456(a))           == 2> t1;
--    sa<sizeof(sink_4_2456(ca))          == 2> t2;
--    sa<sizeof(sink_4_2456(va))          == 4> t3;
--    sa<sizeof(sink_4_2456(cva))         == 4> t4;
--    sa<sizeof(sink_4_2456(source()))    == 5> t5;
--    sa<sizeof(sink_4_2456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_2456(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2456(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2456(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -947,13 +947,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2457(a))           == 2> t1;
--    sa<sizeof(sink_4_2457(ca))          == 2> t2;
--    sa<sizeof(sink_4_2457(va))          == 4> t3;
--    sa<sizeof(sink_4_2457(cva))         == 4> t4;
--    sa<sizeof(sink_4_2457(source()))    == 5> t5;
--    sa<sizeof(sink_4_2457(c_source()))  == 2> t6;
--    sa<sizeof(sink_4_2457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_2457(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2457(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2457(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2457(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -968,14 +968,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2458(a))           == 2> t1;
--    sa<sizeof(sink_4_2458(ca))          == 2> t2;
--    sa<sizeof(sink_4_2458(va))          == 4> t3;
--    sa<sizeof(sink_4_2458(cva))         == 4> t4;
--    sa<sizeof(sink_4_2458(source()))    == 5> t5;
--    sa<sizeof(sink_4_2458(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_2458(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_2458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2458(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2458(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2458(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -990,12 +990,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2467(a))           == 2> t1;
--    sa<sizeof(sink_4_2467(ca))          == 2> t2;
--    sa<sizeof(sink_4_2467(va))          == 4> t3;
--    sa<sizeof(sink_4_2467(cva))         == 4> t4;
--    sa<sizeof(sink_4_2467(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_2467(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2467(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2467(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1010,14 +1010,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2468(a))           == 2> t1;
--    sa<sizeof(sink_4_2468(ca))          == 2> t2;
--    sa<sizeof(sink_4_2468(va))          == 4> t3;
--    sa<sizeof(sink_4_2468(cva))         == 4> t4;
--    sa<sizeof(sink_4_2468(source()))    == 6> t5;
--    sa<sizeof(sink_4_2468(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2468(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_2468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2468(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2468(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2468(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1032,14 +1032,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2478(a))           == 2> t1;
--    sa<sizeof(sink_4_2478(ca))          == 2> t2;
--    sa<sizeof(sink_4_2478(va))          == 4> t3;
--    sa<sizeof(sink_4_2478(cva))         == 4> t4;
--    sa<sizeof(sink_4_2478(source()))    == 7> t5;
--    sa<sizeof(sink_4_2478(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_2478(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_2478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2478(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2478(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2478(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_2478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_2478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1054,11 +1054,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2567(a))           == 2> t1;
--    sa<sizeof(sink_4_2567(ca))          == 2> t2;
--    sa<sizeof(sink_4_2567(source()))    == 5> t5;
--    sa<sizeof(sink_4_2567(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_2567(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1073,12 +1073,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2568(a))           == 2> t1;
--    sa<sizeof(sink_4_2568(ca))          == 2> t2;
--    sa<sizeof(sink_4_2568(source()))    == 5> t5;
--    sa<sizeof(sink_4_2568(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2568(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_2568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2568(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1093,12 +1093,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2578(a))           == 2> t1;
--    sa<sizeof(sink_4_2578(ca))          == 2> t2;
--    sa<sizeof(sink_4_2578(source()))    == 5> t5;
--    sa<sizeof(sink_4_2578(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_2578(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_2578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2578(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_2578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1113,11 +1113,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_2678(a))           == 2> t1;
--    sa<sizeof(sink_4_2678(ca))          == 2> t2;
--    sa<sizeof(sink_4_2678(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_2678(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_2678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_2678(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_2678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_2678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_2678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_2678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1132,12 +1132,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3456(a))           == 3> t1;
--    sa<sizeof(sink_4_3456(ca))          == 4> t2;
--    sa<sizeof(sink_4_3456(va))          == 3> t3;
--    sa<sizeof(sink_4_3456(cva))         == 4> t4;
--    sa<sizeof(sink_4_3456(source()))    == 5> t5;
--    sa<sizeof(sink_4_3456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_4_3456(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3456(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_3456(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_3456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -1152,12 +1152,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3457(a))           == 3> t1;
--    sa<sizeof(sink_4_3457(ca))          == 4> t2;
--    sa<sizeof(sink_4_3457(va))          == 3> t3;
--    sa<sizeof(sink_4_3457(cva))         == 4> t4;
--    sa<sizeof(sink_4_3457(source()))    == 5> t5;
--    sa<sizeof(sink_4_3457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_3457(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3457(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_3457(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_3457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1172,14 +1172,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3458(a))           == 3> t1;
--    sa<sizeof(sink_4_3458(ca))          == 4> t2;
--    sa<sizeof(sink_4_3458(va))          == 3> t3;
--    sa<sizeof(sink_4_3458(cva))         == 4> t4;
--    sa<sizeof(sink_4_3458(source()))    == 5> t5;
--    sa<sizeof(sink_4_3458(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_3458(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_3458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_3458(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3458(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_3458(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_3458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_3458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1194,12 +1194,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3467(a))           == 3> t1;
--    sa<sizeof(sink_4_3467(ca))          == 4> t2;
--    sa<sizeof(sink_4_3467(va))          == 3> t3;
--    sa<sizeof(sink_4_3467(cva))         == 4> t4;
--    sa<sizeof(sink_4_3467(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_3467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_3467(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3467(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_3467(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_3467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1214,14 +1214,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3468(a))           == 3> t1;
--    sa<sizeof(sink_4_3468(ca))          == 4> t2;
--    sa<sizeof(sink_4_3468(va))          == 3> t3;
--    sa<sizeof(sink_4_3468(cva))         == 4> t4;
--    sa<sizeof(sink_4_3468(source()))    == 6> t5;
--    sa<sizeof(sink_4_3468(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_3468(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_3468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_3468(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3468(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_3468(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_3468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_3468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1236,14 +1236,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3478(a))           == 3> t1;
--    sa<sizeof(sink_4_3478(ca))          == 4> t2;
--    sa<sizeof(sink_4_3478(va))          == 3> t3;
--    sa<sizeof(sink_4_3478(cva))         == 4> t4;
--    sa<sizeof(sink_4_3478(source()))    == 7> t5;
--    sa<sizeof(sink_4_3478(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_3478(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_3478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_3478(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3478(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_3478(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_3478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_3478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1258,11 +1258,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3567(a))           == 3> t1;
--    sa<sizeof(sink_4_3567(va))          == 3> t3;
--    sa<sizeof(sink_4_3567(source()))    == 5> t5;
--    sa<sizeof(sink_4_3567(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_3567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_3567(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1277,12 +1277,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3568(a))           == 3> t1;
--    sa<sizeof(sink_4_3568(va))          == 3> t3;
--    sa<sizeof(sink_4_3568(source()))    == 5> t5;
--    sa<sizeof(sink_4_3568(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_3568(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_3568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_3568(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_3568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1297,12 +1297,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3578(a))           == 3> t1;
--    sa<sizeof(sink_4_3578(va))          == 3> t3;
--    sa<sizeof(sink_4_3578(source()))    == 5> t5;
--    sa<sizeof(sink_4_3578(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_3578(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_3578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_3578(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_3578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_3578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1317,11 +1317,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_3678(a))           == 3> t1;
--    sa<sizeof(sink_4_3678(va))          == 3> t3;
--    sa<sizeof(sink_4_3678(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_3678(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_3678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_3678(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_3678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_3678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_3678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_3678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1336,13 +1336,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_4567(a))           == 4> t1;
--    sa<sizeof(sink_4_4567(ca))          == 4> t2;
--    sa<sizeof(sink_4_4567(va))          == 4> t3;
--    sa<sizeof(sink_4_4567(cva))         == 4> t4;
--    sa<sizeof(sink_4_4567(source()))    == 5> t5;
--    sa<sizeof(sink_4_4567(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_4567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_4_4567(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_4567(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_4567(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_4567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_4567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_4567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_4567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1357,14 +1357,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_4568(a))           == 4> t1;
--    sa<sizeof(sink_4_4568(ca))          == 4> t2;
--    sa<sizeof(sink_4_4568(va))          == 4> t3;
--    sa<sizeof(sink_4_4568(cva))         == 4> t4;
--    sa<sizeof(sink_4_4568(source()))    == 5> t5;
--    sa<sizeof(sink_4_4568(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_4568(v_source()))  == 8> t7;
--    sa<sizeof(sink_4_4568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_4568(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_4568(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_4568(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_4568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_4568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_4568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_4568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_4568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1379,14 +1379,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_4578(a))           == 4> t1;
--    sa<sizeof(sink_4_4578(ca))          == 4> t2;
--    sa<sizeof(sink_4_4578(va))          == 4> t3;
--    sa<sizeof(sink_4_4578(cva))         == 4> t4;
--    sa<sizeof(sink_4_4578(source()))    == 5> t5;
--    sa<sizeof(sink_4_4578(c_source()))  == 8> t6;
--    sa<sizeof(sink_4_4578(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_4578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_4578(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_4578(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_4578(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_4578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_4578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_4578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_4578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_4578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1401,13 +1401,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_4678(a))           == 4> t1;
--    sa<sizeof(sink_4_4678(ca))          == 4> t2;
--    sa<sizeof(sink_4_4678(va))          == 4> t3;
--    sa<sizeof(sink_4_4678(cva))         == 4> t4;
--    sa<sizeof(sink_4_4678(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_4678(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_4678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_4678(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_4_4678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_4_4678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_4_4678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_4_4678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_4678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_4678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1422,10 +1422,10 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_4_5678(source()))    == 5> t5;
--    sa<sizeof(sink_4_5678(c_source()))  == 6> t6;
--    sa<sizeof(sink_4_5678(v_source()))  == 7> t7;
--    sa<sizeof(sink_4_5678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_4_5678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_4_5678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_4_5678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_4_5678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/iop.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/iop.C   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/iop.C   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -12,8 +12,8 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
- struct os
- {
-@@ -30,7 +30,7 @@
- void test()
- {
-     os o;
--    sa<sizeof(o << 1) == 1> t1;  // Calls os::operator<<(int)
-+    sa<sizeof(o << 1) == 1 * sizeof(long)> t1;  // Calls os::operator<<(int)
-                                  // Would be ambiguous if the implicit object parameter
-                                  // was an rvalue reference.
- }
-Index: gcc/testsuite/g++.dg/cpp0x/rv5p.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv5p.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/rv5p.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,14 +8,14 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
--struct three {char x[3];};
--struct four  {char x[4];};
--struct five  {char x[5];};
--struct six   {char x[6];};
--struct seven {char x[7];};
--struct eight {char x[8];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
-+struct three {long x[3];};
-+struct four  {long x[4];};
-+struct five  {long x[5];};
-+struct six   {long x[6];};
-+struct seven {long x[7];};
-+struct eight {long x[8];};
- struct A
- {
-@@ -42,12 +42,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12345(a))           == 1> t1;
--    sa<sizeof(sink_5_12345(ca))          == 2> t2;
--    sa<sizeof(sink_5_12345(va))          == 3> t3;
--    sa<sizeof(sink_5_12345(cva))         == 4> t4;
--    sa<sizeof(sink_5_12345(source()))    == 5> t5;
--    sa<sizeof(sink_5_12345(c_source()))  == 2> t6;
-+    sa<sizeof(sink_5_12345(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12345(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12345(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12345(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12345(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12345(c_source()))  == 2 * sizeof(long)> t6;
-     return 0;
- }
-@@ -63,12 +63,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12346(a))           == 1> t1;
--    sa<sizeof(sink_5_12346(ca))          == 2> t2;
--    sa<sizeof(sink_5_12346(va))          == 3> t3;
--    sa<sizeof(sink_5_12346(cva))         == 4> t4;
--    sa<sizeof(sink_5_12346(source()))    == 6> t5;
--    sa<sizeof(sink_5_12346(c_source()))  == 6> t6;
-+    sa<sizeof(sink_5_12346(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12346(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12346(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12346(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12346(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12346(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -84,13 +84,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12347(a))           == 1> t1;
--    sa<sizeof(sink_5_12347(ca))          == 2> t2;
--    sa<sizeof(sink_5_12347(va))          == 3> t3;
--    sa<sizeof(sink_5_12347(cva))         == 4> t4;
--    sa<sizeof(sink_5_12347(source()))    == 7> t5;
--    sa<sizeof(sink_5_12347(c_source()))  == 2> t6;
--    sa<sizeof(sink_5_12347(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_12347(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12347(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12347(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12347(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12347(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12347(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12347(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -106,14 +106,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12348(a))           == 1> t1;
--    sa<sizeof(sink_5_12348(ca))          == 2> t2;
--    sa<sizeof(sink_5_12348(va))          == 3> t3;
--    sa<sizeof(sink_5_12348(cva))         == 4> t4;
--    sa<sizeof(sink_5_12348(source()))    == 8> t5;
--    sa<sizeof(sink_5_12348(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_12348(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_12348(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12348(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12348(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12348(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12348(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12348(source()))    == 8 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12348(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12348(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12348(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -129,11 +129,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12356(a))           == 1> t1;
--    sa<sizeof(sink_5_12356(ca))          == 2> t2;
--    sa<sizeof(sink_5_12356(va))          == 3> t3;
--    sa<sizeof(sink_5_12356(source()))    == 5> t5;
--    sa<sizeof(sink_5_12356(c_source()))  == 6> t6;
-+    sa<sizeof(sink_5_12356(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12356(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12356(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12356(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12356(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -149,12 +149,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12357(a))           == 1> t1;
--    sa<sizeof(sink_5_12357(ca))          == 2> t2;
--    sa<sizeof(sink_5_12357(va))          == 3> t3;
--    sa<sizeof(sink_5_12357(source()))    == 5> t5;
--    sa<sizeof(sink_5_12357(c_source()))  == 2> t6;
--    sa<sizeof(sink_5_12357(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_12357(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12357(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12357(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12357(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12357(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12357(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -170,13 +170,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12358(a))           == 1> t1;
--    sa<sizeof(sink_5_12358(ca))          == 2> t2;
--    sa<sizeof(sink_5_12358(va))          == 3> t3;
--    sa<sizeof(sink_5_12358(source()))    == 5> t5;
--    sa<sizeof(sink_5_12358(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_12358(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_12358(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12358(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12358(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12358(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12358(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12358(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12358(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12358(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -192,11 +192,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12367(a))           == 1> t1;
--    sa<sizeof(sink_5_12367(ca))          == 2> t2;
--    sa<sizeof(sink_5_12367(va))          == 3> t3;
--    sa<sizeof(sink_5_12367(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12367(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_12367(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12367(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12367(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12367(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12367(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -212,13 +212,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12368(a))           == 1> t1;
--    sa<sizeof(sink_5_12368(ca))          == 2> t2;
--    sa<sizeof(sink_5_12368(va))          == 3> t3;
--    sa<sizeof(sink_5_12368(source()))    == 6> t5;
--    sa<sizeof(sink_5_12368(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12368(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_12368(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12368(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12368(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12368(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12368(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12368(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12368(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12368(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -234,13 +234,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12378(a))           == 1> t1;
--    sa<sizeof(sink_5_12378(ca))          == 2> t2;
--    sa<sizeof(sink_5_12378(va))          == 3> t3;
--    sa<sizeof(sink_5_12378(source()))    == 7> t5;
--    sa<sizeof(sink_5_12378(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_12378(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_12378(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12378(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12378(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12378(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12378(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12378(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12378(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12378(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -256,12 +256,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12456(a))           == 1> t1;
--    sa<sizeof(sink_5_12456(ca))          == 2> t2;
--    sa<sizeof(sink_5_12456(va))          == 4> t3;
--    sa<sizeof(sink_5_12456(cva))         == 4> t4;
--    sa<sizeof(sink_5_12456(source()))    == 5> t5;
--    sa<sizeof(sink_5_12456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_5_12456(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12456(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12456(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -277,13 +277,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12457(a))           == 1> t1;
--    sa<sizeof(sink_5_12457(ca))          == 2> t2;
--    sa<sizeof(sink_5_12457(va))          == 4> t3;
--    sa<sizeof(sink_5_12457(cva))         == 4> t4;
--    sa<sizeof(sink_5_12457(source()))    == 5> t5;
--    sa<sizeof(sink_5_12457(c_source()))  == 2> t6;
--    sa<sizeof(sink_5_12457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_12457(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12457(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12457(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12457(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -299,14 +299,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12458(a))           == 1> t1;
--    sa<sizeof(sink_5_12458(ca))          == 2> t2;
--    sa<sizeof(sink_5_12458(va))          == 4> t3;
--    sa<sizeof(sink_5_12458(cva))         == 4> t4;
--    sa<sizeof(sink_5_12458(source()))    == 5> t5;
--    sa<sizeof(sink_5_12458(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_12458(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_12458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12458(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12458(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12458(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -322,12 +322,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12467(a))           == 1> t1;
--    sa<sizeof(sink_5_12467(ca))          == 2> t2;
--    sa<sizeof(sink_5_12467(va))          == 4> t3;
--    sa<sizeof(sink_5_12467(cva))         == 4> t4;
--    sa<sizeof(sink_5_12467(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_12467(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12467(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12467(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -343,14 +343,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12468(a))           == 1> t1;
--    sa<sizeof(sink_5_12468(ca))          == 2> t2;
--    sa<sizeof(sink_5_12468(va))          == 4> t3;
--    sa<sizeof(sink_5_12468(cva))         == 4> t4;
--    sa<sizeof(sink_5_12468(source()))    == 6> t5;
--    sa<sizeof(sink_5_12468(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12468(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_12468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12468(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12468(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12468(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -366,14 +366,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12478(a))           == 1> t1;
--    sa<sizeof(sink_5_12478(ca))          == 2> t2;
--    sa<sizeof(sink_5_12478(va))          == 4> t3;
--    sa<sizeof(sink_5_12478(cva))         == 4> t4;
--    sa<sizeof(sink_5_12478(source()))    == 7> t5;
--    sa<sizeof(sink_5_12478(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_12478(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_12478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12478(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12478(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12478(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_12478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_12478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -389,11 +389,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12567(a))           == 1> t1;
--    sa<sizeof(sink_5_12567(ca))          == 2> t2;
--    sa<sizeof(sink_5_12567(source()))    == 5> t5;
--    sa<sizeof(sink_5_12567(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_12567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -409,12 +409,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12568(a))           == 1> t1;
--    sa<sizeof(sink_5_12568(ca))          == 2> t2;
--    sa<sizeof(sink_5_12568(source()))    == 5> t5;
--    sa<sizeof(sink_5_12568(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12568(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_12568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -430,12 +430,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12578(a))           == 1> t1;
--    sa<sizeof(sink_5_12578(ca))          == 2> t2;
--    sa<sizeof(sink_5_12578(source()))    == 5> t5;
--    sa<sizeof(sink_5_12578(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_12578(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_12578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_12578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -451,11 +451,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_12678(a))           == 1> t1;
--    sa<sizeof(sink_5_12678(ca))          == 2> t2;
--    sa<sizeof(sink_5_12678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_12678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_12678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_12678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_12678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_12678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_12678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_12678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -471,12 +471,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13456(a))           == 1> t1;
--    sa<sizeof(sink_5_13456(ca))          == 4> t2;
--    sa<sizeof(sink_5_13456(va))          == 3> t3;
--    sa<sizeof(sink_5_13456(cva))         == 4> t4;
--    sa<sizeof(sink_5_13456(source()))    == 5> t5;
--    sa<sizeof(sink_5_13456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_5_13456(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13456(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_13456(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_13456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -492,12 +492,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13457(a))           == 1> t1;
--    sa<sizeof(sink_5_13457(ca))          == 4> t2;
--    sa<sizeof(sink_5_13457(va))          == 3> t3;
--    sa<sizeof(sink_5_13457(cva))         == 4> t4;
--    sa<sizeof(sink_5_13457(source()))    == 5> t5;
--    sa<sizeof(sink_5_13457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_13457(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13457(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_13457(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_13457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -513,14 +513,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13458(a))           == 1> t1;
--    sa<sizeof(sink_5_13458(ca))          == 4> t2;
--    sa<sizeof(sink_5_13458(va))          == 3> t3;
--    sa<sizeof(sink_5_13458(cva))         == 4> t4;
--    sa<sizeof(sink_5_13458(source()))    == 5> t5;
--    sa<sizeof(sink_5_13458(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_13458(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_13458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_13458(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13458(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_13458(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_13458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_13458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -536,12 +536,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13467(a))           == 1> t1;
--    sa<sizeof(sink_5_13467(ca))          == 4> t2;
--    sa<sizeof(sink_5_13467(va))          == 3> t3;
--    sa<sizeof(sink_5_13467(cva))         == 4> t4;
--    sa<sizeof(sink_5_13467(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_13467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_13467(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13467(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_13467(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_13467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -557,14 +557,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13468(a))           == 1> t1;
--    sa<sizeof(sink_5_13468(ca))          == 4> t2;
--    sa<sizeof(sink_5_13468(va))          == 3> t3;
--    sa<sizeof(sink_5_13468(cva))         == 4> t4;
--    sa<sizeof(sink_5_13468(source()))    == 6> t5;
--    sa<sizeof(sink_5_13468(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_13468(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_13468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_13468(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13468(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_13468(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_13468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_13468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -580,14 +580,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13478(a))           == 1> t1;
--    sa<sizeof(sink_5_13478(ca))          == 4> t2;
--    sa<sizeof(sink_5_13478(va))          == 3> t3;
--    sa<sizeof(sink_5_13478(cva))         == 4> t4;
--    sa<sizeof(sink_5_13478(source()))    == 7> t5;
--    sa<sizeof(sink_5_13478(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_13478(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_13478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_13478(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13478(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_13478(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_13478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_13478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -603,11 +603,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13567(a))           == 1> t1;
--    sa<sizeof(sink_5_13567(va))          == 3> t3;
--    sa<sizeof(sink_5_13567(source()))    == 5> t5;
--    sa<sizeof(sink_5_13567(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_13567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_13567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -623,12 +623,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13568(a))           == 1> t1;
--    sa<sizeof(sink_5_13568(va))          == 3> t3;
--    sa<sizeof(sink_5_13568(source()))    == 5> t5;
--    sa<sizeof(sink_5_13568(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_13568(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_13568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_13568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_13568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -644,12 +644,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13578(a))           == 1> t1;
--    sa<sizeof(sink_5_13578(va))          == 3> t3;
--    sa<sizeof(sink_5_13578(source()))    == 5> t5;
--    sa<sizeof(sink_5_13578(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_13578(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_13578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_13578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_13578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_13578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -665,11 +665,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_13678(a))           == 1> t1;
--    sa<sizeof(sink_5_13678(va))          == 3> t3;
--    sa<sizeof(sink_5_13678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_13678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_13678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_13678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_13678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_13678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_13678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_13678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -685,13 +685,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_14567(a))           == 1> t1;
--    sa<sizeof(sink_5_14567(ca))          == 4> t2;
--    sa<sizeof(sink_5_14567(va))          == 4> t3;
--    sa<sizeof(sink_5_14567(cva))         == 4> t4;
--    sa<sizeof(sink_5_14567(source()))    == 5> t5;
--    sa<sizeof(sink_5_14567(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_14567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_14567(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_14567(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_14567(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_14567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_14567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_14567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_14567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -707,14 +707,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_14568(a))           == 1> t1;
--    sa<sizeof(sink_5_14568(ca))          == 4> t2;
--    sa<sizeof(sink_5_14568(va))          == 4> t3;
--    sa<sizeof(sink_5_14568(cva))         == 4> t4;
--    sa<sizeof(sink_5_14568(source()))    == 5> t5;
--    sa<sizeof(sink_5_14568(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_14568(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_14568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_14568(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_14568(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_14568(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_14568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_14568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_14568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_14568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_14568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -730,14 +730,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_14578(a))           == 1> t1;
--    sa<sizeof(sink_5_14578(ca))          == 4> t2;
--    sa<sizeof(sink_5_14578(va))          == 4> t3;
--    sa<sizeof(sink_5_14578(cva))         == 4> t4;
--    sa<sizeof(sink_5_14578(source()))    == 5> t5;
--    sa<sizeof(sink_5_14578(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_14578(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_14578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_14578(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_14578(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_14578(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_14578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_14578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_14578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_14578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_14578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -753,13 +753,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_14678(a))           == 1> t1;
--    sa<sizeof(sink_5_14678(ca))          == 4> t2;
--    sa<sizeof(sink_5_14678(va))          == 4> t3;
--    sa<sizeof(sink_5_14678(cva))         == 4> t4;
--    sa<sizeof(sink_5_14678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_14678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_14678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_14678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_14678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_14678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_14678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_14678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_14678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_14678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -775,11 +775,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_15678(a))           == 1> t1;
--    sa<sizeof(sink_5_15678(source()))    == 5> t5;
--    sa<sizeof(sink_5_15678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_15678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_15678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_15678(a))           == 1 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_15678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_15678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_15678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_15678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -795,11 +795,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23456(ca))          == 2> t2;
--    sa<sizeof(sink_5_23456(va))          == 3> t3;
--    sa<sizeof(sink_5_23456(cva))         == 4> t4;
--    sa<sizeof(sink_5_23456(source()))    == 5> t5;
--    sa<sizeof(sink_5_23456(c_source()))  == 6> t6;
-+    sa<sizeof(sink_5_23456(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23456(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23456(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_23456(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23456(c_source()))  == 6 * sizeof(long)> t6;
-     return 0;
- }
-@@ -815,12 +815,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23457(ca))          == 2> t2;
--    sa<sizeof(sink_5_23457(va))          == 3> t3;
--    sa<sizeof(sink_5_23457(cva))         == 4> t4;
--    sa<sizeof(sink_5_23457(source()))    == 5> t5;
--    sa<sizeof(sink_5_23457(c_source()))  == 2> t6;
--    sa<sizeof(sink_5_23457(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_23457(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23457(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23457(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_23457(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23457(c_source()))  == 2 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23457(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -836,13 +836,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23458(ca))          == 2> t2;
--    sa<sizeof(sink_5_23458(va))          == 3> t3;
--    sa<sizeof(sink_5_23458(cva))         == 4> t4;
--    sa<sizeof(sink_5_23458(source()))    == 5> t5;
--    sa<sizeof(sink_5_23458(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_23458(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_23458(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_23458(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23458(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23458(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_23458(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23458(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23458(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_23458(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -858,11 +858,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23467(ca))          == 2> t2;
--    sa<sizeof(sink_5_23467(va))          == 3> t3;
--    sa<sizeof(sink_5_23467(cva))         == 4> t4;
--    sa<sizeof(sink_5_23467(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_23467(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_23467(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23467(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23467(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_23467(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23467(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -878,13 +878,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23468(ca))          == 2> t2;
--    sa<sizeof(sink_5_23468(va))          == 3> t3;
--    sa<sizeof(sink_5_23468(cva))         == 4> t4;
--    sa<sizeof(sink_5_23468(source()))    == 6> t5;
--    sa<sizeof(sink_5_23468(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_23468(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_23468(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_23468(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23468(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23468(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_23468(source()))    == 6 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23468(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23468(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_23468(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -900,13 +900,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23478(ca))          == 2> t2;
--    sa<sizeof(sink_5_23478(va))          == 3> t3;
--    sa<sizeof(sink_5_23478(cva))         == 4> t4;
--    sa<sizeof(sink_5_23478(source()))    == 7> t5;
--    sa<sizeof(sink_5_23478(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_23478(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_23478(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_23478(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23478(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23478(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_23478(source()))    == 7 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23478(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23478(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_23478(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -922,11 +922,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23567(ca))          == 2> t2;
--    sa<sizeof(sink_5_23567(va))          == 3> t3;
--    sa<sizeof(sink_5_23567(source()))    == 5> t5;
--    sa<sizeof(sink_5_23567(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_23567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_23567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -942,12 +942,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23568(ca))          == 2> t2;
--    sa<sizeof(sink_5_23568(va))          == 3> t3;
--    sa<sizeof(sink_5_23568(source()))    == 5> t5;
--    sa<sizeof(sink_5_23568(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_23568(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_23568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_23568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_23568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -963,12 +963,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23578(ca))          == 2> t2;
--    sa<sizeof(sink_5_23578(va))          == 3> t3;
--    sa<sizeof(sink_5_23578(source()))    == 5> t5;
--    sa<sizeof(sink_5_23578(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_23578(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_23578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_23578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_23578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_23578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -984,11 +984,11 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_23678(ca))          == 2> t2;
--    sa<sizeof(sink_5_23678(va))          == 3> t3;
--    sa<sizeof(sink_5_23678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_23678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_23678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_23678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_23678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_23678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_23678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_23678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1004,13 +1004,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_24567(a))           == 2> t1;
--    sa<sizeof(sink_5_24567(ca))          == 2> t2;
--    sa<sizeof(sink_5_24567(va))          == 4> t3;
--    sa<sizeof(sink_5_24567(cva))         == 4> t4;
--    sa<sizeof(sink_5_24567(source()))    == 5> t5;
--    sa<sizeof(sink_5_24567(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_24567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_24567(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_24567(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_24567(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_24567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_24567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_24567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_24567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1026,14 +1026,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_24568(a))           == 2> t1;
--    sa<sizeof(sink_5_24568(ca))          == 2> t2;
--    sa<sizeof(sink_5_24568(va))          == 4> t3;
--    sa<sizeof(sink_5_24568(cva))         == 4> t4;
--    sa<sizeof(sink_5_24568(source()))    == 5> t5;
--    sa<sizeof(sink_5_24568(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_24568(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_24568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_24568(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_24568(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_24568(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_24568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_24568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_24568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_24568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_24568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1049,14 +1049,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_24578(a))           == 2> t1;
--    sa<sizeof(sink_5_24578(ca))          == 2> t2;
--    sa<sizeof(sink_5_24578(va))          == 4> t3;
--    sa<sizeof(sink_5_24578(cva))         == 4> t4;
--    sa<sizeof(sink_5_24578(source()))    == 5> t5;
--    sa<sizeof(sink_5_24578(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_24578(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_24578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_24578(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_24578(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_24578(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_24578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_24578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_24578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_24578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_24578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1072,13 +1072,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_24678(a))           == 2> t1;
--    sa<sizeof(sink_5_24678(ca))          == 2> t2;
--    sa<sizeof(sink_5_24678(va))          == 4> t3;
--    sa<sizeof(sink_5_24678(cva))         == 4> t4;
--    sa<sizeof(sink_5_24678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_24678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_24678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_24678(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_24678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_24678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_24678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_24678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_24678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_24678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1094,12 +1094,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_25678(a))           == 2> t1;
--    sa<sizeof(sink_5_25678(ca))          == 2> t2;
--    sa<sizeof(sink_5_25678(source()))    == 5> t5;
--    sa<sizeof(sink_5_25678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_25678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_25678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_25678(a))           == 2 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_25678(ca))          == 2 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_25678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_25678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_25678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_25678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1115,13 +1115,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_34567(a))           == 3> t1;
--    sa<sizeof(sink_5_34567(ca))          == 4> t2;
--    sa<sizeof(sink_5_34567(va))          == 3> t3;
--    sa<sizeof(sink_5_34567(cva))         == 4> t4;
--    sa<sizeof(sink_5_34567(source()))    == 5> t5;
--    sa<sizeof(sink_5_34567(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_34567(v_source()))  == 7> t7;
-+    sa<sizeof(sink_5_34567(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_34567(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_34567(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_34567(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_34567(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_34567(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_34567(v_source()))  == 7 * sizeof(long)> t7;
-     return 0;
- }
-@@ -1137,14 +1137,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_34568(a))           == 3> t1;
--    sa<sizeof(sink_5_34568(ca))          == 4> t2;
--    sa<sizeof(sink_5_34568(va))          == 3> t3;
--    sa<sizeof(sink_5_34568(cva))         == 4> t4;
--    sa<sizeof(sink_5_34568(source()))    == 5> t5;
--    sa<sizeof(sink_5_34568(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_34568(v_source()))  == 8> t7;
--    sa<sizeof(sink_5_34568(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_34568(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_34568(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_34568(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_34568(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_34568(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_34568(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_34568(v_source()))  == 8 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_34568(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1160,14 +1160,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_34578(a))           == 3> t1;
--    sa<sizeof(sink_5_34578(ca))          == 4> t2;
--    sa<sizeof(sink_5_34578(va))          == 3> t3;
--    sa<sizeof(sink_5_34578(cva))         == 4> t4;
--    sa<sizeof(sink_5_34578(source()))    == 5> t5;
--    sa<sizeof(sink_5_34578(c_source()))  == 8> t6;
--    sa<sizeof(sink_5_34578(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_34578(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_34578(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_34578(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_34578(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_34578(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_34578(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_34578(c_source()))  == 8 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_34578(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_34578(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1183,13 +1183,13 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_34678(a))           == 3> t1;
--    sa<sizeof(sink_5_34678(ca))          == 4> t2;
--    sa<sizeof(sink_5_34678(va))          == 3> t3;
--    sa<sizeof(sink_5_34678(cva))         == 4> t4;
--    sa<sizeof(sink_5_34678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_34678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_34678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_34678(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_34678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_34678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_34678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_34678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_34678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_34678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1205,12 +1205,12 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_35678(a))           == 3> t1;
--    sa<sizeof(sink_5_35678(va))          == 3> t3;
--    sa<sizeof(sink_5_35678(source()))    == 5> t5;
--    sa<sizeof(sink_5_35678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_35678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_35678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_35678(a))           == 3 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_35678(va))          == 3 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_35678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_35678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_35678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_35678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-@@ -1226,14 +1226,14 @@
-     const          A ca = a;
-           volatile A va;
-     const volatile A cva = a;
--    sa<sizeof(sink_5_45678(a))           == 4> t1;
--    sa<sizeof(sink_5_45678(ca))          == 4> t2;
--    sa<sizeof(sink_5_45678(va))          == 4> t3;
--    sa<sizeof(sink_5_45678(cva))         == 4> t4;
--    sa<sizeof(sink_5_45678(source()))    == 5> t5;
--    sa<sizeof(sink_5_45678(c_source()))  == 6> t6;
--    sa<sizeof(sink_5_45678(v_source()))  == 7> t7;
--    sa<sizeof(sink_5_45678(cv_source())) == 8> t8;
-+    sa<sizeof(sink_5_45678(a))           == 4 * sizeof(long)> t1;
-+    sa<sizeof(sink_5_45678(ca))          == 4 * sizeof(long)> t2;
-+    sa<sizeof(sink_5_45678(va))          == 4 * sizeof(long)> t3;
-+    sa<sizeof(sink_5_45678(cva))         == 4 * sizeof(long)> t4;
-+    sa<sizeof(sink_5_45678(source()))    == 5 * sizeof(long)> t5;
-+    sa<sizeof(sink_5_45678(c_source()))  == 6 * sizeof(long)> t6;
-+    sa<sizeof(sink_5_45678(v_source()))  == 7 * sizeof(long)> t7;
-+    sa<sizeof(sink_5_45678(cv_source())) == 8 * sizeof(long)> t8;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/named_refs.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/named_refs.C    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/named_refs.C    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,8 +8,8 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
- struct A {};
-@@ -18,7 +18,7 @@
- int test1(A&& a)
- {
--    sa<sizeof(foo(a)) == 1> t1;
-+    sa<sizeof(foo(a)) == 1 * sizeof(long)> t1;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -8,8 +8,8 @@
- template <bool> struct sa;
- template <> struct sa<true> {};
--struct one   {char x[1];};
--struct two   {char x[2];};
-+struct one   {long x[1];};
-+struct two   {long x[2];};
- struct A {};
-@@ -25,7 +25,7 @@
- int test1()
- {
--    sa<sizeof(foo(source())) == 2> t1;
-+    sa<sizeof(foo(source())) == 2 * sizeof(long)> t1;
-     return 0;
- }
-Index: gcc/testsuite/g++.dg/init/value8.C
-===================================================================
---- gcc/testsuite/g++.dg/init/value8.C (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/init/value8.C (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,19 @@
-+// PR c++/45315
-+
-+struct A
-+{
-+  A ();
-+};
-+
-+template < int > struct B : A
-+{
-+  void foo ()
-+  {
-+    new B < 0 > ();
-+  }
-+};
-+
-+int main()
-+{
-+  B<1>().foo();
-+}
-Index: gcc/testsuite/lib/gcc-dg.exp
-===================================================================
---- gcc/testsuite/lib/gcc-dg.exp       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/lib/gcc-dg.exp       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -407,6 +407,8 @@
-     # that stores the filename of the testcase in a local variable "name".
-     # A cleaner solution would require a new DejaGnu release.
-     upvar 2 name testcase
-+    # The name might include a list of options; extract the file name.
-+    set testcase [lindex $testcase 0]]
-     remove-build-file "[file rootname [file tail $testcase]].gc??"
-     # Clean up coverage files for additional source files.
-@@ -423,6 +425,8 @@
-     # that stores the filename of the testcase in a local variable "name".
-     # A cleaner solution would require a new DejaGnu release.
-     upvar 2 name testcase
-+    # The name might include a list of options; extract the file name.
-+    set testcase [lindex $testcase 0]]
-     remove-build-file "[file rootname [file tail $testcase]].o"
-     remove-build-file "[file rootname [file tail $testcase]].rpo"
-@@ -498,6 +502,8 @@
-     # that stores the filename of the testcase in a local variable "name".
-     # A cleaner solution would require a new DejaGnu release.
-     upvar 2 name testcase
-+    # The name might include a list of options; extract the file name.
-+    set testcase [lindex $testcase 0]]
-     foreach suffix $suffixes {
-       remove-build-file "[file rootname [file tail $testcase]]$suffix"
-       # -fcompare-debug dumps
-Index: gcc/testsuite/gfortran.dg/gomp/pr27573.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -11,5 +11,3 @@
-     end do
-   !$omp end parallel
- end
--
--! { dg-final { cleanup-coverage-files } }
-Index: gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -12,7 +12,7 @@
-   x = a(4)
- !$omp end parallel
- !$omp parallel default(none) private (x)      ! { dg-error "enclosing parallel" }
--  x = b(5)                                    ! { dg-error "not specified in" "" { target *-*-* } 11 }
-+  x = b(5)                                    ! { dg-error "not specified in" }
- !$omp end parallel
- !$omp parallel default(none) private (x)
-   x = c(6)
-Index: gcc/testsuite/gfortran.dg/allocate_derived_3.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/allocate_derived_3.f90   (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/allocate_derived_3.f90   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,17 @@
-+! { dg-do compile }
-+!
-+! PR 44929: [OOP] Parsing error of derived type name starting with 'REAL'
-+!
-+! Contributed by Satish.BD <bdsatish@gmail.com>
-+
-+ type :: real_type
-+ end type
-+ class(real_type), allocatable :: obj
-+ real(8), allocatable :: r8
-+
-+ allocate(real_type :: obj)
-+
-+ allocate( real(kind=8) :: r8)
-+ allocate(real(8)  :: r8 )
-+
-+end 
-Index: gcc/cp/init.c
-===================================================================
---- gcc/cp/init.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/cp/init.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2158,7 +2158,8 @@
-       {
-         init_expr = cp_build_indirect_ref (data_addr, RO_NULL, complain);
--        if (TYPE_NEEDS_CONSTRUCTING (type) && !explicit_value_init_p)
-+        if (TYPE_NEEDS_CONSTRUCTING (type)
-+            && (!explicit_value_init_p || processing_template_decl))
-           {
-             init_expr = build_special_member_call (init_expr,
-                                                    complete_ctor_identifier,
-@@ -2168,9 +2169,13 @@
-           }
-         else if (explicit_value_init_p)
-           {
--            /* Something like `new int()'.  */
--            init_expr = build2 (INIT_EXPR, type,
--                                init_expr, build_value_init (type));
-+            if (processing_template_decl)
-+              /* Don't worry about it, we'll handle this properly at
-+                 instantiation time.  */;
-+            else
-+              /* Something like `new int()'.  */
-+              init_expr = build2 (INIT_EXPR, type,
-+                                  init_expr, build_value_init (type));
-           }
-         else
-           {
-Index: gcc/cp/decl.c
-===================================================================
---- gcc/cp/decl.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/cp/decl.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2077,6 +2077,10 @@
-       SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl));
-       DECL_HAS_INIT_PRIORITY_P (olddecl) = 1;
-     }
-+  /* Likewise for DECL_USER_ALIGN and DECL_PACKED.  */
-+  DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl);
-+  if (TREE_CODE (newdecl) == FIELD_DECL)
-+    DECL_PACKED (olddecl) = DECL_PACKED (newdecl);
-   /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced
-      with that from NEWDECL below.  */
-Index: gcc/cp/ChangeLog
-===================================================================
---- gcc/cp/ChangeLog   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/cp/ChangeLog   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,3 +1,13 @@
-+2010-08-19  Jason Merrill  <jason@redhat.com>
-+
-+      PR c++/45315
-+      * init.c (build_new_1): Don't use build_value_init in a template.
-+
-+2010-07-31  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
-+
-+      PR c++/45112
-+      * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED.
-+
- 2010-07-31  Release Manager
-       * GCC 4.5.1 released.
-Index: gcc/haifa-sched.c
-===================================================================
---- gcc/haifa-sched.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/haifa-sched.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1997,13 +1997,9 @@
-   q_ptr = NEXT_Q (q_ptr);
-   if (dbg_cnt (sched_insn) == false)
--    {
--      /* If debug counter is activated do not requeue insn next after
--       last_scheduled_insn.  */
--      skip_insn = next_nonnote_insn (last_scheduled_insn);
--      while (skip_insn && DEBUG_INSN_P (skip_insn))
--      skip_insn = next_nonnote_insn (skip_insn);
--    }
-+    /* If debug counter is activated do not requeue insn next after
-+       last_scheduled_insn.  */
-+    skip_insn = next_nonnote_nondebug_insn (last_scheduled_insn);
-   else
-     skip_insn = NULL_RTX;
-Index: gcc/tree-ssa-loop-ivopts.c
-===================================================================
---- gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1557,7 +1557,7 @@
- /* Return true if EXPR may be non-addressable.   */
--static bool
-+bool
- may_be_nonaddressable_p (tree expr)
- {
-   switch (TREE_CODE (expr))
-Index: gcc/caller-save.c
-===================================================================
---- gcc/caller-save.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/caller-save.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -883,7 +883,10 @@
-            remain saved.  If the last insn in the block is a JUMP_INSN, put
-            the restore before the insn, otherwise, put it after the insn.  */
--        if (DEBUG_INSN_P (insn) && last && last->block == chain->block)
-+        if (n_regs_saved
-+            && DEBUG_INSN_P (insn)
-+            && last
-+            && last->block == chain->block)
-           {
-             rtx ins, prev;
-             basic_block bb = BLOCK_FOR_INSN (insn);
-Index: gcc/ipa-pure-const.c
-===================================================================
---- gcc/ipa-pure-const.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/ipa-pure-const.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -416,6 +416,13 @@
-       print_gimple_stmt (dump_file, stmt, 0, 0);
-     }
-+  if (gimple_has_volatile_ops (stmt))
-+    {
-+      local->pure_const_state = IPA_NEITHER;
-+      if (dump_file)
-+      fprintf (dump_file, "    Volatile stmt is not const/pure\n");
-+    }
-+
-   /* Look for loads and stores.  */
-   walk_stmt_load_store_ops (stmt, local, check_load, check_store);
-Index: gcc/ifcvt.c
-===================================================================
---- gcc/ifcvt.c        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/ifcvt.c        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2285,9 +2285,7 @@
-     }
-   else
-     {
--      insn_b = prev_nonnote_insn (if_info->cond_earliest);
--      while (insn_b && DEBUG_INSN_P (insn_b))
--      insn_b = prev_nonnote_insn (insn_b);
-+      insn_b = prev_nonnote_nondebug_insn (if_info->cond_earliest);
-       /* We're going to be moving the evaluation of B down from above
-        COND_EARLIEST to JUMP.  Make sure the relevant data is still
-        intact.  */
-Index: gcc/fortran/intrinsic.c
-===================================================================
---- gcc/fortran/intrinsic.c    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/intrinsic.c    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -112,6 +112,8 @@
-   sym->attr.flavor = FL_PROCEDURE;
-   sym->attr.proc = PROC_INTRINSIC;
-+  gfc_commit_symbol (sym);
-+
-   return sym;
- }
-Index: gcc/fortran/symbol.c
-===================================================================
---- gcc/fortran/symbol.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/symbol.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3795,6 +3795,9 @@
-   formal_arg = gfc_get_formal_arglist ();
-   /* Add arg to list of formal args (the CPTR arg).  */
-   add_formal_arg (head, tail, formal_arg, param_sym);
-+
-+  /* Validate changes.  */
-+  gfc_commit_symbol (param_sym);
- }
-@@ -3840,6 +3843,9 @@
-   formal_arg = gfc_get_formal_arglist ();
-   /* Add arg to list of formal args.  */
-   add_formal_arg (head, tail, formal_arg, param_sym);
-+
-+  /* Validate changes.  */
-+  gfc_commit_symbol (param_sym);
- }
-@@ -3911,6 +3917,9 @@
-   formal_arg = gfc_get_formal_arglist ();
-   /* Add arg to list of formal args.  */
-   add_formal_arg (head, tail, formal_arg, param_sym);
-+
-+  /* Validate changes.  */
-+  gfc_commit_symbol (param_sym);
- }
-@@ -3973,6 +3982,9 @@
-       /* Add arg to list of formal args.  */
-       add_formal_arg (&head, &tail, formal_arg, formal_arg->sym);
-+
-+      /* Validate changes.  */
-+      gfc_commit_symbol (formal_arg->sym);
-     }
-   /* Add the interface to the symbol.  */
-@@ -4030,6 +4042,9 @@
-       /* Add arg to list of formal args.  */
-       add_formal_arg (&head, &tail, formal_arg, formal_arg->sym);
-+
-+      /* Validate changes.  */
-+      gfc_commit_symbol (formal_arg->sym);
-     }
-   /* Add the interface to the symbol.  */
-@@ -4083,6 +4098,9 @@
-       /* Add arg to list of formal args.  */
-       add_formal_arg (&head, &tail, formal_arg, formal_arg->sym);
-+
-+      /* Validate changes.  */
-+      gfc_commit_symbol (formal_arg->sym);
-     }
-   /* Add the interface to the symbol.  */
-@@ -4465,6 +4483,7 @@
-       default:
-       gcc_unreachable ();
-     }
-+  gfc_commit_symbol (tmp_sym);
- }
-@@ -4837,10 +4856,12 @@
-                 c->ts.u.derived = vtype;
-                 c->initializer->expr_type = EXPR_NULL;
-               }
-+            gfc_commit_symbol (vtype);
-           }
-         vtab->ts.u.derived = vtype;
-         vtab->value = gfc_default_initializer (&vtab->ts);
-+        gfc_commit_symbol (vtab);
-       }
-     }
-Index: gcc/fortran/gfortran.texi
-===================================================================
---- gcc/fortran/gfortran.texi  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/gfortran.texi  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2639,9 +2639,6 @@
- User-specified alignment rules for structures.
- @item
--Flag to generate @code{Makefile} info.
--
--@item
- Automatically extend single precision constants to double.
- @item
-Index: gcc/fortran/cpp.c
-===================================================================
---- gcc/fortran/cpp.c  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/cpp.c  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -35,6 +35,7 @@
- #include "../../libcpp/internal.h"
- #include "cpp.h"
- #include "incpath.h"
-+#include "mkdeps.h"
- #ifndef TARGET_OS_CPP_BUILTINS
- # define TARGET_OS_CPP_BUILTINS()
-@@ -84,6 +85,12 @@
-   int no_predefined;                    /* -undef */
-   int standard_include_paths;           /* -nostdinc */
-   int verbose;                          /* -v */
-+  int deps;                             /* -M */
-+  int deps_skip_system;                 /* -MM */
-+  const char *deps_filename;            /* -M[M]D */
-+  const char *deps_filename_user;       /* -MF <arg> */
-+  int deps_missing_are_generated;       /* -MG */
-+  int deps_phony;                       /* -MP */
-   const char *multilib;                 /* -imultilib <dir>  */
-   const char *prefix;                   /* -iprefix <dir>  */
-@@ -270,6 +277,26 @@
-   return gfc_cpp_option.preprocess_only;
- }
-+bool
-+gfc_cpp_makedep (void)
-+{
-+  return gfc_cpp_option.deps;
-+}
-+
-+void
-+gfc_cpp_add_dep (const char *name, bool system)
-+{
-+  if (!gfc_cpp_option.deps_skip_system || !system)
-+    deps_add_dep (cpp_get_deps (cpp_in), name);
-+}
-+
-+void
-+gfc_cpp_add_target (const char *name)
-+{
-+  deps_add_target (cpp_get_deps (cpp_in), name, 0);
-+}
-+
-+
- const char *
- gfc_cpp_temporary_file (void)
- {
-@@ -299,6 +326,12 @@
-   gfc_cpp_option.no_predefined = 0;
-   gfc_cpp_option.standard_include_paths = 1;
-   gfc_cpp_option.verbose = 0;
-+  gfc_cpp_option.deps = 0;
-+  gfc_cpp_option.deps_skip_system = 0;
-+  gfc_cpp_option.deps_phony = 0;
-+  gfc_cpp_option.deps_missing_are_generated = 0;
-+  gfc_cpp_option.deps_filename = NULL;
-+  gfc_cpp_option.deps_filename_user = NULL;
-   gfc_cpp_option.multilib = NULL;
-   gfc_cpp_option.prefix = NULL;
-@@ -414,6 +447,43 @@
-       gfc_cpp_option.print_include_names = 1;
-       break;
-+    case OPT_MM:
-+      gfc_cpp_option.deps_skip_system = 1;
-+      /* fall through */
-+
-+    case OPT_M:
-+      gfc_cpp_option.deps = 1;
-+      break;
-+
-+    case OPT_MMD:
-+      gfc_cpp_option.deps_skip_system = 1;
-+      /* fall through */
-+
-+    case OPT_MD:
-+      gfc_cpp_option.deps = 1;
-+      gfc_cpp_option.deps_filename = arg;
-+      break;
-+
-+    case OPT_MF:
-+      /* If specified multiple times, last one wins.  */
-+      gfc_cpp_option.deps_filename_user = arg;
-+      break;
-+
-+    case OPT_MG:
-+      gfc_cpp_option.deps_missing_are_generated = 1;
-+      break;
-+
-+    case OPT_MP:
-+      gfc_cpp_option.deps_phony = 1;
-+      break;
-+
-+    case OPT_MQ:
-+    case OPT_MT:
-+      gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].code = code;
-+      gfc_cpp_option.deferred_opt[gfc_cpp_option.deferred_opt_count].arg = arg;
-+      gfc_cpp_option.deferred_opt_count++;
-+      break;
-+
-     case OPT_P:
-       gfc_cpp_option.no_line_commands = 1;
-       break;
-@@ -430,16 +500,17 @@
-      an error.  */
-   if (!gfc_cpp_enabled ()
-       && (gfc_cpp_preprocess_only ()
--          || !gfc_cpp_option.discard_comments
--          || !gfc_cpp_option.discard_comments_in_macro_exp
--          || gfc_cpp_option.print_include_names
--          || gfc_cpp_option.no_line_commands
--          || gfc_cpp_option.dump_macros
--          || gfc_cpp_option.dump_includes))
-+        || gfc_cpp_makedep ()
-+        || !gfc_cpp_option.discard_comments
-+        || !gfc_cpp_option.discard_comments_in_macro_exp
-+        || gfc_cpp_option.print_include_names
-+        || gfc_cpp_option.no_line_commands
-+        || gfc_cpp_option.dump_macros
-+        || gfc_cpp_option.dump_includes))
-     gfc_fatal_error("To enable preprocessing, use -cpp");
-   cpp_in = cpp_create_reader (CLK_GNUC89, NULL, line_table);
--  if (!gfc_cpp_enabled())
-+  if (!gfc_cpp_enabled ())
-     return;
-   gcc_assert (cpp_in);
-@@ -462,6 +533,17 @@
-   cpp_option->print_include_names = gfc_cpp_option.print_include_names;
-   cpp_option->preprocessed = gfc_option.flag_preprocessed;
-+  if (gfc_cpp_makedep ())
-+    {
-+      cpp_option->deps.style = DEPS_USER;
-+      cpp_option->deps.phony_targets = gfc_cpp_option.deps_phony;
-+      cpp_option->deps.missing_files = gfc_cpp_option.deps_missing_are_generated;
-+
-+      /* -MF <arg> overrides -M[M]D.  */
-+      if (gfc_cpp_option.deps_filename_user)
-+      gfc_cpp_option.deps_filename = gfc_cpp_option.deps_filename_user;
-+  }
-+
-   if (gfc_cpp_option.working_directory == -1)
-     gfc_cpp_option.working_directory = (debug_info_level != DINFO_LEVEL_NONE);
-@@ -571,6 +653,9 @@
-         else
-           cpp_assert (cpp_in, opt->arg);
-       }
-+      else if (opt->code == OPT_MT || opt->code == OPT_MQ)
-+      deps_add_target (cpp_get_deps (cpp_in),
-+                       opt->arg, opt->code == OPT_MQ);
-     }
-   if (gfc_cpp_option.working_directory
-@@ -614,14 +699,27 @@
-   if (!gfc_cpp_enabled ())
-     return;
--  /* TODO: if dependency tracking was enabled, call
--     cpp_finish() here to write dependencies.
-+  gcc_assert (cpp_in);
--     Use cpp_get_deps() to access the current source's
--     dependencies during parsing. Add dependencies using
--     the mkdeps-interface (defined in libcpp).  */
-+  if (gfc_cpp_makedep ())
-+    {
-+      if (gfc_cpp_option.deps_filename)
-+      {
-+        FILE *f = fopen (gfc_cpp_option.deps_filename, "w");
-+        if (f)
-+          {
-+            cpp_finish (cpp_in, f);
-+            fclose (f);
-+          }
-+        else
-+          gfc_fatal_error ("opening output file %s: %s",
-+                           gfc_cpp_option.deps_filename,
-+                           xstrerror (errno));
-+      }
-+      else
-+      cpp_finish (cpp_in, stdout);
-+    }
--  gcc_assert (cpp_in);
-   cpp_undef_all (cpp_in);
-   cpp_clear_file_cache (cpp_in);
- }
-Index: gcc/fortran/cpp.h
-===================================================================
---- gcc/fortran/cpp.h  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/cpp.h  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -24,6 +24,12 @@
- bool gfc_cpp_preprocess_only (void);
-+bool gfc_cpp_makedep (void);
-+
-+void gfc_cpp_add_dep (const char *name, bool system);
-+
-+void gfc_cpp_add_target (const char *name);
-+
- const char *gfc_cpp_temporary_file (void);
-Index: gcc/fortran/gfortran.h
-===================================================================
---- gcc/fortran/gfortran.h     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/gfortran.h     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1326,7 +1326,7 @@
-   struct gfc_code *code;
-   /* Points to the equivalences set up in this namespace.  */
--  struct gfc_equiv *equiv;
-+  struct gfc_equiv *equiv, *old_equiv;
-   /* Points to the equivalence groups produced by trans_common.  */
-   struct gfc_equiv_list *equiv_lists;
-@@ -2569,6 +2569,7 @@
- void gfc_free_alloc_list (gfc_alloc *);
- void gfc_free_namelist (gfc_namelist *);
- void gfc_free_equiv (gfc_equiv *);
-+void gfc_free_equiv_until (gfc_equiv *, gfc_equiv *);
- void gfc_free_data (gfc_data *);
- void gfc_free_case_list (gfc_case *);
-Index: gcc/fortran/lang.opt
-===================================================================
---- gcc/fortran/lang.opt       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/lang.opt       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -56,6 +56,42 @@
- Fortran Joined Separate
- -J<directory> Put MODULE files in 'directory'
-+M
-+Fortran
-+; Documented in C
-+
-+MD
-+Fortran Separate
-+; Documented in C
-+
-+MF
-+Fortran Joined Separate
-+; Documented in C
-+
-+MG
-+Fortran
-+; Documented in C
-+
-+MM
-+Fortran
-+; Documented in C
-+
-+MMD
-+Fortran Separate
-+; Documented in C
-+
-+MP
-+Fortran
-+; Documented in C
-+
-+MT
-+Fortran Joined Separate
-+; Documented in C
-+
-+MQ
-+Fortran Joined Separate
-+; Documented in C
-+
- P
- Fortran
- ; Documented in C
-Index: gcc/fortran/ChangeLog
-===================================================================
---- gcc/fortran/ChangeLog      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/ChangeLog      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,3 +1,88 @@
-+2010-08-20  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR fortran/45344
-+      Backport from mainline
-+      2010-05-14  Jakub Jelinek  <jakub@redhat.com>
-+
-+      * trans.c (trans_code): Set backend locus early.
-+      * trans-decl.c (gfc_get_fake_result_decl): Use source location
-+      of the function instead of current input_location.
-+
-+2010-08-17  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR fortran/45186
-+      * trans.c (gfc_annotate_with_location): New function.
-+      (trans_code): Use it.
-+
-+2010-08-09  Janus Weil  <janus@gcc.gnu.org>
-+
-+      * intrinsic.texi: Correct documentation of ASINH, ACOSH and ATANH.
-+
-+2010-08-07  Daniel Franke  <franke.daniel@gmail.com>
-+
-+      2010-06-13  Daniel Franke  <franke.daniel@gmail.com>
-+
-+      PR fortran/31588
-+      PR fortran/43954
-+      Backport from mainline:
-+      * gfortranspec.c (lang_specific_driver): Removed deprecation
-+      warning for -M.
-+      * lang.opt: Add options -M, -MM, -MD, -MMD, -MF, -MG, -MP, -MT, -MQ.
-+      * lang-specs.h (CPP_FORWARD_OPTIONS): Add -M* options.
-+      * cpp.h (gfc_cpp_makedep): New.
-+      (gfc_cpp_add_dep): New.
-+      (gfc_cpp_add_target): New.
-+      * cpp.c (gfc_cpp_option): Add deps* members.
-+      (gfc_cpp_makedep): New.
-+      (gfc_cpp_add_dep): New.
-+      (gfc_cpp_add_target): New.
-+      (gfc_cpp_init_options): Initialize new options.
-+      (gfc_cpp_handle_option): Handle new options.
-+      (gfc_cpp_post_options): Map new options to libcpp-options.
-+      (gfc_cpp_init): Handle deferred -MQ and -MT options.
-+      (gfc_cpp_done): If requested, write dependencies to file.
-+      * module.c (gfc_dump_module): Add a module filename as target.
-+      * scanner.c (open_included_file): New parameter system; add the
-+      included file as dependency.
-+      (gfc_open_included_file): Add the included file as dependency.
-+      (gfc_open_intrinsic_module): Likewise.
-+      * invoke.texi: Removed deprecation warning for -M.
-+      * gfortran.texi: Removed Makefile-dependencies project.
-+
-+2010-08-05  Mikael Morin  <mikael@gcc.gnu.org>
-+
-+      PR fortran/44660
-+      * gfortran.h (gfc_namespace): New field old_equiv.
-+      (gfc_free_equiv_until): New prototype.
-+      * match.c (gfc_free_equiv_until): New, renamed from gfc_free_equiv with
-+      a parameterized stop condition.
-+      (gfc_free_equiv): Use gfc_free_equiv_until.
-+      * parse.c (next_statement): Save equivalence list.
-+      (reject_statement): Restore equivalence list. 
-+
-+2010-08-05  Mikael Morin  <mikael@gcc.gnu.org>
-+          Janus Weil  <janus@gcc.gnu.org>
-+
-+      PR fortran/42051
-+      PR fortran/44064
-+      PR fortran/45151
-+      * intrinsic.c (gfc_get_intrinsic_sub_symbol): Commit changed symbol. 
-+      * symbol.c (gen_cptr_param, gen_fptr_param, gen_shape_param,
-+      gfc_copy_formal_args, gfc_copy_formal_args_intr,
-+      gfc_copy_formal_args_ppc, generate_isocbinding_symbol): Ditto.
-+      (gfc_find_derived_vtab): Commit newly created symbols.
-+      * parse.c (parse_derived_contains, parse_spec, parse_progunit): 
-+      Call reject_statement in case of error. 
-+      (match_deferred_characteritics): Call gfc_undo_symbols in case match
-+      fails.
-+
-+2010-08-05  Janus Weil  <janus@gcc.gnu.org>
-+          Steven G. Kargl  <kargl@gcc.gnu.org>
-+
-+      PR fortran/44929
-+      * match.c (match_type_spec): Try to parse derived types before
-+      intrinsic types.
-+
- 2010-07-31  Release Manager
-       * GCC 4.5.1 released.
-Index: gcc/fortran/invoke.texi
-===================================================================
---- gcc/fortran/invoke.texi    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/invoke.texi    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -148,8 +148,7 @@
- @item Directory Options
- @xref{Directory Options,,Options for directory search}.
--@gccoptlist{-I@var{dir}  -J@var{dir}  -M@var{dir}  @gol
---fintrinsic-modules-path @var{dir}}
-+@gccoptlist{-I@var{dir}  -J@var{dir} -fintrinsic-modules-path @var{dir}}
- @item Link Options
- @xref{Link Options,,Options for influencing the linking step}.
-@@ -949,7 +948,6 @@
- @option{-I} option.
- @item -J@var{dir}
--@item -M@var{dir}
- @opindex @code{J}@var{dir}
- @opindex @code{M}@var{dir}
- @cindex paths, search
-@@ -960,8 +958,6 @@
- The default is the current directory.
--@option{-M} is deprecated to avoid conflicts with existing GCC options.
--
- @item -fintrinsic-modules-path @var{dir}
- @opindex @code{fintrinsic-modules-path} @var{dir}
- @cindex paths, search
-Index: gcc/fortran/module.c
-===================================================================
---- gcc/fortran/module.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/module.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -73,6 +73,7 @@
- #include "match.h"
- #include "parse.h" /* FIXME */
- #include "md5.h"
-+#include "cpp.h"
- #define MODULE_EXTENSION ".mod"
-@@ -5100,6 +5101,9 @@
-       return;
-     }
-+  if (gfc_cpp_makedep ())
-+    gfc_cpp_add_target (filename);
-+
-   /* Write the module to the temporary file.  */
-   module_fp = fopen (filename_tmp, "w");
-   if (module_fp == NULL)
-Index: gcc/fortran/trans.c
-===================================================================
---- gcc/fortran/trans.c        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/trans.c        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1041,7 +1041,30 @@
-   input_location = loc->lb->location;
- }
-+/* Annotate statement or statement list T with location LOC.  */
-+static void
-+gfc_annotate_with_location (tree t, location_t loc)
-+{
-+  if (TREE_CODE (t) == STATEMENT_LIST)
-+    {
-+      tree_stmt_iterator i;
-+
-+      for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i))
-+      gfc_annotate_with_location (tsi_stmt (i), loc);
-+      return;
-+    }
-+  if (TREE_CODE (t) == COMPOUND_EXPR)
-+    {
-+      gfc_annotate_with_location (TREE_OPERAND (t, 0), loc);
-+      gfc_annotate_with_location (TREE_OPERAND (t, 1), loc);
-+    }
-+  if (TREE_CODE (t) == LABEL_EXPR || !TREE_SIDE_EFFECTS (t))
-+    return;
-+  if (CAN_HAVE_LOCATION_P (t) && ! EXPR_HAS_LOCATION (t))
-+    SET_EXPR_LOCATION (t, loc);
-+}
-+
- /* Translate an executable statement. The tree cond is used by gfc_trans_do.
-    This static function is wrapped by gfc_trans_code_cond and
-    gfc_trans_code.  */
-@@ -1067,6 +1090,8 @@
-         gfc_add_expr_to_block (&block, res);
-       }
-+      gfc_set_backend_locus (&code->loc);
-+
-       switch (code->op)
-       {
-       case EXEC_NOP:
-@@ -1281,9 +1306,8 @@
-       if (res != NULL_TREE && ! IS_EMPTY_STMT (res))
-       {
--        if (TREE_CODE (res) != STATEMENT_LIST)
--          SET_EXPR_LOCATION (res, input_location);
--          
-+        gfc_annotate_with_location (res, input_location);
-+
-         /* Add the new statement to the block.  */
-         gfc_add_expr_to_block (&block, res);
-       }
-Index: gcc/fortran/scanner.c
-===================================================================
---- gcc/fortran/scanner.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/scanner.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -390,7 +390,8 @@
- static FILE *
--open_included_file (const char *name, gfc_directorylist *list, bool module)
-+open_included_file (const char *name, gfc_directorylist *list,
-+                  bool module, bool system)
- {
-   char *fullname;
-   gfc_directorylist *p;
-@@ -407,7 +408,12 @@
-       f = gfc_open_file (fullname);
-       if (f != NULL)
--      return f;
-+      {
-+        if (gfc_cpp_makedep ())
-+          gfc_cpp_add_dep (fullname, system);
-+
-+        return f;
-+      }
-     }
-   return NULL;
-@@ -421,28 +427,37 @@
- FILE *
- gfc_open_included_file (const char *name, bool include_cwd, bool module)
- {
--  FILE *f;
-+  FILE *f = NULL;
--  if (IS_ABSOLUTE_PATH (name))
--    return gfc_open_file (name);
--
--  if (include_cwd)
-+  if (IS_ABSOLUTE_PATH (name) || include_cwd)
-     {
-       f = gfc_open_file (name);
--      if (f != NULL)
--      return f;
-+      if (f && gfc_cpp_makedep ())
-+      gfc_cpp_add_dep (name, false);
-     }
--  return open_included_file (name, include_dirs, module);
-+  if (!f)
-+    f = open_included_file (name, include_dirs, module, false);
-+
-+  return f;
- }
- FILE *
- gfc_open_intrinsic_module (const char *name)
- {
-+  FILE *f = NULL;
-+
-   if (IS_ABSOLUTE_PATH (name))
--    return gfc_open_file (name);
-+    {
-+      f = gfc_open_file (name);
-+      if (f && gfc_cpp_makedep ())
-+      gfc_cpp_add_dep (name, true);
-+    }
--  return open_included_file (name, intrinsic_modules_dirs, true);
-+  if (!f)
-+    f = open_included_file (name, intrinsic_modules_dirs, true, true);
-+
-+  return f;
- }
-Index: gcc/fortran/gfortranspec.c
-===================================================================
---- gcc/fortran/gfortranspec.c (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -415,36 +415,6 @@
-         continue;
-       }
--      if ((argv[i][0] == '-') && (argv[i][1] == 'M'))
--      {
--        char *p;
--
--        fprintf (stderr, _("Warning: Using -M <directory> is deprecated, "
--                 "use -J instead\n"));
--        if (argv[i][2] == '\0')
--          {
--            if (i+1 < argc)
--              {
--                p = XNEWVEC (char, strlen (argv[i + 1]) + 3);
--                p[0] = '-';
--                p[1] = 'J';
--                strcpy (&p[2], argv[i + 1]);
--                i++;
--              }
--            else
--              fatal ("argument to '%s' missing", argv[i]);
--          }
--        else
--          {
--            p = XNEWVEC (char, strlen (argv[i]) + 1);
--            p[0] = '-';
--            p[1] = 'J';
--            strcpy (&p[2], argv[i] + 2);
--          }
--        append_arg (p);
--        continue;
--      }
--
-       if ((argv[i][0] == '-') && (argv[i][1] != 'l'))
-       {
-         /* Not a filename or library.  */
-Index: gcc/fortran/lang-specs.h
-===================================================================
---- gcc/fortran/lang-specs.h   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/lang-specs.h   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -28,7 +28,7 @@
-                            %{O*} %{undef}"
- /* Options that f951 should know about, even if not preprocessing.  */
--#define CPP_FORWARD_OPTIONS "%{i*} %{I*}"
-+#define CPP_FORWARD_OPTIONS "%{i*} %{I*} %{M*}"
- #define F951_CPP_OPTIONS    "%{!nocpp: -cpp %g.f90 %{E} %(cpp_unique_options) \
-                            %{E|M|MM:%(cpp_debug_options) " CPP_ONLY_OPTIONS \
-Index: gcc/fortran/trans-decl.c
-===================================================================
---- gcc/fortran/trans-decl.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/trans-decl.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2252,11 +2252,11 @@
-              IDENTIFIER_POINTER (DECL_NAME (this_function_decl)));
-       if (!sym->attr.mixed_entry_master && sym->attr.function)
--      decl = build_decl (input_location,
-+      decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl),
-                          VAR_DECL, get_identifier (name),
-                          gfc_sym_type (sym));
-       else
--      decl = build_decl (input_location,
-+      decl = build_decl (DECL_SOURCE_LOCATION (this_function_decl),
-                          VAR_DECL, get_identifier (name),
-                          TREE_TYPE (TREE_TYPE (this_function_decl)));
-       DECL_ARTIFICIAL (decl) = 1;
-Index: gcc/fortran/match.c
-===================================================================
---- gcc/fortran/match.c        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/match.c        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2303,7 +2303,7 @@
-    gfc_match_decl_type_spec() from decl.c, with the following exceptions:
-    It only includes the intrinsic types from the Fortran 2003 standard
-    (thus, neither BYTE nor forms like REAL*4 are allowed). Additionally,
--   the implicit_flag is not needed, so it was removed.  Derived types are
-+   the implicit_flag is not needed, so it was removed. Derived types are
-    identified by their name alone.  */
- static match
-@@ -2313,8 +2313,30 @@
-   locus old_locus;
-   gfc_clear_ts (ts);
-+  gfc_gobble_whitespace();
-   old_locus = gfc_current_locus;
-+  m = match_derived_type_spec (ts);
-+  if (m == MATCH_YES)
-+    {
-+      old_locus = gfc_current_locus;
-+      if (gfc_match (" :: ") != MATCH_YES)
-+      return MATCH_ERROR;
-+      gfc_current_locus = old_locus;
-+      /* Enfore F03:C401.  */
-+      if (ts->u.derived->attr.abstract)
-+      {
-+        gfc_error ("Derived type '%s' at %L may not be ABSTRACT",
-+                   ts->u.derived->name, &old_locus);
-+        return MATCH_ERROR;
-+      }
-+      return MATCH_YES;
-+    }
-+  else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES)
-+    return MATCH_ERROR;
-+
-+  gfc_current_locus = old_locus;
-+
-   if (gfc_match ("integer") == MATCH_YES)
-     {
-       ts->type = BT_INTEGER;
-@@ -2356,25 +2378,6 @@
-       goto kind_selector;
-     }
--  m = match_derived_type_spec (ts);
--  if (m == MATCH_YES)
--    {
--      old_locus = gfc_current_locus;
--      if (gfc_match (" :: ") != MATCH_YES)
--      return MATCH_ERROR;
--      gfc_current_locus = old_locus;
--      /* Enfore F03:C401.  */
--      if (ts->u.derived->attr.abstract)
--      {
--        gfc_error ("Derived type '%s' at %L may not be ABSTRACT",
--                   ts->u.derived->name, &old_locus);
--        return MATCH_ERROR;
--      }
--      return MATCH_YES;
--    }
--  else if (m == MATCH_ERROR && gfc_match (" :: ") == MATCH_YES)
--    return MATCH_ERROR;
--
-   /* If a type is not matched, simply return MATCH_NO.  */
-   gfc_current_locus = old_locus;
-   return MATCH_NO;
-@@ -3580,18 +3583,25 @@
-    do this.  */
- void
--gfc_free_equiv (gfc_equiv *eq)
-+gfc_free_equiv_until (gfc_equiv *eq, gfc_equiv *stop)
- {
--  if (eq == NULL)
-+  if (eq == stop)
-     return;
-   gfc_free_equiv (eq->eq);
--  gfc_free_equiv (eq->next);
-+  gfc_free_equiv_until (eq->next, stop);
-   gfc_free_expr (eq->expr);
-   gfc_free (eq);
- }
-+void
-+gfc_free_equiv (gfc_equiv *eq)
-+{
-+  gfc_free_equiv_until (eq, NULL);
-+}
-+
-+
- /* Match an EQUIVALENCE statement.  */
- match
-Index: gcc/fortran/parse.c
-===================================================================
---- gcc/fortran/parse.c        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/parse.c        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -876,6 +876,7 @@
-   gfc_new_block = NULL;
-   gfc_current_ns->old_cl_list = gfc_current_ns->cl_list;
-+  gfc_current_ns->old_equiv = gfc_current_ns->equiv;
-   for (;;)
-     {
-       gfc_statement_label = NULL;
-@@ -1608,6 +1609,9 @@
-   gfc_free_charlen (gfc_current_ns->cl_list, gfc_current_ns->old_cl_list);
-   gfc_current_ns->cl_list = gfc_current_ns->old_cl_list;
-+  gfc_free_equiv_until (gfc_current_ns->equiv, gfc_current_ns->old_equiv);
-+  gfc_current_ns->equiv = gfc_current_ns->old_equiv;
-+
-   gfc_new_block = NULL;
-   gfc_undo_symbols ();
-   gfc_clear_warning ();
-@@ -1841,13 +1845,12 @@
-       case ST_DATA_DECL:
-         gfc_error ("Components in TYPE at %C must precede CONTAINS");
--        error_flag = true;
--        break;
-+        goto error;
-       case ST_PROCEDURE:
-         if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003:  Type-bound"
-                                            " procedure at %C") == FAILURE)
--          error_flag = true;
-+          goto error;
-         accept_statement (ST_PROCEDURE);
-         seen_comps = true;
-@@ -1856,7 +1859,7 @@
-       case ST_GENERIC:
-         if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003:  GENERIC binding"
-                                            " at %C") == FAILURE)
--          error_flag = true;
-+          goto error;
-         accept_statement (ST_GENERIC);
-         seen_comps = true;
-@@ -1866,7 +1869,7 @@
-         if (gfc_notify_std (GFC_STD_F2003,
-                             "Fortran 2003:  FINAL procedure declaration"
-                             " at %C") == FAILURE)
--          error_flag = true;
-+          goto error;
-         accept_statement (ST_FINAL);
-         seen_comps = true;
-@@ -1879,7 +1882,7 @@
-             && (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: Derived type "
-                                 "definition at %C with empty CONTAINS "
-                                 "section") == FAILURE))
--          error_flag = true;
-+          goto error;
-         /* ST_END_TYPE is accepted by parse_derived after return.  */
-         break;
-@@ -1889,22 +1892,20 @@
-           {
-             gfc_error ("PRIVATE statement in TYPE at %C must be inside "
-                        "a MODULE");
--            error_flag = true;
--            break;
-+            goto error;
-           }
-         if (seen_comps)
-           {
-             gfc_error ("PRIVATE statement at %C must precede procedure"
-                        " bindings");
--            error_flag = true;
--            break;
-+            goto error;
-           }
-         if (seen_private)
-           {
-             gfc_error ("Duplicate PRIVATE statement at %C");
--            error_flag = true;
-+            goto error;
-           }
-         accept_statement (ST_PRIVATE);
-@@ -1914,18 +1915,22 @@
-       case ST_SEQUENCE:
-         gfc_error ("SEQUENCE statement at %C must precede CONTAINS");
--        error_flag = true;
--        break;
-+        goto error;
-       case ST_CONTAINS:
-         gfc_error ("Already inside a CONTAINS block at %C");
--        error_flag = true;
--        break;
-+        goto error;
-       default:
-         unexpected_statement (st);
-         break;
-       }
-+
-+      continue;
-+
-+error:
-+      error_flag = true;
-+      reject_statement ();
-     }
-   pop_state ();
-@@ -2361,7 +2366,10 @@
-       gfc_commit_symbols ();
-     }
-   else
--    gfc_error_check ();
-+    {
-+      gfc_error_check ();
-+      gfc_undo_symbols ();
-+    }
-   gfc_current_locus =loc;
-   return m;
-@@ -2433,6 +2441,7 @@
-       case ST_STATEMENT_FUNCTION:
-         gfc_error ("%s statement is not allowed inside of BLOCK at %C",
-                    gfc_ascii_statement (st));
-+        reject_statement ();
-         break;
-       default:
-@@ -2519,6 +2528,7 @@
-           {
-             gfc_error ("%s statement must appear in a MODULE",
-                        gfc_ascii_statement (st));
-+            reject_statement ();
-             break;
-           }
-@@ -2526,6 +2536,7 @@
-           {
-             gfc_error ("%s statement at %C follows another accessibility "
-                        "specification", gfc_ascii_statement (st));
-+            reject_statement ();
-             break;
-           }
-@@ -3822,6 +3833,7 @@
-     {
-       gfc_error ("CONTAINS statement at %C is already in a contained "
-                "program unit");
-+      reject_statement ();
-       st = next_statement ();
-       goto loop;
-     }
-Index: gcc/fortran/intrinsic.texi
-===================================================================
---- gcc/fortran/intrinsic.texi (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/fortran/intrinsic.texi (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -44,7 +44,7 @@
- * @code{ACCESS}:        ACCESS,    Checks file access modes
- * @code{ACHAR}:         ACHAR,     Character in @acronym{ASCII} collating sequence
- * @code{ACOS}:          ACOS,      Arccosine function
--* @code{ACOSH}:         ACOSH,     Hyperbolic arccosine function
-+* @code{ACOSH}:         ACOSH,     Inverse hyperbolic cosine function
- * @code{ADJUSTL}:       ADJUSTL,   Left adjust a string
- * @code{ADJUSTR}:       ADJUSTR,   Right adjust a string
- * @code{AIMAG}:         AIMAG,     Imaginary part of complex number
-@@ -56,11 +56,11 @@
- * @code{ANINT}:         ANINT,     Nearest whole number
- * @code{ANY}:           ANY,       Determine if any values are true
- * @code{ASIN}:          ASIN,      Arcsine function
--* @code{ASINH}:         ASINH,     Hyperbolic arcsine function
-+* @code{ASINH}:         ASINH,     Inverse hyperbolic sine function
- * @code{ASSOCIATED}:    ASSOCIATED, Status of a pointer or pointer/target pair
- * @code{ATAN}:          ATAN,      Arctangent function
- * @code{ATAN2}:         ATAN2,     Arctangent function
--* @code{ATANH}:         ATANH,     Hyperbolic arctangent function
-+* @code{ATANH}:         ATANH,     Inverse hyperbolic tangent function
- * @code{BESSEL_J0}:     BESSEL_J0, Bessel function of the first kind of order 0
- * @code{BESSEL_J1}:     BESSEL_J1, Bessel function of the first kind of order 1
- * @code{BESSEL_JN}:     BESSEL_JN, Bessel function of the first kind
-@@ -572,18 +572,17 @@
- @node ACOSH
--@section @code{ACOSH} --- Hyperbolic arccosine function
-+@section @code{ACOSH} --- Inverse hyperbolic cosine function
- @fnindex ACOSH
- @fnindex DACOSH
- @cindex area hyperbolic cosine
--@cindex hyperbolic arccosine
-+@cindex inverse hyperbolic cosine
- @cindex hyperbolic function, cosine, inverse
- @cindex cosine, hyperbolic, inverse
- @table @asis
- @item @emph{Description}:
--@code{ACOSH(X)} computes the hyperbolic arccosine of @var{X} (inverse of
--@code{COSH(X)}).
-+@code{ACOSH(X)} computes the inverse hyperbolic cosine of @var{X}.
- @item @emph{Standard}:
- Fortran 2008 and later
-@@ -1213,17 +1212,17 @@
- @node ASINH
--@section @code{ASINH} --- Hyperbolic arcsine function
-+@section @code{ASINH} --- Inverse hyperbolic sine function
- @fnindex ASINH
- @fnindex DASINH
- @cindex area hyperbolic sine
--@cindex hyperbolic arcsine
-+@cindex inverse hyperbolic sine
- @cindex hyperbolic function, sine, inverse
- @cindex sine, hyperbolic, inverse
- @table @asis
- @item @emph{Description}:
--@code{ASINH(X)} computes the hyperbolic arcsine of @var{X} (inverse of @code{SINH(X)}).
-+@code{ASINH(X)} computes the inverse hyperbolic sine of @var{X}.
- @item @emph{Standard}:
- Fortran 2008 and later
-@@ -1455,18 +1454,17 @@
- @node ATANH
--@section @code{ATANH} --- Hyperbolic arctangent function
--@fnindex ASINH
--@fnindex DASINH
-+@section @code{ATANH} --- Inverse hyperbolic tangent function
-+@fnindex ATANH
-+@fnindex DATANH
- @cindex area hyperbolic tangent
--@cindex hyperbolic arctangent
-+@cindex inverse hyperbolic tangent
- @cindex hyperbolic function, tangent, inverse
- @cindex tangent, hyperbolic, inverse
- @table @asis
- @item @emph{Description}:
--@code{ATANH(X)} computes the hyperbolic arctangent of @var{X} (inverse
--of @code{TANH(X)}).
-+@code{ATANH(X)} computes the inverse hyperbolic tangent of @var{X}.
- @item @emph{Standard}:
- Fortran 2008 and later
-Index: gcc/BASE-VER
-===================================================================
---- gcc/BASE-VER       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/BASE-VER       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1 +1 @@
--4.5.1
-+4.5.2
-Index: gcc/function.c
-===================================================================
---- gcc/function.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/function.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3423,12 +3423,10 @@
-                 DECL_IGNORED_P (local) = 0;
-                 /* If PARM was addressable, move that flag over
-                    to the local copy, as its address will be taken,
--                   not the PARMs.  */
-+                   not the PARMs.  Keep the parms address taken
-+                   as we'll query that flag during gimplification.  */
-                 if (TREE_ADDRESSABLE (parm))
--                  {
--                    TREE_ADDRESSABLE (parm) = 0;
--                    TREE_ADDRESSABLE (local) = 1;
--                  }
-+                  TREE_ADDRESSABLE (local) = 1;
-               }
-             else
-               {
-Index: gcc/expmed.c
-===================================================================
---- gcc/expmed.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/expmed.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3006,9 +3006,11 @@
-       switch (alg->op[opno])
-       {
-       case alg_shift:
--        accum = expand_shift (LSHIFT_EXPR, mode, accum,
--                              build_int_cst (NULL_TREE, log),
--                              NULL_RTX, 0);
-+        tem = expand_shift (LSHIFT_EXPR, mode, accum,
-+                            build_int_cst (NULL_TREE, log),
-+                            NULL_RTX, 0);
-+        /* REG_EQUAL note will be attached to the following insn.  */
-+        emit_move_insn (accum, tem);
-         val_so_far <<= log;
-         break;
-Index: gcc/emit-rtl.c
-===================================================================
---- gcc/emit-rtl.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/emit-rtl.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3162,6 +3162,38 @@
-   return insn;
- }
-+/* Return the next insn after INSN that is not a NOTE nor DEBUG_INSN.
-+   This routine does not look inside SEQUENCEs.  */
-+
-+rtx
-+next_nonnote_nondebug_insn (rtx insn)
-+{
-+  while (insn)
-+    {
-+      insn = NEXT_INSN (insn);
-+      if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn)))
-+      break;
-+    }
-+
-+  return insn;
-+}
-+
-+/* Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN.
-+   This routine does not look inside SEQUENCEs.  */
-+
-+rtx
-+prev_nonnote_nondebug_insn (rtx insn)
-+{
-+  while (insn)
-+    {
-+      insn = PREV_INSN (insn);
-+      if (insn == 0 || (!NOTE_P (insn) && !DEBUG_INSN_P (insn)))
-+      break;
-+    }
-+
-+  return insn;
-+}
-+
- /* Return the next INSN, CALL_INSN or JUMP_INSN after INSN;
-    or 0, if there is none.  This routine does not look inside
-    SEQUENCEs.  */
-Index: gcc/tree-sra.c
-===================================================================
---- gcc/tree-sra.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/tree-sra.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -276,6 +276,9 @@
-    arguments than formal parameters..  */
- static bool encountered_unchangable_recursive_call;
-+/* Set by scan_function when it changes the control flow graph.  */
-+static bool cfg_changed;
-+
- /* This is a table in which for each basic block and parameter there is a
-    distance (offset + size) in that parameter which is dereferenced and
-    accessed in that BB.  */
-@@ -570,6 +573,7 @@
-   memset (&sra_stats, 0, sizeof (sra_stats));
-   encountered_apply_args = false;
-   encountered_unchangable_recursive_call = false;
-+  cfg_changed = false;
- }
- /* Hook fed to pointer_map_traverse, deallocate stored vectors.  */
-@@ -1114,8 +1118,6 @@
-   FOR_EACH_BB (bb)
-     {
--      bool bb_changed = false;
--
-       if (handle_ssa_defs)
-       for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi))
-         ret |= handle_ssa_defs (gsi_stmt (gsi), data);
-@@ -1220,21 +1222,15 @@
-             if (!analysis_stage)
-               {
--                bb_changed = true;
-                 update_stmt (stmt);
--                maybe_clean_eh_stmt (stmt);
-+                if (maybe_clean_eh_stmt (stmt)
-+                    && gimple_purge_dead_eh_edges (bb))
-+                  cfg_changed = true;
-               }
-           }
--        if (deleted)
--          bb_changed = true;
--        else
--          {
--            gsi_next (&gsi);
--            ret = true;
--          }
-+        if (!deleted)
-+          gsi_next (&gsi);
-       }
--      if (!analysis_stage && bb_changed && sra_mode == SRA_MODE_EARLY_IPA)
--      gimple_purge_dead_eh_edges (bb);
-     }
-   return ret;
-@@ -2871,7 +2867,10 @@
-   statistics_counter_event (cfun, "Separate LHS and RHS handling",
-                           sra_stats.separate_lhs_rhs_handling);
--  ret = TODO_update_ssa;
-+  if (cfg_changed)
-+    ret = TODO_update_ssa | TODO_cleanup_cfg;
-+  else
-+    ret = TODO_update_ssa;
-  out:
-   sra_deinitialize ();
-@@ -4236,7 +4235,10 @@
-   modify_function (node, adjustments);
-   VEC_free (ipa_parm_adjustment_t, heap, adjustments);
--  ret = TODO_update_ssa;
-+  if (cfg_changed)
-+    ret = TODO_update_ssa | TODO_cleanup_cfg;
-+  else
-+    ret = TODO_update_ssa;
-   statistics_counter_event (cfun, "Unused parameters deleted",
-                           sra_stats.deleted_unused_parameters);
-Index: gcc/ipa-prop.c
-===================================================================
---- gcc/ipa-prop.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/ipa-prop.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1597,7 +1597,7 @@
-        || (VEC_index (ipa_parm_adjustment_t, adjustments, 0)->copy_param
-        && VEC_index (ipa_parm_adjustment_t, adjustments, 0)->base_index == 0))
-     {
--      new_type = copy_node (orig_type);
-+      new_type = build_distinct_type_copy (orig_type);
-       TYPE_ARG_TYPES (new_type) = new_reversed;
-     }
-   else
-Index: gcc/tree-vect-patterns.c
-===================================================================
---- gcc/tree-vect-patterns.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/tree-vect-patterns.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -254,6 +254,11 @@
-   prod_type = half_type;
-   stmt = SSA_NAME_DEF_STMT (oprnd0);
-+
-+  /* It could not be the dot_prod pattern if the stmt is outside the loop.  */
-+  if (!flow_bb_inside_loop_p (loop, gimple_bb (stmt)))
-+    return NULL;
-+
-   /* FORNOW.  Can continue analyzing the def-use chain when this stmt in a phi
-      inside the loop (in case we are analyzing an outer-loop).  */
-   if (!is_gimple_assign (stmt))
-Index: gcc/sched-deps.c
-===================================================================
---- gcc/sched-deps.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/sched-deps.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1517,9 +1517,7 @@
-   delete_all_dependences (insn);
--  prev_nonnote = prev_nonnote_insn (insn);
--  while (DEBUG_INSN_P (prev_nonnote))
--    prev_nonnote = prev_nonnote_insn (prev_nonnote);
-+  prev_nonnote = prev_nonnote_nondebug_insn (insn);
-   if (BLOCK_FOR_INSN (insn) == BLOCK_FOR_INSN (prev_nonnote)
-       && ! sched_insns_conditions_mutex_p (insn, prev_nonnote))
-     add_dependence (insn, prev_nonnote, REG_DEP_ANTI);
-@@ -2695,9 +2693,7 @@
-   if (JUMP_P (insn))
-     {
-       rtx next;
--      next = next_nonnote_insn (insn);
--      while (next && DEBUG_INSN_P (next))
--      next = next_nonnote_insn (next);
-+      next = next_nonnote_nondebug_insn (insn);
-       if (next && BARRIER_P (next))
-       reg_pending_barrier = MOVE_BARRIER;
-       else
-@@ -3366,10 +3362,8 @@
-      hard registers correct.  */
-   if (! reload_completed && !LABEL_P (head))
-     {
--      rtx insn = prev_nonnote_insn (head);
-+      rtx insn = prev_nonnote_nondebug_insn (head);
--      while (insn && DEBUG_INSN_P (insn))
--      insn = prev_nonnote_insn (insn);
-       if (insn && CALL_P (insn))
-       deps->in_post_call_group_p = post_call_initial;
-     }
-Index: gcc/tree-ssa-loop-prefetch.c
-===================================================================
---- gcc/tree-ssa-loop-prefetch.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/tree-ssa-loop-prefetch.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -481,6 +481,10 @@
-   if (!analyze_ref (loop, &ref, &base, &step, &delta, stmt))
-     return false;
-+  /* Stop if the address of BASE could not be taken.  */
-+  if (may_be_nonaddressable_p (base))
-+    return false;
-+
-   /* Now we know that REF = &BASE + STEP * iter + DELTA, where DELTA and STEP
-      are integer constants.  */
-   agrp = find_or_create_group (refs, base, step);
-Index: gcc/rtl.h
-===================================================================
---- gcc/rtl.h  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/rtl.h  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1709,6 +1709,8 @@
- extern rtx next_nonnote_insn_bb (rtx);
- extern rtx prev_nondebug_insn (rtx);
- extern rtx next_nondebug_insn (rtx);
-+extern rtx prev_nonnote_nondebug_insn (rtx);
-+extern rtx next_nonnote_nondebug_insn (rtx);
- extern rtx prev_real_insn (rtx);
- extern rtx next_real_insn (rtx);
- extern rtx prev_active_insn (rtx);
-Index: gcc/combine.c
-===================================================================
---- gcc/combine.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/combine.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3544,7 +3544,58 @@
-       i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes);
-       if (i2_code_number >= 0)
--      insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
-+      {
-+        /* recog_for_combine might have added CLOBBERs to newi2pat.
-+           Make sure NEWPAT does not depend on the clobbered regs.  */
-+        if (GET_CODE (newi2pat) == PARALLEL)
-+          {
-+            for (i = XVECLEN (newi2pat, 0) - 1; i >= 0; i--)
-+              if (GET_CODE (XVECEXP (newi2pat, 0, i)) == CLOBBER)
-+                {
-+                  rtx reg = XEXP (XVECEXP (newi2pat, 0, i), 0);
-+                  if (reg_overlap_mentioned_p (reg, newpat))
-+                    break;
-+                }
-+
-+            if (i >= 0)
-+              {
-+                /* CLOBBERs on newi2pat prevent it going first.
-+                   Try the other order of the insns if possible.  */
-+                temp = newpat;
-+                newpat = XVECEXP (newi2pat, 0, 0);
-+                newi2pat = temp;
-+#ifdef HAVE_cc0
-+                if (reg_referenced_p (cc0_rtx, newpat))
-+                  {
-+                    undo_all ();
-+                    return 0;
-+                  }
-+#endif
-+
-+                i2_code_number = recog_for_combine (&newi2pat, i2,
-+                                                    &new_i2_notes);
-+                if (i2_code_number < 0)
-+                  {
-+                    undo_all ();
-+                    return 0;
-+                  }
-+
-+                if (GET_CODE (newi2pat) == PARALLEL)
-+                  for (i = XVECLEN (newi2pat, 0) - 1; i >= 0; i--)
-+                    if (GET_CODE (XVECEXP (newi2pat, 0, i)) == CLOBBER)
-+                      {
-+                        rtx reg = XEXP (XVECEXP (newi2pat, 0, i), 0);
-+                        if (reg_overlap_mentioned_p (reg, newpat))
-+                          {
-+                            undo_all ();
-+                            return 0;
-+                          }
-+                      }
-+              }
-+          }
-+
-+        insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
-+      }
-     }
-   /* If it still isn't recognized, fail and change things back the way they
-@@ -9505,7 +9556,9 @@
-                 > GET_MODE_SIZE (GET_MODE (varop)))
-             && (unsigned int) ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (varop)))
-                                 + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
--               == mode_words)
-+               == mode_words
-+            && GET_MODE_CLASS (GET_MODE (varop)) == MODE_INT
-+            && GET_MODE_CLASS (GET_MODE (SUBREG_REG (varop))) == MODE_INT)
-           {
-             varop = SUBREG_REG (varop);
-             if (GET_MODE_SIZE (GET_MODE (varop)) > GET_MODE_SIZE (mode))
-@@ -12680,29 +12733,6 @@
-   return 0;
- }
+-/* Find an unused d-register to be used as scratch in INSN.
+-   EXCLUDE is either NULL_RTX or some register. In the case where EXCLUDE
+-   is a register, skip all possible return values that overlap EXCLUDE.
+-   The policy for the returned register is similar to that of
+-   `reg_unused_after', i.e. the returned register may overlap the SET_DEST
+-   of INSN.
 -
--/* Return the next insn after INSN that is neither a NOTE nor a
--   DEBUG_INSN.  This routine does not look inside SEQUENCEs.  */
+-   Return a QImode d-register or NULL_RTX if nothing found.  */
 -
 -static rtx
--next_nonnote_nondebug_insn (rtx insn)
+-avr_find_unused_d_reg (rtx insn, rtx exclude)
 -{
--  while (insn)
+-  int regno;
+-  bool isr_p = (interrupt_function_p (current_function_decl)
+-                || signal_function_p (current_function_decl));
+-
+-  for (regno = 16; regno < 32; regno++)
 -    {
--      insn = NEXT_INSN (insn);
--      if (insn == 0)
--      break;
--      if (NOTE_P (insn))
--      continue;
--      if (DEBUG_INSN_P (insn))
--      continue;
--      break;
--    }
+-      rtx reg = all_regs_rtx[regno];
+-      
+-      if ((exclude
+-           && reg_overlap_mentioned_p (exclude, reg))
+-          || fixed_regs[regno])
+-        {
+-          continue;
+-        }
 -
--  return insn;
--}
+-      /* Try non-live register */
 -
+-      if (!df_regs_ever_live_p (regno)
+-          && (TREE_THIS_VOLATILE (current_function_decl)
+-              || cfun->machine->is_OS_task
+-              || cfun->machine->is_OS_main
+-              || (!isr_p && call_used_regs[regno])))
+-        {
+-          return reg;
+-        }
 -
\f
- /* Given a chain of REG_NOTES originally from FROM_INSN, try to place them
-    as appropriate.  I3 and I2 are the insns resulting from the combination
-Index: gcc/tree-flow.h
-===================================================================
---- gcc/tree-flow.h    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/tree-flow.h    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -837,6 +837,7 @@
- bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode,
-                                     addr_space_t);
- unsigned multiply_by_cost (HOST_WIDE_INT, enum machine_mode, bool);
-+bool may_be_nonaddressable_p (tree expr);
- /* In tree-ssa-threadupdate.c.  */
- extern bool thread_through_all_blocks (bool);
-Index: gcc/reginfo.c
-===================================================================
---- gcc/reginfo.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/reginfo.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -841,6 +841,14 @@
- void
- globalize_reg (int i)
- {
-+#ifdef STACK_REGS
-+  if (IN_RANGE (i, FIRST_STACK_REG, LAST_STACK_REG))
-+    {
-+      error ("stack register used for global register variable");
-+      return;
-+    }
-+#endif
-+
-   if (fixed_regs[i] == 0 && no_global_reg_vars)
-     error ("global register variable follows a function definition");
-Index: gcc/tree-ssa-structalias.c
-===================================================================
---- gcc/tree-ssa-structalias.c (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2955,7 +2955,8 @@
-   /* Some people like to do cute things like take the address of
-      &0->a.b */
-   forzero = t;
--  while (!SSA_VAR_P (forzero) && !CONSTANT_CLASS_P (forzero))
-+  while (handled_component_p (forzero)
-+       || INDIRECT_REF_P (forzero))
-     forzero = TREE_OPERAND (forzero, 0);
-   if (CONSTANT_CLASS_P (forzero) && integer_zerop (forzero))
-Index: gcc/config/alpha/alpha.c
-===================================================================
---- gcc/config/alpha/alpha.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/alpha/alpha.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -5945,6 +5945,10 @@
-                   integer_type_node);
-   DECL_FIELD_CONTEXT (ofs) = record;
-   TREE_CHAIN (ofs) = space;
-+  /* ??? This is a hack, __offset is marked volatile to prevent
-+     DCE that confuses stdarg optimization and results in
-+     gcc.c-torture/execute/stdarg-1.c failure.  See PR 41089.  */
-+  TREE_THIS_VOLATILE (ofs) = 1;
-   base = build_decl (BUILTINS_LOCATION,
-                    FIELD_DECL, get_identifier ("__base"),
-Index: gcc/config/spu/spu.c
-===================================================================
---- gcc/config/spu/spu.c       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/spu/spu.c       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2334,7 +2334,7 @@
-     return;
-   /* If we have a Basic block note, emit it after the basic block note.  */
--  if (NOTE_KIND (before) == NOTE_INSN_BASIC_BLOCK)
-+  if (NOTE_INSN_BASIC_BLOCK_P (before))
-     before = NEXT_INSN (before);
-   branch_label = gen_label_rtx ();
-Index: gcc/config/sparc/sparc.c
-===================================================================
---- gcc/config/sparc/sparc.c   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/sparc/sparc.c   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -5558,14 +5558,13 @@
- function_arg_advance (struct sparc_args *cum, enum machine_mode mode,
-                     tree type, int named)
- {
--  int slotno, regno, padding;
-+  int regno, padding;
-   /* We pass 0 for incoming_p here, it doesn't matter.  */
--  slotno = function_arg_slotno (cum, mode, type, named, 0, &regno, &padding);
-+  function_arg_slotno (cum, mode, type, named, 0, &regno, &padding);
--  /* If register required leading padding, add it.  */
--  if (slotno != -1)
--    cum->words += padding;
-+  /* If argument requires leading padding, add it.  */
-+  cum->words += padding;
-   if (TARGET_ARCH32)
-     {
-Index: gcc/config/rx/predicates.md
-===================================================================
---- gcc/config/rx/predicates.md        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/rx/predicates.md        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -45,6 +45,13 @@
-   }
- )
-+(define_predicate "rx_constshift_operand"
-+  (match_code "const_int")
-+  {
-+    return IN_RANGE (INTVAL (op), 0, 31);
-+  }
-+)
-+
- ;; Check that the operand is suitable as the source operand
- ;; for a logic or arithmeitc instruction.  Registers, integers
- ;; and a restricted subset of memory addresses are allowed.
-Index: gcc/config/rx/rx.md
-===================================================================
---- gcc/config/rx/rx.md        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/rx/rx.md        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -24,6 +24,9 @@
- (define_code_iterator most_cond [eq ne gt ge lt le gtu geu ltu leu
-                                unordered ordered ])
-+;; Likewise, but only the ones that use Z or S.
-+(define_code_iterator zs_cond [eq ne gtu geu ltu leu ])
-+
- ;; This code iterator is used for sign- and zero- extensions.
- (define_mode_iterator small_int_modes [(HI "") (QI "")])
-@@ -157,9 +160,9 @@
- (define_expand "cbranchsi4"
-   [(set (pc)
--      (if_then_else (match_operator:SI 0 "comparison_operator"
--                                       [(match_operand:SI 1 "register_operand")
--                                        (match_operand:SI 2 "rx_source_operand")])
-+      (if_then_else (match_operator 0 "comparison_operator"
-+                                    [(match_operand:SI 1 "register_operand")
-+                                     (match_operand:SI 2 "rx_source_operand")])
-                     (label_ref (match_operand 3 ""))
-                     (pc)))
-    ]
-@@ -169,7 +172,7 @@
- (define_insn_and_split "*cbranchsi4_<code>"
-   [(set (pc)
--      (if_then_else (most_cond:SI (match_operand:SI  0 "register_operand"  "r")
-+      (if_then_else (most_cond (match_operand:SI  0 "register_operand"  "r")
-                                   (match_operand:SI  1 "rx_source_operand" "riQ"))
-                     (label_ref (match_operand        2 "" ""))
-                     (pc)))
-@@ -189,11 +192,106 @@
-   "
- )
-+;; -----------------------------------------------------------------------------
-+;; These two are the canonical TST/branch insns.  However, GCC
-+;; generates a wide variety of tst-like patterns, we catch those
-+;; below.
-+(define_insn_and_split "*tstbranchsi4_<code>"
-+  [(set (pc)
-+      (if_then_else (zs_cond (and:SI (match_operand:SI  0 "register_operand"  "r")
-+                                     (match_operand:SI  1 "rx_source_operand" "riQ"))
-+                             (const_int 0))
-+                    (label_ref (match_operand 2 "" ""))
-+                    (pc)))
-+   ]
-+  ""
-+  "#"
-+  "reload_completed"
-+  [(const_int 0)]
-+  "
-+  emit_insn (gen_tstsi (operands[0], operands[1]));
-+  
-+  emit_jump_insn (gen_conditional_branch (operands[2],
-+               gen_rtx_fmt_ee (<zs_cond:CODE>, CCmode,
-+                               gen_rtx_REG (CCmode, CC_REG), const0_rtx)));
-+  "
-+)
-+
-+;; Inverse of above
-+(define_insn_and_split "*tstbranchsi4_<code>"
-+  [(set (pc)
-+      (if_then_else (zs_cond (and:SI (match_operand:SI  0 "register_operand"  "r")
-+                                     (match_operand:SI  1 "rx_source_operand" "riQ"))
-+                             (const_int 0))
-+                    (pc)
-+                    (label_ref (match_operand 2 "" ""))))
-+   ]
-+  ""
-+  "#"
-+  "reload_completed"
-+  [(const_int 0)]
-+  "
-+  emit_insn (gen_tstsi (operands[0], operands[1]));
-+  
-+  emit_jump_insn (gen_conditional_branch (operands[2],
-+               gen_rtx_fmt_ee (reverse_condition (<zs_cond:CODE>), CCmode,
-+                               gen_rtx_REG (CCmode, CC_REG), const0_rtx)));
-+  "
-+)
-+
-+;; Various other ways that GCC codes "var & const"
-+
-+(define_insn_and_split "*tstbranchsi4m_eq"
-+  [(set (pc)
-+      (if_then_else (eq (zero_extract:SI (match_operand:SI  0 "register_operand"  "r")
-+                                         (match_operand  1 "rx_constshift_operand" "i")
-+                                         (match_operand  2 "rx_constshift_operand" "i"))
-+                        (const_int 0))
-+                    (label_ref (match_operand        3 "" ""))
-+                    (pc)))
-+   ]
-+  ""
-+  "#"
-+  ""
-+  [(set (pc)
-+      (if_then_else (eq (and:SI (match_dup  0)
-+                                (match_dup 4))
-+                        (const_int 0))
-+                    (label_ref (match_dup 3))
-+                    (pc)))
-+   ]
-+  "operands[4] = GEN_INT (((1 << INTVAL (operands[1]))-1) << INTVAL (operands[2]));"
-+)
-+
-+(define_insn_and_split "*tstbranchsi4m_ne"
-+  [(set (pc)
-+      (if_then_else (ne (zero_extract:SI (match_operand:SI  0 "register_operand"  "r")
-+                                         (match_operand  1 "rx_constshift_operand" "i")
-+                                         (match_operand  2 "rx_constshift_operand" "i"))
-+                        (const_int 0))
-+                    (label_ref (match_operand        3 "" ""))
-+                    (pc)))
-+   ]
-+  ""
-+  "#"
-+  ""
-+  [(set (pc)
-+      (if_then_else (ne (and:SI (match_dup  0)
-+                                (match_dup 4))
-+                        (const_int 0))
-+                    (label_ref (match_dup 3))
-+                    (pc)))
-+   ]
-+  "operands[4] = GEN_INT (((1 << INTVAL (operands[1]))-1) << INTVAL (operands[2]));"
-+)
-+
-+;; -----------------------------------------------------------------------------
-+
- (define_expand "cbranchsf4"
-   [(set (pc)
--      (if_then_else (match_operator:SF 0 "comparison_operator"
--                                       [(match_operand:SF 1 "register_operand")
--                                        (match_operand:SF 2 "rx_source_operand")])
-+      (if_then_else (match_operator 0 "comparison_operator"
-+                                    [(match_operand:SF 1 "register_operand")
-+                                     (match_operand:SF 2 "rx_source_operand")])
-                     (label_ref (match_operand 3 ""))
-                     (pc)))
-    ]
-@@ -203,8 +301,8 @@
- (define_insn_and_split "*cbranchsf4_<code>"
-   [(set (pc)
--      (if_then_else (most_cond:SF (match_operand:SF  0 "register_operand"  "r")
--                                  (match_operand:SF  1 "rx_source_operand" "rFiQ"))
-+      (if_then_else (most_cond (match_operand:SF  0 "register_operand"  "r")
-+                               (match_operand:SF  1 "rx_source_operand" "rFiQ"))
-                     (label_ref (match_operand        2 "" ""))
-                     (pc)))
-    ]
-Index: gcc/config/i386/i386.md
-===================================================================
---- gcc/config/i386/i386.md    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/i386/i386.md    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -7575,7 +7575,7 @@
-           (match_operand:SWI 2 "<general_operand>" "<r><i>m"))
-         (match_dup 1)))
-    (clobber (match_scratch:SWI 0 "=<r>"))]
--  "ix86_binary_operator_ok (PLUS, <MODE>mode, operands)"
-+  "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
-   "add{<imodesuffix>}\t{%2, %0|%0, %2}"
-   [(set_attr "type" "alu")
-    (set_attr "mode" "<MODE>")])
-@@ -8999,7 +8999,7 @@
-                (const_int 0)))
-    (clobber (match_scratch:SWI 0 "=<r>"))]
-   "ix86_match_ccmode (insn, CCNOmode)
--   && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
-+   && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
-   "<logicprefix>{<imodesuffix>}\t{%2, %0|%0, %2}"
-   [(set_attr "type" "alu")
-    (set_attr "mode" "<MODE>")])
-Index: gcc/config/i386/sse.md
-===================================================================
---- gcc/config/i386/sse.md     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/i386/sse.md     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -9535,7 +9535,7 @@
-   [(set (match_operand:V8HI 0 "register_operand" "=x")
-       (sign_extend:V8HI
-         (vec_select:V8QI
--          (match_operand:V16QI 1 "register_operand" "x")
-+          (match_operand:V16QI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)
-                      (const_int 2)
-@@ -9551,32 +9551,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_extendv8qiv8hi2"
--  [(set (match_operand:V8HI 0 "register_operand" "=x")
--      (sign_extend:V8HI
--        (vec_select:V8QI
--          (vec_duplicate:V16QI
--            (match_operand:V8QI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)
--                     (const_int 2)
--                     (const_int 3)
--                     (const_int 4)
--                     (const_int 5)
--                     (const_int 6)
--                     (const_int 7)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovsxbw\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-      /* Any live register can be used if it is unused after.
+-         Prologue/epilogue will care for it as needed.  */
+-      
+-      if (df_regs_ever_live_p (regno)
+-          && reg_unused_after (insn, reg))
+-        {
+-          return reg;
+-        }
+-    }
 -
- (define_insn "sse4_1_extendv4qiv4si2"
-   [(set (match_operand:V4SI 0 "register_operand" "=x")
-       (sign_extend:V4SI
-         (vec_select:V4QI
--          (match_operand:V16QI 1 "register_operand" "x")
-+          (match_operand:V16QI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)
-                      (const_int 2)
-@@ -9588,28 +9567,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_extendv4qiv4si2"
--  [(set (match_operand:V4SI 0 "register_operand" "=x")
--      (sign_extend:V4SI
--        (vec_select:V4QI
--          (vec_duplicate:V16QI
--            (match_operand:V4QI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)
--                     (const_int 2)
--                     (const_int 3)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovsxbd\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-  return NULL_RTX;
+-}
 -
- (define_insn "sse4_1_extendv2qiv2di2"
-   [(set (match_operand:V2DI 0 "register_operand" "=x")
-       (sign_extend:V2DI
-         (vec_select:V2QI
--          (match_operand:V16QI 1 "register_operand" "x")
-+          (match_operand:V16QI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)]))))]
-   "TARGET_SSE4_1"
-@@ -9619,26 +9581,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_extendv2qiv2di2"
--  [(set (match_operand:V2DI 0 "register_operand" "=x")
--      (sign_extend:V2DI
--        (vec_select:V2QI
--          (vec_duplicate:V16QI
--            (match_operand:V2QI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovsxbq\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
 -
- (define_insn "sse4_1_extendv4hiv4si2"
-   [(set (match_operand:V4SI 0 "register_operand" "=x")
-       (sign_extend:V4SI
-         (vec_select:V4HI
--          (match_operand:V8HI 1 "register_operand" "x")
-+          (match_operand:V8HI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)
-                      (const_int 2)
-@@ -9650,28 +9597,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_extendv4hiv4si2"
--  [(set (match_operand:V4SI 0 "register_operand" "=x")
--      (sign_extend:V4SI
--        (vec_select:V4HI
--          (vec_duplicate:V8HI
--            (match_operand:V2HI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)
--                     (const_int 2)
--                     (const_int 3)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovsxwd\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-/* Helper function for the next function in the case where only restricted
+-   version of LPM instruction is available.  */
 -
- (define_insn "sse4_1_extendv2hiv2di2"
-   [(set (match_operand:V2DI 0 "register_operand" "=x")
-       (sign_extend:V2DI
-         (vec_select:V2HI
--          (match_operand:V8HI 1 "register_operand" "x")
-+          (match_operand:V8HI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)]))))]
-   "TARGET_SSE4_1"
-@@ -9681,26 +9611,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_extendv2hiv2di2"
--  [(set (match_operand:V2DI 0 "register_operand" "=x")
--      (sign_extend:V2DI
--        (vec_select:V2HI
--          (vec_duplicate:V8HI
--            (match_operand:V8HI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovsxwq\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-static const char*
+-avr_out_lpm_no_lpmx (rtx insn, rtx *xop, int *plen)
+-{
+-  rtx dest = xop[0];
+-  rtx addr = xop[1];
+-  int n_bytes = GET_MODE_SIZE (GET_MODE (dest));
+-  int regno_dest;
 -
- (define_insn "sse4_1_extendv2siv2di2"
-   [(set (match_operand:V2DI 0 "register_operand" "=x")
-       (sign_extend:V2DI
-         (vec_select:V2SI
--          (match_operand:V4SI 1 "register_operand" "x")
-+          (match_operand:V4SI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)]))))]
-   "TARGET_SSE4_1"
-@@ -9710,26 +9625,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_extendv2siv2di2"
--  [(set (match_operand:V2DI 0 "register_operand" "=x")
--      (sign_extend:V2DI
--        (vec_select:V2SI
--          (vec_duplicate:V4SI
--            (match_operand:V2SI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovsxdq\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-  regno_dest = REGNO (dest);
 -
- (define_insn "sse4_1_zero_extendv8qiv8hi2"
-   [(set (match_operand:V8HI 0 "register_operand" "=x")
-       (zero_extend:V8HI
-         (vec_select:V8QI
--          (match_operand:V16QI 1 "register_operand" "x")
-+          (match_operand:V16QI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)
-                      (const_int 2)
-@@ -9745,32 +9645,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_zero_extendv8qiv8hi2"
--  [(set (match_operand:V8HI 0 "register_operand" "=x")
--      (zero_extend:V8HI
--        (vec_select:V8QI
--          (vec_duplicate:V16QI
--            (match_operand:V8QI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)
--                     (const_int 2)
--                     (const_int 3)
--                     (const_int 4)
--                     (const_int 5)
--                     (const_int 6)
--                     (const_int 7)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovzxbw\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-  /* The implicit target register of LPM.  */
+-  xop[3] = lpm_reg_rtx;
 -
- (define_insn "sse4_1_zero_extendv4qiv4si2"
-   [(set (match_operand:V4SI 0 "register_operand" "=x")
-       (zero_extend:V4SI
-         (vec_select:V4QI
--          (match_operand:V16QI 1 "register_operand" "x")
-+          (match_operand:V16QI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)
-                      (const_int 2)
-@@ -9782,28 +9661,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_zero_extendv4qiv4si2"
--  [(set (match_operand:V4SI 0 "register_operand" "=x")
--      (zero_extend:V4SI
--        (vec_select:V4QI
--          (vec_duplicate:V16QI
--            (match_operand:V4QI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)
--                     (const_int 2)
--                     (const_int 3)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovzxbd\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-  switch (GET_CODE (addr))
+-    {
+-    default:
+-      gcc_unreachable();
 -
- (define_insn "sse4_1_zero_extendv2qiv2di2"
-   [(set (match_operand:V2DI 0 "register_operand" "=x")
-       (zero_extend:V2DI
-         (vec_select:V2QI
--          (match_operand:V16QI 1 "register_operand" "x")
-+          (match_operand:V16QI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)]))))]
-   "TARGET_SSE4_1"
-@@ -9813,26 +9675,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_zero_extendv2qiv2di2"
--  [(set (match_operand:V2DI 0 "register_operand" "=x")
--      (zero_extend:V2DI
--        (vec_select:V2QI
--          (vec_duplicate:V16QI
--            (match_operand:V2QI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovzxbq\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-    case REG:
 -
- (define_insn "sse4_1_zero_extendv4hiv4si2"
-   [(set (match_operand:V4SI 0 "register_operand" "=x")
-       (zero_extend:V4SI
-         (vec_select:V4HI
--          (match_operand:V8HI 1 "register_operand" "x")
-+          (match_operand:V8HI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)
-                      (const_int 2)
-@@ -9844,28 +9691,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_zero_extendv4hiv4si2"
--  [(set (match_operand:V4SI 0 "register_operand" "=x")
--      (zero_extend:V4SI
--        (vec_select:V4HI
--          (vec_duplicate:V8HI
--            (match_operand:V4HI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)
--                     (const_int 2)
--                     (const_int 3)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovzxwd\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-      gcc_assert (REG_Z == REGNO (addr));
 -
- (define_insn "sse4_1_zero_extendv2hiv2di2"
-   [(set (match_operand:V2DI 0 "register_operand" "=x")
-       (zero_extend:V2DI
-         (vec_select:V2HI
--          (match_operand:V8HI 1 "register_operand" "x")
-+          (match_operand:V8HI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)]))))]
-   "TARGET_SSE4_1"
-@@ -9875,26 +9705,11 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_zero_extendv2hiv2di2"
--  [(set (match_operand:V2DI 0 "register_operand" "=x")
--      (zero_extend:V2DI
--        (vec_select:V2HI
--          (vec_duplicate:V8HI
--            (match_operand:V2HI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovzxwq\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-      switch (n_bytes)
+-        {
+-        default:
+-          gcc_unreachable();
 -
- (define_insn "sse4_1_zero_extendv2siv2di2"
-   [(set (match_operand:V2DI 0 "register_operand" "=x")
-       (zero_extend:V2DI
-         (vec_select:V2SI
--          (match_operand:V4SI 1 "register_operand" "x")
-+          (match_operand:V4SI 1 "nonimmediate_operand" "xm")
-           (parallel [(const_int 0)
-                      (const_int 1)]))))]
-   "TARGET_SSE4_1"
-@@ -9904,21 +9719,6 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_insn "*sse4_1_zero_extendv2siv2di2"
--  [(set (match_operand:V2DI 0 "register_operand" "=x")
--      (zero_extend:V2DI
--        (vec_select:V2SI
--          (vec_duplicate:V4SI
--            (match_operand:V2SI 1 "nonimmediate_operand" "xm"))
--          (parallel [(const_int 0)
--                     (const_int 1)]))))]
--  "TARGET_SSE4_1"
--  "%vpmovzxdq\t{%1, %0|%0, %1}"
--  [(set_attr "type" "ssemov")
--   (set_attr "prefix_extra" "1")
--   (set_attr "prefix" "maybe_vex")
--   (set_attr "mode" "TI")])
+-        case 1:
+-          avr_asm_len ("%4lpm", xop, plen, 1);
 -
- ;; ptestps/ptestpd are very similar to comiss and ucomiss when
- ;; setting FLAGS_REG. But it is not a really compare instruction.
- (define_insn "avx_vtestp<avxmodesuffixf2c><avxmodesuffix>"
-Index: gcc/config/i386/i386.c
-===================================================================
---- gcc/config/i386/i386.c     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/i386/i386.c     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -9491,8 +9491,7 @@
-      to test cfun for being non-NULL. */
-   if (TARGET_K6 && cfun && optimize_function_for_speed_p (cfun)
-       && base_reg && !index_reg && !disp
--      && REG_P (base_reg)
--      && REGNO_REG_CLASS (REGNO (base_reg)) == SIREG)
-+      && REG_P (base_reg) && REGNO (base_reg) == SI_REG)
-     disp = const0_rtx;
-   /* Special case: encode reg+reg instead of reg*2.  */
-Index: gcc/config/ia64/ia64.md
-===================================================================
---- gcc/config/ia64/ia64.md    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/ia64/ia64.md    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -3988,7 +3988,7 @@
-                      [(match_operand:BI 2 "register_operand" "")
-                       (match_operand:BI 3 "const_int_operand" "")]))]
-   ""
--  "ia64_expand_compare (&operands[0], &operands[1], &operands[2]);")
-+  "ia64_expand_compare (&operands[1], &operands[2], &operands[3]);")
- (define_expand "cstoresi4"
-   [(set (match_operand:DI 0 "gr_register_operand" "") 
-Index: gcc/config/rs6000/x-aix
-===================================================================
---- gcc/config/rs6000/x-aix    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/rs6000/x-aix    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -2,5 +2,5 @@
- build/genautomata : override LDFLAGS += -Wl,-bmaxdata:0x20000000
- # jc1 requires more than 256MB of data
--jc1 : override LDFLAGS += -Wl,-bmaxdata:0x20000000
-+$(COMPILERS) : override LDFLAGS += -Wl,-bmaxdata:0x40000000
-Index: gcc/config/pa/pa.h
-===================================================================
---- gcc/config/pa/pa.h (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/config/pa/pa.h (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -325,8 +325,9 @@
- #define BIGGEST_ALIGNMENT (2 * BITS_PER_WORD)
- /* Get around hp-ux assembler bug, and make strcpy of constants fast.  */
--#define CONSTANT_ALIGNMENT(CODE, TYPEALIGN) \
--  ((TYPEALIGN) < 32 ? 32 : (TYPEALIGN))
-+#define CONSTANT_ALIGNMENT(EXP, ALIGN)                \
-+  (TREE_CODE (EXP) == STRING_CST              \
-+   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
- /* Make arrays of chars word-aligned for the same reasons.  */
- #define DATA_ALIGNMENT(TYPE, ALIGN)           \
-Index: gcc/convert.c
-===================================================================
---- gcc/convert.c      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ gcc/convert.c      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -799,14 +799,7 @@
-         /* This is not correct for ABS_EXPR,
-            since we must test the sign before truncation.  */
-         {
--          tree typex;
+-          if (regno_dest != LPM_REGNO)
+-            avr_asm_len ("mov %0,%3", xop, plen, 1);
 -
--          /* Don't do unsigned arithmetic where signed was wanted,
--             or vice versa.  */
--          if (TYPE_UNSIGNED (TREE_TYPE (expr)))
--            typex = unsigned_type_for (type);
--          else
--            typex = signed_type_for (type);
-+          tree typex = unsigned_type_for (type);
-           return convert (type,
-                           fold_build1 (ex_form, typex,
-                                        convert (typex,
-Index: libstdc++-v3/configure
-===================================================================
---- libstdc++-v3/configure     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/configure     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -25562,7 +25562,7 @@
-       CFLAGS="$chktls_save_CFLAGS"
-       if test "X$thread_CFLAGS" != Xfailed; then
-         CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
--        if test "$cross_compiling" = yes; then :
-+                                                if test "$cross_compiling" = yes; then :
-   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- as_fn_error "cannot run test program while cross compiling
-@@ -44500,7 +44500,7 @@
-       CFLAGS="$chktls_save_CFLAGS"
-       if test "X$thread_CFLAGS" != Xfailed; then
-         CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
--        if test "$cross_compiling" = yes; then :
-+                                                if test "$cross_compiling" = yes; then :
-   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- as_fn_error "cannot run test program while cross compiling
-@@ -50585,7 +50585,7 @@
-       CFLAGS="$chktls_save_CFLAGS"
-       if test "X$thread_CFLAGS" != Xfailed; then
-         CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
--        if test "$cross_compiling" = yes; then :
-+                                                if test "$cross_compiling" = yes; then :
-   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- as_fn_error "cannot run test program while cross compiling
-Index: libstdc++-v3/doc/xml/manual/appendix_contributing.xml
-===================================================================
---- libstdc++-v3/doc/xml/manual/appendix_contributing.xml      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/doc/xml/manual/appendix_contributing.xml      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -942,10 +942,18 @@
-       <title>Generating the Doxygen Files</title>
-       <para>
-       The following Makefile rules run Doxygen to generate HTML
--      docs, XML docs, PDF docs, and the man pages.
-+      docs, XML docs, XML docs as a single file, PDF docs, and the man pages.
-       </para>
-       <para>
-+      Generated files are output into separate sub directores of
-+      <filename class="directory">doc/doxygen/</filename> in the
-+      build directory, based on the output format. For instance, the
-+      HTML docs will be in <filename
-+      class="directory">doc/doxygen/html</filename>.
-+      </para>
-+
-+      <para>
-       <screen><userinput>make doc-html-doxygen</userinput></screen>
-       </para>
-@@ -954,6 +962,10 @@
-       </para>
-       <para>
-+      <screen><userinput>make doc-xml-single-doxygen</userinput></screen>
-+      </para>
-+
-+      <para>
-       <screen><userinput>make doc-pdf-doxygen</userinput></screen>
-       </para>
-@@ -1204,23 +1216,30 @@
-       </para>
-       <para>
--      For PDF output, something that transforms valid XML to PDF is
--      required. Possible solutions include 
--      <ulink url="http://dblatex.sourceforge.net">dblatex</ulink>, 
--      <command>xmlto</command>, or <command>prince</command>. Other
--      options are listed on the DocBook
--      web <ulink url="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</ulink>. Please
-+      For PDF output, something that transforms valid Docbook XML to PDF is
-+      required. Possible solutions include <ulink
-+      url="http://dblatex.sourceforge.net">dblatex</ulink>,
-+      <command>xmlto</command>, or <command>prince</command>. Of
-+      these, <command>dblatex</command> is the default. Other
-+      options are listed on the DocBook web <ulink
-+      url="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</ulink>. Please
-       consult the <email>libstdc++@gcc.gnu.org</email> list when
-       preparing printed manuals for current best practice and
-       suggestions.
-       </para>
-       <para>
--      Make sure that the XML documentation and markup is valid for
--      any change. This can be done easily, with the validation rules
--      in the <filename>Makefile</filename>, which is equivalent to doing:
-+      For Texinfo output, something that transforms valid Docbook
-+      XML to Texinfo is required. The default choice is <ulink
-+      url="http://docbook2x.sourceforge.net/">docbook2X</ulink>.
-       </para>
-+      <para>
-+      Please make sure that the XML documentation and markup is valid for
-+      any change. This can be done easily, with the validation rule
-+      detailed below, which is equivalent to doing:
-+      </para>
-+
-       <screen>
-         <userinput>
- xmllint --noout --valid <filename>xml/index.xml</filename>
-@@ -1239,6 +1258,14 @@
-       </para>
-       <para>
-+      Generated files are output into separate sub directores of
-+      <filename class="directory">doc/docbook/</filename> in the
-+      build directory, based on the output format. For instance, the
-+      HTML docs will be in <filename
-+      class="directory">doc/docbook/html</filename>.
-+      </para>
-+
-+      <para>
-       <screen><userinput>make doc-html-docbook</userinput></screen>
-       </para>
-@@ -1492,20 +1519,90 @@
-       <para>
-       The following Makefile rules are defaults, and are usually
--      aliased to variable rules.
-+      aliased to more detailed rules. They are shortcuts for
-+      generating HTML, PDF, Texinfo, XML, or man files and then collecting
-+      the generated files into the build directory's doc directory.
-       </para>
-+<variablelist>
-+
-+<varlistentry><term>
-+      <emphasis>make doc-html</emphasis>
-+    </term>
-+<listitem>
-       <para>
--      <screen><userinput>make doc-html</userinput></screen>
-+      Generates multi-page HTML documentation in the following directories:
-       </para>
-+      <para>
-+      <filename class="directory">doc/libstdc++-api.html</filename>
-+      </para>
-+      <para>
-+      <filename class="directory">doc/libstdc++-manual.html</filename>
-+      </para>
-+</listitem>
-+</varlistentry>
-+<varlistentry><term>
-+      <emphasis>make doc-man</emphasis>
-+    </term>
-+<listitem>
-       <para>
--      <screen><userinput>make doc-man</userinput></screen>
-+      Generates man pages in the following directory:
-       </para>
-+      <para>
-+      <filename class="directory">doc/libstdc++-api.man</filename>
-+      </para>
-+</listitem>
-+</varlistentry>
-+<varlistentry><term>
-+      <emphasis>make doc-pdf</emphasis>
-+    </term>
-+<listitem>
-       <para>
--      <screen><userinput>make doc-pdf</userinput></screen>
-+      Generates indexed PDF documentation in the following files:
-       </para>
-+      <para>
-+      <filename>doc/libstdc++-api.pdf</filename>
-+      </para>
-+      <para>
-+      <filename>doc/libstdc++-manual.pdf</filename>
-+      </para>
-+</listitem>
-+</varlistentry>
-+
-+<varlistentry><term>
-+      <emphasis>make doc-texinfo</emphasis>
-+    </term>
-+<listitem>
-+      <para>
-+      Generates Texinfo documentation in the following files:
-+      </para>
-+      <para>
-+      <filename>doc/libstdc++-manual.texinfo</filename>
-+      </para>
-+</listitem>
-+</varlistentry>
-+
-+<varlistentry><term>
-+      <emphasis>make doc-xml</emphasis>
-+    </term>
-+<listitem>
-+      <para>
-+      Generates single-file XML documentation in the following files:
-+      </para>
-+      <para>
-+      <filename>doc/libstdc++-api.xml</filename>
-+      </para>
-+      <para>
-+      <filename>doc/libstdc++-manual.xml</filename>
-+      </para>
-+</listitem>
-+</varlistentry>
-+
-+</variablelist>
-+
-+
-   </sect3>
-   </sect2>
- </sect1>
-Index: libstdc++-v3/doc/Makefile.in
-===================================================================
---- libstdc++-v3/doc/Makefile.in       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/doc/Makefile.in       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -267,7 +267,15 @@
- # Assumes doxygen, graphviz (with dot), pdflatex installed
- doxygen_script = ${top_srcdir}/scripts/run_doxygen
- doxygen_outdir = ${glibcxx_builddir}/doc/doxygen
-+api_xml = ${doxygen_outdir}/xml/libstdc++-api-single.xml
-+
-+# Chance of loooooonnggg creation time on this rule.  Iff this fails,
-+# look at refman.log and see if TeX's memory is exhausted. Symptoms
-+# include asking a wizard to enlarge capacity. If this is the case,
-+# find texmf.cnf and add a zero for pool_size, string_vacancies,
-+# max_strings, and pool_free values.
- doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf
-+api_pdf = ${doxygen_outdir}/pdf/libstdc++-api.pdf
- # Docbook configuration.
- # Assumes
-@@ -364,29 +372,25 @@
- DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
- XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS)
--# PDF 1
--# fop
--FOP = fop
--FOP_FLAGS = -d -r
-+# XML, all one page
-+# Some info on canonicalization
-+# http://www.mail-archive.com/help-texinfo@gnu.org/msg00864.html
-+manual_xml = ${docbook_outdir}/xml/libstdc++-manual-single.xml
--# PDF 2
--# xmlto
--XML2PDF = xmlto
--XML2PDF_FLAGS = -v pdf --skip-validation -o pdf
-+# HTML, all one page
-+manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html
--# PDF 3
--# xmlroff
--XMLROFF = xmlroff
--XMLROFF_FLAGS = --format=pdf --backend=cairo --warn=1 --debug=1 --continue
-+# PDF, via dblatex
-+manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf
-+DBLATEX_FLAGS = --dump --verbose --pdf -o ${manual_pdf}
--# PDF 4
--# prince
--PRINCE = prince
--PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf
-+# Texinfo, via docbook2X
-+DB2TEXI_FLAGS = \
-+      --encoding=utf-8//TRANSLIT \
-+      --string-param output-file="libstdc++-manual" \
-+      --string-param directory-category="GNU C++ Library" \
-+      --string-param explicit-node-names=true
--# PDF 5
--# dblatex
--DBLATEX_FLAGS = --dump --verbose --pdf -o ${docbook_outdir}/pdf/manual.pdf
- # Performance doc and graph configuration.
- # Assumes pychart, beautiful soup installed.
-@@ -585,20 +589,41 @@
- # Documentation Overview
- #
- # There are two main source materials for libstdc++ documentation.
--# The first is the doxygen markup in libstdc++ sources. And the second
--# is the docbook markup in doc/xml/. A third and more obscure option
--# deals with charting performance tests.
-+# The first is the doxygen markup in libstdc++ sources, which is a
-+# reference to the API. And the second is the docbook markup in
-+# doc/xml/.
-+#
-+# A third and more obscure option deals with charting
-+# performance tests, and should be considered experimental.
--# Default, points to current best sub-rule that is the best conversion.
-+# Default rules.
-+#
-+# Point to best sub-rule for the requested documentation target,
-+# create, and then copy into toplevel directory with standardized names
-+# and layouts.
-+
-+# HTML
-+doc-html: doc-html-docbook doc-html-doxygen
-+      cp -R ${docbook_outdir}/html ./libstdc++-manual.html
-+      cp -R ${doxygen_outdir}/html ./libstdc++-api.html
-+
- # MAN
- doc-man: doc-man-doxygen
-+      cp -R ${doxygen_outdir}/man ./libstdc++-api.man
- # PDF
--doc-pdf: doc-pdf-docbook
-+doc-pdf: doc-pdf-docbook doc-pdf-doxygen
-+      cp ${docbook_outdir}/pdf/libstdc++-manual.pdf .
-+      cp ${doxygen_outdir}/pdf/libstdc++-api.pdf .
--# HTML
--doc-html: doc-html-docbook
-+# TEXINFO
-+doc-texinfo: doc-texinfo-docbook
-+# XML
-+doc-xml: doc-xml-single-docbook doc-xml-single-doxygen
-+      cp ${manual_xml} .
-+      cp ${api_xml} .
-+
- doc-html-doxygen:
-       -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-         builddir=`cd ..; ${PWD_COMMAND}`; \
-@@ -616,11 +641,10 @@
-         builddir=`cd ..; ${PWD_COMMAND}`; \
-         ${SHELL} ${doxygen_script} \
-         --host_alias=${host_alias} --mode=xml $${srcdir} $${builddir} NO)
+-          return "";
 -
--doc-xml-single-doxygen:
-+doc-xml-single-doxygen: doc-xml-doxygen
-       @echo "Generating doxygen xml single file..."
-       $(XSLTPROC) ${doxygen_outdir}/xml/combine.xslt \
--      ${doxygen_outdir}/xml/index.xml > ${doxygen_outdir}/xml/api-spine.xml;
-+      ${doxygen_outdir}/xml/index.xml > ${api_xml};
- doc-latex-doxygen:
-       -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-@@ -628,12 +652,15 @@
-         ${SHELL} ${doxygen_script} \
-         --host_alias=${host_alias} --mode=latex $${srcdir} $${builddir} NO)
--# Chance of loooooonnggg creation time on this rule.
--doc-pdf-doxygen: stamp-latex-doxygen
-+${doxygen_outdir}/pdf:
-+      mkdir -p ${doxygen_outdir}/pdf
-+
-+doc-pdf-doxygen: stamp-latex-doxygen ${doxygen_outdir}/pdf
-       -(cd ${doxygen_outdir}/latex && $(MAKE) -i pdf;)
-       echo "Generating doxygen pdf file...";
-       if [ -f ${doxygen_pdf} ]; then \
--        echo "... ${doxygen_pdf}"; \
-+        mv ${doxygen_pdf} ${api_pdf} ; \
-+        echo ":: PDF file is ${api_pdf}"; \
-       else \
-         echo "... error"; \
-         exit 12; \
-@@ -658,37 +685,36 @@
-       fi
-       $(STAMP) stamp-latex-doxygen
-+${docbook_outdir}/fo:
-+      mkdir -p ${docbook_outdir}/fo
-+
- ${docbook_outdir}/html:
-       mkdir -p ${docbook_outdir}/html
- ${docbook_outdir}/pdf:
-       mkdir -p ${docbook_outdir}/pdf
--${docbook_outdir}/fo:
--      mkdir -p ${docbook_outdir}/fo
-+${docbook_outdir}/texinfo:
-+      mkdir -p ${docbook_outdir}/texinfo
- ${docbook_outdir}/xml:
-       mkdir -p ${docbook_outdir}/xml
- doc-xml-validate-docbook: $(xml_sources)
-       @echo "Generating XML validation log..."
-       $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml
+-        case 2:
+-          if (REGNO (dest) == REG_Z)
+-            return avr_asm_len ("%4lpm"      CR_TAB
+-                                "push %3"    CR_TAB
+-                                "adiw %2,1"  CR_TAB
+-                                "%4lpm"      CR_TAB
+-                                "mov %B0,%3" CR_TAB
+-                                "pop %A0", xop, plen, 6);
+-          
+-          avr_asm_len ("%4lpm"      CR_TAB
+-                       "mov %A0,%3" CR_TAB
+-                       "adiw %2,1"  CR_TAB
+-                       "%4lpm"      CR_TAB
+-                       "mov %B0,%3", xop, plen, 5);
+-                
+-          if (!reg_unused_after (insn, addr))
+-            avr_asm_len ("sbiw %2,1", xop, plen, 1);
+-          
+-          break; /* 2 */
+-        }
+-      
+-      break; /* REG */
 -
- doc-xml-single-docbook: $(xml_sources) ${docbook_outdir}/xml
-       @echo "Generating XML single..."
--      $(XMLLINT) --xinclude --noent --noblanks \
--      -o ${docbook_outdir}/xml/spine-single.xml \
--      ${top_srcdir}/doc/xml/spine.xml
-+      $(XMLLINT) --xinclude --noent --noblanks --nocdata --nsclean --c14n \
-+      ${top_srcdir}/doc/xml/manual/spine.xml > ${manual_xml}
- # HTML, index plus chapters
- doc-html-docbook: $(xml_sources) ${docbook_outdir}/html
-       @echo "Generating html files..."
-       $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \
-       $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml
+-    case POST_INC:
 -
--# HTML, all one page
- doc-html-single-docbook: $(xml_sources) ${docbook_outdir}/html
-       @echo "Generating html single file..."
--      $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \
-+      $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \
-       $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml
- # FO
-@@ -696,29 +722,14 @@
-       @echo "Generating FO files..."
-       $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \
-       $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml
--doc-pdf-fop-xml-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf
--      @echo "Generating pdf fop files from xml..."
--      $(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \
--      -xsl $(XSL_FO_STYLE) -pdf ${docbook_outdir}/pdf/spine.pdf
-+doc-pdf-docbook: doc-pdf-dblatex-docbook
--doc-pdf-fop-fo-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf doc-fo
--      @echo "Generating pdf fop files from fo..."
--      $(FOP) $(FOP_FLAGS) -fo ${docbook_outdir}/fo/spine.fo \
--      -pdf ${docbook_outdir}/pdf/spine.pdf
--doc-pdf-xmlto-docbook: $(xml_sources) ${docbook_outdir}/pdf
--      @echo "Generating pdf xmlto files..."
--      $(XML2PDF) $(XML2PDF_FLAGS) ${top_srcdir}/doc/xml/spine.xml
--doc-pdf-xmlroff-docbook: $(xml_sources) doc-fo
--      @echo "Generating pdf xmlroff files..."
--      $(XMLROFF) $(XMLROFF_FLAGS) ${docbook_outdir}/fo/spine.fo
--doc-pdf-prince-docbook: $(xml_sources) ${docbook_outdir}/pdf
--      @echo "Generating pdf prince files..."
--      $(PRINCE) $(PRINCE_FLAGS) ${top_srcdir}/xml/spine.xml
- doc-pdf-dblatex-docbook: $(xml_sources) ${docbook_outdir}/pdf
-       @echo "Generating pdf dblatex files..."
-       dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml
+-      gcc_assert (REG_Z == REGNO (XEXP (addr, 0))
+-                  && n_bytes <= 4);
 -
--doc-pdf-docbook: doc-pdf-dblatex-docbook
-+doc-texinfo-docbook: doc-xml-single-docbook ${docbook_outdir}/texinfo
-+      @echo "Generating texinfo files..."
-+      db2x_docbook2texi $(DB2TEXI_FLAGS) ${manual_xml}
- doc-html-performance:
-       -@(chmod + ${doc_performance_script}; \
-       ${doc_performance_script} ${top_srcdir} \
-@@ -730,7 +741,7 @@
- # To remove directories.
- clean-local:
--      rm -rf man html pdf fo xml doxygen docbook stamp*
-+      rm -rf man html pdf fo xml doxygen docbook stamp* ./libstdc++-* db2t*
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-Index: libstdc++-v3/doc/Makefile.am
-===================================================================
---- libstdc++-v3/doc/Makefile.am       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/doc/Makefile.am       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -25,26 +25,46 @@
- # Documentation Overview
- #
- # There are two main source materials for libstdc++ documentation.
--# The first is the doxygen markup in libstdc++ sources. And the second
--# is the docbook markup in doc/xml/. A third and more obscure option
--# deals with charting performance tests.
-+# The first is the doxygen markup in libstdc++ sources, which is a
-+# reference to the API. And the second is the docbook markup in
-+# doc/xml/.
-+#
-+# A third and more obscure option deals with charting
-+# performance tests, and should be considered experimental.
--# Default, points to current best sub-rule that is the best conversion.
-+# Default rules.
-+#
-+# Point to best sub-rule for the requested documentation target,
-+# create, and then copy into toplevel directory with standardized names
-+# and layouts.
-+
-+# HTML
-+doc-html: doc-html-docbook doc-html-doxygen
-+      cp -R ${docbook_outdir}/html ./libstdc++-manual.html
-+      cp -R ${doxygen_outdir}/html ./libstdc++-api.html
-+
- # MAN
- doc-man: doc-man-doxygen
-+      cp -R ${doxygen_outdir}/man ./libstdc++-api.man
- # PDF
--doc-pdf: doc-pdf-docbook
-+doc-pdf: doc-pdf-docbook doc-pdf-doxygen
-+      cp ${docbook_outdir}/pdf/libstdc++-manual.pdf .
-+      cp ${doxygen_outdir}/pdf/libstdc++-api.pdf .
--# HTML
--doc-html: doc-html-docbook
-+# TEXINFO
-+doc-texinfo: doc-texinfo-docbook
-+# XML
-+doc-xml: doc-xml-single-docbook doc-xml-single-doxygen
-+      cp ${manual_xml} .
-+      cp ${api_xml} .
-+
- # Doxygen configuration
- # Assumes doxygen, graphviz (with dot), pdflatex installed
- doxygen_script=${top_srcdir}/scripts/run_doxygen
- doxygen_outdir = ${glibcxx_builddir}/doc/doxygen
--doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf
- doc-html-doxygen:
-       -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-@@ -64,10 +84,11 @@
-         ${SHELL} ${doxygen_script} \
-         --host_alias=${host_alias} --mode=xml $${srcdir} $${builddir} NO)
--doc-xml-single-doxygen:
-+api_xml = ${doxygen_outdir}/xml/libstdc++-api-single.xml
-+doc-xml-single-doxygen: doc-xml-doxygen
-       @echo "Generating doxygen xml single file..."
-       $(XSLTPROC) ${doxygen_outdir}/xml/combine.xslt \
--      ${doxygen_outdir}/xml/index.xml > ${doxygen_outdir}/xml/api-spine.xml;
-+      ${doxygen_outdir}/xml/index.xml > ${api_xml};
- doc-latex-doxygen:
-       -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-@@ -75,12 +96,23 @@
-         ${SHELL} ${doxygen_script} \
-         --host_alias=${host_alias} --mode=latex $${srcdir} $${builddir} NO)
--# Chance of loooooonnggg creation time on this rule.
--doc-pdf-doxygen: stamp-latex-doxygen
-+# Chance of loooooonnggg creation time on this rule.  Iff this fails,
-+# look at refman.log and see if TeX's memory is exhausted. Symptoms
-+# include asking a wizard to enlarge capacity. If this is the case,
-+# find texmf.cnf and add a zero for pool_size, string_vacancies,
-+# max_strings, and pool_free values.
-+doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf
-+api_pdf = ${doxygen_outdir}/pdf/libstdc++-api.pdf
-+
-+${doxygen_outdir}/pdf:
-+      mkdir -p ${doxygen_outdir}/pdf
-+
-+doc-pdf-doxygen: stamp-latex-doxygen ${doxygen_outdir}/pdf
-       -(cd ${doxygen_outdir}/latex && $(MAKE) -i pdf;)
-       echo "Generating doxygen pdf file...";
-       if [ -f ${doxygen_pdf} ]; then \
--        echo "... ${doxygen_pdf}"; \
-+        mv ${doxygen_pdf} ${api_pdf} ; \
-+        echo ":: PDF file is ${api_pdf}"; \
-       else \
-         echo "... error"; \
-         exit 12; \
-@@ -193,14 +225,17 @@
- #XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl
- XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/docbook.xsl
-+${docbook_outdir}/fo:
-+      mkdir -p ${docbook_outdir}/fo
-+
- ${docbook_outdir}/html:
-       mkdir -p ${docbook_outdir}/html
- ${docbook_outdir}/pdf:
-       mkdir -p ${docbook_outdir}/pdf
--${docbook_outdir}/fo:
--      mkdir -p ${docbook_outdir}/fo
-+${docbook_outdir}/texinfo:
-+      mkdir -p ${docbook_outdir}/texinfo
- ${docbook_outdir}/xml:
-       mkdir -p ${docbook_outdir}/xml
-@@ -216,11 +251,14 @@
-       @echo "Generating XML validation log..."
-       $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml
-+# XML, all one page
-+# Some info on canonicalization
-+# http://www.mail-archive.com/help-texinfo@gnu.org/msg00864.html
-+manual_xml = ${docbook_outdir}/xml/libstdc++-manual-single.xml
- doc-xml-single-docbook: $(xml_sources) ${docbook_outdir}/xml
-       @echo "Generating XML single..."
--      $(XMLLINT) --xinclude --noent --noblanks \
--      -o ${docbook_outdir}/xml/spine-single.xml \
--      ${top_srcdir}/doc/xml/spine.xml
-+      $(XMLLINT) --xinclude --noent --noblanks --nocdata --nsclean --c14n \
-+      ${top_srcdir}/doc/xml/manual/spine.xml > ${manual_xml}
- # HTML, index plus chapters
- doc-html-docbook: $(xml_sources) ${docbook_outdir}/html
-@@ -229,9 +267,10 @@
-       $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml
- # HTML, all one page
-+manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html
- doc-html-single-docbook: $(xml_sources) ${docbook_outdir}/html
-       @echo "Generating html single file..."
--      $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \
-+      $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \
-       $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml
- # FO
-@@ -240,52 +279,24 @@
-       $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \
-       $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml
--# PDF 1
--# fop
--FOP = fop
--FOP_FLAGS = -d -r
--doc-pdf-fop-xml-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf
--      @echo "Generating pdf fop files from xml..."
--      $(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \
--      -xsl $(XSL_FO_STYLE) -pdf ${docbook_outdir}/pdf/spine.pdf
-+# PDF, via dblatex
-+manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf
-+DBLATEX_FLAGS = --dump --verbose --pdf -o ${manual_pdf}
-+doc-pdf-docbook: doc-pdf-dblatex-docbook
--doc-pdf-fop-fo-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf doc-fo
--      @echo "Generating pdf fop files from fo..."
--      $(FOP) $(FOP_FLAGS) -fo ${docbook_outdir}/fo/spine.fo \
--      -pdf ${docbook_outdir}/pdf/spine.pdf
+-      if (regno_dest == LPM_REGNO)
+-        avr_asm_len ("%4lpm"      CR_TAB
+-                     "adiw %2,1", xop, plen, 2);
+-      else
+-        avr_asm_len ("%4lpm"      CR_TAB
+-                     "mov %A0,%3" CR_TAB
+-                     "adiw %2,1", xop, plen, 3);
 -
--# PDF 2
--# xmlto
--XML2PDF = xmlto
--XML2PDF_FLAGS = -v pdf --skip-validation -o pdf
--doc-pdf-xmlto-docbook: $(xml_sources) ${docbook_outdir}/pdf
--      @echo "Generating pdf xmlto files..."
--      $(XML2PDF) $(XML2PDF_FLAGS) ${top_srcdir}/doc/xml/spine.xml
+-      if (n_bytes >= 2)
+-        avr_asm_len ("%4lpm"      CR_TAB
+-                     "mov %B0,%3" CR_TAB
+-                     "adiw %2,1", xop, plen, 3);
 -
--# PDF 3
--# xmlroff
--XMLROFF = xmlroff
--XMLROFF_FLAGS = --format=pdf --backend=cairo --warn=1 --debug=1 --continue
--doc-pdf-xmlroff-docbook: $(xml_sources) doc-fo
--      @echo "Generating pdf xmlroff files..."
--      $(XMLROFF) $(XMLROFF_FLAGS) ${docbook_outdir}/fo/spine.fo
+-      if (n_bytes >= 3)
+-        avr_asm_len ("%4lpm"      CR_TAB
+-                     "mov %C0,%3" CR_TAB
+-                     "adiw %2,1", xop, plen, 3);
 -
--# PDF 4
--# prince
--PRINCE = prince
--PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf
--doc-pdf-prince-docbook: $(xml_sources) ${docbook_outdir}/pdf
--      @echo "Generating pdf prince files..."
--      $(PRINCE) $(PRINCE_FLAGS) ${top_srcdir}/xml/spine.xml
+-      if (n_bytes >= 4)
+-        avr_asm_len ("%4lpm"      CR_TAB
+-                     "mov %D0,%3" CR_TAB
+-                     "adiw %2,1", xop, plen, 3);
 -
--# PDF 5
--# dblatex
--DBLATEX_FLAGS = --dump --verbose --pdf -o ${docbook_outdir}/pdf/manual.pdf
- doc-pdf-dblatex-docbook: $(xml_sources) ${docbook_outdir}/pdf
-       @echo "Generating pdf dblatex files..."
-       dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml
--doc-pdf-docbook: doc-pdf-dblatex-docbook
-+# Texinfo, via docbook2X
-+DB2TEXI_FLAGS = \
-+      --encoding=utf-8//TRANSLIT \
-+      --string-param output-file="libstdc++-manual" \
-+      --string-param directory-category="GNU C++ Library" \
-+      --string-param explicit-node-names=true
-+doc-texinfo-docbook: doc-xml-single-docbook ${docbook_outdir}/texinfo
-+      @echo "Generating texinfo files..."
-+      db2x_docbook2texi $(DB2TEXI_FLAGS) ${manual_xml}
- # Performance doc and graph configuration.
-@@ -307,4 +318,4 @@
- # To remove directories.
- clean-local:
--      rm -rf man html pdf fo xml doxygen docbook stamp*
-+      rm -rf man html pdf fo xml doxygen docbook stamp* ./libstdc++-* db2t*
-Index: libstdc++-v3/doc/doxygen/user.cfg.in
-===================================================================
---- libstdc++-v3/doc/doxygen/user.cfg.in       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/doc/doxygen/user.cfg.in       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,4 +1,4 @@
--# Doxyfile 1.6.1
-+# Doxyfile 1.7.1
- # This file describes the settings to be used by the documentation system
- # doxygen (www.doxygen.org) for a project
-@@ -180,7 +180,7 @@
- # You can put \n's in the value part of an alias to insert newlines.
- ALIASES                = "doctodo=@todo\nDoc me!  See doc/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more.  " \
--                       "isiosfwd=One of the @link io I/O @endlink typedefs"
-+                         "isiosfwd=One of the @link io I/O @endlink typedefs"
- # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
- # sources only. Doxygen will then generate output that is more tailored for C.
-@@ -208,17 +208,15 @@
- OPTIMIZE_OUTPUT_VHDL   = NO
--# Doxygen selects the parser to use depending on the extension of the
--# files it parses.  With this tag you can assign which parser to use
--# for a given extension.  Doxygen has a built-in mapping, but you can
--# override or extend it using this tag.  The format is ext=language,
--# where ext is a file extension, and language is one of the parsers
--# supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
--# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
--# doxygen treat .inc files as Fortran files (default is PHP), and .f
--# files as C (default is Fortran), use: inc=Fortran f=C. Note that for
--# custom extensions you also need to set FILE_PATTERNS otherwise the
--# files are not read by doxygen.
-+# Doxygen selects the parser to use depending on the extension of the files it
-+# parses. With this tag you can assign which parser to use for a given extension.
-+# Doxygen has a built-in mapping, but you can override or extend it using this
-+# tag. The format is ext=language, where ext is a file extension, and language
-+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
- EXTENSION_MAPPING      =
-@@ -236,63 +234,57 @@
- CPP_CLI_SUPPORT        = NO
--# Set the SIP_SUPPORT tag to YES if your project consists of sip
--# sources only.  Doxygen will parse them like normal C++ but will
--# assume all classes use public instead of private inheritance when no
--# explicit protection keyword is present.
-+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-+# Doxygen will parse them like normal C++ but will assume all classes use public
-+# instead of private inheritance when no explicit protection keyword is present.
- SIP_SUPPORT            = NO
--# For Microsoft's IDL there are propget and propput attributes to
--# indicate getter and setter methods for a property. Setting this
--# option to YES (the default) will make doxygen to replace the get and
--# set methods by a property in the documentation. This will only work
--# if the methods are indeed getting or setting a simple type. If this
--# is not the case, or you want to show the methods anyway, you should
--# set this option to NO.
-+# For Microsoft's IDL there are propget and propput attributes to indicate getter
-+# and setter methods for a property. Setting this option to YES (the default)
-+# will make doxygen to replace the get and set methods by a property in the
-+# documentation. This will only work if the methods are indeed getting or
-+# setting a simple type. If this is not the case, or you want to show the
-+# methods anyway, you should set this option to NO.
--IDL_PROPERTY_SUPPORT   = YES
-+IDL_PROPERTY_SUPPORT   = NO
--# If member grouping is used in the documentation and the
--# DISTRIBUTE_GROUP_DOC tag is set to YES, then doxygen will reuse the
--# documentation of the first member in the group (if any) for the
--# other members of the group. By default all members of a group must
--# be documented explicitly.
-+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-+# tag is set to YES, then doxygen will reuse the documentation of the first
-+# member in the group (if any) for the other members of the group. By default
-+# all members of a group must be documented explicitly.
- DISTRIBUTE_GROUP_DOC   = YES
--# Set the SUBGROUPING tag to YES (the default) to allow class member
--# groups of the same type (for instance a group of public functions)
--# to be put as a subgroup of that type (e.g. under the Public
--# Functions section). Set it to NO to prevent
--# subgrouping. Alternatively, this can be done per class using the
--# \nosubgrouping command.
-+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-+# the same type (for instance a group of public functions) to be put as a
-+# subgroup of that type (e.g. under the Public Functions section). Set it to
-+# NO to prevent subgrouping. Alternatively, this can be done per class using
-+# the \nosubgrouping command.
- SUBGROUPING            = YES
--# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union,
--# or enum is documented as struct, union, or enum with the name of the
--# typedef. So typedef struct TypeS {} TypeT, will appear in the
--# documentation as a struct with name TypeT. When disabled the typedef
--# will appear as a member of a file, namespace, or class. And the
--# struct will be named TypeS. This can typically be useful for C code
--# in case the coding convention dictates that all compound types are
--# typedef'ed and only the typedef is referenced, never the tag name.
-+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-+# is documented as struct, union, or enum with the name of the typedef. So
-+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-+# with name TypeT. When disabled the typedef will appear as a member of a file,
-+# namespace, or class. And the struct will be named TypeS. This can typically
-+# be useful for C code in case the coding convention dictates that all compound
-+# types are typedef'ed and only the typedef is referenced, never the tag name.
- TYPEDEF_HIDES_STRUCT   = NO
--# The SYMBOL_CACHE_SIZE determines the size of the internal cache use
--# to determine which symbols to keep in memory and which to flush to
--# disk.  When the cache is full, less often used symbols will be
--# written to disk.  For small to medium size projects (<1000 input
--# files) the default value is probably good enough. For larger
--# projects a too small cache size can cause doxygen to be busy
--# swapping symbols to and from disk most of the time causing a
--# significant performance penality.  If the system has enough physical
--# memory increasing the cache will improve the performance by keeping
--# more symbols in memory. Note that the value works on a logarithmic
--# scale so increasing the size by one will rougly double the memory
--# usage. The cache size is given by this formula:
-+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-+# determine which symbols to keep in memory and which to flush to disk.
-+# When the cache is full, less often used symbols will be written to disk.
-+# For small to medium size projects (<1000 input files) the default value is
-+# probably good enough. For larger projects a too small cache size can cause
-+# doxygen to be busy swapping symbols to and from disk most of the time
-+# causing a significant performance penality.
-+# If the system has enough physical memory increasing the cache will improve the
-+# performance by keeping more symbols in memory. Note that the value works on
-+# a logarithmic scale so increasing the size by one will rougly double the
-+# memory usage. The cache size is given by this formula:
- # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
- # corresponding to a cache size of 2^16 = 65536 symbols
-@@ -396,6 +388,12 @@
- SHOW_INCLUDE_FILES     = NO
-+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-+# will list include files with double quotes in the documentation
-+# rather than with sharp brackets.
-+
-+FORCE_LOCAL_INCLUDES   = NO
-+
- # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
- # is inserted in the documentation for inline members.
-@@ -415,13 +413,13 @@
- SORT_BRIEF_DOCS        = YES
--# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will
--# sort the (brief and detailed) documentation of class members so that
--# constructors and destructors are listed first. If set to NO (the
--# default) the constructors will appear in the respective orders
--# defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be
--# ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored
--# for detailed docs if SORT_MEMBER_DOCS is set to NO.
-+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-+# will sort the (brief and detailed) documentation of class members so that
-+# constructors and destructors are listed first. If set to NO (the default)
-+# the constructors will appear in the respective orders defined by
-+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
- SORT_MEMBERS_CTORS_1ST = YES
-@@ -505,24 +503,22 @@
- SHOW_NAMESPACES        = YES
--# The FILE_VERSION_FILTER tag can be used to specify a program or
--# script that doxygen should invoke to get the current version for
--# each file (typically from the version control system). Doxygen will
--# invoke the program by executing (via popen()) the command <command>
--# <input-file>, where <command> is the value of the
--# FILE_VERSION_FILTER tag, and <input-file> is the name of an input
--# file provided by doxygen. Whatever the program writes to standard
--# output is used as the file version. See the manual for examples.
-+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-+# doxygen should invoke to get the current version for each file (typically from
-+# the version control system). Doxygen will invoke the program by executing (via
-+# popen()) the command <command> <input-file>, where <command> is the value of
-+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-+# provided by doxygen. Whatever the program writes to standard output
-+# is used as the file version. See the manual for examples.
- FILE_VERSION_FILTER    =
--# The LAYOUT_FILE tag can be used to specify a layout file which will
--# be parsed by doxygen. The layout file controls the global structure
--# of the generated output files in an output format independent
--# way. The create the layout file that represents doxygen's defaults,
--# run doxygen with the -l option. You can optionally specify a file
--# name after the option, if omitted DoxygenLayout.xml will be used as
--# the name of the layout file.
-+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-+# by doxygen. The layout file controls the global structure of the generated
-+# output files in an output format independent way. The create the layout file
-+# that represents doxygen's defaults, run doxygen with the -l option.
-+# You can optionally specify a file name after the option, if omitted
-+# DoxygenLayout.xml will be used as the name of the layout file.
- LAYOUT_FILE            =
-@@ -581,162 +577,161 @@
- # configuration options related to the input files
- #---------------------------------------------------------------------------
--# The INPUT tag can be used to specify the files and/or directories
--# that contain documented source files. You may enter file names like
--# "myfile.cpp" or directories like "/usr/src/myproject". Separate the
--# files or directories with spaces.
-+# The INPUT tag can be used to specify the files and/or directories that contain
-+# documented source files. You may enter file names like "myfile.cpp" or
-+# directories like "/usr/src/myproject". Separate the files or directories
-+# with spaces.
- INPUT                  = @srcdir@/doc/doxygen/doxygroups.cc \
--                       @srcdir@/libsupc++/cxxabi.h \
--                       @srcdir@/libsupc++/cxxabi-forced.h \
--                       @srcdir@/libsupc++/exception \
--                       @srcdir@/libsupc++/exception_ptr.h \
--                       @srcdir@/libsupc++/initializer_list \
--                       @srcdir@/libsupc++/nested_exception.h \
--                       @srcdir@/libsupc++/new \
--                       @srcdir@/libsupc++/typeinfo \
--                       include/algorithm \
--                       include/array \
--                       include/atomic \
--                       include/bitset \
--                       include/chrono \
--                       include/complex \
--                       include/condition_variable \
--                       include/deque \
--                       include/fstream \
--                       include/functional \
--                       include/future \
--                       include/iomanip \
--                       include/ios \
--                       include/iosfwd \
--                       include/iostream \
--                       include/istream \
--                       include/iterator \
--                       include/limits \
--                       include/list \
--                       include/locale \
--                       include/map \
--                       include/memory \
--                       include/mutex \
--                       include/numeric \
--                       include/ostream \
--                       include/queue \
--                       include/random \
--                       include/ratio \
--                       include/regex \
--                       include/set \
--                       include/sstream \
--                       include/stack \
--                       include/stdexcept \
--                       include/streambuf \
--                       include/string \
--                       include/system_error \
--                       include/thread \
--                       include/tuple \
--                       include/type_traits \
--                       include/unordered_map \
--                       include/unordered_set \
--                       include/utility \
--                       include/valarray \
--                       include/vector \
--                       include/cassert \
--                       include/ccomplex \
--                       include/cctype \
--                       include/cerrno \
--                       include/cfenv \
--                       include/cfloat \
--                       include/cinttypes \
--                       include/ciso646 \
--                       include/climits \
--                       include/clocale \
--                       include/cmath \
--                       include/csetjmp \
--                       include/csignal \
--                       include/cstdarg \
--                       include/cstdbool \
--                       include/cstddef \
--                       include/cstdint \
--                       include/cstdio \
--                       include/cstdlib \
--                       include/cstring \
--                       include/ctgmath \
--                       include/ctime \
--                       include/cwchar \
--                       include/cwctype \
--                       include/backward/hash_map \
--                       include/backward/hash_set \
--                       include/backward/strstream \
--                       include/debug/bitset \
--                       include/debug/deque \
--                       include/debug/list \
--                       include/debug/map \
--                       include/debug/set \
--                       include/debug/string \
--                       include/debug/unordered_map \
--                       include/debug/unordered_set \
--                       include/debug/vector \
--                       include/profile/bitset \
--                       include/profile/deque \
--                       include/profile/list \
--                       include/profile/map \
--                       include/profile/set \
--                       include/profile/unordered_map \
--                       include/profile/unordered_set \
--                       include/profile/vector \
--                       include/ext/algorithm \
--                       include/ext/functional \
--                       include/ext/iterator \
--                       include/ext/memory \
--                       include/ext/numeric \
--                       include/ext/rb_tree \
--                       include/ext/rope \
--                       include/ext/slist \
--                       include/parallel/algorithm \
--                       include/parallel/numeric \
--                       include/tr1/ccomplex \
--                       include/tr1/cctype \
--                       include/tr1/cfenv \
--                       include/tr1/cfloat \
--                       include/tr1/cinttypes \
--                       include/tr1/climits \
--                       include/tr1/cmath \
--                       include/tr1/complex \
--                       include/tr1/cstdarg \
--                       include/tr1/cstdbool \
--                       include/tr1/cstdint \
--                       include/tr1/cstdio \
--                       include/tr1/cstdlib \
--                       include/tr1/ctgmath \
--                       include/tr1/ctime \
--                       include/tr1/cwchar \
--                       include/tr1/cwctype \
--                       include/tr1_impl/array \
--                       include/tr1_impl/cctype \
--                       include/tr1_impl/cfenv \
--                       include/tr1_impl/cinttypes \
--                       include/tr1_impl/cmath \
--                       include/tr1_impl/complex \
--                       include/tr1_impl/cstdint \
--                       include/tr1_impl/cstdio \
--                       include/tr1_impl/cstdlib \
--                       include/tr1_impl/cwchar \
--                       include/tr1_impl/cwctype \
--                       include/tr1_impl/regex \
--                       include/tr1_impl/type_traits \
--                       include/tr1_impl/utility \
--                       include/tr1_impl \
--                       include/decimal/decimal \
--                       include/ \
--                       include/@host_alias@/bits \
--                       include/backward \
--                       include/bits \
--                       include/debug \
--                       include/parallel \
--                       include/profile \
--                       include/profile/impl \
--                       include/ext \
--                       include/ext/pb_ds \
--                       include/ext/pb_ds/detail
-+                         @srcdir@/libsupc++/cxxabi.h \
-+                         @srcdir@/libsupc++/cxxabi-forced.h \
-+                         @srcdir@/libsupc++/exception \
-+                         @srcdir@/libsupc++/exception_ptr.h \
-+                         @srcdir@/libsupc++/initializer_list \
-+                         @srcdir@/libsupc++/nested_exception.h \
-+                         @srcdir@/libsupc++/new \
-+                         @srcdir@/libsupc++/typeinfo \
-+                         include/algorithm \
-+                         include/array \
-+                         include/atomic \
-+                         include/bitset \
-+                         include/chrono \
-+                         include/complex \
-+                         include/condition_variable \
-+                         include/deque \
-+                         include/fstream \
-+                         include/functional \
-+                         include/future \
-+                         include/iomanip \
-+                         include/ios \
-+                         include/iosfwd \
-+                         include/iostream \
-+                         include/istream \
-+                         include/iterator \
-+                         include/limits \
-+                         include/list \
-+                         include/locale \
-+                         include/map \
-+                         include/memory \
-+                         include/mutex \
-+                         include/numeric \
-+                         include/ostream \
-+                         include/queue \
-+                         include/random \
-+                         include/ratio \
-+                         include/regex \
-+                         include/set \
-+                         include/sstream \
-+                         include/stack \
-+                         include/stdexcept \
-+                         include/streambuf \
-+                         include/string \
-+                         include/system_error \
-+                         include/thread \
-+                         include/tuple \
-+                         include/type_traits \
-+                         include/unordered_map \
-+                         include/unordered_set \
-+                         include/utility \
-+                         include/valarray \
-+                         include/vector \
-+                         include/cassert \
-+                         include/ccomplex \
-+                         include/cctype \
-+                         include/cerrno \
-+                         include/cfenv \
-+                         include/cfloat \
-+                         include/cinttypes \
-+                         include/ciso646 \
-+                         include/climits \
-+                         include/clocale \
-+                         include/cmath \
-+                         include/csetjmp \
-+                         include/csignal \
-+                         include/cstdarg \
-+                         include/cstdbool \
-+                         include/cstddef \
-+                         include/cstdint \
-+                         include/cstdio \
-+                         include/cstdlib \
-+                         include/cstring \
-+                         include/ctgmath \
-+                         include/ctime \
-+                         include/cwchar \
-+                         include/cwctype \
-+                         include/backward/hash_map \
-+                         include/backward/hash_set \
-+                         include/backward/strstream \
-+                         include/debug/bitset \
-+                         include/debug/deque \
-+                         include/debug/list \
-+                         include/debug/map \
-+                         include/debug/set \
-+                         include/debug/string \
-+                         include/debug/unordered_map \
-+                         include/debug/unordered_set \
-+                         include/debug/vector \
-+                         include/profile/bitset \
-+                         include/profile/deque \
-+                         include/profile/list \
-+                         include/profile/map \
-+                         include/profile/set \
-+                         include/profile/unordered_map \
-+                         include/profile/unordered_set \
-+                         include/profile/vector \
-+                         include/ext/algorithm \
-+                         include/ext/functional \
-+                         include/ext/iterator \
-+                         include/ext/memory \
-+                         include/ext/numeric \
-+                         include/ext/rb_tree \
-+                         include/ext/rope \
-+                         include/ext/slist \
-+                         include/parallel/algorithm \
-+                         include/parallel/numeric \
-+                         include/tr1/ccomplex \
-+                         include/tr1/cctype \
-+                         include/tr1/cfenv \
-+                         include/tr1/cfloat \
-+                         include/tr1/cinttypes \
-+                         include/tr1/climits \
-+                         include/tr1/cmath \
-+                         include/tr1/complex \
-+                         include/tr1/cstdarg \
-+                         include/tr1/cstdbool \
-+                         include/tr1/cstdint \
-+                         include/tr1/cstdio \
-+                         include/tr1/cstdlib \
-+                         include/tr1/ctgmath \
-+                         include/tr1/ctime \
-+                         include/tr1/cwchar \
-+                         include/tr1/cwctype \
-+                         include/tr1_impl/array \
-+                         include/tr1_impl/cctype \
-+                         include/tr1_impl/cfenv \
-+                         include/tr1_impl/cinttypes \
-+                         include/tr1_impl/cmath \
-+                         include/tr1_impl/complex \
-+                         include/tr1_impl/cstdint \
-+                         include/tr1_impl/cstdio \
-+                         include/tr1_impl/cstdlib \
-+                         include/tr1_impl/cwchar \
-+                         include/tr1_impl/cwctype \
-+                         include/tr1_impl/type_traits \
-+                         include/tr1_impl/utility \
-+                         include/tr1_impl \
-+                         include/decimal/decimal \
-+                         include/ \
-+                         include/@host_alias@/bits \
-+                         include/backward \
-+                         include/bits \
-+                         include/debug \
-+                         include/parallel \
-+                         include/profile \
-+                         include/profile/impl \
-+                         include/ext \
-+                         include/ext/pb_ds \
-+                         include/ext/pb_ds/detail
- # This tag can be used to specify the character encoding of the source files
- # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-@@ -754,8 +749,8 @@
- # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
- FILE_PATTERNS          = *.h \
--                       *.hpp \
--                       *.tcc
-+                         *.hpp \
-+                         *.tcc
- # The RECURSIVE tag can be used to turn specify whether or not subdirectories
- # should be searched for input files as well. Possible values are YES and NO.
-@@ -782,10 +777,10 @@
- # for example use the pattern */test/*
- EXCLUDE_PATTERNS       = stamp-* \
--                       *stdc++.h* \
--                       *stdtr1c++.h* \
--                       *extc++.h* \
--                       */.svn/*
-+                         *stdc++.h* \
-+                         *stdtr1c++.h* \
-+                         *extc++.h* \
-+                         */.svn/*
- # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
- # (namespaces, classes, functions, etc.) that should be excluded from the
-@@ -961,11 +956,6 @@
- HTML_FOOTER            =
--# If the HTML_TIMESTAMP tag is set to YES then the generated HTML
--# documentation will contain the timesstamp.
+-      break; /* POST_INC */
+-      
+-    } /* switch CODE (addr) */
+-      
+-  return "";
+-}
 -
--HTML_TIMESTAMP         = NO
 -
- # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
- # style sheet that is used by each HTML page. It can be used to
- # fine-tune the look of the HTML output. If the tag is left blank doxygen
-@@ -975,6 +965,37 @@
- HTML_STYLESHEET        =
-+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-+# Doxygen will adjust the colors in the stylesheet and background images
-+# according to this color. Hue is specified as an angle on a colorwheel,
-+# see http://en.wikipedia.org/wiki/Hue for more information.
-+# For instance the value 0 represents red, 60 is yellow, 120 is green,
-+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-+# The allowed range is 0 to 359.
-+
-+HTML_COLORSTYLE_HUE    = 220
-+
-+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-+# the colors in the HTML output. For a value of 0 the output will use
-+# grayscales only. A value of 255 will produce the most vivid colors.
-+
-+HTML_COLORSTYLE_SAT    = 100
-+
-+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-+# the luminance component of the colors in the HTML output. Values below
-+# 100 gradually make the output lighter, whereas values above 100 make
-+# the output darker. The value divided by 100 is the actual gamma applied,
-+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-+# and 100 does not change the gamma.
-+
-+HTML_COLORSTYLE_GAMMA  = 80
-+
-+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-+# page will contain the date and time when the page was generated. Setting
-+# this to NO can help when comparing the output of multiple runs.
-+
-+HTML_TIMESTAMP         = NO
-+
- # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
- # files or namespaces will be aligned in HTML using tables. If set to
- # NO a bullet list will be used.
-@@ -991,14 +1012,14 @@
- # If the GENERATE_DOCSET tag is set to YES, additional index files
- # will be generated that can be used as input for Apple's Xcode 3
--# integrated development environment, introduced with OSX 10.5
--# (Leopard).  To create a documentation set, doxygen will generate a
--# Makefile in the HTML output directory. Running make will produce the
--# docset in that directory and running "make install" will install the
--# docset in ~/Library/Developer/Shared/Documentation/DocSets so that
--# Xcode will find it at startup.  See
--# http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for
--# more information.
-+# integrated development environment, introduced with OSX 10.5 (Leopard).
-+# To create a documentation set, doxygen will generate a Makefile in the
-+# HTML output directory. Running make will produce the docset in that
-+# directory and running "make install" will install the docset in
-+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-+# it at startup.
-+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-+# for more information.
- GENERATE_DOCSET        = NO
-@@ -1014,8 +1035,19 @@
- # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
- # will append .docset to the name.
--DOCSET_BUNDLE_ID       = org.doxygen.Project
-+DOCSET_BUNDLE_ID       = org.gnu.libstdc++
-+# When GENERATE_PUBLISHER_ID tag specifies a string that should
-+# uniquely identify the documentation publisher. This should be a
-+# reverse domain-name style string,
-+# e.g. com.mycompany.MyDocSet.documentation.
-+
-+DOCSET_PUBLISHER_ID    = org.fsf
-+
-+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-+
-+DOCSET_PUBLISHER_NAME  = libstdc++
-+
- # If the GENERATE_HTMLHELP tag is set to YES, additional index files
- # will be generated that can be used as input for tools like the
- # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-@@ -1061,10 +1093,9 @@
- TOC_EXPAND             = NO
- # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
--# QHP_VIRTUAL_FOLDER are set, an additional index file will be
--# generated that can be used as input for Qt's qhelpgenerator to
--# generate a Qt Compressed Help (.qch) of the generated HTML
--# documentation.
-+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-+# that can be used as input for Qt's qhelpgenerator to generate a
-+# Qt Compressed Help (.qch) of the generated HTML documentation.
- GENERATE_QHP           = NO
-@@ -1086,23 +1117,24 @@
- QHP_VIRTUAL_FOLDER     = doc
--# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom
--# filter to add.  For more information please see
-+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-+# add. For more information please see
- # http://doc.trolltech.com/qthelpproject.html#custom-filters
- QHP_CUST_FILTER_NAME   =
--# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of
--# the custom filter to add.For more information please see <a
--# href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt
--# Help Project / Custom Filters</a>.
-+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-+# custom filter to add. For more information please see
-+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-+# Qt Help Project / Custom Filters</a>.
- QHP_CUST_FILTER_ATTRS  =
--# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes
--# this project's filter section matches.  <a
--# href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt
--# Help Project / Filter Attributes</a>.
-+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-+# project's
-+# filter section matches.
-+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-+# Qt Help Project / Filter Attributes</a>.
- QHP_SECT_FILTER_ATTRS  =
-@@ -1113,6 +1145,23 @@
- QHG_LOCATION           =
-+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-+#  will be generated, which together with the HTML files, form an Eclipse help
-+# plugin. To install this plugin and make it available under the help contents
-+# menu in Eclipse, the contents of the directory containing the HTML and XML
-+# files needs to be copied into the plugins directory of eclipse. The name of
-+# the directory within the plugins directory should be the same as
-+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-+# the help appears.
-+
-+GENERATE_ECLIPSEHELP   = NO
-+
-+# A unique identifier for the eclipse help plugin. When installing the plugin
-+# the directory name containing the HTML and XML files should also have
-+# this name.
-+
-+ECLIPSE_DOC_ID         = org.doxygen.Project
-+
- # The DISABLE_INDEX tag can be used to turn on/off the condensed index at
- # top of each HTML page. The value NO (the default) enables the index and
- # the value YES disables it.
-@@ -1145,6 +1194,11 @@
- TREEVIEW_WIDTH         = 250
-+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-+# links to external symbols imported via tag files in a separate window.
-+
-+EXT_LINKS_IN_WINDOW    = NO
-+
- # Use this tag to change the font size of Latex formulas included
- # as images in the HTML documentation. The default is 10. Note that
- # when you change the font size after a successful doxygen run you need
-@@ -1153,15 +1207,34 @@
- FORMULA_FONTSIZE       = 10
--# When the SEARCHENGINE tag is enable doxygen will generate a search
--# box for the HTML output. The underlying search engine uses
--# javascript and DHTML and should work on any modern browser. Note
--# that when using HTML help (GENERATE_HTMLHELP) or Qt help
--# (GENERATE_QHP) there is already a search function so this one should
--# typically be disabled.
-+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-+# generated for formulas are transparent PNGs. Transparent PNGs are
-+# not supported properly for IE 6.0, but are supported on all modern browsers.
-+# Note that when changing this option you need to delete any form_*.png files
-+# in the HTML output before the changes have effect.
-+FORMULA_TRANSPARENT    = YES
-+
-+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-+# for the HTML output. The underlying search engine uses javascript
-+# and DHTML and should work on any modern browser. Note that when using
-+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-+# (GENERATE_DOCSET) there is already a search function so this one should
-+# typically be disabled. For large projects the javascript based search engine
-+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-+
- SEARCHENGINE           = NO
-+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-+# implemented using a PHP enabled web server instead of at the web client
-+# using Javascript. Doxygen will generate the search PHP script and index
-+# file to put on the web server. The advantage of the server
-+# based approach is that it scales better to large projects and allows
-+# full text search. The disadvances is that it is more difficult to setup
-+# and does not have live searching capabilities.
-+
-+SERVER_BASED_SEARCH    = NO
-+
- #---------------------------------------------------------------------------
- # configuration options related to the LaTeX output
- #---------------------------------------------------------------------------
-@@ -1179,6 +1252,9 @@
- # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
- # invoked. If left blank `latex' will be used as the default command name.
-+# Note that when enabling USE_PDFLATEX this option is only used for
-+# generating bitmaps for formulas in the HTML output, but not in the
-+# Makefile that is written to the output directory.
- LATEX_CMD_NAME         = latex
-@@ -1225,11 +1301,10 @@
- USE_PDFLATEX           = YES
--# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the
--# \\batchmode.  command to the generated LaTeX files. This will
--# instruct LaTeX to keep running if errors occur, instead of asking
--# the user for help.  This option is also used when generating
--# formulas in HTML.
-+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-+# command to the generated LaTeX files. This will instruct LaTeX to keep
-+# running if errors occur, instead of asking the user for help.
-+# This option is also used when generating formulas in HTML.
- LATEX_BATCHMODE        = YES
-@@ -1239,10 +1314,10 @@
- LATEX_HIDE_INDICES     = YES
--# If LATEX_SOURCE_CODE is set to YES then doxygen will include source
--# code with syntax highlighting in the LaTeX output. Note that which
--# sources are shown also depends on other settings such as
--# SOURCE_BROWSER.
-+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-+# source code with syntax highlighting in the LaTeX output.
-+# Note that which sources are shown also depends on other settings
-+# such as SOURCE_BROWSER.
- LATEX_SOURCE_CODE      = NO
-@@ -1448,37 +1523,37 @@
- # instead of the = operator.
- PREDEFINED             = __cplusplus \
--                       __GTHREADS \
--                       _GLIBCXX_HAS_GTHREADS \
--                       __GXX_EXPERIMENTAL_CXX0X__ \
--                       _GLIBCXX_INCLUDE_AS_CXX0X \
--                       "_GLIBCXX_STD_P= " \
--                       "_GLIBCXX_STD_D= " \
--                       _GLIBCXX_STD=std \
--                       "_GLIBCXX_TR1= " \
--                       "_GLIBCXX_BEGIN_NAMESPACE_TR1= " \
--                       "_GLIBCXX_END_NAMESPACE_TR1= " \
--                       "_GLIBCXX_BEGIN_NAMESPACE(name)=namespace name {  " \
--                       "_GLIBCXX_BEGIN_NESTED_NAMESPACE(name, unused)=namespace name {  " \
--                       _GLIBCXX_END_NAMESPACE=} \
--                       _GLIBCXX_END_NESTED_NAMESPACE=} \
--                       "_GLIBCXX_TEMPLATE_ARGS=...  " \
--                       _GLIBCXX_DEPRECATED \
--                       _GLIBCXX_USE_WCHAR_T \
--                       _GLIBCXX_USE_LONG_LONG \
--                       _GLIBCXX_USE_C99_STDINT_TR1 \
--                       _GLIBCXX_ATOMIC_BUILTINS_1 \
--                       _GLIBCXX_ATOMIC_BUILTINS_2 \
--                       _GLIBCXX_ATOMIC_BUILTINS_4 \
--                       _GLIBCXX_ATOMIC_BUILTINS_8 \
--                       _GLIBCXX_USE_SCHED_YIELD \
--                       _GLIBCXX_USE_NANOSLEEP \
--                       __GXX_RTTI \
--                       __glibcxx_function_requires=// \
--                       __glibcxx_class_requires=// \
--                       __glibcxx_class_requires2=// \
--                       __glibcxx_class_requires3=// \
--                       __glibcxx_class_requires4=//
-+                         __GTHREADS \
-+                         _GLIBCXX_HAS_GTHREADS \
-+                         __GXX_EXPERIMENTAL_CXX0X__ \
-+                         _GLIBCXX_INCLUDE_AS_CXX0X \
-+                         "_GLIBCXX_STD_P= " \
-+                         "_GLIBCXX_STD_D= " \
-+                         _GLIBCXX_STD=std \
-+                         "_GLIBCXX_TR1= " \
-+                         "_GLIBCXX_BEGIN_NAMESPACE_TR1= " \
-+                         "_GLIBCXX_END_NAMESPACE_TR1= " \
-+                         "_GLIBCXX_BEGIN_NAMESPACE(name)=namespace name {  " \
-+                         "_GLIBCXX_BEGIN_NESTED_NAMESPACE(name, unused)=namespace name {  " \
-+                         _GLIBCXX_END_NAMESPACE=} \
-+                         _GLIBCXX_END_NESTED_NAMESPACE=} \
-+                         "_GLIBCXX_TEMPLATE_ARGS=...  " \
-+                         _GLIBCXX_DEPRECATED \
-+                         _GLIBCXX_USE_WCHAR_T \
-+                         _GLIBCXX_USE_LONG_LONG \
-+                         _GLIBCXX_USE_C99_STDINT_TR1 \
-+                         _GLIBCXX_ATOMIC_BUILTINS_1 \
-+                         _GLIBCXX_ATOMIC_BUILTINS_2 \
-+                         _GLIBCXX_ATOMIC_BUILTINS_4 \
-+                         _GLIBCXX_ATOMIC_BUILTINS_8 \
-+                         _GLIBCXX_USE_SCHED_YIELD \
-+                         _GLIBCXX_USE_NANOSLEEP \
-+                         __GXX_RTTI \
-+                         __glibcxx_function_requires=// \
-+                         __glibcxx_class_requires=// \
-+                         __glibcxx_class_requires2=// \
-+                         __glibcxx_class_requires3=// \
-+                         __glibcxx_class_requires4=//
- # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
- # this tag can be used to specify a list of macro names that should be expanded.
-@@ -1575,6 +1650,14 @@
- HAVE_DOT               = YES
-+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-+# allowed to run in parallel. When set to 0 (the default) doxygen will
-+# base this on the number of processors available in the system. You can set it
-+# explicitly to a value larger than 0 to get control over the balance
-+# between CPU load and processing speed.
-+
-+DOT_NUM_THREADS        = 0
-+
- # By default doxygen will write a font called FreeSans.ttf to the
- # output directory and reference it in all dot files that doxygen
- # generates. This font does not include all possible unicode
-@@ -1590,7 +1673,7 @@
- # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
- # The default size is 10pt.
--DOT_FONTSIZE           = 10
-+DOT_FONTSIZE           = 9
- # By default doxygen will tell dot to use the output directory to look for the
- # FreeSans.ttf font (which doxygen will put there itself). If you specify a
-Index: libstdc++-v3/doc/doxygen/doxygroups.cc
-===================================================================
---- libstdc++-v3/doc/doxygen/doxygroups.cc     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/doc/doxygen/doxygroups.cc     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,5 +1,6 @@
- /*
--   Copyright (C) 2001, 2002, 2005, 2008, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010
-+   Free Software Foundation, Inc.
-    See license.html for license.
-    This just provides documentation for stuff that doesn't need to be in the
-@@ -47,7 +48,7 @@
-  * Components generally useful that are not part of any standard.
-  */
--/** @defgroup SGIextensions SGI STL extensions
-+/** @defgroup SGIextensions SGI
-  * @ingroup extensions
- Because libstdc++ based its implementation of the STL subsections of
- the library on the SGI 3.3 implementation, we inherited their extensions
-@@ -115,7 +116,7 @@
- <a href="tables.html">tables</a>.
- */
--/** @defgroup associative_containers Associative Containers
-+/** @defgroup associative_containers Associative
-  * @ingroup containers
- Associative containers allow fast retrieval of data based on keys.
-@@ -126,7 +127,7 @@
- <a href="tables.html">tables</a>.
- */
--/** @defgroup unordered_associative_containers Unordered Associative Containers
-+/** @defgroup unordered_associative_containers Unordered Associative
-  * @ingroup containers
- Unordered associative containers allow fast retrieval of data based on keys.
-Index: libstdc++-v3/include/bits/stl_iterator_base_types.h
-===================================================================
---- libstdc++-v3/include/bits/stl_iterator_base_types.h        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/stl_iterator_base_types.h        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -69,6 +69,12 @@
-   /**
-    *  @defgroup iterators Iterators
-+   *  Abstractions for uniform iterating through various underlying types.
-+  */
-+  //@{ 
-+
-+  /**
-+   *  @defgroup iterator_tags Iterator Tags
-    *  These are empty types, used to distinguish different iterators.  The
-    *  distinction is not made by what they contain, but simply by what they
-    *  are.  Different underlying algorithms can then be used based on the
-@@ -91,8 +97,8 @@
-   /// Random-access iterators support a superset of bidirectional
-   /// iterator operations.
-   struct random_access_iterator_tag : public bidirectional_iterator_tag { };
-+  //@}
+ /* If PLEN == NULL: Ouput instructions to load a value from a memory location
+    OP[1] in AS1 to register OP[0].
+    If PLEN != 0 set *PLEN to the length in words of the instruction sequence.
+@@ -2607,13 +2509,11 @@
+ static const char*
+ avr_out_lpm (rtx insn, rtx *op, int *plen)
+ {
+-  rtx xop[6];
++  rtx xop[3];
+   rtx dest = op[0];
+   rtx src = SET_SRC (single_set (insn));
+   rtx addr;
+   int n_bytes = GET_MODE_SIZE (GET_MODE (dest));
+-  int regno_dest;
+-  int segment;
+   RTX_CODE code;
+   addr_space_t as = MEM_ADDR_SPACE (src);
+@@ -2634,135 +2534,126 @@
+   gcc_assert (REG_P (dest));
+   gcc_assert (REG == code || POST_INC == code);
++  /* Only 1-byte moves from __flash are representes as open coded
++     mov insns.  All other loads from flash are not handled here but
++     by some UNSPEC instead, see respective FIXME in machine description.  */
++  
++  gcc_assert (as == ADDR_SPACE_FLASH);
++  gcc_assert (n_bytes == 1);
++
+   xop[0] = dest;
+-  xop[1] = addr;
+-  xop[2] = lpm_addr_reg_rtx;
+-  xop[4] = xstring_empty;
+-  xop[5] = tmp_reg_rtx;
++  xop[1] = lpm_addr_reg_rtx;
++  xop[2] = lpm_reg_rtx;
+-  regno_dest = REGNO (dest);
 -
-   /**
-    *  @brief  Common %iterator class.
-    *
-Index: libstdc++-v3/include/bits/stl_heap.h
-===================================================================
---- libstdc++-v3/include/bits/stl_heap.h       (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/stl_heap.h       (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -62,7 +62,7 @@
- _GLIBCXX_BEGIN_NAMESPACE(std)
-   /**
--   * @defgroup heap_algorithms Heap Algorithms
-+   * @defgroup heap_algorithms Heap
-    * @ingroup sorting_algorithms
-    */
+-  segment = avr_addrspace[as].segment;
+-
+-  /* Set RAMPZ as needed.  */
+-
+-  if (segment)
++  switch (code)
+     {
+-      xop[4] = GEN_INT (segment);
+-      
+-      if (xop[3] = avr_find_unused_d_reg (insn, lpm_addr_reg_rtx),
+-          xop[3])
+-        {
+-          avr_asm_len ("ldi %3,%4" CR_TAB
+-                       "out __RAMPZ__,%3", xop, plen, 2);
+-        }
+-      else if (segment == 1)
+-        {
+-          avr_asm_len ("clr %5" CR_TAB
+-                       "inc %5" CR_TAB
+-                       "out __RAMPZ__,%5", xop, plen, 3);
+-        }
+-      else
+-        {
+-          avr_asm_len ("mov %5,%2"         CR_TAB
+-                       "ldi %2,%4"         CR_TAB
+-                       "out __RAMPZ__,%2"  CR_TAB
+-                       "mov %2,%5", xop, plen, 4);
+-        }
+-      
+-      xop[4] = xstring_e;
+-
+-      if (!AVR_HAVE_ELPMX)
+-        return avr_out_lpm_no_lpmx (insn, xop, plen);
+-    }
+-  else if (!AVR_HAVE_LPMX)
+-    {
+-      return avr_out_lpm_no_lpmx (insn, xop, plen);
+-    }
+-
+-  /* We have [E]LPMX: Output reading from Flash the comfortable way.  */
+-
+-  switch (GET_CODE (addr))
+-    {
+     default:
+       gcc_unreachable();
+     case REG:
+       gcc_assert (REG_Z == REGNO (addr));
++      
++      return AVR_HAVE_LPMX
++        ? avr_asm_len ("lpm %0,%a1", xop, plen, 1)
++        : avr_asm_len ("lpm" CR_TAB
++                       "mov %0,%2", xop, plen, 2);
++      
++    case POST_INC:
++      
++      gcc_assert (REG_Z == REGNO (XEXP (addr, 0)));
+-      switch (n_bytes)
+-        {
+-        default:
+-          gcc_unreachable();
++      return AVR_HAVE_LPMX
++        ? avr_asm_len ("lpm %0,%a1+", xop, plen, 1)
++        : avr_asm_len ("lpm"        CR_TAB
++                       "adiw %1, 1" CR_TAB
++                       "mov %0,%2", xop, plen, 3);
++    }
  
-Index: libstdc++-v3/include/bits/forward_list.h
-===================================================================
---- libstdc++-v3/include/bits/forward_list.h   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/forward_list.h   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -461,7 +461,9 @@
-        *  constructed elements.
-        */
-       explicit
--      forward_list(size_type __n);
-+      forward_list(size_type __n)
-+      : _Base()
-+      { _M_default_initialize(__n); }
+-        case 1:
+-          return avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
++  return "";
++}
  
-       /**
-        *  @brief  Creates a %forward_list with copies of an exemplar element.
-@@ -1207,6 +1209,14 @@
-       // Called by splice_after and insert_after.
-       iterator
-       _M_splice_after(const_iterator __pos, forward_list&& __list);
-+
-+      // Called by forward_list(n).
-+      void
-+      _M_default_initialize(size_type __n);
-+
-+      // Called by resize(sz).
-+      void
-+      _M_default_insert_after(const_iterator __pos, size_type __n);
-     };
+-        case 2:
+-          if (REGNO (dest) == REG_Z)
+-            return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
+-                                "%4lpm %B0,%a2" CR_TAB
+-                                "mov %A0,%5", xop, plen, 3);
+-          else
+-            {
+-              avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
+-                           "%4lpm %B0,%a2", xop, plen, 2);
+-                
+-              if (!reg_unused_after (insn, addr))
+-                avr_asm_len ("sbiw %2,1", xop, plen, 1);
+-            }
+-          
+-          break; /* 2 */
+-        case 3:
++/* If PLEN == NULL: Ouput instructions to load $0 with a value from
++   flash address $1:Z.  If $1 = 0 we can use LPM to read, otherwise
++   use ELPM.
++   If PLEN != 0 set *PLEN to the length in words of the instruction sequence.
++   Return "".  */
+-          avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
+-                       "%4lpm %B0,%a2+" CR_TAB
+-                       "%4lpm %C0,%a2", xop, plen, 3);
+-                
+-          if (!reg_unused_after (insn, addr))
+-            avr_asm_len ("sbiw %2,2", xop, plen, 1);
+-
+-          break; /* 3 */
++const char*
++avr_load_lpm (rtx insn, rtx *op, int *plen)
++{
++  rtx xop[4];
++  int n, n_bytes = GET_MODE_SIZE (GET_MODE (op[0]));
++  rtx xsegment = op[1];
++  bool clobber_z = PARALLEL == GET_CODE (PATTERN (insn));
++  bool r30_in_tmp = false;
++  
++  if (plen)
++    *plen = 0;
++  
++  xop[1] = lpm_addr_reg_rtx;
++  xop[2] = lpm_reg_rtx;
++  xop[3] = xstring_empty;
++  
++  /* Set RAMPZ as needed.  */
++  
++  if (REG_P (xsegment))
++    {
++      avr_asm_len ("out __RAMPZ__,%0", &xsegment, plen, 1);
++      xop[3] = xstring_e;
++    }
++  
++  /* Load the individual bytes from LSB to MSB.  */
++  
++  for (n = 0; n < n_bytes; n++)
++    {
++      xop[0] = all_regs_rtx[REGNO (op[0]) + n];
+       
+-        case 4:
+-
+-          avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
+-                       "%4lpm %B0,%a2+", xop, plen, 2);
+-          
+-          if (REGNO (dest) == REG_Z - 2)
+-            return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
+-                                "%4lpm %C0,%a2"          CR_TAB
+-                                "mov %D0,%5", xop, plen, 3);
+-          else
++      if ((CONST_INT_P (xsegment) && AVR_HAVE_LPMX)
++          || (REG_P (xsegment) && AVR_HAVE_ELPMX))
++        {
++          if (n == n_bytes-1)
++            avr_asm_len ("%3lpm %0,%a1", xop, plen, 1);
++          else if (REGNO (xop[0]) == REG_Z)
+             {
+-              avr_asm_len ("%4lpm %C0,%a2+" CR_TAB
+-                           "%4lpm %D0,%a2", xop, plen, 2);
+-                
+-              if (!reg_unused_after (insn, addr))
+-                avr_asm_len ("sbiw %2,3", xop, plen, 1);
++              avr_asm_len ("%3lpm %2,%a1+", xop, plen, 1);
++              r30_in_tmp = true;
+             }
++          else
++            avr_asm_len ("%3lpm %0,%a1+", xop, plen, 1);
++        }
++      else
++        {
++          gcc_assert (clobber_z);
++          
++          avr_asm_len ("%3lpm" CR_TAB
++                       "mov %0,%2", xop, plen, 2);
+-          break; /* 4 */
+-        } /* n_bytes */
++          if (n != n_bytes-1)
++            avr_asm_len ("adiw %1,1", xop, plen, 1);
++        }
++    }
++  
++  if (r30_in_tmp)
++    avr_asm_len ("mov %1,%2", xop, plen, 1);
++  
++  if (!clobber_z
++      && n_bytes > 1
++      && !reg_unused_after (insn, lpm_addr_reg_rtx)
++      && !reg_overlap_mentioned_p (op[0], lpm_addr_reg_rtx))
++    {
++      xop[2] = GEN_INT (n_bytes-1);
++      avr_asm_len ("sbiw %1,%2", xop, plen, 1);
++    }
++  
++  if (REG_P (xsegment) && AVR_HAVE_RAMPD)
++    {
++      /* Reset RAMPZ to 0 so that EBI devices don't read garbage from RAM */
+       
+-      break; /* REG */
++      avr_asm_len ("out __RAMPZ__,__zero_reg__", xop, plen, 1);
++    }
  
-   /**
-Index: libstdc++-v3/include/bits/move.h
-===================================================================
---- libstdc++-v3/include/bits/move.h   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/move.h   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -81,7 +81,7 @@
-     move(_Tp&& __t)
-     { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
+-    case POST_INC:
+-
+-      gcc_assert (REG_Z == REGNO (XEXP (addr, 0))
+-                  && n_bytes <= 4);
+-
+-      avr_asm_len                    ("%4lpm %A0,%a2+", xop, plen, 1);
+-      if (n_bytes >= 2)  avr_asm_len ("%4lpm %B0,%a2+", xop, plen, 1);
+-      if (n_bytes >= 3)  avr_asm_len ("%4lpm %C0,%a2+", xop, plen, 1);
+-      if (n_bytes >= 4)  avr_asm_len ("%4lpm %D0,%a2+", xop, plen, 1);
+-
+-      break; /* POST_INC */
+-
+-    } /* switch CODE (addr) */
+-      
+   return "";
+ }
  
--  /// declval, defined in <type_traits>.
-+  /// declval, from type_traits.
+@@ -2782,8 +2673,9 @@
+   if (plen)
+     *plen = 0;
  
- _GLIBCXX_END_NAMESPACE
+-  avr_asm_len ("ld %3,%a2" CR_TAB
+-               "sbrs %1,7", xop, plen, 2);
++  avr_asm_len ("sbrc %1,7" CR_TAB
++               "ld %3,%a2" CR_TAB
++               "sbrs %1,7", xop, plen, 3);
  
-Index: libstdc++-v3/include/bits/stl_iterator.h
-===================================================================
---- libstdc++-v3/include/bits/stl_iterator.h   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/stl_iterator.h   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -416,14 +416,21 @@
-        *  the end, if you like).  Assigning a value to the %iterator will
-        *  always append the value to the end of the container.
-       */
-+#ifndef __GXX_EXPERIMENTAL_CXX0X__
-       back_insert_iterator&
-       operator=(typename _Container::const_reference __value)
-       {
-       container->push_back(__value);
-       return *this;
-       }
-+#else
-+      back_insert_iterator&
-+      operator=(const typename _Container::value_type& __value)
-+      {
-+      container->push_back(__value);
-+      return *this;
-+      }
+   avr_asm_len (AVR_HAVE_LPMX ? "lpm %3,%a2" : "lpm", xop, plen, 1);
  
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-       back_insert_iterator&
-       operator=(typename _Container::value_type&& __value)
-       {
-@@ -499,14 +506,21 @@
-        *  the front, if you like).  Assigning a value to the %iterator will
-        *  always prepend the value to the front of the container.
-       */
-+#ifndef __GXX_EXPERIMENTAL_CXX0X__
-       front_insert_iterator&
-       operator=(typename _Container::const_reference __value)
-       {
-       container->push_front(__value);
-       return *this;
-       }
-+#else
-+      front_insert_iterator&
-+      operator=(const typename _Container::value_type& __value)
-+      {
-+      container->push_front(__value);
-+      return *this;
-+      }
+@@ -2794,13 +2686,11 @@
+ }
  
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-       front_insert_iterator&
-       operator=(typename _Container::value_type&& __value)
-       {
-@@ -603,6 +617,7 @@
-        *     // vector v contains A, 1, 2, 3, and Z
-        *  @endcode
-       */
-+#ifndef __GXX_EXPERIMENTAL_CXX0X__
-       insert_iterator&
-       operator=(typename _Container::const_reference __value)
-       {
-@@ -610,8 +625,15 @@
-       ++iter;
-       return *this;
-       }
-+#else
-+      insert_iterator&
-+      operator=(const typename _Container::value_type& __value)
-+      {
-+      iter = container->insert(iter, __value);
-+      ++iter;
-+      return *this;
-+      }
  
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-       insert_iterator&
-       operator=(typename _Container::value_type&& __value)
-       {
-Index: libstdc++-v3/include/bits/forward_list.tcc
-===================================================================
---- libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -114,7 +114,7 @@
-     _M_fill_initialize(size_type __n, const value_type& __value)
-     {
-       _Node_base* __to = &this->_M_impl._M_head;
--      for (; __n > 0; --__n)
-+      for (; __n; --__n)
-         {
-           __to->_M_next = this->_M_create_node(__value);
-           __to = __to->_M_next;
-@@ -122,12 +122,12 @@
+-const char *
+-output_movqi (rtx insn, rtx operands[], int *l)
++const char*
++output_movqi (rtx insn, rtx operands[], int *real_l)
+ {
+-  int dummy;
+   rtx dest = operands[0];
+   rtx src = operands[1];
+-  int *real_l = l;
+   
+   if (avr_mem_flash_p (src)
+       || avr_mem_flash_p (dest))
+@@ -2808,10 +2698,8 @@
+       return avr_out_lpm (insn, operands, real_l);
      }
  
-   template<typename _Tp, typename _Alloc>
-+    void
-     forward_list<_Tp, _Alloc>::
--    forward_list(size_type __n)
--    : _Base()
-+    _M_default_initialize(size_type __n)
-     {
-       _Node_base* __to = &this->_M_impl._M_head;
--      for (; __n > 0; --__n)
-+      for (; __n; --__n)
-         {
-           __to->_M_next = this->_M_create_node();
-           __to = __to->_M_next;
-@@ -164,6 +164,24 @@
-   template<typename _Tp, typename _Alloc>
-     void
-     forward_list<_Tp, _Alloc>::
-+    _M_default_insert_after(const_iterator __pos, size_type __n)
-+    {
-+      const_iterator __saved_pos = __pos;
-+      __try
-+      {
-+        for (; __n; --__n)
-+          __pos = emplace_after(__pos);
-+      }
-+      __catch(...)
-+      {
-+        erase_after(__saved_pos, ++__pos);
-+        __throw_exception_again;
-+      }
-+    }
-+
-+  template<typename _Tp, typename _Alloc>
-+    void
-+    forward_list<_Tp, _Alloc>::
-     resize(size_type __sz)
+-  if (!l)
+-    l = &dummy;
+-
+-  *l = 1;
++  if (real_l)
++    *real_l = 1;
+   
+   if (register_operand (dest, QImode))
      {
-       iterator __k = before_begin();
-@@ -177,10 +195,7 @@
-       if (__len == __sz)
-         erase_after(__k, end());
-       else
--      {
--        forward_list __tmp(__sz - __len);
--        splice_after(__k, std::move(__tmp));
--      }
-+      _M_default_insert_after(__k, __sz - __len);
+@@ -2829,10 +2717,10 @@
+           output_reload_in_const (operands, NULL_RTX, real_l, false);
+           return "";
+         }
+-      else if (GET_CODE (src) == MEM)
++      else if (MEM_P (src))
+       return out_movqi_r_mr (insn, operands, real_l); /* mov r,m */
      }
+-  else if (GET_CODE (dest) == MEM)
++  else if (MEM_P (dest))
+     {
+       rtx xop[2];
+@@ -6533,6 +6421,7 @@
+     case ADJUST_LEN_MOV32: output_movsisf (insn, op, &len); break;
+     case ADJUST_LEN_MOVMEM: avr_out_movmem (insn, op, &len); break;
+     case ADJUST_LEN_XLOAD: avr_out_xload (insn, op, &len); break;
++    case ADJUST_LEN_LOAD_LPM: avr_load_lpm (insn, op, &len); break;
+     case ADJUST_LEN_TSTHI: avr_out_tsthi (insn, op, &len); break;
+     case ADJUST_LEN_TSTPSI: avr_out_tstpsi (insn, op, &len); break;
+@@ -8975,7 +8864,7 @@
+ /* Implement `MODE_CODE_BASE_REG_CLASS'.  */
+-reg_class_t
++enum reg_class
+ avr_mode_code_base_reg_class (enum machine_mode mode ATTRIBUTE_UNUSED,
+                               addr_space_t as, RTX_CODE outer_code,
+                               RTX_CODE index_code ATTRIBUTE_UNUSED)
+@@ -9568,7 +9457,8 @@
+ static bool
+ avr_reg_ok_for_pgm_addr (rtx reg, bool strict)
+ {
+-  gcc_assert (REG_P (reg));
++  if (!REG_P (reg))
++    return false;
  
-   template<typename _Tp, typename _Alloc>
-Index: libstdc++-v3/include/bits/algorithmfwd.h
-===================================================================
---- libstdc++-v3/include/bits/algorithmfwd.h   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/algorithmfwd.h   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -134,22 +134,22 @@
-    */
-   /**
--   * @defgroup mutating_algorithms Mutating Algorithms
-+   * @defgroup mutating_algorithms Mutating
-    * @ingroup algorithms
-    */
-   /**
--   * @defgroup non_mutating_algorithms Non-Mutating Algorithms
-+   * @defgroup non_mutating_algorithms Non-Mutating
-    * @ingroup algorithms
-    */
-   /**
--   * @defgroup sorting_algorithms Sorting Algorithms
-+   * @defgroup sorting_algorithms Sorting
-    * @ingroup algorithms
-    */
-   /**
--   * @defgroup set_algorithms Set Operation Algorithms
-+   * @defgroup set_algorithms Set Operation
-    * @ingroup sorting_algorithms
-    *
-    * These algorithms are common set operations performed on sequences
-@@ -158,7 +158,7 @@
-    */
-   /**
--   * @defgroup binary_search_algorithms Binary Search Algorithms
-+   * @defgroup binary_search_algorithms Binary Search
-    * @ingroup sorting_algorithms
-    *
-    * These algorithms are variations of a classic binary search, and
-Index: libstdc++-v3/include/bits/random.h
-===================================================================
---- libstdc++-v3/include/bits/random.h (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/include/bits/random.h (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1614,7 +1614,7 @@
-    */
+   if (strict)
+     {
+@@ -9916,7 +9806,7 @@
+     case ADDR_SPACE_FLASH:
  
-   /**
--   * @addtogroup random_distributions_uniform Uniform Distributions
-+   * @addtogroup random_distributions_uniform Uniform
-    * @ingroup random_distributions
-    * @{
-    */
-@@ -1972,7 +1972,7 @@
-   /* @} */ // group random_distributions_uniform
-   /**
--   * @addtogroup random_distributions_normal Normal Distributions
-+   * @addtogroup random_distributions_normal Normal
-    * @ingroup random_distributions
-    * @{
-    */
-@@ -3226,7 +3226,7 @@
-   /* @} */ // group random_distributions_normal
-   /**
--   * @addtogroup random_distributions_bernoulli Bernoulli Distributions
-+   * @addtogroup random_distributions_bernoulli Bernoulli
-    * @ingroup random_distributions
-    * @{
-    */
-@@ -3957,7 +3957,7 @@
-   /* @} */ // group random_distributions_bernoulli
-   /**
--   * @addtogroup random_distributions_poisson Poisson Distributions
-+   * @addtogroup random_distributions_poisson Poisson
-    * @ingroup random_distributions
-    * @{
-    */
-Index: libstdc++-v3/ChangeLog
-===================================================================
---- libstdc++-v3/ChangeLog     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/ChangeLog     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,3 +1,78 @@
-+2010-08-26  Benjamin Kosnik  <bkoz@redhat.com>
-+
-+        * include/bits/stl_iterator_base_types.h: Fix doxygen warning.
-+
-+      Merge in other doc patches.
-+
-+      2010-07-08  Benjamin Kosnik  <bkoz@redhat.com>
-+
-+        * include/bits/stl_heap.h: Update markup.
-+        * include/bits/move.h: Same.
-+        * include/bits/algorithmfwd.h: Same.
-+        * include/bits/random.h: Same.
-+        * doc/doxygen/doxygroups.cc: Same.
-+        * doc/doxygen/user.cfg.in: Remove include/tr1_impl/regex from
-+        input file list.
-+        * doc/Makefile.am (doc-pdf-doxygen): Add comment, put generated
-+        pdf in location consistent with docbook pdf generation.
-+        * doc/Makefile.in: Regenerate.
-+
-+      2010-07-13  Benjamin Kosnik  <bkoz@redhat.com>
-+        * doc/Makefile.in: Regenerate.
-+        * doc/Makefile.am: Edit pdf rules, expand default rules.
-+        * doc/doxygen/user.cfg.in: Update to Doxygen 1.7.1.
-+
-+      2010-07-19  Benjamin Kosnik  <bkoz@redhat.com>
-+
-+        * doc/Makefile.am (doc-texinfo): New rule.
-+        (doc-texinfo-docbook): New rule.
-+        (DB2TEXI_FLAGS): New.
-+        (doc-xml-single-docbook): Just the manual, not the set. Tweak flags.
-+        * doc/Makefile.in: Regenerate.
-+
-+      2010-07-19  Benjamin Kosnik  <bkoz@redhat.com>
-+
-+        * doc/xml/manual/appendix_contributing.xml: Update for new reality.
-+        * doc/Makefile.am (doc-xml): New default rule for XML output.
-+        (doc-xml-single-doxygen): Standardize output names.
-+        * doc/Makefile.in: Regenerate.
-+
-+        * doc/doxygen/user.cfg.in: Tweak.
-+
-+2010-08-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
-+
-+      PR libstdc++/45283
-+      * testsuite/performance/30_threads/future/polling.cc: Replace calls to
-+      shared_future::is_ready.
-+
-+2010-08-08  Paolo Carlini  <paolo.carlini@oracle.com>
-+
-+      * include/bits/forward_list.h (_M_default_initialize,
-+      _M_default_insert_after): Declare.
-+      (forward_list<>::forward_list(size_type), resize(size_type)): Fix,
-+      use the latter.
-+      * include/bits/forward_list.tcc (forward_list<>::_M_default_append,
-+      * testsuite/23_containers/forward_list/requirements/dr438/
-+      assign_neg.cc: Adjust dg-error line numbers.
-+      * testsuite/23_containers/forward_list/requirements/dr438/
-+      insert_neg.cc: Likewise.
-+      * testsuite/23_containers/forward_list/requirements/dr438/
-+      constructor_1_neg.cc: Likewise.
-+      * testsuite/23_containers/forward_list/requirements/dr438/
-+      constructor_2_neg.cc: Likewise.
-+
-+2010-08-08  Paolo Carlini  <paolo.carlini@oracle.com>
-+
-+      PR libstdc++/44963
-+      * include/bits/stl_iterator.h (insert_iterator<>::
-+      operator=(const typename _Container::value_type&,
-+      back_insert_iterator<>::
-+      operator=(const typename _Container::value_type&),
-+      front_insert_iterator<>::
-+      operator=(const typename _Container::value_type&))): Add
-+      in C++0x mode.
-+      * testsuite/ext/rope/44963.cc: New.
-+
- 2010-07-31  Release Manager
-       * GCC 4.5.1 released.
-Index: libstdc++-v3/testsuite/ext/rope/44963.cc
-===================================================================
---- libstdc++-v3/testsuite/ext/rope/44963.cc   (.../tags/gcc_4_5_1_release)    (wersja 0)
-+++ libstdc++-v3/testsuite/ext/rope/44963.cc   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -0,0 +1,31 @@
-+// { dg-options "-std=gnu++0x" }
-+// { dg-do compile }
-+
-+// Copyright (C) 2010 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 3, or (at your option)
-+// any later version.
-+//
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING3.  If not see
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <ext/rope>
-+
-+// libstdc++/44963
-+void test01()
-+{
-+  __gnu_cxx::crope line("test");
-+  auto ii(std::back_inserter(line));
-+
-+  *ii++ = 'm';
-+  *ii++ = 'e';
-+}
-Index: libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
-===================================================================
---- libstdc++-v3/testsuite/performance/30_threads/future/polling.cc    (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/testsuite/performance/30_threads/future/polling.cc    (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,4 +1,4 @@
--// Copyright (C) 2009 Free Software Foundation, Inc.
-+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -20,9 +20,14 @@
- #include <thread>
- #include <testsuite_performance.h>
+       if (AVR_HAVE_LPMX)
+-        avr_asm_len ("lpm %2,%Z+", xop, plen, 1);
++        avr_asm_len ("lpm %2,Z+", xop, plen, 1);
+       else
+         avr_asm_len ("lpm" CR_TAB
+                      "adiw r30,1", xop, plen, 2);
+@@ -9965,6 +9855,14 @@
\f
+ /* Helper for __builtin_avr_delay_cycles */
  
-+inline bool is_ready(std::shared_future<void>& f)
++static rtx
++avr_mem_clobber (void)
 +{
-+  return f.wait_for(std::chrono::microseconds(1));
++  rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
++  MEM_VOLATILE_P (mem) = 1;
++  return mem;
 +}
 +
- void poll(std::shared_future<void> f)
+ static void
+ avr_expand_delay_cycles (rtx operands0)
  {
--  while (!f.is_ready())
-+  while (!is_ready(f))
-   { }
- }
-@@ -46,7 +51,7 @@
-   start_counters(time, resource);
-   for (int i = 0; i < 1000000; ++i)
--    (void)f.is_ready();
-+    (void)is_ready(f);
-   p.set_value();
-   for (int i=0; i < n; ++i)
-Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,6 @@
- // { dg-do compile }
- // { dg-options "-std=gnu++0x" }
--// { dg-error "no matching" "" { target *-*-* } 1194 }
-+// { dg-error "no matching" "" { target *-*-* } 1196 }
- // { dg-excess-errors "" }
- // Copyright (C) 2009, 2010 Free Software Foundation
-Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,6 @@
- // { dg-do compile }
- // { dg-options "-std=gnu++0x" }
--// { dg-error "no matching" "" { target *-*-* } 1194 }
-+// { dg-error "no matching" "" { target *-*-* } 1196 }
- // { dg-excess-errors "" }
- // Copyright (C) 2009, 2010 Free Software Foundation
-Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,6 @@
- // { dg-do compile }
- // { dg-options "-std=gnu++0x" }
--// { dg-error "no matching" "" { target *-*-* } 1194 }
-+// { dg-error "no matching" "" { target *-*-* } 1196 }
- // { dg-excess-errors "" }
- // Copyright (C) 2009, 2010 Free Software Foundation
-Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc  (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc  (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,6 +1,6 @@
- // { dg-do compile }
- // { dg-options "-std=gnu++0x" }
--// { dg-error "no matching" "" { target *-*-* } 1194 }
-+// { dg-error "no matching" "" { target *-*-* } 1196 }
- // { dg-excess-errors "" }
- // Copyright (C) 2009, 2010 Free Software Foundation
-Index: libjava/classpath/javax/print/attribute/standard/JobStateReasons.java
-===================================================================
---- libjava/classpath/javax/print/attribute/standard/JobStateReasons.java      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libjava/classpath/javax/print/attribute/standard/JobStateReasons.java      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -129,7 +129,7 @@
-     if (o == null)
-       throw new NullPointerException("reason is null");  
-     
--    return add(o);
-+    return super.add(o);
-   }
+@@ -9976,7 +9874,8 @@
+     {
+       loop_count = ((cycles - 9) / 6) + 1;
+       cycles_used = ((loop_count - 1) * 6) + 9;
+-      emit_insn (gen_delay_cycles_4 (gen_int_mode (loop_count, SImode)));
++      emit_insn (gen_delay_cycles_4 (gen_int_mode (loop_count, SImode),
++                                     avr_mem_clobber()));
+       cycles -= cycles_used;
+     }
    
-   /**
-Index: libjava/classpath/ChangeLog
-===================================================================
---- libjava/classpath/ChangeLog        (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libjava/classpath/ChangeLog        (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -1,3 +1,23 @@
-+2010-04-27  Andrew Haley  <aph@redhat.com>
-+
-+      * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty
-+      list.
+@@ -9986,7 +9885,8 @@
+       if (loop_count > 0xFFFFFF)
+         loop_count = 0xFFFFFF;
+       cycles_used = ((loop_count - 1) * 5) + 7;
+-      emit_insn (gen_delay_cycles_3 (gen_int_mode (loop_count, SImode)));
++      emit_insn (gen_delay_cycles_3 (gen_int_mode (loop_count, SImode),
++                                     avr_mem_clobber()));
+       cycles -= cycles_used;
+     }
+   
+@@ -9996,7 +9896,8 @@
+       if (loop_count > 0xFFFF)
+         loop_count = 0xFFFF;
+       cycles_used = ((loop_count - 1) * 4) + 5;
+-      emit_insn (gen_delay_cycles_2 (gen_int_mode (loop_count, HImode)));
++      emit_insn (gen_delay_cycles_2 (gen_int_mode (loop_count, HImode),
++                                     avr_mem_clobber()));
+       cycles -= cycles_used;
+     }
+   
+@@ -10006,7 +9907,8 @@
+       if (loop_count > 255) 
+         loop_count = 255;
+       cycles_used = loop_count * 3;
+-      emit_insn (gen_delay_cycles_1 (gen_int_mode (loop_count, QImode)));
++      emit_insn (gen_delay_cycles_1 (gen_int_mode (loop_count, QImode),
++                                     avr_mem_clobber()));
+       cycles -= cycles_used;
+       }
+   
+@@ -11007,6 +10909,9 @@
+ #undef  TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS
+ #define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS avr_addr_space_legitimize_address
++#undef  TARGET_MODE_DEPENDENT_ADDRESS_P
++#define TARGET_MODE_DEPENDENT_ADDRESS_P avr_mode_dependent_address_p
 +
-+2010-04-27  Andrew Haley  <aph@redhat.com>
+ #undef  TARGET_PRINT_OPERAND
+ #define TARGET_PRINT_OPERAND avr_print_operand
+ #undef  TARGET_PRINT_OPERAND_ADDRESS
+Index: gcc/config/epiphany/epiphany.c
+===================================================================
+--- gcc/config/epiphany/epiphany.c     (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/epiphany/epiphany.c     (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1417,7 +1417,7 @@
+   return gen_rtx_REG (mode, 0);
+ }
+-bool
++static bool
+ epiphany_function_value_regno_p (const unsigned int regno ATTRIBUTE_UNUSED)
+ {
+   return regno == 0;
+Index: gcc/config/rs6000/vector.md
+===================================================================
+--- gcc/config/rs6000/vector.md        (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/rs6000/vector.md        (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -516,6 +516,94 @@
+   "VECTOR_UNIT_ALTIVEC_P (<MODE>mode)"
+   "")
++(define_insn_and_split "*vector_uneq<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++      (uneq:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++                  (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++      (gt:VEC_F (match_dup 1)
++                (match_dup 2)))
++   (set (match_dup 4)
++      (gt:VEC_F (match_dup 2)
++                (match_dup 1)))
++   (set (match_dup 0)
++      (not:VEC_F (ior:VEC_F (match_dup 3)
++                            (match_dup 4))))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_ltgt<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++      (ltgt:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++                  (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++      (gt:VEC_F (match_dup 1)
++                (match_dup 2)))
++   (set (match_dup 4)
++      (gt:VEC_F (match_dup 2)
++                (match_dup 1)))
++   (set (match_dup 0)
++      (ior:VEC_F (match_dup 3)
++                 (match_dup 4)))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_ordered<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++      (ordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++                     (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++      (ge:VEC_F (match_dup 1)
++                (match_dup 2)))
++   (set (match_dup 4)
++      (ge:VEC_F (match_dup 2)
++                (match_dup 1)))
++   (set (match_dup 0)
++      (ior:VEC_F (match_dup 3)
++                 (match_dup 4)))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
++(define_insn_and_split "*vector_unordered<mode>"
++  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
++      (unordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
++                       (match_operand:VEC_F 2 "vfloat_operand" "")))]
++  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
++  "#"
++  ""
++  [(set (match_dup 3)
++      (ge:VEC_F (match_dup 1)
++                (match_dup 2)))
++   (set (match_dup 4)
++      (ge:VEC_F (match_dup 2)
++                (match_dup 1)))
++   (set (match_dup 0)
++      (not:VEC_F (ior:VEC_F (match_dup 3)
++                            (match_dup 4))))]
++  "
++{
++  operands[3] = gen_reg_rtx (<MODE>mode);
++  operands[4] = gen_reg_rtx (<MODE>mode);
++}")
++
+ ;; Note the arguments for __builtin_altivec_vsel are op2, op1, mask
+ ;; which is in the reverse order that we want
+ (define_expand "vector_select_<mode>"
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -16137,6 +16137,10 @@
+     case EQ:
+     case GT:
+     case GTU:
++    case ORDERED:
++    case UNORDERED:
++    case UNEQ:
++    case LTGT:
+       mask = gen_reg_rtx (mode);
+       emit_insn (gen_rtx_SET (VOIDmode,
+                             mask,
+Index: libgo/go/syscall/syscall_unix.go
+===================================================================
+--- libgo/go/syscall/syscall_unix.go   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libgo/go/syscall/syscall_unix.go   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -31,6 +31,7 @@
+ // expects a 32-bit one.
+ func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
+       Entersyscall()
++      SetErrno(0)
+       var r uintptr
+       if unsafe.Sizeof(r) == 4 {
+               r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3), 0, 0, 0)
+@@ -46,6 +47,7 @@
+ func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
+       Entersyscall()
++      SetErrno(0)
+       var r uintptr
+       if unsafe.Sizeof(r) == 4 {
+               r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3),
+@@ -63,6 +65,7 @@
+ func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) {
+       var r uintptr
++      SetErrno(0)
+       if unsafe.Sizeof(r) == 4 {
+               r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3), 0, 0, 0)
+               r = uintptr(r1)
+@@ -76,6 +79,7 @@
+ func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) {
+       var r uintptr
++      SetErrno(0)
+       if unsafe.Sizeof(r) == 4 {
+               r1 := c_syscall32(int32(trap), int32(a1), int32(a2), int32(a3),
+                       int32(a4), int32(a5), int32(a6))
+Index: libffi/src/powerpc/aix.S
+===================================================================
+--- libffi/src/powerpc/aix.S   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libffi/src/powerpc/aix.S   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,5 +1,5 @@
+ /* -----------------------------------------------------------------------
+-   aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
++   aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
+    based on darwin.S by John Hornkvist
+    PowerPC Assembly glue.
+@@ -79,6 +79,8 @@
+       .set f20,20
+       .set f21,21
++      .extern .ffi_prep_args
++
+ #define LIBFFI_ASM
+ #include <fficonfig.h>
+ #include <ffi.h>
+@@ -125,6 +127,7 @@
+       /* Call ffi_prep_args.  */
+       mr      r4, r1
+       bl      .ffi_prep_args
++      nop
+       /* Now do the call.  */
+       ld      r0, 0(r29)
+@@ -226,6 +229,7 @@
+       /* Call ffi_prep_args.  */
+       mr      r4, r1
+       bl      .ffi_prep_args
++      nop
+       /* Now do the call.  */
+       lwz     r0, 0(r29)
+Index: libffi/src/powerpc/aix_closure.S
+===================================================================
+--- libffi/src/powerpc/aix_closure.S   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libffi/src/powerpc/aix_closure.S   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -79,6 +79,8 @@
+       .set f20,20
+       .set f21,21
++      .extern .ffi_closure_helper_DARWIN
++
+ #define LIBFFI_ASM
+ #define JUMPTARGET(name) name
+ #define L(x) x
+@@ -165,6 +167,7 @@
+       /* look up the proper starting point in table  */
+       /* by using return type as offset */
++      lhz     r3, 10(r3)      /* load type from return type */
+       ld      r4, LC..60(2)   /* get address of jump table */
+       sldi    r3, r3, 4       /* now multiply return type by 16 */
+       ld      r0, 240+16(r1)  /* load return address */
+@@ -337,8 +340,9 @@
+       /* look up the proper starting point in table  */
+       /* by using return type as offset */
++      lhz     r3, 6(r3)       /* load type from return type */
+       lwz     r4, LC..60(2)   /* get address of jump table */
+-      slwi    r3, r3, 4       /* now multiply return type by 4 */
++      slwi    r3, r3, 4       /* now multiply return type by 16 */
+       lwz     r0, 176+8(r1)   /* load return address */
+       add     r3, r3, r4      /* add contents of table to table address */
+       mtctr   r3
+Index: libffi/ChangeLog
+===================================================================
+--- libffi/ChangeLog   (.../tags/gcc_4_7_0_release)    (wersja 185750)
++++ libffi/ChangeLog   (.../branches/gcc-4_7-branch)   (wersja 185750)
+@@ -1,3 +1,17 @@
++2012-03-22  David Edelsohn  <dje.gcc@gmail.com>
 +
-+      * gnu/javax/print/ipp/IppResponse.java (parseAttributes): Handle
-+      IppValueTag.UNKNOWN.  
-+      * gnu/javax/print/ipp/IppRequest.java (writeOperationAttributes):
-+      Handle RequestedAttributes.
-+      * gnu/javax/print/ipp/IppPrintService.java (processResponse): Add
-+      DocFlavor.SERVICE_FORMATTED.PAGEABLE and
-+      DocFlavor.SERVICE_FORMATTED.PRINTABLE.
++      Backport from mainline:
++      2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
 +
-+2010-07-30  Andrew Haley  <aph@redhat.com>
++      * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
++      change to return value of ffi_closure_helper_DARWIN and load type
++      from return type.
 +
-+      * javax/print/attribute/standard/JobStateReasons.java (add): Fix
-+      infinite recursion with call to super.
++      From Tom Honermann <tom.honermann@oracle.com>:
++      * src/powerpc/aix.S: Declare .ffi_prep_args.  Insert nops after
++      branch instructions.
++      * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
 +
- 2010-07-31  Release Manager
+ 2012-03-22  Release Manager
  
-       * GCC 4.5.1 released.
-Index: libjava/classpath/gnu/javax/print/ipp/IppRequest.java
-===================================================================
---- libjava/classpath/gnu/javax/print/ipp/IppRequest.java      (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libjava/classpath/gnu/javax/print/ipp/IppRequest.java      (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -434,6 +434,8 @@
-       PrinterURI printerUri = (PrinterURI) attributes.get(PrinterURI.class);
-       JobUri jobUri = (JobUri) attributes.get(JobUri.class);
-       JobId jobId = (JobId) attributes.get(JobId.class);
-+      RequestedAttributes reqAttrs 
-+      = (RequestedAttributes)attributes.get(RequestedAttributes.class);
-       if (printerUri != null && jobId == null && jobUri == null)
-         {
-           write(printerUri);
-@@ -467,6 +469,12 @@
-           logger.log(Component.IPP, "Attribute: Name: <" + jobUri.getCategory()
-             .getName() + "> Value: <" + jobUri.toString() + ">");
-         }
-+      else if (reqAttrs != null)
-+      {
-+        write(reqAttrs);
-+        attributes.remove(RequestedAttributes.class);
-+        logger.log(Component.IPP, "RequestedAttributes: <" + reqAttrs + ">");
-+      }
-       else
-         {
-           throw new IppException("Unknown target operation attribute combination.");
-Index: libjava/classpath/gnu/javax/print/ipp/IppPrintService.java
-===================================================================
---- libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -356,8 +356,17 @@
-                 // should not happen, all fields are public
-               }
-           }
-+
-+      if (this.getClass()
-+          .isAssignableFrom(gnu.javax.print.CupsPrintService.class))
-+        {
-+//        CUPS always provides filters to convert from Postscript.
-+//        This logic looks odd, but it's what OpenJDK does.
-+          flavors.add(DocFlavor.SERVICE_FORMATTED.PAGEABLE);
-+          flavors.add(DocFlavor.SERVICE_FORMATTED.PRINTABLE);
-+        }
-       }
--    
-+
-     // printer uris
-     Set uris = getPrinterAttributeSet(PrinterUriSupported.class);
-     printerUris = new ArrayList(uris.size());
-Index: libjava/classpath/gnu/javax/print/ipp/IppResponse.java
-===================================================================
---- libjava/classpath/gnu/javax/print/ipp/IppResponse.java     (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libjava/classpath/gnu/javax/print/ipp/IppResponse.java     (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -302,11 +302,14 @@
-             // out-of-band values
-             case IppValueTag.UNSUPPORTED:
-             case IppValueTag.UNKNOWN:
-+              // TODO implement out-of-band handling
-+              // We currently throw an exception to see when it occurs - not yet :-)
-+            throw new IppException(
-+                    "Unexpected name value for out-of-band value tag " + tag);
-             case IppValueTag.NO_VALUE:
--              // TODO implement out-of-band handling
--              // We currently throw an exception to see when it occurs - not yet :-)              
--              throw new IppException(
--                    "Unexpected name value for out-of-band value tag");
-+            attribute = null;
-+
-+            break;
-             case IppValueTag.INTEGER:
-               int intValue = IppUtilities.convertToInt(value);
-               attribute = IppUtilities.getIntegerAttribute(name, intValue);
-Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/gnu/javax/print/ipp/IppRequest$RequestWriter.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/gnu/javax/print/ipp/IppResponse$ResponseReader.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/gnu/javax/print/ipp/IppRequest.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/gnu/javax/print/ipp/IppPrintService.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/gnu/javax/print/ipp/IppResponse.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/lib/javax/print/attribute/standard/JobStateReasons.class
-===================================================================
-Nie można wyświetlić: plik binarny.
-svn:mime-type = application/octet-stream
-Index: libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java
-===================================================================
---- libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java   (.../tags/gcc_4_5_1_release)    (wersja 163628)
-+++ libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java   (.../branches/gcc-4_5-branch)   (wersja 163628)
-@@ -452,7 +452,12 @@
-   public synchronized boolean remove(Object element)
-   {
-     E[] snapshot = this.data;
--    E[] newData = (E[]) new Object[snapshot.length - 1];
-+    int len = snapshot.length;
-+
-+    if (len == 0)
-+      return false;
-+
-+    E[] newData = (E[]) new Object[len - 1];
-     
-     // search the element to remove while filling the backup array
-     // this way we can run this method in O(n)
+       * GCC 4.7.0 released.
This page took 0.701955 seconds and 4 git commands to generate.