From 1c8a025b2ce156ce165a8e8d88890f830dbcba75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Krotowski?= Date: Wed, 29 Sep 2010 22:02:29 +0000 Subject: [PATCH] - initial version Changed files: crossmingw32-gcc-buildsystem1.patch -> 1.1 crossmingw32-gcc-buildsystem2.patch -> 1.1 crossmingw32-gcc-lfs.patch -> 1.1 gcc-branch.diff -> 1.1 --- crossmingw32-gcc-buildsystem1.patch | 20 + crossmingw32-gcc-buildsystem2.patch | 81 + crossmingw32-gcc-lfs.patch | 61 + gcc-branch.diff | 11158 ++++++++++++++++++++++++++ 4 files changed, 11320 insertions(+) create mode 100644 crossmingw32-gcc-buildsystem1.patch create mode 100644 crossmingw32-gcc-buildsystem2.patch create mode 100644 crossmingw32-gcc-lfs.patch create mode 100644 gcc-branch.diff diff --git a/crossmingw32-gcc-buildsystem1.patch b/crossmingw32-gcc-buildsystem1.patch new file mode 100644 index 0000000..4b1545a --- /dev/null +++ b/crossmingw32-gcc-buildsystem1.patch @@ -0,0 +1,20 @@ +--- gcc/configure.org 2010-04-29 22:25:12.838231797 +0200 ++++ gcc/configure 2010-04-29 22:28:10.261481922 +0200 +@@ -5571,7 +5571,7 @@ + exit 1 + fi + if test x"${with_headers}" != xyes ; then +- x=${gcc_cv_tool_prefix} ++ x=sysroot + copy_dirs="${copy_dirs} ${with_headers} $x/${target_noncanonical}/sys-include" + fi + fi +@@ -5587,7 +5587,7 @@ + if test x"${with_libs}" != xyes ; then + # Copy the libraries in reverse order, so that files in the first named + # library override files in subsequent libraries. +- x=${gcc_cv_tool_prefix} ++ x=sysroot + for l in ${with_libs}; do + copy_dirs="$l $x/${target_noncanonical}/lib ${copy_dirs}" + done diff --git a/crossmingw32-gcc-buildsystem2.patch b/crossmingw32-gcc-buildsystem2.patch new file mode 100644 index 0000000..3218ec7 --- /dev/null +++ b/crossmingw32-gcc-buildsystem2.patch @@ -0,0 +1,81 @@ +--- gcc/libgcc/Makefile.in.org 2010-04-29 23:43:30.179106889 +0200 ++++ gcc/libgcc/Makefile.in 2010-04-29 23:43:41.993233119 +0200 +@@ -64,7 +64,7 @@ + AR = @AR@ + AR_FLAGS = rc + +-CC = @CC@ ++override CC = @CC@ + CFLAGS = @CFLAGS@ + RANLIB = @RANLIB@ + LN_S = @LN_S@ +--- gcc/libgcc/configure.org 2010-09-29 01:36:46.047000017 +0200 ++++ gcc/libgcc/configure 2010-09-29 01:40:00.929000003 +0200 +@@ -2687,6 +2687,7 @@ + set dummy ${ac_tool_prefix}gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } ++CC="$CC -isystem `pwd`/../../sysroot/i386-mingw32/include -isystem `pwd`/../../sysroot/i386-mingw32/sys-include -B`pwd`/../../sysroot/i386-mingw32/lib/" + if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +--- gcc/libiberty/Makefile.in.org 2010-04-29 23:53:50.429231967 +0200 ++++ gcc/libiberty/Makefile.in 2010-04-29 23:54:00.206482863 +0200 +@@ -53,7 +53,7 @@ + AR = @AR@ + AR_FLAGS = rc + +-CC = @CC@ ++override CC = @CC@ + CFLAGS = @CFLAGS@ + CPPFLAGS = @CPPFLAGS@ + RANLIB = @RANLIB@ +--- gcc/libiberty/configure.org 2010-09-29 01:46:07.266000013 +0200 ++++ gcc/libiberty/configure 2010-09-29 01:46:35.758000014 +0200 +@@ -2789,6 +2789,7 @@ + set dummy ${ac_tool_prefix}gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } ++CC="$CC -isystem `pwd`/../../sysroot/i386-mingw32/include -isystem `pwd`/../../sysroot/i386-mingw32/sys-include -B`pwd`/../../sysroot/i386-mingw32/lib/" + if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else +--- gcc/libstdc++-v3/Makefile.in.org 2010-04-29 23:58:03.243106668 +0200 ++++ gcc/libstdc++-v3/Makefile.in 2010-04-29 23:57:34.857355967 +0200 +@@ -115,7 +115,7 @@ + AWK = @AWK@ + BASIC_FILE_CC = @BASIC_FILE_CC@ + BASIC_FILE_H = @BASIC_FILE_H@ +-CC = @CC@ ++override CC = @CC@ + CCODECVT_CC = @CCODECVT_CC@ + CCOLLATE_CC = @CCOLLATE_CC@ + CCTYPE_CC = @CCTYPE_CC@ +@@ -133,7 +133,7 @@ + CSTDIO_H = @CSTDIO_H@ + CTIME_CC = @CTIME_CC@ + CTIME_H = @CTIME_H@ +-CXX = @CXX@ ++override CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ +--- gcc/libstdc++-v3/configure.org 2010-09-29 01:48:10.661000013 +0200 ++++ gcc/libstdc++-v3/configure 2010-09-29 01:51:34.583000014 +0200 +@@ -3498,6 +3498,7 @@ + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fno-builtin" + ac_ext=c ++CPP=$CXXCPP + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +@@ -3507,6 +3508,8 @@ + set dummy ${ac_tool_prefix}gcc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } ++CC="$CC -isystem `pwd`/../../sysroot/i386-mingw32/include -isystem `pwd`/../../sysroot/i386-mingw32/sys-include -B`pwd`/../../sysroot/i386-mingw32/lib/" ++CXX="$CXX -isystem `pwd`/../../sysroot/i386-mingw32/include -isystem `pwd`/../../sysroot/i386-mingw32/sys-include -B`pwd`/../../sysroot/i386-mingw32/lib/" + if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 + else diff --git a/crossmingw32-gcc-lfs.patch b/crossmingw32-gcc-lfs.patch new file mode 100644 index 0000000..7a28aba --- /dev/null +++ b/crossmingw32-gcc-lfs.patch @@ -0,0 +1,61 @@ +diff -r faddb1a6e933 libstdc++-v3/config/io/basic_file_stdio.cc +--- a/libstdc++-v3/config/io/basic_file_stdio.cc Fri Jul 31 08:58:42 2009 -0600 ++++ b/libstdc++-v3/config/io/basic_file_stdio.cc Fri Jul 31 13:09:27 2009 -0600 +@@ -224,16 +224,16 @@ + } + return __ret; + } +- +- __basic_file* +- __basic_file::open(const char* __name, ios_base::openmode __mode, ++ ++ __basic_file* ++ __basic_file::open(const char* __name, ios_base::openmode __mode, + int /*__prot*/) + { + __basic_file* __ret = NULL; + const char* __c_mode = fopen_mode(__mode); + if (__c_mode && !this->is_open()) + { +-#ifdef _GLIBCXX_USE_LFS ++#if defined(_GLIBCXX_USE_LFS) || defined(__MINGW32__) + if ((_M_cfile = fopen64(__name, __c_mode))) + #else + if ((_M_cfile = fopen(__name, __c_mode))) +@@ -317,7 +317,7 @@ + streamoff + __basic_file::seekoff(streamoff __off, ios_base::seekdir __way) + { +-#ifdef _GLIBCXX_USE_LFS ++#if defined(_GLIBCXX_USE_LFS) || defined(__MINGW32__) + return lseek64(this->fd(), __off, __way); + #else + if (__off > numeric_limits::max() +@@ -366,6 +366,15 @@ + ios_base::cur); + return std::min(__off, streamoff(numeric_limits::max())); + } ++#elif defined(__MINGW32__) ++ struct _stati64 __buffer; ++ const int __err = _fstati64(this->fd(), &__buffer); ++ if (!__err && _GLIBCXX_ISREG(__buffer.st_mode)) ++ { ++ const streamoff __off = __buffer.st_size - lseek64(this->fd(), 0, ++ ios_base::cur); ++ return std::min(__off, streamoff(numeric_limits::max())); ++ } + #else + struct stat __buffer; + const int __err = fstat(this->fd(), &__buffer); +diff -r faddb1a6e933 libstdc++-v3/include/ext/stdio_sync_filebuf.h +--- a/libstdc++-v3/include/ext/stdio_sync_filebuf.h Fri Jul 31 08:58:42 2009 -0600 ++++ b/libstdc++-v3/include/ext/stdio_sync_filebuf.h Fri Jul 31 13:09:27 2009 -0600 +@@ -163,7 +163,7 @@ + __whence = SEEK_CUR; + else + __whence = SEEK_END; +-#ifdef _GLIBCXX_USE_LFS ++#if defined(_GLIBCXX_USE_LFS) || defined(__MINGW32__) + if (!fseeko64(_M_file, __off, __whence)) + __ret = std::streampos(ftello64(_M_file)); + #else diff --git a/gcc-branch.diff b/gcc-branch.diff new file mode 100644 index 0000000..0bde537 --- /dev/null +++ b/gcc-branch.diff @@ -0,0 +1,11158 @@ +Index: gcc/optabs.c +=================================================================== +--- gcc/optabs.c (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/optabs.c (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -7033,6 +7033,7 @@ + if (icode == CODE_FOR_nothing) + return NULL_RTX; + ++ do_pending_stack_adjust (); + do + { + start_sequence (); +Index: gcc/DATESTAMP +=================================================================== +--- gcc/DATESTAMP (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/DATESTAMP (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -1 +1 @@ +-20100731 ++20100829 +Index: gcc/postreload.c +=================================================================== +--- gcc/postreload.c (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/postreload.c (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -810,7 +810,7 @@ + rtx reg = SET_DEST (set); + rtx plus = SET_SRC (set); + rtx base = XEXP (plus, 1); +- rtx prev = prev_nonnote_insn (insn); ++ rtx prev = prev_nonnote_nondebug_insn (insn); + rtx prev_set = prev ? single_set (prev) : NULL_RTX; + unsigned int regno = REGNO (reg); + rtx index_reg = NULL_RTX; +@@ -1323,7 +1323,7 @@ + && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg), + reg_mode[REGNO (src)])) + { +- rtx next = next_nonnote_insn (insn); ++ rtx next = next_nonnote_nondebug_insn (insn); + rtx set = NULL_RTX; + if (next) + set = single_set (next); +Index: gcc/rtlanal.c +=================================================================== +--- gcc/rtlanal.c (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/rtlanal.c (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -4755,9 +4755,7 @@ + stop if it isn't a single set or if it has a REG_INC note because + we don't want to bother dealing with it. */ + +- do +- prev = prev_nonnote_insn (prev); +- while (prev && DEBUG_INSN_P (prev)); ++ prev = prev_nonnote_nondebug_insn (prev); + + if (prev == 0 + || !NONJUMP_INSN_P (prev) +Index: gcc/fold-const.c +=================================================================== +--- gcc/fold-const.c (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/fold-const.c (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -4737,9 +4737,9 @@ + n_high = range_binop (MINUS_EXPR, exp_type, + build_int_cst (exp_type, 0), + 0, low, 0); +- low = n_low, high = n_high; +- exp = arg0; +- continue; ++ if (n_high != 0 && TREE_OVERFLOW (n_high)) ++ break; ++ goto normalize; + + case BIT_NOT_EXPR: + /* ~ X -> -X - 1 */ +@@ -4773,6 +4773,7 @@ + if (TYPE_OVERFLOW_UNDEFINED (arg0_type)) + *strict_overflow_p = true; + ++ normalize: + /* Check for an unsigned range which has wrapped around the maximum + value thus making n_high < n_low, and normalize it. */ + if (n_low && n_high && tree_int_cst_lt (n_high, n_low)) +Index: gcc/DEV-PHASE +=================================================================== +--- gcc/DEV-PHASE (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/DEV-PHASE (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -0,0 +1 @@ ++prerelease +Index: gcc/ChangeLog +=================================================================== +--- gcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 163628) ++++ gcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 163628) +@@ -1,3 +1,244 @@ ++2010-08-28 Eric Botcazou ++ ++ * config/ia64/ia64.md (cstorebi4): Fix thinko. ++ ++2010-08-28 Uros Bizjak ++ ++ 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 ++ ++ 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) : Only use ++ SUBREG_REG if both modes are of MODE_INT class. ++ ++2010-08-20 Changpeng Fang ++ ++ 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 ++ ++ Backport from mainline ++ 2010-04-22 David Edelsohn ++ ++ * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS. ++ ++2010-08-19 Uros Bizjak ++ ++ * config/i386/i386.md (*add3_cconly_overflow): Do not use ++ ix86_binary_operator_ok. ++ ++2010-08-18 Uros Bizjak ++ ++ PR target/45327 ++ * config/i386/i386.md (_3): Do not use ++ ix86_binary_operator_ok. ++ ++2010-08-18 H.J. Lu ++ ++ Backport from mainline ++ 2010-08-18 Paolo Bonzini ++ ++ PR middle-end/45292 ++ * optabs.c (expand_bool_compare_and_swap): Expand pending ++ pops before trying the optab. ++ ++2010-08-17 Uros Bizjak ++ ++ PR target/45296 ++ * reginfo.c (globalize_reg): Reject stack registers. ++ ++2010-08-16 Changpeng Fang ++ ++ Backport from mainline: ++ 2010-08-12 Changpeng Fang ++ ++ 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 ++ ++ Backport from mainline: ++ 2010-08-09 Richard Guenther ++ ++ PR middle-end/44632 ++ * function.c (gimplify_parameters): Do not clear addressable ++ bit of the original parameter. ++ ++2010-08-14 John David Anglin ++ ++ Revert: ++ 2010-08-08 John David Anglin ++ ++ 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 ++ ++ PR middle-end/45262 ++ * fold-const.c (make_range) : 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 ++ ++ 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 ++ ++ Backport from mainline. ++ 2010-07-17 John David Anglin ++ ++ PR target/44805 ++ * config/pa/pa.h (CONSTANT_ALIGNMENT): Align strings to BITS_PER_WORD ++ on all targets. ++ ++2010-08-08 Richard Guenther ++ ++ 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 ++ ++ 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 ++ ++ 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 ++ ++ PR target/44942 ++ * config/sparc/sparc.c (function_arg_advance): Always take into account ++ the padding, if any. ++ ++2010-08-06 Uros Bizjak ++ ++ * expmed.c (expand_mult_const) : 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 ++ ++ * config/i386/i386.c (ix86_decompose_address): Check for SI_REG ++ using REGNO of base_reg directly. ++ ++2010-08-03 Ulrich Weigand ++ ++ * config/spu/spu.c (spu_emit_branch_hint): Do not access NOTE_KIND of ++ non-NOTE insns. ++ ++2010-08-03 Uros Bizjak ++ ++ PR target/41089 ++ * config/alpha/alpha.c (alpha_build_builtin_va_list): Mark __offset ++ as volatile. ++ ++2010-08-03 Martin Jambor ++ ++ 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 ++ ++ * config/rx/predicates.md (rx_constshift_operand): New. ++ * config/rx/rx.md (zs_cond): New. ++ (cbranchsi4): Remove mode. ++ (*cbranchsi4_): Likewise. ++ (*tstbranchsi4_): New. ++ (*tstbranchsi4r_): New. ++ (*tstbranchsi4m_eq): New. ++ (*tstbranchsi4m_ne): New. ++ (cbranchsf4): Remove mode. ++ (*cbranchsf4_): Likewise. ++ ++2010-07-31 Richard Guenther ++ ++ PR tree-optimization/45052 ++ * ipa-pure-const.c (check_stmt): Check volatileness. ++ ++2010-07-31 Richard Guenther ++ ++ * ipa-prop.c (ipa_modify_formal_parameters): Use ++ build_distinct_type_copy. ++ ++2010-07-31 Richard Guenther ++ ++ * 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 + + * 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 + +@@ -286,7 +527,7 @@ + if old_decl was DECL_ONE_ONLY. + + 2010-06-21 Jakub Jelinek +- ++ + 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 + +- 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 + + Backport from mainline + 2010-04-13 Martin Jambor + +- * 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 + +@@ -536,7 +777,7 @@ + Backport from mainline: + 2010-05-18 Steven Bosscher + +- * 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 ++2010-04-19 Ira Rosen + + 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 ++2010-04-01 Ralf Corsépius + + * config.gcc (lm32-*-rtems*): Add t-lm32. + +-2010-04-01 Joel Sherrill ++2010-04-01 Joel Sherrill + + * 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 +- Jack Howarth ++ 2010-03-30 Seongbae Park ++ Jack Howarth + + * 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 +- Jack Howarth ++2010-03-30 Seongbae Park ++ Jack Howarth + + * 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 +- Rainer Orth ++ Rainer Orth + + * 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 +- Jack Howarth ++2010-03-18 Francois-Xavier Coudert ++ Jack Howarth + + 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 ++2010-03-16 Rainer Orth + + * 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 ++2010-03-06 Alexandre Oliva + + * 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 ++2010-02-18 Sebastian Huber + + * 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 ++2010-02-16 Ira Rosen + + 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 +- Jakub Jelinek ++2010-02-16 Jack Howarth ++ Jakub Jelinek + + PR target/42854 + * config/darwin.h (ASM_WEAKEN_DECL): Don't check weak attribute +@@ -4511,7 +4752,7 @@ + + 2010-02-12 Dave Korn + Jack Howarth +- Iain Sandoe ++ Iain Sandoe + + 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 ++2010-01-14 Andrey Belevantsev + + 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 ++ ++ 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 ++ ++ * g++.dg/init/value8.C: New. ++ ++2010-08-20 Jakub Jelinek ++ ++ PR fortran/45344 ++ Backport from mainline ++ 2010-05-14 Jakub Jelinek ++ ++ * gfortran.dg/gomp/pr44036-1.f90: Adjust. ++ ++2010-08-17 Uros Bizjak ++ ++ PR target/45296 ++ * gcc.target/i386/pr45296.c: New test. ++ ++2010-08-16 Changpeng Fang ++ ++ PR tree-optimization/45241 ++ * gcc.dg/vect/no-tree-pre-pr45241.c: New test. ++ ++2010-08-14 Uros Bizjak ++ ++ * 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 ++ ++ 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 ++ ++ PR debug/45055 ++ PR rtl-optimization/45137 ++ * gcc.dg/pr45055.c: New test. ++ ++2010-08-08 Uros Bizjak ++ ++ * 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 ++ ++ PR middle-end/45034 ++ * gcc.c-torture/execute/pr45034.c: New testcase. ++ ++2010-08-08 Richard Guenther ++ ++ PR tree-optimization/45109 ++ * gcc.c-torture/compile/pr45109.c: New testcase. ++ ++2010-08-08 Uros Bizjak ++ ++ * 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 ++ ++ * gcc.dg/tree-ssa/sra-10.c: Do not dump esra details. ++ ++ Backport from mainline: ++ 2010-04-22 Uros Bizjak ++ ++ * gcc.dg/graphite/interchange-0.c: Fix dg-final directive. ++ ++2010-08-05 Janus Weil ++ ++ PR fortran/44929 ++ * gfortran.dg/allocate_derived_3.f90: New. ++ ++2010-08-04 Uros Bizjak ++ ++ Backport from mainline: ++ 2010-07-20 Bingfeng Mei ++ ++ * gcc.dg/lto/20090313_0.c: Use dg-require-effective-target ++ sync_char_short. ++ ++ 2010-06-24 Steve Ellcey ++ ++ 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 ++ ++ PR tree-optimization/44914 ++ * g++.dg/tree-ssa/pr44914.C: New test. ++ ++2010-08-02 Uros Bizjak ++ ++ * 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 ++ ++ 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 + +- 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 + + Backport from mainline + 2010-04-13 Martin Jambor + +- * gcc.dg/tree-ssa/sra-9.c: New test. ++ * gcc.dg/tree-ssa/sra-9.c: New test. + + 2010-06-28 Rainer Orth + +@@ -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 + + 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 ++ ++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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -65,13 +65,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -88,14 +88,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -112,12 +112,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -134,14 +134,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -158,14 +158,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -182,12 +182,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -204,13 +204,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -227,13 +227,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -250,12 +250,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -272,13 +272,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -295,14 +295,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -319,14 +319,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -343,13 +343,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -366,12 +366,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -388,13 +388,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -411,14 +411,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -435,14 +435,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -459,13 +459,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -482,12 +482,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -504,14 +504,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -528,12 +528,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -550,13 +550,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -573,13 +573,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -596,12 +596,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -618,12 +618,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -640,14 +640,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -664,14 +664,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; ++ sa t1; + return 0; + } + +@@ -50,10 +50,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -65,8 +65,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; ++ sa t1; ++ sa t3; + return 0; + } + +@@ -78,10 +78,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; + return 0; + } + +@@ -93,7 +93,7 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; ++ sa t5; + return 0; + } + +@@ -105,8 +105,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -118,8 +118,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t7; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -131,10 +131,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa(a))) == 2> t2; ++ sa t1; ++ sa(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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -68,14 +68,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -93,14 +93,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -118,13 +118,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -142,13 +142,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -166,14 +166,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -191,14 +191,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -216,13 +216,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -55,8 +55,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; ++ sa t1; ++ sa t3; + return 0; + } + +@@ -69,10 +69,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; + return 0; + } + +@@ -85,8 +85,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; ++ sa t1; ++ sa t5; + return 0; + } + +@@ -99,9 +99,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; ++ sa t1; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -114,9 +114,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t7; ++ sa t1; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -129,11 +129,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -146,10 +146,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -162,14 +162,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +-// sa t7; +-// sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++// sa t7; ++// sa t8; + return 0; + } + +@@ -182,10 +182,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -198,10 +198,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -214,11 +214,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -231,12 +231,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -249,14 +249,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +-// sa t5; +-// sa t6; +-// sa t7; +-// sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++// sa t5; ++// sa t6; ++// sa t7; ++// sa t8; + return 0; + } + +@@ -269,9 +269,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; ++ sa t1; ++ sa t3; ++ sa t5; + return 0; + } + +@@ -284,10 +284,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -300,10 +300,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -316,12 +316,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -334,14 +334,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +-// sa t6; +-// sa t7; +-// sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++// sa t6; ++// sa t7; ++// sa t8; + return 0; + } + +@@ -354,14 +354,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +-// sa t7; +-// sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++// sa t7; ++// sa t8; + return 0; + } + +@@ -374,14 +374,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +-// sa t6; +- sa t7; +-// sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++// sa t6; ++ sa t7; ++// sa t8; + return 0; + } + +@@ -394,14 +394,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -414,8 +414,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -428,8 +428,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t7; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -442,10 +442,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -458,8 +458,8 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t6; +- sa t7; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -472,10 +472,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -488,10 +488,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -58,12 +58,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -77,10 +77,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -94,10 +94,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -111,11 +111,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -129,12 +129,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -148,10 +148,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; + return 0; + } + +@@ -165,9 +165,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; ++ sa t1; ++ sa t3; ++ sa t5; + return 0; + } + +@@ -181,10 +181,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -198,10 +198,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -215,12 +215,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -234,11 +234,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; + return 0; + } + +@@ -252,12 +252,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -271,12 +271,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -290,14 +290,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -311,9 +311,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; ++ sa t1; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -327,9 +327,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t7; ++ sa t1; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -343,11 +343,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -361,9 +361,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t6; +- sa t7; ++ sa t1; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -377,11 +377,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -395,11 +395,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -413,11 +413,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -431,10 +431,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -448,10 +448,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -465,11 +465,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -483,12 +483,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -502,12 +502,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -521,12 +521,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -540,13 +540,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -560,14 +560,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -581,10 +581,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -598,11 +598,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -616,12 +616,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -635,10 +635,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -652,12 +652,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -671,12 +671,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -690,11 +690,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; + return 0; + } + +@@ -708,12 +708,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -727,12 +727,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -746,14 +746,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -767,10 +767,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -784,10 +784,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -801,12 +801,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -820,10 +820,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t6; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -837,12 +837,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -856,12 +856,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -875,12 +875,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -894,12 +894,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -913,14 +913,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -934,12 +934,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -953,14 +953,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -974,14 +974,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -995,9 +995,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1011,10 +1011,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1028,10 +1028,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1045,9 +1045,9 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t6; +- sa t7; +- sa t8; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -61,11 +61,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -80,11 +80,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -99,12 +99,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -119,13 +119,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -140,12 +140,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -160,12 +160,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -180,13 +180,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -201,14 +201,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -223,10 +223,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -241,11 +241,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -260,12 +260,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -280,10 +280,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -298,12 +298,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -318,12 +318,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -338,11 +338,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; + return 0; + } + +@@ -357,12 +357,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -377,12 +377,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -397,14 +397,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -419,10 +419,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -437,10 +437,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -455,12 +455,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -475,10 +475,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t6; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -493,12 +493,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -513,12 +513,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -533,12 +533,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -553,12 +553,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -573,14 +573,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -595,12 +595,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -615,14 +615,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -637,14 +637,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -659,10 +659,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -677,11 +677,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -696,11 +696,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -715,10 +715,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -733,11 +733,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -752,11 +752,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -771,12 +771,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -791,13 +791,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -812,10 +812,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -830,11 +830,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -849,12 +849,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -869,10 +869,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -887,12 +887,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -907,12 +907,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -927,12 +927,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -947,13 +947,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -968,14 +968,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -990,12 +990,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1010,14 +1010,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1032,14 +1032,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1054,11 +1054,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1073,12 +1073,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1093,12 +1093,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1113,11 +1113,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1132,12 +1132,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -1152,12 +1152,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -1172,14 +1172,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1194,12 +1194,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1214,14 +1214,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1236,14 +1236,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1258,11 +1258,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1277,12 +1277,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1297,12 +1297,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1317,11 +1317,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1336,13 +1336,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1357,14 +1357,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1379,14 +1379,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1401,13 +1401,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1422,10 +1422,10 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; // Calls os::operator<<(int) ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -63,12 +63,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -84,13 +84,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -106,14 +106,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -129,11 +129,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -149,12 +149,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -170,13 +170,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -192,11 +192,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -212,13 +212,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -234,13 +234,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -256,12 +256,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -277,13 +277,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -299,14 +299,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -322,12 +322,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -343,14 +343,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -366,14 +366,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -389,11 +389,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -409,12 +409,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -430,12 +430,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -451,11 +451,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -471,12 +471,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -492,12 +492,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t7; + return 0; + } + +@@ -513,14 +513,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -536,12 +536,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -557,14 +557,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -580,14 +580,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -603,11 +603,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -623,12 +623,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -644,12 +644,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -665,11 +665,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -685,13 +685,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -707,14 +707,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -730,14 +730,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -753,13 +753,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -775,11 +775,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -795,11 +795,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; + return 0; + } + +@@ -815,12 +815,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -836,13 +836,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -858,11 +858,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -878,13 +878,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -900,13 +900,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -922,11 +922,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -942,12 +942,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -963,12 +963,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -984,11 +984,11 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t2; +- sa t3; +- sa t6; +- sa t7; +- sa t8; ++ sa t2; ++ sa t3; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1004,13 +1004,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1026,14 +1026,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1049,14 +1049,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1072,13 +1072,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1094,12 +1094,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1115,13 +1115,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; + return 0; + } + +@@ -1137,14 +1137,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1160,14 +1160,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1183,13 +1183,13 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1205,12 +1205,12 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t3; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t3; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa t8; + return 0; + } + +@@ -1226,14 +1226,14 @@ + const A ca = a; + volatile A va; + const volatile A cva = a; +- sa t1; +- sa t2; +- sa t3; +- sa t4; +- sa t5; +- sa t6; +- sa t7; +- sa t8; ++ sa t1; ++ sa t2; ++ sa t3; ++ sa t4; ++ sa t5; ++ sa t6; ++ sa t7; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; ++ sa 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 struct sa; + template <> struct sa {}; + +-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 t1; ++ sa 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 ++ ++ 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 ++ ++ PR c++/45315 ++ * init.c (build_new_1): Don't use build_value_init in a template. ++ ++2010-07-31 Ulrich Weigand ++ ++ 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 */ ++ int deps_missing_are_generated; /* -MG */ ++ int deps_phony; /* -MP */ + + const char *multilib; /* -imultilib */ + const char *prefix; /* -iprefix */ +@@ -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 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 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 ++ ++ PR fortran/45344 ++ Backport from mainline ++ 2010-05-14 Jakub Jelinek ++ ++ * 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 ++ ++ PR fortran/45186 ++ * trans.c (gfc_annotate_with_location): New function. ++ (trans_code): Use it. ++ ++2010-08-09 Janus Weil ++ ++ * intrinsic.texi: Correct documentation of ASINH, ACOSH and ATANH. ++ ++2010-08-07 Daniel Franke ++ ++ 2010-06-13 Daniel Franke ++ ++ 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 ++ ++ 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 ++ Janus Weil ++ ++ 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 ++ Steven G. Kargl ++ ++ 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 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; +-} +- +- + + /* 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_" + [(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_" ++ [(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 (, CCmode, ++ gen_rtx_REG (CCmode, CC_REG), const0_rtx))); ++ " ++) ++ ++;; Inverse of above ++(define_insn_and_split "*tstbranchsi4_" ++ [(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 (), 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_" + [(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 "" "m")) + (match_dup 1))) + (clobber (match_scratch:SWI 0 "="))] +- "ix86_binary_operator_ok (PLUS, mode, operands)" ++ "!(MEM_P (operands[1]) && MEM_P (operands[2]))" + "add{}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") + (set_attr "mode" "")]) +@@ -8999,7 +8999,7 @@ + (const_int 0))) + (clobber (match_scratch:SWI 0 "="))] + "ix86_match_ccmode (insn, CCNOmode) +- && ix86_binary_operator_ok (, mode, operands)" ++ && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "{}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") + (set_attr "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" +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 @@ + Generating the Doxygen Files + + 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. + + + ++ Generated files are output into separate sub directores of ++ doc/doxygen/ in the ++ build directory, based on the output format. For instance, the ++ HTML docs will be in doc/doxygen/html. ++ ++ ++ + make doc-html-doxygen + + +@@ -954,6 +962,10 @@ + + + ++ make doc-xml-single-doxygen ++ ++ ++ + make doc-pdf-doxygen + + +@@ -1204,23 +1216,30 @@ + + + +- For PDF output, something that transforms valid XML to PDF is +- required. Possible solutions include +- dblatex, +- xmlto, or prince. Other +- options are listed on the DocBook +- web pages. Please ++ For PDF output, something that transforms valid Docbook XML to PDF is ++ required. Possible solutions include dblatex, ++ xmlto, or prince. Of ++ these, dblatex is the default. Other ++ options are listed on the DocBook web pages. Please + consult the libstdc++@gcc.gnu.org list when + preparing printed manuals for current best practice and + suggestions. + + + +- Make sure that the XML documentation and markup is valid for +- any change. This can be done easily, with the validation rules +- in the Makefile, which is equivalent to doing: ++ For Texinfo output, something that transforms valid Docbook ++ XML to Texinfo is required. The default choice is docbook2X. + + ++ ++ 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: ++ ++ + + + xmllint --noout --valid xml/index.xml +@@ -1239,6 +1258,14 @@ + + + ++ Generated files are output into separate sub directores of ++ doc/docbook/ in the ++ build directory, based on the output format. For instance, the ++ HTML docs will be in doc/docbook/html. ++ ++ ++ + make doc-html-docbook + + +@@ -1492,20 +1519,90 @@ + + + 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. + + ++ ++ ++ ++ make doc-html ++ ++ + +- make doc-html ++ Generates multi-page HTML documentation in the following directories: + ++ ++ doc/libstdc++-api.html ++ ++ ++ doc/libstdc++-manual.html ++ ++ ++ + ++ ++ make doc-man ++ ++ + +- make doc-man ++ Generates man pages in the following directory: + ++ ++ doc/libstdc++-api.man ++ ++ ++ + ++ ++ make doc-pdf ++ ++ + +- make doc-pdf ++ Generates indexed PDF documentation in the following files: + ++ ++ doc/libstdc++-api.pdf ++ ++ ++ doc/libstdc++-manual.pdf ++ ++ ++ ++ ++ ++ make doc-texinfo ++ ++ ++ ++ Generates Texinfo documentation in the following files: ++ ++ ++ doc/libstdc++-manual.texinfo ++ ++ ++ ++ ++ ++ make doc-xml ++ ++ ++ ++ Generates single-file XML documentation in the following files: ++ ++ ++ doc/libstdc++-api.xml ++ ++ ++ doc/libstdc++-manual.xml ++ ++ ++ ++ ++ ++ ++ + + + +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 +-# , where is the value of the +-# FILE_VERSION_FILTER tag, and 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 , where is the value of ++# the FILE_VERSION_FILTER tag, and 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 Qt +-# Help Project / Custom Filters. ++# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the ++# custom filter to add. For more information please see ++# ++# Qt Help Project / Custom Filters. + + QHP_CUST_FILTER_ATTRS = + +-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes +-# this project's filter section matches. Qt +-# Help Project / Filter Attributes. ++# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this ++# project's ++# filter section matches. ++# ++# Qt Help Project / Filter Attributes. + + 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 @@ + tables. + */ + +-/** @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 @@ + tables. + */ + +-/** @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::type&&>(__t); } + +- /// declval, defined in . ++ /// 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 ++ 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 + 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 ++ 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 +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 ++ ++ * include/bits/stl_iterator_base_types.h: Fix doxygen warning. ++ ++ Merge in other doc patches. ++ ++ 2010-07-08 Benjamin Kosnik ++ ++ * 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 ++ * 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 ++ ++ * 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 ++ ++ * 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 ++ ++ PR libstdc++/45283 ++ * testsuite/performance/30_threads/future/polling.cc: Replace calls to ++ shared_future::is_ready. ++ ++2010-08-08 Paolo Carlini ++ ++ * 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 ++ ++ 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 ++// . ++ ++#include ++ ++// 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 + #include + ++inline bool is_ready(std::shared_future& f) ++{ ++ return f.wait_for(std::chrono::microseconds(1)); ++} ++ + void poll(std::shared_future 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 ++ ++ * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty ++ list. ++ ++2010-04-27 Andrew Haley ++ ++ * 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 ++ ++ * 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) -- 2.44.0