]> git.pld-linux.org Git - packages/crossmingw64-gcc.git/commitdiff
- branch.diff like in gcc.spec.
authorPaweł Sikora <pluto@pld-linux.org>
Sun, 26 Sep 2010 15:46:04 +0000 (15:46 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gcc-branch.diff -> 1.1

gcc-branch.diff [new file with mode: 0644]

diff --git a/gcc-branch.diff b/gcc-branch.diff
new file mode 100644 (file)
index 0000000..0bde537
--- /dev/null
@@ -0,0 +1,11158 @@
+Index: gcc/optabs.c
+===================================================================
+--- 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
+===================================================================
+--- 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
+===================================================================
+--- 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
+===================================================================
+--- 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
+===================================================================
+--- 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>
++
++      * config/ia64/ia64.md (cstorebi4): Fix thinko.
++
++2010-08-28  Uros Bizjak  <ubizjak@gmail.com>
++
++      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.
++
++2010-08-25  Jakub Jelinek  <jakub@redhat.com>
++
++      PR rtl-optimization/44858
++      * combine.c (try_combine): If recog_for_combine added CLOBBERs to
++      newi2pat, make sure they don't affect newpat.
++
++      PR rtl-optimization/45400
++      * combine.c (simplify_shift_const_1) <case SUBREG>: Only use
++      SUBREG_REG if both modes are of MODE_INT class.
++
++2010-08-20  Changpeng Fang  <changpeng.fang@amd.com>
++
++      PR tree-optimization/45260
++      * tree-flow.h (may_be_nonaddressable_p): New definition. Make the
++      existing static function global.
++
++      * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): This function
++      is changed to global.
++
++      * 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.
++
++2010-08-20  David Edelsohn  <edelsohn@gnu.org>
++
++      Backport from mainline
++      2010-04-22  David Edelsohn  <edelsohn@gnu.org>
++
++      * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS.
++
++2010-08-19  Uros Bizjak  <ubizjak@gmail.com>
++
++      * config/i386/i386.md (*add<SWI:mode>3_cconly_overflow): Do not use
++      ix86_binary_operator_ok.
++
++2010-08-18  Uros Bizjak  <ubizjak@gmail.com>
++
++      PR target/45327
++      * config/i386/i386.md (<any_or:code><SWI:mode>_3): Do not use
++      ix86_binary_operator_ok.
++
++2010-08-18  H.J. Lu  <hongjiu.lu@intel.com>
++
++      Backport from mainline
++      2010-08-18  Paolo Bonzini  <bonzini@gnu.org>
++
++      PR middle-end/45292
++      * optabs.c (expand_bool_compare_and_swap): Expand pending
++      pops before trying the optab.
++
++2010-08-17  Uros Bizjak  <ubizjak@gmail.com>
++
++      PR target/45296
++      * reginfo.c (globalize_reg): Reject stack registers.
++
++2010-08-16  Changpeng Fang  <changpeng.fang@amd.com>
++
++      Backport from mainline:
++      2010-08-12  Changpeng Fang  <changpeng.fang@amd.com>
++
++      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.
++
++2010-08-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++      Backport from mainline:
++      2010-08-09  Richard Guenther  <rguenther@suse.de>
++
++      PR middle-end/44632
++      * function.c (gimplify_parameters): Do not clear addressable
++      bit of the original parameter.
++
++2010-08-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++      Revert:
++      2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++      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.
++
++2010-08-12  Jakub Jelinek  <jakub@redhat.com>
++
++      PR middle-end/45262
++      * fold-const.c (make_range) <case NEGATE_EXPR>: Punt if
++      -a overflows.  Normalize the range.
++
++      PR debug/45259
++      * caller-save.c (save_call_clobbered_regs): Only swap notes with
++      DEBUG_INSNs if n_regs_saved.
++
++      Backport from mainline
++      2010-07-30  Jakub Jelinek  <jakub@redhat.com>
++
++      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.
++
++2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++      Backport from mainline.
++      2010-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++      PR target/44805
++      * config/pa/pa.h (CONSTANT_ALIGNMENT): Align strings to BITS_PER_WORD
++      on all targets.
++
++2010-08-08  Richard Guenther  <rguenther@suse.de>
++
++      PR middle-end/45034
++      * convert.c (convert_to_integer): Always use an unsigned
++      type for narrowed negate and bitwise not.
++
++2010-08-08  Richard Guenther  <rguenther@suse.de>
++
++      PR tree-optimization/45109
++      * tree-ssa-structalias.c (get_constraint_for_component_ref):
++      Explicitly strip handled components and indirect references.
++
++2010-08-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
++
++      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.
++
++2010-08-06  Eric Botcazou  <ebotcazou@adacore.com>
++
++      PR target/44942
++      * config/sparc/sparc.c (function_arg_advance): Always take into account
++      the padding, if any.
++
++2010-08-06  Uros Bizjak  <ubizjak@gmail.com>
++
++      * 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.
++
++2010-08-06  Uros Bizjak  <ubizjak@gmail.com>
++
++      * config/i386/i386.c (ix86_decompose_address): Check for SI_REG
++      using REGNO of base_reg directly.
++
++2010-08-03  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
++
++      * config/spu/spu.c (spu_emit_branch_hint): Do not access NOTE_KIND of
++      non-NOTE insns.
++
++2010-08-03  Uros Bizjak  <ubizjak@gmail.com>
++
++      PR target/41089
++      * config/alpha/alpha.c (alpha_build_builtin_va_list): Mark __offset
++      as volatile.
++
++2010-08-03  Martin Jambor  <mjambor@suse.cz>
++
++      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>
++
++      * 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.
++
++2010-07-31  Richard Guenther  <rguenther@suse.de>
++
++      PR tree-optimization/45052
++      * ipa-pure-const.c (check_stmt): Check volatileness.
++
++2010-07-31  Richard Guenther  <rguenther@suse.de>
++
++      * ipa-prop.c (ipa_modify_formal_parameters): Use
++      build_distinct_type_copy.
++
++2010-07-31  Richard Guenther  <rguenther@suse.de>
++
++      * DEV-PHASE: Set back to prerelease.
++      * BASE-VER: Bump to 4.5.2.
++
+ 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>
+- 
++
+       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
+===================================================================
+--- 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 @@
++extern void abort (void);
++static void fixnum_neg(signed char x, signed char *py, int *pv)
++{
++  unsigned char ux, uy;
++
++  ux = (unsigned char)x;
++  uy = -ux;
++  *py = (uy <= 127) ? (signed char)uy : (-(signed char)(255 - uy) - 1);
++  *pv = (x == -128) ? 1 : 0;
++}
++
++void __attribute__((noinline)) foo(int x, int y, int v)
++{
++  if (y < -128 || y > 127)
++    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;
++}
++
++int main(void)
++{
++  if (sizeof (char) != 1)
++    return 0;
++  if (test_neg() != 0)
++    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 */
++
++extern void abort (void);
++int a = 3;
++int b = 1;
++
++__attribute__((noinline)) long long
++foo (int x, int y)
++{
++  return x / y;
++}
++
++__attribute__((noinline)) int
++bar (void)
++{
++  int c = 2;
++  c &= foo (1, b) > b;
++  b = (a != 0) | c;
++  return c;
++}
++
++int
++main (void)
++{
++  if (bar () != 0 || b != 1)
++    abort ();
++  return 0;
++}
+Index: gcc/testsuite/gcc.c-torture/execute/pr45262.c
+===================================================================
+--- 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 */
++
++extern void abort (void);
++
++int
++foo (unsigned int x)
++{
++  return ((int) x < 0) || ((int) (-x) < 0);
++}
++
++int
++bar (unsigned int x)
++{
++  return x >> 31 || (-x) >> 31;
++}
++
++int
++main (void)
++{
++  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;
++}
+Index: gcc/testsuite/gcc.c-torture/compile/pr45109.c
+===================================================================
+--- 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;
++
++typedef void (*fn_t) (struct o_fsm_t *,
++                    struct o_fsm_event_t const *);
++
++struct o_fsm_state_t {
++    fn_t dispatch;
++};
++
++struct o_fsm_t {
++    fn_t dispatch;
++};
++
++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);
++
++struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn)
++{
++  return *(struct o_fsm_state_t *)&dispatch_fcn;
++}
++
++typedef struct _o_plist_parser_t {
++    struct o_fsm_t fsm;
++} o_plist_parser_t;
++
++static void plist_parser_state_start(struct o_fsm_t *fsm,
++                                   struct o_fsm_event_t const *fsm_event)
++{
++}
++
++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 "" } */
++
++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" } */
++
++int colormap[10];
++
++extern int bar ();
++
++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 } } */
++
++struct S { void (*bar) (long); };
++struct T { struct S *t; };
++int w;
++extern int baz (int);
++
++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" } */
++
++int
++foo (short x)
++{
++  short i, y;
++  int sum;
++
++  for (i = 0; i < x; i++)
++    y = x * i;
++
++  for (i = x; i > 0; i--)
++    sum += y;
++
++  return sum;
++}
++
++/* { 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
+===================================================================
+--- 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/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>
++
++      PR debug/45055
++      PR rtl-optimization/45137
++      * gcc.dg/pr45055.c: New test.
++
++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>
++
++      * gcc.dg/graphite/interchange-0.c: Fix dg-final directive.
++
++2010-08-05  Janus Weil  <janus@gcc.gnu.org>
++
++      PR fortran/44929
++      * gfortran.dg/allocate_derived_3.f90: New.
++
++2010-08-04  Uros Bizjak  <ubizjak@gmail.com>
++
++      Backport from mainline:
++      2010-07-20  Bingfeng Mei  <bmei@broadcom.com>
++
++      * gcc.dg/lto/20090313_0.c: Use dg-require-effective-target
++      sync_char_short.
++
++      2010-06-24  Steve Ellcey  <sje@cup.hp.com>
++
++      PR testsuite/43283
++      * gcc.dg/lto/20091216-1_0.c: Use newline instead of semicolon
++      and add argument to nop for IA64.
++
++2010-08-03  Martin Jambor  <mjambor@suse.cz>
++
++      PR tree-optimization/44914
++      * g++.dg/tree-ssa/pr44914.C: New test.
++
++2010-08-02  Uros Bizjak  <ubizjak@gmail.com>
++
++      * lib/gcc-dg.exp (cleanup-coverage-files): Remove options from
++      test name.
++      (cleanup-repo-files): Ditto.
++      (cleanup-saved-temps): Ditto.
++
++2010-07-31  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
++
++      PR c++/45112
++      * testsuite/g++.dg/pr45112.C: New test.
++
+ 2010-07-31  Release Manager
+       * GCC 4.5.1 released.
+@@ -479,15 +626,15 @@
+       Backport from mainline
+       2010-05-17  Martin Jambor  <mjambor@suse.cz>
+-        PR middle-end/44133
+-        * gcc.dg/tree-ssa/pr44133.c: New test.
++      PR middle-end/44133
++      * gcc.dg/tree-ssa/pr44133.c: New test.
+ 2010-06-29  Martin Jambor  <mjambor@suse.cz>
+       Backport from mainline
+       2010-04-13  Martin Jambor  <mjambor@suse.cz>
+-        * gcc.dg/tree-ssa/sra-9.c: New test.
++      * gcc.dg/tree-ssa/sra-9.c: New test.
+ 2010-06-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+@@ -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>
+       PR fortran/44347
+Index: gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
+===================================================================
+--- 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/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>
++
++static inline unsigned short
++bar (unsigned short x)
++{
++  return ((x << 8) | (x >> 8));
++}
++
++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 () { }
++};
++
++struct B
++{
++  A a;
++  int i;
++  void f (int) { }
++  B ()
++  {
++    f (i);
++  }
++};
++
++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[];
++};
++
++JSString JSString::unitStringTable[] __attribute__ ((aligned (8))) = { 1 };
++
++int bug [__alignof__ (JSString::unitStringTable) >= 8 ? 1 : -1];
++
+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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+@@ -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;
+ }
+-
+-/* Return the next insn after INSN that is neither a NOTE nor a
+-   DEBUG_INSN.  This routine does not look inside SEQUENCEs.  */
+-
+-static rtx
+-next_nonnote_nondebug_insn (rtx insn)
+-{
+-  while (insn)
+-    {
+-      insn = NEXT_INSN (insn);
+-      if (insn == 0)
+-      break;
+-      if (NOTE_P (insn))
+-      continue;
+-      if (DEBUG_INSN_P (insn))
+-      continue;
+-      break;
+-    }
+-
+-  return insn;
+-}
+-
+-
\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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ (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")])
+-
+ ;; 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;
+-
+-          /* 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)
+-
+-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
+-
+ 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
+-
+-# 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
+-
+-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
+-
+-# 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
+-
+-# 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
+-
+-# 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
+-
+-# 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.
+-
+-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 { };
++  //@}
+-
+   /**
+    *  @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
+    */
+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); }
+       /**
+        *  @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);
+     };
+   /**
+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); }
+-  /// declval, defined in <type_traits>.
++  /// declval, from type_traits.
+ _GLIBCXX_END_NAMESPACE
+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;
++      }
+-#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;
++      }
+-#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 @@
+     }
+   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)
+     {
+       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);
+     }
+   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 @@
+    */
+   /**
+-   * @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>
++inline bool is_ready(std::shared_future<void>& f)
++{
++  return f.wait_for(std::chrono::microseconds(1));
++}
++
+ void poll(std::shared_future<void> f)
+ {
+-  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);
+   }
+   
+   /**
+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.
++
++2010-04-27  Andrew Haley  <aph@redhat.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.
++
++2010-07-30  Andrew Haley  <aph@redhat.com>
++
++      * javax/print/attribute/standard/JobStateReasons.java (add): Fix
++      infinite recursion with call to super.
++
+ 2010-07-31  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)
This page took 0.892673 seconds and 4 git commands to generate.