--- /dev/null
+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, ®no, &padding);
++ function_arg_slotno (cum, mode, type, named, 0, ®no, &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)