Index: configure
===================================================================
---- configure (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ configure (.../branches/gcc-4_5-branch) (wersja 165515)
+--- configure (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ configure (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3097,7 +3097,7 @@
# Check for target supported by gold.
case "${target}" in
# it is in the source tree, and the library has not been built yet
Index: libgcc/config.host
===================================================================
---- libgcc/config.host (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libgcc/config.host (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libgcc/config.host (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgcc/config.host (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -345,6 +345,8 @@
tmake_file="ia64/t-ia64"
;;
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
Index: libgcc/ChangeLog
===================================================================
---- libgcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libgcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libgcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,9 @@
+2010-09-12 Gerald Pfeifer <gerald@pfeifer.com>
+ Andrew Pinski <pinskia@gmail.com>
* GCC 4.5.1 released.
Index: gcc/doc/sourcebuild.texi
===================================================================
---- gcc/doc/sourcebuild.texi (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/doc/sourcebuild.texi (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/doc/sourcebuild.texi (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/doc/sourcebuild.texi (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1679,6 +1679,11 @@
@item pthread_h
Target has @code{pthread.h}.
hardware (i.e. fast).
Index: gcc/doc/extend.texi
===================================================================
---- gcc/doc/extend.texi (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/doc/extend.texi (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/doc/extend.texi (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/doc/extend.texi (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1345,9 +1345,7 @@
@cindex VLAs
declaration and deallocated when the brace-level is exited. For
Index: gcc/doc/invoke.texi
===================================================================
---- gcc/doc/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/doc/invoke.texi (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/doc/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/doc/invoke.texi (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -5776,7 +5776,8 @@
Optimize yet more. @option{-O3} turns on all optimizations specified
by @option{-O2} and also turns on the @option{-finline-functions},
@item -O0
@opindex O0
+Index: gcc/ira-conflicts.c
+===================================================================
+--- gcc/ira-conflicts.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ira-conflicts.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -825,6 +825,21 @@
+ IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a),
+ temp_hard_reg_set);
+ }
++
++ if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
++ {
++ int regno;
++
++ /* Allocnos bigger than the saved part of call saved
++ regs must conflict with them. */
++ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
++ if (!TEST_HARD_REG_BIT (call_used_reg_set, regno)
++ && HARD_REGNO_CALL_PART_CLOBBERED (regno, a->mode))
++ {
++ SET_HARD_REG_BIT (ALLOCNO_CONFLICT_HARD_REGS (a), regno);
++ SET_HARD_REG_BIT (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), regno);
++ }
++ }
+ }
+ if (optimize && ira_conflicts_p
+ && internal_flag_ira_verbose > 2 && ira_dump_file != NULL)
Index: gcc/tree-complex.c
===================================================================
---- gcc/tree-complex.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-complex.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-complex.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-complex.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -665,12 +665,16 @@
update_complex_assignment (gimple_stmt_iterator *gsi, tree r, tree i)
{
}
+Index: gcc/tree-loop-distribution.c
+===================================================================
+--- gcc/tree-loop-distribution.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-loop-distribution.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -321,38 +321,6 @@
+ return res;
+ }
+
+-/* Propagate phis in BB b to their uses and remove them. */
+-
+-static void
+-prop_phis (basic_block b)
+-{
+- gimple_stmt_iterator psi;
+- gimple_seq phis = phi_nodes (b);
+-
+- for (psi = gsi_start (phis); !gsi_end_p (psi); )
+- {
+- gimple phi = gsi_stmt (psi);
+- tree def = gimple_phi_result (phi), use = gimple_phi_arg_def (phi, 0);
+-
+- gcc_assert (gimple_phi_num_args (phi) == 1);
+-
+- if (!is_gimple_reg (def))
+- {
+- imm_use_iterator iter;
+- use_operand_p use_p;
+- gimple stmt;
+-
+- FOR_EACH_IMM_USE_STMT (stmt, iter, def)
+- FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
+- SET_USE (use_p, use);
+- }
+- else
+- replace_uses_by (def, use);
+-
+- remove_phi_node (&psi, true);
+- }
+-}
+-
+ /* Tries to generate a builtin function for the instructions of LOOP
+ pointed to by the bits set in PARTITION. Returns true when the
+ operation succeeded. */
+@@ -422,11 +390,13 @@
+ if (res && !copy_p)
+ {
+ unsigned nbbs = loop->num_nodes;
+- basic_block src = loop_preheader_edge (loop)->src;
+- basic_block dest = single_exit (loop)->dest;
+- prop_phis (dest);
+- make_edge (src, dest, EDGE_FALLTHRU);
++ edge exit = single_exit (loop);
++ basic_block src = loop_preheader_edge (loop)->src, dest = exit->dest;
++ redirect_edge_pred (exit, src);
++ exit->flags &= ~(EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
++ exit->flags |= EDGE_FALLTHRU;
+ cancel_loop_tree (loop);
++ rescan_loop_exit (exit, false, true);
+
+ for (i = 0; i < nbbs; i++)
+ delete_basic_block (bbs[i]);
+@@ -1192,8 +1162,13 @@
+
+ FOR_EACH_LOOP (li, loop, 0)
+ {
+- VEC (gimple, heap) *work_list = VEC_alloc (gimple, heap, 3);
++ VEC (gimple, heap) *work_list = NULL;
+
++ /* If the loop doesn't have a single exit we will fail anyway,
++ so do that early. */
++ if (!single_exit (loop))
++ continue;
++
+ /* With the following working list, we're asking distribute_loop
+ to separate the stores of the loop: when dependences allow,
+ it will end on having one store per loop. */
+Index: gcc/cfgloopmanip.c
+===================================================================
+--- gcc/cfgloopmanip.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cfgloopmanip.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1538,7 +1538,10 @@
+ /* Duplicate loop. */
+ if (!cfg_hook_duplicate_loop_to_header_edge (loop, entry, 1,
+ NULL, NULL, NULL, 0))
+- return NULL;
++ {
++ entry->flags |= irred_flag;
++ return NULL;
++ }
+
+ /* After duplication entry edge now points to new loop head block.
+ Note down new head as second_head. */
Index: gcc/optabs.c
===================================================================
---- gcc/optabs.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/optabs.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/optabs.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/optabs.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -7033,6 +7033,7 @@
if (icode == CODE_FOR_nothing)
return NULL_RTX;
start_sequence ();
Index: gcc/DATESTAMP
===================================================================
---- gcc/DATESTAMP (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/DATESTAMP (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/DATESTAMP (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/DATESTAMP (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1 +1 @@
-20100731
-+20101015
++20101116
Index: gcc/postreload.c
===================================================================
---- gcc/postreload.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/postreload.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/postreload.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/postreload.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -810,7 +810,7 @@
rtx reg = SET_DEST (set);
rtx plus = SET_SRC (set);
rtx set = NULL_RTX;
if (next)
set = single_set (next);
+Index: gcc/tree.h
+===================================================================
+--- gcc/tree.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree.h (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2578,9 +2578,11 @@
+ (FUNCTION_DECL_CHECK (NODE)->function_decl.personality)
+
+ /* Nonzero for a given ..._DECL node means that the name of this node should
+- be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL,
+- the body of the function should also be ignored. */
+-#define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
++ be ignored for symbolic debug purposes. For a TYPE_DECL, this means that
++ the associated type should be ignored. For a FUNCTION_DECL, the body of
++ the function should also be ignored. */
++#define DECL_IGNORED_P(NODE) \
++ (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
+
+ /* Nonzero for a given ..._DECL node means that this node represents an
+ "abstract instance" of the given declaration (e.g. in the original
Index: gcc/rtlanal.c
===================================================================
---- gcc/rtlanal.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/rtlanal.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/rtlanal.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/rtlanal.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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. */
|| !NONJUMP_INSN_P (prev)
Index: gcc/configure
===================================================================
---- gcc/configure (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/configure (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/configure (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/configure (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -25454,27 +25454,58 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
Index: gcc/builtins.c
===================================================================
---- gcc/builtins.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/builtins.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/builtins.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/builtins.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -100,9 +100,9 @@
static rtx expand_builtin_mathfn (tree, rtx, rtx);
static rtx expand_builtin_mathfn_2 (tree, rtx, rtx);
Index: gcc/fold-const.c
===================================================================
---- gcc/fold-const.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fold-const.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fold-const.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fold-const.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -4737,9 +4737,9 @@
n_high = range_binop (MINUS_EXPR, exp_type,
build_int_cst (exp_type, 0),
/* 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))
+@@ -12096,8 +12097,14 @@
+ if (integer_pow2p (sval) && tree_int_cst_sgn (sval) > 0)
+ {
+ tree sh_cnt = TREE_OPERAND (arg1, 1);
+- unsigned long pow2 = exact_log2 (TREE_INT_CST_LOW (sval));
++ unsigned long pow2;
+
++ if (TREE_INT_CST_LOW (sval))
++ pow2 = exact_log2 (TREE_INT_CST_LOW (sval));
++ else
++ pow2 = exact_log2 (TREE_INT_CST_HIGH (sval))
++ + HOST_BITS_PER_WIDE_INT;
++
+ if (strict_overflow_p)
+ fold_overflow_warning (("assuming signed overflow does not "
+ "occur when simplifying A / (B << N)"),
Index: gcc/reorg.c
===================================================================
---- gcc/reorg.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/reorg.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/reorg.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/reorg.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3458,9 +3458,13 @@
We do this by deleting the INSN containing the SEQUENCE, then
re-emitting the insns separately, and then deleting the RETURN.
}
Index: gcc/DEV-PHASE
===================================================================
---- gcc/DEV-PHASE (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/DEV-PHASE (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/DEV-PHASE (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/DEV-PHASE (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1 @@
+prerelease
Index: gcc/ChangeLog
===================================================================
---- gcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1,3 +1,714 @@
+--- gcc/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,946 @@
++2010-11-15 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/46491
++ Backport from mainline
++
++ 2010-05-14 Jan Hubicka <jh@suse.cz>
++ * ipa-pure-const.c (check_stmt): Do not use memory_identifier_string.
++
++2010-11-12 Olivier Hainque <hainque@adacore.com>
++
++ * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Rewrite
++ switch on insn codes as sequence of ifs.
++
++2010-11-12 Alexander Monakov <amonakov@ispras.ru>
++
++ Backport from mainline:
++ 2010-08-19 Andrey Belevantsev <abel@ispras.ru>
++
++ PR rtl-optimization/44691
++ * sel-sched.c (count_occurrences_1): Also punt when SUBREG_REG
++ is not a register.
++
++2010-11-12 Richard Guenther <rguenther@suse.de>
++
++ Backport from mainline
++ 2010-11-09 Richard Guenther <rguenther@suse.de>
++
++ PR tree-optimization/46355
++ * tree-loop-distribution.c (tree_loop_distribution): Do not
++ distribute loops without a single exit.
++
++ 2010-11-02 Richard Guenther <rguenther@suse.de>
++
++ PR tree-optimization/46177
++ * tree-loop-distribution.c (prop_phis): Use
++ mark_virtual_phi_result_for_renaming.
++
++ 2010-11-09 Richard Guenther <rguenther@suse.de>
++
++ PR tree-optimization/46177
++ * tree-loop-distribution.c (prop_phis): Remove.
++ (generate_builtin): Re-use the old loop exit edge to avoid
++ needing to update PHI nodes.
++
++2010-11-11 Jakub Jelinek <jakub@redhat.com>
++
++ Backport from mainline
++ 2010-11-05 Jakub Jelinek <jakub@redhat.com>
++
++ PR c/44772
++ * c-decl.c (warn_cxx_compat_finish_struct): Don't call
++ pointer_set_contains if DECL_NAME is NULL.
++
++ PR tree-optimization/46099
++ * tree-parloops.c (take_address_of): Add GSI argument. Return NULL
++ if it is NULL and uid wasn't found in the hash table. Just fold the
++ result if it is NULL otherwise. Insert other potentially needed
++ stmts right before current stmt instead of on the entry edge.
++ (struct elv_data): Add gsi and reset fields.
++ (eliminate_local_variables_1): Adjust caller. If take_address_of
++ failed for debug stmt, set dta->reset and return.
++ (eliminate_local_variables_stmt): Change STMT argument for GSI,
++ pass GSI through to the callback, handle resetting of debug stmts.
++ (eliminate_local_variables): Adjust caller. Process debug stmts
++ in second phase.
++
++ PR middle-end/43690
++ * gimplify.c (gimplify_asm_expr): If a "m" input is a
++ {pre,post}{in,de}crement, fail.
++
++ 2010-11-03 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/46165
++ * tree-ssa-pre.c (eliminate): Return TODO_cleanup_cfg if changing
++ a normal call into noreturn call.
++
++ PR tree-optimization/46107
++ * cfgloopmanip.c (loop_version): Set irred_flag back into entry->flags
++ if cfg_hook_duplicate_loop_to_header_edge failed.
++
++2010-11-10 Uros Bizjak <ubizjak@gmail.com>
++
++ PR middle-end/46419
++ * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Swap __hisi and __losi.
++ (_mm_cvtpu16_ps): Ditto.
++
++2010-11-09 Sebastian Pop <sebastian.pop@amd.com>
++
++ PR tree-optimization/45314
++ Backport of revision 163132.
++ * graphite-sese-to-poly.c (rewrite_phi_out_of_ssa): Always insert out
++ of SSA copies on edges except for loop->latch.
++
++2010-11-09 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
++
++ PR rtl-optimization/46237
++ * ira-conflicts.c (ira_build_conflicts): Record conflicts for call
++ saved hard regs if they might get partially clobbered.
++
++2010-11-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
++
++ PR debug/45939
++ * var-tracking.c (emit_note_insn_var_location): Make sure that
++ call related var location notes come before the normal ones.
++
++2010-11-04 Uros Bizjak <ubizjak@gmail.com>
++
++ Revert:
++ 2010-10-30 Uros Bizjak <ubizjak@gmail.com>
++
++ PR middle-end/44569
++ * lower-suberg.c (simplify_subreg_concatn): For VOIDmode elements,
++ determine the mode of a subreg by GET_MODE_INNER of CONCATN RTX.
++
++2010-11-04 Alan Modra <amodra@gmail.com>
++
++ * config/rs6000/rs6000.c (rs6000_pic_labelno): Make static.
++ (rs6000_emit_load_toc_table): Don't use rs6000_pic_labelno when
++ TARGET_SECURE_PLT.
++ * config/rs6000/sysv4.h (rs6000_pic_labelno): Don't declare.
++ * config/rs6000/rs6000.md (load_toc_v4_PIC_3b): Use "b" constraint
++ on input, "r" on output.
++
++2010-11-02 Ira Rosen <irar@il.ibm.com>
++
++ PR tree-optimization/45902
++ * tree-vectorizer.h (enum stmt_vec_info_type): Add new value for shift.
++ (vect_get_slp_defs): Add arguments.
++ * tree-vect-stmts.c (cost_for_stmt): Handle shifts.
++ (vect_get_vec_def_for_operand): Use operand's
++ type to determine number of units in the created vector.
++ (vect_get_vec_defs): Pass scalar operands to vect_get_slp_defs.
++ (vectorizable_shift): New function.
++ (vectorizable_operation): Move code that handles shifts to
++ vectorizable_shift.
++ (vectorizable_type_demotion): Pass scalar operands to
++ vect_get_slp_defs.
++ (vectorizable_type_promotion, vectorizable_store): Likewise.
++ (vect_analyze_stmt): Call vectorizable_shift.
++ (vect_transform_stmt): Likewise.
++ * tree-vect-slp.c (vect_get_constant_vectors): Add new argument.
++ Use it as the operand to create vectors except for stores.
++ (vect_get_slp_defs): Add new arguments. Pass them to
++ vect_get_constant_vectors.
++
++2010-10-30 Uros Bizjak <ubizjak@gmail.com>
++
++ PR middle-end/44569
++ * lower-suberg.c (simplify_subreg_concatn): For VOIDmode elements,
++ determine the mode of a subreg by GET_MODE_INNER of CONCATN RTX.
++
++2010-10-30 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/46153
++ * config/i386/sse.md (sse_movhlps_exp): Use destination
++ returned from ix86_fixup_binary_operands to expand insn.
++ (sse_movlhps_exp): Ditto.
++ (sse_loadhps_exp): Ditto.
++ (sse_loadlps_exp): Ditto.
++ (sse2_loadhpd_exp): Ditto.
++ (sse2_loadlpd_exp): Ditto.
++
++2010-10-29 Richard Henderson <rth@redhat.com>
++
++ PR rtl-opt/46226
++ * stmt.c (expand_asm_operands): Call do_pending_stack_adjust
++ for asm goto.
++
++2010-10-27 Eric Botcazou <ebotcazou@adacore.com>
++
++ * config/sparc/sol2-unwind.h (sparc64_fallback_frame_state): Adjust
++ for newer Solaris 10 release.
++ (sparc_fallback_frame_state): Likewise.
++
++2010-10-26 Ira Rosen <irar@il.ibm.com>
++
++ PR tree-optimization/46167
++ * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Check that
++ there is basic block for the statement.
++
++2010-10-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * reg-stack.c (convert_regs_1): Return boolean value, true if the CFG
++ has been modified.
++ (convert_regs_2): Likewise. Adjust calls to convert_regs_1.
++ (convert_regs): Adjust calls to convert_regs_2. Clean up the CFG if
++ it has been modified.
++
++2010-10-22 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/46098
++ * config/i386/sse.md (*avx_movup<avxmodesuffixf2c><avxmodesuffix>):
++ Rename from avx_movup<avxmodesuffixf2c><avxmodesuffix>.
++ (avx_movup<avxmodesuffixf2c><avxmodesuffix>): New expander.
++ (*<sse>_movup<ssemodesuffixf2c>): Rename from
++ <sse>_movup<ssemodesuffixf2c>.
++ (<sse>_movup<ssemodesuffixf2c>): New expander.
++ (*avx_movdqu<avxmodesuffix>): Rename from avx_movdqu<avxmodesuffix>.
++ (avx_movdqu<avxmodesuffix>): New expander.
++ (*sse2_movdqu): Rename from sse2_movdqu.
++ (sse2_movdqu): New expander.
++
++2010-10-22 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/45946
++ * config/i386/i386.md (*pushti2): New insn pattern.
++ (pushti2 splitter): New insn splitter.
++
++2010-10-20 Vladimir Makarov <vmakarov@redhat.com>
++
++ PR fortran/42169
++ * ira-emit.c (store_can_be_removed_p): Return false instead of
++ gcc_unreachable.
++
++2010-10-20 Eric Botcazou <ebotcazou@adacore.com>
++
++ * stor-layout.c (skip_simple_constant_arithmetic): New function.
++ (self_referential_size): Use it instead of skip_simple_arithmetic.
++
++2010-10-18 Jakub Jelinek <jakub@redhat.com>
++
++ PR middle-end/46019
++ * fold-const.c (fold_binary_loc): If integer_pow2p has
++ TREE_INT_CST_LOW zero, look at TREE_INT_CST_HIGH.
++
++2010-10-16 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gimplify.c (gimplify_type_sizes) <ARRAY_TYPE>: If the type is to be
++ ignored for debug info purposes, do not clear the DECL_IGNORED_P flag
++ on the bounds of its domain.
++ * tree.h (DECL_IGNORED_P): Document effect on TYPE_DECL specifically.
++
+2010-10-15 Joseph Myers <joseph@codesourcery.com>
+
+ * doc/extend.texi (Variable Length): Don't refer to VLAs not
+
+2010-09-29 Kai Tietz <kai.tietz@onevision.com>
+
-+ * config/i386/mingw32.h (TARGET_64BIT): replaced by
-+ TARGET_64BIT_DEFAULT in #if check.
++ * config/i386/mingw32.h (TARGET_64BIT): replaced by
++ TARGET_64BIT_DEFAULT in #if check.
+
+2010-09-28 Richard Henderson <rth@redhat.com>
+
+ * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Output 8 bytes
-+ when 8 bytes are requested.
++ when 8 bytes are requested.
+
+2010-09-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ adjustments are multiple of preferred stack boundary after
+ stack alignment.
+
-+2010-09-20 Rafael Carre <rafael.carre@gmail.com>
++2010-09-20 Rafael Carre <rafael.carre@gmail.com>
+
+ PR target/45726
+ * arm.md (arm_movtas_ze): Only enable on machine with MOVT.
+ 2010-09-01 Ian Bolton <ian.bolton@arm.com>
+
+ * Makefile.in (tree-switch-conversion.o): Update dependencies.
-+
++
+ 2010-08-19 Ian Bolton <ian.bolton@arm.com>
-+
++
+ PR target/45070
+ * config/arm/arm.c (arm_output_epilogue): Ensure that return
+ value of size 1-3 is handled correctly.
+ type for the conditional has wide enough range.
+
+ 2010-08-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
-+
++
+ * config/arm/linux-atomic.c (SUBWORD_VAL_CAS): Instantiate with
+ 'unsigned short' and 'unsigned char' instead of 'short' and 'char'.
+ (SUBWORD_BOOL_CAS): Likewise.
+ (FETCH_AND_OP_WORD): Parenthesise INF_OP
+ (SUBWORD_SYNC_OP): Likewise.
+ (OP_AND_FETCH_WORD): Likewise.
-+
++
+2010-09-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/45458
2010-07-31 Release Manager
* GCC 4.5.1 released.
-@@ -105,8 +816,8 @@
+@@ -105,8 +1048,8 @@
2010-07-19 Bingfeng Mei <bmei@broadcom.com>
* ddg.c (create_ddg): Exclude nodes of debug_insn in counting nodes
2010-07-15 Jie Zhang <jie@codesourcery.com>
-@@ -286,7 +997,7 @@
+@@ -286,7 +1229,7 @@
if old_decl was DECL_ONE_ONLY.
2010-06-21 Jakub Jelinek <jakub@redhat.com>
PR target/44575
* config/i386/i386.c (ix86_gimplify_va_arg): When copying
va_arg from a set of register save slots into a temporary,
-@@ -392,24 +1103,24 @@
+@@ -392,24 +1335,24 @@
Backport from mainline
2010-05-17 Martin Jambor <mjambor@suse.cz>
2010-06-27 Jan Hubicka <jh@suse.cz>
-@@ -536,7 +1247,7 @@
+@@ -536,7 +1479,7 @@
Backport from mainline:
2010-05-18 Steven Bosscher <steven@gcc.gnu.org>
after .section directive; just print it before the directive
instead.
-@@ -1659,7 +2370,7 @@
+@@ -1659,7 +2602,7 @@
* tree-tailcall.c (find_tail_calls): Verify the tail call
properly.
PR tree-optimization/43771
* tree-vect-slp.c (vect_supported_load_permutation_p): Check that
-@@ -1925,11 +2636,11 @@
+@@ -1925,11 +2868,11 @@
* Makefile.in ($(out_object_file)): Depend on
gt-$(basename $(notdir $(out_file))).h.
* config.gcc: Add lm32-*-rtems*.
* config/lm32/rtems.h: New file.
-@@ -1984,8 +2695,8 @@
+@@ -1984,8 +2927,8 @@
PR middle-end/43602
Revert
* tree-profile.c (tree_init_ic_make_global_vars): Make static
variables TLS.
-@@ -2276,8 +2987,8 @@
+@@ -2276,8 +3219,8 @@
* config/s390/s390.c (s390_emit_prologue): Omit issuing a dynamic
stack check if the mask would be zero.
* tree-profile.c (tree_init_ic_make_global_vars): Make static
variables TLS.
-@@ -2620,7 +3331,7 @@
+@@ -2620,7 +3563,7 @@
instead of callq.
2010-03-22 Janis Johnson <janis187@us.ibm.com>
* doc/sourcebuild.texi (Test Directives): Split into six
subsections, with most of the current text in new subsections
-@@ -2775,8 +3486,8 @@
+@@ -2775,8 +3718,8 @@
(sparc_file_end): Emit a hidden comdat symbol for the PIC
thunk if possible. Output CFI information as needed.
PR target/36399
* config/i386/i386.h: Fix ABI on darwin x86-32.
-@@ -2919,7 +3630,7 @@
+@@ -2919,7 +3862,7 @@
* graphite-sese-to-poly.c (split_reduction_stmt): Skip debug
statements before splitting block.
* doc/sourcebuild.texi (Testsuites): Fix markup.
Use pathnames relative to gcc/testsuite.
-@@ -3531,7 +4242,7 @@
+@@ -3531,7 +4474,7 @@
* tree-vect-loop.c (vect_transform_loop): Kill out-of-loop debug
uses of relevant DEFs that are dead outside the loop too.
* var-tracking.c (dataflow_set_merge): Swap src and src2.
Reverted:
-@@ -4313,7 +5024,7 @@
+@@ -4313,7 +5256,7 @@
* config/spu/spu-c.c (spu_resolve_overloaded_builtin): Call
lang_hooks.types_compatible_p instead of comptypes.
* config/arm/lib1funcs.asm (__prefer_thumb__): New define.
(udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Use Thumb-1 variant
-@@ -4384,7 +5095,7 @@
+@@ -4384,7 +5327,7 @@
statements ...
(vrp_visit_phi_node): ... but only for loop PHI nodes.
PR tree-optimization/43074
* tree-vectorizer.h (VECTORIZABLE_CYCLE_DEF): New.
-@@ -4412,8 +5123,8 @@
+@@ -4412,8 +5355,8 @@
flag_var_tracking_assignments.
* Makefile.in (var-tracking.o): Adjust dependencies.
PR target/42854
* config/darwin.h (ASM_WEAKEN_DECL): Don't check weak attribute
-@@ -4511,7 +5222,7 @@
+@@ -4511,7 +5454,7 @@
2010-02-12 Dave Korn <dave.korn.cygwin@gmail.com>
Jack Howarth <howarth@bromo.med.uc.edu>
PR target/42982
Partial revert of unintended change in fix for PR41605.
-@@ -5934,7 +6645,7 @@
+@@ -5934,7 +6877,7 @@
(maybe_tidy_empty_bb): Delete prototype.
(purge_empty_blocks): Declare.
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 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr45034.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,45 @@
+extern void abort (void);
+static void fixnum_neg(signed char x, signed char *py, int *pv)
Index: gcc/testsuite/gcc.c-torture/execute/pr45070.c
===================================================================
--- gcc/testsuite/gcc.c-torture/execute/pr45070.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr45070.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr45070.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,52 @@
+/* PR45070 */
+extern void abort(void);
Index: gcc/testsuite/gcc.c-torture/execute/pr45695.c
===================================================================
--- gcc/testsuite/gcc.c-torture/execute/pr45695.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr45695.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr45695.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,32 @@
+/* PR rtl-optimization/45695 */
+
Index: gcc/testsuite/gcc.c-torture/execute/pr40386.c
===================================================================
--- gcc/testsuite/gcc.c-torture/execute/pr40386.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr40386.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr40386.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,99 @@
+/* { dg-options "-fno-ira-share-spill-slots" } */
+#define CHAR_BIT 8
Index: gcc/testsuite/gcc.c-torture/execute/pr40386.x
===================================================================
--- gcc/testsuite/gcc.c-torture/execute/pr40386.x (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr40386.x (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr40386.x (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,2 @@
+set additional_flags "-fno-ira-share-spill-slots"
+return 0
+Index: gcc/testsuite/gcc.c-torture/execute/pr46019.c
+===================================================================
+--- gcc/testsuite/gcc.c-torture/execute/pr46019.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.c-torture/execute/pr46019.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,14 @@
++/* PR middle-end/46019 */
++
++extern void abort (void);
++
++int
++main (void)
++{
++ unsigned long long l = 0x40000000000ULL;
++ int n;
++ for (n = 0; n < 8; n++)
++ if (l / (0x200000000ULL << n) != (0x200 >> n))
++ 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 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr44858.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,28 @@
+/* PR rtl-optimization/44858 */
+
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 165515)
++++ gcc/testsuite/gcc.c-torture/execute/pr45262.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,33 @@
+/* PR middle-end/45262 */
+
Index: gcc/testsuite/gcc.c-torture/compile/pr45728.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/pr45728.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr45728.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/compile/pr45728.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,17 @@
+/* PR rtl-optimization/45728 */
+
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 165515)
++++ gcc/testsuite/gcc.c-torture/compile/pr45109.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,38 @@
+struct o_fsm_t;
+struct o_fsm_event_t;
+ o_plist_parser_t parser;
+ o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start));
+}
+Index: gcc/testsuite/gcc.c-torture/compile/pr46107.c
+===================================================================
+--- gcc/testsuite/gcc.c-torture/compile/pr46107.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.c-torture/compile/pr46107.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,16 @@
++/* PR tree-optimization/46107 */
++
++int foo (void) __attribute__ ((noreturn));
++
++void
++bar (int x, int *y, int z)
++{
++ static void *j[] = { &&l1, &&l2 };
++l1:
++ if (*y)
++ goto *j[z];
++ foo ();
++l2:
++ *y ^= (x & 1) ? -1 : 0;
++ goto *j[x];
++}
Index: gcc/testsuite/gcc.c-torture/compile/pr45969-1.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/pr45969-1.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr45969-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/compile/pr45969-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,6 @@
+/* { dg-options "-std=c89" } */
+void crash() {
Index: gcc/testsuite/gcc.c-torture/compile/20100915-1.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/20100915-1.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/compile/20100915-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.c-torture/compile/20100915-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,82 @@
+/* PR rtl-optimization/45593 */
+/* Testcase by Arnaud Lacombe <lacombar@gmail.com> */
+}
Index: gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c
===================================================================
---- gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,5 @@
/* { dg-timeout-factor 4.0 } */
+/* { dg-require-effective-target run_expensive_tests } */
#define PAR1 int, int, int, int, int, int, int, int, int, int
#define PAR2 PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1
+Index: gcc/testsuite/gcc.target/i386/i386.exp
+===================================================================
+--- gcc/testsuite/gcc.target/i386/i386.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.target/i386/i386.exp (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -186,13 +186,24 @@
+
+ # If the linker used understands -M <mapfile>, pass it to clear hardware
+ # capabilities set by the Sun assembler.
+-set FLAGS ""
+ set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcap.map"
+
+ if [check_no_compiler_messages mapfile executable {
+ int main (void) { return 0; }
+ } $clearcap_ldflags ] {
+- set FLAGS $clearcap_ldflags
++
++ if { [info procs gcc_target_compile] != [list] \
++ && [info procs saved_gcc_target_compile] == [list] } {
++ rename gcc_target_compile saved_gcc_target_compile
++
++ proc gcc_target_compile { source dest type options } {
++ global clearcap_ldflags
++ # Always pass -Wl,-M,<mapfile>, but don't let it show up in gcc.sum.
++ lappend options "additional_flags=$clearcap_ldflags"
++
++ return [saved_gcc_target_compile $source $dest $type $options]
++ }
++ }
+ }
+
+ # If a testcase doesn't have special options, use these.
+@@ -219,7 +230,7 @@
+ set tests [prune $tests $srcdir/$subdir/vect-args.c]
+
+ # Main loop.
+-dg-runtest $tests $FLAGS $DEFAULT_CFLAGS
++dg-runtest $tests "" $DEFAULT_CFLAGS
+
+ # All done.
+ dg-finish
+Index: gcc/testsuite/gcc.target/i386/pr46491.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr46491.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.target/i386/pr46491.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,22 @@
++/* PR tree-optimization/46491 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++extern void abort (void);
++
++__attribute__((noinline)) int
++foo (int *p)
++{
++ int r;
++ asm ("movl $6, (%1)\n\txorl %0, %0" : "=r" (r) : "r" (p) : "memory");
++ return r;
++}
++
++int
++main (void)
++{
++ int p = 8;
++ if ((foo (&p) ? : p) != 6)
++ abort ();
++ return 0;
++}
Index: gcc/testsuite/gcc.target/i386/builtin-unreachable.c
===================================================================
---- gcc/testsuite/gcc.target/i386/builtin-unreachable.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.target/i386/builtin-unreachable.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.target/i386/builtin-unreachable.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.target/i386/builtin-unreachable.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -9,5 +9,5 @@
__builtin_unreachable ();
return p ? 1 : 0;
Index: gcc/testsuite/gcc.target/i386/pr36502.c
===================================================================
--- gcc/testsuite/gcc.target/i386/pr36502.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/pr36502.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.target/i386/pr36502.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,7 @@
+/* PR target/36502 */
+/* { dg-do compile { target { *-*-darwin* && ilp32 } } } */
+void f() {a++;}
+/* { dg-final { scan-assembler-not "esp" } } */
+
+Index: gcc/testsuite/gcc.target/i386/pr45946.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr45946.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.target/i386/pr45946.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target dfp } */
++/* { dg-options "-std=gnu99 -Os -fno-omit-frame-pointer" } */
++
++void
++__attribute__((noinline))
++bar (_Decimal128, _Decimal128, _Decimal128, _Decimal128, _Decimal128,
++ _Decimal128, _Decimal128, _Decimal128, _Decimal128);
++
++void
++foo (void)
++{
++ bar (0, 0, 0, 0, 0, 0, 0, 0, 0);
++}
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 165515)
++++ gcc/testsuite/gcc.target/i386/pr45296.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+register long double F80 asm("st"); /* { dg-error "stack register" } */
+Index: gcc/testsuite/gcc.target/i386/pr46098.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr46098.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.target/i386/pr46098.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-msse2 -ffloat-store" } */
++
++typedef double v2df __attribute__((vector_size (16)));
++
++v2df foo (double *d)
++{
++ return __builtin_ia32_loadupd (d);
++}
Index: gcc/testsuite/gcc.target/i386/pr45500.c
===================================================================
--- gcc/testsuite/gcc.target/i386/pr45500.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/pr45500.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.target/i386/pr45500.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,6 @@
+/* PR debug/45500 */
+/* { dg-do compile } */
+
+typedef char V __attribute__ ((__vector_size__ (16)));
+static const V s = { '\n', '\r', '?', '\\' };
+Index: gcc/testsuite/gcc.target/i386/pr46153.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr46153.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.target/i386/pr46153.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-msse -ffloat-store" } */
++
++typedef float v4sf __attribute__ ((__vector_size__ (16)));
++
++v4sf foo (v4sf a)
++{
++ return __builtin_ia32_movlhps (a, a);
++}
+Index: gcc/testsuite/gcc.target/i386/pr46226.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr46226.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.target/i386/pr46226.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,35 @@
++/* { dg-do run } */
++/* { dg-options "-Os -fomit-frame-pointer -mno-accumulate-outgoing-args -fno-asynchronous-unwind-tables" } */
++
++extern void abort(void);
++
++static void *p[2];
++
++void __attribute__((noinline))
++g(int x, ...)
++{
++ asm volatile ("" : : "g"(x));
++}
++
++void __attribute__((noinline))
++f(int x)
++{
++ p[0] = __builtin_return_address (0);
++ if (x == 0)
++ g(0);
++ g(1, 2, 3, 4, 5, 6, 7);
++
++ asm goto ("jmp %l0" : : : : label);
++ abort ();
++
++ label:
++ p[1] = __builtin_return_address (0);
++}
++
++int main()
++{
++ f(1);
++ if (p[0] != p[1])
++ abort ();
++ return 0;
++}
Index: gcc/testsuite/gcc.target/i386/pr22076.c
===================================================================
---- gcc/testsuite/gcc.target/i386/pr22076.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.target/i386/pr22076.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.target/i386/pr22076.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.target/i386/pr22076.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,5 @@
-/* { dg-do compile } */
+/* Fails on 32-bit Solaris 2/x86: PR target/44452 */
/* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */
#include <mmintrin.h>
+Index: gcc/testsuite/gcc.target/i386/pr46419.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr46419.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.target/i386/pr46419.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,39 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -msse" } */
++/* { dg-require-effective-target sse } */
++
++#include "sse-check.h"
++
++#include <xmmintrin.h>
++
++void __attribute__((noinline))
++sse_test (void)
++{
++ char image[4];
++ __m128 image4;
++ float out[4] __attribute__ ((aligned (16)));
++ int i;
++
++ for (i = 0; i < 4; i++)
++ image[i] = i + 1;
++
++ image4 =
++ _mm_cvtpi8_ps (_mm_setr_pi8
++ (image[0], image[1], image[2], image[3], 0, 0, 0, 0));
++ _mm_store_ps (out, image4);
++ _mm_empty ();
++
++ for (i = 0; i < 4; i++)
++ if (out[i] != (float) (i + 1))
++ abort ();
++
++ image4 =
++ _mm_cvtpu8_ps (_mm_setr_pi8
++ (image[0], image[1], image[2], image[3], 0, 0, 0, 0));
++ _mm_store_ps (out, image4);
++ _mm_empty ();
++
++ for (i = 0; i < 4; i++)
++ if (out[i] != (float) (i + 1))
++ abort ();
++}
Index: gcc/testsuite/gcc.target/i386/abi-2.c
===================================================================
---- gcc/testsuite/gcc.target/i386/abi-2.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.target/i386/abi-2.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.target/i386/abi-2.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.target/i386/abi-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -6,4 +6,5 @@
typedef long long __m256i __attribute__ ((__vector_size__ (32)));
__m256i foo (void) { return (__m256i){ 1, 2, 3, 4 }; }
+/* { dg-final { scan-assembler-times "ymm0" 1 { xfail { i?86-*-solaris2* && ilp32 } } } } */
Index: gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
===================================================================
---- gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -28,9 +28,20 @@
}
Index: gcc/testsuite/gcc.target/sparc/mnofpu.c
===================================================================
--- gcc/testsuite/gcc.target/sparc/mnofpu.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.target/sparc/mnofpu.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.target/sparc/mnofpu.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,90 @@
+/* PR target/35664 */
+/* Tetstcase by Mike Stein <mstein.lists@googlemail.com> */
Index: gcc/testsuite/gnat.dg/return2_pkg.ads
===================================================================
--- gcc/testsuite/gnat.dg/return2_pkg.ads (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gnat.dg/return2_pkg.ads (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gnat.dg/return2_pkg.ads (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,7 @@
+package Return2_Pkg is
+
+ function G (Line : String; Index : Positive) return String;
+
+end Return2_Pkg;
+Index: gcc/testsuite/gnat.dg/discr25.adb
+===================================================================
+--- gcc/testsuite/gnat.dg/discr25.adb (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gnat.dg/discr25.adb (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,11 @@
++-- { dg-do compile }
++
++with Discr25_Pkg;
++
++procedure Discr25 (N : Natural) is
++
++ package Test_Set is new Discr25_Pkg (N);
++
++begin
++ null;
++end;
+Index: gcc/testsuite/gnat.dg/opt7.adb
+===================================================================
+--- gcc/testsuite/gnat.dg/opt7.adb (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gnat.dg/opt7.adb (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,44 @@
++-- { dg-do compile }
++-- { dg-options "-Os -g" }
++
++with Opt7_Pkg;
++
++package body Opt7 is
++
++ procedure Parse (Str : String;
++ Time_Type : out time_t;
++ Abs_Time : out Time;
++ Delt_Time : out Duration) is
++ Year : Year_Number;
++ Month : Month_Number;
++ Day : Day_Number;
++ Minute : Integer := 0;
++ Idx : Integer := Str'First;
++ Ch : Character := Str (Idx);
++ Current_Time : Time;
++
++ begin
++ if Ch = '-' then
++ Time_Type := Absolute_Time;
++ Current_Time := Clock;
++ Day := Ada.Calendar.Day (Current_Time);
++ Month := Ada.Calendar.Month (Current_Time);
++ Year := Ada.Calendar.Year (Current_Time);
++ else
++ Time_Type := Delta_Time;
++ end if;
++ while Ch in '0' .. '9' loop
++ Minute := Minute + Character'Pos (Ch);
++ Idx := Idx + 1;
++ Ch := Str (Idx);
++ end loop;
++ if Time_Type = Absolute_Time then
++ Abs_Time := Time_Of (Year, Month, Day, Day_Duration (1));
++ else
++ Delt_Time := Duration (Float (Minute));
++ end if;
++ exception
++ when others => Opt7_Pkg.My_Raise_Exception;
++ end;
++
++end Opt7;
+Index: gcc/testsuite/gnat.dg/opt7.ads
+===================================================================
+--- gcc/testsuite/gnat.dg/opt7.ads (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gnat.dg/opt7.ads (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,12 @@
++with Ada.Calendar; use Ada.Calendar;
++
++package Opt7 is
++
++ type time_t is (Absolute_Time, Delta_Time);
++
++ procedure Parse (Str : String;
++ Time_Type : out time_t;
++ Abs_Time : out Time;
++ Delt_Time : out Duration);
++
++end Opt7;
+Index: gcc/testsuite/gnat.dg/opt7_pkg.ads
+===================================================================
+--- gcc/testsuite/gnat.dg/opt7_pkg.ads (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gnat.dg/opt7_pkg.ads (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,5 @@
++package Opt7_Pkg is
++
++ procedure My_Raise_Exception;
++
++end Opt7_Pkg;
+Index: gcc/testsuite/gnat.dg/discr25_pkg.adb
+===================================================================
+--- gcc/testsuite/gnat.dg/discr25_pkg.adb (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gnat.dg/discr25_pkg.adb (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,24 @@
++package body Discr25_Pkg is
++
++ type Arr1 is array (Natural range <>) of Integer;
++
++ B : constant Boolean := N > 0;
++
++ type Arr2 is array (True .. B) of Integer;
++
++ type Obj_T (Size_Max : Natural) is record
++ A2 : Arr2;
++ A1 : Arr1 (0 .. Size_Max);
++ end record;
++
++ procedure Proc1 (Set : in out T) is
++ begin
++ Set := new Obj_T'(Set.all);
++ end;
++
++ procedure Proc2 (Obj : in out T; L : Natural) is
++ begin
++ Obj := new Obj_T (L);
++ end;
++
++end Discr25_Pkg;
+Index: gcc/testsuite/gnat.dg/discr25_pkg.ads
+===================================================================
+--- gcc/testsuite/gnat.dg/discr25_pkg.ads (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gnat.dg/discr25_pkg.ads (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,15 @@
++generic
++
++ N : Natural;
++
++package Discr25_Pkg is
++
++ type T is private;
++
++ procedure Proc1 (Set : in out T);
++
++private
++ type Obj_T (Size_Max : Natural);
++ type T is access Obj_T;
++
++end Discr25_Pkg;
Index: gcc/testsuite/gnat.dg/return2.adb
===================================================================
--- gcc/testsuite/gnat.dg/return2.adb (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gnat.dg/return2.adb (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gnat.dg/return2.adb (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,33 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
Index: gcc/testsuite/gnat.dg/return2.ads
===================================================================
--- gcc/testsuite/gnat.dg/return2.ads (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gnat.dg/return2.ads (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gnat.dg/return2.ads (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,18 @@
+package Return2 is
+
+ function Value (Img : String) return T;
+
+end Return2;
+Index: gcc/testsuite/gcc.dg/pr46177-2.c
+===================================================================
+--- gcc/testsuite/gcc.dg/pr46177-2.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/pr46177-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O -fno-tree-copy-prop -ftree-loop-distribution" } */
++
++int A[30], B[30];
++
++void
++foo (int j)
++{
++ int i, k;
++ for (k = 0; k < 10; k++)
++ if (j)
++ {
++ for (; j < k; j++)
++ ;
++ for (i = 0; i < k; i++)
++ A[i] = B[i] = 0;
++ }
++}
Index: gcc/testsuite/gcc.dg/20050330-2.c
===================================================================
---- gcc/testsuite/gcc.dg/20050330-2.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/20050330-2.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/20050330-2.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/20050330-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -19,5 +19,3 @@
x->b[y] = x->b[y + 1];
x->b[x->a] = (void *) 0;
Index: gcc/testsuite/gcc.dg/nested-func-8.c
===================================================================
--- gcc/testsuite/gcc.dg/nested-func-8.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/nested-func-8.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/nested-func-8.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,57 @@
+/* { dg-do run } */
+/* { dg-options "-O -fno-inline" } */
Index: gcc/testsuite/gcc.dg/gomp/atomic-14.c
===================================================================
--- gcc/testsuite/gcc.dg/gomp/atomic-14.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/gomp/atomic-14.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/gomp/atomic-14.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,43 @@
+/* PR middle-end/45423 */
+/* { dg-do compile } */
+}
Index: gcc/testsuite/gcc.dg/gomp/pr34610.c
===================================================================
---- gcc/testsuite/gcc.dg/gomp/pr34610.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/gomp/pr34610.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/gomp/pr34610.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/gomp/pr34610.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -26,5 +26,3 @@
for (i = 0; i < 10; ++i)
bar (i);
Index: gcc/testsuite/gcc.dg/gomp/atomic-12.c
===================================================================
--- gcc/testsuite/gcc.dg/gomp/atomic-12.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/gomp/atomic-12.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/gomp/atomic-12.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,306 @@
+/* PR middle-end/45423 */
+/* { dg-do compile } */
+}
Index: gcc/testsuite/gcc.dg/gomp/pr27573.c
===================================================================
---- gcc/testsuite/gcc.dg/gomp/pr27573.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/gomp/pr27573.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/gomp/pr27573.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/gomp/pr27573.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -16,5 +16,3 @@
}
return 0;
Index: gcc/testsuite/gcc.dg/gomp/atomic-13.c
===================================================================
--- gcc/testsuite/gcc.dg/gomp/atomic-13.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/gomp/atomic-13.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/gomp/atomic-13.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,9 @@
+/* PR middle-end/45423 */
+/* { dg-do compile } */
+#include "atomic-12.c"
Index: gcc/testsuite/gcc.dg/pr32773.c
===================================================================
---- gcc/testsuite/gcc.dg/pr32773.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/pr32773.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/pr32773.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/pr32773.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -7,5 +7,3 @@
if (p)
*p = 0;
-/* { 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 165515)
-+++ gcc/testsuite/gcc.dg/20030107-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/20030107-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/20030107-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3,5 +3,3 @@
extern void bar(void) __attribute__((noreturn));
-/* { 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 165515)
-+++ gcc/testsuite/gcc.dg/20051201-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/20051201-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/20051201-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -24,5 +24,3 @@
res = bar ();
-/* { dg-final { cleanup-coverage-files } } */
Index: gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
===================================================================
---- gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2,6 +2,7 @@
text section if nothing went in there. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-final { scan-assembler-not "\\.Ltext0\[^\n\r\]*Offset 0x0" } } */
Index: gcc/testsuite/gcc.dg/20030702-1.c
===================================================================
---- gcc/testsuite/gcc.dg/20030702-1.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/20030702-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/20030702-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/20030702-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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 165515)
-+++ gcc/testsuite/gcc.dg/march.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/march.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/march.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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/Wcxx-compat-21.c
+===================================================================
+--- gcc/testsuite/gcc.dg/Wcxx-compat-21.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/Wcxx-compat-21.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,25 @@
++/* PR c/44772 */
++/* { dg-do compile } */
++/* { dg-options "-Wc++-compat" } */
++
++typedef enum { E1, E2 } E;
++
++typedef struct
++{
++ E e;
++ union
++ {
++ int i;
++ char *c;
++ }; /* { dg-bogus "as both field and typedef name" } */
++} S;
++
++S s;
++
++typedef int T;
++
++struct U
++{
++ T t;
++ union { int i; }; /* { dg-bogus "as both field and typedef name" } */
++};
Index: gcc/testsuite/gcc.dg/profile-dir-1.c
===================================================================
---- gcc/testsuite/gcc.dg/profile-dir-1.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/profile-dir-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/profile-dir-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/profile-dir-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,5 @@
/* { dg-do compile } */
/* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */
/* { 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 165515)
-+++ gcc/testsuite/gcc.dg/pr24225.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/pr24225.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/pr24225.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -13,5 +13,3 @@
return 0;
}
Index: gcc/testsuite/gcc.dg/pr45079.c
===================================================================
--- gcc/testsuite/gcc.dg/pr45079.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/pr45079.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/pr45079.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,10 @@
+/* PR c/45079 */
+/* { dg-do compile } */
+/* { dg-bogus "not supported by" "" { target *-*-* } 0 } */
Index: gcc/testsuite/gcc.dg/graphite/interchange-0.c
===================================================================
---- gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/graphite/interchange-0.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -47,4 +47,4 @@
}
+/* { dg-final { cleanup-tree-dump "graphite" } } */
Index: gcc/testsuite/gcc.dg/pragma-init-fini.c
===================================================================
---- gcc/testsuite/gcc.dg/pragma-init-fini.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/pragma-init-fini.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/pragma-init-fini.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/pragma-init-fini.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,7 @@
/* Tests for #pragma init and #pragma fini. */
extern void abort ();
+Index: gcc/testsuite/gcc.dg/autopar/pr46099.c
+===================================================================
+--- gcc/testsuite/gcc.dg/autopar/pr46099.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/autopar/pr46099.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,47 @@
++/* PR tree-optimization/46099 */
++/* { dg-do compile } */
++/* { dg-options "-ftree-parallelize-loops=2 -fcompare-debug -O" } */
++
++static inline void
++bar (int *i)
++{
++ int j = *i;
++}
++
++void baz (int *, int *, int *);
++
++void
++f1 (int n)
++{
++ int i;
++ for (i = 0; i < n; i++)
++ bar (&i);
++}
++
++void
++f2 (int n)
++{
++ int i;
++ int a[10000], b[10000], c[10000];
++ baz (a, b, c);
++ for (i = 0; i < n; i++)
++ {
++ void *p = c;
++ a[i] = b[i] + c[i];
++ }
++ baz (a, b, c);
++}
++
++void
++f3 (int n)
++{
++ int i;
++ int a[10000], b[10000], c[10000];
++ baz (a, b, c);
++ for (i = 0; i < n; i++)
++ {
++ a[i] = b[i] + c[i];
++ void *p = c;
++ }
++ baz (a, b, c);
++}
Index: gcc/testsuite/gcc.dg/pr43058.c
===================================================================
---- gcc/testsuite/gcc.dg/pr43058.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/pr43058.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/pr43058.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/pr43058.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,7 @@
/* PR debug/43058 */
/* { dg-do compile } */
extern void *f2 (const char *, int, int, int, void *(*) ());
Index: gcc/testsuite/gcc.dg/pr26570.c
===================================================================
---- gcc/testsuite/gcc.dg/pr26570.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/pr26570.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/pr26570.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/pr26570.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -5,5 +5,3 @@
{
return a / b;
} /* { dg-message "note: \[^\n\]*execution counts estimated" } */
-
-/* { dg-final { cleanup-coverage-files } } */
+Index: gcc/testsuite/gcc.dg/pr46165.c
+===================================================================
+--- gcc/testsuite/gcc.dg/pr46165.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/pr46165.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,11 @@
++/* PR tree-optimization/46165 */
++/* { dg-do compile } */
++/* { dg-options "-O -fno-tree-ccp -fno-tree-copy-prop -fno-tree-dce" } */
++
++extern void foo (void) __attribute__((noreturn));
++void
++g (void)
++{
++ void (*f) (void) = foo;
++ f ();
++}
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 165515)
-+++ gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/lto/20091216-1_0.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,10 @@
/* { dg-lto-do run } */
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 165515)
-+++ gcc/testsuite/gcc.dg/lto/20090313_0.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/lto/20090313_0.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/lto/20090313_0.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,5 @@
/* { dg-lto-options "-mcpu=v9" { target sparc*-*-* } } */
+/* { dg-require-effective-target sync_char_short } */
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 165515)
-+++ gcc/testsuite/gcc.dg/profile-dir-2.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/profile-dir-2.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/profile-dir-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,5 @@
/* { dg-do compile } */
/* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */
Index: gcc/testsuite/gcc.dg/torture/pr45982.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr45982.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/torture/pr45982.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/torture/pr45982.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+
Index: gcc/testsuite/gcc.dg/torture/pr45678-1.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,17 @@
+/* { dg-do run } */
+/* { dg-options "-fno-common" { target { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } } */
+}
Index: gcc/testsuite/gcc.dg/torture/pr39074-2.c
===================================================================
---- gcc/testsuite/gcc.dg/torture/pr39074-2.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/torture/pr39074-2.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/torture/pr39074-2.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/torture/pr39074-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -30,5 +30,5 @@
return 0;
}
Index: gcc/testsuite/gcc.dg/torture/pr45678-2.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,17 @@
+/* { dg-do run } */
+/* { dg-options "-fno-common" { target { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } } */
Index: gcc/testsuite/gcc.dg/torture/pr45704.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr45704.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/torture/pr45704.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/torture/pr45704.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-optimized" } */
Index: gcc/testsuite/gcc.dg/torture/pr45623.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr45623.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/torture/pr45623.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/torture/pr45623.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,28 @@
+/* { dg-do run } */
+
+}
Index: gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c
===================================================================
---- gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
Index: gcc/testsuite/gcc.dg/torture/pr45869.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr45869.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/torture/pr45869.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/torture/pr45869.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+}
Index: gcc/testsuite/gcc.dg/tree-ssa/pr24287.c
===================================================================
---- gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/tree-ssa/pr24287.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -9,11 +9,14 @@
int g(void)
{
/* { dg-final { cleanup-tree-dump "optimized" } } */
Index: gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c
===================================================================
---- gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -5,7 +5,7 @@
int *p, *q;
};
/* { dg-final { scan-tree-dump "CALLUSED = { f.* i q }" "alias" } } */
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 165515)
-+++ gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/tree-ssa/sra-10.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-esra-details" } */
Index: gcc/testsuite/gcc.dg/pr45567.c
===================================================================
--- gcc/testsuite/gcc.dg/pr45567.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/pr45567.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/pr45567.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,9 @@
+/* PR middle-end/45567 */
+/* { dg-do compile } */
+}
Index: gcc/testsuite/gcc.dg/pragma-init-fini-2.c
===================================================================
---- gcc/testsuite/gcc.dg/pragma-init-fini-2.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/pragma-init-fini-2.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/pragma-init-fini-2.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/pragma-init-fini-2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2,6 +2,7 @@
/* { dg-do link { target *-*-solaris2.* } } */
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 165515)
++++ gcc/testsuite/gcc.dg/pr45055.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,41 @@
+/* PR debug/45055 */
+/* { dg-do compile } */
+}
Index: gcc/testsuite/gcc.dg/20050325-1.c
===================================================================
---- gcc/testsuite/gcc.dg/20050325-1.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/20050325-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/20050325-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/20050325-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -17,5 +17,3 @@
{
g (42, ff);
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 165515)
++++ gcc/testsuite/gcc.dg/pr45259.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,42 @@
+/* PR debug/45259 */
+/* { dg-do compile } */
+ baz (w);
+ }
+}
+Index: gcc/testsuite/gcc.dg/pr46355.c
+===================================================================
+--- gcc/testsuite/gcc.dg/pr46355.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/pr46355.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-options "-O -ftree-loop-distribution -fstrict-overflow" } */
++
++void
++foo (int *dest, int i, int u, int v)
++{
++ int j = i;
++ while (i)
++ {
++ dest[j--] = v;
++ dest[j--] = u;
++ }
++}
++
Index: gcc/testsuite/gcc.dg/profile-dir-3.c
===================================================================
---- gcc/testsuite/gcc.dg/profile-dir-3.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/profile-dir-3.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/profile-dir-3.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/profile-dir-3.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,5 @@
/* { dg-do compile } */
/* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-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 165515)
++++ gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,20 @@
+/* PR tree-optimization/45241 */
+/* { dg-do compile } */
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/O-pr46167.c
+===================================================================
+--- gcc/testsuite/gcc.dg/vect/O-pr46167.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/vect/O-pr46167.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++
++int foo (char c, int i)
++{
++ int s = 0;
++ while (i--)
++ s += c;
++ return s;
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/pr45902.c
+===================================================================
+--- gcc/testsuite/gcc.dg/vect/pr45902.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/vect/pr45902.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,43 @@
++/* { dg-require-effective-target vect_int } */
++
++#include <stdarg.h>
++#include <stdlib.h>
++#include "tree-vect.h"
++
++#define N 128
++
++short res[N];
++short a[N];
++
++int
++main1 ()
++{
++ int i;
++
++ for (i = 0; i < N/4; i+=4)
++ {
++ res[i] = a[i] >> 8;
++ res[i+1] = a[i+1] >> 8;
++ res[i+2] = a[i+2] >> 8;
++ res[i+3] = a[i+3] >> 8;
++ }
++}
++
++int
++main ()
++{
++ int i;
++
++ for (i = 0; i < N; i++)
++ a[i] = i;
++
++ main1 ();
++
++ for (i = 0; i < N; i++)
++ if (res[i] != a[i] >> 8)
++ abort ();
++
++ return 0;
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
+Index: gcc/testsuite/gcc.dg/vect/vect.exp
+===================================================================
+--- gcc/testsuite/gcc.dg/vect/vect.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/vect/vect.exp (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -122,6 +122,11 @@
+ lappend O1_VECTCFLAGS "-O1"
+ lappend O1_VECTCFLAGS "-fdump-tree-vect-details"
+
++global O_VECTCFLAGS
++set O_VECTCFLAGS $DEFAULT_VECTCFLAGS
++lappend O_VECTCFLAGS "-O"
++lappend O_VECTCFLAGS "-fdump-tree-vect-details"
++
+ lappend DEFAULT_VECTCFLAGS "-O2"
+
+ # Tests that should be run without generating dump info
+@@ -283,6 +288,10 @@
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/O1-*.\[cS\]]] \
+ "" $O1_VECTCFLAGS
+
++# With -O
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/O-*.\[cS\]]] \
++ "" $O_VECTCFLAGS
++
+ # -fno-tree-reassoc
+ set VECT_SLP_CFLAGS $SAVED_VECT_SLP_CFLAGS
+ lappend VECT_SLP_CFLAGS "-fno-tree-reassoc"
Index: gcc/testsuite/gcc.dg/vect/pr45752.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr45752.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gcc.dg/vect/pr45752.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gcc.dg/vect/pr45752.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,109 @@
+/* { dg-require-effective-target vect_int } */
+
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
+Index: gcc/testsuite/gcc.dg/pr46177.c
+===================================================================
+--- gcc/testsuite/gcc.dg/pr46177.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gcc.dg/pr46177.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O -fno-tree-copy-prop -ftree-loop-distribution" } */
++
++extern int A[];
++extern int B[];
++
++void
++foo (int j, int c)
++{
++ int i;
++
++ if (c)
++ for (i = 0; i < j; i++)
++ A[i] = B[i] = 0;
++
++ for (i = 0; i < j; i++)
++ A[i] = B[i];
++}
Index: gcc/testsuite/gcc.dg/mtune.c
===================================================================
---- gcc/testsuite/gcc.dg/mtune.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gcc.dg/mtune.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/mtune.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/mtune.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-mtune=*" } { "" } } */
/* { 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 165515)
-+++ gcc/testsuite/gcc.dg/20050309-1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gcc.dg/20050309-1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gcc.dg/20050309-1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -34,5 +34,3 @@
error (1, 0, 0, node, "%s", name);
return 0;
-/* { dg-final { cleanup-coverage-files } } */
Index: gcc/testsuite/ada/acats/run_acats
===================================================================
---- gcc/testsuite/ada/acats/run_acats (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/ada/acats/run_acats (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/ada/acats/run_acats (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/ada/acats/run_acats (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -70,4 +70,4 @@
# Limit the stack to 16MB for stack checking
ulimit -s 16384
+exec $testdir/run_all.sh ${1+"$@"}
Index: gcc/testsuite/ChangeLog
===================================================================
---- gcc/testsuite/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1,3 +1,487 @@
+--- gcc/testsuite/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,659 @@
++2010-11-15 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/46491
++ * gcc.target/i386/pr46491.c: New test.
++
++2010-11-13 Tobias Burnus <burnus@net-b.de>
++
++ PR fortran/45742
++ * gfortran.dg/volatile12.f90: New.
++
++2010-11-12 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/46177
++ * gcc.dg/pr46177.c: Fix dg-options.
++
++2010-11-12 Alexander Monakov <amonakov@ispras.ru>
++
++ Backport from mainline:
++ 2010-08-19 Andrey Belevantsev <abel@ispras.ru>
++
++ PR rtl-optimization/44691
++ * gfortran.dg/pr44691.f: New test.
++
++2010-11-12 Richard Guenther <rguenther@suse.de>
++
++ Backport from mainline
++ 2010-11-09 Richard Guenther <rguenther@suse.de>
++
++ PR tree-optimization/46355
++ * gcc.dg/pr46355.c: New testcase.
++
++ 2010-11-02 Richard Guenther <rguenther@suse.de>
++
++ PR tree-optimization/46177
++ * gcc.dg/pr46177.c: New testcase.
++
++ 2010-11-09 Richard Guenther <rguenther@suse.de>
++
++ PR tree-optimization/46177
++ * gcc.dg/pr46177-2.c: New testcase.
++
++2010-11-11 Jakub Jelinek <jakub@redhat.com>
++
++ Backport from mainline
++ 2010-11-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/45894
++ * g++.dg/warn/Wsequence-point-2.C: New test.
++
++ 2010-11-05 Jakub Jelinek <jakub@redhat.com>
++
++ PR c/44772
++ * gcc.dg/Wcxx-compat-21.c: New test.
++
++ PR c++/46160
++ * g++.dg/opt/empty2.C: New test.
++
++ PR tree-optimization/46099
++ * gcc.dg/autopar/pr46099.c: New test.
++
++ PR middle-end/43690
++ * c-c++-common/pr43690.c: New test.
++
++ 2010-11-03 Jakub Jelinek <jakub@redhat.com>
++
++ PR tree-optimization/46165
++ * gcc.dg/pr46165.c: New test.
++
++ PR tree-optimization/46107
++ * gcc.c-torture/compile/pr46107.c: New test.
++
++2010-11-10 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/46419
++ * gcc-target/i386/pr46419.c: New test.
++
++2010-11-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ Backport from mainline:
++ 2010-11-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ * gcc.target/i386/i386.exp (FLAGS): Remove.
++ Wrap gcc_target_compile with $clearcap_ldflags added to options.
++
++2010-11-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
++
++ Backport from mainline:
++ PR libgfortran/46010
++ * gfortran.dg/namelist_66.f90: New test.
++ * gfortran.dg/fmt_t_6.f: Whitespace.
++
++2010-11-02 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/46152
++ * gfortran.dg/select_type_11.f03: Update dg-error phrase.
++ * gfortran.dg/allocate_with_typespec_4.f90: New test.
++ * gfortran.dg/allocate_with_typespec_1.f90: New test.
++ * gfortran.dg/allocate_with_typespec_2.f: New test.
++ * gfortran.dg/allocate_with_typespec_3.f90: New test.
++ * gfortran.dg/allocate_derived_1.f90: Delete an obselescent test.
++ * gfortran.dg/select_type_1.f03: Update dg-error phrase.
++
++2010-11-02 Ira Rosen <irar@il.ibm.com>
++
++ PR tree-optimization/45902
++ * gcc.dg/vect/pr45902.c: New.
++
++2010-10-30 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/46153
++ * gcc.target/i386/pr46153.c: New test.
++
++2010-10-26 Ira Rosen <irar@il.ibm.com>
++
++ PR tree-optimization/46167
++ * gcc.dg/vect/O-pr46167.c: New.
++ * gcc.dg/vect/vect.exp: Run tests with -O.
++
++2010-10-24 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gnat.dg/opt7.ad[sb]: New test.
++ * gnat.dg/opt7_pkg.ads: New helper.
++
++2010-10-22 Uros Bizjak <ubizjak@gmail.com>
++
++ PR target/46098
++ * gcc.target/i386/pr46098.c: New test.
++
++2010-10-22 Uros Bizjak <ubizjak@gmail.com>
++ H.J. Lu <hongjiu.lu@intel.com>
++
++ PR target/45946
++ * gcc.target/i386/pr45946.c: New test.
++
++2010-10-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ Backport from mainline:
++ 2010-10-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ PR c++/46024
++ * g++.dg/warn/miss-format-1.C: Enclose dg-error target list in braces.
++
++ 2010-08-04 Daniel Gutson <dgutson@codesourcery.com>
++
++ * g++.dg/warn/miss-format-1.C: Update line number.
++
++ 2010-05-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ * g++.dg/warn/miss-format-1.C (bar): xfail dg-warning on
++ alpha*-dec-osf*.
++
++2010-10-21 Thomas Koenig <tkoenig@gcc.gnu.org>
++
++ PR fortran/46007
++ Backport from trunk
++ * gfortran.dg/shape_5.f90: New test case.
++
++2010-10-15 Jason Merrill <jason@redhat.com>
++
++ * g++.dg/lto/pr45983_0.C: New.
++
++2010-10-20 Eric Botcazou <ebotcazou@adacore.com>
++
++ * gnat.dg/discr25.adb: New test.
++ * gnat.dg/discr25_pkg.ad[sb]: New helper.
++
++2010-10-18 Jakub Jelinek <jakub@redhat.com>
++
++ PR middle-end/46019
++ * gcc.c-torture/execute/pr46019.c: New test.
++
+2010-10-14 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/45969
+ 2010-08-18 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR debug/42487
-+ * lib/target-supports.exp (check_effective_target_function_sections): New.
++ * lib/target-supports.exp (check_effective_target_function_sections):
++ New.
+ * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: Check that the target supports
+ function sections before proceding.
+
+
+ PR middle-end/40386
+ * gcc.c-torture/execute/{pr40386.c,pr40386.x}: New testcase.
-+
++
+2010-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/45595
+
+ Backport from mainline
+ 2010-08-19 Ian Bolton <ian.bolton@arm.com>
-+
++
+ PR target/45070
+ * gcc.c-torture/execute/pr45070.c: New.
+
+ 2010-08-19 Ian Bolton <ian.bolton@arm.com>
+
+ * g++.dg/pr44328.C: New test.
-+
++
+ 2010-08-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * lib/target-supports.exp: (check_effective_target_sync_int_long):
+ Add arm*-*-linux-gnueabi.
+ (check_effective_target_sync_char_short): Likewise.
-+
++
+2010-09-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/45458
+
+2010-08-16 Changpeng Fang <changpeng.fang@amd.com>
+
-+ PR tree-optimization/45241
-+ * gcc.dg/vect/no-tree-pre-pr45241.c: New test.
++ PR tree-optimization/45241
++ * gcc.dg/vect/no-tree-pre-pr45241.c: New test.
+
+2010-08-14 Uros Bizjak <ubizjak@gmail.com>
+
2010-07-31 Release Manager
* GCC 4.5.1 released.
-@@ -479,15 +963,15 @@
+@@ -479,15 +1135,15 @@
Backport from mainline
2010-05-17 Martin Jambor <mjambor@suse.cz>
2010-06-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-@@ -636,7 +1120,7 @@
+@@ -636,7 +1292,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.
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 165515)
-+++ gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.old-deja/g++.jason/thunk3.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,5 @@
-// { dg-do run { xfail rs6000-*-* powerpc-*-eabi v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa*-*-* m32r*-*-* lm32-*-* } }
+// { dg-do run }
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 165515)
++++ gcc/testsuite/g++.dg/other/i386-8.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,23 @@
+// PR rtl-optimization/45400
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
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 165515)
++++ gcc/testsuite/g++.dg/tree-ssa/pr44914.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fipa-sra -fnon-call-exceptions" } */
Index: gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C
===================================================================
--- gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,11 @@
+// Origin: PR debug/43628
+// { dg-options "-g -dA" }
Index: gcc/testsuite/g++.dg/debug/pr45660.C
===================================================================
--- gcc/testsuite/g++.dg/debug/pr45660.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/debug/pr45660.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/debug/pr45660.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,16 @@
+// PR debug/45660
+// { dg-do compile }
+ if (s.i ())
+ *s.i () = 0;
+}
+Index: gcc/testsuite/g++.dg/lto/pr45983_0.C
+===================================================================
+--- gcc/testsuite/g++.dg/lto/pr45983_0.C (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/g++.dg/lto/pr45983_0.C (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,20 @@
++// PR c++/45983
++
++template <int N>
++class T1 {
++ int m[N];
++ typedef float scalar_type_t;
++ typedef scalar_type_t scalar_array_t[1];
++ const scalar_array_t &decay(void) const;
++};
++class T2 {
++public:
++ float vals[1];
++ float get_value(void) const { return vals[0]; }
++};
++T2 channel_params;
++float output_audio(void) {
++ return channel_params.get_value();
++}
++
++int main(){}
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 165515)
++++ gcc/testsuite/g++.dg/pr45112.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+
Index: gcc/testsuite/g++.dg/opt/pr44919.C
===================================================================
--- gcc/testsuite/g++.dg/opt/pr44919.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/opt/pr44919.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/opt/pr44919.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,253 @@
+// { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
+// { dg-options "-O3 -fselective-scheduling2" }
+void diagrammeIpelet::protected_run() { Iso_rectangle_2 bbox = read_active_objects( ); draw_dual_in_ipe(bbox); }
+
+}
+Index: gcc/testsuite/g++.dg/opt/empty2.C
+===================================================================
+--- gcc/testsuite/g++.dg/opt/empty2.C (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/g++.dg/opt/empty2.C (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,18 @@
++// PR c++/46160
++// { dg-do compile }
++
++struct S
++{
++ enum E { A };
++} s;
++volatile S t;
++
++void f (S::E);
++
++void
++g ()
++{
++ volatile S *p = &s;
++ f (p->A);
++ f (t.A);
++}
Index: gcc/testsuite/g++.dg/tree-prof/partition2.C
===================================================================
--- gcc/testsuite/g++.dg/tree-prof/partition2.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/tree-prof/partition2.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/tree-prof/partition2.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,15 @@
+// PR middle-end/45458
+// { dg-require-effective-target freorder }
+ {
+ }
+}
+Index: gcc/testsuite/g++.dg/warn/miss-format-1.C
+===================================================================
+--- gcc/testsuite/g++.dg/warn/miss-format-1.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/warn/miss-format-1.C (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -4,7 +4,7 @@
+ /* { dg-options "-Wmissing-format-attribute" } */
+ /* { dg-options "-Wmissing-format-attribute -Wno-abi" { target arm_eabi } } */
+ /* VxWorks does not provide vscanf, either in kernel or RTP mode. */
+-/* { dg-error "not declared" "" { target *-*-solaris2.[7-8] *-*-vxworks* } 25 } */
++/* { dg-error "not declared" "" { target { *-*-solaris2.[7-8] *-*-vxworks* alpha*-dec-osf* } } 26 } */
+
+ #include <stdio.h>
+ #include <stdarg.h>
+@@ -23,7 +23,7 @@
+ {
+ va_list ap;
+ va_start (ap, fmt);
+- vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" { xfail *-*-solaris2.[7-8] *-*-vxworks* alpha*-dec-osf5* } } */
++ vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" { xfail *-*-solaris2.[7-8] *-*-vxworks* alpha*-dec-osf* } } */
+ va_end (ap);
+ }
+
+Index: gcc/testsuite/g++.dg/warn/Wsequence-point-2.C
+===================================================================
+--- gcc/testsuite/g++.dg/warn/Wsequence-point-2.C (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/g++.dg/warn/Wsequence-point-2.C (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,28 @@
++// PR c++/45894
++// { dg-do compile }
++// { dg-options "-std=c++0x -Wsequence-point" }
++
++struct F
++{
++ template <typename = int>
++ void bar ();
++};
++template <typename = int>
++struct V
++{
++ V (const V &) { F::bar <>; }
++};
++struct C
++{
++ V <> v;
++};
++struct B
++{
++ C f ();
++};
++struct A
++{
++ C c;
++ B b;
++ A () : c (b.f ()) { }
++};
Index: gcc/testsuite/g++.dg/pr44328.C
===================================================================
--- gcc/testsuite/g++.dg/pr44328.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/pr44328.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/pr44328.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+/* { dg-options "-c -O2 -Wextra" } */
Index: gcc/testsuite/g++.dg/parse/defarg15.C
===================================================================
--- gcc/testsuite/g++.dg/parse/defarg15.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/parse/defarg15.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/parse/defarg15.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,5 @@
+// PR c++/44991
+
+};
Index: gcc/testsuite/g++.dg/cpp0x/rv6p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv6p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/rv1p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv1p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/cast.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/cast.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/cast.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/cast.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/cast.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,8 +8,8 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/rv7p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv7p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/rv2p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv2p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/rv8p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv8p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/rv3p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv3p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/rv4p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv4p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/iop.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/iop.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/iop.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/iop.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/iop.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -12,8 +12,8 @@
template <bool> struct sa;
template <> struct sa<true> {};
}
Index: gcc/testsuite/g++.dg/cpp0x/rv5p.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/rv5p.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,14 +8,14 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/named_refs.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/named_refs.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,8 +8,8 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
===================================================================
---- gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -8,8 +8,8 @@
template <bool> struct sa;
template <> struct sa<true> {};
Index: gcc/testsuite/g++.dg/eh/pr45569.C
===================================================================
--- gcc/testsuite/g++.dg/eh/pr45569.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/eh/pr45569.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/eh/pr45569.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// { dg-options "-O -fnon-call-exceptions" }
Index: gcc/testsuite/g++.dg/gomp/atomic-11.C
===================================================================
--- gcc/testsuite/g++.dg/gomp/atomic-11.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/gomp/atomic-11.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/gomp/atomic-11.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,306 @@
+/* PR middle-end/45423 */
+/* { dg-do compile } */
Index: gcc/testsuite/g++.dg/gomp/atomic-12.C
===================================================================
--- gcc/testsuite/g++.dg/gomp/atomic-12.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/gomp/atomic-12.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/gomp/atomic-12.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,9 @@
+/* PR middle-end/45423 */
+/* { dg-do compile } */
Index: gcc/testsuite/g++.dg/gomp/atomic-13.C
===================================================================
--- gcc/testsuite/g++.dg/gomp/atomic-13.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/gomp/atomic-13.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/gomp/atomic-13.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,43 @@
+/* PR middle-end/45423 */
+/* { dg-do compile } */
Index: gcc/testsuite/g++.dg/gomp/atomic-14.C
===================================================================
--- gcc/testsuite/g++.dg/gomp/atomic-14.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/gomp/atomic-14.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/gomp/atomic-14.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,19 @@
+// PR middle-end/45423
+// { dg-do compile }
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 165515)
++++ gcc/testsuite/g++.dg/init/value8.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,19 @@
+// PR c++/45315
+
Index: gcc/testsuite/g++.dg/torture/pr45393.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr45393.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/torture/pr45393.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/torture/pr45393.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,38 @@
+// { dg-do compile }
+
Index: gcc/testsuite/g++.dg/torture/pr45843.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr45843.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/torture/pr45843.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/torture/pr45843.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,28 @@
+// PR target/45843
+// { dg-do run }
Index: gcc/testsuite/g++.dg/torture/pr45709-2.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr45709-2.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/torture/pr45709-2.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/torture/pr45709-2.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,20 @@
+// { dg-do compile }
+
Index: gcc/testsuite/g++.dg/torture/pr45709.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr45709.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/torture/pr45709.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/torture/pr45709.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,19 @@
+// { dg-do compile }
+
Index: gcc/testsuite/g++.dg/torture/pr45854.C
===================================================================
--- gcc/testsuite/g++.dg/torture/pr45854.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/torture/pr45854.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/torture/pr45854.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,30 @@
+// { dg-do compile }
+
Index: gcc/testsuite/g++.dg/template/typedef34.C
===================================================================
--- gcc/testsuite/g++.dg/template/typedef34.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/template/typedef34.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/template/typedef34.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,37 @@
+// Origin PR c++/45200
+// { dg-do compile }
Index: gcc/testsuite/g++.dg/template/typedef35.C
===================================================================
--- gcc/testsuite/g++.dg/template/typedef35.C (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/g++.dg/template/typedef35.C (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/g++.dg/template/typedef35.C (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,41 @@
+// Origin c++/45558
+// { dg-do compile }
+A<S, T>::B<U>::a = typename C<S, T>::template B<U>::template E<D<F> >(g);
Index: gcc/testsuite/lib/profopt.exp
===================================================================
---- gcc/testsuite/lib/profopt.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/lib/profopt.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/lib/profopt.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/lib/profopt.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -328,6 +328,10 @@
lappend options "additional_flags=$option $extra_flags $feedback_option"
set optstr "$option $feedback_option"
continue
Index: gcc/testsuite/lib/plugin-support.exp
===================================================================
---- gcc/testsuite/lib/plugin-support.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/lib/plugin-support.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/lib/plugin-support.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/lib/plugin-support.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -88,6 +88,10 @@
set optstr "$includes $extra_flags -DIN_GCC -fPIC -shared"
set status [remote_exec build "$PLUGINCC $PLUGINCFLAGS $plugin_src $optstr -o $plugin_lib"]
Index: gcc/testsuite/lib/gcc-dg.exp
===================================================================
---- gcc/testsuite/lib/gcc-dg.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/lib/gcc-dg.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/lib/gcc-dg.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/lib/gcc-dg.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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.
# -fcompare-debug dumps
Index: gcc/testsuite/lib/prune.exp
===================================================================
---- gcc/testsuite/lib/prune.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/lib/prune.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/lib/prune.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/lib/prune.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -48,6 +48,9 @@
regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $text "" text
regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not done" $text "" text
return $text
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
---- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -605,6 +605,20 @@
}]
}
Index: gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90
===================================================================
--- gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,55 @@
+! { dg-do run }
+!
+! { dg-final { cleanup-modules "m m2" } }
Index: gcc/testsuite/gfortran.dg/gomp/pr27573.f90
===================================================================
---- gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gfortran.dg/gomp/pr27573.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -11,5 +11,3 @@
end do
!$omp end parallel
Index: gcc/testsuite/gfortran.dg/gomp/pr45595.f90
===================================================================
--- gcc/testsuite/gfortran.dg/gomp/pr45595.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/gomp/pr45595.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/gomp/pr45595.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,10 @@
+! PR fortran/45595
+! { dg-do compile }
+end subroutine
Index: gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
===================================================================
---- gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -12,7 +12,7 @@
x = a(4)
!$omp end parallel
!$omp end parallel
!$omp parallel default(none) private (x)
x = c(6)
+Index: gcc/testsuite/gfortran.dg/select_type_11.f03
+===================================================================
+--- gcc/testsuite/gfortran.dg/select_type_11.f03 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gfortran.dg/select_type_11.f03 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -19,7 +19,7 @@
+ class(vector_class), intent(in) :: v
+
+ select type (v)
+- class is (bad_id) ! { dg-error "is not an accessible derived type" }
++ class is (bad_id) ! { dg-error " error in CLASS IS specification" }
+ this%elements(:) = v%elements(:) ! { dg-error "is not a member of" }
+ end select
+
Index: gcc/testsuite/gfortran.dg/intrinsic_6.f90
===================================================================
--- gcc/testsuite/gfortran.dg/intrinsic_6.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/intrinsic_6.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/intrinsic_6.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-fimplicit-none" }
+ INTRINSIC MAX
+ DOUBLE PRECISION WORK(MAX(2,3))
+END
+Index: gcc/testsuite/gfortran.dg/allocate_with_typespec_4.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/allocate_with_typespec_4.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/allocate_with_typespec_4.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,28 @@
++! { dg-do compile }
++! { dg-options "-w" }
++subroutine not_an_f03_intrinsic
++
++ implicit none
++
++ byte, allocatable :: x, y(:)
++ real*8, allocatable :: x8, y8(:)
++ double complex :: z
++
++ type real_type
++ integer mytype
++ end type real_type
++
++ type(real_type), allocatable :: b, c(:)
++
++ allocate(byte :: x) ! { dg-error "Error in type-spec at" }
++ allocate(byte :: y(1)) ! { dg-error "Error in type-spec at" }
++
++ allocate(real*8 :: x) ! { dg-error "Invalid type-spec at" }
++ allocate(real*8 :: y(1)) ! { dg-error "Invalid type-spec at" }
++ allocate(real*4 :: x8) ! { dg-error "Invalid type-spec at" }
++ allocate(real*4 :: y8(1)) ! { dg-error "Invalid type-spec at" }
++ allocate(double complex :: d1) ! { dg-error "not a nonprocedure pointer or an allocatable" }
++ allocate(real_type :: b)
++ allocate(real_type :: c(1))
++
++end subroutine not_an_f03_intrinsic
+Index: gcc/testsuite/gfortran.dg/fmt_t_6.f
+===================================================================
+--- gcc/testsuite/gfortran.dg/fmt_t_6.f (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gfortran.dg/fmt_t_6.f (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,4 +1,4 @@
+-! { dg-do run }
++! { dg-do run }
+ ! PR34782 tab format failure to display properly (regression vs. g77)
+ character a(6)
+ character(22) :: output
Index: gcc/testsuite/gfortran.dg/namelist_64.f90
===================================================================
--- gcc/testsuite/gfortran.dg/namelist_64.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/namelist_64.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/namelist_64.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,27 @@
+! { dg-do run }
+! PR45532 gfortran namelist read error.
+if (curve(1)%symbol%typee /= 1234) call abort
+close(10)
+end program
+Index: gcc/testsuite/gfortran.dg/namelist_66.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/namelist_66.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/namelist_66.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,40 @@
++! { dg-do run }
++! PR46010 Failure to read these two examples of namelists
++type ptracer
++ character(len = 2) :: sname
++ logical :: lini
++end type ptracer
++type(ptracer) , dimension(3) :: tracer
++namelist/naml1/ tracer
++
++type qptracer
++ character(len = 20) :: sname = ""!: short name
++ character(len = 45 ) :: lname = ""!: long name
++ character(len = 20 ) :: sunit = "" !: unit
++ logical :: lini !: read in a file or not
++ logical :: lsav !: ouput the tracer or not
++end type qptracer
++type(qptracer) , dimension(3) :: qtracer
++namelist/naml2/ qtracer
++
++open (99, file='nml.dat', status="replace")
++write(99,*) "&naml1"
++write(99,*) " tracer(1) = 'aa', .true."
++write(99,*) " tracer(2) = 'bb', .true."
++write(99,*) " tracer(3) = 'cc', .true."
++write(99,*) "/"
++rewind(99)
++read (99, nml=naml1)
++write (*, nml=naml1)
++rewind(99)
++write(99,*) "&naml2 ! just some stuff"
++write(99,*) " qtracer(1) = 'dic ' , 'dissolved inorganic concentration ', 'mol-c/l' , .true. , .true.,"
++write(99,*) " qtracer(2) = 'alkalini' , 'total alkalinity concentration ', 'eq/l ' , .true. , .true.,"
++write(99,*) "/"
++rewind(99)
++read (99, nml=naml2)
++write (*, nml=naml2)
++rewind(99)
++
++close (99, status="delete")
++end
+Index: gcc/testsuite/gfortran.dg/shape_5.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/shape_5.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/shape_5.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,8 @@
++! { dg-do run }
++! PR 40067 - this used to segfault on an unallocated return array.
++ integer, dimension(10) :: int1d
++ integer, dimension(:), pointer :: int1d_retrieved
++
++ allocate(int1d_retrieved(10))
++ if (any(shape(int1d_retrieved) /= shape(INT1D))) call abort()
++ end
Index: gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90
===================================================================
--- gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,30 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+ j = total
+ end
+! { dg-final { scan-tree-dump-times "j = 50" 1 "original" } }
+Index: gcc/testsuite/gfortran.dg/volatile12.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/volatile12.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/volatile12.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,16 @@
++! { dg-do compile }
++! { dg-options "-fdump-tree-optimized -O3" }
++!
++! PR fortran/45742
++!
++
++subroutine sub(arg)
++ integer, volatile :: arg
++ if (arg /= arg) call I_dont_exist()
++end
++
++! { dg-final { scan-tree-dump "integer.kind=.. . volatile arg" "optimized" } }
++! { dg-final { scan-tree-dump-times " =.v. arg;" 2 "optimized" } }
++! { dg-final { scan-tree-dump "i_dont_exist" "optimized" } }
++! { dg-final { cleanup-tree-dump "optimized" } }
++
+Index: gcc/testsuite/gfortran.dg/pr44691.f
+===================================================================
+--- gcc/testsuite/gfortran.dg/pr44691.f (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/pr44691.f (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,41 @@
++C PR rtl-optimization/44691
++C { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
++C { dg-options "-O2 -fselective-scheduling2" }
++
++ SUBROUTINE ORIEN(IW,NATOT,NTOTORB,NATORB,P,T)
++ IMPLICIT DOUBLE PRECISION(A-H,O-Z)
++ DIMENSION NATORB(NATOT),P(NTOTORB*(NTOTORB+1)/2)
++ DIMENSION T(NTOTORB,NTOTORB)
++ DO 9000 IATOM=1,NATOT
++ ILAST = NTOTORB
++ IF (IATOM.NE.NATOT) ILAST=NATORB(IATOM+1)-1
++ DO 8000 IAOI=NATORB(IATOM),ILAST
++ DO 7000 IAOJ = IAOI+1,ILAST
++ R2 = 0.0D+00
++ R3 = 0.0D+00
++ DO 6000 INOTA=1,NATOT
++ DO 5000 IK=NATORB(INOTA),NTOTORB
++ IMAI=MAX(IK,IAOI)
++ IMII=MIN(IK,IAOI)
++ IMAJ=MAX(IK,IAOJ)
++ IMIJ=MIN(IK,IAOJ)
++ IKI=(IMAI*(IMAI-1))/2 + IMII
++ IKJ=(IMAJ*(IMAJ-1))/2 + IMIJ
++ PIKI=P(IKI)
++ PIKJ=P(IKJ)
++ R2 = R2 + (PIKI**4)-6*(PIKI*PIKI*PIKJ*PIKJ)+(PIKJ)
++ 5000 CONTINUE
++ 6000 CONTINUE
++ R2 = (R2/4.0D+00)
++ Q = SQRT(R2*R2 + R3*R3)
++ IF (Q.LT.1.0D-08) GO TO 7000
++ A = COS(THETA)
++ B = -SIN(THETA)
++ CALL ROT1INT(NTOTORB,IAOI,IAOJ,A,B,P)
++ 7000 CONTINUE
++ 8000 CONTINUE
++ 9000 CONTINUE
++ RETURN
++ END
++
++
+Index: gcc/testsuite/gfortran.dg/allocate_with_typespec_1.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/allocate_with_typespec_1.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/allocate_with_typespec_1.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,121 @@
++! { dg-do compile }
++!
++! Allocation of arrays with a type-spec specification with implicit none.
++!
++subroutine implicit_none_test1
++
++ implicit none
++
++ real, allocatable :: x(:)
++ real(4), allocatable :: x4(:)
++ real(8), allocatable :: x8(:)
++ double precision, allocatable :: d1(:)
++ doubleprecision, allocatable :: d2(:)
++ character, allocatable :: c1(:)
++ character(len=4), allocatable :: c2(:)
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b(:)
++
++ allocate(real :: x(1))
++ allocate(real(4) :: x4(1))
++ allocate(real(8) :: x8(1))
++ allocate(double precision :: d1(1))
++ allocate(doubleprecision :: d2(1))
++ allocate(character :: c1(1))
++ allocate(character(len=4) :: c2(1))
++ allocate(a :: b(1))
++
++end subroutine implicit_none_test1
++!
++! Allocation of a scalar with a type-spec specification with implicit none
++!
++subroutine implicit_none_test2
++
++ implicit none
++
++ real, allocatable :: x
++ real(4), allocatable :: x4
++ real(8), allocatable :: x8
++ double precision, allocatable :: d1
++ doubleprecision, allocatable :: d2
++ character, allocatable :: c1
++ character(len=4), allocatable :: c2
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b
++
++ allocate(real :: x)
++ allocate(real(4) :: x4)
++ allocate(real(8) :: x8)
++ allocate(double precision :: d1)
++ allocate(doubleprecision :: d2)
++ allocate(character :: c1)
++ allocate(character(len=4) :: c2)
++ allocate(a :: b)
++
++end subroutine implicit_none_test2
++!
++! Allocation of arrays with a type-spec specification with implicit none.
++!
++subroutine implicit_test3
++
++ real, allocatable :: x(:)
++ real(4), allocatable :: x4(:)
++ real(8), allocatable :: x8(:)
++ double precision, allocatable :: d1(:)
++ doubleprecision, allocatable :: d2(:)
++ character, allocatable :: c1(:)
++ character(len=4), allocatable :: c2(:)
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b(:)
++
++ allocate(real :: x(1))
++ allocate(real(4) :: x4(1))
++ allocate(real(8) :: x8(1))
++ allocate(double precision :: d1(1))
++ allocate(doubleprecision :: d2(1))
++ allocate(character :: c1(1))
++ allocate(character(len=4) :: c2(1))
++ allocate(a :: b(1))
++
++end subroutine implicit_test3
++!
++! Allocation of a scalar with a type-spec specification without implicit none
++!
++subroutine implicit_test4
++
++ real, allocatable :: x
++ real(4), allocatable :: x4
++ real(8), allocatable :: x8
++ double precision, allocatable :: d1
++ doubleprecision, allocatable :: d2
++ character, allocatable :: c1
++ character(len=4), allocatable :: c2
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b
++
++ allocate(real :: x)
++ allocate(real(4) :: x4)
++ allocate(real(8) :: x8)
++ allocate(double precision :: d1)
++ allocate(doubleprecision :: d2)
++ allocate(character :: c1)
++ allocate(character(len=4) :: c2)
++ allocate(a :: b)
++
++end subroutine implicit_test4
+Index: gcc/testsuite/gfortran.dg/allocate_with_typespec_2.f
+===================================================================
+--- gcc/testsuite/gfortran.dg/allocate_with_typespec_2.f (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/allocate_with_typespec_2.f (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,121 @@
++C { dg-do compile }
++C
++C Allocation of arrays with a type-spec specification with implicit none.
++C
++ subroutine implicit_none_test1
++
++ implicit none
++
++ real, allocatable :: x(:)
++ real(4), allocatable :: x4(:)
++ real(8), allocatable :: x8(:)
++ double precision, allocatable :: d1(:)
++ doubleprecision, allocatable :: d2(:)
++ character, allocatable :: c1(:)
++ character(len=4), allocatable :: c2(:)
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b(:)
++
++ allocate(real :: x(1))
++ allocate(real(4) :: x4(1))
++ allocate(real(8) :: x8(1))
++ allocate(double precision :: d1(1))
++ allocate(doubleprecision :: d2(1))
++ allocate(character :: c1(1))
++ allocate(character(len=4) :: c2(1))
++ allocate(a :: b(1))
++
++ end
++C
++C Allocation of a scalar with a type-spec specification with implicit none
++C
++ subroutine implicit_none_test2
++
++ implicit none
++
++ real, allocatable :: x
++ real(4), allocatable :: x4
++ real(8), allocatable :: x8
++ double precision, allocatable :: d1
++ doubleprecision, allocatable :: d2
++ character, allocatable :: c1
++ character(len=4), allocatable :: c2
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b
++
++ allocate(real :: x)
++ allocate(real(4) :: x4)
++ allocate(real(8) :: x8)
++ allocate(double precision :: d1)
++ allocate(doubleprecision :: d2)
++ allocate(character :: c1)
++ allocate(character(len=4) :: c2)
++ allocate(a :: b)
++
++ end subroutine implicit_none_test2
++C
++C Allocation of arrays with a type-spec specification with implicit none.
++C
++ subroutine implicit_test3
++
++ real, allocatable :: x(:)
++ real(4), allocatable :: x4(:)
++ real(8), allocatable :: x8(:)
++ double precision, allocatable :: d1(:)
++ doubleprecision, allocatable :: d2(:)
++ character, allocatable :: c1(:)
++ character(len=4), allocatable :: c2(:)
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b(:)
++
++ allocate(real :: x(1))
++ allocate(real(4) :: x4(1))
++ allocate(real(8) :: x8(1))
++ allocate(double precision :: d1(1))
++ allocate(doubleprecision :: d2(1))
++ allocate(character :: c1(1))
++ allocate(character(len=4) :: c2(1))
++ allocate(a :: b(1))
++
++ end
++C
++C Allocation of a scalar with a type-spec specification without implicit none
++C
++ subroutine implicit_test4
++
++ real, allocatable :: x
++ real(4), allocatable :: x4
++ real(8), allocatable :: x8
++ double precision, allocatable :: d1
++ doubleprecision, allocatable :: d2
++ character, allocatable :: c1
++ character(len=4), allocatable :: c2
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b
++
++ allocate(real :: x)
++ allocate(real(4) :: x4)
++ allocate(real(8) :: x8)
++ allocate(double precision :: d1)
++ allocate(doubleprecision :: d2)
++ allocate(character :: c1)
++ allocate(character(len=4) :: c2)
++ allocate(a :: b)
++
++ end
+Index: gcc/testsuite/gfortran.dg/allocate_with_typespec_3.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/allocate_with_typespec_3.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/gfortran.dg/allocate_with_typespec_3.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,107 @@
++! { dg-do compile }
++!
++! Allocation of arrays with a type-spec specification with implicit none.
++!
++subroutine implicit_none_test1
++
++ implicit none
++
++ real, allocatable :: x(:)
++ real(4), allocatable :: x4(:)
++ real(8), allocatable :: x8(:)
++ double precision, allocatable :: d1(:)
++ doubleprecision, allocatable :: d2(:)
++ character, allocatable :: c1(:)
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b(:)
++
++ allocate(complex :: x(1)) ! { dg-error "is type incompatible" }
++ allocate(real(8) :: x4(1)) ! { dg-error "differs from the kind type parameter" }
++ allocate(real(4) :: x8(1)) ! { dg-error "differs from the kind type parameter" }
++ allocate(double :: d1(1)) ! { dg-error "Error in type-spec at" }
++ allocate(character(:) :: c1(1)) ! { dg-error "Syntax error in CHARACTER declaration" }
++ allocate(real :: b(1)) ! { dg-error "is type incompatible" }
++
++end subroutine implicit_none_test1
++!
++! Allocation of a scalar with a type-spec specification with implicit none
++!
++subroutine implicit_none_test2
++
++ implicit none
++
++ real, allocatable :: x
++ real(4), allocatable :: x4
++ real(8), allocatable :: x8
++ double precision, allocatable :: d1
++ character, allocatable :: c1
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b
++
++ allocate(complex :: x) ! { dg-error "is type incompatible" }
++ allocate(real(8) :: x4) ! { dg-error "differs from the kind type parameter" }
++ allocate(real(4) :: x8) ! { dg-error "differs from the kind type parameter" }
++ allocate(double :: d1) ! { dg-error "Error in type-spec at" }
++ allocate(character(:) :: c1) ! { dg-error "Syntax error in CHARACTER declaration" }
++ allocate(real :: b) ! { dg-error "is type incompatible" }
++
++end subroutine implicit_none_test2
++!
++! Allocation of arrays with a type-spec specification with implicit none.
++!
++subroutine implicit_test3
++
++ real, allocatable :: x(:)
++ real(4), allocatable :: x4(:)
++ real(8), allocatable :: x8(:)
++ double precision, allocatable :: d1(:)
++ doubleprecision, allocatable :: d2(:)
++ character, allocatable :: c1(:)
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b(:)
++
++ allocate(complex :: x(1)) ! { dg-error "is type incompatible" }
++ allocate(real(8) :: x4(1)) ! { dg-error "differs from the kind type parameter" }
++ allocate(real(4) :: x8(1)) ! { dg-error "differs from the kind type parameter" }
++ allocate(double :: d1(1)) ! { dg-error "Error in type-spec at" }
++ allocate(character(:) :: c1(1)) ! { dg-error "Syntax error in CHARACTER declaration" }
++ allocate(real :: b(1)) ! { dg-error "is type incompatible" }
++
++end subroutine implicit_test3
++!
++! Allocation of a scalar with a type-spec specification without implicit none
++!
++subroutine implicit_test4
++
++ real, allocatable :: x
++ real(4), allocatable :: x4
++ real(8), allocatable :: x8
++ double precision, allocatable :: d1
++ character, allocatable :: c1
++
++ type a
++ integer mytype
++ end type a
++
++ type(a), allocatable :: b
++
++ allocate(complex :: x) ! { dg-error "is type incompatible" }
++ allocate(real(8) :: x4) ! { dg-error "differs from the kind type parameter" }
++ allocate(real(4) :: x8) ! { dg-error "differs from the kind type parameter" }
++ allocate(double :: d1) ! { dg-error "Error in type-spec at" }
++ allocate(character(:) :: c1) ! { dg-error "Syntax error in CHARACTER declaration" }
++ allocate(real :: b) ! { dg-error "is type incompatible" }
++
++end subroutine implicit_test4
Index: gcc/testsuite/gfortran.dg/namelist_63.f90
===================================================================
--- gcc/testsuite/gfortran.dg/namelist_63.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/namelist_63.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/namelist_63.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,28 @@
+! { dg-do compile }
+!
Index: gcc/testsuite/gfortran.dg/initialization_27.f90
===================================================================
--- gcc/testsuite/gfortran.dg/initialization_27.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/initialization_27.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/initialization_27.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,39 @@
+! { dg-do run}
+!
+ type(A), intent(out) :: x(:)
+ end subroutine sub2
+end program test_init
+Index: gcc/testsuite/gfortran.dg/allocate_derived_1.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/allocate_derived_1.f90 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gfortran.dg/allocate_derived_1.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -32,7 +32,7 @@
+ allocate(t1 :: x(2))
+ allocate(t2 :: x(3))
+ allocate(t3 :: x(4))
+- allocate(tx :: x(5)) ! { dg-error "is not an accessible derived type" }
++ allocate(tx :: x(5)) ! { dg-error "Error in type-spec at" }
+ allocate(u0 :: x(6)) ! { dg-error "may not be ABSTRACT" }
+ allocate(v1 :: x(7)) ! { dg-error "is type incompatible with typespec" }
+
Index: gcc/testsuite/gfortran.dg/namelist_65.f90
===================================================================
--- gcc/testsuite/gfortran.dg/namelist_65.f90 (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/testsuite/gfortran.dg/namelist_65.f90 (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/testsuite/gfortran.dg/namelist_65.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,22 @@
+! { dg-do run }
+! { dg-options "-std=gnu" }
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 165515)
++++ gcc/testsuite/gfortran.dg/allocate_derived_3.f90 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,17 @@
+! { dg-do compile }
+!
+ allocate(real(8) :: r8 )
+
+end
+Index: gcc/testsuite/gfortran.dg/select_type_1.f03
+===================================================================
+--- gcc/testsuite/gfortran.dg/select_type_1.f03 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/testsuite/gfortran.dg/select_type_1.f03 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -44,7 +44,7 @@
+ print *,"a is TYPE(ts)"
+ type is (t3) ! { dg-error "must be an extension of" }
+ print *,"a is TYPE(t3)"
+- type is (t4) ! { dg-error "is not an accessible derived type" }
++ type is (t4) ! { dg-error "error in TYPE IS specification" }
+ print *,"a is TYPE(t3)"
+ class is (t1)
+ print *,"a is CLASS(t1)"
+Index: gcc/testsuite/c-c++-common/pr43690.c
+===================================================================
+--- gcc/testsuite/c-c++-common/pr43690.c (.../tags/gcc_4_5_1_release) (wersja 0)
++++ gcc/testsuite/c-c++-common/pr43690.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,13 @@
++/* PR middle-end/43690 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void
++foo (char *x)
++{
++ asm ("" : : "m" (x++)); /* { dg-error "is not directly addressable" } */
++ asm ("" : : "m" (++x)); /* { dg-error "is not directly addressable" } */
++ asm ("" : : "m" (x--)); /* { dg-error "is not directly addressable" } */
++ asm ("" : : "m" (--x)); /* { dg-error "is not directly addressable" } */
++ asm ("" : : "m" (x + 1)); /* { dg-error "is not directly addressable" } */
++}
Index: gcc/cp/typeck.c
===================================================================
---- gcc/cp/typeck.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cp/typeck.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cp/typeck.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/typeck.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1164,7 +1164,7 @@
if (!t1_typedef_variant_p || !t2_typedef_variant_p)
of this function. */
Index: gcc/cp/init.c
===================================================================
---- gcc/cp/init.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cp/init.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cp/init.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/init.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2158,7 +2158,8 @@
{
init_expr = cp_build_indirect_ref (data_addr, RO_NULL, complain);
{
Index: gcc/cp/decl.c
===================================================================
---- gcc/cp/decl.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cp/decl.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cp/decl.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/decl.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2077,6 +2077,10 @@
SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl));
DECL_HAS_INIT_PRIORITY_P (olddecl) = 1;
with that from NEWDECL below. */
Index: gcc/cp/tree.c
===================================================================
---- gcc/cp/tree.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cp/tree.c (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1039,6 +1039,11 @@
+--- gcc/cp/tree.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/tree.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -72,7 +72,8 @@
+ == REFERENCE_TYPE)
+ return lvalue_p_1 (TREE_OPERAND (ref, 0));
+
+- if (TREE_CODE (TREE_TYPE (ref)) == REFERENCE_TYPE)
++ if (TREE_TYPE (ref)
++ && TREE_CODE (TREE_TYPE (ref)) == REFERENCE_TYPE)
+ {
+ /* unnamed rvalue references are rvalues */
+ if (TYPE_REF_IS_RVALUE (TREE_TYPE (ref))
+@@ -810,7 +811,7 @@
+ /* See if we already have an identically qualified type. Tests
+ should be equivalent to those in check_qualified_type. */
+ for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
+- if (cp_type_quals (t) == type_quals
++ if (TREE_TYPE (t) == element_type
+ && TYPE_NAME (t) == TYPE_NAME (type)
+ && TYPE_CONTEXT (t) == TYPE_CONTEXT (type)
+ && attribute_list_equal (TYPE_ATTRIBUTES (t),
+@@ -1039,6 +1040,11 @@
TYPE_RAISES_EXCEPTIONS (t));
}
break;
}
Index: gcc/cp/ChangeLog
===================================================================
---- gcc/cp/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cp/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1,3 +1,33 @@
+--- gcc/cp/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,53 @@
++2010-11-11 Jakub Jelinek <jakub@redhat.com>
++
++ Backport from mainline
++ 2010-11-09 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/45894
++ * tree.c (lvalue_p_1): Don't crash if ref has NULL type.
++
++ 2010-11-05 Jakub Jelinek <jakub@redhat.com>
++
++ PR c++/46160
++ * cp-gimplify.c (cp_gimplify_expr): Drop volatile INDIRECT_REFs
++ on the RHS to avoid infinite recursion with gimplify_expr.
++
++2010-10-15 Jason Merrill <jason@redhat.com>
++
++ PR c++/45983
++ * tree.c (cp_build_qualified_type_real): Don't reuse a variant
++ with a different typedef variant of the element type.
++
+2010-09-06 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/45200
2010-07-31 Release Manager
* GCC 4.5.1 released.
+Index: gcc/cp/cp-gimplify.c
+===================================================================
+--- gcc/cp/cp-gimplify.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/cp-gimplify.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -590,6 +590,16 @@
+ if (!TREE_SIDE_EFFECTS (op1)
+ || (DECL_P (op1) && TREE_THIS_VOLATILE (op1)))
+ *expr_p = op0;
++ else if (TREE_CODE (op1) == INDIRECT_REF
++ && TREE_THIS_VOLATILE (op1))
++ {
++ /* Similarly for volatile INDIRECT_REFs on the RHS. */
++ if (!TREE_SIDE_EFFECTS (TREE_OPERAND (op1, 0)))
++ *expr_p = op0;
++ else
++ *expr_p = build2 (COMPOUND_EXPR, TREE_TYPE (*expr_p),
++ TREE_OPERAND (op1, 0), op0);
++ }
+ else
+ *expr_p = build2 (COMPOUND_EXPR, TREE_TYPE (*expr_p),
+ op0, op1);
Index: gcc/cp/parser.c
===================================================================
---- gcc/cp/parser.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cp/parser.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cp/parser.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cp/parser.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -15191,6 +15191,7 @@
the default argument; otherwise the default
argument continues. */
{
Index: gcc/haifa-sched.c
===================================================================
---- gcc/haifa-sched.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/haifa-sched.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/haifa-sched.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/haifa-sched.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1997,13 +1997,9 @@
q_ptr = NEXT_Q (q_ptr);
Index: gcc/tree-ssa-loop-ivopts.c
===================================================================
---- gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1557,7 +1557,7 @@
/* Return true if EXPR may be non-addressable. */
switch (TREE_CODE (expr))
Index: gcc/caller-save.c
===================================================================
---- gcc/caller-save.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/caller-save.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/caller-save.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/caller-save.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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. */
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 165515)
-+++ gcc/ipa-pure-const.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ipa-pure-const.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ipa-pure-const.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -416,6 +416,13 @@
print_gimple_stmt (dump_file, stmt, 0, 0);
}
/* Look for loads and stores. */
walk_stmt_load_store_ops (stmt, local, check_load, check_store);
+@@ -453,7 +460,7 @@
+ for (i = 0; i < gimple_asm_nclobbers (stmt); i++)
+ {
+ tree op = gimple_asm_clobber_op (stmt, i);
+- if (simple_cst_equal(TREE_VALUE (op), memory_identifier_string) == 1)
++ if (strcmp (TREE_STRING_POINTER (TREE_VALUE (op)), "memory") == 0)
+ {
+ if (dump_file)
+ fprintf (dump_file, " memory asm clobber is not const/pure");
Index: gcc/cse.c
===================================================================
---- gcc/cse.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cse.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cse.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cse.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -6359,29 +6359,31 @@
recorded_label_ref = true;
return false;
Index: gcc/ira-color.c
===================================================================
---- gcc/ira-color.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ira-color.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ira-color.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ira-color.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -82,6 +82,12 @@
more costly although simpler. */
static VEC(ira_allocno_t,heap) *removed_splay_allocno_vec;
qsort leave nothing to chance. */
Index: gcc/tree-ssa-math-opts.c
===================================================================
---- gcc/tree-ssa-math-opts.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-ssa-math-opts.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-ssa-math-opts.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-ssa-math-opts.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -640,7 +640,7 @@
result of the cexpi call we insert before the use statement that
dominates all other candidates. */
static bool
Index: gcc/sel-sched.c
===================================================================
---- gcc/sel-sched.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/sel-sched.c (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -4878,18 +4878,35 @@
+--- gcc/sel-sched.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/sel-sched.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -836,7 +836,8 @@
+
+ if (GET_CODE (*cur_rtx) == SUBREG
+ && REG_P (p->x)
+- && REGNO (SUBREG_REG (*cur_rtx)) == REGNO (p->x))
++ && (!REG_P (SUBREG_REG (*cur_rtx))
++ || REGNO (SUBREG_REG (*cur_rtx)) == REGNO (p->x)))
+ {
+ /* ??? Do not support substituting regs inside subregs. In that case,
+ simplify_subreg will be called by validate_replace_rtx, and
+@@ -4878,18 +4879,35 @@
move_cond_jump (rtx insn, bnd_t bnd)
{
edge ft_edge;
next = PREV_INSN (insn);
BND_TO (bnd) = insn;
-@@ -4904,28 +4921,35 @@
+@@ -4904,28 +4922,35 @@
gcc_assert (block_new->next_bb == block_next
&& block_from->next_bb == block_new);
&& !sel_bb_empty_p (block_new));
Index: gcc/ifcvt.c
===================================================================
---- gcc/ifcvt.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ifcvt.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ifcvt.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ifcvt.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2118,8 +2118,15 @@
/* Otherwise, fall back on canonicalize_condition to do the dirty
intact. */
Index: gcc/dwarf2out.c
===================================================================
---- gcc/dwarf2out.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/dwarf2out.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/dwarf2out.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/dwarf2out.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -471,7 +471,6 @@
static void output_cfi_directive (dw_cfi_ref);
static void output_call_frame_info (int);
Index: gcc/expr.c
===================================================================
---- gcc/expr.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/expr.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/expr.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/expr.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -9344,7 +9344,15 @@
{
if (GET_CODE (op0) == SUBREG)
&& MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode))
Index: gcc/dwarf2out.h
===================================================================
---- gcc/dwarf2out.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/dwarf2out.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/dwarf2out.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/dwarf2out.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -22,6 +22,7 @@
extern void dwarf2out_frame_debug (rtx, bool);
extern void dwarf2out_begin_epilogue (rtx);
extern void debug_dwarf (void);
struct die_struct;
+Index: gcc/tree-parloops.c
+===================================================================
+--- gcc/tree-parloops.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-parloops.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -315,10 +315,12 @@
+ /* Assigns the address of OBJ in TYPE to an ssa name, and returns this name.
+ The assignment statement is placed on edge ENTRY. DECL_ADDRESS maps decls
+ to their addresses that can be reused. The address of OBJ is known to
+- be invariant in the whole function. */
++ be invariant in the whole function. Other needed statements are placed
++ right before GSI. */
+
+ static tree
+-take_address_of (tree obj, tree type, edge entry, htab_t decl_address)
++take_address_of (tree obj, tree type, edge entry, htab_t decl_address,
++ gimple_stmt_iterator *gsi)
+ {
+ int uid;
+ void **dslot;
+@@ -340,6 +342,8 @@
+ dslot = htab_find_slot_with_hash (decl_address, &ielt, uid, INSERT);
+ if (!*dslot)
+ {
++ if (gsi == NULL)
++ return NULL;
+ addr = build_addr (*var_p, current_function_decl);
+ bvar = create_tmp_var (TREE_TYPE (addr), get_name (*var_p));
+ add_referenced_var (bvar);
+@@ -356,13 +360,22 @@
+ else
+ name = ((struct int_tree_map *) *dslot)->to;
+
++ if (gsi == NULL)
++ {
++ if (var_p != &obj)
++ {
++ *var_p = build1 (INDIRECT_REF, TREE_TYPE (*var_p), name);
++ name = build_fold_addr_expr_with_type (obj, type);
++ }
++ return fold_convert (type, name);
++ }
+ if (var_p != &obj)
+ {
+ *var_p = build1 (INDIRECT_REF, TREE_TYPE (*var_p), name);
+ name = force_gimple_operand (build_addr (obj, current_function_decl),
+ &stmts, true, NULL_TREE);
+ if (!gimple_seq_empty_p (stmts))
+- gsi_insert_seq_on_edge_immediate (entry, stmts);
++ gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT);
+ }
+
+ if (TREE_TYPE (name) != type)
+@@ -370,7 +383,7 @@
+ name = force_gimple_operand (fold_convert (type, name), &stmts, true,
+ NULL_TREE);
+ if (!gimple_seq_empty_p (stmts))
+- gsi_insert_seq_on_edge_immediate (entry, stmts);
++ gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT);
+ }
+
+ return name;
+@@ -432,7 +445,9 @@
+ struct walk_stmt_info info;
+ edge entry;
+ htab_t decl_address;
++ gimple_stmt_iterator *gsi;
+ bool changed;
++ bool reset;
+ };
+
+ /* Eliminates references to local variables in *TP out of the single
+@@ -456,7 +471,14 @@
+
+ type = TREE_TYPE (t);
+ addr_type = build_pointer_type (type);
+- addr = take_address_of (t, addr_type, dta->entry, dta->decl_address);
++ addr = take_address_of (t, addr_type, dta->entry, dta->decl_address,
++ dta->gsi);
++ if (dta->gsi == NULL && addr == NULL_TREE)
++ {
++ dta->reset = true;
++ return NULL_TREE;
++ }
++
+ *tp = build1 (INDIRECT_REF, TREE_TYPE (*tp), addr);
+
+ dta->changed = true;
+@@ -486,7 +508,13 @@
+ return NULL_TREE;
+
+ addr_type = TREE_TYPE (t);
+- addr = take_address_of (obj, addr_type, dta->entry, dta->decl_address);
++ addr = take_address_of (obj, addr_type, dta->entry, dta->decl_address,
++ dta->gsi);
++ if (dta->gsi == NULL && addr == NULL_TREE)
++ {
++ dta->reset = true;
++ return NULL_TREE;
++ }
+ *tp = addr;
+
+ dta->changed = true;
+@@ -499,27 +527,40 @@
+ return NULL_TREE;
+ }
+
+-/* Moves the references to local variables in STMT out of the single
++/* Moves the references to local variables in STMT at *GSI out of the single
+ entry single exit region starting at ENTRY. DECL_ADDRESS contains
+ addresses of the references that had their address taken
+ already. */
+
+ static void
+-eliminate_local_variables_stmt (edge entry, gimple stmt,
++eliminate_local_variables_stmt (edge entry, gimple_stmt_iterator *gsi,
+ htab_t decl_address)
+ {
+ struct elv_data dta;
++ gimple stmt = gsi_stmt (*gsi);
+
+ memset (&dta.info, '\0', sizeof (dta.info));
+ dta.entry = entry;
+ dta.decl_address = decl_address;
+ dta.changed = false;
++ dta.reset = false;
+
+ if (gimple_debug_bind_p (stmt))
+- walk_tree (gimple_debug_bind_get_value_ptr (stmt),
+- eliminate_local_variables_1, &dta.info, NULL);
++ {
++ dta.gsi = NULL;
++ walk_tree (gimple_debug_bind_get_value_ptr (stmt),
++ eliminate_local_variables_1, &dta.info, NULL);
++ if (dta.reset)
++ {
++ gimple_debug_bind_reset_value (stmt);
++ dta.changed = true;
++ }
++ }
+ else
+- walk_gimple_op (stmt, eliminate_local_variables_1, &dta.info);
++ {
++ dta.gsi = gsi;
++ walk_gimple_op (stmt, eliminate_local_variables_1, &dta.info);
++ }
+
+ if (dta.changed)
+ update_stmt (stmt);
+@@ -543,6 +584,7 @@
+ VEC (basic_block, heap) *body = VEC_alloc (basic_block, heap, 3);
+ unsigned i;
+ gimple_stmt_iterator gsi;
++ bool has_debug_stmt = false;
+ htab_t decl_address = htab_create (10, int_tree_map_hash, int_tree_map_eq,
+ free);
+ basic_block entry_bb = entry->src;
+@@ -553,9 +595,18 @@
+ for (i = 0; VEC_iterate (basic_block, body, i, bb); i++)
+ if (bb != entry_bb && bb != exit_bb)
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+- eliminate_local_variables_stmt (entry, gsi_stmt (gsi),
+- decl_address);
++ if (gimple_debug_bind_p (gsi_stmt (gsi)))
++ has_debug_stmt = true;
++ else
++ eliminate_local_variables_stmt (entry, &gsi, decl_address);
+
++ if (has_debug_stmt)
++ for (i = 0; VEC_iterate (basic_block, body, i, bb); i++)
++ if (bb != entry_bb && bb != exit_bb)
++ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
++ if (gimple_debug_bind_p (gsi_stmt (gsi)))
++ eliminate_local_variables_stmt (entry, &gsi, decl_address);
++
+ htab_delete (decl_address);
+ VEC_free (basic_block, heap, body);
+ }
Index: gcc/ada/ChangeLog
===================================================================
---- gcc/ada/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ada/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ada/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ada/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,24 @@
+2010-09-19 Eric Botcazou <ebotcazou@adacore.com>
+
* GCC 4.5.1 released.
Index: gcc/ada/gcc-interface/utils.c
===================================================================
---- gcc/ada/gcc-interface/utils.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ada/gcc-interface/utils.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ada/gcc-interface/utils.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ada/gcc-interface/utils.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -423,11 +423,8 @@
void
gnat_pushdecl (tree decl, Node_Id gnat_node)
/* Build a type to be used to represent an aliased object whose nominal
Index: gcc/ada/gcc-interface/decl.c
===================================================================
---- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1445,7 +1445,8 @@
= create_var_decl (get_entity_name (gnat_literal), NULL_TREE,
gnu_type, gnu_value, true, false, false,
gnu_value, gnu_literal_list);
Index: gcc/ada/gcc-interface/trans.c
===================================================================
---- gcc/ada/gcc-interface/trans.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ada/gcc-interface/trans.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ada/gcc-interface/trans.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ada/gcc-interface/trans.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2236,41 +2236,49 @@
= GGC_CNEW (struct language_function);
((Present (End_Label (Handled_Statement_Sequence (gnat_node)))
Index: gcc/sel-sched-ir.c
===================================================================
---- gcc/sel-sched-ir.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/sel-sched-ir.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/sel-sched-ir.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/sel-sched-ir.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -4324,7 +4324,7 @@
note = bb_note (bb);
head = next_nonnote_insn (note);
head = NULL_RTX;
}
+Index: gcc/c-decl.c
+===================================================================
+--- gcc/c-decl.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/c-decl.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -6709,7 +6709,8 @@
+
+ for (x = fieldlist; x != NULL_TREE; x = TREE_CHAIN (x))
+ {
+- if (pointer_set_contains (tset, DECL_NAME (x)))
++ if (DECL_NAME (x) != NULL_TREE
++ && pointer_set_contains (tset, DECL_NAME (x)))
+ {
+ warning_at (DECL_SOURCE_LOCATION (x), OPT_Wc___compat,
+ ("using %qD as both field and typedef name is "
Index: gcc/tree-eh.c
===================================================================
---- gcc/tree-eh.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-eh.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-eh.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-eh.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2317,6 +2317,11 @@
return true;
return false;
if (!is_gimple_resx (resx))
Index: gcc/fortran/openmp.c
===================================================================
---- gcc/fortran/openmp.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/openmp.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/openmp.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/openmp.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1489,7 +1489,8 @@
break;
}
&code->loc);
Index: gcc/fortran/intrinsic.c
===================================================================
---- gcc/fortran/intrinsic.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/intrinsic.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/intrinsic.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/intrinsic.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -112,6 +112,8 @@
sym->attr.flavor = FL_PROCEDURE;
sym->attr.proc = PROC_INTRINSIC;
Index: gcc/fortran/symbol.c
===================================================================
---- gcc/fortran/symbol.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/symbol.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/symbol.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/symbol.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2753,6 +2753,17 @@
if (lsym->attr.allocatable && rsym->attr.pointer)
return 1;
Index: gcc/fortran/gfortran.texi
===================================================================
---- gcc/fortran/gfortran.texi (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/gfortran.texi (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/gfortran.texi (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/gfortran.texi (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2639,9 +2639,6 @@
User-specified alignment rules for structures.
Automatically extend single precision constants to double.
@item
+Index: gcc/fortran/trans-common.c
+===================================================================
+--- gcc/fortran/trans-common.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/trans-common.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -323,6 +323,7 @@
+ {
+ tree new_type;
+ TREE_THIS_VOLATILE (field) = 1;
++ TREE_SIDE_EFFECTS (field) = 1;
+ new_type = build_qualified_type (TREE_TYPE (field), TYPE_QUAL_VOLATILE);
+ TREE_TYPE (field) = new_type;
+ }
Index: gcc/fortran/cpp.c
===================================================================
---- gcc/fortran/cpp.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/cpp.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/cpp.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/cpp.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -35,6 +35,7 @@
#include "../../libcpp/internal.h"
#include "cpp.h"
}
Index: gcc/fortran/cpp.h
===================================================================
---- gcc/fortran/cpp.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/cpp.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/cpp.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/cpp.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -24,6 +24,12 @@
bool gfc_cpp_preprocess_only (void);
Index: gcc/fortran/gfortran.h
===================================================================
---- gcc/fortran/gfortran.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/gfortran.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/gfortran.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/gfortran.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1326,7 +1326,7 @@
struct gfc_code *code;
Index: gcc/fortran/lang.opt
===================================================================
---- gcc/fortran/lang.opt (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/lang.opt (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/lang.opt (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/lang.opt (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -56,6 +56,42 @@
Fortran Joined Separate
-J<directory> Put MODULE files in 'directory'
; Documented in C
Index: gcc/fortran/ChangeLog
===================================================================
---- gcc/fortran/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1,3 +1,129 @@
+--- gcc/fortran/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,151 @@
++2010-11-13 Tobias Burnus <burnus@net-b.de>
++
++ PR fortran/45742
++ * trans-common.c (build_field): Add TREE_SIDE_EFFECTS for volatile.
++ * trans-decl.c (gfc_finish_var_decl): Ditto.
++ (create_function_arglist): Handle volatile dummy arguments.
++
++2010-11-01 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/46152
++ * fortran/match.c (match_derived_type_spec): Reoplace gfc_match_symbol
++ with a gfc_find_symbol to prevent namespace pollution. Remove dead
++ code.
++ (match_type_spec): Remove parsing of '::'. Collapse character
++ kind checking to one location.
++ (gfc_match_allocate): Use correct locus in error message.
++
++2010-10-25 Steven G. Kargl <kargl@gcc.gnu.org>
++
++ PR fortran/46140
++ * fortran/scanner.c (include_line): Check return value of load_file.
++
+2010-10-09 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/45748
* GCC 4.5.1 released.
Index: gcc/fortran/invoke.texi
===================================================================
---- gcc/fortran/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/invoke.texi (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/invoke.texi (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/invoke.texi (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -148,8 +148,7 @@
@item Directory Options
@cindex paths, search
Index: gcc/fortran/module.c
===================================================================
---- gcc/fortran/module.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/module.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/module.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/module.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -73,6 +73,7 @@
#include "match.h"
#include "parse.h" /* FIXME */
if (module_fp == NULL)
Index: gcc/fortran/trans.c
===================================================================
---- gcc/fortran/trans.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/trans.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/trans.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/trans.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1041,7 +1041,30 @@
input_location = loc->lb->location;
}
}
Index: gcc/fortran/scanner.c
===================================================================
---- gcc/fortran/scanner.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/scanner.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/scanner.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/scanner.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -390,7 +390,8 @@
}
+@@ -1825,7 +1840,9 @@
+ read by anything else. */
+
+ filename = gfc_widechar_to_char (begin, -1);
+- load_file (filename, NULL, false);
++ if (load_file (filename, NULL, false) == FAILURE)
++ exit (1);
++
+ gfc_free (filename);
+ return true;
+ }
Index: gcc/fortran/gfortranspec.c
===================================================================
---- gcc/fortran/gfortranspec.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/gfortranspec.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -415,36 +415,6 @@
continue;
}
/* Not a filename or library. */
Index: gcc/fortran/lang-specs.h
===================================================================
---- gcc/fortran/lang-specs.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/lang-specs.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/lang-specs.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/lang-specs.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -28,7 +28,7 @@
%{O*} %{undef}"
%{E|M|MM:%(cpp_debug_options) " CPP_ONLY_OPTIONS \
Index: gcc/fortran/resolve.c
===================================================================
---- gcc/fortran/resolve.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/resolve.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/resolve.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/resolve.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -208,11 +208,9 @@
continue;
}
apply_default_init (sym);
Index: gcc/fortran/trans-decl.c
===================================================================
---- gcc/fortran/trans-decl.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/trans-decl.c (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -2252,11 +2252,11 @@
+--- gcc/fortran/trans-decl.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/trans-decl.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -574,6 +574,7 @@
+ if (sym->attr.volatile_)
+ {
+ TREE_THIS_VOLATILE (decl) = 1;
++ TREE_SIDE_EFFECTS (decl) = 1;
+ new_type = build_qualified_type (TREE_TYPE (decl), TYPE_QUAL_VOLATILE);
+ TREE_TYPE (decl) = new_type;
+ }
+@@ -1869,10 +1870,19 @@
+ if (f->sym->attr.proc_pointer)
+ type = build_pointer_type (type);
+
++ if (f->sym->attr.volatile_)
++ type = build_qualified_type (type, TYPE_QUAL_VOLATILE);
++
+ /* Build the argument declaration. */
+ parm = build_decl (input_location,
+ PARM_DECL, gfc_sym_identifier (f->sym), type);
+
++ if (f->sym->attr.volatile_)
++ {
++ TREE_THIS_VOLATILE (parm) = 1;
++ TREE_SIDE_EFFECTS (parm) = 1;
++ }
++
+ /* Fill in arg stuff. */
+ DECL_CONTEXT (parm) = fndecl;
+ DECL_ARG_TYPE (parm) = TREE_VALUE (typelist);
+@@ -2252,11 +2262,11 @@
IDENTIFIER_POINTER (DECL_NAME (this_function_decl)));
if (!sym->attr.mixed_entry_master && sym->attr.function)
DECL_ARTIFICIAL (decl) = 1;
Index: gcc/fortran/match.c
===================================================================
---- gcc/fortran/match.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/match.c (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -2303,7 +2303,7 @@
+--- gcc/fortran/match.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/match.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2272,28 +2272,27 @@
+ static match
+ match_derived_type_spec (gfc_typespec *ts)
+ {
++ char name[GFC_MAX_SYMBOL_LEN + 1];
+ locus old_locus;
+ gfc_symbol *derived;
+
+- old_locus = gfc_current_locus;
++ old_locus = gfc_current_locus;
+
+- if (gfc_match_symbol (&derived, 1) == MATCH_YES)
++ if (gfc_match ("%n", name) != MATCH_YES)
+ {
+- if (derived->attr.flavor == FL_DERIVED)
+- {
+- ts->type = BT_DERIVED;
+- ts->u.derived = derived;
+- return MATCH_YES;
+- }
+- else
+- {
+- /* Enforce F03:C476. */
+- gfc_error ("'%s' at %L is not an accessible derived type",
+- derived->name, &gfc_current_locus);
+- return MATCH_ERROR;
+- }
++ gfc_current_locus = old_locus;
++ return MATCH_NO;
+ }
+
++ gfc_find_symbol (name, NULL, 1, &derived);
++
++ if (derived && derived->attr.flavor == FL_DERIVED)
++ {
++ ts->type = BT_DERIVED;
++ ts->u.derived = derived;
++ return MATCH_YES;
++ }
++
+ gfc_current_locus = old_locus;
+ return MATCH_NO;
+ }
+@@ -2303,7 +2302,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,
identified by their name alone. */
static match
-@@ -2313,8 +2313,30 @@
+@@ -2313,8 +2312,21 @@
locus old_locus;
gfc_clear_ts (ts);
-+ gfc_gobble_whitespace();
++ gfc_gobble_whitespace ();
old_locus = gfc_current_locus;
-+ m = match_derived_type_spec (ts);
-+ if (m == MATCH_YES)
++ if (match_derived_type_spec (ts) == MATCH_YES)
+ {
-+ old_locus = gfc_current_locus;
-+ if (gfc_match (" :: ") != MATCH_YES)
-+ return MATCH_ERROR;
-+ gfc_current_locus = old_locus;
-+ /* Enfore F03:C401. */
++ /* Enforce F03:C401. */
+ if (ts->u.derived->attr.abstract)
+ {
+ gfc_error ("Derived type '%s' at %L may not be ABSTRACT",
+ }
+ 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 @@
+@@ -2346,7 +2358,13 @@
+ if (gfc_match ("character") == MATCH_YES)
+ {
+ ts->type = BT_CHARACTER;
+- goto char_selector;
++
++ m = gfc_match_char_spec (ts);
++
++ if (m == MATCH_NO)
++ m = MATCH_YES;
++
++ return m;
+ }
+
+ if (gfc_match ("logical") == MATCH_YES)
+@@ -2356,25 +2374,6 @@
goto kind_selector;
}
/* If a type is not matched, simply return MATCH_NO. */
gfc_current_locus = old_locus;
return MATCH_NO;
-@@ -3580,18 +3583,25 @@
+@@ -2394,15 +2393,6 @@
+ m = MATCH_YES; /* No kind specifier found. */
+
+ return m;
+-
+-char_selector:
+-
+- m = gfc_match_char_spec (ts);
+-
+- if (m == MATCH_NO)
+- m = MATCH_YES; /* No kind specifier found. */
+-
+- return m;
+ }
+
+
+@@ -2432,7 +2422,17 @@
+ if (m == MATCH_ERROR)
+ goto cleanup;
+ else if (m == MATCH_NO)
+- ts.type = BT_UNKNOWN;
++ {
++ char name[GFC_MAX_SYMBOL_LEN + 3];
++
++ if (gfc_match ("%n :: ", name) == MATCH_YES)
++ {
++ gfc_error ("Error in type-spec at %L", &old_locus);
++ goto cleanup;
++ }
++
++ ts.type = BT_UNKNOWN;
++ }
+ else
+ {
+ if (gfc_match (" :: ") == MATCH_YES)
+@@ -2515,8 +2515,8 @@
+ || sym->ns->proc_name->attr.proc_pointer);
+ if (b1 && b2 && !b3)
+ {
+- gfc_error ("Allocate-object at %C is not a nonprocedure pointer "
+- "or an allocatable variable");
++ gfc_error ("Allocate-object at %L is not a nonprocedure pointer "
++ "or an allocatable variable", &tail->expr->where);
+ goto cleanup;
+ }
+
+@@ -3580,18 +3580,25 @@
do this. */
void
match
Index: gcc/fortran/parse.c
===================================================================
---- gcc/fortran/parse.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/parse.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/parse.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/parse.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -876,6 +876,7 @@
gfc_new_block = NULL;
}
Index: gcc/fortran/dependency.c
===================================================================
---- gcc/fortran/dependency.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/dependency.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/dependency.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/dependency.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -805,6 +805,19 @@
return 1;
return 0;
Index: gcc/fortran/intrinsic.texi
===================================================================
---- gcc/fortran/intrinsic.texi (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/intrinsic.texi (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/intrinsic.texi (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/intrinsic.texi (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -44,7 +44,7 @@
* @code{ACCESS}: ACCESS, Checks file access modes
* @code{ACHAR}: ACHAR, Character in @acronym{ASCII} collating sequence
Fortran 2008 and later
Index: gcc/fortran/simplify.c
===================================================================
---- gcc/fortran/simplify.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/fortran/simplify.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/fortran/simplify.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/fortran/simplify.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -228,7 +228,8 @@
return false;
mask_ctor = mask->value.constructor;
Index: gcc/ira-lives.c
===================================================================
---- gcc/ira-lives.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ira-lives.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ira-lives.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ira-lives.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -820,7 +820,7 @@
static void
process_single_reg_class_operands (bool in_p, int freq)
Index: gcc/c-pretty-print.c
===================================================================
---- gcc/c-pretty-print.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/c-pretty-print.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/c-pretty-print.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/c-pretty-print.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2144,6 +2144,10 @@
pp_string (pp, "({...})");
break;
break;
Index: gcc/configure.ac
===================================================================
---- gcc/configure.ac (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/configure.ac (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/configure.ac (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/configure.ac (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -4542,24 +4542,52 @@
enable_plugin=yes; default_plugin=yes)
[extern int X;],[return X == 0;],
Index: gcc/BASE-VER
===================================================================
---- gcc/BASE-VER (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/BASE-VER (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/BASE-VER (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/BASE-VER (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1 +1 @@
-4.5.1
+4.5.2
Index: gcc/function.c
===================================================================
---- gcc/function.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/function.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/function.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/function.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3423,12 +3423,10 @@
DECL_IGNORED_P (local) = 0;
/* If PARM was addressable, move that flag over
}
else
{
+Index: gcc/tree-vectorizer.h
+===================================================================
+--- gcc/tree-vectorizer.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-vectorizer.h (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -329,6 +329,7 @@
+ undef_vec_info_type = 0,
+ load_vec_info_type,
+ store_vec_info_type,
++ shift_vec_info_type,
+ op_vec_info_type,
+ call_vec_info_type,
+ assignment_vec_info_type,
+@@ -854,7 +855,7 @@
+ extern bool vect_analyze_slp (loop_vec_info, bb_vec_info);
+ extern void vect_make_slp_decision (loop_vec_info);
+ extern void vect_detect_hybrid_slp (loop_vec_info);
+-extern void vect_get_slp_defs (slp_tree, VEC (tree,heap) **,
++extern void vect_get_slp_defs (tree, tree, slp_tree, VEC (tree,heap) **,
+ VEC (tree,heap) **);
+ extern LOC find_bb_location (basic_block);
+ extern bb_vec_info vect_slp_analyze_bb (basic_block);
+Index: gcc/stor-layout.c
+===================================================================
+--- gcc/stor-layout.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/stor-layout.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -172,6 +172,32 @@
+ /* An array of functions used for self-referential size computation. */
+ static GTY(()) VEC (tree, gc) *size_functions;
+
++/* Look inside EXPR into simple arithmetic operations involving constants.
++ Return the outermost non-arithmetic or non-constant node. */
++
++static tree
++skip_simple_constant_arithmetic (tree expr)
++{
++ while (true)
++ {
++ if (UNARY_CLASS_P (expr))
++ expr = TREE_OPERAND (expr, 0);
++ else if (BINARY_CLASS_P (expr))
++ {
++ if (TREE_CONSTANT (TREE_OPERAND (expr, 1)))
++ expr = TREE_OPERAND (expr, 0);
++ else if (TREE_CONSTANT (TREE_OPERAND (expr, 0)))
++ expr = TREE_OPERAND (expr, 1);
++ else
++ break;
++ }
++ else
++ break;
++ }
++
++ return expr;
++}
++
+ /* Similar to copy_tree_r but do not copy component references involving
+ PLACEHOLDER_EXPRs. These nodes are spotted in find_placeholder_in_expr
+ and substituted in substitute_in_expr. */
+@@ -239,7 +265,7 @@
+ char buf[128];
+
+ /* Do not factor out simple operations. */
+- t = skip_simple_arithmetic (size);
++ t = skip_simple_constant_arithmetic (size);
+ if (TREE_CODE (t) == CALL_EXPR)
+ return size;
+
+Index: gcc/ira-emit.c
+===================================================================
+--- gcc/ira-emit.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ira-emit.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -368,7 +368,8 @@
+ prohibit removal of the store in such complicated case. */
+ return false;
+ }
+- gcc_unreachable ();
++ /* It is actually a loop entry -- do not remove the store. */
++ return false;
+ }
+
+ /* Generate and attach moves to the edge E. This looks at the final
Index: gcc/c-typeck.c
===================================================================
---- gcc/c-typeck.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/c-typeck.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/c-typeck.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/c-typeck.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -9091,6 +9091,10 @@
precision. */
bool may_need_excess_precision;
semantic_result_type = c_common_type (orig_type0, orig_type1);
Index: gcc/gimplify.c
===================================================================
---- gcc/gimplify.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/gimplify.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/gimplify.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/gimplify.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3776,11 +3776,12 @@
}
}
*from_p = t;
ret = GS_OK;
changed = true;
-@@ -6336,8 +6341,12 @@
+@@ -4990,6 +4995,13 @@
+ /* If the operand is a memory input, it should be an lvalue. */
+ if (!allows_reg && allows_mem)
+ {
++ tree inputv = TREE_VALUE (link);
++ STRIP_NOPS (inputv);
++ if (TREE_CODE (inputv) == PREDECREMENT_EXPR
++ || TREE_CODE (inputv) == PREINCREMENT_EXPR
++ || TREE_CODE (inputv) == POSTDECREMENT_EXPR
++ || TREE_CODE (inputv) == POSTINCREMENT_EXPR)
++ TREE_VALUE (link) = error_mark_node;
+ tret = gimplify_expr (&TREE_VALUE (link), pre_p, post_p,
+ is_gimple_lvalue, fb_lvalue | fb_mayfail);
+ mark_addressable (TREE_VALUE (link));
+@@ -6336,8 +6348,12 @@
{
case TRUTH_ANDIF_EXPR:
case TRUTH_ORIF_EXPR:
saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 0), pre_p,
lhs_addr, lhs_var);
break;
+@@ -7410,7 +7426,10 @@
+ /* Ensure VLA bounds aren't removed, for -O0 they should be variables
+ with assigned stack slots, for -O1+ -g they should be tracked
+ by VTA. */
+- if (TYPE_DOMAIN (type)
++ if (!(TYPE_NAME (type)
++ && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
++ && DECL_IGNORED_P (TYPE_NAME (type)))
++ && TYPE_DOMAIN (type)
+ && INTEGRAL_TYPE_P (TYPE_DOMAIN (type)))
+ {
+ t = TYPE_MIN_VALUE (TYPE_DOMAIN (type));
Index: gcc/expmed.c
===================================================================
---- gcc/expmed.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/expmed.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/expmed.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/expmed.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3006,9 +3006,11 @@
switch (alg->op[opno])
{
Index: gcc/emit-rtl.c
===================================================================
---- gcc/emit-rtl.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/emit-rtl.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/emit-rtl.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/emit-rtl.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3162,6 +3162,38 @@
return insn;
}
SEQUENCEs. */
Index: gcc/cfgexpand.c
===================================================================
---- gcc/cfgexpand.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cfgexpand.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cfgexpand.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cfgexpand.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -705,7 +705,7 @@
expand_one_stack_var_at (tree decl, HOST_WIDE_INT offset)
{
DECL_ALIGN (decl) = align;
DECL_USER_ALIGN (decl) = 0;
+Index: gcc/tree-ssa-pre.c
+===================================================================
+--- gcc/tree-ssa-pre.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-ssa-pre.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -4311,6 +4311,8 @@
+ && TREE_CODE (gimple_call_fn (stmt)) == SSA_NAME)
+ {
+ tree fn = VN_INFO (gimple_call_fn (stmt))->valnum;
++ bool was_noreturn = gimple_call_noreturn_p (stmt);
++
+ if (TREE_CODE (fn) == ADDR_EXPR
+ && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL)
+ {
+@@ -4324,6 +4326,12 @@
+
+ gimple_call_set_fn (stmt, fn);
+ update_stmt (stmt);
++
++ /* When changing a call into a noreturn call, cfg cleanup
++ is needed to fix up the noreturn call. */
++ if (!was_noreturn && gimple_call_noreturn_p (stmt))
++ todo |= TODO_cleanup_cfg;
++
+ if (maybe_clean_or_replace_eh_stmt (stmt, stmt))
+ {
+ bitmap_set_bit (need_eh_cleanup,
Index: gcc/tree-ssa-live.c
===================================================================
---- gcc/tree-ssa-live.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-ssa-live.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-ssa-live.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-ssa-live.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -381,6 +381,14 @@
}
set_is_used (t);
only the used variables for cfgexpand's memory packing saving quite
Index: gcc/tree-sra.c
===================================================================
---- gcc/tree-sra.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-sra.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-sra.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-sra.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -276,6 +276,9 @@
arguments than formal parameters.. */
static bool encountered_unchangable_recursive_call;
sra_stats.deleted_unused_parameters);
Index: gcc/lto/lto-elf.c
===================================================================
---- gcc/lto/lto-elf.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/lto/lto-elf.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/lto/lto-elf.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/lto/lto-elf.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -38,7 +38,19 @@
# define EM_SPARC32PLUS 18
#endif
switch (cached_file_attrs.bits)
Index: gcc/lto/ChangeLog
===================================================================
---- gcc/lto/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/lto/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/lto/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/lto/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,21 @@
+2010-10-14 Eric Botcazou <ebotcazou@adacore.com>
+
* GCC 4.5.1 released.
Index: gcc/ipa-prop.c
===================================================================
---- gcc/ipa-prop.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ipa-prop.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ipa-prop.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ipa-prop.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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))
else
Index: gcc/po/ChangeLog
===================================================================
---- gcc/po/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/po/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/po/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/po/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,11 @@
+2010-10-13 Joseph Myers <joseph@codesourcery.com>
+
Index: gcc/po/vi.po
===================================================================
--- gcc/po/vi.po (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ gcc/po/vi.po (.../branches/gcc-4_5-branch) (wersja 165515)
++++ gcc/po/vi.po (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,38037 @@
+# Vietnamese translation for GCC.
+# Copyright © 2010 Free Software Foundation, Inc.
+msgstr ""
Index: gcc/tree-vect-patterns.c
===================================================================
---- gcc/tree-vect-patterns.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-vect-patterns.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-vect-patterns.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-vect-patterns.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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)))
++ if (!gimple_bb (stmt) || !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
if (!is_gimple_assign (stmt))
Index: gcc/ira.c
===================================================================
---- gcc/ira.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/ira.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/ira.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/ira.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2795,8 +2795,7 @@
{
/* Consider spilled pseudos too for IRA because they still have a
ira_color ();
Index: gcc/tree-nested.c
===================================================================
---- gcc/tree-nested.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-nested.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-nested.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-nested.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2055,9 +2055,8 @@
static void
convert_all_function_calls (struct nesting_info *root)
Index: gcc/sched-deps.c
===================================================================
---- gcc/sched-deps.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/sched-deps.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/sched-deps.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/sched-deps.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1517,9 +1517,7 @@
delete_all_dependences (insn);
}
Index: gcc/tree-ssa-loop-prefetch.c
===================================================================
---- gcc/tree-ssa-loop-prefetch.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-ssa-loop-prefetch.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-ssa-loop-prefetch.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-ssa-loop-prefetch.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -481,6 +481,10 @@
if (!analyze_ref (loop, &ref, &base, &step, &delta, stmt))
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/tree-vect-stmts.c
+===================================================================
+--- gcc/tree-vect-stmts.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-vect-stmts.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -555,6 +555,7 @@
+ return TARG_SCALAR_LOAD_COST;
+ case store_vec_info_type:
+ return TARG_SCALAR_STORE_COST;
++ case shift_vec_info_type:
+ case op_vec_info_type:
+ case condition_vec_info_type:
+ case assignment_vec_info_type:
+@@ -889,8 +890,7 @@
+ gimple def_stmt;
+ stmt_vec_info def_stmt_info = NULL;
+ stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt);
+- tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
+- unsigned int nunits = TYPE_VECTOR_SUBPARTS (vectype);
++ unsigned int nunits;
+ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
+ tree vec_inv;
+ tree vec_cst;
+@@ -931,6 +931,7 @@
+ {
+ vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
+ gcc_assert (vector_type);
++ nunits = TYPE_VECTOR_SUBPARTS (vector_type);
+
+ if (scalar_def)
+ *scalar_def = op;
+@@ -1134,7 +1135,7 @@
+ slp_tree slp_node)
+ {
+ if (slp_node)
+- vect_get_slp_defs (slp_node, vec_oprnds0, vec_oprnds1);
++ vect_get_slp_defs (op0, op1, slp_node, vec_oprnds0, vec_oprnds1);
+ else
+ {
+ tree vec_oprnd;
+@@ -1922,6 +1923,296 @@
+ return true;
+ }
+
++
++/* Function vectorizable_shift.
++
++ Check if STMT performs a shift operation that can be vectorized.
++ If VEC_STMT is also passed, vectorize the STMT: create a vectorized
++ stmt to replace it, put it in VEC_STMT, and insert it at BSI.
++ Return FALSE if not a vectorizable STMT, TRUE otherwise. */
++
++static bool
++vectorizable_shift (gimple stmt, gimple_stmt_iterator *gsi,
++ gimple *vec_stmt, slp_tree slp_node)
++{
++ tree vec_dest;
++ tree scalar_dest;
++ tree op0, op1 = NULL;
++ tree vec_oprnd1 = NULL_TREE;
++ stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
++ tree vectype = STMT_VINFO_VECTYPE (stmt_info);
++ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
++ enum tree_code code;
++ enum machine_mode vec_mode;
++ tree new_temp;
++ int op_type;
++ optab optab;
++ int icode;
++ enum machine_mode optab_op2_mode;
++ tree def;
++ gimple def_stmt;
++ enum vect_def_type dt[2] = {vect_unknown_def_type, vect_unknown_def_type};
++ gimple new_stmt = NULL;
++ stmt_vec_info prev_stmt_info;
++ int nunits_in = TYPE_VECTOR_SUBPARTS (vectype);
++ int nunits_out;
++ tree vectype_out;
++ int ncopies;
++ int j, i;
++ VEC(tree,heap) *vec_oprnds0 = NULL, *vec_oprnds1 = NULL;
++ tree vop0, vop1;
++ unsigned int k;
++ bool scalar_shift_arg = false;
++ bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
++ int vf;
++
++ if (loop_vinfo)
++ vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
++ else
++ vf = 1;
++
++ /* Multiple types in SLP are handled by creating the appropriate number of
++ vectorized stmts for each SLP node. Hence, NCOPIES is always 1 in
++ case of SLP. */
++ if (slp_node)
++ ncopies = 1;
++ else
++ ncopies = LOOP_VINFO_VECT_FACTOR (loop_vinfo) / nunits_in;
++
++ gcc_assert (ncopies >= 1);
++
++ if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo)
++ return false;
++
++ if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_internal_def)
++ return false;
++
++ /* Is STMT a vectorizable shift? */
++ if (!is_gimple_assign (stmt))
++ return false;
++
++ if (TREE_CODE (gimple_assign_lhs (stmt)) != SSA_NAME)
++ return false;
++
++ scalar_dest = gimple_assign_lhs (stmt);
++ vectype_out = get_vectype_for_scalar_type (TREE_TYPE (scalar_dest));
++ if (!vectype_out)
++ return false;
++ nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out);
++ if (nunits_out != nunits_in)
++ return false;
++
++ code = gimple_assign_rhs_code (stmt);
++
++ if (!(code == LSHIFT_EXPR || code == RSHIFT_EXPR || code == LROTATE_EXPR
++ || code == RROTATE_EXPR))
++ return false;
++
++ op_type = TREE_CODE_LENGTH (code);
++ op0 = gimple_assign_rhs1 (stmt);
++ if (!vect_is_simple_use (op0, loop_vinfo, bb_vinfo, &def_stmt, &def, &dt[0]))
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "use not simple.");
++ return false;
++ }
++
++ op1 = gimple_assign_rhs2 (stmt);
++ if (!vect_is_simple_use (op1, loop_vinfo, bb_vinfo, &def_stmt, &def, &dt[1]))
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "use not simple.");
++ return false;
++ }
++
++ /* Determine whether the shift amount is a vector, or scalar. If the
++ shift/rotate amount is a vector, use the vector/vector shift optabs. */
++ /* vector shifted by vector */
++ if (dt[1] == vect_internal_def)
++ {
++ optab = optab_for_tree_code (code, vectype, optab_vector);
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "vector/vector shift/rotate found.");
++ }
++
++ /* See if the machine has a vector shifted by scalar insn and if not
++ then see if it has a vector shifted by vector insn */
++ else if (dt[1] == vect_constant_def || dt[1] == vect_external_def)
++ {
++ optab = optab_for_tree_code (code, vectype, optab_scalar);
++ if (optab
++ && (optab_handler (optab, TYPE_MODE (vectype))->insn_code
++ != CODE_FOR_nothing))
++ {
++ scalar_shift_arg = true;
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "vector/scalar shift/rotate found.");
++ }
++ else
++ {
++ optab = optab_for_tree_code (code, vectype, optab_vector);
++ if (optab
++ && (optab_handler (optab, TYPE_MODE (vectype))->insn_code
++ != CODE_FOR_nothing))
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "vector/vector shift/rotate found.");
++
++ /* Unlike the other binary operators, shifts/rotates have
++ the rhs being int, instead of the same type as the lhs,
++ so make sure the scalar is the right type if we are
++ dealing with vectors of short/char. */
++ if (dt[1] == vect_constant_def)
++ op1 = fold_convert (TREE_TYPE (vectype), op1);
++ }
++ }
++ }
++
++ else
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "operand mode requires invariant argument.");
++ return false;
++ }
++
++ /* Supportable by target? */
++ if (!optab)
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "no optab.");
++ return false;
++ }
++ vec_mode = TYPE_MODE (vectype);
++ icode = (int) optab_handler (optab, vec_mode)->insn_code;
++ if (icode == CODE_FOR_nothing)
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "op not supported by target.");
++ /* Check only during analysis. */
++ if (GET_MODE_SIZE (vec_mode) != UNITS_PER_WORD
++ || (vf < vect_min_worthwhile_factor (code)
++ && !vec_stmt))
++ return false;
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "proceeding using word mode.");
++ }
++
++ /* Worthwhile without SIMD support? Check only during analysis. */
++ if (!VECTOR_MODE_P (TYPE_MODE (vectype))
++ && vf < vect_min_worthwhile_factor (code)
++ && !vec_stmt)
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "not worthwhile without SIMD support.");
++ return false;
++ }
++
++ if (!vec_stmt) /* transformation not required. */
++ {
++ STMT_VINFO_TYPE (stmt_info) = shift_vec_info_type;
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "=== vectorizable_shift ===");
++ vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
++ return true;
++ }
++
++ /** Transform. **/
++
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "transform shift.");
++
++ /* Handle def. */
++ vec_dest = vect_create_destination_var (scalar_dest, vectype);
++
++ /* Allocate VECs for vector operands. In case of SLP, vector operands are
++ created in the previous stages of the recursion, so no allocation is
++ needed, except for the case of shift with scalar shift argument. In that
++ case we store the scalar operand in VEC_OPRNDS1 for every vector stmt to
++ be created to vectorize the SLP group, i.e., SLP_NODE->VEC_STMTS_SIZE.
++ In case of loop-based vectorization we allocate VECs of size 1. We
++ allocate VEC_OPRNDS1 only in case of binary operation. */
++ if (!slp_node)
++ {
++ vec_oprnds0 = VEC_alloc (tree, heap, 1);
++ vec_oprnds1 = VEC_alloc (tree, heap, 1);
++ }
++ else if (scalar_shift_arg)
++ vec_oprnds1 = VEC_alloc (tree, heap, slp_node->vec_stmts_size);
++
++ prev_stmt_info = NULL;
++ for (j = 0; j < ncopies; j++)
++ {
++ /* Handle uses. */
++ if (j == 0)
++ {
++ if (scalar_shift_arg)
++ {
++ /* Vector shl and shr insn patterns can be defined with scalar
++ operand 2 (shift operand). In this case, use constant or loop
++ invariant op1 directly, without extending it to vector mode
++ first. */
++ optab_op2_mode = insn_data[icode].operand[2].mode;
++ if (!VECTOR_MODE_P (optab_op2_mode))
++ {
++ if (vect_print_dump_info (REPORT_DETAILS))
++ fprintf (vect_dump, "operand 1 using scalar mode.");
++ vec_oprnd1 = op1;
++ VEC_quick_push (tree, vec_oprnds1, vec_oprnd1);
++ if (slp_node)
++ {
++ /* Store vec_oprnd1 for every vector stmt to be created
++ for SLP_NODE. We check during the analysis that all the
++ shift arguments are the same.
++ TODO: Allow different constants for different vector
++ stmts generated for an SLP instance. */
++ for (k = 0; k < slp_node->vec_stmts_size - 1; k++)
++ VEC_quick_push (tree, vec_oprnds1, vec_oprnd1);
++ }
++ }
++ }
++
++ /* vec_oprnd1 is available if operand 1 should be of a scalar-type
++ (a special case for certain kind of vector shifts); otherwise,
++ operand 1 should be of a vector type (the usual case). */
++ if (vec_oprnd1)
++ vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
++ slp_node);
++ else
++ vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
++ slp_node);
++ }
++ else
++ vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds0, &vec_oprnds1);
++
++ /* Arguments are ready. Create the new vector stmt. */
++ for (i = 0; VEC_iterate (tree, vec_oprnds0, i, vop0); i++)
++ {
++ vop1 = VEC_index (tree, vec_oprnds1, i);
++ new_stmt = gimple_build_assign_with_ops (code, vec_dest, vop0, vop1);
++ new_temp = make_ssa_name (vec_dest, new_stmt);
++ gimple_assign_set_lhs (new_stmt, new_temp);
++ vect_finish_stmt_generation (stmt, new_stmt, gsi);
++ if (slp_node)
++ VEC_quick_push (gimple, SLP_TREE_VEC_STMTS (slp_node), new_stmt);
++ }
++
++ if (slp_node)
++ continue;
++
++ if (j == 0)
++ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
++ else
++ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
++ prev_stmt_info = vinfo_for_stmt (new_stmt);
++ }
++
++ VEC_free (tree, heap, vec_oprnds0);
++ VEC_free (tree, heap, vec_oprnds1);
++
++ return true;
++}
++
++
+ /* Function vectorizable_operation.
+
+ Check if STMT performs a binary or unary operation that can be vectorized.
+@@ -1936,7 +2227,6 @@
+ tree vec_dest;
+ tree scalar_dest;
+ tree op0, op1 = NULL;
+- tree vec_oprnd1 = NULL_TREE;
+ stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
+ tree vectype = STMT_VINFO_VECTYPE (stmt_info);
+ loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
+@@ -2036,63 +2326,13 @@
+ }
+ }
+
+- /* If this is a shift/rotate, determine whether the shift amount is a vector,
+- or scalar. If the shift/rotate amount is a vector, use the vector/vector
+- shift optabs. */
++ /* Shifts are handled in vectorizable_shift (). */
+ if (code == LSHIFT_EXPR || code == RSHIFT_EXPR || code == LROTATE_EXPR
+ || code == RROTATE_EXPR)
+- {
+- /* vector shifted by vector */
+- if (dt[1] == vect_internal_def)
+- {
+- optab = optab_for_tree_code (code, vectype, optab_vector);
+- if (vect_print_dump_info (REPORT_DETAILS))
+- fprintf (vect_dump, "vector/vector shift/rotate found.");
+- }
++ return false;
+
+- /* See if the machine has a vector shifted by scalar insn and if not
+- then see if it has a vector shifted by vector insn */
+- else if (dt[1] == vect_constant_def || dt[1] == vect_external_def)
+- {
+- optab = optab_for_tree_code (code, vectype, optab_scalar);
+- if (optab
+- && (optab_handler (optab, TYPE_MODE (vectype))->insn_code
+- != CODE_FOR_nothing))
+- {
+- scalar_shift_arg = true;
+- if (vect_print_dump_info (REPORT_DETAILS))
+- fprintf (vect_dump, "vector/scalar shift/rotate found.");
+- }
+- else
+- {
+- optab = optab_for_tree_code (code, vectype, optab_vector);
+- if (optab
+- && (optab_handler (optab, TYPE_MODE (vectype))->insn_code
+- != CODE_FOR_nothing))
+- {
+- if (vect_print_dump_info (REPORT_DETAILS))
+- fprintf (vect_dump, "vector/vector shift/rotate found.");
++ optab = optab_for_tree_code (code, vectype, optab_default);
+
+- /* Unlike the other binary operators, shifts/rotates have
+- the rhs being int, instead of the same type as the lhs,
+- so make sure the scalar is the right type if we are
+- dealing with vectors of short/char. */
+- if (dt[1] == vect_constant_def)
+- op1 = fold_convert (TREE_TYPE (vectype), op1);
+- }
+- }
+- }
+-
+- else
+- {
+- if (vect_print_dump_info (REPORT_DETAILS))
+- fprintf (vect_dump, "operand mode requires invariant argument.");
+- return false;
+- }
+- }
+- else
+- optab = optab_for_tree_code (code, vectype, optab_default);
+-
+ /* Supportable by target? */
+ if (!optab)
+ {
+@@ -2155,8 +2395,6 @@
+ if (op_type == binary_op)
+ vec_oprnds1 = VEC_alloc (tree, heap, 1);
+ }
+- else if (scalar_shift_arg)
+- vec_oprnds1 = VEC_alloc (tree, heap, slp_node->vec_stmts_size);
+
+ /* In case the vectorization factor (VF) is bigger than the number
+ of elements that we can fit in a vectype (nunits), we have to generate
+@@ -2217,36 +2455,7 @@
+ /* Handle uses. */
+ if (j == 0)
+ {
+- if (op_type == binary_op && scalar_shift_arg)
+- {
+- /* Vector shl and shr insn patterns can be defined with scalar
+- operand 2 (shift operand). In this case, use constant or loop
+- invariant op1 directly, without extending it to vector mode
+- first. */
+- optab_op2_mode = insn_data[icode].operand[2].mode;
+- if (!VECTOR_MODE_P (optab_op2_mode))
+- {
+- if (vect_print_dump_info (REPORT_DETAILS))
+- fprintf (vect_dump, "operand 1 using scalar mode.");
+- vec_oprnd1 = op1;
+- VEC_quick_push (tree, vec_oprnds1, vec_oprnd1);
+- if (slp_node)
+- {
+- /* Store vec_oprnd1 for every vector stmt to be created
+- for SLP_NODE. We check during the analysis that all the
+- shift arguments are the same.
+- TODO: Allow different constants for different vector
+- stmts generated for an SLP instance. */
+- for (k = 0; k < slp_node->vec_stmts_size - 1; k++)
+- VEC_quick_push (tree, vec_oprnds1, vec_oprnd1);
+- }
+- }
+- }
+-
+- /* vec_oprnd1 is available if operand 1 should be of a scalar-type
+- (a special case for certain kind of vector shifts); otherwise,
+- operand 1 should be of a vector type (the usual case). */
+- if (op_type == binary_op && !vec_oprnd1)
++ if (op_type == binary_op)
+ vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
+ slp_node);
+ else
+@@ -2536,7 +2745,7 @@
+ {
+ /* Handle uses. */
+ if (slp_node)
+- vect_get_slp_defs (slp_node, &vec_oprnds0, NULL);
++ vect_get_slp_defs (op0, NULL_TREE, slp_node, &vec_oprnds0, NULL);
+ else
+ {
+ VEC_free (tree, heap, vec_oprnds0);
+@@ -2837,7 +3046,7 @@
+ if (j == 0)
+ {
+ if (slp_node)
+- vect_get_slp_defs (slp_node, &vec_oprnds0, &vec_oprnds1);
++ vect_get_slp_defs (op0, op1, slp_node, &vec_oprnds0, &vec_oprnds1);
+ else
+ {
+ vec_oprnd0 = vect_get_vec_def_for_operand (op0, stmt, NULL);
+@@ -3123,7 +3332,8 @@
+ if (slp)
+ {
+ /* Get vectorized arguments for SLP_NODE. */
+- vect_get_slp_defs (slp_node, &vec_oprnds, NULL);
++ vect_get_slp_defs (NULL_TREE, NULL_TREE, slp_node, &vec_oprnds,
++ NULL);
+
+ vec_oprnd = VEC_index (tree, vec_oprnds, 0);
+ }
+@@ -4063,6 +4273,7 @@
+ ok = (vectorizable_type_promotion (stmt, NULL, NULL, NULL)
+ || vectorizable_type_demotion (stmt, NULL, NULL, NULL)
+ || vectorizable_conversion (stmt, NULL, NULL, NULL)
++ || vectorizable_shift (stmt, NULL, NULL, NULL)
+ || vectorizable_operation (stmt, NULL, NULL, NULL)
+ || vectorizable_assignment (stmt, NULL, NULL, NULL)
+ || vectorizable_load (stmt, NULL, NULL, NULL, NULL)
+@@ -4073,7 +4284,8 @@
+ else
+ {
+ if (bb_vinfo)
+- ok = (vectorizable_operation (stmt, NULL, NULL, node)
++ ok = (vectorizable_shift (stmt, NULL, NULL, node)
++ || vectorizable_operation (stmt, NULL, NULL, node)
+ || vectorizable_assignment (stmt, NULL, NULL, node)
+ || vectorizable_load (stmt, NULL, NULL, node, NULL)
+ || vectorizable_store (stmt, NULL, NULL, node));
+@@ -4175,6 +4387,11 @@
+ gcc_assert (done);
+ break;
+
++ case shift_vec_info_type:
++ done = vectorizable_shift (stmt, gsi, &vec_stmt, slp_node);
++ gcc_assert (done);
++ break;
++
+ case op_vec_info_type:
+ done = vectorizable_operation (stmt, gsi, &vec_stmt, slp_node);
+ gcc_assert (done);
Index: gcc/rtl.h
===================================================================
---- gcc/rtl.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/rtl.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/rtl.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/rtl.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1709,6 +1709,8 @@
extern rtx next_nonnote_insn_bb (rtx);
extern rtx prev_nondebug_insn (rtx);
extern rtx prev_active_insn (rtx);
Index: gcc/tree-inline.c
===================================================================
---- gcc/tree-inline.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-inline.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-inline.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-inline.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1516,7 +1516,8 @@
tree new_rhs;
new_rhs = force_gimple_operand_gsi (&seq_gsi,
}
+Index: gcc/graphite-sese-to-poly.c
+===================================================================
+--- gcc/graphite-sese-to-poly.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/graphite-sese-to-poly.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2231,58 +2231,14 @@
+ for (i = 0; i < gimple_phi_num_args (phi); i++)
+ {
+ tree arg = gimple_phi_arg_def (phi, i);
++ edge e = gimple_phi_arg_edge (phi, i);
+
+- /* Try to avoid the insertion on edges as much as possible: this
+- would avoid the insertion of code on loop latch edges, making
+- the pattern matching of the vectorizer happy, or it would
+- avoid the insertion of useless basic blocks. Note that it is
+- incorrect to insert out of SSA copies close by their
+- definition when they are more than two loop levels apart:
+- for example, starting from a double nested loop
+-
+- | a = ...
+- | loop_1
+- | loop_2
+- | b = phi (a, c)
+- | c = ...
+- | end_2
+- | end_1
+-
+- the following transform is incorrect
+-
+- | a = ...
+- | Red[0] = a
+- | loop_1
+- | loop_2
+- | b = Red[0]
+- | c = ...
+- | Red[0] = c
+- | end_2
+- | end_1
+-
+- whereas inserting the copy on the incoming edge is correct
+-
+- | a = ...
+- | loop_1
+- | Red[0] = a
+- | loop_2
+- | b = Red[0]
+- | c = ...
+- | Red[0] = c
+- | end_2
+- | end_1
+- */
+- if (TREE_CODE (arg) == SSA_NAME
+- && is_gimple_reg (arg)
+- && gimple_bb (SSA_NAME_DEF_STMT (arg))
+- && (flow_bb_inside_loop_p (bb->loop_father,
+- gimple_bb (SSA_NAME_DEF_STMT (arg)))
+- || flow_bb_inside_loop_p (loop_outer (bb->loop_father),
+- gimple_bb (SSA_NAME_DEF_STMT (arg)))))
+- insert_out_of_ssa_copy (zero_dim_array, arg);
++ /* Avoid the insertion of code in the loop latch to please the
++ pattern matching of the vectorizer. */
++ if (e->src == bb->loop_father->latch)
++ insert_out_of_ssa_copy (zero_dim_array, arg);
+ else
+- insert_out_of_ssa_copy_on_edge (gimple_phi_arg_edge (phi, i),
+- zero_dim_array, arg);
++ insert_out_of_ssa_copy_on_edge (e, zero_dim_array, arg);
+ }
+
+ var = force_gimple_operand (zero_dim_array, &stmts, true, NULL_TREE);
Index: gcc/combine.c
===================================================================
---- gcc/combine.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/combine.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/combine.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/combine.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3531,6 +3531,12 @@
#ifdef HAVE_cc0
if (reg_referenced_p (cc0_rtx, XVECEXP (newpat, 0, 0)))
as appropriate. I3 and I2 are the insns resulting from the combination
Index: gcc/bb-reorder.c
===================================================================
---- gcc/bb-reorder.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/bb-reorder.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/bb-reorder.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/bb-reorder.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1292,7 +1292,9 @@
if (src && (src != ENTRY_BLOCK_PTR))
if (fall_thru && (fall_thru->dest != EXIT_BLOCK_PTR))
{
+Index: gcc/var-tracking.c
+===================================================================
+--- gcc/var-tracking.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/var-tracking.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -7322,7 +7322,17 @@
+ NOTE_DURING_CALL_P (note) = true;
+ }
+ else
+- note = emit_note_before (NOTE_INSN_VAR_LOCATION, insn);
++ {
++ /* Make sure that the call related notes come first. */
++ while (NEXT_INSN (insn)
++ && NOTE_P (insn)
++ && NOTE_DURING_CALL_P (insn))
++ insn = NEXT_INSN (insn);
++ if (NOTE_P (insn) && NOTE_DURING_CALL_P (insn))
++ note = emit_note_after (NOTE_INSN_VAR_LOCATION, insn);
++ else
++ note = emit_note_before (NOTE_INSN_VAR_LOCATION, insn);
++ }
+ NOTE_VAR_LOCATION (note) = note_vl;
+
+ clear:
Index: gcc/tree-flow.h
===================================================================
---- gcc/tree-flow.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-flow.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-flow.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-flow.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -837,6 +837,7 @@
bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode,
addr_space_t);
extern bool thread_through_all_blocks (bool);
Index: gcc/config.gcc
===================================================================
---- gcc/config.gcc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config.gcc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config.gcc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config.gcc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -854,7 +854,7 @@
use_collect2=no
;;
tmake_file="${tmake_file} lm32/t-lm32 lm32/t-fprules-softfp soft-fp/t-softfp"
tmake_file="${tmake_file} t-rtems"
;;
+Index: gcc/reg-stack.c
+===================================================================
+--- gcc/reg-stack.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/reg-stack.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2877,9 +2877,10 @@
+ return (e1->src->index < e2->src->index) ? e1 : e2;
+ }
+
+-/* Convert stack register references in one block. */
++/* Convert stack register references in one block. Return true if the CFG
++ has been modified in the process. */
+
+-static void
++static bool
+ convert_regs_1 (basic_block block)
+ {
+ struct stack_def regstack;
+@@ -2887,6 +2888,7 @@
+ int reg;
+ rtx insn, next;
+ bool control_flow_insn_deleted = false;
++ bool cfg_altered = false;
+ int debug_insns_with_starting_stack = 0;
+
+ any_malformed_asm = false;
+@@ -3042,7 +3044,7 @@
+ place, still, but we don't have enough information at that time. */
+
+ if (control_flow_insn_deleted)
+- purge_dead_edges (block);
++ cfg_altered |= purge_dead_edges (block);
+
+ /* Something failed if the stack lives don't match. If we had malformed
+ asms, we zapped the instruction itself, but that didn't produce the
+@@ -3052,14 +3054,18 @@
+ || any_malformed_asm);
+ bi->stack_out = regstack;
+ bi->done = true;
++
++ return cfg_altered;
+ }
+
+-/* Convert registers in all blocks reachable from BLOCK. */
++/* Convert registers in all blocks reachable from BLOCK. Return true if the
++ CFG has been modified in the process. */
+
+-static void
++static bool
+ convert_regs_2 (basic_block block)
+ {
+ basic_block *stack, *sp;
++ bool cfg_altered = false;
+
+ /* We process the blocks in a top-down manner, in a way such that one block
+ is only processed after all its predecessors. The number of predecessors
+@@ -3098,11 +3104,13 @@
+ *sp++ = e->dest;
+ }
+
+- convert_regs_1 (block);
++ cfg_altered |= convert_regs_1 (block);
+ }
+ while (sp != stack);
+
+ free (stack);
++
++ return cfg_altered;
+ }
+
+ /* Traverse all basic blocks in a function, converting the register
+@@ -3112,6 +3120,7 @@
+ static void
+ convert_regs (void)
+ {
++ bool cfg_altered = false;
+ int inserted;
+ basic_block b;
+ edge e;
+@@ -3130,7 +3139,7 @@
+
+ /* Process all blocks reachable from all entry points. */
+ FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR->succs)
+- convert_regs_2 (e->dest);
++ cfg_altered |= convert_regs_2 (e->dest);
+
+ /* ??? Process all unreachable blocks. Though there's no excuse
+ for keeping these even when not optimizing. */
+@@ -3139,7 +3148,7 @@
+ block_info bi = BLOCK_INFO (b);
+
+ if (! bi->done)
+- convert_regs_2 (b);
++ cfg_altered |= convert_regs_2 (b);
+ }
+
+ inserted |= compensate_edges ();
+@@ -3150,6 +3159,9 @@
+ if (inserted)
+ commit_edge_insertions ();
+
++ if (cfg_altered)
++ cleanup_cfg (0);
++
+ if (dump_file)
+ fputc ('\n', dump_file);
+ }
Index: gcc/reginfo.c
===================================================================
---- gcc/reginfo.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/reginfo.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/reginfo.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/reginfo.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -841,6 +841,14 @@
void
globalize_reg (int i)
Index: gcc/Makefile.in
===================================================================
---- gcc/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/Makefile.in (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/Makefile.in (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3005,7 +3005,7 @@
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H)
Index: gcc/tree-ssa-structalias.c
===================================================================
---- gcc/tree-ssa-structalias.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-ssa-structalias.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -405,8 +405,9 @@
typedef struct constraint_expr ce_s;
DEF_VEC_O(ce_s);
temp.type = ADDRESSOF;
Index: gcc/tree-switch-conversion.c
===================================================================
---- gcc/tree-switch-conversion.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-switch-conversion.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-switch-conversion.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-switch-conversion.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -96,6 +96,7 @@
#include "diagnostic.h"
#include "tree-dump.h"
gsi = gsi_for_stmt (info.arr_ref_first);
Index: gcc/tree-cfg.c
===================================================================
---- gcc/tree-cfg.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-cfg.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/tree-cfg.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-cfg.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3299,6 +3299,7 @@
{
if (TREE_CODE (rhs1_type) != VECTOR_TYPE
|| (!INTEGRAL_TYPE_P (rhs2_type)
Index: gcc/c-parser.c
===================================================================
---- gcc/c-parser.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/c-parser.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/c-parser.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/c-parser.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -7847,6 +7847,42 @@
rhs = integer_one_node;
break;
{
Index: gcc/config/alpha/alpha.c
===================================================================
---- gcc/config/alpha/alpha.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/alpha/alpha.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/alpha/alpha.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/alpha/alpha.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -5945,6 +5945,10 @@
integer_type_node);
DECL_FIELD_CONTEXT (ofs) = record;
FIELD_DECL, get_identifier ("__base"),
Index: gcc/config/s390/s390.c
===================================================================
---- gcc/config/s390/s390.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/s390/s390.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/s390/s390.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/s390/s390.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2061,7 +2061,8 @@
/* Return true if ADDR is of kind symbol_ref or symbol_ref + const_int
Index: gcc/config/s390/s390.md
===================================================================
---- gcc/config/s390/s390.md (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/s390/s390.md (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/s390/s390.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/s390/s390.md (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2037,9 +2037,9 @@
(define_insn "*mov<mode>_64dfp"
; movcc instruction pattern
Index: gcc/config/s390/t-linux64
===================================================================
---- gcc/config/s390/t-linux64 (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/s390/t-linux64 (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/s390/t-linux64 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/s390/t-linux64 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,10 @@
+# On Debian, Ubuntu and other derivative distributions, the 32bit libraries
+# are found in /lib32 and /usr/lib32, /lib64 and /usr/lib64 are symlinks to
+MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
Index: gcc/config/spu/spu.c
===================================================================
---- gcc/config/spu/spu.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/spu/spu.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/spu/spu.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/spu/spu.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2334,7 +2334,7 @@
return;
branch_label = gen_label_rtx ();
Index: gcc/config/sparc/linux.h
===================================================================
---- gcc/config/sparc/linux.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/sparc/linux.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/sparc/linux.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/sparc/linux.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -107,7 +107,8 @@
%{Ym,*} \
%{Wa,*:%*} \
#undef ASM_OUTPUT_ALIGNED_LOCAL
Index: gcc/config/sparc/t-linux64
===================================================================
---- gcc/config/sparc/t-linux64 (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/sparc/t-linux64 (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/sparc/t-linux64 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/sparc/t-linux64 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -17,9 +17,16 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
INSTALL_LIBGCC = install-multilib
Index: gcc/config/sparc/sparc.c
===================================================================
---- gcc/config/sparc/sparc.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/sparc/sparc.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/sparc/sparc.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/sparc/sparc.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -5558,14 +5558,13 @@
function_arg_advance (struct sparc_args *cum, enum machine_mode mode,
tree type, int named)
{
Index: gcc/config/sparc/linux64.h
===================================================================
---- gcc/config/sparc/linux64.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/sparc/linux64.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/sparc/linux64.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/sparc/linux64.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -236,7 +236,8 @@
%{Ym,*} \
%{Wa,*:%*} \
Index: gcc/config/sparc/constraints.md
===================================================================
---- gcc/config/sparc/constraints.md (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/sparc/constraints.md (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/sparc/constraints.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/sparc/constraints.md (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -35,10 +35,10 @@
;; In the non-V9 case, coerce V9 'e' class to 'f', so we can use 'e' in the
"Lower floating-point register")
(define_register_constraint "h" "(TARGET_V9 && TARGET_V8PLUS ? I64_REGS : NO_REGS)"
+Index: gcc/config/sparc/sol2-unwind.h
+===================================================================
+--- gcc/config/sparc/sol2-unwind.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/sparc/sol2-unwind.h (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,5 +1,5 @@
+ /* DWARF2 EH unwinding support for SPARC Solaris.
+- Copyright (C) 2009 Free Software Foundation, Inc.
++ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+@@ -118,7 +118,27 @@
+ unsigned int cuh_pattern
+ = *(unsigned int *)(*(unsigned long *)(this_cfa + 15*8) - 4);
+
+- if (cuh_pattern == 0x9410001a || cuh_pattern == 0x94100013)
++ if (cuh_pattern == 0xd25fa7ef)
++ {
++ /* This matches the call_user_handler pattern for Solaris 10.
++ There are 2 cases so we look for the return address of the
++ caller's caller frame in order to do more pattern matching. */
++ unsigned int sah_pattern
++ = *(unsigned int *)(*(unsigned long *)(this_cfa + 176 + 15*8) - 4);
++
++ if (sah_pattern == 0x92100019)
++ /* This is the same setup as for Solaris 9, see below. */
++ regs_off = 176 + 176 + 176 + 304;
++ else
++ /* We need to move up three frames (the kernel frame, the
++ call_user_handler frame, the __sighndlr frame). Two of them
++ have the minimum stack frame size (kernel and __sighndlr
++ frames) of 176 bytes, and there is another with a stack frame
++ of 304 bytes (the call_user_handler frame). The ucontext_t
++ structure is after this offset. */
++ regs_off = 176 + 176 + 304;
++ }
++ else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x94100013)
+ /* This matches the call_user_handler pattern for Solaris 9 and
+ for Solaris 8 running inside Solaris Containers respectively.
+ We need to move up four frames (the kernel frame, the signal
+@@ -152,7 +172,7 @@
+ fpu_save_off = regs_off + (8*10) + 176;
+
+ /* The fpregs field contains 32 extended words at the beginning that
+- contain the fpu state. Then there are 2 extended words and two
++ contain the FPU state. Then there are 2 extended words and two
+ bytes. */
+ fpu_save = *(unsigned char *)(this_cfa + fpu_save_off + (8*32) + (2*8) + 2);
+
+@@ -195,7 +215,7 @@
+ fs->regs.reg[i + 16].loc.offset = i*8;
+ }
+
+- /* Check whether we need to restore fpu registers. */
++ /* Check whether we need to restore FPU registers. */
+ if (fpu_save)
+ {
+ for (i = 0; i < 64; i++)
+@@ -347,14 +367,25 @@
+ = *(unsigned int *)(*(unsigned int *)(this_cfa + 15*4) - 4);
+
+ if (cuh_pattern == 0xd407a04c)
+- /* This matches the call_user_handler pattern for Solaris 10.
+- We need to move up three frames (the kernel frame, the
+- call_user_handler frame, the __sighndlr frame). Two of them
+- have the minimum stack frame size (kernel and __sighndlr
+- frames) of 96 bytes, and there is another with a stack frame
+- of 160 bytes (the call_user_handler frame). The ucontext_t
+- structure is after this offset. */
+- regs_off = 96 + 96 + 160;
++ {
++ /* This matches the call_user_handler pattern for Solaris 10.
++ There are 2 cases so we look for the return address of the
++ caller's caller frame in order to do more pattern matching. */
++ unsigned int sah_pattern
++ = *(unsigned int *)(*(unsigned int *)(this_cfa + 96 + 15*4) - 4);
++
++ if (sah_pattern == 0x92100019)
++ /* This is the same setup as for Solaris 9, see below. */
++ regs_off = 96 + 96 + 96 + 160;
++ else
++ /* We need to move up three frames (the kernel frame, the
++ call_user_handler frame, the __sighndlr frame). Two of them
++ have the minimum stack frame size (kernel and __sighndlr
++ frames) of 96 bytes, and there is another with a stack frame
++ of 160 bytes (the call_user_handler frame). The ucontext_t
++ structure is after this offset. */
++ regs_off = 96 + 96 + 160;
++ }
+ else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b)
+ /* This matches the call_user_handler pattern for Solaris 9 and
+ for Solaris 8 running inside Solaris Containers respectively.
+@@ -389,7 +420,7 @@
+ fpu_save_off = regs_off + (4*10) + (4*20);
+
+ /* The fpregs field contains 32 words at the beginning that contain
+- the fpu state. Then there are 2 words and two bytes. */
++ the FPU state. Then there are 2 words and two bytes. */
+ fpu_save = *(unsigned char *)(this_cfa + fpu_save_off + (4*32) + (2*4) + 2);
+
+ /* We need to get the frame pointer for the kernel frame that
+@@ -429,7 +460,7 @@
+ fs->regs.reg[i + 16].loc.offset = i*4;
+ }
+
+- /* Check whether we need to restore fpu registers. */
++ /* Check whether we need to restore FPU registers. */
+ if (fpu_save)
+ {
+ for (i = 0; i < 32; i++)
Index: gcc/config/rx/predicates.md
===================================================================
---- gcc/config/rx/predicates.md (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/rx/predicates.md (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/rx/predicates.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/rx/predicates.md (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -45,6 +45,13 @@
}
)
;; 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 165515)
-+++ gcc/config/rx/rx.md (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/rx/rx.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/rx/rx.md (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -24,6 +24,9 @@
(define_code_iterator most_cond [eq ne gt ge lt le gtu geu ltu leu
unordered ordered ])
]
Index: gcc/config/i386/cygming.h
===================================================================
---- gcc/config/i386/cygming.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/i386/cygming.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/i386/cygming.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/cygming.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -76,11 +76,25 @@
won't allow it. */
#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL, SECTION) \
Index: gcc/config/i386/i386.md
===================================================================
---- gcc/config/i386/i386.md (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/i386/i386.md (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -7575,7 +7575,7 @@
+--- gcc/config/i386/i386.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/i386.md (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2668,6 +2668,12 @@
+ DONE;
+ })
+
++(define_insn "*pushti"
++ [(set (match_operand:TI 0 "push_operand" "=<")
++ (match_operand:TI 1 "general_no_elim_operand" "riF*m"))]
++ "TARGET_64BIT"
++ "#")
++
+ (define_insn "*movti_internal"
+ [(set (match_operand:TI 0 "nonimmediate_operand" "=x,x,m")
+ (match_operand:TI 1 "vector_move_operand" "C,xm,x"))]
+@@ -2775,6 +2781,14 @@
+ (const_string "DI")))])
+
+ (define_split
++ [(set (match_operand:TI 0 "push_operand" "")
++ (match_operand:TI 1 "general_operand" ""))]
++ "TARGET_64BIT && reload_completed
++ && !SSE_REG_P (operands[1])"
++ [(const_int 0)]
++ "ix86_split_long_move (operands); DONE;")
++
++(define_split
+ [(set (match_operand:TI 0 "nonimmediate_operand" "")
+ (match_operand:TI 1 "general_operand" ""))]
+ "reload_completed && !SSE_REG_P (operands[0])
+@@ -7575,7 +7589,7 @@
(match_operand:SWI 2 "<general_operand>" "<r><i>m"))
(match_dup 1)))
(clobber (match_scratch:SWI 0 "=<r>"))]
"add{<imodesuffix>}\t{%2, %0|%0, %2}"
[(set_attr "type" "alu")
(set_attr "mode" "<MODE>")])
-@@ -8999,7 +8999,7 @@
+@@ -8999,7 +9013,7 @@
(const_int 0)))
(clobber (match_scratch:SWI 0 "=<r>"))]
"ix86_match_ccmode (insn, CCNOmode)
"<logicprefix>{<imodesuffix>}\t{%2, %0|%0, %2}"
[(set_attr "type" "alu")
(set_attr "mode" "<MODE>")])
+Index: gcc/config/i386/xmmintrin.h
+===================================================================
+--- gcc/config/i386/xmmintrin.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/xmmintrin.h (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -626,13 +626,13 @@
+ __sign = __builtin_ia32_pcmpgtw ((__v4hi)0LL, (__v4hi)__A);
+
+ /* Convert the four words to doublewords. */
++ __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, __sign);
+ __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, __sign);
+- __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, __sign);
+
+ /* Convert the doublewords to floating point two at a time. */
+ __zero = (__v4sf) _mm_setzero_ps ();
+- __ra = __builtin_ia32_cvtpi2ps (__zero, __hisi);
+- __rb = __builtin_ia32_cvtpi2ps (__ra, __losi);
++ __ra = __builtin_ia32_cvtpi2ps (__zero, __losi);
++ __rb = __builtin_ia32_cvtpi2ps (__ra, __hisi);
+
+ return (__m128) __builtin_ia32_movlhps (__ra, __rb);
+ }
+@@ -645,13 +645,13 @@
+ __v4sf __zero, __ra, __rb;
+
+ /* Convert the four words to doublewords. */
++ __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, (__v4hi)0LL);
+ __hisi = (__v2si) __builtin_ia32_punpckhwd ((__v4hi)__A, (__v4hi)0LL);
+- __losi = (__v2si) __builtin_ia32_punpcklwd ((__v4hi)__A, (__v4hi)0LL);
+
+ /* Convert the doublewords to floating point two at a time. */
+ __zero = (__v4sf) _mm_setzero_ps ();
+- __ra = __builtin_ia32_cvtpi2ps (__zero, __hisi);
+- __rb = __builtin_ia32_cvtpi2ps (__ra, __losi);
++ __ra = __builtin_ia32_cvtpi2ps (__zero, __losi);
++ __rb = __builtin_ia32_cvtpi2ps (__ra, __hisi);
+
+ return (__m128) __builtin_ia32_movlhps (__ra, __rb);
+ }
Index: gcc/config/i386/sse.md
===================================================================
---- gcc/config/i386/sse.md (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/i386/sse.md (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -9535,7 +9535,7 @@
+--- gcc/config/i386/sse.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/sse.md (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -354,7 +354,18 @@
+ DONE;
+ })
+
+-(define_insn "avx_movup<avxmodesuffixf2c><avxmodesuffix>"
++(define_expand "avx_movup<avxmodesuffixf2c><avxmodesuffix>"
++ [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "")
++ (unspec:AVXMODEF2P
++ [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "")]
++ UNSPEC_MOVU))]
++ "AVX_VEC_FLOAT_MODE_P (<MODE>mode)"
++{
++ if (MEM_P (operands[0]) && MEM_P (operands[1]))
++ operands[1] = force_reg (<MODE>mode, operands[1]);
++})
++
++(define_insn "*avx_movup<avxmodesuffixf2c><avxmodesuffix>"
+ [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m")
+ (unspec:AVXMODEF2P
+ [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")]
+@@ -380,7 +391,18 @@
+ (set_attr "prefix" "maybe_vex")
+ (set_attr "mode" "TI")])
+
+-(define_insn "<sse>_movup<ssemodesuffixf2c>"
++(define_expand "<sse>_movup<ssemodesuffixf2c>"
++ [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "")
++ (unspec:SSEMODEF2P
++ [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")]
++ UNSPEC_MOVU))]
++ "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
++{
++ if (MEM_P (operands[0]) && MEM_P (operands[1]))
++ operands[1] = force_reg (<MODE>mode, operands[1]);
++})
++
++(define_insn "*<sse>_movup<ssemodesuffixf2c>"
+ [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m")
+ (unspec:SSEMODEF2P
+ [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")]
+@@ -392,7 +414,18 @@
+ (set_attr "movu" "1")
+ (set_attr "mode" "<MODE>")])
+
+-(define_insn "avx_movdqu<avxmodesuffix>"
++(define_expand "avx_movdqu<avxmodesuffix>"
++ [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "")
++ (unspec:AVXMODEQI
++ [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "")]
++ UNSPEC_MOVU))]
++ "TARGET_AVX"
++{
++ if (MEM_P (operands[0]) && MEM_P (operands[1]))
++ operands[1] = force_reg (<MODE>mode, operands[1]);
++})
++
++(define_insn "*avx_movdqu<avxmodesuffix>"
+ [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m")
+ (unspec:AVXMODEQI
+ [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")]
+@@ -404,7 +437,17 @@
+ (set_attr "prefix" "vex")
+ (set_attr "mode" "<avxvecmode>")])
+
+-(define_insn "sse2_movdqu"
++(define_expand "sse2_movdqu"
++ [(set (match_operand:V16QI 0 "nonimmediate_operand" "")
++ (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "")]
++ UNSPEC_MOVU))]
++ "TARGET_SSE2"
++{
++ if (MEM_P (operands[0]) && MEM_P (operands[1]))
++ operands[1] = force_reg (V16QImode, operands[1]);
++})
++
++(define_insn "*sse2_movdqu"
+ [(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
+ (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")]
+ UNSPEC_MOVU))]
+@@ -3299,8 +3342,18 @@
+ (const_int 2)
+ (const_int 3)])))]
+ "TARGET_SSE"
+- "ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);")
++{
++ rtx dst = ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);
++
++ emit_insn (gen_sse_movhlps (dst, operands[1], operands[2]));
+
++ /* Fix up the destination if needed. */
++ if (dst != operands[0])
++ emit_move_insn (operands[0], dst);
++
++ DONE;
++})
++
+ (define_insn "*avx_movhlps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
+ (vec_select:V4SF
+@@ -3349,8 +3402,18 @@
+ (const_int 4)
+ (const_int 5)])))]
+ "TARGET_SSE"
+- "ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);")
++{
++ rtx dst = ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);
++
++ emit_insn (gen_sse_movlhps (dst, operands[1], operands[2]));
+
++ /* Fix up the destination if needed. */
++ if (dst != operands[0])
++ emit_move_insn (operands[0], dst);
++
++ DONE;
++})
++
+ (define_insn "*avx_movlhps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,o")
+ (vec_select:V4SF
+@@ -3688,8 +3751,18 @@
+ (parallel [(const_int 0) (const_int 1)]))
+ (match_operand:V2SF 2 "nonimmediate_operand" "")))]
+ "TARGET_SSE"
+- "ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);")
++{
++ rtx dst = ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);
++
++ emit_insn (gen_sse_loadhps (dst, operands[1], operands[2]));
+
++ /* Fix up the destination if needed. */
++ if (dst != operands[0])
++ emit_move_insn (operands[0], dst);
++
++ DONE;
++})
++
+ (define_insn "*avx_loadhps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,o")
+ (vec_concat:V4SF
+@@ -3756,8 +3829,18 @@
+ (match_operand:V4SF 1 "nonimmediate_operand" "")
+ (parallel [(const_int 2) (const_int 3)]))))]
+ "TARGET_SSE"
+- "ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);")
++{
++ rtx dst = ix86_fixup_binary_operands (UNKNOWN, V4SFmode, operands);
++
++ emit_insn (gen_sse_loadlps (dst, operands[1], operands[2]));
+
++ /* Fix up the destination if needed. */
++ if (dst != operands[0])
++ emit_move_insn (operands[0], dst);
++
++ DONE;
++})
++
+ (define_insn "*avx_loadlps"
+ [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,m")
+ (vec_concat:V4SF
+@@ -4811,8 +4894,18 @@
+ (parallel [(const_int 0)]))
+ (match_operand:DF 2 "nonimmediate_operand" "")))]
+ "TARGET_SSE2"
+- "ix86_fixup_binary_operands (UNKNOWN, V2DFmode, operands);")
++{
++ rtx dst = ix86_fixup_binary_operands (UNKNOWN, V2DFmode, operands);
++
++ emit_insn (gen_sse2_loadhpd (dst, operands[1], operands[2]));
+
++ /* Fix up the destination if needed. */
++ if (dst != operands[0])
++ emit_move_insn (operands[0], dst);
++
++ DONE;
++})
++
+ ;; Avoid combining registers from different units in a single alternative,
+ ;; see comment above inline_secondary_memory_needed function in i386.c
+ (define_insn "*avx_loadhpd"
+@@ -4872,8 +4965,18 @@
+ (match_operand:V2DF 1 "nonimmediate_operand" "")
+ (parallel [(const_int 1)]))))]
+ "TARGET_SSE2"
+- "ix86_fixup_binary_operands (UNKNOWN, V2DFmode, operands);")
++{
++ rtx dst = ix86_fixup_binary_operands (UNKNOWN, V2DFmode, operands);
++
++ emit_insn (gen_sse2_loadlpd (dst, operands[1], operands[2]));
+
++ /* Fix up the destination if needed. */
++ if (dst != operands[0])
++ emit_move_insn (operands[0], dst);
++
++ DONE;
++})
++
+ ;; Avoid combining registers from different units in a single alternative,
+ ;; see comment above inline_secondary_memory_needed function in i386.c
+ (define_insn "*avx_loadlpd"
+@@ -9535,7 +9638,7 @@
[(set (match_operand:V8HI 0 "register_operand" "=x")
(sign_extend:V8HI
(vec_select:V8QI
(parallel [(const_int 0)
(const_int 1)
(const_int 2)
-@@ -9551,32 +9551,11 @@
+@@ -9551,32 +9654,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)
(const_int 2)
-@@ -9588,28 +9567,11 @@
+@@ -9588,28 +9670,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)]))))]
"TARGET_SSE4_1"
-@@ -9619,26 +9581,11 @@
+@@ -9619,26 +9684,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)
(const_int 2)
-@@ -9650,28 +9597,11 @@
+@@ -9650,28 +9700,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)]))))]
"TARGET_SSE4_1"
-@@ -9681,26 +9611,11 @@
+@@ -9681,26 +9714,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)]))))]
"TARGET_SSE4_1"
-@@ -9710,26 +9625,11 @@
+@@ -9710,26 +9728,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)
(const_int 2)
-@@ -9745,32 +9645,11 @@
+@@ -9745,32 +9748,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)
(const_int 2)
-@@ -9782,28 +9661,11 @@
+@@ -9782,28 +9764,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)]))))]
"TARGET_SSE4_1"
-@@ -9813,26 +9675,11 @@
+@@ -9813,26 +9778,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)
(const_int 2)
-@@ -9844,28 +9691,11 @@
+@@ -9844,28 +9794,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)]))))]
"TARGET_SSE4_1"
-@@ -9875,26 +9705,11 @@
+@@ -9875,26 +9808,11 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(parallel [(const_int 0)
(const_int 1)]))))]
"TARGET_SSE4_1"
-@@ -9904,21 +9719,6 @@
+@@ -9904,21 +9822,6 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
(define_insn "avx_vtestp<avxmodesuffixf2c><avxmodesuffix>"
Index: gcc/config/i386/darwin.h
===================================================================
---- gcc/config/i386/darwin.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/i386/darwin.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/i386/darwin.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/darwin.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -73,7 +73,9 @@
Failure to ensure this will lead to a crash in the system libraries
or dynamic loader. */
the kernel or some such. */
Index: gcc/config/i386/mingw32.h
===================================================================
---- gcc/config/i386/mingw32.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/i386/mingw32.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/i386/mingw32.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/mingw32.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -231,7 +231,7 @@
/* For 64-bit Windows we can't use DW2 unwind info. Also for multilib
Index: gcc/config/i386/i386.c
===================================================================
---- gcc/config/i386/i386.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/i386/i386.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/i386/i386.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/i386/i386.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -7160,6 +7160,8 @@
tree dest_addr, dest;
int cur_size = GET_MODE_SIZE (mode);
/* 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 165515)
-+++ gcc/config/ia64/ia64.md (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/ia64/ia64.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/ia64/ia64.md (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -3988,7 +3988,7 @@
[(match_operand:BI 2 "register_operand" "")
(match_operand:BI 3 "const_int_operand" "")]))]
[(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 165515)
-+++ gcc/config/rs6000/x-aix (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/rs6000/x-aix (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/rs6000/x-aix (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2,5 +2,5 @@
build/genautomata : override LDFLAGS += -Wl,-bmaxdata:0x20000000
-jc1 : override LDFLAGS += -Wl,-bmaxdata:0x20000000
+$(COMPILERS) : override LDFLAGS += -Wl,-bmaxdata:0x40000000
+Index: gcc/config/rs6000/rs6000.c
+===================================================================
+--- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -191,7 +191,7 @@
+
+ /* Label number of label created for -mrelocatable, to call to so we can
+ get the address of the GOT section */
+-int rs6000_pic_labelno;
++static int rs6000_pic_labelno;
+
+ #ifdef USING_ELFOS_H
+ /* Which abi to adhere to */
+@@ -9961,12 +9961,18 @@
+ || arg2 == error_mark_node)
+ return const0_rtx;
+
+- switch (icode)
++ /* Check and prepare argument depending on the instruction code.
++
++ Note that a switch statement instead of the sequence of tests
++ would be incorrect as many of the CODE_FOR values could be
++ CODE_FOR_nothing and that would yield multiple alternatives
++ with identical values. We'd never reach here at runtime in
++ this case. */
++ if (icode == CODE_FOR_altivec_vsldoi_v4sf
++ || icode == CODE_FOR_altivec_vsldoi_v4si
++ || icode == CODE_FOR_altivec_vsldoi_v8hi
++ || icode == CODE_FOR_altivec_vsldoi_v16qi)
+ {
+- case CODE_FOR_altivec_vsldoi_v4sf:
+- case CODE_FOR_altivec_vsldoi_v4si:
+- case CODE_FOR_altivec_vsldoi_v8hi:
+- case CODE_FOR_altivec_vsldoi_v16qi:
+ /* Only allow 4-bit unsigned literals. */
+ STRIP_NOPS (arg2);
+ if (TREE_CODE (arg2) != INTEGER_CST
+@@ -9975,16 +9981,16 @@
+ error ("argument 3 must be a 4-bit unsigned literal");
+ return const0_rtx;
+ }
+- break;
+-
+- case CODE_FOR_vsx_xxpermdi_v2df:
+- case CODE_FOR_vsx_xxpermdi_v2di:
+- case CODE_FOR_vsx_xxsldwi_v16qi:
+- case CODE_FOR_vsx_xxsldwi_v8hi:
+- case CODE_FOR_vsx_xxsldwi_v4si:
+- case CODE_FOR_vsx_xxsldwi_v4sf:
+- case CODE_FOR_vsx_xxsldwi_v2di:
+- case CODE_FOR_vsx_xxsldwi_v2df:
++ }
++ else if (icode == CODE_FOR_vsx_xxpermdi_v2df
++ || icode == CODE_FOR_vsx_xxpermdi_v2di
++ || icode == CODE_FOR_vsx_xxsldwi_v16qi
++ || icode == CODE_FOR_vsx_xxsldwi_v8hi
++ || icode == CODE_FOR_vsx_xxsldwi_v4si
++ || icode == CODE_FOR_vsx_xxsldwi_v4sf
++ || icode == CODE_FOR_vsx_xxsldwi_v2di
++ || icode == CODE_FOR_vsx_xxsldwi_v2df)
++ {
+ /* Only allow 2-bit unsigned literals. */
+ STRIP_NOPS (arg2);
+ if (TREE_CODE (arg2) != INTEGER_CST
+@@ -9993,10 +9999,10 @@
+ error ("argument 3 must be a 2-bit unsigned literal");
+ return const0_rtx;
+ }
+- break;
+-
+- case CODE_FOR_vsx_set_v2df:
+- case CODE_FOR_vsx_set_v2di:
++ }
++ else if (icode == CODE_FOR_vsx_set_v2df
++ || icode == CODE_FOR_vsx_set_v2di)
++ {
+ /* Only allow 1-bit unsigned literals. */
+ STRIP_NOPS (arg2);
+ if (TREE_CODE (arg2) != INTEGER_CST
+@@ -10005,10 +10011,6 @@
+ error ("argument 3 must be a 1-bit unsigned literal");
+ return const0_rtx;
+ }
+- break;
+-
+- default:
+- break;
+ }
+
+ if (target == 0
+@@ -17782,7 +17784,8 @@
+ char buf[30];
+ rtx lab, tmp1, tmp2, got;
+
+- ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);
++ lab = gen_label_rtx ();
++ ASM_GENERATE_INTERNAL_LABEL (buf, "L", CODE_LABEL_NUMBER (lab));
+ lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
+ if (flag_pic == 2)
+ got = gen_rtx_SYMBOL_REF (Pmode, toc_label_name);
+@@ -17795,8 +17798,7 @@
+ tmp2 = gen_reg_rtx (Pmode);
+ }
+ emit_insn (gen_load_toc_v4_PIC_1 (lab));
+- emit_move_insn (tmp1,
+- gen_rtx_REG (Pmode, LR_REGNO));
++ emit_move_insn (tmp1, gen_rtx_REG (Pmode, LR_REGNO));
+ emit_insn (gen_load_toc_v4_PIC_3b (tmp2, tmp1, got, lab));
+ emit_insn (gen_load_toc_v4_PIC_3c (dest, tmp2, got, lab));
+ }
+@@ -17823,8 +17825,7 @@
+ symL = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
+
+ emit_insn (gen_load_toc_v4_PIC_1 (symF));
+- emit_move_insn (dest,
+- gen_rtx_REG (Pmode, LR_REGNO));
++ emit_move_insn (dest, gen_rtx_REG (Pmode, LR_REGNO));
+ emit_insn (gen_load_toc_v4_PIC_2 (temp0, dest, symL, symF));
+ }
+ else
+Index: gcc/config/rs6000/rs6000.md
+===================================================================
+--- gcc/config/rs6000/rs6000.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/rs6000/rs6000.md (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -11456,8 +11456,8 @@
+ [(set_attr "type" "load")])
+
+ (define_insn "load_toc_v4_PIC_3b"
+- [(set (match_operand:SI 0 "gpc_reg_operand" "=b")
+- (plus:SI (match_operand:SI 1 "gpc_reg_operand" "r")
++ [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
++ (plus:SI (match_operand:SI 1 "gpc_reg_operand" "b")
+ (high:SI
+ (minus:SI (match_operand:SI 2 "symbol_ref_operand" "s")
+ (match_operand:SI 3 "symbol_ref_operand" "s")))))]
+Index: gcc/config/rs6000/sysv4.h
+===================================================================
+--- gcc/config/rs6000/sysv4.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/rs6000/sysv4.h (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -416,8 +416,6 @@
+ Some svr4 assemblers need to also have something extra said about the
+ function's return value. We allow for that here. */
+
+-extern int rs6000_pic_labelno;
+-
+ /* Override elfos.h definition. */
+ #undef ASM_DECLARE_FUNCTION_NAME
+ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
Index: gcc/config/arm/linux-atomic.c
===================================================================
---- gcc/config/arm/linux-atomic.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/arm/linux-atomic.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/arm/linux-atomic.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/arm/linux-atomic.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -56,7 +56,7 @@
\
do { \
void HIDDEN \
Index: gcc/config/arm/arm.c
===================================================================
---- gcc/config/arm/arm.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/arm/arm.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/arm/arm.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/arm/arm.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -13705,7 +13705,8 @@
&& !crtl->tail_call_emit)
{
reg = 0;
Index: gcc/config/arm/arm.md
===================================================================
---- gcc/config/arm/arm.md (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/arm/arm.md (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/arm/arm.md (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/arm/arm.md (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -11191,7 +11191,7 @@
(const_int 16)
(const_int 16))
(set_attr "length" "4")]
Index: gcc/config/pa/pa.c
===================================================================
---- gcc/config/pa/pa.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/pa/pa.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/pa/pa.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/pa/pa.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -5701,7 +5701,7 @@
pa_secondary_reload (bool in_p, rtx x, enum reg_class rclass,
enum machine_mode mode, secondary_reload_info *sri)
Index: gcc/config/pa/pa.h
===================================================================
---- gcc/config/pa/pa.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/pa/pa.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/pa/pa.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/pa/pa.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -325,8 +325,9 @@
#define BIGGEST_ALIGNMENT (2 * BITS_PER_WORD)
#define DATA_ALIGNMENT(TYPE, ALIGN) \
Index: gcc/config/mips/mips.c
===================================================================
---- gcc/config/mips/mips.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/config/mips/mips.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/config/mips/mips.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/config/mips/mips.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -14007,23 +14007,35 @@
}
\f
\f
Index: gcc/tree-vect-slp.c
===================================================================
---- gcc/tree-vect-slp.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/tree-vect-slp.c (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1714,20 +1714,18 @@
+--- gcc/tree-vect-slp.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/tree-vect-slp.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1429,7 +1429,8 @@
+ stmts. NUMBER_OF_VECTORS is the number of vector defs to create. */
+
+ static void
+-vect_get_constant_vectors (slp_tree slp_node, VEC(tree,heap) **vec_oprnds,
++vect_get_constant_vectors (tree op, slp_tree slp_node,
++ VEC(tree,heap) **vec_oprnds,
+ unsigned int op_num, unsigned int number_of_vectors)
+ {
+ VEC (gimple, heap) *stmts = SLP_TREE_SCALAR_STMTS (slp_node);
+@@ -1440,7 +1441,7 @@
+ tree t = NULL_TREE;
+ int j, number_of_places_left_in_vector;
+ tree vector_type;
+- tree op, vop;
++ tree vop;
+ int group_size = VEC_length (gimple, stmts);
+ unsigned int vec_num, i;
+ int number_of_copies = 1;
+@@ -1453,10 +1454,7 @@
+ op = gimple_assign_rhs1 (stmt);
+ }
+ else
+- {
+- is_store = false;
+- op = gimple_op (stmt, op_num + 1);
+- }
++ is_store = false;
+
+ if (CONSTANT_CLASS_P (op))
+ constant_p = true;
+@@ -1572,7 +1570,8 @@
+ the right node. This is used when the second operand must remain scalar. */
+
+ void
+-vect_get_slp_defs (slp_tree slp_node, VEC (tree,heap) **vec_oprnds0,
++vect_get_slp_defs (tree op0, tree op1, slp_tree slp_node,
++ VEC (tree,heap) **vec_oprnds0,
+ VEC (tree,heap) **vec_oprnds1)
+ {
+ gimple first_stmt;
+@@ -1610,7 +1609,7 @@
+ vect_get_slp_vect_defs (SLP_TREE_LEFT (slp_node), vec_oprnds0);
+ else
+ /* Build vectors from scalar defs. */
+- vect_get_constant_vectors (slp_node, vec_oprnds0, 0, number_of_vects);
++ vect_get_constant_vectors (op0, slp_node, vec_oprnds0, 0, number_of_vects);
+
+ if (STMT_VINFO_DATA_REF (vinfo_for_stmt (first_stmt)))
+ /* Since we don't call this function with loads, this is a group of
+@@ -1635,7 +1634,7 @@
+ vect_get_slp_vect_defs (SLP_TREE_RIGHT (slp_node), vec_oprnds1);
+ else
+ /* Build vectors from scalar defs. */
+- vect_get_constant_vectors (slp_node, vec_oprnds1, 1, number_of_vects);
++ vect_get_constant_vectors (op1, slp_node, vec_oprnds1, 1, number_of_vects);
+ }
+
+
+@@ -1714,20 +1713,18 @@
vect_get_mask_element (gimple stmt, int first_mask_element, int m,
int mask_nunits, bool only_one_vec, int index,
int *mask, int *current_mask_element,
/* We have only one input vector to permute but the mask accesses values in
the next vector as well. */
-@@ -1745,7 +1743,7 @@
+@@ -1745,7 +1742,7 @@
/* The mask requires the next vector. */
if (*current_mask_element >= mask_nunits * 2)
{
{
/* We either need the first vector too or have already moved to the
next vector. In both cases, this permutation needs three
-@@ -1763,23 +1761,23 @@
+@@ -1763,23 +1760,23 @@
/* We move to the next vector, dropping the first one and working with
the second and the third - we need to adjust the values of the mask
accordingly. */
}
return true;
-@@ -1805,6 +1803,9 @@
+@@ -1805,6 +1802,9 @@
int index, unroll_factor, *mask, current_mask_element, ncopies;
bool only_one_vec = false, need_next_vector = false;
int first_vec_index, second_vec_index, orig_vec_stmts_num, vect_stmts_counter;
if (!targetm.vectorize.builtin_vec_perm)
{
-@@ -1891,7 +1892,9 @@
+@@ -1891,7 +1891,9 @@
{
if (!vect_get_mask_element (stmt, first_mask_element, m,
mask_nunits, only_one_vec, index, mask,
mask[index++] = current_mask_element;
Index: gcc/cfgrtl.c
===================================================================
---- gcc/cfgrtl.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/cfgrtl.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/cfgrtl.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/cfgrtl.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -422,7 +422,10 @@
/* The resource.c machinery uses DF but the CFG isn't guaranteed to be
valid at that point so it would be too late to call df_analyze. */
#endif
free_bb_for_insn ();
+Index: gcc/stmt.c
+===================================================================
+--- gcc/stmt.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/stmt.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -773,6 +773,10 @@
+
+ /* Second pass evaluates arguments. */
+
++ /* Make sure stack is consistent for asm goto. */
++ if (nlabels > 0)
++ do_pending_stack_adjust ();
++
+ ninout = 0;
+ for (i = 0, tail = outputs; tail; tail = TREE_CHAIN (tail), i++)
+ {
Index: gcc/convert.c
===================================================================
---- gcc/convert.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/convert.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/convert.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/convert.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -799,14 +799,7 @@
/* This is not correct for ABS_EXPR,
since we must test the sign before truncation. */
convert (typex,
Index: gcc/reload1.c
===================================================================
---- gcc/reload1.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ gcc/reload1.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- gcc/reload1.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ gcc/reload1.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -447,7 +447,6 @@
static int set_reload_reg (int, int);
static void choose_reload_regs_init (struct insn_chain *, rtx *);
there are no more references than accounted for by inheritance. */
Index: libstdc++-v3/python/libstdcxx/v6/printers.py
===================================================================
---- libstdc++-v3/python/libstdcxx/v6/printers.py (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/python/libstdcxx/v6/printers.py (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -546,7 +546,9 @@
+--- libstdc++-v3/python/libstdcxx/v6/printers.py (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/python/libstdcxx/v6/printers.py (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -153,37 +153,74 @@
+ "Print a std::vector"
+
+ class _iterator:
+- def __init__ (self, start, finish):
+- self.item = start
+- self.finish = finish
++ def __init__ (self, start, finish, bitvec):
++ self.bitvec = bitvec
++ if bitvec:
++ self.item = start['_M_p']
++ self.so = start['_M_offset']
++ self.finish = finish['_M_p']
++ self.fo = finish['_M_offset']
++ itype = self.item.dereference().type
++ self.isize = 8 * itype.sizeof
++ else:
++ self.item = start
++ self.finish = finish
+ self.count = 0
+
+ def __iter__(self):
+ return self
+
+ def next(self):
+- if self.item == self.finish:
+- raise StopIteration
+ count = self.count
+ self.count = self.count + 1
+- elt = self.item.dereference()
+- self.item = self.item + 1
+- return ('[%d]' % count, elt)
++ if self.bitvec:
++ if self.item == self.finish and self.so >= self.fo:
++ raise StopIteration
++ elt = self.item.dereference()
++ if elt & (1 << self.so):
++ obit = 1
++ else:
++ obit = 0
++ self.so = self.so + 1
++ if self.so >= self.isize:
++ self.item = self.item + 1
++ self.so = 0
++ return ('[%d]' % count, obit)
++ else:
++ if self.item == self.finish:
++ raise StopIteration
++ elt = self.item.dereference()
++ self.item = self.item + 1
++ return ('[%d]' % count, elt)
+
+ def __init__(self, typename, val):
+ self.typename = typename
+ self.val = val
++ self.is_bool = val.type.template_argument(0).code == gdb.TYPE_CODE_BOOL
+
+ def children(self):
+ return self._iterator(self.val['_M_impl']['_M_start'],
+- self.val['_M_impl']['_M_finish'])
++ self.val['_M_impl']['_M_finish'],
++ self.is_bool)
+
+ def to_string(self):
+ start = self.val['_M_impl']['_M_start']
+ finish = self.val['_M_impl']['_M_finish']
+ end = self.val['_M_impl']['_M_end_of_storage']
+- return ('%s of length %d, capacity %d'
+- % (self.typename, int (finish - start), int (end - start)))
++ if self.is_bool:
++ start = self.val['_M_impl']['_M_start']['_M_p']
++ so = self.val['_M_impl']['_M_start']['_M_offset']
++ finish = self.val['_M_impl']['_M_finish']['_M_p']
++ fo = self.val['_M_impl']['_M_finish']['_M_offset']
++ itype = start.dereference().type
++ bl = 8 * itype.sizeof
++ length = (bl - so) + bl * ((finish - start) - 1) + fo
++ capacity = bl * (end - start)
++ return ('%s<bool> of length %d, capacity %d'
++ % (self.typename, int (length), int (capacity)))
++ else:
++ return ('%s of length %d, capacity %d'
++ % (self.typename, int (finish - start), int (end - start)))
+
+ def display_hint(self):
+ return 'array'
+@@ -546,7 +583,9 @@
reptype = gdb.lookup_type (str (realtype) + '::_Rep').pointer ()
header = ptr.cast(reptype) - 1
len = header.dereference ()['_M_length']
return 'string'
Index: libstdc++-v3/configure
===================================================================
---- libstdc++-v3/configure (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/configure (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/configure (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/configure (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -25562,7 +25562,7 @@
CFLAGS="$chktls_save_CFLAGS"
if test "X$thread_CFLAGS" != Xfailed; then
as_fn_error "cannot run test program while cross compiling
Index: libstdc++-v3/src/Makefile.in
===================================================================
---- libstdc++-v3/src/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/src/Makefile.in (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/src/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/src/Makefile.in (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -972,13 +972,16 @@
@GLIBCXX_BUILD_DEBUG_FALSE@install-data-local:
< ../Makefile > Makefile) ; \
Index: libstdc++-v3/src/Makefile.am
===================================================================
---- libstdc++-v3/src/Makefile.am (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/src/Makefile.am (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/src/Makefile.am (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/src/Makefile.am (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -389,13 +389,16 @@
debugdir = debug
< ../Makefile > Makefile) ; \
Index: libstdc++-v3/doc/xml/manual/appendix_contributing.xml
===================================================================
---- libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -942,10 +942,18 @@
<title>Generating the Doxygen Files</title>
<para>
</sect1>
Index: libstdc++-v3/doc/Makefile.in
===================================================================
---- libstdc++-v3/doc/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/doc/Makefile.in (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/doc/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/doc/Makefile.in (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -267,7 +267,15 @@
# Assumes doxygen, graphviz (with dot), pdflatex installed
doxygen_script = ${top_srcdir}/scripts/run_doxygen
# 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 165515)
-+++ libstdc++-v3/doc/Makefile.am (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/doc/Makefile.am (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/doc/Makefile.am (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -25,26 +25,46 @@
# Documentation Overview
#
+ 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 165515)
-+++ libstdc++-v3/doc/doxygen/user.cfg.in (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/doc/doxygen/user.cfg.in (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/doc/doxygen/user.cfg.in (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,4 @@
-# Doxyfile 1.6.1
+# Doxyfile 1.7.1
# 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 165515)
-+++ libstdc++-v3/doc/doxygen/doxygroups.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/doc/doxygen/doxygroups.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/doc/doxygen/doxygroups.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,5 +1,6 @@
/*
- Copyright (C) 2001, 2002, 2005, 2008, 2009 Free Software Foundation, Inc.
Index: libstdc++-v3/include/std/atomic
===================================================================
---- libstdc++-v3/include/std/atomic (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/std/atomic (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/std/atomic (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/std/atomic (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -141,13 +141,16 @@
atomic(_Tp* __v) : atomic_address(__v) { }
memory_order __m2)
Index: libstdc++-v3/include/std/functional
===================================================================
---- libstdc++-v3/include/std/functional (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/std/functional (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/std/functional (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/std/functional (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1323,7 +1323,7 @@
operator()(_Args&&... __args)
{
};
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 165515)
-+++ libstdc++-v3/include/bits/stl_iterator_base_types.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/stl_iterator_base_types.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/stl_iterator_base_types.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -69,6 +69,12 @@
/**
*
Index: libstdc++-v3/include/bits/stl_heap.h
===================================================================
---- libstdc++-v3/include/bits/stl_heap.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/stl_heap.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/stl_heap.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/stl_heap.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -62,7 +62,7 @@
_GLIBCXX_BEGIN_NAMESPACE(std)
Index: libstdc++-v3/include/bits/forward_list.h
===================================================================
---- libstdc++-v3/include/bits/forward_list.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/forward_list.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/forward_list.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/forward_list.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -461,7 +461,9 @@
* constructed elements.
*/
/**
Index: libstdc++-v3/include/bits/move.h
===================================================================
---- libstdc++-v3/include/bits/move.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/move.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/move.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/move.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -81,7 +81,7 @@
move(_Tp&& __t)
{ return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
Index: libstdc++-v3/include/bits/stl_iterator.h
===================================================================
---- libstdc++-v3/include/bits/stl_iterator.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/stl_iterator.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/stl_iterator.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/stl_iterator.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -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.
{
Index: libstdc++-v3/include/bits/forward_list.tcc
===================================================================
---- libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -114,7 +114,7 @@
_M_fill_initialize(size_type __n, const value_type& __value)
{
template<typename _Tp, typename _Alloc>
Index: libstdc++-v3/include/bits/algorithmfwd.h
===================================================================
---- libstdc++-v3/include/bits/algorithmfwd.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/algorithmfwd.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/algorithmfwd.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/algorithmfwd.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -134,22 +134,22 @@
*/
* These algorithms are variations of a classic binary search, and
Index: libstdc++-v3/include/bits/random.tcc
===================================================================
---- libstdc++-v3/include/bits/random.tcc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/random.tcc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/random.tcc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/random.tcc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -2586,6 +2586,9 @@
__aurng(__urng);
const size_t __i = __pos - __param._M_cp.begin();
Index: libstdc++-v3/include/bits/random.h
===================================================================
---- libstdc++-v3/include/bits/random.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/include/bits/random.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/include/bits/random.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/include/bits/random.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1614,7 +1614,7 @@
*/
*/
Index: libstdc++-v3/ChangeLog
===================================================================
---- libstdc++-v3/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1,3 +1,139 @@
+--- libstdc++-v3/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,154 @@
++2010-11-01 Jonathan Wakely <jwakely.gcc@gmail.com>
++
++ PR libstdc++/45999
++ * python/libstdcxx/v6/printers.py (StdVectorPrinter): Replace
++ conditional expression with backward-compatible if-else.
++
++2010-10-18 Jonathan Wakely <jwakely.gcc@gmail.com>
++
++ Backport from mainline:
++ 2010-08-16 Chris Moller <cmoller@redhat.com>
++
++ http://sourceware.org/bugzilla/show_bug.cgi?id=11874
++ * python/libstdcxx/v6/printers.py (StdVectorPrinter): Added stuff
++ to handle pretty-printing of std::vector<bool>.
++
+2010-10-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/random.tcc (piecewise_linear_distribution<>::
* GCC 4.5.1 released.
Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
===================================================================
---- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,5 @@
-// Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010
#include <sstream>
Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
===================================================================
---- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,7 @@
// 1999-04-12 bkoz
Index: libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
===================================================================
--- libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc (.../branches/gcc-4_5-branch) (wersja 165515)
++++ libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,41 @@
+// { dg-options "-std=c++0x" }
+// { dg-require-cstdint "" }
+}
Index: libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
===================================================================
---- libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,10 @@
+// Before Solaris 11, iconv -f ISO-8859-1 -t ISO-8859-1 fails with
+// Not supported ISO-8859-1 to ISO-8859-1
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 165515)
++++ libstdc++-v3/testsuite/ext/rope/44963.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,31 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+}
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 165515)
-+++ libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/performance/30_threads/future/polling.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009 Free Software Foundation, Inc.
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
for (int i=0; i < n; ++i)
Index: libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
===================================================================
---- libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
// 2004-04-30 Paolo Carlini <pcarlini@suse.de>
void test01()
Index: libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
===================================================================
---- libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
// 2004-04-30 Paolo Carlini <pcarlini@suse.de>
#include <sstream>
Index: libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
===================================================================
---- libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -29,19 +29,19 @@
}
// { dg-excess-errors "In member function" }
Index: libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
===================================================================
---- libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -29,19 +29,19 @@
}
// { dg-excess-errors "In member function" }
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 165515)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-std=gnu++0x" }
// 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 165515)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-std=gnu++0x" }
// 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 165515)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-std=gnu++0x" }
// 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 165515)
-+++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,6 +1,6 @@
// { dg-do compile }
// { dg-options "-std=gnu++0x" }
Index: libstdc++-v3/testsuite/20_util/bind/45924.cc
===================================================================
--- libstdc++-v3/testsuite/20_util/bind/45924.cc (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/20_util/bind/45924.cc (.../branches/gcc-4_5-branch) (wersja 165515)
++++ libstdc++-v3/testsuite/20_util/bind/45924.cc (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,45 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
Index: configure.ac
===================================================================
---- configure.ac (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ configure.ac (.../branches/gcc-4_5-branch) (wersja 165515)
+--- configure.ac (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ configure.ac (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -340,7 +340,7 @@
# Check for target supported by gold.
case "${target}" in
# it is in the source tree, and the library has not been built yet
Index: intl/configure
===================================================================
---- intl/configure (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ intl/configure (.../branches/gcc-4_5-branch) (wersja 165515)
+--- intl/configure (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ intl/configure (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -7830,7 +7830,7 @@
case "$ac_file" in */Makefile.in)
# Adjust a relative srcdir.
# In autoconf-2.50 it is called $srcdir.
Index: intl/ChangeLog
===================================================================
---- intl/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ intl/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- intl/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ intl/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,8 @@
+2010-10-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
2010-07-31 Release Manager
* GCC 4.5.1 released.
+Index: libgfortran/m4/shape.m4
+===================================================================
+--- libgfortran/m4/shape.m4 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/m4/shape.m4 (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -42,13 +42,23 @@
+ int n;
+ index_type stride;
+ index_type extent;
++ int rank;
+
++ rank = GFC_DESCRIPTOR_RANK (array);
++
++ if (ret->data == NULL)
++ {
++ GFC_DIMENSION_SET(ret->dim[0], 0, rank - 1, 1);
++ ret->offset = 0;
++ ret->data = internal_malloc_size (sizeof ('rtype_name`) * rank);
++ }
++
+ stride = GFC_DESCRIPTOR_STRIDE(ret,0);
+
+ if (GFC_DESCRIPTOR_EXTENT(ret,0) < 1)
+ return;
+
+- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
++ for (n = 0; n < rank; n++)
+ {
+ extent = GFC_DESCRIPTOR_EXTENT(array,n);
+ ret->data[n * stride] = extent > 0 ? extent : 0 ;
Index: libgfortran/ChangeLog
===================================================================
---- libgfortran/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libgfortran/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -1,3 +1,25 @@
+--- libgfortran/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,49 @@
++2010-11-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
++
++ PR libgfortran/46373
++ Backport from mainline:
++ * io/transfer.c (data_transfer_init): Do not call flush_if_preconnected
++ if this is an internal unit.
++
++2010-11-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
++
++ PR libgfortran/46010
++ Backport from mainline:
++ * io/list_read.c (nml_parse_qualifier): Add additional conditions for
++ setting the end index for loop specification. Fix some whitespace.
++
++2010-10-21 Thomas Koenig <tkoenig@gcc.gnu.org>
++
++ PR fortran/46007
++ Backport from trunk
++ * m4/shape.m4 (shape_'rtype_kind`): Use variable for rank.
++ Allocate return array if unallocated.
++ * generated/shape_i4.c: Regenerated.
++ * generated/shape_i8.c: Regenerated.
++ * generated/shape_i16.c: Regenerated.
++
+2010-10-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from mainline:
2010-07-31 Release Manager
* GCC 4.5.1 released.
+Index: libgfortran/generated/shape_i4.c
+===================================================================
+--- libgfortran/generated/shape_i4.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/generated/shape_i4.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -41,13 +41,23 @@
+ int n;
+ index_type stride;
+ index_type extent;
++ int rank;
+
++ rank = GFC_DESCRIPTOR_RANK (array);
++
++ if (ret->data == NULL)
++ {
++ GFC_DIMENSION_SET(ret->dim[0], 0, rank - 1, 1);
++ ret->offset = 0;
++ ret->data = internal_malloc_size (sizeof (GFC_INTEGER_4) * rank);
++ }
++
+ stride = GFC_DESCRIPTOR_STRIDE(ret,0);
+
+ if (GFC_DESCRIPTOR_EXTENT(ret,0) < 1)
+ return;
+
+- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
++ for (n = 0; n < rank; n++)
+ {
+ extent = GFC_DESCRIPTOR_EXTENT(array,n);
+ ret->data[n * stride] = extent > 0 ? extent : 0 ;
+Index: libgfortran/generated/shape_i16.c
+===================================================================
+--- libgfortran/generated/shape_i16.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/generated/shape_i16.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -41,13 +41,23 @@
+ int n;
+ index_type stride;
+ index_type extent;
++ int rank;
+
++ rank = GFC_DESCRIPTOR_RANK (array);
++
++ if (ret->data == NULL)
++ {
++ GFC_DIMENSION_SET(ret->dim[0], 0, rank - 1, 1);
++ ret->offset = 0;
++ ret->data = internal_malloc_size (sizeof (GFC_INTEGER_16) * rank);
++ }
++
+ stride = GFC_DESCRIPTOR_STRIDE(ret,0);
+
+ if (GFC_DESCRIPTOR_EXTENT(ret,0) < 1)
+ return;
+
+- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
++ for (n = 0; n < rank; n++)
+ {
+ extent = GFC_DESCRIPTOR_EXTENT(array,n);
+ ret->data[n * stride] = extent > 0 ? extent : 0 ;
+Index: libgfortran/generated/shape_i8.c
+===================================================================
+--- libgfortran/generated/shape_i8.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/generated/shape_i8.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -41,13 +41,23 @@
+ int n;
+ index_type stride;
+ index_type extent;
++ int rank;
+
++ rank = GFC_DESCRIPTOR_RANK (array);
++
++ if (ret->data == NULL)
++ {
++ GFC_DIMENSION_SET(ret->dim[0], 0, rank - 1, 1);
++ ret->offset = 0;
++ ret->data = internal_malloc_size (sizeof (GFC_INTEGER_8) * rank);
++ }
++
+ stride = GFC_DESCRIPTOR_STRIDE(ret,0);
+
+ if (GFC_DESCRIPTOR_EXTENT(ret,0) < 1)
+ return;
+
+- for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++)
++ for (n = 0; n < rank; n++)
+ {
+ extent = GFC_DESCRIPTOR_EXTENT(array,n);
+ ret->data[n * stride] = extent > 0 ? extent : 0 ;
Index: libgfortran/config/fpu-387.h
===================================================================
---- libgfortran/config/fpu-387.h (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libgfortran/config/fpu-387.h (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libgfortran/config/fpu-387.h (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/config/fpu-387.h (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -64,7 +64,6 @@
if (edx & bit_SSE)
{
Index: libgfortran/io/list_read.c
===================================================================
---- libgfortran/io/list_read.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libgfortran/io/list_read.c (.../branches/gcc-4_5-branch) (wersja 165515)
-@@ -2731,10 +2731,11 @@
+--- libgfortran/io/list_read.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/io/list_read.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2076,8 +2076,10 @@
+
+ /* If -std=f95/2003 or an array section is specified,
+ do not allow excess data to be processed. */
+- if (is_array_section == 1
+- || compile_options.allow_std < GFC_STD_GNU)
++ if (is_array_section == 1
++ || !(compile_options.allow_std & GFC_STD_GNU)
++ || !dtp->u.p.ionml->touched
++ || dtp->u.p.ionml->type == GFC_DTYPE_DERIVED)
+ ls[dim].end = ls[dim].start;
+ else
+ dtp->u.p.expanded_read = 1;
+@@ -2092,12 +2094,12 @@
+ }
+
+ if (is_array_section == 1 && dtp->u.p.expanded_read == 1)
+- {
++ {
+ int i;
+ dtp->u.p.expanded_read = 0;
+ for (i = 0; i < dim; i++)
+ ls[i].end = ls[i].start;
+- }
++ }
+
+ /* Check the values of the triplet indices. */
+ if ((ls[dim].start > (ssize_t) GFC_DIMENSION_UBOUND(ad[dim]))
+@@ -2731,10 +2733,11 @@
goto nml_err_ret;
}
component_flag = 1;
c = next_char (dtp);
+Index: libgfortran/io/transfer.c
+===================================================================
+--- libgfortran/io/transfer.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/io/transfer.c (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2539,7 +2539,8 @@
+ }
+
+ /* Bugware for badly written mixed C-Fortran I/O. */
+- flush_if_preconnected(dtp->u.p.current_unit->s);
++ if (!is_internal_unit (dtp))
++ flush_if_preconnected(dtp->u.p.current_unit->s);
+
+ dtp->u.p.current_unit->mode = dtp->u.p.mode;
+
Index: libgfortran/io/write.c
===================================================================
---- libgfortran/io/write.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libgfortran/io/write.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libgfortran/io/write.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libgfortran/io/write.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
record = next_array_record (dtp, dtp->u.p.current_unit->ls,
Index: ChangeLog
===================================================================
---- ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,19 @@
+2010-10-06 Richard Guenther <rguenther@suse.de>
+
* GCC 4.5.1 released.
Index: libffi/src/x86/ffi64.c
===================================================================
---- libffi/src/x86/ffi64.c (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libffi/src/x86/ffi64.c (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libffi/src/x86/ffi64.c (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libffi/src/x86/ffi64.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -377,7 +377,7 @@
if (align < 8)
align = 8;
}
Index: libffi/ChangeLog
===================================================================
---- libffi/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libffi/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libffi/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libffi/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,10 @@
+2010-10-01 Jakub Jelinek <jakub@redhat.com>
+
Index: libffi/testsuite/libffi.call/many2.c
===================================================================
--- libffi/testsuite/libffi.call/many2.c (.../tags/gcc_4_5_1_release) (wersja 0)
-+++ libffi/testsuite/libffi.call/many2.c (.../branches/gcc-4_5-branch) (wersja 165515)
++++ libffi/testsuite/libffi.call/many2.c (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -0,0 +1,54 @@
+/* Area: ffi_call
+ Purpose: Check uint8_t arguments.
+}
Index: config/ChangeLog
===================================================================
---- config/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ config/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- config/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ config/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,7 @@
+2010-10-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
* GCC 4.5.1 released.
Index: config/po.m4
===================================================================
---- config/po.m4 (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ config/po.m4 (.../branches/gcc-4_5-branch) (wersja 165515)
+--- config/po.m4 (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ config/po.m4 (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -96,7 +96,7 @@
case "$ac_file" in */Makefile.in)
# Adjust a relative srcdir.
# In autoconf-2.50 it is called $srcdir.
Index: libjava/classpath/javax/print/attribute/standard/JobStateReasons.java
===================================================================
---- libjava/classpath/javax/print/attribute/standard/JobStateReasons.java (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libjava/classpath/javax/print/attribute/standard/JobStateReasons.java (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/classpath/javax/print/attribute/standard/JobStateReasons.java (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/classpath/javax/print/attribute/standard/JobStateReasons.java (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -129,7 +129,7 @@
if (o == null)
throw new NullPointerException("reason is null");
/**
Index: libjava/classpath/ChangeLog
===================================================================
---- libjava/classpath/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libjava/classpath/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/classpath/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/classpath/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,23 @@
+2010-04-27 Andrew Haley <aph@redhat.com>
+
* 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 165515)
-+++ libjava/classpath/gnu/javax/print/ipp/IppRequest.java (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/classpath/gnu/javax/print/ipp/IppRequest.java (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/classpath/gnu/javax/print/ipp/IppRequest.java (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -434,6 +434,8 @@
PrinterURI printerUri = (PrinterURI) attributes.get(PrinterURI.class);
JobUri jobUri = (JobUri) attributes.get(JobUri.class);
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 165515)
-+++ libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/classpath/gnu/javax/print/ipp/IppPrintService.java (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -356,8 +356,17 @@
// should not happen, all fields are public
}
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 165515)
-+++ libjava/classpath/gnu/javax/print/ipp/IppResponse.java (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/classpath/gnu/javax/print/ipp/IppResponse.java (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/classpath/gnu/javax/print/ipp/IppResponse.java (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -302,11 +302,14 @@
// out-of-band values
case IppValueTag.UNSUPPORTED:
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 165515)
-+++ libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -452,7 +452,12 @@
public synchronized boolean remove(Object element)
{
// this way we can run this method in O(n)
Index: libjava/ChangeLog
===================================================================
---- libjava/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libjava/ChangeLog (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -1,3 +1,16 @@
+2010-10-06 Jack Howarth <howarth@bromo.med.uc.edu>
+
* GCC 4.5.1 released.
Index: libjava/testsuite/Makefile.in
===================================================================
---- libjava/testsuite/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libjava/testsuite/Makefile.in (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/testsuite/Makefile.in (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/testsuite/Makefile.in (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -388,25 +388,6 @@
else echo "WARNING: could not find \`runtest'" 1>&2; :;\
fi; \
compile-tests:
Index: libjava/testsuite/libjava.jni/jni.exp
===================================================================
---- libjava/testsuite/libjava.jni/jni.exp (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libjava/testsuite/libjava.jni/jni.exp (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/testsuite/libjava.jni/jni.exp (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/testsuite/libjava.jni/jni.exp (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -251,7 +251,11 @@
}
if { [istarget "*-*-solaris*"] } {
Index: libjava/testsuite/Makefile.am
===================================================================
---- libjava/testsuite/Makefile.am (.../tags/gcc_4_5_1_release) (wersja 165515)
-+++ libjava/testsuite/Makefile.am (.../branches/gcc-4_5-branch) (wersja 165515)
+--- libjava/testsuite/Makefile.am (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ libjava/testsuite/Makefile.am (.../branches/gcc-4_5-branch) (wersja 166792)
@@ -24,6 +24,31 @@
.PHONY: compile-tests
check-am: compile-tests
compile-tests:
+Index: fixincludes/ChangeLog
+===================================================================
+--- fixincludes/ChangeLog (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ fixincludes/ChangeLog (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -1,3 +1,13 @@
++2010-10-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ Backport from mainline:
++ 2010-10-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
++
++ PR c++/46024
++ * inclhack.def (solaris_sys_va_list): New fix.
++ * fixincl.x: Regenerate.
++ * tests/base/sys/va_list.h: New test.
++
+ 2010-07-31 Release Manager
+
+ * GCC 4.5.1 released.
+Index: fixincludes/tests/base/sys/va_list.h
+===================================================================
+--- fixincludes/tests/base/sys/va_list.h (.../tags/gcc_4_5_1_release) (wersja 0)
++++ fixincludes/tests/base/sys/va_list.h (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -0,0 +1,22 @@
++/* DO NOT EDIT THIS FILE.
++
++ It has been auto-edited by fixincludes from:
++
++ "fixinc/tests/inc/sys/va_list.h"
++
++ This had to be done to correct non-standard usages in the
++ original, manufacturer supplied header file. */
++
++
++
++#if defined( SOLARIS_SYS_VA_LIST_CHECK )
++#ifdef __GNUC__
++typedef __builtin_va_list __va_list;
++#else
++#if defined(__STDC__) && !defined(__ia64)
++typedef void *__va_list;
++#else
++typedef char *__va_list;
++#endif
++#endif
++#endif /* SOLARIS_SYS_VA_LIST_CHECK */
+Index: fixincludes/fixincl.x
+===================================================================
+--- fixincludes/fixincl.x (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ fixincludes/fixincl.x (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -2,11 +2,11 @@
+ *
+ * DO NOT EDIT THIS FILE (fixincl.x)
+ *
+- * It has been AutoGen-ed Monday July 12, 2010 at 04:30:55 PM MEST
++ * It has been AutoGen-ed Wednesday October 20, 2010 at 07:44:15 PM MEST
+ * From the definitions inclhack.def
+ * and the template file fixincl
+ */
+-/* DO NOT SVN-MERGE THIS FILE, EITHER Mon Jul 12 16:30:55 MEST 2010
++/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Oct 20 19:44:15 MEST 2010
+ *
+ * You must regenerate it. Use the ./genfixes script.
+ *
+@@ -15,7 +15,7 @@
+ * certain ANSI-incompatible system header files which are fixed to work
+ * correctly with ANSI C and placed in a directory that GNU C will search.
+ *
+- * This file contains 207 fixup descriptions.
++ * This file contains 208 fixup descriptions.
+ *
+ * See README for more information.
+ *
+@@ -6936,6 +6936,51 @@
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
++ * Description of Solaris_Sys_Va_List fix
++ */
++tSCC zSolaris_Sys_Va_ListName[] =
++ "solaris_sys_va_list";
++
++/*
++ * File name selection pattern
++ */
++tSCC zSolaris_Sys_Va_ListList[] =
++ "sys/va_list.h\0";
++/*
++ * Machine/OS name selection pattern
++ */
++tSCC* apzSolaris_Sys_Va_ListMachs[] = {
++ "*-*-solaris2.[89]",
++ (const char*)NULL };
++
++/*
++ * content selection pattern - do fix if pattern found
++ */
++tSCC zSolaris_Sys_Va_ListSelect0[] =
++ "#if.*__STDC__.*\n\
++typedef void \\*__va_list;\n\
++#else\n\
++typedef char \\*__va_list;\n\
++#endif";
++
++#define SOLARIS_SYS_VA_LIST_TEST_CT 1
++static tTestDesc aSolaris_Sys_Va_ListTests[] = {
++ { TT_EGREP, zSolaris_Sys_Va_ListSelect0, (regex_t*)NULL }, };
++
++/*
++ * Fix Command Arguments for Solaris_Sys_Va_List
++ */
++static const char* apzSolaris_Sys_Va_ListPatch[] = {
++ "format",
++ "#ifdef __GNUC__\n\
++typedef __builtin_va_list __va_list;\n\
++#else\n\
++%0\n\
++#endif",
++ (char*)NULL };
++
++/* * * * * * * * * * * * * * * * * * * * * * * * * *
++ *
+ * Description of Statsswtch fix
+ */
+ tSCC zStatsswtchName[] =
+@@ -8433,9 +8478,9 @@
+ *
+ * List of all fixes
+ */
+-#define REGEX_COUNT 247
++#define REGEX_COUNT 248
+ #define MACH_LIST_SIZE_LIMIT 181
+-#define FIX_COUNT 207
++#define FIX_COUNT 208
+
+ /*
+ * Enumerate the fixes
+@@ -8611,6 +8656,7 @@
+ SOLARIS_INT_LIMITS_3_FIXIDX,
+ SOLARIS_INT_TYPES_FIXIDX,
+ SOLARIS_STDIO_TAG_FIXIDX,
++ SOLARIS_SYS_VA_LIST_FIXIDX,
+ STATSSWTCH_FIXIDX,
+ STDIO_STDARG_H_FIXIDX,
+ STDIO_VA_LIST_FIXIDX,
+@@ -9501,6 +9547,11 @@
+ SOLARIS_STDIO_TAG_TEST_CT, FD_MACH_ONLY,
+ aSolaris_Stdio_TagTests, apzSolaris_Stdio_TagPatch, 0 },
+
++ { zSolaris_Sys_Va_ListName, zSolaris_Sys_Va_ListList,
++ apzSolaris_Sys_Va_ListMachs,
++ SOLARIS_SYS_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
++ aSolaris_Sys_Va_ListTests, apzSolaris_Sys_Va_ListPatch, 0 },
++
+ { zStatsswtchName, zStatsswtchList,
+ apzStatsswtchMachs,
+ STATSSWTCH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+Index: fixincludes/inclhack.def
+===================================================================
+--- fixincludes/inclhack.def (.../tags/gcc_4_5_1_release) (wersja 166792)
++++ fixincludes/inclhack.def (.../branches/gcc-4_5-branch) (wersja 166792)
+@@ -3681,6 +3681,34 @@
+
+
+ /*
++ * On Solaris 8 and 9, __va_list needs to become a typedef for
++ * __builtin_va_list to make -Wmissing-format-attribute work.
++ */
++fix = {
++ hackname = solaris_sys_va_list;
++ files = sys/va_list.h;
++ mach = '*-*-solaris2.[89]';
++ select = "#if.*__STDC__.*\n"
++ "typedef void \\*__va_list;\n"
++ "#else\n"
++ "typedef char \\*__va_list;\n"
++ "#endif";
++
++ c_fix = format;
++ c_fix_arg = "#ifdef __GNUC__\n"
++ "typedef __builtin_va_list __va_list;\n"
++ "#else\n"
++ "%0\n"
++ "#endif";
++ test_text = "#if defined(__STDC__) && !defined(__ia64)\n"
++ "typedef void *__va_list;\n"
++ "#else\n"
++ "typedef char *__va_list;\n"
++ "#endif";
++};
++
++
++/*
+ * a missing semi-colon at the end of the statsswtch structure definition.
+ */
+ fix = {