]> git.pld-linux.org Git - packages/gcc.git/commitdiff
- rel 5; branch diff updated; python-pretty-printer-bool-vector.patch dropped (unnede... auto/th/gcc-4_5_1-5 auto/ti/gcc-4_5_1-5
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 16 Nov 2010 08:53:09 +0000 (08:53 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gcc-branch.diff -> 1.39
    gcc.spec -> 1.643

gcc-branch.diff
gcc.spec

index 82b7d6ca60378bc39e97a57438d2ee91534ae9ad..8ecd39538adaa08517f95262341cb0f6d40e7b14 100644 (file)
@@ -1,7 +1,7 @@
 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
@@ -22,8 +22,8 @@ Index: configure
    # 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"
        ;;
@@ -35,8 +35,8 @@ Index: libgcc/config.host
        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>
@@ -49,8 +49,8 @@ Index: libgcc/ChangeLog
        * 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}.
@@ -65,8 +65,8 @@ Index: gcc/doc/sourcebuild.texi
  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
  
@@ -80,8 +80,8 @@ Index: gcc/doc/extend.texi
  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},
@@ -92,10 +92,36 @@ Index: gcc/doc/invoke.texi
  
  @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)
  {
@@ -114,10 +140,102 @@ Index: gcc/tree-complex.c
  }
  
  
+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;
@@ -128,15 +246,15 @@ Index: gcc/optabs.c
        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);
@@ -155,10 +273,29 @@ Index: gcc/postreload.c
                  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.  */
@@ -172,8 +309,8 @@ Index: gcc/rtlanal.c
          || !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 @@
  
  
@@ -266,8 +403,8 @@ Index: gcc/configure
    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);
@@ -394,8 +531,8 @@ Index: gcc/builtins.c
  
 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),
@@ -417,10 +554,26 @@ Index: gcc/fold-const.c
          /* 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.
@@ -491,15 +644,247 @@ Index: gcc/reorg.c
        }
 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
@@ -599,13 +984,13 @@ Index: gcc/ChangeLog
 +
 +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>
 +
@@ -728,7 +1113,7 @@ Index: gcc/ChangeLog
 +      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.
@@ -895,9 +1280,9 @@ Index: gcc/ChangeLog
 +      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.
@@ -908,7 +1293,7 @@ Index: gcc/ChangeLog
 +      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.
@@ -917,7 +1302,7 @@ Index: gcc/ChangeLog
 +      (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
@@ -1214,7 +1599,7 @@ Index: gcc/ChangeLog
  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
@@ -1225,7 +1610,7 @@ Index: gcc/ChangeLog
  
  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>
@@ -1234,7 +1619,7 @@ Index: gcc/ChangeLog
        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>
  
@@ -1271,7 +1656,7 @@ Index: gcc/ChangeLog
  
  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>
  
@@ -1280,7 +1665,7 @@ Index: gcc/ChangeLog
        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.
  
@@ -1289,7 +1674,7 @@ Index: gcc/ChangeLog
  
        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.
  
@@ -1303,7 +1688,7 @@ Index: gcc/ChangeLog
  
        * config.gcc: Add lm32-*-rtems*.
        * config/lm32/rtems.h: New file.
-@@ -1984,8 +2695,8 @@
+@@ -1984,8 +2927,8 @@
  
        PR middle-end/43602
        Revert
@@ -1314,7 +1699,7 @@ Index: gcc/ChangeLog
  
        * 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.
  
@@ -1325,7 +1710,7 @@ Index: gcc/ChangeLog
  
        * 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>
@@ -1334,7 +1719,7 @@ Index: gcc/ChangeLog
  
        * 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.
  
@@ -1345,7 +1730,7 @@ Index: gcc/ChangeLog
  
        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.
  
@@ -1354,7 +1739,7 @@ Index: gcc/ChangeLog
  
        * 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.
  
@@ -1363,7 +1748,7 @@ Index: gcc/ChangeLog
  
        * 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.
  
@@ -1372,7 +1757,7 @@ Index: gcc/ChangeLog
  
        * 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.
  
@@ -1381,7 +1766,7 @@ Index: gcc/ChangeLog
  
        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.
  
@@ -1392,7 +1777,7 @@ Index: gcc/ChangeLog
  
        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>
@@ -1401,7 +1786,7 @@ Index: gcc/ChangeLog
  
        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.
  
@@ -1413,7 +1798,7 @@ Index: gcc/ChangeLog
 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)
@@ -1463,7 +1848,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr45034.c
 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);
@@ -1520,7 +1905,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr45070.c
 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 */
 +
@@ -1557,7 +1942,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr45695.c
 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
@@ -1661,14 +2046,33 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr40386.c
 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 */
 +
@@ -1701,7 +2105,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr44858.c
 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 */
 +
@@ -1739,7 +2143,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr45262.c
 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 */
 +
@@ -1761,7 +2165,7 @@ Index: gcc/testsuite/gcc.c-torture/compile/pr45728.c
 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;
@@ -1801,10 +2205,31 @@ Index: gcc/testsuite/gcc.c-torture/compile/pr45109.c
 +  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() {
@@ -1815,7 +2240,7 @@ Index: gcc/testsuite/gcc.c-torture/compile/pr45969-1.c
 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> */
@@ -1901,18 +2326,85 @@ Index: gcc/testsuite/gcc.c-torture/compile/20100915-1.c
 +}
 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;
@@ -1923,7 +2415,7 @@ Index: gcc/testsuite/gcc.target/i386/builtin-unreachable.c
 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 } } } */
@@ -1932,19 +2424,52 @@ Index: gcc/testsuite/gcc.target/i386/pr36502.c
 +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 } */
@@ -1952,10 +2477,64 @@ Index: gcc/testsuite/gcc.target/i386/pr45500.c
 +
 +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 */
@@ -1963,10 +2542,54 @@ Index: gcc/testsuite/gcc.target/i386/pr22076.c
  /* { 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 }; }
@@ -1976,8 +2599,8 @@ Index: gcc/testsuite/gcc.target/i386/abi-2.c
 +/* { 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 @@
  }
  
@@ -2003,7 +2626,7 @@ Index: gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
 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> */
@@ -2098,7 +2721,7 @@ Index: gcc/testsuite/gcc.target/sparc/mnofpu.c
 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
 +
@@ -2107,10 +2730,151 @@ Index: gcc/testsuite/gnat.dg/return2_pkg.ads
 +  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" }
@@ -2148,7 +2912,7 @@ Index: gcc/testsuite/gnat.dg/return2.adb
 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
 +
@@ -2168,10 +2932,33 @@ Index: gcc/testsuite/gnat.dg/return2.ads
 +  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;
@@ -2181,7 +2968,7 @@ Index: gcc/testsuite/gcc.dg/20050330-2.c
 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" } */
@@ -2243,7 +3030,7 @@ Index: gcc/testsuite/gcc.dg/nested-func-8.c
 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 } */
@@ -2290,8 +3077,8 @@ Index: gcc/testsuite/gcc.dg/gomp/atomic-14.c
 +}
 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);
@@ -2301,7 +3088,7 @@ Index: gcc/testsuite/gcc.dg/gomp/pr34610.c
 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 } */
@@ -2611,8 +3398,8 @@ Index: gcc/testsuite/gcc.dg/gomp/atomic-12.c
 +}
 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;
@@ -2622,7 +3409,7 @@ Index: gcc/testsuite/gcc.dg/gomp/pr27573.c
 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 } */
@@ -2635,8 +3422,8 @@ Index: gcc/testsuite/gcc.dg/gomp/atomic-13.c
 +#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;
@@ -2645,8 +3432,8 @@ Index: gcc/testsuite/gcc.dg/pr32773.c
 -/* { 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));
@@ -2655,8 +3442,8 @@ Index: gcc/testsuite/gcc.dg/20030107-1.c
 -/* { 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 ();
@@ -2665,8 +3452,8 @@ Index: gcc/testsuite/gcc.dg/20051201-1.c
 -/* { 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> */
@@ -2677,8 +3464,8 @@ Index: gcc/testsuite/gcc.dg/debug/dwarf2/aranges-fnsec-1.c
  /* { 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 ();
@@ -2687,18 +3474,48 @@ Index: gcc/testsuite/gcc.dg/20030702-1.c
 -/* { 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" } */
@@ -2714,8 +3531,8 @@ Index: gcc/testsuite/gcc.dg/profile-dir-1.c
  /* { 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;
    }
@@ -2725,7 +3542,7 @@ Index: gcc/testsuite/gcc.dg/pr24225.c
 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 } */
@@ -2739,8 +3556,8 @@ Index: gcc/testsuite/gcc.dg/pr45079.c
 +/* { 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 @@
  }
  
@@ -2749,8 +3566,8 @@ Index: gcc/testsuite/gcc.dg/graphite/interchange-0.c
 +/* { 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.  */
  
@@ -2759,10 +3576,62 @@ Index: gcc/testsuite/gcc.dg/pragma-init-fini.c
  
  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 } */
@@ -2773,18 +3642,34 @@ Index: gcc/testsuite/gcc.dg/pr43058.c
  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 } */
  
@@ -2798,8 +3683,8 @@ Index: gcc/testsuite/gcc.dg/lto/20091216-1_0.c
  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 } */
@@ -2808,8 +3693,8 @@ Index: gcc/testsuite/gcc.dg/lto/20090313_0.c
    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" } */
@@ -2826,7 +3711,7 @@ Index: gcc/testsuite/gcc.dg/profile-dir-2.c
 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 } */
 +
@@ -2858,7 +3743,7 @@ Index: gcc/testsuite/gcc.dg/torture/pr45982.c
 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*-*-* } } } } */
@@ -2879,8 +3764,8 @@ Index: gcc/testsuite/gcc.dg/torture/pr45678-1.c
 +}
 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;
  }
@@ -2891,7 +3776,7 @@ Index: gcc/testsuite/gcc.dg/torture/pr39074-2.c
 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*-*-* } } } } */
@@ -2913,7 +3798,7 @@ Index: gcc/testsuite/gcc.dg/torture/pr45678-2.c
 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" } */
@@ -2933,7 +3818,7 @@ Index: gcc/testsuite/gcc.dg/torture/pr45704.c
 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 } */
 +
@@ -2965,8 +3850,8 @@ Index: gcc/testsuite/gcc.dg/torture/pr45623.c
 +}
 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 } } } */
@@ -2978,7 +3863,7 @@ Index: gcc/testsuite/gcc.dg/torture/stackalign/alloca-4.c
 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 } */
 +
@@ -2997,8 +3882,8 @@ Index: gcc/testsuite/gcc.dg/torture/pr45869.c
 +}
 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)
  {
@@ -3024,8 +3909,8 @@ Index: gcc/testsuite/gcc.dg/tree-ssa/pr24287.c
  /* { 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;
  };
@@ -3046,8 +3931,8 @@ Index: gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c
  /* { 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" } */
@@ -3058,7 +3943,7 @@ Index: gcc/testsuite/gcc.dg/tree-ssa/sra-10.c
 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 } */
@@ -3071,8 +3956,8 @@ Index: gcc/testsuite/gcc.dg/pr45567.c
 +}
 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.* } } */
@@ -3084,7 +3969,7 @@ Index: gcc/testsuite/gcc.dg/pragma-init-fini-2.c
 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 } */
@@ -3129,8 +4014,8 @@ Index: gcc/testsuite/gcc.dg/pr45055.c
 +}
 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);
@@ -3140,7 +4025,7 @@ Index: gcc/testsuite/gcc.dg/20050325-1.c
 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 } */
@@ -3184,10 +4069,29 @@ Index: gcc/testsuite/gcc.dg/pr45259.c
 +      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" } */
@@ -3204,7 +4108,7 @@ Index: gcc/testsuite/gcc.dg/profile-dir-3.c
 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 } */
@@ -3226,10 +4130,101 @@ Index: gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
 +}
 +
 +/* { 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 } */
 +
@@ -3340,10 +4335,33 @@ Index: gcc/testsuite/gcc.dg/vect/pr45752.c
 +/* { 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=*" } { "" } } */
@@ -3352,8 +4370,8 @@ Index: gcc/testsuite/gcc.dg/mtune.c
  /* { 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;
@@ -3362,8 +4380,8 @@ Index: gcc/testsuite/gcc.dg/20050309-1.c
 -/* { 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
@@ -3372,9 +4390,180 @@ Index: gcc/testsuite/ada/acats/run_acats
 +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
@@ -3423,7 +4612,8 @@ Index: gcc/testsuite/ChangeLog
 +      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.
 +
@@ -3607,7 +4797,7 @@ Index: gcc/testsuite/ChangeLog
 +
 +      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
@@ -3657,20 +4847,20 @@ Index: gcc/testsuite/ChangeLog
 +
 +      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
@@ -3739,8 +4929,8 @@ Index: gcc/testsuite/ChangeLog
 +
 +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>
 +
@@ -3862,7 +5052,7 @@ Index: gcc/testsuite/ChangeLog
  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>
  
@@ -3881,7 +5071,7 @@ Index: gcc/testsuite/ChangeLog
  
  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.
@@ -3892,8 +5082,8 @@ Index: gcc/testsuite/ChangeLog
        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 }
@@ -3904,7 +5094,7 @@ Index: gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
 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-*-* } }
@@ -3932,7 +5122,7 @@ Index: gcc/testsuite/g++.dg/other/i386-8.C
 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" } */
@@ -3957,7 +5147,7 @@ Index: gcc/testsuite/g++.dg/tree-ssa/pr44914.C
 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" }
@@ -3973,7 +5163,7 @@ Index: gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C
 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 }
@@ -3991,10 +5181,35 @@ Index: gcc/testsuite/g++.dg/debug/pr45660.C
 +  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 } */
 +
@@ -4011,7 +5226,7 @@ Index: gcc/testsuite/g++.dg/pr45112.C
 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" }
@@ -4266,10 +5481,33 @@ Index: gcc/testsuite/g++.dg/opt/pr44919.C
 +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 }
@@ -4286,10 +5524,65 @@ Index: gcc/testsuite/g++.dg/tree-prof/partition2.C
 +  {
 +  }
 +}
+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" } */
@@ -4333,7 +5626,7 @@ Index: gcc/testsuite/g++.dg/pr44328.C
 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
 +
@@ -4342,8 +5635,8 @@ Index: gcc/testsuite/g++.dg/parse/defarg15.C
 +};
 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> {};
@@ -4959,8 +6252,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv6p.C
  
 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> {};
@@ -5082,8 +6375,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv1p.C
  
 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> {};
@@ -5108,8 +6401,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/cast.C
  
 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> {};
@@ -5311,8 +6604,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv7p.C
  
 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> {};
@@ -5792,8 +7085,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv2p.C
  
 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> {};
@@ -5842,8 +7135,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv8p.C
  
 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> {};
@@ -6847,8 +8140,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv3p.C
  
 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> {};
@@ -8202,8 +9495,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv4p.C
  
 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> {};
@@ -8226,8 +9519,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/iop.C
  }
 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> {};
@@ -9379,8 +10672,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv5p.C
  
 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> {};
@@ -9403,8 +10696,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/named_refs.C
  
 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> {};
@@ -9428,7 +10721,7 @@ Index: gcc/testsuite/g++.dg/cpp0x/unnamed_refs.C
 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" }
@@ -9456,7 +10749,7 @@ Index: gcc/testsuite/g++.dg/eh/pr45569.C
 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 } */
@@ -9767,7 +11060,7 @@ Index: gcc/testsuite/g++.dg/gomp/atomic-11.C
 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 } */
@@ -9781,7 +11074,7 @@ Index: gcc/testsuite/g++.dg/gomp/atomic-12.C
 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 } */
@@ -9829,7 +11122,7 @@ Index: gcc/testsuite/g++.dg/gomp/atomic-13.C
 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 }
@@ -9853,7 +11146,7 @@ Index: gcc/testsuite/g++.dg/gomp/atomic-14.C
 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
 +
@@ -9877,7 +11170,7 @@ Index: gcc/testsuite/g++.dg/init/value8.C
 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 }
 +
@@ -9920,7 +11213,7 @@ Index: gcc/testsuite/g++.dg/torture/pr45393.C
 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 }
@@ -9953,7 +11246,7 @@ Index: gcc/testsuite/g++.dg/torture/pr45843.C
 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 }
 +
@@ -9978,7 +11271,7 @@ Index: gcc/testsuite/g++.dg/torture/pr45709-2.C
 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 }
 +
@@ -10002,7 +11295,7 @@ Index: gcc/testsuite/g++.dg/torture/pr45709.C
 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 }
 +
@@ -10037,7 +11330,7 @@ Index: gcc/testsuite/g++.dg/torture/pr45854.C
 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 }
@@ -10079,7 +11372,7 @@ Index: gcc/testsuite/g++.dg/template/typedef34.C
 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 }
@@ -10124,8 +11417,8 @@ Index: gcc/testsuite/g++.dg/template/typedef35.C
 +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"
@@ -10139,8 +11432,8 @@ Index: gcc/testsuite/lib/profopt.exp
            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"
@@ -10154,8 +11447,8 @@ Index: gcc/testsuite/lib/plugin-support.exp
      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.
@@ -10185,8 +11478,8 @@ Index: gcc/testsuite/lib/gcc-dg.exp
        # -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
@@ -10199,8 +11492,8 @@ Index: gcc/testsuite/lib/prune.exp
      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 @@
      }]
  }
@@ -10254,7 +11547,7 @@ Index: gcc/testsuite/lib/target-supports.exp
 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 }
 +! 
@@ -10313,8 +11606,8 @@ Index: gcc/testsuite/gfortran.dg/aliasing_dummy_5.f90
 +! { 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
@@ -10324,7 +11617,7 @@ Index: gcc/testsuite/gfortran.dg/gomp/pr27573.f90
 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 }
@@ -10338,8 +11631,8 @@ Index: gcc/testsuite/gfortran.dg/gomp/pr45595.f90
 +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
@@ -10349,10 +11642,23 @@ Index: gcc/testsuite/gfortran.dg/gomp/pr44036-1.f90
  !$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" }
@@ -10365,10 +11671,53 @@ Index: gcc/testsuite/gfortran.dg/intrinsic_6.f90
 +  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.
@@ -10397,10 +11746,68 @@ Index: gcc/testsuite/gfortran.dg/namelist_64.f90
 +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" }
@@ -10432,10 +11839,441 @@ Index: gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90
 +    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 }
 +!
@@ -10468,7 +12306,7 @@ Index: gcc/testsuite/gfortran.dg/namelist_63.f90
 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}
 +!
@@ -10509,10 +12347,23 @@ Index: gcc/testsuite/gfortran.dg/initialization_27.f90
 +   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" }
@@ -10539,7 +12390,7 @@ Index: gcc/testsuite/gfortran.dg/namelist_65.f90
 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 }
 +!
@@ -10558,10 +12409,41 @@ Index: gcc/testsuite/gfortran.dg/allocate_derived_3.f90
 + 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)
@@ -10573,8 +12455,8 @@ Index: gcc/cp/typeck.c
         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);
@@ -10604,8 +12486,8 @@ Index: gcc/cp/init.c
            {
 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;
@@ -10619,9 +12501,28 @@ Index: gcc/cp/decl.c
       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;
@@ -10635,9 +12536,29 @@ Index: gcc/cp/tree.c
      }
 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
@@ -10671,10 +12592,31 @@ Index: gcc/cp/ChangeLog
  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.  */
@@ -10730,8 +12672,8 @@ Index: gcc/cp/parser.c
        {
 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);
  
@@ -10751,8 +12693,8 @@ Index: gcc/haifa-sched.c
  
 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.   */
@@ -10764,8 +12706,8 @@ Index: gcc/tree-ssa-loop-ivopts.c
    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.  */
@@ -10780,8 +12722,8 @@ Index: gcc/caller-save.c
              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);
      }
@@ -10796,10 +12738,19 @@ Index: gcc/ipa-pure-const.c
    /* 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;
  
@@ -10864,8 +12815,8 @@ Index: gcc/cse.c
      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;
@@ -10892,8 +12843,8 @@ Index: gcc/ira-color.c
       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.  */
@@ -10980,9 +12931,19 @@ Index: gcc/tree-ssa-math-opts.c
  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;
@@ -11025,7 +12986,7 @@ Index: gcc/sel-sched.c
    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);
  
@@ -11079,8 +13040,8 @@ Index: gcc/sel-sched.c
                && !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
@@ -11112,8 +13073,8 @@ Index: gcc/ifcvt.c
         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);
@@ -11198,8 +13159,8 @@ Index: gcc/dwarf2out.c
  
 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)
@@ -11252,8 +13213,8 @@ Index: gcc/expr.c
                   && 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);
@@ -11262,10 +13223,187 @@ Index: gcc/dwarf2out.h
  
  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>
 +
@@ -11293,8 +13431,8 @@ Index: gcc/ada/ChangeLog
        * 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)
@@ -11387,8 +13525,8 @@ Index: gcc/ada/gcc-interface/utils.c
  /* 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,
@@ -11401,8 +13539,8 @@ Index: gcc/ada/gcc-interface/decl.c
                                          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);
  
@@ -11570,8 +13708,8 @@ Index: gcc/ada/gcc-interface/trans.c
      ((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);
@@ -11581,10 +13719,24 @@ Index: gcc/sel-sched-ir.c
        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;
@@ -11615,8 +13767,8 @@ Index: gcc/tree-eh.c
    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;
        }
@@ -11629,8 +13781,8 @@ Index: gcc/fortran/openmp.c
                     &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;
@@ -11642,8 +13794,8 @@ Index: gcc/fortran/intrinsic.c
  
 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;
@@ -11745,8 +13897,8 @@ Index: gcc/fortran/symbol.c
  
 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.
  
@@ -11757,10 +13909,22 @@ Index: gcc/fortran/gfortran.texi
  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"
@@ -11955,8 +14119,8 @@ Index: gcc/fortran/cpp.c
  }
 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);
@@ -11972,8 +14136,8 @@ Index: gcc/fortran/cpp.h
  
 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;
  
@@ -11993,8 +14157,8 @@ Index: gcc/fortran/gfortran.h
  
 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'
@@ -12040,9 +14204,31 @@ Index: gcc/fortran/lang.opt
  ; 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
@@ -12174,8 +14360,8 @@ Index: gcc/fortran/ChangeLog
        * 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
@@ -12205,8 +14391,8 @@ Index: gcc/fortran/invoke.texi
  @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 */
@@ -12227,8 +14413,8 @@ Index: gcc/fortran/module.c
    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;
  }
@@ -12283,8 +14469,8 @@ Index: gcc/fortran/trans.c
        }
 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 @@
  
  
@@ -12357,10 +14543,21 @@ Index: gcc/fortran/scanner.c
  }
  
  
+@@ -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;
        }
@@ -12400,8 +14597,8 @@ Index: gcc/fortran/gfortranspec.c
          /* 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}"
  
@@ -12413,8 +14610,8 @@ Index: gcc/fortran/lang-specs.h
                             %{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;
        }
@@ -12551,9 +14748,37 @@ Index: gcc/fortran/resolve.c
        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)
@@ -12569,9 +14794,52 @@ Index: gcc/fortran/trans-decl.c
        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,
@@ -12580,21 +14848,16 @@ Index: gcc/fortran/match.c
     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",
@@ -12603,15 +14866,26 @@ Index: gcc/fortran/match.c
 +      }
 +      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;
      }
  
@@ -12637,7 +14911,53 @@ Index: gcc/fortran/match.c
    /* 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
@@ -12668,8 +14988,8 @@ Index: gcc/fortran/match.c
  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;
  
@@ -12830,8 +15150,8 @@ Index: gcc/fortran/parse.c
      }
 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;
@@ -12854,8 +15174,8 @@ Index: gcc/fortran/dependency.c
          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
@@ -12948,8 +15268,8 @@ Index: gcc/fortran/intrinsic.texi
  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;
  
@@ -13010,8 +15330,8 @@ Index: gcc/fortran/simplify.c
    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)
@@ -13090,8 +15410,8 @@ Index: gcc/ira-lives.c
  
 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;
@@ -13105,8 +15425,8 @@ Index: gcc/c-pretty-print.c
        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)
  
@@ -13191,15 +15511,15 @@ Index: gcc/configure.ac
      [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
@@ -13216,10 +15536,91 @@ Index: gcc/function.c
                }
              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;
@@ -13251,8 +15652,8 @@ Index: gcc/c-typeck.c
          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 @@
              }
          }
@@ -13284,7 +15685,21 @@ Index: gcc/gimplify.c
                *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:
@@ -13297,10 +15712,22 @@ Index: gcc/gimplify.c
          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])
        {
@@ -13318,8 +15745,8 @@ Index: gcc/expmed.c
  
 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;
  }
@@ -13361,8 +15788,8 @@ Index: gcc/emit-rtl.c
     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)
  {
@@ -13386,10 +15813,36 @@ Index: gcc/cfgexpand.c
  
        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);
@@ -13427,8 +15880,8 @@ Index: gcc/tree-ssa-live.c
         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;
@@ -13509,8 +15962,8 @@ Index: gcc/tree-sra.c
                            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
@@ -13577,8 +16030,8 @@ Index: gcc/lto/lto-elf.c
    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>
 +
@@ -13603,8 +16056,8 @@ Index: gcc/lto/ChangeLog
        * 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))
@@ -13616,8 +16069,8 @@ Index: gcc/ipa-prop.c
    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>
 +
@@ -13633,7 +16086,7 @@ Index: gcc/po/ChangeLog
 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.
@@ -51674,15 +54127,15 @@ Index: gcc/po/vi.po
 +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
@@ -51690,8 +54143,8 @@ Index: gcc/tree-vect-patterns.c
    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
@@ -51719,8 +54172,8 @@ Index: gcc/ira.c
    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)
@@ -51778,8 +54231,8 @@ Index: gcc/tree-nested.c
  
 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);
@@ -51816,8 +54269,8 @@ Index: gcc/sched-deps.c
      }
 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;
@@ -51829,10 +54282,526 @@ Index: gcc/tree-ssa-loop-prefetch.c
    /* 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);
@@ -51844,8 +54813,8 @@ Index: gcc/rtl.h
  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,
@@ -51892,10 +54861,79 @@ Index: gcc/tree-inline.c
  }
  
  
+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)))
@@ -51979,8 +55017,8 @@ Index: gcc/combine.c
     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))
@@ -52039,10 +55077,33 @@ Index: gcc/bb-reorder.c
  
        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);
@@ -52053,8 +55114,8 @@ Index: gcc/tree-flow.h
  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
        ;;
@@ -52073,10 +55134,116 @@ Index: gcc/config.gcc
        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)
@@ -52094,8 +55261,8 @@ Index: gcc/reginfo.c
  
 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) \
@@ -52107,8 +55274,8 @@ Index: gcc/Makefile.in
      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);
@@ -52387,8 +55554,8 @@ Index: gcc/tree-ssa-structalias.c
              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"
@@ -52413,8 +55580,8 @@ Index: gcc/tree-switch-conversion.c
    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
@@ -52425,8 +55592,8 @@ Index: gcc/tree-cfg.c
            || (!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;
@@ -52472,8 +55639,8 @@ Index: gcc/c-parser.c
        {
 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;
@@ -52487,8 +55654,8 @@ Index: gcc/config/alpha/alpha.c
                     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
@@ -52571,8 +55738,8 @@ Index: gcc/config/s390/s390.c
  
 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"
@@ -52662,8 +55829,8 @@ Index: gcc/config/s390/s390.md
  ; 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
@@ -52678,8 +55845,8 @@ Index: gcc/config/s390/t-linux64
 +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;
  
@@ -52691,8 +55858,8 @@ Index: gcc/config/spu/spu.c
    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,*:%*} \
@@ -52705,8 +55872,8 @@ Index: gcc/config/sparc/linux.h
  #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/>.
@@ -52727,8 +55894,8 @@ Index: gcc/config/sparc/t-linux64
  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)
@@ -52750,8 +55917,8 @@ Index: gcc/config/sparc/sparc.c
      {
 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,*:%*} \
@@ -52764,8 +55931,8 @@ Index: gcc/config/sparc/linux64.h
  
 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
@@ -52779,10 +55946,120 @@ Index: gcc/config/sparc/constraints.md
   "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 @@
    }
  )
@@ -52799,8 +56076,8 @@ Index: gcc/config/rx/predicates.md
  ;; 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 ])
@@ -52956,8 +56233,8 @@ Index: gcc/config/rx/rx.md
     ]
 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)   \
@@ -52991,9 +56268,37 @@ Index: gcc/config/i386/cygming.h
  
 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>"))]
@@ -53002,7 +56307,7 @@ Index: gcc/config/i386/i386.md
    "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)
@@ -53011,11 +56316,248 @@ Index: gcc/config/i386/i386.md
    "<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
@@ -53024,7 +56566,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53058,7 +56600,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53088,7 +56630,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53116,7 +56658,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53146,7 +56688,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53174,7 +56716,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53202,7 +56744,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53236,7 +56778,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53266,7 +56808,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53294,7 +56836,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53324,7 +56866,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53352,7 +56894,7 @@ Index: gcc/config/i386/sse.md
            (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")])
  
@@ -53376,8 +56918,8 @@ Index: gcc/config/i386/sse.md
  (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.  */
@@ -53400,8 +56942,8 @@ Index: gcc/config/i386/darwin.h
     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
@@ -53413,8 +56955,8 @@ Index: gcc/config/i386/mingw32.h
  
 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);
@@ -53535,8 +57077,8 @@ Index: gcc/config/i386/i386.c
    /* 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" "")]))]
@@ -53548,8 +57090,8 @@ Index: gcc/config/ia64/ia64.md
    [(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
  
@@ -53557,10 +57099,158 @@ Index: gcc/config/rs6000/x-aix
 -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 {                                                              \
@@ -53693,8 +57383,8 @@ Index: gcc/config/arm/linux-atomic.c
    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)
                {
@@ -53707,8 +57397,8 @@ Index: gcc/config/arm/arm.c
                  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))
@@ -53720,8 +57410,8 @@ Index: gcc/config/arm/arm.md
     (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)
@@ -53809,8 +57499,8 @@ Index: gcc/config/pa/pa.c
  
 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)
  
@@ -53825,8 +57515,8 @@ Index: gcc/config/pa/pa.h
  #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
@@ -53895,9 +57585,68 @@ Index: gcc/config/mips/mips.c
  \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,
@@ -53922,7 +57671,7 @@ Index: gcc/tree-vect-slp.c
  
    /* 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)
      {
@@ -53931,7 +57680,7 @@ Index: gcc/tree-vect-slp.c
          {
            /* 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.  */
@@ -53963,7 +57712,7 @@ Index: gcc/tree-vect-slp.c
      }
  
    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;
@@ -53973,7 +57722,7 @@ Index: gcc/tree-vect-slp.c
  
    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,
@@ -53986,8 +57735,8 @@ Index: gcc/tree-vect-slp.c
                    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.  */
@@ -54000,10 +57749,25 @@ Index: gcc/cfgrtl.c
  #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.  */
@@ -54022,8 +57786,8 @@ Index: gcc/convert.c
                                         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 *);
@@ -54231,9 +57995,95 @@ Index: gcc/reload1.c
             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']
@@ -54246,8 +58096,8 @@ Index: libstdc++-v3/python/libstdcxx/v6/printers.py
          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
@@ -54277,8 +58127,8 @@ Index: libstdc++-v3/configure
  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:
  
@@ -54298,8 +58148,8 @@ Index: libstdc++-v3/src/Makefile.in
          < ../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
  
@@ -54319,8 +58169,8 @@ Index: libstdc++-v3/src/Makefile.am
          < ../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>
@@ -54504,8 +58354,8 @@ Index: libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  </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
@@ -54740,8 +58590,8 @@ Index: libstdc++-v3/doc/Makefile.in
  # 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
  #
@@ -54962,8 +58812,8 @@ Index: libstdc++-v3/doc/Makefile.am
 +      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
@@ -55877,8 +59727,8 @@ Index: libstdc++-v3/doc/doxygen/user.cfg.in
  # 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.
@@ -55916,8 +59766,8 @@ Index: libstdc++-v3/doc/doxygen/doxygroups.cc
  
 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) { }
  
@@ -55959,8 +59809,8 @@ Index: libstdc++-v3/include/std/atomic
                                        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)
          {
@@ -55999,8 +59849,8 @@ Index: libstdc++-v3/include/std/functional
      };
 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 @@
  
    /**
@@ -56026,8 +59876,8 @@ Index: libstdc++-v3/include/bits/stl_iterator_base_types.h
     *
 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)
  
@@ -56039,8 +59889,8 @@ Index: libstdc++-v3/include/bits/stl_heap.h
  
 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.
         */
@@ -56069,8 +59919,8 @@ Index: libstdc++-v3/include/bits/forward_list.h
    /**
 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); }
@@ -56082,8 +59932,8 @@ Index: libstdc++-v3/include/bits/move.h
  
 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.
@@ -56157,8 +60007,8 @@ Index: libstdc++-v3/include/bits/stl_iterator.h
        {
 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)
      {
@@ -56223,8 +60073,8 @@ Index: libstdc++-v3/include/bits/forward_list.tcc
    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 @@
     */
  
@@ -56263,8 +60113,8 @@ Index: libstdc++-v3/include/bits/algorithmfwd.h
     * 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);
  
@@ -56277,8 +60127,8 @@ Index: libstdc++-v3/include/bits/random.tcc
        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 @@
     */
  
@@ -56317,9 +60167,24 @@ Index: libstdc++-v3/include/bits/random.h
     */
 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<>::
@@ -56461,8 +60326,8 @@ Index: libstdc++-v3/ChangeLog
        * 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
@@ -56485,8 +60350,8 @@ Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
  #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
  
@@ -56512,7 +60377,7 @@ Index: libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.
 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 "" }
@@ -56557,8 +60422,8 @@ Index: libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/o
 +}
 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
@@ -56574,7 +60439,7 @@ Index: libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
 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 }
@@ -56609,8 +60474,8 @@ Index: libstdc++-v3/testsuite/ext/rope/44963.cc
 +}
 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.
@@ -56644,8 +60509,8 @@ Index: libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
    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>
  
@@ -56671,8 +60536,8 @@ Index: libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
  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>
  
@@ -56700,8 +60565,8 @@ Index: libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
  #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 @@
  }
  
@@ -56739,8 +60604,8 @@ Index: libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
  // { 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 @@
  }
  
@@ -56778,8 +60643,8 @@ Index: libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
  // { 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" }
@@ -56790,8 +60655,8 @@ Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assi
  // 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" }
@@ -56802,8 +60667,8 @@ Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/inse
  // 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" }
@@ -56814,8 +60679,8 @@ Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/cons
  // 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" }
@@ -56827,7 +60692,7 @@ Index: libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/cons
 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 }
@@ -56876,8 +60741,8 @@ Index: libstdc++-v3/testsuite/20_util/bind/45924.cc
 +
 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
@@ -56898,8 +60763,8 @@ Index: configure.ac
    # 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.
@@ -56911,8 +60776,8 @@ Index: intl/configure
          # 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>
 +
@@ -56922,11 +60787,64 @@ Index: intl/ChangeLog
  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:
@@ -56952,10 +60870,97 @@ Index: libgfortran/ChangeLog
  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)
      {
@@ -56977,9 +60982,37 @@ Index: libgfortran/config/fpu-387.h
  
 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;
        }
  
@@ -56992,10 +61025,24 @@ Index: libgfortran/io/list_read.c
        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
@@ -57019,8 +61066,8 @@ Index: libgfortran/io/write.c
        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>
 +
@@ -57043,8 +61090,8 @@ Index: ChangeLog
        * 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;
@@ -57065,8 +61112,8 @@ Index: libffi/src/x86/ffi64.c
  }
 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>
 +
@@ -57081,7 +61128,7 @@ Index: libffi/ChangeLog
 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.
@@ -57139,8 +61186,8 @@ Index: libffi/testsuite/libffi.call/many2.c
 +}
 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>
 +
@@ -57151,8 +61198,8 @@ Index: config/ChangeLog
        * 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.
@@ -57164,8 +61211,8 @@ Index: config/po.m4
          # 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");  
@@ -57177,8 +61224,8 @@ Index: libjava/classpath/javax/print/attribute/standard/JobStateReasons.java
    /**
 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>
 +
@@ -57205,8 +61252,8 @@ Index: libjava/classpath/ChangeLog
        * 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);
@@ -57231,8 +61278,8 @@ Index: libjava/classpath/gnu/javax/print/ipp/IppRequest.java
            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
                }
@@ -57254,8 +61301,8 @@ Index: libjava/classpath/gnu/javax/print/ipp/IppPrintService.java
      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:
@@ -57325,8 +61372,8 @@ Nie można wyświetlić: plik binarny.
 svn:mime-type = application/octet-stream
 Index: libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java
 ===================================================================
---- libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java   (.../tags/gcc_4_5_1_release)    (wersja 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)
    {
@@ -57343,8 +61390,8 @@ Index: libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java
      // 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>
 +
@@ -57364,8 +61411,8 @@ Index: libjava/ChangeLog
        * 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; \
@@ -57426,8 +61473,8 @@ Index: libjava/testsuite/Makefile.in
  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 @@
  }
  
@@ -57451,8 +61498,8 @@ Index: libjava/testsuite/libjava.jni/jni.exp
    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
@@ -57485,3 +61532,198 @@ Index: libjava/testsuite/Makefile.am
  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 = {
index 5b88e0a28732e0c61959abff95c75c5168efbb63..00c662464920bbd6f28c778050b1135e3dd01dde 100644 (file)
--- a/gcc.spec
+++ b/gcc.spec
@@ -72,7 +72,7 @@ Summary(pl.UTF-8):    Kolekcja kompilatorów GNU: kompilator C i pliki współdziel
 Summary(pt_BR.UTF-8):  Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
 Name:          gcc
 Version:       %{major_ver}.%{minor_ver}
-Release:       4
+Release:       5
 Epoch:         6
 License:       GPL v3+
 Group:         Development/Languages
@@ -95,7 +95,6 @@ Patch9:               %{name}-hash-style-gnu.patch
 Patch10:       %{name}-moresparcs.patch
 Patch11:       %{name}-build-id.patch
 Patch12:       %{name}-plugin-decl-hook.patch
-Patch13:       %{name}-python-pretty-printer-bool-vector.patch
 URL:           http://gcc.gnu.org/
 BuildRequires: autoconf
 %{?with_tests:BuildRequires:   autogen}
@@ -1243,7 +1242,6 @@ Statyczna biblioteki Obiektowego C - wersja 32-bitowa.
 %patch10 -p0
 %patch11 -p0
 %patch12 -p0
-%patch13 -p0
 
 mv ChangeLog ChangeLog.general
 
This page took 0.646608 seconds and 4 git commands to generate.