]> git.pld-linux.org Git - packages/crossmingw32-gcc.git/commitdiff
- moving branch.diff to distfiles
authorJakub Bogusz <qboosh@pld-linux.org>
Mon, 1 Apr 2013 06:56:24 +0000 (08:56 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Mon, 1 Apr 2013 06:56:24 +0000 (08:56 +0200)
gcc-branch.diff [deleted file]

diff --git a/gcc-branch.diff b/gcc-branch.diff
deleted file mode 100644 (file)
index 86d37ee..0000000
+++ /dev/null
@@ -1,6891 +0,0 @@
-Index: gcc/doc/invoke.texi
-===================================================================
---- gcc/doc/invoke.texi        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/doc/invoke.texi        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -853,8 +853,8 @@
- -m5-compact  -m5-compact-nofpu @gol
- -mb  -ml  -mdalign  -mrelax @gol
- -mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol
---mieee  -mbitops  -misize  -minline-ic_invalidate -mpadstruct  -mspace @gol
---mprefergot  -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
-+-mieee -mno-ieee -mbitops  -misize  -minline-ic_invalidate -mpadstruct @gol
-+-mspace -mprefergot  -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
- -mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol
- -madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
- -maccumulate-outgoing-args -minvalid-symbols}
-@@ -16938,13 +16938,15 @@
- @option{-mhitachi} is given.
- @item -mieee
-+@item -mno-ieee
- @opindex mieee
--Increase IEEE-compliance of floating-point code.
--At the moment, this is equivalent to @option{-fno-finite-math-only}.
--When generating 16 bit SH opcodes, getting IEEE-conforming results for
--comparisons of NANs / infinities incurs extra overhead in every
--floating point comparison, therefore the default is set to
--@option{-ffinite-math-only}.
-+@opindex mnoieee
-+Control the IEEE compliance of floating-point comparisons, which affects the
-+handling of cases where the result of a comparison is unordered.  By default
-+@option{-mieee} is implicitly enabled.  If @option{-ffinite-math-only} is
-+enabled @option{-mno-ieee} is implicitly set, which results in faster
-+floating-point greater-equal and less-equal comparisons.  The implcit settings
-+can be overridden by specifying either @option{-mieee} or @option{-mno-ieee}.
- @item -minline-ic_invalidate
- @opindex minline-ic_invalidate
-Index: gcc/doc/install.texi
-===================================================================
---- gcc/doc/install.texi       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/doc/install.texi       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1208,7 +1208,7 @@
- @item --with-llsc
- On MIPS targets, make @option{-mllsc} the default when no
--@option{-mno-lsc} option is passed.  This is the default for
-+@option{-mno-llsc} option is passed.  This is the default for
- Linux-based targets, as the kernel will emulate them if the ISA does
- not provide them.
-Index: gcc/targhooks.c
-===================================================================
---- gcc/targhooks.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/targhooks.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -529,6 +529,7 @@
-       case scalar_to_vec:
-       case cond_branch_not_taken:
-       case vec_perm:
-+      case vec_promote_demote:
-         return 1;
-       case unaligned_load:
-Index: gcc/tree-pretty-print.c
-===================================================================
---- gcc/tree-pretty-print.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/tree-pretty-print.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -805,6 +805,8 @@
-              infer them and MEM_ATTR caching will share MEM_REFs
-              with differently-typed op0s.  */
-           && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
-+          /* Released SSA_NAMES have no TREE_TYPE.  */
-+          && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
-           /* Same pointer types, but ignoring POINTER_TYPE vs.
-              REFERENCE_TYPE.  */
-           && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
-@@ -1171,6 +1173,8 @@
-                    can't infer them and MEM_ATTR caching will share
-                    MEM_REFs with differently-typed op0s.  */
-                 && TREE_CODE (TREE_OPERAND (op0, 0)) != INTEGER_CST
-+                /* Released SSA_NAMES have no TREE_TYPE.  */
-+                && TREE_TYPE (TREE_OPERAND (op0, 0)) != NULL_TREE
-                 /* Same pointer types, but ignoring POINTER_TYPE vs.
-                    REFERENCE_TYPE.  */
-                 && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))
-Index: gcc/cgraph.c
-===================================================================
---- gcc/cgraph.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cgraph.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1700,19 +1700,27 @@
-   free_nodes = node;
- }
--/* Remove the node from cgraph.  */
-+/* Remove the node from cgraph and all inline clones inlined into it.
-+   Skip however removal of FORBIDDEN_NODE and return true if it needs to be
-+   removed.  This allows to call the function from outer loop walking clone
-+   tree.  */
--void
--cgraph_remove_node_and_inline_clones (struct cgraph_node *node)
-+bool
-+cgraph_remove_node_and_inline_clones (struct cgraph_node *node, struct cgraph_node *forbidden_node)
- {
-   struct cgraph_edge *e, *next;
-+  bool found = false;
-+
-+  if (node == forbidden_node)
-+    return true;
-   for (e = node->callees; e; e = next)
-     {
-       next = e->next_callee;
-       if (!e->inline_failed)
--        cgraph_remove_node_and_inline_clones (e->callee);
-+        found |= cgraph_remove_node_and_inline_clones (e->callee, forbidden_node);
-     }
-   cgraph_remove_node (node);
-+  return found;
- }
- /* Notify finalize_compilation_unit that given node is reachable.  */
-Index: gcc/cgraph.h
-===================================================================
---- gcc/cgraph.h       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cgraph.h       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -547,7 +547,7 @@
- void cgraph_insert_node_to_hashtable (struct cgraph_node *node);
- void cgraph_remove_edge (struct cgraph_edge *);
- void cgraph_remove_node (struct cgraph_node *);
--void cgraph_remove_node_and_inline_clones (struct cgraph_node *);
-+bool cgraph_remove_node_and_inline_clones (struct cgraph_node *, struct cgraph_node *);
- void cgraph_release_function_body (struct cgraph_node *);
- void cgraph_node_remove_callees (struct cgraph_node *node);
- struct cgraph_edge *cgraph_create_edge (struct cgraph_node *,
-Index: gcc/DATESTAMP
-===================================================================
---- gcc/DATESTAMP      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/DATESTAMP      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1 +1 @@
--20120301
-+20120808
-Index: gcc/target.h
-===================================================================
---- gcc/target.h       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/target.h       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -128,7 +128,8 @@
-   scalar_to_vec,
-   cond_branch_not_taken,
-   cond_branch_taken,
--  vec_perm
-+  vec_perm,
-+  vec_promote_demote
- };
- /* Sets of optimization levels at which an option may be enabled by
-Index: gcc/configure
-===================================================================
---- gcc/configure      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/configure      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -4842,7 +4842,7 @@
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
- $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
--if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
-+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
-   have_gnat=yes
- else
-   have_gnat=no
-Index: gcc/toplev.c
-===================================================================
---- gcc/toplev.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/toplev.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1326,6 +1326,13 @@
-          "and -ftree-loop-linear)");
- #endif
-+  if (flag_strict_volatile_bitfields > 0 && !abi_version_at_least (2))
-+    {
-+      warning (0, "-fstrict-volatile-bitfields disabled; "
-+             "it is incompatible with ABI versions < 2");
-+      flag_strict_volatile_bitfields = 0;
-+    }
-+
-   /* Unrolling all loops implies that standard loop unrolling must also
-      be done.  */
-   if (flag_unroll_all_loops)
-Index: gcc/DEV-PHASE
-===================================================================
---- gcc/DEV-PHASE      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/DEV-PHASE      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1 @@
-+prerelease
-Index: gcc/cgraphunit.c
-===================================================================
---- gcc/cgraphunit.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cgraphunit.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2157,8 +2157,19 @@
-             first_clone->ipa_transforms_to_apply);
-   first_clone->ipa_transforms_to_apply = NULL;
-+  /* When doing recursive inlining, the clone may become unnecessary.
-+     This is possible i.e. in the case when the recursive function is proved to be
-+     non-throwing and the recursion happens only in the EH landing pad.
-+     We can not remove the clone until we are done with saving the body.
-+     Remove it now.  */
-+  if (!first_clone->callers)
-+    {
-+      cgraph_remove_node_and_inline_clones (first_clone, NULL);
-+      first_clone = NULL;
-+    }
- #ifdef ENABLE_CHECKING
--  verify_cgraph_node (first_clone);
-+  else
-+    verify_cgraph_node (first_clone);
- #endif
-   return first_clone;
- }
-Index: gcc/ChangeLog
-===================================================================
---- gcc/ChangeLog      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/ChangeLog      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,530 @@
-+2012-07-22  Oleg Endo  <olegendo@gcc.gnu.org>
-+
-+      PR target/33135
-+      * config/sh/sh.opt (mieee): Use Var instead of Mask.  Correct
-+      description.
-+      * config/sh/sh.c (sh_option_override): Do not change 
-+      flag_finite_math_only.  Set TARGET_IEEE to complement of
-+      flag_finite_math_only.
-+      * doc/invoke.texi (SH options): Add mno-ieee.  Correct
-+      description of mieee and mno-ieee behavior.
-+
-+2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
-+
-+      Backported from trunk:
-+      2012-07-13  Richard Sandiford  <rdsandiford@googlemail.com>
-+                  Steven Bosscher  <steven@gcc.gnu.org>
-+                  Bernd Schmidt  <bernds@codesourcery.com>
-+
-+      PR rtl-optimization/53908
-+      * df-problems.c (can_move_insns_across): When doing
-+      memory-reference book-keeping, handle call insns.
-+
-+2012-07-06  Nick Clifton  <nickc@redhat.com>
-+
-+      * config/mn10300/mn10300.c (mn10300_encode_section_info): Call
-+      default_encode_section_info.
-+
-+2012-07-04  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/53433
-+      * tree-ssa-ccp.c (get_base_constructor): Do not return an
-+      error_mark_node DECL_INITIAL.
-+
-+2012-07-02  Martin Jambor  <mjambor@suse.cz>
-+
-+      PR middle-end/38474
-+      * ipa-prop.c (compute_known_type_jump_func): Check for a BINFO before
-+      checking for a dynamic type change.
-+
-+2012-06-28  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/53790
-+      * expr.c (expand_expr_real_1): Verify if the type is complete
-+      before inspecting its size.
-+
-+2012-06-22  Richard Guenther  <rguenther@suse.de>
-+
-+      * gcov-iov.c: Include bconfig.h and system.h.
-+
-+2012-06-22  Richard Guenther  <rguenther@suse.de>
-+
-+      PR gcov-profile/53744
-+      * gcov-iov.c (main): Treat "" and "prerelease" the same.
-+
-+2012-06-19  Joey Ye  <joey.ye@arm.com>
-+
-+      Backported from mainline
-+      2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
-+
-+      * config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
-+
-+2012-06-18  Joey Ye  <joey.ye@arm.com>
-+
-+      Backported from mainline
-+      2011-10-14  David Alan Gilbert  <david.gilbert@linaro.org>
-+
-+      PR target/48126
-+      * config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
-+
-+2012-06-17  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      Backport from mainline:
-+      2012-06-17  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * config/i386/sse.md (vcvtph2ps): Fix vec_select selector.
-+
-+2012-06-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      Backport from mainline:
-+      2012-06-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      * config/pa/pa.h (MAX_PCREL17F_OFFSET): Define.
-+      * config/pa/pa.c (pa_attr_length_millicode_call): Use
-+      MAX_PCREL17F_OFFSET instead of fixed offset.
-+      (pa_attr_length_call): Likewise.
-+      (pa_attr_length_indirect_call): Likewise.
-+
-+2012-06-12  Christian Bruel  <christian.bruel@st.com>
-+
-+      PR target/53621
-+      * config/sh/sh.c (sh_option_override): Don't force
-+       flag_omit_frame_pointer and maccumulate_outgoing_args.
-+      * config/sh/sh.opt (maccumulate-outgoing-args): Init as Var.
-+
-+2012-06-05  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+      Backport from mainline
-+      2011-08-29  Jakub Jelinek  <jakub@redhat.com>
-+
-+      * gthr-posix.h (__gthread_active_p): Do not use preprocessor
-+      conditionals and comments inside macro arguments.
-+
-+2012-06-04  Edmar Wienskoski  <edmar@freescale.com>
-+
-+      PR target/53559
-+      * config/rs6000/altivec.md (altivec_stvlx): Change machine mode of
-+      operands.
-+      (altivec_stvlxl): Ditto.
-+      (altivec_stvrx): Ditto.
-+      (altivec_stvrxl): Ditto.
-+
-+2012-06-04  Georg-Johann Lay  <avr@gjlay.de>
-+
-+      Backport from 2012-06-04 mainline r188172
-+
-+      PR target/46261
-+      * config/avr/avr-stdint.h: New file.
-+      * config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of
-+      newlib-stdint.h
-+
-+2012-06-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      PR target/52999
-+      * config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define.
-+      (pa_section_type_flags): New.
-+      * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Revert previous change.
-+
-+2012-05-31  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/53541
-+      * tree-pretty-print.c (dump_generic_node): Guard against
-+      NULL_TREE TREE_TYPE when dumping MEM_REF offset type.
-+
-+2012-05-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
-+
-+      Backport from mainline
-+      2012-05-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
-+
-+      PR target/53385
-+      * config/rs6000/rs6000.c (print_operand): Revise code that unsafely
-+      relied on signed overflow behavior.
-+
-+2012-05-22  Richard Guenther  <rguenther@suse.de>
-+
-+      Backport from mainline
-+      2011-11-10  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/51071
-+      * gimple.c (gimple_has_side_effects): Remove checking code
-+      that doesn't belong here.
-+
-+2012-05-22  Richard Guenther  <rguenther@suse.de>
-+
-+      Backport from mainline
-+      2012-02-28  Richard Guenther  <rguenther@suse.de>
-+
-+      PR target/52407
-+      * config/i386/i386.c (ix86_expand_vector_set): Fix element
-+      ordering for the VEC_CONCAT for two element vectors for
-+      V2SFmode, V2SImode and V2DImode.
-+
-+2012-05-22  Richard Guenther  <rguenther@suse.de>
-+
-+      Backport from mainline
-+      2012-04-12  Richard Guenther  <rguenther@suse.de>
-+
-+      PR c/52862
-+      * convert.c (convert_to_pointer): Remove special-casing of zero.
-+
-+2012-05-21  Joseph Myers  <joseph@codesourcery.com>
-+
-+      PR c/53418
-+      * c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR
-+      from folded operands before wrapping another around the
-+      conditional expression.
-+
-+2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+      Backport from mainline
-+      2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+      PR target/53416
-+      * config/i386/i386.md (UNSPEC_RDRAND): Renamed to ...
-+      (UNSPECV_RDRAND): This.
-+      (rdrand<mode>_1): Updated.
-+
-+2012-05-20  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+      Backport from mainline
-+      2012-05-20  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+      * config/i386/driver-i386.c (host_detect_local_cpu): Support
-+      RDRND, F16C and FSGSBASE.
-+
-+2012-05-16  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+      * configure: Regenerate.
-+
-+2012-05-14  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      PR target/46098
-+      * config/i386/i386.c (ix86_expand_special_args_builtin): Always
-+      generate target register for "load" class builtins.
-+
-+      Revert:
-+      2010-10-22  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      PR target/46098
-+      * config/i386/sse.md (*avx_movu<ssemodesuffix><avxmodesuffix>):
-+      Rename from avx_movu<ssemodesuffix><avxmodesuffix>.
-+      (avx_movu<ssemodesuffix><avxmodesuffix>): New expander.
-+      (*<sse>_movu<ssemodesuffix>): Rename from <sse>_movu<ssemodesuffix>.
-+      (<sse>_movu<ssemodesuffix>): 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.
-+
-+2012-05-13  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      Backport from mainline
-+      2012-05-12  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
-+      ORDERED and UNORDERED conditions.
-+
-+2012-05-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      PR target/52999
-+      * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Don't put function labels
-+      in constant pool.
-+
-+2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      Backport from mainline
-+      2012-05-04  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      PR target/53228
-+      * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE.
-+      (TARGET_CMOV): Rename from TARGET_CMOVE.
-+      (TARGET_CMOVE): New define.
-+      * config/i386/i386.c (ix86_option_override_internal): Use TARGET_CMOV.
-+      Do not set TARGET_CMOVE here.
-+
-+2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      Backport from the mainline
-+      2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      PR target/53199
-+      * config/rs6000/rs6000.md (bswapdi splitters): If
-+      -mavoid-indexed-addresses (or -mcpu=power6 which sets it by
-+      default) is used, generate an alternate sequence that does not
-+      depend on using indexed addressing.
-+
-+2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      Backport from mainline
-+      2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
-+
-+      PR target/53138
-+      * config/i386/i386.md (x86_mov<mode>cc_0_m1_neg): Add clobber.
-+
-+2012-04-24  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR middle-end/53084
-+      * varasm.c (compute_reloc_for_constant): Handle ADDR_EXPR of MEM_REF.
-+      (output_addressed_constants): Likewise.
-+
-+2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
-+
-+      struct siginfo vs. siginfo_t
-+
-+      Backport from trunk (but apply to gcc/):
-+
-+      2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
-+
-+      * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
-+      siginfo_t instead of struct siginfo.
-+      * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
-+      * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
-+      * config/ia64/linux-unwind.h (ia64_fallback_frame_state)
-+      (ia64_handle_unwabi): Likewise.
-+      * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
-+      * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
-+      * config/sh/linux-unwind.h (shmedia_fallback_frame_state)
-+      (sh_fallback_frame_state): Likewise.
-+      * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
-+
-+2012-04-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      Backport from mainline
-+      2012-04-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      PR target/52775
-+      * config/rs6000/rs6000.h (TARGET_FCFID): Add TARGET_PPC_GPOPT to
-+      the list of options to enable the FCFID instruction.
-+
-+2012-04-12  Richard Earnshaw  <rearnsha@arm.com>
-+
-+      PR target/49448
-+      * config.gcc (arm*-*-linux*): Use an unambiguous pattern for
-+      detecting big-endian triplets.
-+
-+2012-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      PR middle-end/52894
-+      * varasm.c (process_pending_assemble_externals): Set
-+      pending_assemble_externals_processed true.
-+      (assemble_external): Call assemble_external_real if the pending
-+      assemble externals have been processed.
-+
-+2012-04-09  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+      PR target/52717
-+      * config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on
-+      the DECL generated for the special GOT helper.
-+
-+2012-04-06  Matt Turner  <mattst88@gmail.com>
-+
-+      * doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc".
-+
-+2012-03-29  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results
-+      crossing 128bit lane boundary.
-+
-+2012-03-29  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      Backported from mainline
-+      2012-03-27  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      PR target/52698
-+      * config/i386/i386-protos.h (ix86_legitimize_reload_address):
-+      New prototype.
-+      * config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define.
-+      * config/i386/i386.c: Include reload.h.
-+      (ix86_legitimize_reload_address): New function.
-+
-+2012-03-28  Joey Ye  <joey.ye@arm.com>
-+
-+      Backported from mainline
-+      2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
-+
-+      PR middle-end/51200
-+      * expr.c (store_field): Avoid a direct store if the mode is larger
-+      than the size of the bit field.
-+      * stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
-+      treat non-volatile bit fields like volatile ones.
-+      * toplev.c (process_options): Disallow combination of
-+      -fstrict-volatile-bitfields and ABI versions less than 2.
-+      * config/arm/arm.c (arm_option_override): Don't enable
-+      flag_strict_volatile_bitfields if the ABI version is less than 2.
-+      * config/h8300/h8300.c (h8300_option_override): Likewise.
-+      * config/rx/rx.c (rx_option_override): Likewise.
-+      * config/m32c/m32c.c (m32c_option_override): Likewise.
-+      * config/sh/sh.c (sh_option_override): Likewise.
-+
-+      2011-12-22  Joey Ye  <joey.ye@arm.com>
-+
-+      * toplev.c (process_options): Fix typo.
-+
-+2012-03-28  Martin Jambor  <mjambor@suse.cz>
-+
-+      Backported from mainline
-+      2012-03-27  Martin Jambor  <mjambor@suse.cz>
-+
-+      PR middle-end/52693
-+      * tree-sra.c (sra_modify_assign): Do not call
-+      load_assign_lhs_subreplacements when working with an unscalarizable
-+      region.
-+
-+2012-03-28  Georg-Johann Lay  <avr@gjlay.de>
-+
-+      PR target/52741
-+
-+      Revert r181936 from 2011-12-02 for:
-+      * config/avr/libgcc.S (__prologue_saves__, __epilogue_restores__)
-+      * config/avr/avr.md (movhi_sp_r_irq_off, movhi_sp_r_irq_on)
-+      * config/avr/avr.c (output_movhi, avr_file_start)
-+
-+2012-03-28  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR target/52736
-+      * config/i386/sse.md (sse2_loadlpd splitter): Use offset 0
-+      instead of 8 in adjust_address.
-+
-+2012-03-24  Jan Hubicka  <jh@suse.cz>
-+
-+      Backport from mainline
-+      PR regression/52696
-+      * predict.c (predict_paths_for_bb): Fix typo.
-+
-+2012-03-24  Jan Hubicka  <jh@suse.cz>
-+
-+      Backport from mainline
-+      PR middle-end/51737
-+      * cgraph.c (cgraph_remove_node_and_inline_clones): Add FORBIDDEN_NODE
-+      parameter.
-+      * cgraph.h (cgraph_remove_node_and_inline_clones): Update prototype.
-+      * ipa-inline-transform.c (save_inline_function_body): Remove copied
-+      clone if needed.
-+      * tree-inline.c (delete_unreachable_blocks_update_callgraph): Update.
-+
-+2012-03-24  Steven Bosscher  <steven@gcc.gnu.org>
-+
-+      PR middle-end/52640
-+      * varasm.c: Include pointer-set.h.
-+      (pending_assemble_externals_set): New pointer set.
-+      (process_pending_assemble_externals): Destroy the pointer set.
-+      (assemble_external): See if decl is in pending_assemble_externals_set,
-+      and add it to pending_assemble_externals if necessary.
-+      (init_varasm_once): Allocate pending_assemble_externals_set.
-+
-+2012-03-16  Jan Hubicka  <jh@suse.cz>
-+
-+      Backport from mainline
-+      PR middle-end/48600
-+      * predict.c (predict_paths_for_bb): Prevent looping.
-+      (predict_paths_leading_to_edge, predict_paths_leading_to): Update.
-+
-+2012-03-16  Michael Hope  <michael.hope@linaro.org>
-+
-+      Backport from mainline
-+      2011-05-05  Michael Hope  <michael.hope@linaro.org>
-+
-+      PR pch/45979
-+      * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for
-+      __ARM_EABI__ hosts.
-+
-+2012-03-15  Chung-Lin Tang  <cltang@codesourcery.com>
-+
-+      Backport from mainline
-+      2012-03-10  Chung-Lin Tang  <cltang@codesourcery.com>
-+
-+      PR rtl-optimization/52528
-+      * combine.c (can_combine_p): Add setting of subst_low_luid
-+      before call to expand_field_assignment().
-+
-+2012-03-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      Backport from mainline
-+      2011-09-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      PR Bug middle-end/50232
-+      * config/pa/pa.md (return): Define "return" insn pattern.
-+      (epilogue): Use it when no epilogue is needed.
-+      * config/pa/pa.c (pa_can_use_return_insn): New function.
-+      * config/pa/pa-protos.h (pa_can_use_return_insn): Declare.
-+
-+      Backport for mainline
-+      2012-01-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      PR target/51871
-+      * config/pa/pa.c (pa_return_addr_rtx): Add support for PA2.0 export
-+      stubs.
-+
-+2012-03-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      Backport from mainline
-+      PR target/50310
-+      * config/rs6000/vector.md (vector_uneq<mode>): Add support for
-+      UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons.
-+      (vector_ltgt<mode>): Likewise.
-+      (vector_ordered<mode>): Likewise.
-+      (vector_unordered<mode>): Likewise.
-+      * config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
-+
-+2012-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      Backport from mainline
-+      2012-03-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+      PR target/52408
-+      * config/pa/pa.md (zvdep_imm32): Change type of variable x from int to
-+      unsigned HOST_WIDE_INT.
-+      (zvdep_imm64): Likewise.
-+      (vdepi_ior): Change type of variable x from int to HOST_WIDE_INT.
-+      (vdepi_and): Likewise.
-+      Likewise for unamed 64-bit patterns.
-+      * config/pa/predicates.md (lhs_lshift_cint_operand): Update comment.
-+
-+2012-03-03  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+      PR target/52425
-+      Backport from mainline
-+      2011-05-22  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+      * config/sparc/sparc.c (sparc_delegitimize_address): Handle
-+      UNSPEC_MOVE_PIC pattern.
-+
-+2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+      Backport from mainline
-+      2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+      * config/rs6000/vsx.md (vsx_set_<mode>): Reorder operands.
-+
-+2012-03-02  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
-+          Ira Rosen <irar@il.ibm.com>
-+
-+      PR tree-optimization/50031
-+      PR tree-optimization/50969
-+      * targhooks.c (default_builtin_vectorization_cost): Handle
-+      vec_promote_demote.
-+      * target.h (enum vect_cost_for_stmt): Add vec_promote_demote.
-+      * tree-vect-loop.c (vect_get_single_scalar_iteraion_cost): Handle
-+      all types of reduction and pattern statements.
-+      (vect_estimate_min_profitable_iters): Likewise.
-+      * tree-vect-stmts.c (vect_model_promotion_demotion_cost): New function.
-+      (vect_model_store_cost): Use vec_perm rather than vector_stmt for
-+      statement cost.
-+      (vect_model_load_cost): Likewise.
-+      (vect_get_load_cost): Likewise; add dump logic for explicit realigns.
-+      (vectorizable_type_demotion): Call vect_model_promotion_demotion_cost.
-+      (vectorizable_type_promotion): Likewise.
-+      * config/spu/spu.c (spu_builtin_vectorization_cost): Handle
-+      vec_promote_demote.
-+      * config/i386/i386.c (ix86_builtin_vectorization_cost): Likewise.
-+      * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Update
-+      vec_perm for VSX and handle vec_promote_demote.
-+
-+2012-03-01  Jakub Jelinek  <jakub@redhat.com>
-+
-+      * BASE-VER: Set to 4.6.4.
-+      * DEV-PHASE: Set to prerelease.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
-===================================================================
---- gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c        (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,30 @@
-+/* { dg-require-effective-target arm_eabi } */
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+/* { dg-final { scan-assembler-times "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
-+/* { dg-final { scan-assembler-times "str\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
-+/* { dg-final { scan-assembler-not "strb" } } */
-+
-+struct thing {
-+  unsigned a: 8;
-+  unsigned b: 8;
-+  unsigned c: 8;
-+  unsigned d: 8;
-+};
-+
-+struct thing2 {
-+  volatile unsigned a: 8;
-+  volatile unsigned b: 8;
-+  volatile unsigned c: 8;
-+  volatile unsigned d: 8;
-+};
-+
-+void test1(volatile struct thing *t)
-+{
-+  t->a = 5;
-+}
-+
-+void test2(struct thing2 *t)
-+{
-+  t->a = 5;
-+}
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "stvrx" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+void sc3(vsc v, long a, void *p)    { __builtin_altivec_stvrx (v,a,p); }
-+void srx01(vsf v, long a, vsf *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx02(vsf v, long a, sf *p)    { __builtin_vec_stvrx (v,a,p); }
-+void srx03(vbi v, long a, vbi *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx04(vsi v, long a, vsi *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx05(vsi v, long a, si *p)    { __builtin_vec_stvrx (v,a,p); }
-+void srx06(vui v, long a, vui *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx07(vui v, long a, ui *p)    { __builtin_vec_stvrx (v,a,p); }
-+void srx08(vbs v, long a, vbs *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx09(vp v, long a, vp *p)     { __builtin_vec_stvrx (v,a,p); }
-+void srx10(vss v, long a, vss *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx11(vss v, long a, ss *p)    { __builtin_vec_stvrx (v,a,p); }
-+void srx12(vus v, long a, vus *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx13(vus v, long a, us *p)    { __builtin_vec_stvrx (v,a,p); }
-+void srx14(vbc v, long a, vbc *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx15(vsc v, long a, vsc *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx16(vsc v, long a, sc *p)    { __builtin_vec_stvrx (v,a,p); }
-+void srx17(vuc v, long a, vuc *p)   { __builtin_vec_stvrx (v,a,p); }
-+void srx18(vuc v, long a, uc *p)    { __builtin_vec_stvrx (v,a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "stvrxl" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+void sc4(vsc v, long a, void *p)    { __builtin_altivec_stvrxl (v,a,p); }
-+void srxl01(vsf v, long a, vsf *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl02(vsf v, long a, sf *p)   { __builtin_vec_stvrxl (v,a,p); }
-+void srxl03(vbi v, long a, vbi *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl04(vsi v, long a, vsi *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl05(vsi v, long a, si *p)   { __builtin_vec_stvrxl (v,a,p); }
-+void srxl06(vui v, long a, vui *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl07(vui v, long a, ui *p)   { __builtin_vec_stvrxl (v,a,p); }
-+void srxl08(vbs v, long a, vbs *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl09(vp v, long a, vp *p)    { __builtin_vec_stvrxl (v,a,p); }
-+void srxl10(vss v, long a, vss *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl11(vss v, long a, ss *p)   { __builtin_vec_stvrxl (v,a,p); }
-+void srxl12(vus v, long a, vus *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl13(vus v, long a, us *p)   { __builtin_vec_stvrxl (v,a,p); }
-+void srxl14(vbc v, long a, vbc *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl15(vsc v, long a, vsc *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl16(vsc v, long a, sc *p)   { __builtin_vec_stvrxl (v,a,p); }
-+void srxl17(vuc v, long a, vuc *p)  { __builtin_vec_stvrxl (v,a,p); }
-+void srxl18(vuc v, long a, uc *p)   { __builtin_vec_stvrxl (v,a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/pr52775.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/pr52775.c (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/pr52775.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,16 @@
-+/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-options "-O1 -mcpu=power4" } */
-+/* { dg-final { scan-assembler-times "fcfid" 2 } } */
-+
-+double
-+int_to_double (int *p)
-+{
-+  return (double)*p;
-+}
-+
-+double
-+long_long_to_double (long long *p)
-+{
-+  return (double)*p;
-+}
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "lvlx" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+vsc  lc1(long a, void *p)           { return __builtin_altivec_lvlx (a,p); }
-+vsf  llx01(long a, vsf *p)          { return __builtin_vec_lvlx (a,p); }
-+vsf  llx02(long a, sf *p)           { return __builtin_vec_lvlx (a,p); }
-+vbi  llx03(long a, vbi *p)          { return __builtin_vec_lvlx (a,p); }
-+vsi  llx04(long a, vsi *p)          { return __builtin_vec_lvlx (a,p); }
-+vsi  llx05(long a, si *p)           { return __builtin_vec_lvlx (a,p); }
-+vui  llx06(long a, vui *p)          { return __builtin_vec_lvlx (a,p); }
-+vui  llx07(long a, ui *p)           { return __builtin_vec_lvlx (a,p); }
-+vbs  llx08(long a, vbs *p)          { return __builtin_vec_lvlx (a,p); }
-+vp   llx09(long a, vp *p)           { return __builtin_vec_lvlx (a,p); }
-+vss  llx10(long a, vss *p)          { return __builtin_vec_lvlx (a,p); }
-+vss  llx11(long a, ss *p)           { return __builtin_vec_lvlx (a,p); }
-+vus  llx12(long a, vus *p)          { return __builtin_vec_lvlx (a,p); }
-+vus  llx13(long a, us *p)           { return __builtin_vec_lvlx (a,p); }
-+vbc  llx14(long a, vbc *p)          { return __builtin_vec_lvlx (a,p); }
-+vsc  llx15(long a, vsc *p)          { return __builtin_vec_lvlx (a,p); }
-+vsc  llx16(long a, sc *p)           { return __builtin_vec_lvlx (a,p); }
-+vuc  llx17(long a, vuc *p)          { return __builtin_vec_lvlx (a,p); }
-+vuc  llx18(long a, uc *p)           { return __builtin_vec_lvlx (a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/pr52457.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/pr52457.c (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/pr52457.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,34 @@
-+/* { dg-do run { target { powerpc*-*-linux* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
-+/* { dg-require-effective-target vsx_hw } */
-+/* { dg-options "-O1 -mcpu=power7" } */
-+
-+extern void abort (void);
-+
-+typedef long long T;
-+typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
-+
-+vl_t
-+buggy_func (T x)
-+{
-+  vl_t w;
-+  T *p = (T *)&w;
-+  p[0] = p[1] = x;
-+  return w;
-+}
-+
-+int
-+main(void)
-+{
-+  vl_t rval;
-+  T *pl;
-+
-+  pl = (T *) &rval;
-+  rval = buggy_func (2);
-+
-+  if (pl[0] != 2 || pl[1] != 2)
-+    abort ();
-+
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "lvlxl" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+vsc  lc2(long a, void *p)           { return __builtin_altivec_lvlxl (a,p); }
-+vsf  llxl01(long a, vsf *p)         { return __builtin_vec_lvlxl (a,p); }
-+vsf  llxl02(long a, sf *p)          { return __builtin_vec_lvlxl (a,p); }
-+vbi  llxl03(long a, vbi *p)         { return __builtin_vec_lvlxl (a,p); }
-+vsi  llxl04(long a, vsi *p)         { return __builtin_vec_lvlxl (a,p); }
-+vsi  llxl05(long a, si *p)          { return __builtin_vec_lvlxl (a,p); }
-+vui  llxl06(long a, vui *p)         { return __builtin_vec_lvlxl (a,p); }
-+vui  llxl07(long a, ui *p)          { return __builtin_vec_lvlxl (a,p); }
-+vbs  llxl08(long a, vbs *p)         { return __builtin_vec_lvlxl (a,p); }
-+vp   llxl09(long a, vp *p)          { return __builtin_vec_lvlxl (a,p); }
-+vss  llxl10(long a, vss *p)         { return __builtin_vec_lvlxl (a,p); }
-+vss  llxl11(long a, ss *p)          { return __builtin_vec_lvlxl (a,p); }
-+vus  llxl12(long a, vus *p)         { return __builtin_vec_lvlxl (a,p); }
-+vus  llxl13(long a, us *p)          { return __builtin_vec_lvlxl (a,p); }
-+vbc  llxl14(long a, vbc *p)         { return __builtin_vec_lvlxl (a,p); }
-+vsc  llxl15(long a, vsc *p)         { return __builtin_vec_lvlxl (a,p); }
-+vsc  llxl16(long a, sc *p)          { return __builtin_vec_lvlxl (a,p); }
-+vuc  llxl17(long a, vuc *p)         { return __builtin_vec_lvlxl (a,p); }
-+vuc  llxl18(long a, uc *p)          { return __builtin_vec_lvlxl (a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "lvrx" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+vsc  lc3(long a, void *p)           { return __builtin_altivec_lvrx (a,p); }
-+vsf  lrx01(long a, vsf *p)          { return __builtin_vec_lvrx (a,p); }
-+vsf  lrx02(long a, sf *p)           { return __builtin_vec_lvrx (a,p); }
-+vbi  lrx03(long a, vbi *p)          { return __builtin_vec_lvrx (a,p); }
-+vsi  lrx04(long a, vsi *p)          { return __builtin_vec_lvrx (a,p); }
-+vsi  lrx05(long a, si *p)           { return __builtin_vec_lvrx (a,p); }
-+vui  lrx06(long a, vui *p)          { return __builtin_vec_lvrx (a,p); }
-+vui  lrx07(long a, ui *p)           { return __builtin_vec_lvrx (a,p); }
-+vbs  lrx08(long a, vbs *p)          { return __builtin_vec_lvrx (a,p); }
-+vp   lrx09(long a, vp *p)           { return __builtin_vec_lvrx (a,p); }
-+vss  lrx10(long a, vss *p)          { return __builtin_vec_lvrx (a,p); }
-+vss  lrx11(long a, ss *p)           { return __builtin_vec_lvrx (a,p); }
-+vus  lrx12(long a, vus *p)          { return __builtin_vec_lvrx (a,p); }
-+vus  lrx13(long a, us *p)           { return __builtin_vec_lvrx (a,p); }
-+vbc  lrx14(long a, vbc *p)          { return __builtin_vec_lvrx (a,p); }
-+vsc  lrx15(long a, vsc *p)          { return __builtin_vec_lvrx (a,p); }
-+vsc  lrx16(long a, sc *p)           { return __builtin_vec_lvrx (a,p); }
-+vuc  lrx17(long a, vuc *p)          { return __builtin_vec_lvrx (a,p); }
-+vuc  lrx18(long a, uc *p)           { return __builtin_vec_lvrx (a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "lvrxl" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+vsc  lc4(long a, void *p)           { return __builtin_altivec_lvrxl (a,p); }
-+vsf  lrxl01(long a, vsf *p)         { return __builtin_vec_lvrxl (a,p); }
-+vsf  lrxl02(long a, sf *p)          { return __builtin_vec_lvrxl (a,p); }
-+vbi  lrxl03(long a, vbi *p)         { return __builtin_vec_lvrxl (a,p); }
-+vsi  lrxl04(long a, vsi *p)         { return __builtin_vec_lvrxl (a,p); }
-+vsi  lrxl05(long a, si *p)          { return __builtin_vec_lvrxl (a,p); }
-+vui  lrxl06(long a, vui *p)         { return __builtin_vec_lvrxl (a,p); }
-+vui  lrxl07(long a, ui *p)          { return __builtin_vec_lvrxl (a,p); }
-+vbs  lrxl08(long a, vbs *p)         { return __builtin_vec_lvrxl (a,p); }
-+vp   lrxl09(long a, vp *p)          { return __builtin_vec_lvrxl (a,p); }
-+vss  lrxl10(long a, vss *p)         { return __builtin_vec_lvrxl (a,p); }
-+vss  lrxl11(long a, ss *p)          { return __builtin_vec_lvrxl (a,p); }
-+vus  lrxl12(long a, vus *p)         { return __builtin_vec_lvrxl (a,p); }
-+vus  lrxl13(long a, us *p)          { return __builtin_vec_lvrxl (a,p); }
-+vbc  lrxl14(long a, vbc *p)         { return __builtin_vec_lvrxl (a,p); }
-+vsc  lrxl15(long a, vsc *p)         { return __builtin_vec_lvrxl (a,p); }
-+vsc  lrxl16(long a, sc *p)          { return __builtin_vec_lvrxl (a,p); }
-+vuc  lrxl17(long a, vuc *p)         { return __builtin_vec_lvrxl (a,p); }
-+vuc  lrxl18(long a, uc *p)          { return __builtin_vec_lvrxl (a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "stvlx" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+void sc1(vsc v, long a, void *p)    { __builtin_altivec_stvlx (v,a,p); }
-+void slx01(vsf v, long a, vsf *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx02(vsf v, long a, sf *p)    { __builtin_vec_stvlx (v,a,p); }
-+void slx03(vbi v, long a, vbi *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx04(vsi v, long a, vsi *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx05(vsi v, long a, si *p)    { __builtin_vec_stvlx (v,a,p); }
-+void slx06(vui v, long a, vui *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx07(vui v, long a, ui *p)    { __builtin_vec_stvlx (v,a,p); }
-+void slx08(vbs v, long a, vbs *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx09(vp v, long a, vp *p)     { __builtin_vec_stvlx (v,a,p); }
-+void slx10(vss v, long a, vss *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx11(vss v, long a, ss *p)    { __builtin_vec_stvlx (v,a,p); }
-+void slx12(vus v, long a, vus *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx13(vus v, long a, us *p)    { __builtin_vec_stvlx (v,a,p); }
-+void slx14(vbc v, long a, vbc *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx15(vsc v, long a, vsc *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx16(vsc v, long a, sc *p)    { __builtin_vec_stvlx (v,a,p); }
-+void slx17(vuc v, long a, vuc *p)   { __builtin_vec_stvlx (v,a,p); }
-+void slx18(vuc v, long a, uc *p)    { __builtin_vec_stvlx (v,a,p); }
-Index: gcc/testsuite/gcc.target/powerpc/pr53199.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/pr53199.c (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/pr53199.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,50 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */
-+/* { dg-final { scan-assembler-times "lwbrx" 6 } } */
-+/* { dg-final { scan-assembler-times "stwbrx" 6 } } */
-+
-+/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in
-+   creating the two lwbrx instructions.  */
-+
-+long long
-+load64_reverse_1 (long long *p)
-+{
-+  return __builtin_bswap64 (*p);
-+}
-+
-+long long
-+load64_reverse_2 (long long *p)
-+{
-+  return __builtin_bswap64 (p[1]);
-+}
-+
-+long long
-+load64_reverse_3 (long long *p, int i)
-+{
-+  return __builtin_bswap64 (p[i]);
-+}
-+
-+void
-+store64_reverse_1 (long long *p, long long x)
-+{
-+  *p = __builtin_bswap64 (x);
-+}
-+
-+void
-+store64_reverse_2 (long long *p, long long x)
-+{
-+  p[1] = __builtin_bswap64 (x);
-+}
-+
-+void
-+store64_reverse_3 (long long *p, long long x, int i)
-+{
-+  p[i] = __builtin_bswap64 (x);
-+}
-+
-+long long
-+reg_reverse (long long x)
-+{
-+  return __builtin_bswap64 (x);
-+}
-Index: gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
-===================================================================
---- gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,48 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_altivec_ok } */
-+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
-+/* { dg-final { scan-assembler-times "stvlxl" 19 } } */
-+
-+#include <altivec.h>
-+
-+typedef __vector signed char vsc;
-+typedef __vector signed short vss;
-+typedef __vector signed int vsi;
-+typedef __vector unsigned char vuc;
-+typedef __vector unsigned short vus;
-+typedef __vector unsigned int vui;
-+typedef __vector bool char vbc;
-+typedef __vector bool short vbs;
-+typedef __vector bool int vbi;
-+typedef __vector float vsf;
-+typedef __vector pixel vp;
-+typedef signed char sc;
-+typedef signed short ss;
-+typedef signed int si;
-+typedef signed long sl;
-+typedef unsigned char uc;
-+typedef unsigned short us;
-+typedef unsigned int ui;
-+typedef unsigned long ul;
-+typedef float sf;
-+
-+void sc2(vsc v, long a, void *p)    { __builtin_altivec_stvlxl (v,a,p); }
-+void slxl01(vsf v, long a, vsf *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl02(vsf v, long a, sf *p)   { __builtin_vec_stvlxl (v,a,p); }
-+void slxl03(vbi v, long a, vbi *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl04(vsi v, long a, vsi *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl05(vsi v, long a, si *p)   { __builtin_vec_stvlxl (v,a,p); }
-+void slxl06(vui v, long a, vui *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl07(vui v, long a, ui *p)   { __builtin_vec_stvlxl (v,a,p); }
-+void slxl08(vbs v, long a, vbs *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl09(vp v, long a, vp *p)    { __builtin_vec_stvlxl (v,a,p); }
-+void slxl10(vss v, long a, vss *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl11(vss v, long a, ss *p)   { __builtin_vec_stvlxl (v,a,p); }
-+void slxl12(vus v, long a, vus *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl13(vus v, long a, us *p)   { __builtin_vec_stvlxl (v,a,p); }
-+void slxl14(vbc v, long a, vbc *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl15(vsc v, long a, vsc *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl16(vsc v, long a, sc *p)   { __builtin_vec_stvlxl (v,a,p); }
-+void slxl17(vuc v, long a, vuc *p)  { __builtin_vec_stvlxl (v,a,p); }
-+void slxl18(vuc v, long a, uc *p)   { __builtin_vec_stvlxl (v,a,p); }
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -14,6 +14,6 @@
-     c[i] = a[i] * b[i+3];
- }
--/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */
--/* { dg-final { scan-assembler "\\*avx_movups/1" } } */
-+/* { dg-final { scan-assembler-not "avx_movups256/1" } } */
-+/* { dg-final { scan-assembler "avx_movups/1" } } */
- /* { dg-final { scan-assembler "vinsertf128" } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -14,6 +14,6 @@
-     c[i] = a[i] * b[i+3];
- }
--/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */
--/* { dg-final { scan-assembler "\\*avx_movupd/1" } } */
-+/* { dg-final { scan-assembler-not "avx_movupd256/1" } } */
-+/* { dg-final { scan-assembler "avx_movupd/1" } } */
- /* { dg-final { scan-assembler "vinsertf128" } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -17,6 +17,6 @@
-     d[i] = c[i] * 20.0;
- }
--/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */
-+/* { dg-final { scan-assembler-not "avx_movups256/2" } } */
- /* { dg-final { scan-assembler "movups.*\\*avx_movv4sf_internal/3" } } */
- /* { dg-final { scan-assembler "vextractf128" } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -17,6 +17,6 @@
-     d[i] = c[i] * 20.0;
- }
--/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */
-+/* { dg-final { scan-assembler-not "avx_movupd256/2" } } */
- /* { dg-final { scan-assembler "movupd.*\\*avx_movv2df_internal/3" } } */
- /* { dg-final { scan-assembler "vextractf128" } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -24,6 +24,6 @@
-     }
- }
--/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */
--/* { dg-final { scan-assembler "\\*avx_movdqu/1" } } */
-+/* { dg-final { scan-assembler-not "avx_movdqu256/1" } } */
-+/* { dg-final { scan-assembler "avx_movdqu/1" } } */
- /* { dg-final { scan-assembler "vinsertf128" } } */
-Index: gcc/testsuite/gcc.target/i386/pr53416.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/pr53416.c    (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr53416.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,17 @@
-+/* PR target/53416 */
-+/* { dg-options "-O2 -mrdrnd" } */
-+
-+int test (void)
-+{
-+  unsigned int number = 0;
-+  int result0, result1, result2, result3;
-+
-+  result0 = __builtin_ia32_rdrand32_step (&number);
-+  result1 = __builtin_ia32_rdrand32_step (&number);
-+  result2 = __builtin_ia32_rdrand32_step (&number);
-+  result3 = __builtin_ia32_rdrand32_step (&number);
-+
-+  return result0 + result1 +result2 + result3;
-+}
-+
-+/* { dg-final { scan-assembler-times "rdrand" 4 } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -14,6 +14,6 @@
-     b[i] = a[i+3] * 2;
- }
--/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */
--/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */
-+/* { dg-final { scan-assembler "avx_movups256/1" } } */
-+/* { dg-final { scan-assembler-not "avx_movups/1" } } */
- /* { dg-final { scan-assembler-not "vinsertf128" } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -24,6 +24,6 @@
-     }
- }
--/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */
-+/* { dg-final { scan-assembler-not "avx_movdqu256/2" } } */
- /* { dg-final { scan-assembler "movdqu.*\\*avx_movv16qi_internal/3" } } */
- /* { dg-final { scan-assembler "vextractf128" } } */
-Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -14,7 +14,7 @@
-     b[i+3] = a[i] * c[i];
- }
--/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */
--/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */
-+/* { dg-final { scan-assembler "avx_movups256/2" } } */
-+/* { dg-final { scan-assembler-not "avx_movups/2" } } */
- /* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */
- /* { dg-final { scan-assembler-not "vextractf128" } } */
-Index: gcc/testsuite/gcc.target/i386/pr52736.c
-===================================================================
---- gcc/testsuite/gcc.target/i386/pr52736.c    (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr52736.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,29 @@
-+/* PR target/52736 */
-+/* { dg-do run } */
-+/* { dg-options "-O1 -msse2" } */
-+/* { dg-require-effective-target sse2_runtime } */
-+
-+#include <x86intrin.h>
-+
-+typedef double D __attribute__((may_alias));
-+__attribute__((aligned(16))) static const double r[4] = { 1., 5., 1., 3. };
-+
-+__attribute__((noinline, noclone))
-+void
-+foo (int x)
-+{
-+  asm volatile ("" : "+g" (x) : : "memory");
-+  if (x != 3)
-+    __builtin_abort ();
-+}
-+
-+int
-+main ()
-+{
-+  __m128d t = _mm_set1_pd (5.);
-+  ((D *)(&t))[0] = 1.;
-+  foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[0]))));
-+  ((D *)(&t))[1] = 3.;
-+  foo (_mm_movemask_pd (_mm_cmpeq_pd (t, _mm_load_pd (&r[2]))));
-+  return 0;
-+}
-Index: gcc/testsuite/gfortran.dg/init_flag_10.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/init_flag_10.f90 (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/init_flag_10.f90 (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,43 @@
-+! { dg-do run }
-+! { dg-options "-finit-real=NAN" }
-+! { dg-add-options ieee }
-+! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
-+!
-+! PR fortran/50619
-+!
-+! Contributed by Fred Krogh
-+!
-+! The NaN initialization used to set the associate name to NaN!
-+!
-+
-+module testa2
-+type, public ::  test_ty
-+  real :: rmult = 1.0e0
-+end type test_ty
-+
-+contains
-+  subroutine test(e, var1)
-+    type(test_ty) :: e
-+    real :: var1, var2 ! Should get NaN initialized
-+
-+    ! Should be the default value
-+    if (e%rmult /= 1.0) call abort ()
-+
-+    ! Check that NaN initialization is really turned on
-+    if (var1 == var1) call abort () 
-+    if (var2 == var2) call abort () 
-+
-+    ! The following was failing:
-+    associate (rmult=>e%rmult)
-+      if (e%rmult /= 1.0) call abort ()
-+    end associate
-+  end subroutine test
-+end module testa2
-+
-+program testa1
-+  use testa2
-+  type(test_ty) :: e
-+  real :: var1 ! Should get NaN initialized
-+  call test(e, var1)
-+  stop
-+end program testa1
-Index: gcc/testsuite/gfortran.dg/intrinsic_8.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/intrinsic_8.f90  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/intrinsic_8.f90  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,23 @@
-+! { dg-do compile }
-+!
-+! PR fortran/52452
-+!
-+! Contributed by Roger Ferrer Ibanez
-+!
-+PROGRAM test_etime
-+    IMPLICIT NONE
-+    INTRINSIC :: etime
-+    REAL(4) :: tarray(1:2)
-+    REAL(4) :: result
-+
-+    CALL etime(tarray, result)
-+END PROGRAM test_etime
-+
-+subroutine test_etime2
-+    IMPLICIT NONE
-+    INTRINSIC :: etime
-+    REAL(4) :: tarray(1:2)
-+    REAL(4) :: result
-+
-+    result = etime(tarray)
-+END subroutine test_etime2
-Index: gcc/testsuite/gfortran.dg/optional_absent_2.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/optional_absent_2.f90    (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/optional_absent_2.f90    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,53 @@
-+! { dg-do run }
-+!
-+! PR fortran/51758
-+!
-+! Contributed by Mikael Morin
-+!
-+! Check whether passing NULL() to an elemental procedure works,
-+! where NULL() denotes an absent optional argument.
-+!
-+program p
-+
-+  integer :: a(2)
-+  integer :: b
-+
-+  a = 0
-+  a = foo((/ 1, 1 /), null())
-+!  print *, a
-+  if (any(a /= 2)) call abort
-+
-+  a = 0
-+  a = bar((/ 1, 1 /), null())
-+!  print *, a
-+  if (any(a /= 2)) call abort
-+
-+  b = 0
-+  b = bar(1, null())
-+!  print *, b
-+  if (b /= 2) call abort
-+
-+contains
-+
-+  function foo(a, b)
-+    integer           :: a(:)
-+    integer, optional :: b(:)
-+    integer           :: foo(size(a))
-+
-+    if (present(b)) call abort
-+
-+    foo = 2
-+  end function foo
-+
-+  elemental function bar(a, b)
-+    integer, intent(in)           :: a
-+    integer, intent(in), optional :: b
-+    integer                       :: bar
-+
-+    bar = 2
-+
-+    if (present(b)) bar = 1
-+
-+  end function bar
-+
-+end program p
-Index: gcc/testsuite/gfortran.dg/save_4.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/save_4.f90       (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/save_4.f90       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,13 @@
-+! { dg-do compile }
-+! { dg-options "-std=f2003" }
-+!
-+! PR fortran/53597
-+!
-+MODULE somemodule
-+  IMPLICIT NONE
-+  TYPE sometype
-+    INTEGER :: i
-+    DOUBLE PRECISION, POINTER, DIMENSION(:,:) :: coef => NULL()
-+  END TYPE sometype
-+  TYPE(sometype) :: somevariable ! { dg-error "Fortran 2008: Implied SAVE for module variable 'somevariable' at .1., needed due to the default initialization" }
-+END MODULE somemodule
-Index: gcc/testsuite/gfortran.dg/proc_ptr_34.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/proc_ptr_34.f90  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/proc_ptr_34.f90  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,79 @@
-+! { dg-do compile }
-+!
-+! PR fortran/52469
-+!
-+! This was failing as the DECL of the proc pointer "func"
-+! was used for the interface of the proc-pointer component "my_f_ptr"
-+! rather than the decl of the proc-pointer target
-+!
-+! Contributed by palott@gmail.com
-+!
-+
-+module ExampleFuncs
-+  implicit none
-+
-+  ! NOTE: "func" is a procedure pointer!
-+  pointer :: func
-+  interface
-+     function func (z)
-+        real :: func
-+        real, intent (in) :: z
-+     end function func
-+  end interface
-+
-+  type Contains_f_ptr
-+     procedure (func), pointer, nopass :: my_f_ptr
-+  end type Contains_f_ptr
-+contains
-+
-+function f1 (x)
-+  real :: f1
-+  real, intent (in) :: x
-+
-+  f1 = 2.0 * x
-+
-+  return
-+end function f1
-+
-+function f2 (x)
-+   real :: f2
-+   real, intent (in) :: x
-+
-+   f2 = 3.0 * x**2
-+
-+   return
-+end function f2
-+
-+function fancy (func, x)
-+   real :: fancy
-+   real, intent (in) :: x
-+
-+   interface AFunc
-+      function func (y)
-+         real :: func
-+         real, intent (in) ::y
-+      end function func
-+   end interface AFunc
-+
-+   fancy = func (x) + 3.3 * x
-+end function fancy
-+
-+end module  ExampleFuncs
-+
-+
-+program test_proc_ptr
-+  use ExampleFuncs
-+  implicit none
-+
-+  type (Contains_f_ptr), dimension (2) :: NewType
-+ 
-+  !NewType(1) % my_f_ptr => f1
-+  NewType(2) % my_f_ptr => f2
-+
-+  !write (*, *) NewType(1) % my_f_ptr (3.0), NewType(2) % my_f_ptr (3.0)
-+  write (6, *)  NewType(2) % my_f_ptr (3.0) ! < Shall print '27.0'
-+
-+  stop
-+end program test_proc_ptr
-+
-+! { dg-final { cleanup-modules "examplefuncs" } }
-Index: gcc/testsuite/gfortran.dg/pointer_intent_6.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/pointer_intent_6.f90     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/pointer_intent_6.f90     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,19 @@
-+! { dg-do compile }
-+!
-+! PR fortran/52864
-+!
-+! Assigning to an intent(in) pointer (which is valid).
-+!
-+      program test
-+         type PoisFFT_Solver3D
-+           complex, dimension(:,:,:), &
-+                           pointer :: work => null()
-+         end type PoisFFT_Solver3D
-+      contains
-+        subroutine PoisFFT_Solver3D_FullPeriodic(D, p)
-+          type(PoisFFT_Solver3D), intent(in) :: D
-+          real, intent(in), pointer :: p(:)
-+          D%work(i,j,k) = 0.0
-+          p = 0.0
-+        end subroutine
-+      end
-Index: gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90
-===================================================================
---- gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gfortran.dg/realloc_on_assign_15.f90 (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,40 @@
-+! { dg-do run }
-+!
-+! PR fortran/53389
-+!
-+! The program was leaking memory before due to
-+! realloc on assignment and nested functions.
-+!
-+module foo
-+  implicit none
-+  contains
-+
-+  function filler(array, val)
-+    real, dimension(:), intent(in):: array
-+    real, dimension(size(array)):: filler
-+    real, intent(in):: val
-+
-+    filler=val
-+
-+  end function filler
-+end module
-+
-+program test
-+  use foo
-+  implicit none
-+
-+  real, dimension(:), allocatable:: x, y
-+  integer, parameter:: N=1000 !*1000
-+  integer:: i
-+
-+!  allocate( x(N) )
-+  allocate( y(N) )
-+  y=0.0
-+
-+  do i=1, N
-+!    print *,i
-+    x=filler(filler(y, real(2*i)), real(i))
-+    y=y+x
-+  end do
-+
-+end program test
-Index: gcc/testsuite/gcc.c-torture/execute/pr53084.c
-===================================================================
---- gcc/testsuite/gcc.c-torture/execute/pr53084.c      (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr53084.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,18 @@
-+/* PR middle-end/53084 */
-+
-+extern void abort (void);
-+
-+__attribute__((noinline, noclone)) void
-+bar (const char *p)
-+{
-+  if (p[0] != 'o' || p[1] != 'o' || p[2])
-+    abort ();
-+}
-+
-+int
-+main ()
-+{
-+  static const char *const foo[] = {"foo" + 1};
-+  bar (foo[0]);
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.c-torture/execute/20120427-1.c
-===================================================================
---- gcc/testsuite/gcc.c-torture/execute/20120427-1.c   (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/20120427-1.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,36 @@
-+typedef struct sreal
-+{
-+  unsigned sig;               /* Significant.  */
-+  int exp;            /* Exponent.  */
-+} sreal;
-+
-+sreal_compare (sreal *a, sreal *b)
-+{
-+  if (a->exp > b->exp)
-+    return 1;
-+  if (a->exp < b->exp)
-+    return -1;
-+  if (a->sig > b->sig)
-+    return 1;
-+  return -(a->sig < b->sig);
-+}
-+
-+sreal a[] = {
-+   { 0, 0 },
-+   { 1, 0 },
-+   { 0, 1 },
-+   { 1, 1 }
-+};
-+
-+int main()
-+{
-+  int i, j;
-+  for (i = 0; i <= 3; i++) {
-+    for (j = 0; j < 3; j++) {
-+      if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort();
-+      if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort();
-+      if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort();
-+    }
-+  }
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.c-torture/compile/pr53418-1.c
-===================================================================
---- gcc/testsuite/gcc.c-torture/compile/pr53418-1.c    (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr53418-1.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,5 @@
-+void
-+f (void)
-+{
-+  int i = (0 ? 1 : 0U / 0);
-+}
-Index: gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
-===================================================================
---- gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c    (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,56 @@
-+/* Inspired by the test case for PR middle-end/52640.  */
-+
-+typedef struct
-+{
-+    char *value;
-+} REFERENCE;
-+
-+/* Add a few "extern int Xxxxxx ();" declarations.  */
-+#undef DEF
-+#undef LIM1
-+#undef LIM2
-+#undef LIM3
-+#undef LIM4
-+#undef LIM5
-+#undef LIM6
-+#define DEF(x)        extern int x ()
-+#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \
-+              DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9);
-+#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
-+              LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
-+#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
-+              LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
-+#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
-+              LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
-+#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
-+              LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
-+#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
-+              LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
-+LIM5 (X);
-+
-+/* Add references to them, or GCC will simply ignore the extern decls.  */
-+#undef DEF
-+#undef LIM1
-+#undef LIM2
-+#undef LIM3
-+#undef LIM4
-+#undef LIM5
-+#undef LIM6
-+#define DEF(x)        (char *) x
-+#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \
-+              DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9),
-+#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
-+              LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
-+#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
-+              LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
-+#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
-+              LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
-+#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
-+              LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
-+#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
-+              LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
-+REFERENCE references[] = {
-+  LIM5 (X)
-+  0
-+};
-+
-Index: gcc/testsuite/gcc.c-torture/compile/pr53418-2.c
-===================================================================
---- gcc/testsuite/gcc.c-torture/compile/pr53418-2.c    (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr53418-2.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,5 @@
-+void
-+f (void)
-+{
-+  int i = (1 ? 0U / 0 : 1);
-+}
-Index: gcc/testsuite/gcc.dg/pr52862.c
-===================================================================
---- gcc/testsuite/gcc.dg/pr52862.c     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/pr52862.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O" } */
-+
-+void ASMAtomicWritePtrVoid(const void *pv);
-+void rtThreadDestroy(void)
-+{
-+  void * const pvTypeChecked = ((void *)0);
-+  ASMAtomicWritePtrVoid((void *)(pvTypeChecked));
-+}
-Index: gcc/testsuite/gcc.dg/stack-usage-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/stack-usage-1.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.dg/stack-usage-1.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -41,6 +41,8 @@
- #  define SIZE 160 /* 256 -  96 bytes for register save area */
- #elif defined (__SPU__)
- #  define SIZE 224
-+#elif defined (__sh__)
-+#  define SIZE 252
- #else
- #  define SIZE 256
- #endif
-Index: gcc/testsuite/gcc.dg/torture/pr53908.c
-===================================================================
---- gcc/testsuite/gcc.dg/torture/pr53908.c     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/torture/pr53908.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,288 @@
-+/* { dg-do run } */
-+/* SEGV at comment below.  */
-+typedef unsigned int size_t;
-+typedef enum har {
-+  he_fatal = (-199),
-+  he_not_initialized,
-+  he_bad_input,
-+  he_memory_too_small,
-+  he_bad_action,
-+  he_duplicate,
-+  he_bad_nonce,
-+  he_stale_nonce,
-+  he_bad_credentials,
-+  he_bad_user,
-+  he_no_such_user,
-+  he_bad_passwd,
-+  he_unknown_auth_scheme,
-+  he_not_found,
-+  he_failed_digest_file_check,
-+  he_failed_digest_file_save,
-+  he_process_not_privileged,
-+  he_other,
-+  he_end_of_range,
-+  ha_no_error = 0,
-+  ha_no_value = 1
-+} har;
-+typedef enum realm_type
-+{
-+  axis_realm = 0,
-+  ws_realm
-+} realm_type;
-+
-+__attribute__((__noclone__, __noinline__))
-+har has_www_auth(char *, size_t, realm_type, har);
-+
-+__attribute__((__noclone__, __noinline__))
-+har has_auth_user(const char *, const char *, realm_type, char *, size_t);
-+
-+__attribute__((__noclone__, __noinline__))
-+char *ha_get_string_value(void);
-+
-+typedef struct
-+{
-+  unsigned int track_id;
-+  char* user;
-+  char* realm;
-+  char* authent;
-+  int internal_realm;
-+} request;
-+enum user_response {
-+  file_not_found_user_response = -3,
-+  access_denied_user_response = -2,
-+  no_user_response = -1,
-+  ok_user_response = 0
-+};
-+struct realm_group {
-+  char *name;
-+  int id;
-+  struct realm_group *next;
-+};
-+struct realm {
-+  char *name;
-+  char *space;
-+  struct realm_group *groups;
-+  struct realm *next;
-+};
-+struct user_info {
-+  char *name;
-+  int no_groups;
-+  int groups[128];
-+  struct user_info *next;
-+};
-+static struct user_info *find_user(const char *user_name);
-+static int is_member_of_groups(const struct user_info *user_item,
-+                                const struct realm_group *groups);
-+int authent_author(request *req);
-+struct realm *realms = ((void *)0);
-+struct user_info *users = ((void *)0);
-+static struct user_info*
-+find_user(const char *user_name)
-+{
-+  struct user_info *user_item;
-+  user_item = users;
-+  while (user_item != ((void *)0)) {
-+    /* SEGV due to NULL access here on user_name.  See also comment below.  */
-+    if ((__builtin_strcmp(user_item->name, user_name) == 0))
-+      break;
-+    user_item = user_item->next;
-+  }
-+  return user_item;
-+}
-+static int
-+is_member_of_groups(const struct user_info *user_item,
-+                    const struct realm_group *groups)
-+{
-+  const struct realm_group *group_item;
-+  int i;
-+  group_item = groups;
-+  while (group_item != ((void *)0)) {
-+    for (i = 0; i < user_item->no_groups; i++)
-+      if (user_item->groups[i] == group_item->id)
-+      return 0;
-+    group_item = group_item->next;
-+  }
-+  return -1;
-+}
-+char *foo (void) __attribute__((__noclone__, __noinline__));
-+char* g_strdup (const char *str) __attribute__((__malloc__, __noclone__, __noinline__));
-+int g_strcmp0 (const char *str1, const char *str2);
-+static int
-+is_basic(char **user)
-+{
-+  char *passwd_ptr;
-+  char *authent = foo();
-+  passwd_ptr = __builtin_strchr(authent, ':');
-+  if (passwd_ptr != ((void *)0)) {
-+    *user = g_strdup(authent);
-+    return 0;
-+  }
-+  return -1;
-+}
-+static int
-+is_digest(char **user)
-+{
-+  int ret_val = -1;
-+  char *authent;
-+  authent = ha_get_string_value();
-+  if (authent) {
-+    *user = g_strdup(authent);
-+    ret_val = 0;
-+  }
-+  return ret_val;
-+}
-+__attribute__((__noclone__, __noinline__))
-+void g_free (void * mem);
-+static enum user_response
-+get_user_info_from_header(const realm_type type,
-+                          char **user_name,
-+                          struct user_info **user_item)
-+{
-+  int ret_val = no_user_response;
-+  if ((type == ws_realm)) {
-+    if (is_basic(user_name) == 0)
-+      ret_val = access_denied_user_response;
-+    if (is_digest(user_name) == 0)
-+      ret_val = ok_user_response;
-+  } else {
-+    if (is_basic(user_name) < 0 &&
-+      /* Load of *user_name here, but not after the is_digest call.  */
-+      is_digest(user_name) < 0)
-+      ;
-+    else if ((*user_item = find_user(*user_name)) != ((void *)0))
-+      ret_val = ok_user_response;
-+    else
-+      ret_val = access_denied_user_response;
-+    if (ret_val != ok_user_response)
-+      g_free(*user_name);
-+  }
-+  return ret_val;
-+}
-+static enum user_response
-+authenticate_user(request *req,
-+                  char **user_name,
-+                  struct user_info **user_item)
-+{
-+  char *authent = ((void *)0);
-+  har resp = ha_no_value;
-+  enum user_response user_resp;
-+  int ret_val = no_user_response;
-+  if (req->authent && __builtin_strlen(req->authent)) {
-+    authent = req->authent;
-+    user_resp = get_user_info_from_header(req->internal_realm,
-+                                          user_name,
-+                                          user_item);
-+    if (user_resp == ok_user_response) {
-+      resp = has_auth_user(authent, 0, req->internal_realm, "", 1);
-+      if (resp == ha_no_error)
-+      ret_val = ok_user_response;
-+      else if (resp != he_stale_nonce)
-+      ret_val = access_denied_user_response;
-+    } else if (user_resp == access_denied_user_response)
-+      ret_val = access_denied_user_response;
-+  }
-+  if (resp != he_memory_too_small && resp != ha_no_error)
-+    resp = has_www_auth("", 1, req->internal_realm, resp);
-+  return ret_val;
-+}
-+
-+int __attribute__ ((__noinline__, __noclone__))
-+authent_author(request *req)
-+{
-+  struct realm *realm;
-+  char *user_name = ((void *)0);
-+  struct user_info *user_item = ((void *)0);
-+  int res = 0;
-+  asm ("");
-+  realm = realms;
-+  if (__builtin_strcmp("Wsd", realm->name) == 0) {
-+    req->internal_realm = ws_realm;
-+    is_digest(&user_name);
-+  }
-+  if (authenticate_user(req, &user_name, &user_item) < 0) {
-+    if (user_name != ((void *)0))
-+      req->user = user_name;
-+    res = -2;
-+    goto authent_author_return;
-+  }
-+  if (is_member_of_groups(user_item, realm->groups) < 0)
-+    res = -1;
-+authent_author_return:
-+  return res;
-+}
-+
-+int good0, good1, good2;
-+
-+__attribute__ ((__noinline__, __noclone__))
-+char *foo(void)
-+{
-+  asm ("");
-+  good0++;
-+  return "";
-+}
-+
-+__attribute__ ((__noinline__, __noclone__))
-+char *ha_get_string_value(void)
-+{
-+  asm ("");
-+  good1++;
-+  return "f";
-+}
-+
-+__attribute__ ((__noinline__, __noclone__))
-+har has_auth_user(const char *a, const char *b, realm_type c, char *d, size_t e)
-+{
-+  asm ("");
-+  if (*a != 'z' || a[1] != 0 || b != 0 || c != axis_realm || *d != 0
-+      || e != 1)
-+    __builtin_abort ();
-+  return ha_no_error;
-+}
-+
-+__attribute__ ((__noinline__, __noclone__))
-+har has_www_auth(char *a, size_t b, realm_type c, har d)
-+{
-+  (void)(*a+b+c+d);
-+  asm ("");
-+  __builtin_abort ();
-+}
-+
-+
-+char *strdupped_user = "me";
-+__attribute__((__malloc__, __noclone__, __noinline__))
-+char* g_strdup (const char *str)
-+{
-+  asm ("");
-+  if (*str != 'f')
-+    __builtin_abort ();
-+  good2++;
-+  return strdupped_user;
-+}
-+
-+__attribute__((__noclone__, __noinline__))
-+void g_free (void * mem)
-+{
-+  (void)mem;
-+  asm ("");
-+  __builtin_abort ();
-+}
-+
-+struct user_info me = { .name = "me", .no_groups = 1, .groups = {42}, .next = 0};
-+struct user_info you = { .name = "you", .next = &me};
-+struct realm_group xgroups = { .name = "*", .id = 42, .next = 0};
-+
-+int main(void)
-+{
-+  char *orig_user = "?";
-+  struct realm r = { .name = "x", .space = "space?", .groups = &xgroups, .next = 0};
-+  request req = { .user = orig_user, .realm = "!", .authent = "z",
-+                .internal_realm = axis_realm};
-+  realms = &r;
-+  users = &you;
-+  if (authent_author (&req) != 0 || good0 != 1 || good1 != 1 || good2 != 1
-+      || req.user != orig_user
-+      || req.internal_realm != axis_realm)
-+    __builtin_abort ();
-+  __builtin_exit (0);
-+}
-+
-Index: gcc/testsuite/gcc.dg/torture/pr52693.c
-===================================================================
---- gcc/testsuite/gcc.dg/torture/pr52693.c     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/torture/pr52693.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,33 @@
-+/* { dg-do run } */
-+
-+struct pair
-+{
-+  int x;
-+  int y;
-+};
-+
-+struct array
-+{
-+  struct pair elems[ 2 ];
-+  unsigned index;
-+};
-+
-+extern void abort ();
-+
-+void __attribute__ ((noinline,noclone))
-+test_results (int x1, int y1, int x2, int y2)
-+{
-+  if (x1 != x2 || y1 != y2)
-+    abort ();
-+}
-+
-+int
-+main (void)
-+{
-+  struct array arr = {{{1,2}, {3,4}}, 1};
-+  struct pair last = arr.elems[arr.index];
-+
-+  test_results ( last.x, last.y, arr.elems[1].x, arr.elems[1].y);
-+
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.dg/torture/pr53790.c
-===================================================================
---- gcc/testsuite/gcc.dg/torture/pr53790.c     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/torture/pr53790.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,17 @@
-+/* { dg-do compile } */
-+
-+typedef struct s {
-+    int value;
-+} s_t;
-+
-+static inline int 
-+read(s_t const *var)
-+{
-+  return var->value;
-+}
-+
-+int main()
-+{
-+  extern union u extern_var;
-+  return read((s_t *)&extern_var);
-+}
-Index: gcc/testsuite/gcc.dg/torture/pr52407.c
-===================================================================
---- gcc/testsuite/gcc.dg/torture/pr52407.c     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/torture/pr52407.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,33 @@
-+/* { dg-do run } */
-+
-+extern void abort (void);
-+
-+typedef long long T;
-+typedef T vl_t __attribute__((vector_size(2 * sizeof (T))));
-+
-+vl_t  ul[4], vl[4] = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
-+
-+static void
-+mul_vl_l(vl_t *u, vl_t *v, T x, int m)
-+{
-+  vl_t         w;
-+  T *p = (T *)&w;
-+  p[0] = p[1] = x;
-+  while (m--)
-+    *u++ = *v++ * w;
-+}
-+
-+int
-+main(int argc, char *argv[])
-+{
-+  int i;
-+  T *pl;
-+
-+  pl = (T *) &ul;
-+  mul_vl_l(ul, vl, 2, 4);
-+  for (i = 0; i < 8; i++)
-+    if (pl[i] != 2 * (i + 1))
-+      abort ();
-+
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.dg/torture/pr51071-2.c
-===================================================================
---- gcc/testsuite/gcc.dg/torture/pr51071-2.c   (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/torture/pr51071-2.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,38 @@
-+/* { dg-do compile } */
-+/* { dg-options "-fno-delete-null-pointer-checks" } */
-+
-+extern struct module __this_module;
-+static inline void
-+trace_module_get  (struct module *mod, unsigned long ip) { }
-+struct module;
-+static inline __attribute__((no_instrument_function))
-+int try_module_get(struct module *module)
-+{
-+  int ret = 1;
-+  if (module)
-+    {
-+      if (module_is_live(module))
-+      {
-+        __label__ __here;
-+        asm("");
-+        __here:
-+        trace_module_get(module, (unsigned long)&&__here);
-+      }
-+      else
-+      ret = 0;
-+    }
-+  return ret;
-+}
-+struct net_device;
-+struct net_device_ops {
-+    int (*ndo_open)(struct net_device *dev);
-+};
-+int t3e3_open(struct net_device *dev)
-+{
-+  int ret = hdlc_open(dev);
-+  if (ret)
-+    return ret;
-+  try_module_get((&__this_module));
-+  return 0;
-+}
-+const struct net_device_ops t3e3_ops = { .ndo_open = t3e3_open };
-Index: gcc/testsuite/gcc.dg/torture/pr51071.c
-===================================================================
---- gcc/testsuite/gcc.dg/torture/pr51071.c     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/torture/pr51071.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,33 @@
-+/* { dg-do compile } */
-+
-+void foo (void);
-+void bar (void *);
-+extern int t;
-+
-+static void kmalloc_large (int size, int flags)
-+{
-+  (void) size;
-+  (void) flags;
-+  foo ();
-+  bar (({__here:&&__here;}));
-+}
-+
-+static void kmalloc (int size, int flags)
-+{
-+  if (size)
-+    {
-+      if ((unsigned long) size > 0x1000)
-+      kmalloc_large (size, flags);
-+
-+      if (flags)
-+      bar (({__here:&&__here;}));
-+    }
-+}
-+
-+void compress_file_range (int i, int j, int k)
-+{
-+  int nr_pages = ({j < k;});
-+
-+  if (i || t)
-+    kmalloc (0x1000UL * nr_pages, 0x40UL);
-+}
-Index: gcc/testsuite/gcc.dg/volatile-bitfields-2.c
-===================================================================
---- gcc/testsuite/gcc.dg/volatile-bitfields-2.c        (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/gcc.dg/volatile-bitfields-2.c        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,15 @@
-+/* { dg-do run } */
-+/* { dg-options "-fstrict-volatile-bitfields" } */
-+
-+extern void abort(void);
-+struct thing {
-+  volatile unsigned short a: 8;
-+  volatile unsigned short b: 8;
-+} t = {1,2};
-+
-+int main()
-+{
-+  t.a = 3;
-+  if (t.a !=3 || t.b !=2) abort();
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.dg/20020201-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/20020201-1.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/gcc.dg/20020201-1.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -7,12 +7,8 @@
- /* { dg-options "-fprofile-arcs" } */
- /* { dg-do run { target native } } */
--extern void abort (void);
--extern void exit (int);
-+#include <stdlib.h>
--int rand (void);
--void srand (unsigned int seed);
--
- int globvar;
- void
-Index: gcc/testsuite/ChangeLog
-===================================================================
---- gcc/testsuite/ChangeLog    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/testsuite/ChangeLog    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,232 @@
-+2012-08-06  Anna Tikhonova  <anna.m.tikhonova@gmail.com>
-+
-+      * gcc.dg/20020201-1.c: Remove declarations for exit, abort,
-+      rand, srand. Include <stdlib.h>.
-+
-+2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>
-+
-+      Backport from trunk:
-+      2012-07-13  Hans-Peter Nilsson  <hp@axis.com>
-+
-+      PR rtl-optimization/53908
-+      * gcc.dg/torture/pr53908.c: New test.
-+
-+2012-07-14  Mikael Morin  <mikael.morin@gcc.gnu.org>
-+
-+      Backport from trunk:
-+      2012-01-09  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/51758
-+      * gfortran.dg/optional_absent_2.f90: New.
-+
-+2012-07-03  Michael Hope  <michael.hope@linaro.org>
-+
-+      PR c++/53814
-+      * g++.dg/cpp0x/nullptr28.C: Change selector for explicit
-+      options.
-+
-+2012-06-28  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/53790
-+      * gcc.dg/torture/pr53790.c: New testcase.
-+
-+2012-06-25  Jason Merrill  <jason@redhat.com>
-+
-+      PR c++/52988
-+      * g++.dg/cpp0x/nullptr28.C: New.
-+
-+2012-06-19  Kaz Kojima  <kkojima@gcc.gnu.org>
-+
-+      * gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets
-+      and add __sh__ case.
-+
-+2012-06-14  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/53597
-+      * gfortran.dg/save_4.f90: New.
-+
-+2012-06-13  Christian Bruel  <christian.bruel@st.com>
-+
-+      PR target/53621
-+      * gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH.
-+
-+2012-06-05  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/50619
-+      * gfortran.dg/init_flag_10.f90: New.
-+
-+2012-06-04  Edmar Wienskoski  <edmar@freescale.com>
-+
-+      PR target/53559
-+      * gcc.target/powerpc/cell_builtin_1.c: New test case.
-+      * gcc.target/powerpc/cell_builtin_2.c: Ditto.
-+      * gcc.target/powerpc/cell_builtin_3.c: Ditto.
-+      * gcc.target/powerpc/cell_builtin_4.c: Ditto.
-+      * gcc.target/powerpc/cell_builtin_5.c: Ditto.
-+      * gcc.target/powerpc/cell_builtin_6.c: Ditto.
-+      * gcc.target/powerpc/cell_builtin_7.c: Ditto.
-+      * gcc.target/powerpc/cell_builtin_8.c: Ditto.
-+
-+2012-05-23  Michael Hope  <michael.hope@linaro.org>
-+
-+      PR c++/52796
-+      * g++.dg/cpp0x/variadic-value1.C: Change selector for explicit
-+      options.
-+
-+2012-05-23  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/53389
-+      * gfortran.dg/realloc_on_assign_15.f90: New.
-+
-+2012-05-22  Richard Guenther  <rguenther@suse.de>
-+
-+      Backport from mainline
-+      2011-11-10  Richard Guenther  <rguenther@suse.de>
-+
-+      PR middle-end/51071
-+      * gcc.dg/torture/pr51071.c: New testcase.
-+      * gcc.dg/torture/pr51071-2.c: Likewise.
-+
-+2012-05-22  Richard Guenther  <rguenther@suse.de>
-+
-+      Backport from mainline
-+      2012-02-28  Richard Guenther  <rguenther@suse.de>
-+
-+      PR target/52407
-+      * gcc.dg/torture/pr52407.c: New testcase.
-+
-+2012-05-22  Richard Guenther  <rguenther@suse.de>
-+
-+      Backport from mainline
-+      2012-04-12  Richard Guenther  <rguenther@suse.de>
-+
-+      PR c/52862
-+      * gcc.dg/pr52862.c: New testcase.
-+
-+2012-05-21  Joseph Myers  <joseph@codesourcery.com>
-+
-+      PR c/53418
-+      * gcc.c-torture/compile/pr53418-1.c,
-+      gcc.c-torture/compile/pr53418-2.c: New tests.
-+
-+2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+      Backport from mainline
-+      2012-05-21  Uros Bizjak  <ubizjak@gmail.com>
-+                  H.J. Lu  <hongjiu.lu@intel.com>
-+
-+      PR target/53416
-+      * gcc.target/i386/pr53416.c: New file.
-+
-+2012-05-14  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      * gcc.target/i386/avx256-unaligned-load-[1234].c: Update scan strings.
-+      * gcc.target/i386/avx256-unaligned-store-[1234].c: Ditto.
-+
-+2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      Backport from mainline
-+      2012-05-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      PR target/53199
-+      * gcc.target/powwerpc/pr53199.c: New file.
-+
-+2012-05-02  Tobias Burnus  <burnus@net-b.de>
-+
-+      Backport from mainline
-+      2012-04-16  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/52864
-+      * gfortran.dg/pointer_intent_6.f90: New.
-+
-+2012-04-30  Uros Bizjak  <ubizjak@gmail.com>
-+
-+      Backport from mainline
-+      2012-04-27  Paolo Bonzini  <bonzini@gnu.org>
-+
-+      PR target/53138
-+      * gcc.c-torture/execute/20120427-1.c: New testcase.
-+
-+2012-04-24  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR middle-end/53084
-+      * gcc.c-torture/execute/pr53084.c: New test.
-+
-+2012-04-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      Backport from mainline
-+      2012-04-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
-+
-+      PR target/52775
-+      * gcc.target/powerpc/pr52775.c: New file.
-+
-+2012-04-03  Jason Merrill  <jason@redhat.com>
-+
-+      PR c++/52796
-+      * g++.dg/cpp0x/variadic-value1.C: New.
-+
-+2012-03-28  Joey Ye  <joey.ye@arm.com>
-+
-+      Backported from mainline
-+      2011-12-20  Bernd Schmidt  <bernds@codesourcery.com>
-+
-+      PR middle-end/51200
-+      * gcc.target/arm/volatile-bitfields-4.c: New test.
-+      * c-c++-common/abi-bf.c: New test.
-+
-+      2011-12-26  Joey Ye  <joey.ye@arm.com>
-+
-+      PR middle-end/51200
-+      * gcc.dg/volatile-bitfields-2.c: New test.
-+
-+2012-03-28  Martin Jambor  <mjambor@suse.cz>
-+
-+      Backported from mainline
-+      2012-03-27  Martin Jambor  <mjambor@suse.cz>
-+
-+      PR middle-end/52693
-+      * gcc.dg/torture/pr52693.c: New test.
-+
-+2012-03-28  Jakub Jelinek  <jakub@redhat.com>
-+
-+      PR target/52736
-+      * gcc.target/i386/pr52736.c: New test.
-+
-+2012-03-24  Jan Hubicka  <jh@suse.cz>
-+
-+      PR middle-end/51737
-+      * g++.dg/torture/pr51737.C: New testcase
-+
-+2012-03-24  Steven Bosscher  <steven@gcc.gnu.org>
-+
-+      PR middle-end/52640
-+      * gcc.c-torture/compile/limits-externdecl.c: New test.
-+
-+2012-03-16  Jan Hubicka  <jh@suse.cz>
-+
-+      PR middle-end/48600
-+      * g++.dg/torture/pr48600.C: New testcase.
-+
-+2012-03-10  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/52469
-+      * gfortran.dg/proc_ptr_34.f90: New.
-+
-+2012-03-06  Tobias Burnus  <burnus@net-b.de>
-+
-+      Backport from mainline
-+      2012-03-02  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/52452
-+      * gfortran.dg/intrinsic_8.f90: New.
-+
-+2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+      Backport from mainline
-+      2012-03-02  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+      * gcc.target/powerpc/pr52457.c: New test.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: gcc/testsuite/g++.dg/cpp0x/variadic-value1.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/variadic-value1.C       (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/g++.dg/cpp0x/variadic-value1.C       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,24 @@
-+// PR c++/52796
-+// { dg-options "-std=c++0x -pedantic-errors" }
-+
-+inline void *operator new(__SIZE_TYPE__ s, void *p) { return p; }
-+
-+struct A
-+{
-+  int i;
-+  template<class... Ts>
-+  A(Ts&&... ts): i(ts...) { }
-+};
-+
-+static union {
-+  unsigned char c[sizeof(A)];
-+  int i;
-+};
-+
-+int main()
-+{
-+  i = 0xdeadbeef;
-+  new(c) A;
-+  if (i != 0)
-+    __builtin_abort();
-+}
-Index: gcc/testsuite/g++.dg/cpp0x/nullptr28.C
-===================================================================
---- gcc/testsuite/g++.dg/cpp0x/nullptr28.C     (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/g++.dg/cpp0x/nullptr28.C     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,17 @@
-+// { dg-do run }
-+// { dg-options "-std=c++0x -pedantic-errors" }
-+
-+typedef decltype(nullptr) nullptr_t;
-+
-+int i;
-+nullptr_t n;
-+const nullptr_t& f() { ++i; return n; }
-+
-+nullptr_t g() { return f(); }
-+
-+int main()
-+{
-+  g();
-+  if (i != 1)
-+    __builtin_abort ();
-+}
-Index: gcc/testsuite/c-c++-common/abi-bf.c
-===================================================================
---- gcc/testsuite/c-c++-common/abi-bf.c        (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/testsuite/c-c++-common/abi-bf.c        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,3 @@
-+/* { dg-warning "incompatible" } */
-+/* { dg-do compile } */
-+/* { dg-options "-fstrict-volatile-bitfields -fabi-version=1" } */
-Index: gcc/cp/typeck.c
-===================================================================
---- gcc/cp/typeck.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cp/typeck.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1822,7 +1822,7 @@
-   if (error_operand_p (exp))
-     return error_mark_node;
--  if (NULLPTR_TYPE_P (type))
-+  if (NULLPTR_TYPE_P (type) && !TREE_SIDE_EFFECTS (exp))
-     return nullptr_node;
-   /* build_c_cast puts on a NOP_EXPR to make the result not an lvalue.
-Index: gcc/cp/decl.c
-===================================================================
---- gcc/cp/decl.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cp/decl.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -3636,7 +3636,7 @@
-     TYPE_SIZE_UNIT (nullptr_type_node) = size_int (GET_MODE_SIZE (ptr_mode));
-     TYPE_UNSIGNED (nullptr_type_node) = 1;
-     TYPE_PRECISION (nullptr_type_node) = GET_MODE_BITSIZE (ptr_mode);
--    SET_TYPE_MODE (nullptr_type_node, Pmode);
-+    SET_TYPE_MODE (nullptr_type_node, ptr_mode);
-     record_builtin_type (RID_MAX, "decltype(nullptr)", nullptr_type_node);
-     nullptr_node = build_int_cst (nullptr_type_node, 0);
-   }
-Index: gcc/cp/ChangeLog
-===================================================================
---- gcc/cp/ChangeLog   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cp/ChangeLog   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,20 @@
-+2012-06-25  Jason Merrill  <jason@redhat.com>
-+
-+      PR c++/52988
-+      * typeck.c (decay_conversion): Don't discard side-effects from
-+      expressions of nullptr_t.
-+
-+2012-04-04  Steve Ellcey <sje@cup.hp.com>
-+
-+      Backported from mainline.
-+      * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
-+
-+2012-04-03  Jason Merrill  <jason@redhat.com>
-+
-+      PR c++/52796
-+      * pt.c (tsubst_initializer_list): A pack expansion with no elements
-+      means value-initialization.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: gcc/cp/pt.c
-===================================================================
---- gcc/cp/pt.c        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cp/pt.c        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -17785,6 +17785,7 @@
-             }
-           else
-             {
-+            tree tmp;
-               decl = tsubst_copy (TREE_PURPOSE (t), argvec, 
-                                   tf_warning_or_error, NULL_TREE);
-@@ -17793,10 +17794,17 @@
-                 in_base_initializer = 1;
-             init = TREE_VALUE (t);
-+            tmp = init;
-             if (init != void_type_node)
-               init = tsubst_expr (init, argvec,
-                                   tf_warning_or_error, NULL_TREE,
-                                   /*integral_constant_expression_p=*/false);
-+            if (init == NULL_TREE && tmp != NULL_TREE)
-+              /* If we had an initializer but it instantiated to nothing,
-+                 value-initialize the object.  This will only occur when
-+                 the initializer was a pack expansion where the parameter
-+                 packs used in that expansion were of length zero.  */
-+              init = void_type_node;
-               in_base_initializer = 0;
-             }
-Index: gcc/cp/semantics.c
-===================================================================
---- gcc/cp/semantics.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/cp/semantics.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -6763,7 +6763,6 @@
-   STRIP_NOPS (sub);
-   subtype = TREE_TYPE (sub);
--  gcc_assert (POINTER_TYPE_P (subtype));
-   if (TREE_CODE (sub) == ADDR_EXPR)
-     {
-Index: gcc/tree-ssa-ccp.c
-===================================================================
---- gcc/tree-ssa-ccp.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/tree-ssa-ccp.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1364,6 +1364,10 @@
-       if (!DECL_INITIAL (base)
-         && (TREE_STATIC (base) || DECL_EXTERNAL (base)))
-         return error_mark_node;
-+      /* Do not return an error_mark_node DECL_INITIAL.  LTO uses this
-+       as special marker (_not_ zero ...) for its own purposes.  */
-+      if (DECL_INITIAL (base) == error_mark_node)
-+      return NULL_TREE;
-       return DECL_INITIAL (base);
-     case ARRAY_REF:
-Index: gcc/expr.c
-===================================================================
---- gcc/expr.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/expr.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -5971,6 +5971,8 @@
-               || bitpos % GET_MODE_ALIGNMENT (mode))
-              && SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target)))
-             || (bitpos % BITS_PER_UNIT != 0)))
-+      || (bitsize >= 0 && mode != BLKmode
-+        && GET_MODE_BITSIZE (mode) > bitsize)
-       /* If the RHS and field are a constant size and the size of the
-        RHS isn't the same size as the bitfield, we must use bitfield
-        operations.  */
-@@ -9182,6 +9184,7 @@
-       orig_op0 = op0
-         = expand_expr (tem,
-                        (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
-+                        && COMPLETE_TYPE_P (TREE_TYPE (tem))
-                         && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem)))
-                             != INTEGER_CST)
-                         && modifier != EXPAND_STACK_PARM
-Index: gcc/gcov-iov.c
-===================================================================
---- gcc/gcov-iov.c     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/gcov-iov.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -19,8 +19,8 @@
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
--#include <stdio.h>
--#include <stdlib.h>
-+#include "bconfig.h"
-+#include "system.h"
- /* Command line arguments are the base GCC version and the development
-    phase (the latter may be an empty string).  */
-@@ -48,8 +48,14 @@
-   if (*ptr == '.')
-     minor = strtoul (ptr + 1, 0, 10);
-+  /* For releases the development phase is an empty string, for
-+     prerelease versions on a release branch it is "prerelease".
-+     Consider both equal as patch-level releases do not change
-+     the GCOV version either.
-+     On the trunk the development phase is "experimental".  */
-   phase = argv[2][0];
--  if (phase == '\0')
-+  if (phase == '\0'
-+      || strcmp (argv[2], "prerelease") == 0)
-     phase = '*';
-   v[0] = (major < 10 ? '0' : 'A' - 10) + major;
-Index: gcc/predict.c
-===================================================================
---- gcc/predict.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/predict.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1790,7 +1790,8 @@
- static void
- predict_paths_for_bb (basic_block cur, basic_block bb,
-                     enum br_predictor pred,
--                    enum prediction taken)
-+                    enum prediction taken,
-+                    bitmap visited)
- {
-   edge e;
-   edge_iterator ei;
-@@ -1811,7 +1812,7 @@
-       continue;
-       gcc_assert (bb == cur || dominated_by_p (CDI_POST_DOMINATORS, cur, bb));
--      /* See if there is how many edge from e->src that is not abnormal
-+      /* See if there is an edge from e->src that is not abnormal
-        and does not lead to BB.  */
-       FOR_EACH_EDGE (e2, ei2, e->src->succs)
-       if (e2 != e
-@@ -1824,16 +1825,20 @@
-       /* If there is non-abnormal path leaving e->src, predict edge
-        using predictor.  Otherwise we need to look for paths
--       leading to e->src.  */
-+       leading to e->src.
-+
-+       The second may lead to infinite loop in the case we are predicitng
-+       regions that are only reachable by abnormal edges.  We simply
-+       prevent visiting given BB twice.  */
-       if (found)
-         predict_edge_def (e, pred, taken);
--      else
--      predict_paths_for_bb (e->src, e->src, pred, taken);
-+      else if (bitmap_set_bit (visited, e->src->index))
-+      predict_paths_for_bb (e->src, e->src, pred, taken, visited);
-     }
-   for (son = first_dom_son (CDI_POST_DOMINATORS, cur);
-        son;
-        son = next_dom_son (CDI_POST_DOMINATORS, son))
--    predict_paths_for_bb (son, bb, pred, taken);
-+    predict_paths_for_bb (son, bb, pred, taken, visited);
- }
- /* Sets branch probabilities according to PREDiction and
-@@ -1843,7 +1848,9 @@
- predict_paths_leading_to (basic_block bb, enum br_predictor pred,
-                         enum prediction taken)
- {
--  predict_paths_for_bb (bb, bb, pred, taken);
-+  bitmap visited = BITMAP_ALLOC (NULL);
-+  predict_paths_for_bb (bb, bb, pred, taken, visited);
-+  BITMAP_FREE (visited);
- }
- /* Like predict_paths_leading_to but take edge instead of basic block.  */
-@@ -1866,7 +1873,11 @@
-       break;
-       }
-   if (!has_nonloop_edge)
--    predict_paths_for_bb (bb, bb, pred, taken);
-+    {
-+      bitmap visited = BITMAP_ALLOC (NULL);
-+      predict_paths_for_bb (bb, bb, pred, taken, visited);
-+      BITMAP_FREE (visited);
-+    }
-   else
-     predict_edge_def (e, pred, taken);
- }
-Index: gcc/ada/ChangeLog
-===================================================================
---- gcc/ada/ChangeLog  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/ada/ChangeLog  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,12 @@
-+2012-05-26  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+      * gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'.
-+      (build_variant_list): Adjust to above renaming.
-+      (gnat_to_gnu_entity) <E_Record_Subtype>: Likewise.  Give a unique name
-+      to the type of the variant containers.
-+      (create_variant_part_from): Likewise.  Give a unique name to the type
-+      of the variant part.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: gcc/ada/gcc-interface/decl.c
-===================================================================
---- gcc/ada/gcc-interface/decl.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/ada/gcc-interface/decl.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -120,8 +120,8 @@
-   /* The value of the qualifier.  */
-   tree qual;
--  /* The record associated with this variant.  */
--  tree record;
-+  /* The type of the variant after transformation.  */
-+  tree new_type;
- } variant_desc;
- DEF_VEC_O(variant_desc);
-@@ -3157,11 +3157,16 @@
-                     {
-                       tree old_variant = v->type;
-                       tree new_variant = make_node (RECORD_TYPE);
-+                      tree suffix
-+                        = concat_name (DECL_NAME (gnu_variant_part),
-+                                       IDENTIFIER_POINTER
-+                                       (DECL_NAME (v->field)));
-                       TYPE_NAME (new_variant)
--                        = DECL_NAME (TYPE_NAME (old_variant));
-+                        = concat_name (TYPE_NAME (gnu_type),
-+                                       IDENTIFIER_POINTER (suffix));
-                       copy_and_substitute_in_size (new_variant, old_variant,
-                                                    gnu_subst_list);
--                      v->record = new_variant;
-+                      v->new_type = new_variant;
-                     }
-               }
-             else
-@@ -3265,7 +3270,7 @@
-                           if (selected_variant)
-                             gnu_cont_type = gnu_type;
-                           else
--                            gnu_cont_type = v->record;
-+                            gnu_cont_type = v->new_type;
-                         }
-                       else
-                         /* The front-end may pass us "ghost" components if
-@@ -7704,7 +7709,7 @@
-         v->type = variant_type;
-         v->field = gnu_field;
-         v->qual = qual;
--        v->record = NULL_TREE;
-+        v->new_type = NULL_TREE;
-         /* Recurse on the variant subpart of the variant, if any.  */
-         variant_subpart = get_variant_part (variant_type);
-@@ -8457,7 +8462,9 @@
-   /* First create the type of the variant part from that of the old one.  */
-   new_union_type = make_node (QUAL_UNION_TYPE);
--  TYPE_NAME (new_union_type) = DECL_NAME (TYPE_NAME (old_union_type));
-+  TYPE_NAME (new_union_type)
-+    = concat_name (TYPE_NAME (record_type),
-+                 IDENTIFIER_POINTER (DECL_NAME (old_variant_part)));
-   /* If the position of the variant part is constant, subtract it from the
-      size of the type of the parent to get the new size.  This manual CSE
-@@ -8491,7 +8498,7 @@
-       continue;
-       /* Retrieve the list of fields already added to the new variant.  */
--      new_variant = v->record;
-+      new_variant = v->new_type;
-       field_list = TYPE_FIELDS (new_variant);
-       /* If the old variant had a variant subpart, we need to create a new
-Index: gcc/fortran/trans-array.c
-===================================================================
---- gcc/fortran/trans-array.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/trans-array.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2056,6 +2056,11 @@
-   gfc_se se;
-   int n;
-+  /* Don't evaluate the arguments for realloc_lhs_loop_for_fcn_call; otherwise,
-+     arguments could get evaluated multiple times.  */
-+  if (ss->is_alloc_lhs)
-+    return;
-+
-   /* TODO: This can generate bad code if there are ordering dependencies,
-      e.g., a callee allocated function and an unknown size constructor.  */
-   gcc_assert (ss != NULL);
-@@ -7548,7 +7553,7 @@
-   scalar = 1;
-   for (; arg; arg = arg->next)
-     {
--      if (!arg->expr)
-+      if (!arg->expr || arg->expr->expr_type == EXPR_NULL)
-       continue;
-       newss = gfc_walk_subexpr (head, arg->expr);
-Index: gcc/fortran/decl.c
-===================================================================
---- gcc/fortran/decl.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/decl.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -3623,8 +3623,9 @@
-       }
-     }
--  /* Module variables implicitly have the SAVE attribute.  */
--  if (gfc_current_state () == COMP_MODULE && !current_attr.save)
-+  /* Since Fortran 2008 module variables implicitly have the SAVE attribute.  */
-+  if (gfc_current_state () == COMP_MODULE && !current_attr.save
-+      && (gfc_option.allow_std & GFC_STD_F2008) != 0)
-     current_attr.save = SAVE_IMPLICIT;
-   colon_seen = 1;
-Index: gcc/fortran/ChangeLog
-===================================================================
---- gcc/fortran/ChangeLog      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/ChangeLog      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,60 @@
-+2012-07-14  Mikael Morin  <mikael@gcc.gnu.org>
-+
-+      Backport from trunk:
-+      2012-01-09  Mikael Morin  <mikael@gcc.gnu.org>
-+
-+      PR fortran/51758
-+      * trans-array.c (gfc_walk_elemental_function_args):
-+      Skip over NULL() actual arguments.
-+
-+2012-06-14  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/53597
-+      * decl.c (match_attr_spec): Only mark module variables
-+      as SAVE_IMPLICIT for Fortran 2008 and later.
-+
-+2012-06-05  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/50619
-+      * resolve.c (build_default_init_expr): Don't initialize
-+      ASSOCIATE names.
-+
-+2012-06-01  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/53521
-+      * trans.c (gfc_deallocate_scalar_with_status): Properly
-+      handle the case size == 0.
-+
-+2012-05-23  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/53389
-+      * trans-array.c (gfc_add_loop_ss_code): Don't evaluate
-+      expression, if ss->is_alloc_lhs is set.
-+
-+2012-05-02  Tobias Burnus  <burnus@net-b.de>
-+
-+      Backport from mainline
-+      2012-04-12  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/52864
-+      * expr.c (gfc_check_vardef_context): Fix assignment check for
-+      pointer components.
-+
-+2012-03-10  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/52469
-+      * trans-types.c (gfc_get_function_type): Handle backend_decl
-+      of a procedure pointer.
-+
-+2012-03-06  Tobias Burnus  <burnus@net-b.de>
-+
-+      Backport from mainline
-+      2012-03-02  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/52452
-+      * resolve.c (resolve_intrinsic): Don't search for a
-+      function if we know that it is a subroutine.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: gcc/fortran/expr.c
-===================================================================
---- gcc/fortran/expr.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/expr.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -4474,7 +4474,11 @@
-       if (ptr_component && ref->type == REF_COMPONENT)
-       check_intentin = false;
-       if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer)
--      ptr_component = true;
-+      {
-+        ptr_component = true;
-+        if (!pointer)
-+          check_intentin = false;
-+      }
-     }
-   if (check_intentin && sym->attr.intent == INTENT_IN)
-     {
-Index: gcc/fortran/trans.c
-===================================================================
---- gcc/fortran/trans.c        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/trans.c        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1005,15 +1005,12 @@
-   if (!res && size != 0)
-     _gfortran_os_error ("Allocation would exceed memory limit");
--  if (size == 0)
--    return NULL;
--
-   return res;
- }  */
- tree
- gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
- {
--  tree msg, res, nonzero, zero, null_result, tmp;
-+  tree msg, res, nonzero, null_result, tmp;
-   tree type = TREE_TYPE (mem);
-   size = gfc_evaluate_now (size, block);
-@@ -1044,15 +1041,6 @@
-                        build_empty_stmt (input_location));
-   gfc_add_expr_to_block (block, tmp);
--  /* if (size == 0) then the result is NULL.  */
--  tmp = fold_build2_loc (input_location, MODIFY_EXPR, type, res,
--                       build_int_cst (type, 0));
--  zero = fold_build1_loc (input_location, TRUTH_NOT_EXPR, boolean_type_node,
--                        nonzero);
--  tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, zero, tmp,
--                       build_empty_stmt (input_location));
--  gfc_add_expr_to_block (block, tmp);
--
-   return res;
- }
-Index: gcc/fortran/trans-types.c
-===================================================================
---- gcc/fortran/trans-types.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/trans-types.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2519,7 +2519,11 @@
-             || sym->attr.flavor == FL_PROGRAM);
-   if (sym->backend_decl)
--    return TREE_TYPE (sym->backend_decl);
-+    {
-+      if (sym->attr.proc_pointer)
-+      return TREE_TYPE (TREE_TYPE (sym->backend_decl));
-+      return TREE_TYPE (sym->backend_decl);
-+    }
-   alternate_return = 0;
-   typelist = NULL_TREE;
-Index: gcc/fortran/resolve.c
-===================================================================
---- gcc/fortran/resolve.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/fortran/resolve.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1452,7 +1452,7 @@
-   if (sym->intmod_sym_id)
-     isym = gfc_intrinsic_function_by_id ((gfc_isym_id) sym->intmod_sym_id);
--  else
-+  else if (!sym->attr.subroutine)
-     isym = gfc_find_function (sym->name);
-   if (isym)
-@@ -9700,7 +9700,8 @@
-       || sym->attr.data
-       || sym->module
-       || sym->attr.cray_pointee
--      || sym->attr.cray_pointer)
-+      || sym->attr.cray_pointer
-+      || sym->assoc)
-     return NULL;
-   /* Now we'll try to build an initializer expression.  */
-Index: gcc/BASE-VER
-===================================================================
---- gcc/BASE-VER       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/BASE-VER       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1 +1 @@
--4.6.3
-+4.6.4
-Index: gcc/stor-layout.c
-===================================================================
---- gcc/stor-layout.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/stor-layout.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -660,12 +660,13 @@
-         /* See if we can use an ordinary integer mode for a bit-field.
-            Conditions are: a fixed size that is correct for another mode,
-            occupying a complete byte or bytes on proper boundary,
--           and not volatile or not -fstrict-volatile-bitfields.  */
-+           and not -fstrict-volatile-bitfields.  If the latter is set,
-+           we unfortunately can't check TREE_THIS_VOLATILE, as a cast
-+           may make a volatile object later.  */
-         if (TYPE_SIZE (type) != 0
-             && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
-             && GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
--            && !(TREE_THIS_VOLATILE (decl)
--                 && flag_strict_volatile_bitfields > 0))
-+            && flag_strict_volatile_bitfields <= 0)
-           {
-             enum machine_mode xmode
-               = mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
-Index: gcc/tree-vect-loop.c
-===================================================================
---- gcc/tree-vect-loop.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/tree-vect-loop.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2104,7 +2104,8 @@
-           if (stmt_info
-               && !STMT_VINFO_RELEVANT_P (stmt_info)
-               && (!STMT_VINFO_LIVE_P (stmt_info)
--                  || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
-+                  || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info)))
-+            && !STMT_VINFO_IN_PATTERN_P (stmt_info))
-             continue;
-           if (STMT_VINFO_DATA_REF (vinfo_for_stmt (stmt)))
-@@ -2251,11 +2252,19 @@
-       {
-         gimple stmt = gsi_stmt (si);
-         stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
-+
-+        if (STMT_VINFO_IN_PATTERN_P (stmt_info))
-+          {
-+            stmt = STMT_VINFO_RELATED_STMT (stmt_info);
-+            stmt_info = vinfo_for_stmt (stmt);
-+          }
-+
-         /* Skip stmts that are not vectorized inside the loop.  */
-         if (!STMT_VINFO_RELEVANT_P (stmt_info)
-             && (!STMT_VINFO_LIVE_P (stmt_info)
--                || STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def))
-+                || !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))))
-           continue;
-+
-         vec_inside_cost += STMT_VINFO_INSIDE_OF_LOOP_COST (stmt_info) * factor;
-         /* FIXME: for stmts in the inner-loop in outer-loop vectorization,
-            some of the "outside" costs are generated inside the outer-loop.  */
-Index: gcc/c-typeck.c
-===================================================================
---- gcc/c-typeck.c     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/c-typeck.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -4315,6 +4315,11 @@
-     ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2);
-   else
-     {
-+      if (int_operands)
-+      {
-+        op1 = remove_c_maybe_const_expr (op1);
-+        op2 = remove_c_maybe_const_expr (op2);
-+      }
-       ret = build3 (COND_EXPR, result_type, ifexp, op1, op2);
-       if (int_operands)
-       ret = note_integer_operands (ret);
-Index: gcc/tree-sra.c
-===================================================================
---- gcc/tree-sra.c     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/tree-sra.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2937,7 +2937,13 @@
-     }
-   else
-     {
--      if (access_has_children_p (lacc) && access_has_children_p (racc))
-+      if (access_has_children_p (lacc)
-+        && access_has_children_p (racc)
-+        /* When an access represents an unscalarizable region, it usually
-+           represents accesses with variable offset and thus must not be used
-+           to generate new memory accesses.  */
-+        && !lacc->grp_unscalarizable_region
-+        && !racc->grp_unscalarizable_region)
-       {
-         gimple_stmt_iterator orig_gsi = *gsi;
-         enum unscalarized_data_handling refreshed;
-Index: gcc/lto/lto.c
-===================================================================
---- gcc/lto/lto.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/lto/lto.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -893,7 +893,8 @@
-   for (node = cgraph_nodes; node; node = node->next)
-     {
--      if (!partition_cgraph_node_p (node))
-+      if (!partition_cgraph_node_p (node)
-+        || node->aux)
-       continue;
-       file_data = node->local.lto_file_data;
-@@ -923,13 +924,13 @@
-         npartitions++;
-       }
--      if (!node->aux)
--        add_cgraph_node_to_partition (partition, node);
-+      add_cgraph_node_to_partition (partition, node);
-     }
-   for (vnode = varpool_nodes; vnode; vnode = vnode->next)
-     {
--      if (!partition_varpool_node_p (vnode))
-+      if (!partition_varpool_node_p (vnode)
-+        || vnode->aux)
-       continue;
-       file_data = vnode->lto_file_data;
-       slot = pointer_map_contains (pmap, file_data);
-@@ -943,8 +944,7 @@
-         npartitions++;
-       }
--      if (!vnode->aux)
--        add_varpool_node_to_partition (partition, vnode);
-+      add_varpool_node_to_partition (partition, vnode);
-     }
-   for (node = cgraph_nodes; node; node = node->next)
-     node->aux = NULL;
-@@ -1050,8 +1050,9 @@
-   for (i = 0; i < n_nodes; i++)
-     {
--      if (!order[i]->aux)
--        add_cgraph_node_to_partition (partition, order[i]);
-+      if (order[i]->aux)
-+      continue;
-+      add_cgraph_node_to_partition (partition, order[i]);
-       total_size -= order[i]->global.size;
-       /* Once we added a new node to the partition, we also want to add
-@@ -1231,6 +1232,8 @@
-           }
-         i = best_i;
-         /* When we are finished, avoid creating empty partition.  */
-+        while (i < n_nodes - 1 && order[i + 1]->aux)
-+          i++;
-         if (i == n_nodes - 1)
-           break;
-         partition = new_partition ("");
-Index: gcc/lto/ChangeLog
-===================================================================
---- gcc/lto/ChangeLog  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/lto/ChangeLog  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,12 @@
-+2012-04-23  Peter Bergner  <bergner@vnet.ibm.com>
-+
-+      Backport from mainline
-+      2011-06-11  Jan Hubicka  <jh@suse.cz>
-+
-+      PR lto/48246
-+      * lto.c (lto_1_to_1_map): Don't create empty partitions.
-+      (lto_balanced_map): Likewise.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: gcc/ipa-prop.c
-===================================================================
---- gcc/ipa-prop.c     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/ipa-prop.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -704,12 +704,11 @@
-       || is_global_var (base))
-     return;
--  if (detect_type_change (op, base, call, jfunc, offset))
-+  binfo = TYPE_BINFO (TREE_TYPE (base));
-+  if (!binfo
-+      || detect_type_change (op, base, call, jfunc, offset))
-     return;
--  binfo = TYPE_BINFO (TREE_TYPE (base));
--  if (!binfo)
--    return;
-   binfo = get_binfo_at_offset (binfo, offset, TREE_TYPE (op));
-   if (binfo)
-     {
-Index: gcc/varasm.c
-===================================================================
---- gcc/varasm.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/varasm.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,7 +1,7 @@
- /* Output variables, constants and external declarations, for GNU compiler.
-    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
-    1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
--   2010, 2011  Free Software Foundation, Inc.
-+   2010, 2011, 2012  Free Software Foundation, Inc.
- This file is part of GCC.
-@@ -30,6 +30,7 @@
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
-+#include "pointer-set.h"
- #include "tm.h"
- #include "rtl.h"
- #include "tree.h"
-@@ -2097,6 +2098,19 @@
-    it all the way to final.  See PR 17982 for further discussion.  */
- static GTY(()) tree pending_assemble_externals;
-+/* FIXME: Trunk is at GCC 4.8 now and the above problem still hasn't been
-+   addressed properly.  This caused PR 52640 due to O(external_decls**2)
-+   lookups in the pending_assemble_externals TREE_LIST in assemble_external.
-+   Paper over with this pointer set, which we use to see if we have already
-+   added a decl to pending_assemble_externals without first traversing
-+   the entire pending_assemble_externals list.  See assemble_external().  */
-+static struct pointer_set_t *pending_assemble_externals_set;
-+
-+/* Some targets delay some output to final using TARGET_ASM_FILE_END.
-+   As a result, assemble_external can be called after the list of externals
-+   is processed and the pointer set destroyed.  */
-+static bool pending_assemble_externals_processed;
-+
- #ifdef ASM_OUTPUT_EXTERNAL
- /* True if DECL is a function decl for which no out-of-line copy exists.
-    It is assumed that DECL's assembler name has been set.  */
-@@ -2146,6 +2160,8 @@
-     assemble_external_real (TREE_VALUE (list));
-   pending_assemble_externals = 0;
-+  pending_assemble_externals_processed = true;
-+  pointer_set_destroy (pending_assemble_externals_set);
- #endif
- }
-@@ -2186,7 +2202,13 @@
-     weak_decls = tree_cons (NULL, decl, weak_decls);
- #ifdef ASM_OUTPUT_EXTERNAL
--  if (value_member (decl, pending_assemble_externals) == NULL_TREE)
-+  if (pending_assemble_externals_processed)
-+    {
-+      assemble_external_real (decl);
-+      return;
-+    }
-+
-+  if (! pointer_set_insert (pending_assemble_externals_set, decl))
-     pending_assemble_externals = tree_cons (NULL, decl,
-                                           pending_assemble_externals);
- #endif
-@@ -3922,6 +3944,13 @@
-          tem = TREE_OPERAND (tem, 0))
-       ;
-+      if (TREE_CODE (tem) == MEM_REF
-+        && TREE_CODE (TREE_OPERAND (tem, 0)) == ADDR_EXPR)
-+      {
-+        reloc = compute_reloc_for_constant (TREE_OPERAND (tem, 0));
-+        break;
-+      }
-+
-       if (TREE_PUBLIC (tem))
-       reloc |= 2;
-       else
-@@ -3990,6 +4019,9 @@
-       if (CONSTANT_CLASS_P (tem) || TREE_CODE (tem) == CONSTRUCTOR)
-       output_constant_def (tem, 0);
-+
-+      if (TREE_CODE (tem) == MEM_REF)
-+      output_addressed_constants (TREE_OPERAND (tem, 0));
-       break;
-     case PLUS_EXPR:
-@@ -6019,6 +6051,10 @@
-   if (readonly_data_section == NULL)
-     readonly_data_section = text_section;
-+
-+#ifdef ASM_OUTPUT_EXTERNAL
-+  pending_assemble_externals_set = pointer_set_create ();
-+#endif
- }
- enum tls_model
-Index: gcc/tree-vect-stmts.c
-===================================================================
---- gcc/tree-vect-stmts.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/tree-vect-stmts.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -623,6 +623,46 @@
- }
-+/* Model cost for type demotion and promotion operations.  PWR is normally
-+   zero for single-step promotions and demotions.  It will be one if 
-+   two-step promotion/demotion is required, and so on.  Each additional
-+   step doubles the number of instructions required.  */
-+
-+static void
-+vect_model_promotion_demotion_cost (stmt_vec_info stmt_info,
-+                                  enum vect_def_type *dt, int pwr)
-+{
-+  int i, tmp;
-+  int inside_cost = 0, outside_cost = 0, single_stmt_cost;
-+
-+  /* The SLP costs were already calculated during SLP tree build.  */
-+  if (PURE_SLP_STMT (stmt_info))
-+    return;
-+
-+  single_stmt_cost = vect_get_stmt_cost (vec_promote_demote);
-+  for (i = 0; i < pwr + 1; i++)
-+    {
-+      tmp = (STMT_VINFO_TYPE (stmt_info) == type_promotion_vec_info_type) ?
-+      (i + 1) : i;
-+      inside_cost += vect_pow2 (tmp) * single_stmt_cost;
-+    }
-+
-+  /* FORNOW: Assuming maximum 2 args per stmts.  */
-+  for (i = 0; i < 2; i++)
-+    {
-+      if (dt[i] == vect_constant_def || dt[i] == vect_external_def)
-+        outside_cost += vect_get_stmt_cost (vector_stmt);
-+    }
-+
-+  if (vect_print_dump_info (REPORT_COST))
-+    fprintf (vect_dump, "vect_model_promotion_demotion_cost: inside_cost = %d, "
-+             "outside_cost = %d .", inside_cost, outside_cost);
-+
-+  /* Set the costs in STMT_INFO.  */
-+  stmt_vinfo_set_inside_of_loop_cost (stmt_info, NULL, inside_cost);
-+  stmt_vinfo_set_outside_of_loop_cost (stmt_info, NULL, outside_cost);
-+}
-+
- /* Function vect_cost_strided_group_size
-    For strided load or store, return the group_size only if it is the first
-@@ -691,7 +731,7 @@
-     {
-       /* Uses a high and low interleave operation for each needed permute.  */
-       inside_cost = ncopies * exact_log2(group_size) * group_size
--        * vect_get_stmt_cost (vector_stmt);
-+        * vect_get_stmt_cost (vec_perm);
-       if (vect_print_dump_info (REPORT_COST))
-         fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .",
-@@ -795,7 +835,7 @@
-     {
-       /* Uses an even and odd extract operations for each needed permute.  */
-       inside_cost = ncopies * exact_log2(group_size) * group_size
--      * vect_get_stmt_cost (vector_stmt);
-+      * vect_get_stmt_cost (vec_perm);
-       if (vect_print_dump_info (REPORT_COST))
-         fprintf (vect_dump, "vect_model_load_cost: strided group_size = %d .",
-@@ -855,7 +895,7 @@
-     case dr_explicit_realign:
-       {
-         *inside_cost += ncopies * (2 * vect_get_stmt_cost (vector_load)
--           + vect_get_stmt_cost (vector_stmt));
-+                                 + vect_get_stmt_cost (vec_perm));
-         /* FIXME: If the misalignment remains fixed across the iterations of
-            the containing loop, the following cost should be added to the
-@@ -863,6 +903,9 @@
-         if (targetm.vectorize.builtin_mask_for_load)
-           *inside_cost += vect_get_stmt_cost (vector_stmt);
-+        if (vect_print_dump_info (REPORT_COST))
-+          fprintf (vect_dump, "vect_model_load_cost: explicit realign");
-+
-         break;
-       }
-     case dr_explicit_realign_optimized:
-@@ -886,7 +929,12 @@
-           }
-         *inside_cost += ncopies * (vect_get_stmt_cost (vector_load)
--          + vect_get_stmt_cost (vector_stmt));
-+                                 + vect_get_stmt_cost (vec_perm));
-+
-+        if (vect_print_dump_info (REPORT_COST))
-+          fprintf (vect_dump,
-+                 "vect_model_load_cost: explicit realign optimized");
-+
-         break;
-       }
-@@ -2919,7 +2967,7 @@
-       STMT_VINFO_TYPE (stmt_info) = type_demotion_vec_info_type;
-       if (vect_print_dump_info (REPORT_DETAILS))
-         fprintf (vect_dump, "=== vectorizable_demotion ===");
--      vect_model_simple_cost (stmt_info, ncopies, dt, NULL);
-+      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
-       return true;
-     }
-@@ -3217,7 +3265,7 @@
-       STMT_VINFO_TYPE (stmt_info) = type_promotion_vec_info_type;
-       if (vect_print_dump_info (REPORT_DETAILS))
-         fprintf (vect_dump, "=== vectorizable_promotion ===");
--      vect_model_simple_cost (stmt_info, 2*ncopies, dt, NULL);
-+      vect_model_promotion_demotion_cost (stmt_info, dt, multi_step_cvt);
-       return true;
-     }
-Index: gcc/tree-inline.c
-===================================================================
---- gcc/tree-inline.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/tree-inline.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -4947,7 +4947,7 @@
-               if ((e = cgraph_edge (id->dst_node, gsi_stmt (bsi))) != NULL)
-                 {
-                   if (!e->inline_failed)
--                    cgraph_remove_node_and_inline_clones (e->callee);
-+                    cgraph_remove_node_and_inline_clones (e->callee, id->dst_node);
-                   else
-                     cgraph_remove_edge (e);
-                 }
-@@ -4957,8 +4957,8 @@
-                   {
-                     if ((e = cgraph_edge (node, gsi_stmt (bsi))) != NULL)
-                       {
--                        if (!e->inline_failed)
--                          cgraph_remove_node_and_inline_clones (e->callee);
-+                        if (!e->inline_failed && e->callee != id->src_node)
-+                          cgraph_remove_node_and_inline_clones (e->callee, id->dst_node);
-                         else
-                           cgraph_remove_edge (e);
-                       }
-Index: gcc/combine.c
-===================================================================
---- gcc/combine.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/combine.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1788,6 +1788,10 @@
-   if (set == 0)
-     return 0;
-+  /* The simplification in expand_field_assignment may call back to
-+     get_last_value, so set safe guard here.  */
-+  subst_low_luid = DF_INSN_LUID (insn);
-+
-   set = expand_field_assignment (set);
-   src = SET_SRC (set), dest = SET_DEST (set);
-Index: gcc/df-problems.c
-===================================================================
---- gcc/df-problems.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/df-problems.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -3956,6 +3956,19 @@
-   df_simulate_initialize_backwards (merge_bb, test_use);
-   for (insn = across_to; ; insn = next)
-     {
-+      if (CALL_P (insn))
-+      {
-+        if (RTL_CONST_OR_PURE_CALL_P (insn))
-+          /* Pure functions can read from memory.  Const functions can
-+             read from arguments that the ABI has forced onto the stack.
-+             Neither sort of read can be volatile.  */
-+          memrefs_in_across |= MEMREF_NORMAL;
-+        else
-+          {
-+            memrefs_in_across |= MEMREF_VOLATILE;
-+            mem_sets_in_across |= MEMREF_VOLATILE;
-+          }
-+      }
-       if (NONDEBUG_INSN_P (insn))
-       {
-         df_simulate_find_defs (insn, test_set);
-Index: gcc/config.gcc
-===================================================================
---- gcc/config.gcc     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config.gcc     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -817,7 +817,7 @@
- arm*-*-linux*)                        # ARM GNU/Linux with ELF
-       tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
-       case $target in
--      arm*b-*)
-+      arm*b-*-linux*)
-               tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
-               ;;
-       esac
-@@ -925,7 +925,7 @@
-       extra_objs="avr-devices.o"
-       ;;
- avr-*-*)
--      tm_file="avr/avr.h dbxelf.h newlib-stdint.h"
-+      tm_file="avr/avr.h dbxelf.h avr/avr-stdint.h"
-       use_gcc_stdint=wrap
-       extra_gcc_objs="driver-avr.o avr-devices.o"
-       extra_objs="avr-devices.o"
-Index: gcc/gimple.c
-===================================================================
---- gcc/gimple.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/gimple.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2275,8 +2275,6 @@
- bool
- gimple_has_side_effects (const_gimple s)
- {
--  unsigned i;
--
-   if (is_gimple_debug (s))
-     return false;
-@@ -2292,45 +2290,15 @@
-   if (is_gimple_call (s))
-     {
--      unsigned nargs = gimple_call_num_args (s);
-+      int flags = gimple_call_flags (s);
--      if (!(gimple_call_flags (s) & (ECF_CONST | ECF_PURE)))
--        return true;
--      else if (gimple_call_flags (s) & ECF_LOOPING_CONST_OR_PURE)
--      /* An infinite loop is considered a side effect.  */
-+      /* An infinite loop is considered a side effect.  */
-+      if (!(flags & (ECF_CONST | ECF_PURE))
-+        || (flags & ECF_LOOPING_CONST_OR_PURE))
-       return true;
--      if (gimple_call_lhs (s)
--          && TREE_SIDE_EFFECTS (gimple_call_lhs (s)))
--      {
--        gcc_checking_assert (gimple_has_volatile_ops (s));
--        return true;
--      }
--
--      if (TREE_SIDE_EFFECTS (gimple_call_fn (s)))
--        return true;
--
--      for (i = 0; i < nargs; i++)
--        if (TREE_SIDE_EFFECTS (gimple_call_arg (s, i)))
--        {
--          gcc_checking_assert (gimple_has_volatile_ops (s));
--          return true;
--        }
--
-       return false;
-     }
--  else
--    {
--      for (i = 0; i < gimple_num_ops (s); i++)
--      {
--        tree op = gimple_op (s, i);
--        if (op && TREE_SIDE_EFFECTS (op))
--          {
--            gcc_checking_assert (gimple_has_volatile_ops (s));
--            return true;
--          }
--      }
--    }
-   return false;
- }
-Index: gcc/gthr-posix.h
-===================================================================
---- gcc/gthr-posix.h   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/gthr-posix.h   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -239,16 +239,15 @@
- static inline int
- __gthread_active_p (void)
- {
--  static void *const __gthread_active_ptr
--    = __extension__ (void *) &__gthrw_(
- /* Android's C library does not provide pthread_cancel, check for
-    `pthread_create' instead.  */
- #ifndef __BIONIC__
--                                     pthread_cancel
-+  static void *const __gthread_active_ptr
-+    = __extension__ (void *) &__gthrw_(pthread_cancel);
- #else
--                                     pthread_create
-+  static void *const __gthread_active_ptr
-+    = __extension__ (void *) &__gthrw_(pthread_create);
- #endif
--                                     );
-   return __gthread_active_ptr != 0;
- }
-Index: gcc/config/alpha/linux-unwind.h
-===================================================================
---- gcc/config/alpha/linux-unwind.h    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/alpha/linux-unwind.h    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,5 @@
- /* DWARF2 EH unwinding support for Alpha Linux.
--   Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
-+   Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc.
- This file is part of GCC.
-@@ -49,7 +49,7 @@
-   else if (pc[1] == 0x201f015f)               /* lda $0,NR_rt_sigreturn */
-     {
-       struct rt_sigframe {
--      struct siginfo info;
-+      siginfo_t info;
-       struct ucontext uc;
-       } *rt_ = context->cfa;
-       sc = &rt_->uc.uc_mcontext;
-Index: gcc/config/alpha/alpha.c
-===================================================================
---- gcc/config/alpha/alpha.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/alpha/alpha.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2469,7 +2469,7 @@
-     {
-     case EQ:  case LE:  case LT:  case LEU:  case LTU:
-     case UNORDERED:
--      /* We have these compares: */
-+      /* We have these compares.  */
-       cmp_code = code, branch_code = NE;
-       break;
-@@ -2706,13 +2706,15 @@
-       switch (code)
-       {
-       case EQ: case LE: case LT: case LEU: case LTU:
-+      case UNORDERED:
-         /* We have these compares.  */
-         cmp_code = code, code = NE;
-         break;
-       case NE:
--        /* This must be reversed.  */
--        cmp_code = EQ, code = EQ;
-+      case ORDERED:
-+        /* These must be reversed.  */
-+        cmp_code = reverse_condition (code), code = EQ;
-         break;
-       case GE: case GT: case GEU: case GTU:
-@@ -2732,6 +2734,14 @@
-         gcc_unreachable ();
-       }
-+      if (cmp_mode == DImode)
-+      {
-+        if (!reg_or_0_operand (op0, DImode))
-+          op0 = force_reg (DImode, op0);
-+        if (!reg_or_8bit_operand (op1, DImode))
-+          op1 = force_reg (DImode, op1);
-+      }
-+
-       tem = gen_reg_rtx (cmp_mode);
-       emit_insn (gen_rtx_SET (VOIDmode, tem,
-                             gen_rtx_fmt_ee (cmp_code, cmp_mode,
-@@ -2743,6 +2753,14 @@
-       local_fast_math = 1;
-     }
-+  if (cmp_mode == DImode)
-+    {
-+      if (!reg_or_0_operand (op0, DImode))
-+      op0 = force_reg (DImode, op0);
-+      if (!reg_or_8bit_operand (op1, DImode))
-+      op1 = force_reg (DImode, op1);
-+    }
-+
-   /* We may be able to use a conditional move directly.
-      This avoids emitting spurious compares.  */
-   if (signed_comparison_operator (cmp, VOIDmode)
-@@ -2761,11 +2779,13 @@
-   switch (code)
-     {
-     case EQ:  case LE:  case LT:  case LEU:  case LTU:
-+    case UNORDERED:
-       /* We have these compares: */
-       break;
-     case NE:
--      /* This must be reversed.  */
-+    case ORDERED:
-+      /* These must be reversed.  */
-       code = reverse_condition (code);
-       cmov_code = EQ;
-       break;
-Index: gcc/config/m32c/m32c.c
-===================================================================
---- gcc/config/m32c/m32c.c     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/m32c/m32c.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -447,7 +447,7 @@
-     flag_ivopts = 0;
-   /* This target defaults to strict volatile bitfields.  */
--  if (flag_strict_volatile_bitfields < 0)
-+  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
-     flag_strict_volatile_bitfields = 1;
-   /* r8c/m16c have no 16-bit indirect call, so thunks are involved.
-Index: gcc/config/spu/spu.c
-===================================================================
---- gcc/config/spu/spu.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/spu/spu.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -6794,6 +6794,7 @@
-       case scalar_to_vec:
-       case cond_branch_not_taken:
-       case vec_perm:
-+      case vec_promote_demote:
-         return 1;
-       case scalar_store:
-Index: gcc/config/sparc/sparc.c
-===================================================================
---- gcc/config/sparc/sparc.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/sparc/sparc.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -3658,13 +3658,17 @@
- {
-   x = delegitimize_mem_from_attrs (x);
--  if (GET_CODE (x) == LO_SUM
--      && GET_CODE (XEXP (x, 1)) == UNSPEC
--      && XINT (XEXP (x, 1), 1) == UNSPEC_TLSLE)
--    {
--      x = XVECEXP (XEXP (x, 1), 0, 0);
--      gcc_assert (GET_CODE (x) == SYMBOL_REF);
--    }
-+  if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 1)) == UNSPEC)
-+    switch (XINT (XEXP (x, 1), 1))
-+      {
-+      case UNSPEC_MOVE_PIC:
-+      case UNSPEC_TLSLE:
-+      x = XVECEXP (XEXP (x, 1), 0, 0);
-+      gcc_assert (GET_CODE (x) == SYMBOL_REF);
-+      break;
-+      default:
-+      break;
-+      }
-   return x;
- }
-@@ -9634,6 +9638,7 @@
-                                                      void_list_node));
-         DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
-                                          NULL_TREE, void_type_node);
-+        TREE_PUBLIC (decl) = 1;
-         TREE_STATIC (decl) = 1;
-         make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
-         DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
-Index: gcc/config/rx/rx.c
-===================================================================
---- gcc/config/rx/rx.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rx/rx.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2348,7 +2348,7 @@
- rx_option_override (void)
- {
-   /* This target defaults to strict volatile bitfields.  */
--  if (flag_strict_volatile_bitfields < 0)
-+  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
-     flag_strict_volatile_bitfields = 1;
-   rx_override_options_after_change ();
-Index: gcc/config/i386/i386.h
-===================================================================
---- gcc/config/i386/i386.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/i386.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -424,7 +424,7 @@
- /* Feature tests against the various architecture variations.  */
- enum ix86_arch_indices {
--  X86_ARCH_CMOVE,             /* || TARGET_SSE */
-+  X86_ARCH_CMOV,
-   X86_ARCH_CMPXCHG,
-   X86_ARCH_CMPXCHG8B,
-   X86_ARCH_XADD,
-@@ -435,12 +435,17 @@
- extern unsigned char ix86_arch_features[X86_ARCH_LAST];
--#define TARGET_CMOVE          ix86_arch_features[X86_ARCH_CMOVE]
-+#define TARGET_CMOV           ix86_arch_features[X86_ARCH_CMOV]
- #define TARGET_CMPXCHG                ix86_arch_features[X86_ARCH_CMPXCHG]
- #define TARGET_CMPXCHG8B      ix86_arch_features[X86_ARCH_CMPXCHG8B]
- #define TARGET_XADD           ix86_arch_features[X86_ARCH_XADD]
- #define TARGET_BSWAP          ix86_arch_features[X86_ARCH_BSWAP]
-+/* For sane SSE instruction set generation we need fcomi instruction.
-+   It is safe to enable all CMOVE instructions.  Also, RDRAND intrinsic
-+   expands to a sequence that includes conditional move. */
-+#define TARGET_CMOVE          (TARGET_CMOV || TARGET_SSE || TARGET_RDRND)
-+
- #define TARGET_FISTTP         (TARGET_SSE3 && TARGET_80387)
- extern int x86_prefetch_sse;
-@@ -1668,6 +1673,17 @@
- #define LEGITIMATE_CONSTANT_P(X)  legitimate_constant_p (X)
-+/* Try a machine-dependent way of reloading an illegitimate address
-+   operand.  If we find one, push the reload and jump to WIN.  This
-+   macro is used in only one place: `find_reloads_address' in reload.c.  */
-+
-+#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, INDL, WIN)    \
-+do {                                                                  \
-+  if (ix86_legitimize_reload_address ((X), (MODE), (OPNUM),           \
-+                                    (int)(TYPE), (INDL)))             \
-+    goto WIN;                                                         \
-+} while (0)
-+
- /* If defined, a C expression to determine the base term of address X.
-    This macro is used in only one place: `find_base_term' in alias.c.
-Index: gcc/config/i386/i386.md
-===================================================================
---- gcc/config/i386/i386.md    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/i386.md    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -233,9 +233,6 @@
-   ;; For BMI support
-   UNSPEC_BEXTR
--
--  ;; For RDRAND support
--  UNSPEC_RDRAND
- ])
- (define_c_enum "unspecv" [
-@@ -270,6 +267,9 @@
-   UNSPECV_WRFSBASE
-   UNSPECV_WRGSBASE
-   UNSPECV_SPLIT_STACK_RETURN
-+
-+  ;; For RDRAND support
-+  UNSPECV_RDRAND
- ])
- ;; Constants to represent pcomtrue/pcomfalse variants
-@@ -16349,7 +16349,8 @@
- (define_insn "*x86_mov<mode>cc_0_m1_neg"
-   [(set (match_operand:SWI48 0 "register_operand" "=r")
-       (neg:SWI48 (match_operator 1 "ix86_carry_flag_operator"
--                  [(reg FLAGS_REG) (const_int 0)])))]
-+                  [(reg FLAGS_REG) (const_int 0)])))
-+   (clobber (reg:CC FLAGS_REG))]
-   ""
-   "sbb{<imodesuffix>}\t%0, %0"
-   [(set_attr "type" "alu")
-@@ -18357,9 +18358,9 @@
- (define_insn "rdrand<mode>_1"
-   [(set (match_operand:SWI248 0 "register_operand" "=r")
--      (unspec:SWI248 [(const_int 0)] UNSPEC_RDRAND))
-+      (unspec_volatile:SWI248 [(const_int 0)] UNSPECV_RDRAND))
-    (set (reg:CCC FLAGS_REG)
--      (unspec:CCC [(const_int 0)] UNSPEC_RDRAND))]
-+      (unspec_volatile:CCC [(const_int 0)] UNSPECV_RDRAND))]
-   "TARGET_RDRND"
-   "rdrand\t%0"
-   [(set_attr "type" "other")
-Index: gcc/config/i386/sse.md
-===================================================================
---- gcc/config/i386/sse.md     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/sse.md     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -392,18 +392,7 @@
-   DONE;
- })
--(define_expand "avx_movu<ssemodesuffix><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_movu<ssemodesuffix><avxmodesuffix>"
-+(define_insn "avx_movu<ssemodesuffix><avxmodesuffix>"
-   [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m")
-       (unspec:AVXMODEF2P
-         [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")]
-@@ -429,18 +418,7 @@
-    (set_attr "prefix" "maybe_vex")
-    (set_attr "mode" "TI")])
--(define_expand "<sse>_movu<ssemodesuffix>"
--  [(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>_movu<ssemodesuffix>"
-+(define_insn "<sse>_movu<ssemodesuffix>"
-   [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m")
-       (unspec:SSEMODEF2P
-         [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")]
-@@ -452,18 +430,7 @@
-    (set_attr "movu" "1")
-    (set_attr "mode" "<MODE>")])
--(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>"
-+(define_insn "avx_movdqu<avxmodesuffix>"
-   [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m")
-       (unspec:AVXMODEQI
-         [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")]
-@@ -475,17 +442,7 @@
-    (set_attr "prefix" "vex")
-    (set_attr "mode" "<avxvecmode>")])
--(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"
-+(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))]
-@@ -1324,15 +1281,15 @@
-               (parallel [(const_int 0)]))
-             (vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
-           (plusminus:DF
--            (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
--            (vec_select:DF (match_dup 1) (parallel [(const_int 3)]))))
--        (vec_concat:V2DF
--          (plusminus:DF
-             (vec_select:DF
-               (match_operand:V4DF 2 "nonimmediate_operand" "xm")
-               (parallel [(const_int 0)]))
--            (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))
-+            (vec_select:DF (match_dup 2) (parallel [(const_int 1)]))))
-+        (vec_concat:V2DF
-           (plusminus:DF
-+            (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
-+            (vec_select:DF (match_dup 1) (parallel [(const_int 3)])))
-+          (plusminus:DF
-             (vec_select:DF (match_dup 2) (parallel [(const_int 2)]))
-             (vec_select:DF (match_dup 2) (parallel [(const_int 3)]))))))]
-   "TARGET_AVX"
-@@ -5058,7 +5015,7 @@
-         (vec_select:DF (match_dup 0) (parallel [(const_int 1)]))))]
-   "TARGET_SSE2 && reload_completed"
-   [(set (match_dup 0) (match_dup 1))]
--  "operands[0] = adjust_address (operands[0], DFmode, 8);")
-+  "operands[0] = adjust_address (operands[0], DFmode, 0);")
- ;; Not sure these two are ever used, but it doesn't hurt to have
- ;; them. -aoliva
-@@ -12095,7 +12052,7 @@
-         (unspec:V8SF [(match_operand:V8HI 1 "register_operand" "x")]
-                      UNSPEC_VCVTPH2PS)
-         (parallel [(const_int 0) (const_int 1)
--                   (const_int 1) (const_int 2)])))]
-+                   (const_int 2) (const_int 3)])))]
-   "TARGET_F16C"
-   "vcvtph2ps\t{%1, %0|%0, %1}"
-   [(set_attr "type" "ssecvt")
-Index: gcc/config/i386/linux-unwind.h
-===================================================================
---- gcc/config/i386/linux-unwind.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/linux-unwind.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,6 @@
- /* DWARF2 EH unwinding support for AMD x86-64 and x86.
--   Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-+   Copyright (C) 2004, 2005, 2006, 2009, 2010, 2012 Free Software Foundation,
-+   Inc.
- This file is part of GCC.
-@@ -133,9 +134,9 @@
-     {
-       struct rt_sigframe {
-       int sig;
--      struct siginfo *pinfo;
-+      siginfo_t *pinfo;
-       void *puc;
--      struct siginfo info;
-+      siginfo_t info;
-       struct ucontext uc;
-       } *rt_ = context->cfa;
-       /* The void * cast is necessary to avoid an aliasing warning.
-Index: gcc/config/i386/i386-protos.h
-===================================================================
---- gcc/config/i386/i386-protos.h      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/i386-protos.h      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -59,7 +59,8 @@
- extern bool constant_address_p (rtx);
- extern bool legitimate_pic_operand_p (rtx);
- extern bool legitimate_pic_address_disp_p (rtx);
--
-+extern bool ix86_legitimize_reload_address (rtx, enum machine_mode,
-+                                          int, int, int);
- extern void print_reg (rtx, int, FILE*);
- extern void ix86_print_operand (FILE *, rtx, int);
-Index: gcc/config/i386/driver-i386.c
-===================================================================
---- gcc/config/i386/driver-i386.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/driver-i386.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -397,6 +397,7 @@
-   unsigned int has_pclmul = 0, has_abm = 0, has_lwp = 0;
-   unsigned int has_fma = 0, has_fma4 = 0, has_xop = 0;
-   unsigned int has_bmi = 0, has_tbm = 0;
-+  unsigned int has_rdrnd = 0, has_f16c = 0, has_fsgsbase = 0;
-   bool arch;
-@@ -444,6 +445,8 @@
-   has_aes = ecx & bit_AES;
-   has_pclmul = ecx & bit_PCLMUL;
-   has_fma = ecx & bit_FMA;
-+  has_f16c = ecx & bit_F16C;
-+  has_rdrnd = ecx & bit_RDRND;
-   has_cmpxchg8b = edx & bit_CMPXCHG8B;
-   has_cmov = edx & bit_CMOV;
-@@ -451,6 +454,13 @@
-   has_sse = edx & bit_SSE;
-   has_sse2 = edx & bit_SSE2;
-+  if (max_level >= 7)
-+    {
-+      __cpuid_count (7, 0, eax, ebx, ecx, edx);
-+
-+      has_fsgsbase = ebx & bit_FSGSBASE;
-+    }
-+
-   /* Check cpuid level of extended features.  */
-   __cpuid (0x80000000, ext_level, ebx, ecx, edx);
-@@ -711,10 +721,13 @@
-       const char *avx = has_avx ? " -mavx" : " -mno-avx";
-       const char *sse4_2 = has_sse4_2 ? " -msse4.2" : " -mno-sse4.2";
-       const char *sse4_1 = has_sse4_1 ? " -msse4.1" : " -mno-sse4.1";
-+      const char *rdrnd = has_rdrnd ? " -mrdrnd" : " -mno-rdrnd";
-+      const char *f16c = has_f16c ? " -mf16c" : " -mno-f16c";
-+      const char *fsgsbase = has_fsgsbase ? " -mfsgsbase" : " -mno-fsgsbase";
-       options = concat (options, cx16, sahf, movbe, ase, pclmul,
-                       popcnt, abm, lwp, fma, fma4, xop, bmi, tbm,
--                      avx, sse4_2, sse4_1, NULL);
-+                      avx, sse4_2, sse4_1, rdrnd, f16c, fsgsbase, NULL);
-     }
- done:
-Index: gcc/config/i386/i386.c
-===================================================================
---- gcc/config/i386/i386.c     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/i386/i386.c     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -46,6 +46,7 @@
- #include "target.h"
- #include "target-def.h"
- #include "langhooks.h"
-+#include "reload.h"
- #include "cgraph.h"
- #include "gimple.h"
- #include "dwarf2.h"
-@@ -2094,7 +2095,7 @@
- /* Feature tests against the various architecture variations, used to create
-    ix86_arch_features based on the processor mask.  */
- static unsigned int initial_ix86_arch_features[X86_ARCH_LAST] = {
--  /* X86_ARCH_CMOVE: Conditional move was added for pentiumpro.  */
-+  /* X86_ARCH_CMOV: Conditional move was added for pentiumpro.  */
-   ~(m_386 | m_486 | m_PENT | m_K6),
-   /* X86_ARCH_CMPXCHG: Compare and exchange was added for 80486.  */
-@@ -3811,7 +3812,7 @@
-          -mtune (rather than -march) points us to a processor that has them.
-          However, the VIA C3 gives a SIGILL, so we only do that for i686 and
-          higher processors.  */
--      if (TARGET_CMOVE
-+      if (TARGET_CMOV
-           && (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE)))
-         x86_prefetch_sse = true;
-       break;
-@@ -4181,12 +4182,6 @@
-       target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
-     }
--  /* For sane SSE instruction set generation we need fcomi instruction.
--     It is safe to enable all CMOVE instructions.  Also, RDRAND intrinsic
--     expands to a sequence that includes conditional move. */
--  if (TARGET_SSE || TARGET_RDRND)
--    TARGET_CMOVE = 1;
--
-   /* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix.  */
-   {
-     char *p;
-@@ -12168,6 +12163,64 @@
-   return false;
- }
-+/* Our implementation of LEGITIMIZE_RELOAD_ADDRESS.  Returns a value to
-+   replace the input X, or the original X if no replacement is called for.
-+   The output parameter *WIN is 1 if the calling macro should goto WIN,
-+   0 if it should not.  */
-+
-+bool
-+ix86_legitimize_reload_address (rtx x,
-+                              enum machine_mode mode ATTRIBUTE_UNUSED,
-+                              int opnum, int type,
-+                              int ind_levels ATTRIBUTE_UNUSED)
-+{
-+  /* Reload can generate:
-+
-+     (plus:DI (plus:DI (unspec:DI [(const_int 0 [0])] UNSPEC_TP)
-+                     (reg:DI 97))
-+            (reg:DI 2 cx))
-+
-+     This RTX is rejected from ix86_legitimate_address_p due to
-+     non-strictness of base register 97.  Following this rejection, 
-+     reload pushes all three components into separate registers,
-+     creating invalid memory address RTX.
-+
-+     Following code reloads only the invalid part of the
-+     memory address RTX.  */
-+
-+  if (GET_CODE (x) == PLUS
-+      && REG_P (XEXP (x, 1))
-+      && GET_CODE (XEXP (x, 0)) == PLUS
-+      && REG_P (XEXP (XEXP (x, 0), 1)))
-+    {
-+      rtx base, index;
-+      bool something_reloaded = false;
-+
-+      base = XEXP (XEXP (x, 0), 1);      
-+      if (!REG_OK_FOR_BASE_STRICT_P (base))
-+      {
-+        push_reload (base, NULL_RTX, &XEXP (XEXP (x, 0), 1), NULL,
-+                     BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
-+                     opnum, (enum reload_type)type);
-+        something_reloaded = true;
-+      }
-+
-+      index = XEXP (x, 1);
-+      if (!REG_OK_FOR_INDEX_STRICT_P (index))
-+      {
-+        push_reload (index, NULL_RTX, &XEXP (x, 1), NULL,
-+                     INDEX_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
-+                     opnum, (enum reload_type)type);
-+        something_reloaded = true;
-+      }
-+
-+      gcc_assert (something_reloaded);
-+      return true;
-+    }
-+
-+  return false;
-+}
-+
- /* Recognizes RTL expressions that are valid memory addresses for an
-    instruction.  The MODE argument is the machine mode for the MEM
-    expression that wants to use this address.
-@@ -27177,8 +27230,8 @@
-       arg_adjust = 0;
-       if (optimize
-         || target == 0
--        || GET_MODE (target) != tmode
--        || !insn_p->operand[0].predicate (target, tmode))
-+        || !register_operand (target, tmode)
-+        || GET_MODE (target) != tmode)
-       target = gen_reg_rtx (tmode);
-     }
-@@ -31377,9 +31430,9 @@
-         tmp = gen_reg_rtx (GET_MODE_INNER (mode));
-         ix86_expand_vector_extract (true, tmp, target, 1 - elt);
-         if (elt == 0)
-+          tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
-+        else
-           tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
--        else
--          tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
-         emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
-         return;
-       }
-@@ -31393,9 +31446,9 @@
-       tmp = gen_reg_rtx (GET_MODE_INNER (mode));
-       ix86_expand_vector_extract (false, tmp, target, 1 - elt);
-       if (elt == 0)
-+      tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
-+      else
-       tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
--      else
--      tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
-       emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
-       return;
-@@ -32823,7 +32876,8 @@
-         return ix86_cost->cond_not_taken_branch_cost;
-       case vec_perm:
--        return 1;
-+      case vec_promote_demote:
-+        return ix86_cost->vec_stmt_cost;
-       default:
-         gcc_unreachable ();
-Index: gcc/config/sh/linux-unwind.h
-===================================================================
---- gcc/config/sh/linux-unwind.h       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/sh/linux-unwind.h       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,6 @@
- /* DWARF2 EH unwinding support for SH Linux.
--   Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation,
-+   Inc.
- This file is part of GCC.
-@@ -80,9 +81,9 @@
-          && (*(unsigned long *) (pc+11)  == 0x6ff0fff0))
-     {
-       struct rt_sigframe {
--      struct siginfo *pinfo;
-+      siginfo_t *pinfo;
-       void *puc;
--      struct siginfo info;
-+      siginfo_t info;
-       struct ucontext uc;
-       } *rt_ = context->cfa;
-       /* The void * cast is necessary to avoid an aliasing warning.
-@@ -179,7 +180,7 @@
-               && (*(unsigned short *) (pc+14)  == 0x00ad))))
-     {
-       struct rt_sigframe {
--      struct siginfo info;
-+      siginfo_t info;
-       struct ucontext uc;
-       } *rt_ = context->cfa;
-       /* The void * cast is necessary to avoid an aliasing warning.
-Index: gcc/config/sh/sh.c
-===================================================================
---- gcc/config/sh/sh.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/sh/sh.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -763,11 +763,6 @@
-   SUBTARGET_OVERRIDE_OPTIONS;
-   if (optimize > 1 && !optimize_size)
-     target_flags |= MASK_SAVE_ALL_TARGET_REGS;
--  if (flag_finite_math_only == 2)
--    flag_finite_math_only
--      = !flag_signaling_nans && TARGET_SH2E && ! TARGET_IEEE;
--  if (TARGET_SH2E && !flag_finite_math_only)
--    target_flags |= MASK_IEEE;
-   sh_cpu = PROCESSOR_SH1;
-   assembler_dialect = 0;
-   if (TARGET_SH2)
-@@ -911,8 +906,6 @@
-     if (! VALID_REGISTER_P (ADDREGNAMES_REGNO (regno)))
-       sh_additional_register_names[regno][0] = '\0';
--  flag_omit_frame_pointer = (PREFERRED_DEBUGGING_TYPE == DWARF2_DEBUG);
--
-   if ((flag_pic && ! TARGET_PREFERGOT)
-       || (TARGET_SHMEDIA && !TARGET_PT_FIXED))
-     flag_no_function_cse = 1;
-@@ -944,22 +937,17 @@
-       flag_schedule_insns = 0;
-     }
--    if ((target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS) == 0)
--       target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
--
-   /* Unwind info is not correct around the CFG unless either a frame 
-      pointer is present or M_A_O_A is set.  Fixing this requires rewriting 
-      unwind info generation to be aware of the CFG and propagating states 
-      around edges.  */
-   if ((flag_unwind_tables || flag_asynchronous_unwind_tables
-        || flag_exceptions || flag_non_call_exceptions)   
--      && flag_omit_frame_pointer
--      && !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS))
-+      && flag_omit_frame_pointer && !TARGET_ACCUMULATE_OUTGOING_ARGS)
-     {
--      if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS)
-       warning (0, "unwind tables currently require either a frame pointer "
-                "or -maccumulate-outgoing-args for correctness");
--      target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
-+      TARGET_ACCUMULATE_OUTGOING_ARGS = 1;
-     }
-   /* Unwinding with -freorder-blocks-and-partition does not work on this
-@@ -1014,11 +1002,16 @@
-       align_functions = min_align;
-     }
-+  /* If the -mieee option was not explicitly set by the user, turn it on
-+     unless -ffinite-math-only was specified.  See also PR 33135.  */
-+  if (! global_options_set.x_TARGET_IEEE)
-+    TARGET_IEEE = ! flag_finite_math_only;
-+
-   if (sh_fixed_range_str)
-     sh_fix_range (sh_fixed_range_str);
-   /* This target defaults to strict volatile bitfields.  */
--  if (flag_strict_volatile_bitfields < 0)
-+  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
-     flag_strict_volatile_bitfields = 1;
- }
\f
-Index: gcc/config/sh/sh.opt
-===================================================================
---- gcc/config/sh/sh.opt       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/sh/sh.opt       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -202,7 +202,7 @@
- Generate FPU-less SHcompact code
- maccumulate-outgoing-args
--Target Report Mask(ACCUMULATE_OUTGOING_ARGS)
-+Target Report Var(TARGET_ACCUMULATE_OUTGOING_ARGS) Init(1)
- Reserve space for outgoing arguments in the function prologue
- madjust-unroll
-@@ -270,8 +270,8 @@
- Follow Renesas (formerly Hitachi) / SuperH calling conventions
- mieee
--Target Report Mask(IEEE)
--Increase the IEEE compliance for floating-point code
-+Target Var(TARGET_IEEE)
-+Increase the IEEE compliance for floating-point comparisons
- mindexed-addressing
- Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
-Index: gcc/config/avr/avr-stdint.h
-===================================================================
---- gcc/config/avr/avr-stdint.h        (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ gcc/config/avr/avr-stdint.h        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,66 @@
-+/* Definitions for <stdint.h> types on systems using newlib.
-+   Copyright (C) 2012 Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License as published by
-+the Free Software Foundation; either version 3, or (at your option)
-+any later version.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/*
-+   The intention of this file is to supply definitions that work with
-+   avr-gcc's -mint8 that sets int to an 8-bit type.
-+
-+   This file is intended to yield the same results as newlib-stdint.h,
-+   but there are some differences to newlib-stdint.h:
-+
-+   - AVR is an 8-bit architecture that cannot access 16-bit values
-+     atomically, this SIG_ATOMIC_TYPE is "char".
-+
-+   - For the same reason, [u]int_fast8_t is defined as 8-bit type.
-+
-+*/
-+   
-+#define SIG_ATOMIC_TYPE "char"
-+
-+#define INT8_TYPE "signed char"
-+#define INT16_TYPE (INT_TYPE_SIZE == 16 ? "short int" : "long int")
-+#define INT32_TYPE (INT_TYPE_SIZE == 16 ? "long int" : "long long int")
-+#define INT64_TYPE (INT_TYPE_SIZE == 16 ? "long long int" : 0)
-+#define UINT8_TYPE "unsigned char"
-+#define UINT16_TYPE (INT_TYPE_SIZE == 16 ? "short unsigned int" : "long unsigned int")
-+#define UINT32_TYPE (INT_TYPE_SIZE == 16 ? "long unsigned int" : "long long unsigned int")
-+#define UINT64_TYPE (INT_TYPE_SIZE == 16 ? "long long unsigned int" : 0)
-+
-+#define INT_LEAST8_TYPE INT8_TYPE
-+#define INT_LEAST16_TYPE INT16_TYPE
-+#define INT_LEAST32_TYPE INT32_TYPE
-+#define INT_LEAST64_TYPE INT64_TYPE
-+#define UINT_LEAST8_TYPE UINT8_TYPE
-+#define UINT_LEAST16_TYPE UINT16_TYPE
-+#define UINT_LEAST32_TYPE UINT32_TYPE
-+#define UINT_LEAST64_TYPE UINT64_TYPE
-+
-+#define INT_FAST8_TYPE INT8_TYPE
-+#define INT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "int" : INT16_TYPE)
-+#define INT_FAST32_TYPE INT32_TYPE
-+#define INT_FAST64_TYPE INT64_TYPE
-+#define UINT_FAST8_TYPE UINT8_TYPE
-+#define UINT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "unsigned int" : UINT16_TYPE)
-+#define UINT_FAST32_TYPE UINT32_TYPE
-+#define UINT_FAST64_TYPE UINT64_TYPE
-+
-+#define INTPTR_TYPE PTRDIFF_TYPE
-+#ifndef UINTPTR_TYPE
-+#define UINTPTR_TYPE SIZE_TYPE
-+#endif
-Index: gcc/config/avr/libgcc.S
-===================================================================
---- gcc/config/avr/libgcc.S    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/avr/libgcc.S    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -582,16 +582,7 @@
-       push r17
-       push r28
-       push r29
--#if defined (__AVR_HAVE_8BIT_SP__)
--;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
--;;        so this lines are dead code.  To make it work, devices without
--;;        SP_H must get their own multilib(s), see PR51345.
-       in      r28,__SP_L__
--      sub     r28,r26
--      clr     r29
--      out     __SP_L__,r28
--#else
--      in      r28,__SP_L__
-       in      r29,__SP_H__
-       sub     r28,r26
-       sbc     r29,r27
-@@ -600,7 +591,6 @@
-       out     __SP_H__,r29
-       out     __SREG__,__tmp_reg__
-       out     __SP_L__,r28
--#endif
- #if defined (__AVR_HAVE_EIJMP_EICALL__)
-       eijmp
- #else
-@@ -635,15 +625,6 @@
-       ldd     r16,Y+4
-       ldd     r17,Y+3
-       ldd     r26,Y+2
--#if defined (__AVR_HAVE_8BIT_SP__)
--;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
--;;        so this lines are dead code.  To make it work, devices without
--;;        SP_H must get their own multilib(s).
--      ldd     r29,Y+1
--      add     r28,r30
--      out     __SP_L__,r28
--      mov     r28, r26
--#else
-       ldd     r27,Y+1
-       add     r28,r30
-       adc     r29,__zero_reg__
-@@ -654,7 +635,6 @@
-       out     __SP_L__,r28
-       mov_l   r28, r26
-       mov_h   r29, r27
--#endif
-       ret
- .endfunc
- #endif /* defined (L_epilogue) */
-Index: gcc/config/avr/avr.md
-===================================================================
---- gcc/config/avr/avr.md      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/avr/avr.md      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -299,7 +299,7 @@
-   [(set (match_operand:HI 0 "stack_register_operand" "=q")
-         (unspec_volatile:HI [(match_operand:HI 1 "register_operand"  "r")] 
-                           UNSPECV_WRITE_SP_IRQ_OFF))]
--  "!AVR_HAVE_8BIT_SP"
-+  ""
-   "out __SP_H__, %B1
-       out __SP_L__, %A1"
-   [(set_attr "length" "2")
-@@ -309,7 +309,7 @@
-   [(set (match_operand:HI 0 "stack_register_operand" "=q")
-         (unspec_volatile:HI [(match_operand:HI 1 "register_operand"  "r")] 
-                           UNSPECV_WRITE_SP_IRQ_ON))]
--  "!AVR_HAVE_8BIT_SP"
-+  ""
-   "cli
-         out __SP_H__, %B1
-       sei
-Index: gcc/config/avr/avr.c
-===================================================================
---- gcc/config/avr/avr.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/avr/avr.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1879,12 +1879,9 @@
-           }
-         else if (test_hard_reg_class (STACK_REG, src))
-           {
--              *l = 2;
--              return AVR_HAVE_8BIT_SP
--                ? (AS2 (in,%A0,__SP_L__) CR_TAB
--                   AS1 (clr,%B0))
--                : (AS2 (in,%A0,__SP_L__) CR_TAB
--                   AS2 (in,%B0,__SP_H__));
-+            *l = 2;   
-+            return (AS2 (in,%A0,__SP_L__) CR_TAB
-+                    AS2 (in,%B0,__SP_H__));
-           }
-         if (AVR_HAVE_MOVW)
-@@ -5177,10 +5174,9 @@
-   default_file_start ();
--  fputs ("__SREG__ = 0x3f\n", asm_out_file);
--  if (!AVR_HAVE_8BIT_SP)
--    fputs ("__SP_H__ = 0x3e\n", asm_out_file);
--  fputs ("__SP_L__ = 0x3d\n", asm_out_file);
-+  fputs ("__SREG__ = 0x3f\n"
-+       "__SP_H__ = 0x3e\n"
-+       "__SP_L__ = 0x3d\n", asm_out_file);
-   
-   fputs ("__tmp_reg__ = 0\n" 
-          "__zero_reg__ = 1\n", asm_out_file);
-Index: gcc/config/xtensa/linux-unwind.h
-===================================================================
---- gcc/config/xtensa/linux-unwind.h   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/xtensa/linux-unwind.h   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,5 @@
- /* DWARF2 EH unwinding support for Xtensa.
--   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc.
- This file is part of GCC.
-@@ -62,7 +62,7 @@
-   struct sigcontext *sc;
-   struct rt_sigframe {
--    struct siginfo info;
-+    siginfo_t info;
-     struct ucontext uc;
-   } *rt_;
-Index: gcc/config/host-linux.c
-===================================================================
---- gcc/config/host-linux.c    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/host-linux.c    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -84,6 +84,8 @@
- # define TRY_EMPTY_VM_SPACE   0x60000000
- #elif defined(__mc68000__)
- # define TRY_EMPTY_VM_SPACE   0x40000000
-+#elif defined(__ARM_EABI__)
-+# define TRY_EMPTY_VM_SPACE     0x60000000
- #else
- # define TRY_EMPTY_VM_SPACE   0
- #endif
-Index: gcc/config/mn10300/mn10300.c
-===================================================================
---- gcc/config/mn10300/mn10300.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/mn10300/mn10300.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2505,12 +2505,15 @@
-    may access it using GOTOFF instead of GOT.  */
- static void
--mn10300_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
-+mn10300_encode_section_info (tree decl, rtx rtl, int first)
- {
-   rtx symbol;
-+  default_encode_section_info (decl, rtl, first);
-+
-   if (! MEM_P (rtl))
-     return;
-+
-   symbol = XEXP (rtl, 0);
-   if (GET_CODE (symbol) != SYMBOL_REF)
-     return;
-Index: gcc/config/ia64/linux-unwind.h
-===================================================================
---- gcc/config/ia64/linux-unwind.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/ia64/linux-unwind.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,5 @@
- /* DWARF2 EH unwinding support for IA64 Linux.
--   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
-    This file is part of GCC.
-@@ -47,7 +47,7 @@
-       struct sigframe {
-       char scratch[16];
-       unsigned long sig_number;
--      struct siginfo *info;
-+      siginfo_t *info;
-       struct sigcontext *sc;
-       } *frame_ = (struct sigframe *)context->psp;
-       struct sigcontext *sc = frame_->sc;
-@@ -137,7 +137,7 @@
-       struct sigframe {
-       char scratch[16];
-       unsigned long sig_number;
--      struct siginfo *info;
-+      siginfo_t *info;
-       struct sigcontext *sc;
-       } *frame = (struct sigframe *)context->psp;
-       struct sigcontext *sc = frame->sc;
-Index: gcc/config/rs6000/vector.md
-===================================================================
---- gcc/config/rs6000/vector.md        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rs6000/vector.md        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -448,6 +448,94 @@
-   "VECTOR_UNIT_ALTIVEC_P (<MODE>mode)"
-   "")
-+(define_insn_and_split "*vector_uneq<mode>"
-+  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
-+      (uneq:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
-+                  (match_operand:VEC_F 2 "vfloat_operand" "")))]
-+  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
-+  "#"
-+  ""
-+  [(set (match_dup 3)
-+      (gt:VEC_F (match_dup 1)
-+                (match_dup 2)))
-+   (set (match_dup 4)
-+      (gt:VEC_F (match_dup 2)
-+                (match_dup 1)))
-+   (set (match_dup 0)
-+      (not:VEC_F (ior:VEC_F (match_dup 3)
-+                            (match_dup 4))))]
-+  "
-+{
-+  operands[3] = gen_reg_rtx (<MODE>mode);
-+  operands[4] = gen_reg_rtx (<MODE>mode);
-+}")
-+
-+(define_insn_and_split "*vector_ltgt<mode>"
-+  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
-+      (ltgt:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
-+                  (match_operand:VEC_F 2 "vfloat_operand" "")))]
-+  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
-+  "#"
-+  ""
-+  [(set (match_dup 3)
-+      (gt:VEC_F (match_dup 1)
-+                (match_dup 2)))
-+   (set (match_dup 4)
-+      (gt:VEC_F (match_dup 2)
-+                (match_dup 1)))
-+   (set (match_dup 0)
-+      (ior:VEC_F (match_dup 3)
-+                 (match_dup 4)))]
-+  "
-+{
-+  operands[3] = gen_reg_rtx (<MODE>mode);
-+  operands[4] = gen_reg_rtx (<MODE>mode);
-+}")
-+
-+(define_insn_and_split "*vector_ordered<mode>"
-+  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
-+      (ordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
-+                     (match_operand:VEC_F 2 "vfloat_operand" "")))]
-+  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
-+  "#"
-+  ""
-+  [(set (match_dup 3)
-+      (ge:VEC_F (match_dup 1)
-+                (match_dup 2)))
-+   (set (match_dup 4)
-+      (ge:VEC_F (match_dup 2)
-+                (match_dup 1)))
-+   (set (match_dup 0)
-+      (ior:VEC_F (match_dup 3)
-+                 (match_dup 4)))]
-+  "
-+{
-+  operands[3] = gen_reg_rtx (<MODE>mode);
-+  operands[4] = gen_reg_rtx (<MODE>mode);
-+}")
-+
-+(define_insn_and_split "*vector_unordered<mode>"
-+  [(set (match_operand:VEC_F 0 "vfloat_operand" "")
-+      (unordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
-+                       (match_operand:VEC_F 2 "vfloat_operand" "")))]
-+  "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
-+  "#"
-+  ""
-+  [(set (match_dup 3)
-+      (ge:VEC_F (match_dup 1)
-+                (match_dup 2)))
-+   (set (match_dup 4)
-+      (ge:VEC_F (match_dup 2)
-+                (match_dup 1)))
-+   (set (match_dup 0)
-+      (not:VEC_F (ior:VEC_F (match_dup 3)
-+                            (match_dup 4))))]
-+  "
-+{
-+  operands[3] = gen_reg_rtx (<MODE>mode);
-+  operands[4] = gen_reg_rtx (<MODE>mode);
-+}")
-+
- ;; Note the arguments for __builtin_altivec_vsel are op2, op1, mask
- ;; which is in the reverse order that we want
- (define_expand "vector_select_<mode>"
-Index: gcc/config/rs6000/rs6000.c
-===================================================================
---- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -3695,12 +3695,23 @@
-       case vec_to_scalar:
-       case scalar_to_vec:
-       case cond_branch_not_taken:
--      case vec_perm:
-         return 1;
-       case cond_branch_taken:
-         return 3;
-+      case vec_perm:
-+      if (TARGET_VSX)
-+        return 4;
-+      else
-+        return 1;
-+
-+      case vec_promote_demote:
-+      if (TARGET_VSX)
-+        return 5;
-+      else
-+        return 1;
-+
-       case unaligned_load:
-         if (TARGET_VSX && TARGET_ALLOW_MOVMISALIGN)
-           {
-@@ -15811,7 +15822,6 @@
- print_operand (FILE *file, rtx x, int code)
- {
-   int i;
--  HOST_WIDE_INT val;
-   unsigned HOST_WIDE_INT uval;
-   switch (code)
-@@ -16252,34 +16262,17 @@
-     case 'W':
-       /* MB value for a PowerPC64 rldic operand.  */
--      val = (GET_CODE (x) == CONST_INT
--           ? INTVAL (x) : CONST_DOUBLE_HIGH (x));
-+      i = clz_hwi (GET_CODE (x) == CONST_INT
-+                 ? INTVAL (x) : CONST_DOUBLE_HIGH (x));
--      if (val < 0)
--      i = -1;
--      else
--      for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++)
--        if ((val <<= 1) < 0)
--          break;
--
- #if HOST_BITS_PER_WIDE_INT == 32
--      if (GET_CODE (x) == CONST_INT && i >= 0)
-+      if (GET_CODE (x) == CONST_INT && i > 0)
-       i += 32;  /* zero-extend high-part was all 0's */
-       else if (GET_CODE (x) == CONST_DOUBLE && i == 32)
--      {
--        val = CONST_DOUBLE_LOW (x);
--
--        gcc_assert (val);
--        if (val < 0)
--          --i;
--        else
--          for ( ; i < 64; i++)
--            if ((val <<= 1) < 0)
--              break;
--      }
-+      i = clz_hwi (CONST_DOUBLE_LOW (x)) + 32;
- #endif
--      fprintf (file, "%d", i + 1);
-+      fprintf (file, "%d", i);
-       return;
-     case 'x':
-@@ -17229,6 +17222,10 @@
-     case EQ:
-     case GT:
-     case GTU:
-+    case ORDERED:
-+    case UNORDERED:
-+    case UNEQ:
-+    case LTGT:
-       mask = gen_reg_rtx (mode);
-       emit_insn (gen_rtx_SET (VOIDmode,
-                             mask,
-Index: gcc/config/rs6000/vsx.md
-===================================================================
---- gcc/config/rs6000/vsx.md   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rs6000/vsx.md   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1006,9 +1006,9 @@
-   "VECTOR_MEM_VSX_P (<MODE>mode)"
- {
-   if (INTVAL (operands[3]) == 0)
--    return \"xxpermdi %x0,%x1,%x2,1\";
-+    return \"xxpermdi %x0,%x2,%x1,1\";
-   else if (INTVAL (operands[3]) == 1)
--    return \"xxpermdi %x0,%x2,%x1,0\";
-+    return \"xxpermdi %x0,%x1,%x2,0\";
-   else
-     gcc_unreachable ();
- }
-Index: gcc/config/rs6000/rs6000.h
-===================================================================
---- gcc/config/rs6000/rs6000.h (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rs6000/rs6000.h (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -469,10 +469,11 @@
- /* ISA 2.01 allowed FCFID to be done in 32-bit, previously it was 64-bit only.
-    Enable 32-bit fcfid's on any of the switches for newer ISA machines or
-    XILINX.  */
--#define TARGET_FCFID  (TARGET_POWERPC64 \
--                       || TARGET_POPCNTB      /* ISA 2.02 */ \
--                       || TARGET_CMPB         /* ISA 2.05 */ \
--                       || TARGET_POPCNTD      /* ISA 2.06 */ \
-+#define TARGET_FCFID  (TARGET_POWERPC64                               \
-+                       || TARGET_PPC_GPOPT    /* 970/power4 */        \
-+                       || TARGET_POPCNTB      /* ISA 2.02 */          \
-+                       || TARGET_CMPB         /* ISA 2.05 */          \
-+                       || TARGET_POPCNTD      /* ISA 2.06 */          \
-                        || TARGET_XILINX_FPU)
- #define TARGET_FCTIDZ TARGET_FCFID
-Index: gcc/config/rs6000/altivec.md
-===================================================================
---- gcc/config/rs6000/altivec.md       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rs6000/altivec.md       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2394,8 +2394,8 @@
- (define_insn "altivec_stvlx"
-   [(parallel
--    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
--        (match_operand:V4SI 1 "register_operand" "v"))
-+    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
-+        (match_operand:V16QI 1 "register_operand" "v"))
-      (unspec [(const_int 0)] UNSPEC_STVLX)])]
-   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
-   "stvlx %1,%y0"
-@@ -2403,8 +2403,8 @@
- (define_insn "altivec_stvlxl"
-   [(parallel
--    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
--        (match_operand:V4SI 1 "register_operand" "v"))
-+    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
-+        (match_operand:V16QI 1 "register_operand" "v"))
-      (unspec [(const_int 0)] UNSPEC_STVLXL)])]
-   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
-   "stvlxl %1,%y0"
-@@ -2412,8 +2412,8 @@
- (define_insn "altivec_stvrx"
-   [(parallel
--    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
--        (match_operand:V4SI 1 "register_operand" "v"))
-+    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
-+        (match_operand:V16QI 1 "register_operand" "v"))
-      (unspec [(const_int 0)] UNSPEC_STVRX)])]
-   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
-   "stvrx %1,%y0"
-@@ -2421,8 +2421,8 @@
- (define_insn "altivec_stvrxl"
-   [(parallel
--    [(set (match_operand:V4SI 0 "memory_operand" "=Z")
--        (match_operand:V4SI 1 "register_operand" "v"))
-+    [(set (match_operand:V16QI 0 "memory_operand" "=Z")
-+        (match_operand:V16QI 1 "register_operand" "v"))
-      (unspec [(const_int 0)] UNSPEC_STVRXL)])]
-   "TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
-   "stvrxl %1,%y0"
-Index: gcc/config/rs6000/rs6000.md
-===================================================================
---- gcc/config/rs6000/rs6000.md        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/rs6000/rs6000.md        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2524,8 +2524,19 @@
-   if (GET_CODE (addr1) == PLUS)
-     {
-       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
--      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
-+      if (TARGET_AVOID_XFORM)
-+      {
-+        emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
-+        addr2 = op2;
-+      }
-+      else
-+      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
-     }
-+  else if (TARGET_AVOID_XFORM)
-+    {
-+      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
-+      addr2 = op2;
-+    }
-   else
-     {
-       emit_move_insn (op2, GEN_INT (4));
-@@ -2574,8 +2585,19 @@
-   if (GET_CODE (addr1) == PLUS)
-     {
-       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
--      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
-+      if (TARGET_AVOID_XFORM)
-+      {
-+        emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
-+        addr2 = op2;
-+      }
-+      else
-+      addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
-     }
-+  else if (TARGET_AVOID_XFORM)
-+    {
-+      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
-+      addr2 = op2;
-+    }
-   else
-     {
-       emit_move_insn (op2, GEN_INT (4));
-@@ -2655,8 +2677,19 @@
-   if (GET_CODE (addr1) == PLUS)
-     {
-       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
--      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
-+      if (TARGET_AVOID_XFORM)
-+      {
-+        emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
-+        addr2 = op2;
-+      }
-+      else
-+      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
-     }
-+  else if (TARGET_AVOID_XFORM)
-+    {
-+      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
-+      addr2 = op2;
-+    }
-   else
-     {
-       emit_move_insn (op2, GEN_INT (4));
-@@ -2700,8 +2733,19 @@
-   if (GET_CODE (addr1) == PLUS)
-     {
-       emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
--      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
-+      if (TARGET_AVOID_XFORM)
-+      {
-+        emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
-+        addr2 = op2;
-+      }
-+      else
-+      addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
-     }
-+  else if (TARGET_AVOID_XFORM)
-+    {
-+      emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
-+      addr2 = op2;
-+    }
-   else
-     {
-       emit_move_insn (op2, GEN_INT (4));
-
-Property changes on: gcc/config/rs6000/rs6000.md
-___________________________________________________________________
-Added: svn:mergeinfo
-   Merged /trunk/gcc/config/rs6000/rs6000.md:r187119
-Index: gcc/config/arm/arm.c
-===================================================================
---- gcc/config/arm/arm.c       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/arm/arm.c       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -2005,7 +2005,8 @@
-                          global_options_set.x_param_values);
-   /* ARM EABI defaults to strict volatile bitfields.  */
--  if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0)
-+  if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0
-+      && abi_version_at_least(2))
-     flag_strict_volatile_bitfields = 1;
-   /* Enable sw prefetching at -O3 for CPUS that have prefetch, and we have deemed
-@@ -23422,8 +23423,11 @@
-       }
-     }
-+  /* Note: label is before barrier so that in cmp failure case we still get
-+     a barrier to stop subsequent loads floating upwards past the ldrex
-+     PR target/48126.  */
-+  arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
-   arm_process_output_memory_barrier (emit, NULL);
--  arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
- }
- static rtx
-Index: gcc/config/arm/arm.h
-===================================================================
---- gcc/config/arm/arm.h       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/arm/arm.h       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -294,7 +294,8 @@
- #define TARGET_HAVE_DMB               (arm_arch7)
- /* Nonzero if this chip implements a memory barrier via CP15.  */
--#define TARGET_HAVE_DMB_MCR   (arm_arch6k && ! TARGET_HAVE_DMB)
-+#define TARGET_HAVE_DMB_MCR   (arm_arch6 && ! TARGET_HAVE_DMB \
-+                               && ! TARGET_THUMB1)
- /* Nonzero if this chip implements a memory barrier instruction.  */
- #define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
-Index: gcc/config/pa/predicates.md
-===================================================================
---- gcc/config/pa/predicates.md        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/pa/predicates.md        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -421,9 +421,9 @@
-   (ior (match_operand 0 "register_operand")
-        (match_operand 0 "cint_ior_operand")))
--;; True iff OP is a CONST_INT of the forms 0...0xxxx or
--;; 0...01...1xxxx. Such values can be the left hand side x in (x <<
--;; r), using the zvdepi instruction.
-+;; True iff OP is a CONST_INT of the forms 0...0xxxx, 0...01...1xxxx,
-+;; or 1...1xxxx. Such values can be the left hand side x in (x << r),
-+;; using the zvdepi instruction.
- (define_predicate "lhs_lshift_cint_operand"
-   (match_code "const_int")
-Index: gcc/config/pa/linux-unwind.h
-===================================================================
---- gcc/config/pa/linux-unwind.h       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/pa/linux-unwind.h       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,5 @@
- /* DWARF2 EH unwinding support for PA Linux.
--   Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
- This file is part of GCC.
-@@ -63,7 +63,7 @@
-   int i;
-   struct sigcontext *sc;
-   struct rt_sigframe {
--    struct siginfo info;
-+    siginfo_t info;
-     struct ucontext uc;
-   } *frame;
-Index: gcc/config/pa/pa.md
-===================================================================
---- gcc/config/pa/pa.md        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/pa/pa.md        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -6348,7 +6348,7 @@
-   ""
-   "*
- {
--  int x = INTVAL (operands[1]);
-+  unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
-   operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
-   operands[1] = GEN_INT ((x & 0xf) - 0x10);
-   return \"{zvdepi %1,%2,%0|depwi,z %1,%%sar,%2,%0}\";
-@@ -6366,7 +6366,7 @@
-   "exact_log2 (INTVAL (operands[1]) + 1) > 0"
-   "*
- {
--  int x = INTVAL (operands[1]);
-+  HOST_WIDE_INT x = INTVAL (operands[1]);
-   operands[2] = GEN_INT (exact_log2 (x + 1));
-   return \"{vdepi -1,%2,%0|depwi -1,%%sar,%2,%0}\";
- }"
-@@ -6383,7 +6383,7 @@
-   "INTVAL (operands[1]) == -2"
-   "*
- {
--  int x = INTVAL (operands[1]);
-+  HOST_WIDE_INT x = INTVAL (operands[1]);
-   operands[2] = GEN_INT (exact_log2 ((~x) + 1));
-   return \"{vdepi 0,%2,%0|depwi 0,%%sar,%2,%0}\";
- }"
-@@ -6447,7 +6447,7 @@
-   "TARGET_64BIT"
-   "*
- {
--  int x = INTVAL (operands[1]);
-+  unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
-   operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
-   operands[1] = GEN_INT ((x & 0x1f) - 0x20);
-   return \"depdi,z %1,%%sar,%2,%0\";
-@@ -6465,7 +6465,7 @@
-   "TARGET_64BIT && exact_log2 (INTVAL (operands[1]) + 1) > 0"
-   "*
- {
--  int x = INTVAL (operands[1]);
-+  HOST_WIDE_INT x = INTVAL (operands[1]);
-   operands[2] = GEN_INT (exact_log2 (x + 1));
-   return \"depdi -1,%%sar,%2,%0\";
- }"
-@@ -6482,7 +6482,7 @@
-   "TARGET_64BIT && INTVAL (operands[1]) == -2"
-   "*
- {
--  int x = INTVAL (operands[1]);
-+  HOST_WIDE_INT x = INTVAL (operands[1]);
-   operands[2] = GEN_INT (exact_log2 ((~x) + 1));
-   return \"depdi 0,%%sar,%2,%0\";
- }"
-@@ -6671,6 +6671,20 @@
\f
- ;; Unconditional and other jump instructions.
-+;; Trivial return used when no epilogue is needed.
-+(define_insn "return"
-+  [(return)
-+   (use (reg:SI 2))]
-+  "pa_can_use_return_insn ()"
-+  "*
-+{
-+  if (TARGET_PA_20)
-+    return \"bve%* (%%r2)\";
-+  return \"bv%* %%r0(%%r2)\";
-+}"
-+  [(set_attr "type" "branch")
-+   (set_attr "length" "4")])
-+
- ;; This is used for most returns.
- (define_insn "return_internal"
-   [(return)
-@@ -6719,11 +6733,8 @@
-   rtx x;
-   /* Try to use the trivial return first.  Else use the full epilogue.  */
--  if (reload_completed
--      && !frame_pointer_needed
--      && !df_regs_ever_live_p (2)
--      && (compute_frame_size (get_frame_size (), 0) ? 0 : 1))
--    x = gen_return_internal ();
-+  if (pa_can_use_return_insn ())
-+    x = gen_return ();
-   else
-     {
-       hppa_expand_epilogue ();
-Index: gcc/config/pa/pa-protos.h
-===================================================================
---- gcc/config/pa/pa-protos.h  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/pa/pa-protos.h  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -136,6 +136,7 @@
- extern int cint_ok_for_move (HOST_WIDE_INT);
- extern void hppa_expand_prologue (void);
- extern void hppa_expand_epilogue (void);
-+extern bool pa_can_use_return_insn (void);
- extern int ior_mask_p (unsigned HOST_WIDE_INT);
- extern void compute_zdepdi_operands (unsigned HOST_WIDE_INT,
-                                    unsigned *);
-Index: gcc/config/pa/pa.c
-===================================================================
---- gcc/config/pa/pa.c (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/pa/pa.c (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -185,6 +185,7 @@
- static void pa_conditional_register_usage (void);
- static enum machine_mode pa_c_mode_for_suffix (char);
- static section *pa_function_section (tree, enum node_frequency, bool, bool);
-+static unsigned int pa_section_type_flags (tree, const char *, int);
- /* The following extra sections are only used for SOM.  */
- static GTY(()) section *som_readonly_data_section;
-@@ -400,6 +401,9 @@
- #undef TARGET_ASM_FUNCTION_SECTION
- #define TARGET_ASM_FUNCTION_SECTION pa_function_section
-+#undef TARGET_SECTION_TYPE_FLAGS
-+#define TARGET_SECTION_TYPE_FLAGS pa_section_type_flags
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
\f
- /* Parse the -mfixed-range= option string.  */
-@@ -4442,6 +4446,24 @@
-     }
- }
-+bool
-+pa_can_use_return_insn (void)
-+{
-+  if (!reload_completed)
-+    return false;
-+
-+  if (frame_pointer_needed)
-+    return false;
-+
-+  if (df_regs_ever_live_p (2))
-+    return false;
-+
-+  if (crtl->profile)
-+    return false;
-+
-+  return compute_frame_size (get_frame_size (), 0) == 0;
-+}
-+
- rtx
- hppa_pic_save_rtx (void)
- {
-@@ -4586,7 +4608,7 @@
-   rtx saved_rp;
-   rtx ins;
--  /* Instruction stream at the normal return address for the export stub:
-+  /* The instruction stream at the return address of a PA1.X export stub is:
-       0x4bc23fd1 | stub+8:   ldw -18(sr0,sp),rp
-       0x004010a1 | stub+12:  ldsid (sr0,rp),r1
-@@ -4594,11 +4616,17 @@
-       0xe0400002 | stub+20:  be,n 0(sr0,rp)
-      0xe0400002 must be specified as -532676606 so that it won't be
--     rejected as an invalid immediate operand on 64-bit hosts.  */
-+     rejected as an invalid immediate operand on 64-bit hosts.
--  HOST_WIDE_INT insns[4] = {0x4bc23fd1, 0x004010a1, 0x00011820, -532676606};
--  int i;
-+     The instruction stream at the return address of a PA2.0 export stub is:
-+      0x4bc23fd1 | stub+8:   ldw -18(sr0,sp),rp
-+      0xe840d002 | stub+12:  bve,n (rp)
-+  */
-+
-+  HOST_WIDE_INT insns[4];
-+  int i, len;
-+
-   if (count != 0)
-     return NULL_RTX;
-@@ -4620,11 +4648,26 @@
-   ins = copy_to_reg (gen_rtx_AND (Pmode, rp, MASK_RETURN_ADDR));
-   label = gen_label_rtx ();
-+  if (TARGET_PA_20)
-+    {
-+      insns[0] = 0x4bc23fd1;
-+      insns[1] = -398405630;
-+      len = 2;
-+    }
-+  else
-+    {
-+      insns[0] = 0x4bc23fd1;
-+      insns[1] = 0x004010a1;
-+      insns[2] = 0x00011820;
-+      insns[3] = -532676606;
-+      len = 4;
-+    }
-+
-   /* Check the instruction stream at the normal return address for the
-      export stub.  If it is an export stub, than our return address is
-      really in -24[frameaddr].  */
--  for (i = 0; i < 3; i++)
-+  for (i = 0; i < len; i++)
-     {
-       rtx op0 = gen_rtx_MEM (SImode, plus_constant (ins, i * 4)); 
-       rtx op1 = GEN_INT (insns[i]);
-@@ -7501,7 +7544,7 @@
-     return 24;
-   else
-     {
--      if (!TARGET_LONG_CALLS && distance < 240000)
-+      if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET)
-       return 8;
-       if (TARGET_LONG_ABS_CALL && !flag_pic)
-@@ -7714,7 +7757,7 @@
-   /* pc-relative branch.  */
-   if (!TARGET_LONG_CALLS
-       && ((TARGET_PA_20 && !sibcall && distance < 7600000)
--        || distance < 240000))
-+        || distance < MAX_PCREL17F_OFFSET))
-     length += 8;
-   /* 64-bit plabel sequence.  */
-@@ -8073,7 +8116,7 @@
-   if (TARGET_FAST_INDIRECT_CALLS
-       || (!TARGET_PORTABLE_RUNTIME
-         && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000)
--            || distance < 240000)))
-+            || distance < MAX_PCREL17F_OFFSET)))
-     return 8;
-   if (flag_pic)
-@@ -10392,4 +10435,23 @@
-   return default_function_section (decl, freq, startup, exit);
- }
-+/* Implement TARGET_SECTION_TYPE_FLAGS.  */
-+
-+static unsigned int
-+pa_section_type_flags (tree decl, const char *name, int reloc)
-+{
-+  unsigned int flags;
-+
-+  flags = default_section_type_flags (decl, name, reloc);
-+
-+  /* Function labels are placed in the constant pool.  This can
-+     cause a section conflict if decls are put in ".data.rel.ro"
-+     or ".data.rel.ro.local" using the __attribute__ construct.  */
-+  if (strcmp (name, ".data.rel.ro") == 0
-+      || strcmp (name, ".data.rel.ro.local") == 0)
-+    flags |= SECTION_WRITE | SECTION_RELRO;
-+
-+  return flags;
-+}
-+
- #include "gt-pa.h"
-Index: gcc/config/pa/pa.h
-===================================================================
---- gcc/config/pa/pa.h (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/pa/pa.h (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1563,3 +1563,12 @@
- #undef TARGET_HAVE_TLS
- #define TARGET_HAVE_TLS true
- #endif
-+
-+/* The maximum offset in bytes for a PA 1.X pc-relative call to the
-+   head of the preceding stub table.  The selected offsets have been
-+   chosen so that approximately one call stub is allocated for every
-+   86.7 instructions.  A long branch stub is two instructions when
-+   not generating PIC code.  For HP-UX and ELF targets, PIC stubs are
-+   seven and four instructions, respectively.  */  
-+#define MAX_PCREL17F_OFFSET \
-+  (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000)
-Index: gcc/config/mips/linux-unwind.h
-===================================================================
---- gcc/config/mips/linux-unwind.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/mips/linux-unwind.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,6 @@
- /* DWARF2 EH unwinding support for MIPS Linux.
--   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software
-+   Foundation, Inc.
- This file is part of GCC.
-@@ -75,7 +76,7 @@
-       struct rt_sigframe {
-       u_int32_t ass[4];  /* Argument save space for o32.  */
-       u_int32_t trampoline[2];
--      struct siginfo info;
-+      siginfo_t info;
-       _sig_ucontext_t uc;
-       } *rt_ = context->cfa;
-       sc = &rt_->uc.uc_mcontext;
-Index: gcc/config/h8300/h8300.c
-===================================================================
---- gcc/config/h8300/h8300.c   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/h8300/h8300.c   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -416,7 +416,7 @@
-     }
-   /* This target defaults to strict volatile bitfields.  */
--  if (flag_strict_volatile_bitfields < 0)
-+  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
-     flag_strict_volatile_bitfields = 1;
- }
-Index: gcc/config/bfin/linux-unwind.h
-===================================================================
---- gcc/config/bfin/linux-unwind.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/config/bfin/linux-unwind.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,5 @@
- /* DWARF2 EH unwinding support for Blackfin.
--   Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-+   Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc.
- This file is part of GCC.
-@@ -48,10 +48,10 @@
-     {
-       struct rt_sigframe {
-       int sig;
--      struct siginfo *pinfo;
-+      siginfo_t *pinfo;
-       void *puc;
-       char retcode[8];
--      struct siginfo info;
-+      siginfo_t info;
-       struct ucontext uc;
-       } *rt_ = context->cfa;
-Index: gcc/convert.c
-===================================================================
---- gcc/convert.c      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ gcc/convert.c      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -44,11 +44,6 @@
-   if (TREE_TYPE (expr) == type)
-     return expr;
--  /* Propagate overflow to the NULL pointer.  */
--  if (integer_zerop (expr))
--    return force_fit_type_double (type, double_int_zero, 0,
--                                TREE_OVERFLOW (expr));
--
-   switch (TREE_CODE (TREE_TYPE (expr)))
-     {
-     case POINTER_TYPE:
-Index: libstdc++-v3/configure
-===================================================================
---- libstdc++-v3/configure     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/configure     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -19477,7 +19477,85 @@
-+# For copy-assignable gthreads types
-+
-+
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  ac_save_CXXFLAGS="$CXXFLAGS"
-+  CXXFLAGS="$CXXFLAGS -std=c++0x -I${toplevel_srcdir}/gcc"
-+
-+  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
-+  case $target_thread_file in
-+    posix)
-+      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
-+  esac
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gthreads types are copy-assignable in C++11 mode" >&5
-+$as_echo_n "checking whether gthreads types are copy-assignable in C++11 mode... " >&6; }
-+
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include "gthr.h"
-+int
-+main ()
-+{
-+
-+      #ifdef __GTHREAD_MUTEX_INIT
-+      __gthread_mutex_t m1;
-+      __gthread_mutex_t m2 = __GTHREAD_MUTEX_INIT;
-+      m1 = m2;
-+      #endif
-+      #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
-+      __gthread_recursive_mutex_t r1;
-+      __gthread_recursive_mutex_t r2 = __GTHREAD_RECURSIVE_MUTEX_INIT;
-+      r1 = r2;
-+      #endif
-+      #ifdef __GTHREAD_HAS_COND
-+      #ifdef __GTHREAD_COND_INIT
-+      __gthread_cond_t c1;
-+      __gthread_cond_t c2 = __GTHREAD_COND_INIT;
-+      c1 = c2;
-+      #endif
-+      #endif
-+
-+  ;
-+  return 0;
-+}
-+_ACEOF
-+if ac_fn_cxx_try_compile "$LINENO"; then :
-+  ac_gthread_cxx11_copy_assign=1
-+else
-+  ac_gthread_cxx11_copy_assign=0
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+  if test $ac_gthread_cxx11_copy_assign = 1 ; then res_gthr_copy_assign=yes ;
-+  else res_gthr_copy_assign=no ; fi
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $res_gthr_copy_assign" >&5
-+$as_echo "$res_gthr_copy_assign" >&6; }
-+
-+  if test x"$res_gthr_copy_assign" = x"no"; then
-+
-+$as_echo "#define _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11 1" >>confdefs.h
-+
-+  fi
-+
-+  CXXFLAGS="$ac_save_CXXFLAGS"
-+  ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+
-+
-   ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
- if test "x$ac_cv_header_locale_h" = x""yes; then :
-Index: libstdc++-v3/src/condition_variable.cc
-===================================================================
---- libstdc++-v3/src/condition_variable.cc     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/src/condition_variable.cc     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,6 +1,6 @@
- // condition_variable -*- C++ -*-
--// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
-+// Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -34,7 +34,12 @@
-   {
- #ifdef __GTHREAD_COND_INIT
-     __native_type __tmp = __GTHREAD_COND_INIT;
-+#if defined __GXX_EXPERIMENTAL_CXX0X__ \
-+  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
-+    __builtin_memcpy(&_M_cond, &__tmp, sizeof(_M_cond));
-+#else
-     _M_cond = __tmp;
-+#endif
- #else
-     int __e = __gthread_cond_init(&_M_cond, 0);
-Index: libstdc++-v3/configure.ac
-===================================================================
---- libstdc++-v3/configure.ac  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/configure.ac  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -164,6 +164,9 @@
- # For gthread support
- GLIBCXX_CHECK_GTHREADS
-+# For copy-assignable gthreads types
-+GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN
-+
- AC_LC_MESSAGES
- # Check for available headers.
-Index: libstdc++-v3/include/debug/safe_iterator.h
-===================================================================
---- libstdc++-v3/include/debug/safe_iterator.h (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/include/debug/safe_iterator.h (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,6 +1,6 @@
- // Safe iterator implementation  -*- C++ -*-
--// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011
-+// Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010, 2011, 2012
- // Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
-@@ -142,7 +142,25 @@
-                             ._M_iterator(__x, "other"));
-       }
-+#ifdef __GXX_EXPERIMENTAL_CXX0X__
-       /**
-+       * @brief Move construction.
-+       * @post __x is singular and unattached
-+       */
-+      _Safe_iterator(_Safe_iterator&& __x) : _M_current()
-+      {
-+      _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
-+                            || __x._M_current == _Iterator(),
-+                            _M_message(__msg_init_copy_singular)
-+                            ._M_iterator(*this, "this")
-+                            ._M_iterator(__x, "other"));
-+      std::swap(_M_current, __x._M_current);
-+      this->_M_attach(__x._M_sequence);
-+      __x._M_detach();
-+      }
-+#endif
-+
-+      /**
-        *  @brief Converting constructor from a mutable iterator to a
-        *  constant iterator.
-       */
-@@ -181,7 +199,28 @@
-       return *this;
-       }
-+#ifdef __GXX_EXPERIMENTAL_CXX0X__
-       /**
-+       * @brief Move assignment.
-+       * @post __x is singular and unattached
-+       */
-+      _Safe_iterator&
-+      operator=(_Safe_iterator&& __x)
-+      {
-+      _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
-+                            || __x._M_current == _Iterator(),
-+                            _M_message(__msg_copy_singular)
-+                            ._M_iterator(*this, "this")
-+                            ._M_iterator(__x, "other"));
-+      _M_current = __x._M_current;
-+      _M_attach(__x._M_sequence);
-+      __x._M_detach();
-+      __x._M_current = _Iterator();
-+      return *this;
-+      }
-+#endif
-+
-+      /**
-        *  @brief Iterator dereference.
-        *  @pre iterator is dereferenceable
-        */
-@@ -415,7 +454,9 @@
-       /// Is this iterator equal to the sequence's before_begin() iterator if
-       /// any?
-       bool _M_is_before_begin() const
--      { return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence()); }
-+      {
-+      return _BeforeBeginHelper<_Sequence>::_M_Is(base(), _M_get_sequence());
-+      }
-     };
-   template<typename _IteratorL, typename _IteratorR, typename _Sequence>
-Index: libstdc++-v3/include/std/condition_variable
-===================================================================
---- libstdc++-v3/include/std/condition_variable        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/include/std/condition_variable        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,6 +1,6 @@
- // <condition_variable> -*- C++ -*-
--// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
-+// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -171,6 +171,26 @@
-     condition_variable                        _M_cond;
-     mutex                             _M_mutex;
-+    // scoped unlock - unlocks in ctor, re-locks in dtor
-+    template<typename _Lock>
-+      struct _Unlock
-+      {
-+      explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
-+
-+      ~_Unlock() noexcept(false)
-+      {
-+        if (uncaught_exception())
-+          __try { _M_lock.lock(); } __catch(...) { }
-+        else
-+          _M_lock.lock();
-+      }
-+
-+      _Unlock(const _Unlock&) = delete;
-+      _Unlock& operator=(const _Unlock&) = delete;
-+
-+      _Lock& _M_lock;
-+      };
-+
-   public:
-     typedef condition_variable::native_handle_type    native_handle_type;
-@@ -198,21 +218,8 @@
-       void
-       wait(_Lock& __lock)
-       {
--      // scoped unlock - unlocks in ctor, re-locks in dtor
--      struct _Unlock {
--        explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
--        ~_Unlock() noexcept(false)
--        {
--          if (uncaught_exception())
--            __try { _M_lock.lock(); } __catch(...) { }
--          else
--            _M_lock.lock();
--        }
--        _Lock& _M_lock;
--      };
--
-       unique_lock<mutex> __my_lock(_M_mutex);
--      _Unlock __unlock(__lock);
-+      _Unlock<_Lock> __unlock(__lock);
-       // _M_mutex must be unlocked before re-locking __lock so move
-       // ownership of _M_mutex lock to an object with shorter lifetime.
-       unique_lock<mutex> __my_lock2(std::move(__my_lock));
-@@ -233,11 +240,12 @@
-       wait_until(_Lock& __lock,
-                const chrono::time_point<_Clock, _Duration>& __atime)
-       {
--        unique_lock<mutex> __my_lock(_M_mutex);
--        __lock.unlock();
--        cv_status __status = _M_cond.wait_until(__my_lock, __atime);
--        __lock.lock();
--        return __status;
-+      unique_lock<mutex> __my_lock(_M_mutex);
-+      _Unlock<_Lock> __unlock(__lock);
-+      // _M_mutex must be unlocked before re-locking __lock so move
-+      // ownership of _M_mutex lock to an object with shorter lifetime.
-+      unique_lock<mutex> __my_lock2(std::move(__my_lock));
-+      return _M_cond.wait_until(__my_lock2, __atime);
-       }
-     template<typename _Lock, typename _Clock,
-Index: libstdc++-v3/include/std/mutex
-===================================================================
---- libstdc++-v3/include/std/mutex     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/include/std/mutex     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -130,7 +130,7 @@
-   public:
-     // matches a gthr-win32.h recursive mutex
-     template<typename _Rm>
--      static typename enable_if<sizeof(&_Rm::sema), void>::type
-+      static typename enable_if<(bool)sizeof(&_Rm::sema), void>::type
-       _S_destroy(_Rm* __mx)
-       {
-         __gthread_mutex_t __tmp;
-@@ -139,7 +139,7 @@
-     // matches a recursive mutex with a member 'actual'
-     template<typename _Rm>
--      static typename enable_if<sizeof(&_Rm::actual), void>::type
-+      static typename enable_if<(bool)sizeof(&_Rm::actual), void>::type
-       _S_destroy(_Rm* __mx)
-       { __gthread_mutex_destroy(&__mx->actual); }
-Index: libstdc++-v3/include/ext/concurrence.h
-===================================================================
---- libstdc++-v3/include/ext/concurrence.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/include/ext/concurrence.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,6 +1,6 @@
- // Support for concurrent programing -*- C++ -*-
--// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
- // Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
-@@ -140,6 +140,18 @@
-   }
- #endif
-  
-+  template<typename _Tp>
-+    static inline void
-+    __copy_gthr_type(_Tp& __to, const _Tp& __from)
-+    {
-+#if defined __GXX_EXPERIMENTAL_CXX0X__ \
-+  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
-+      __builtin_memcpy(&__to, &__from, sizeof(__to));
-+#else
-+      __to = __from;
-+#endif
-+    }
-+
-   class __mutex 
-   {
-   private:
-@@ -156,7 +168,7 @@
-       {
- #if defined __GTHREAD_MUTEX_INIT
-         __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
--        _M_mutex = __tmp;
-+        __copy_gthr_type(_M_mutex, __tmp);
- #else
-         __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex); 
- #endif
-@@ -214,7 +226,7 @@
-       {
- #if defined __GTHREAD_RECURSIVE_MUTEX_INIT
-         __gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
--        _M_mutex = __tmp;
-+        __copy_gthr_type(_M_mutex, __tmp);
- #else
-         __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex); 
- #endif
-@@ -270,7 +282,7 @@
-     // matches a gthr-win32.h recursive mutex
-     template<typename _Rm>
--      static typename __enable_if<sizeof(&_Rm::sema), void>::__type
-+      static typename __enable_if<(bool)sizeof(&_Rm::sema), void>::__type
-       _S_destroy(_Rm* __mx)
-       {
-         __gthread_mutex_t __tmp;
-@@ -279,7 +291,7 @@
-     // matches a recursive mutex with a member 'actual'
-     template<typename _Rm>
--      static typename __enable_if<sizeof(&_Rm::actual), void>::__type
-+      static typename __enable_if<(bool)sizeof(&_Rm::actual), void>::__type
-       _S_destroy(_Rm* __mx)
-       { __gthread_mutex_destroy(&__mx->actual); }
-@@ -332,7 +344,7 @@
-       {
- #if defined __GTHREAD_COND_INIT
-         __gthread_cond_t __tmp = __GTHREAD_COND_INIT;
--        _M_cond = __tmp;
-+        __copy_gthr_type(_M_cond, __tmp);
- #else
-         __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
- #endif
-Index: libstdc++-v3/include/ext/rope
-===================================================================
---- libstdc++-v3/include/ext/rope      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/include/ext/rope      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,7 +1,7 @@
- // SGI's rope class -*- C++ -*-
--// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
--// Free Software Foundation, Inc.
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-+// 2012 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -445,6 +445,17 @@
-     identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
-     { return rope<_CharT, _Alloc>(); }
-+  static inline void
-+  __copy_gthr_mutex(__gthread_mutex_t& __to, const __gthread_mutex_t& __from)
-+  {
-+#if defined __GXX_EXPERIMENTAL_CXX0X__ \
-+  && defined _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
-+    __builtin_memcpy(&__to, &__from, sizeof(__to));
-+#else
-+    __to = __from;
-+#endif
-+  }
-+
-   // Class _Refcount_Base provides a type, _RC_t, a data member,
-   // _M_ref_count, and member functions _M_incr and _M_decr, which perform
-   // atomic preincrement/predecrement.  The constructor initializes
-@@ -464,7 +475,7 @@
-     {
- #ifdef __GTHREAD_MUTEX_INIT
-       __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
--      _M_ref_count_lock = __tmp;
-+      __copy_gthr_mutex(_M_ref_count_lock, __tmp);
- #elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
-       __GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
- #else
-@@ -605,7 +616,7 @@
-     {
-       // Do not copy a POSIX/gthr mutex once in use.  However, bits are bits.
-       __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
--      _M_c_string_lock = __tmp;
-+      __copy_gthr_mutex(_M_c_string_lock, __tmp);
-     }
- #else
-     { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
-Index: libstdc++-v3/include/bits/stl_algo.h
-===================================================================
---- libstdc++-v3/include/bits/stl_algo.h       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/include/bits/stl_algo.h       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1811,7 +1811,8 @@
-         for (; __first != __last; ++__first)
-           if (__pred(*__first))
-             {
--              *__result1 = _GLIBCXX_MOVE(*__first);
-+              if (__result1 != __first)
-+                *__result1 = _GLIBCXX_MOVE(*__first);
-               ++__result1;
-             }
-           else
-Index: libstdc++-v3/ChangeLog
-===================================================================
---- libstdc++-v3/ChangeLog     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/ChangeLog     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,65 @@
-+2012-07-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
-+
-+      PR libstdc++/53270
-+      * acinclude.m4 (GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN): Define.
-+      * configure.ac (GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN): Use it.
-+      * config.h.in: Regenerate.
-+      * configure: Likewise.
-+      * include/ext/concurrence.h (__copy_gthr_type): Define.
-+      (__mutex::__mutex, __recursive_mutex::__recursive_mutex,
-+      __cond::__cond): Use it.
-+      * include/ext/rope (__copy_gthr_mutex): Define.
-+      (_Refcount_Base::_Refcount_Base, _Rope_RopeRep::_Rope_RopeRep): Use
-+      it.
-+      * src/condition_variable.cc (condition_variable::condition_variable):
-+      Use memcpy instead of assignment.
-+
-+2012-07-07  Jonathan Wakely  <jwakely.gcc@gmail.com>
-+
-+      PR libstdc++/53578
-+      * include/ext/concurrence.h (__recursive_mutex::_S_destroy): Fix
-+      narrowing conversion.
-+      * include/std/mutex (__recursive_mutex_base::_S_destroy): Likewise.
-+
-+2012-07-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
-+
-+      PR libstdc++/53830
-+      * include/std/condition_variable (condition_variable_any::wait):
-+      Move _Unlock type to class scope.
-+      (condition_variable_any::wait_until): Reuse it.
-+      * testsuite/30_threads/condition_variable_any/53830.cc: New.
-+
-+2012-06-20  Jörg Sonnenberger <joerg@britannica.bec.de>
-+          Jonathan Wakely  <jwakely.gcc@gmail.com>
-+
-+      PR libstdc++/53678
-+      * config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
-+      * testsuite/22_locale/ctype_base/53678.cc: New.
-+
-+2012-04-12   Jeffrey Yasskin  <jyasskin@google.com>
-+
-+      PR libstdc++/52822
-+      * include/bits/stl_algo.h (__stable_partition_adaptive): Avoid
-+      move-assigning an object to itself by explicitly testing for
-+      identity.
-+      * testsuite/25_algorithms/stable_partition/pr52822.cc: Test
-+      vectors, which have a destructive self-move-assignment.
-+      * testsuite/25_algorithms/stable_partition/moveable.cc (test02):
-+      Test with rvalstruct, which explicitly checks
-+      self-move-assignment.
-+
-+2012-04-09  Terry Guo  <terry.guo@arm.com>
-+
-+      * testsuite/Makefile.am (TEST_GCC_EXEC_PREFIX): New.
-+      * testsuite/Makefile.in: Regenerated.
-+
-+2012-03-08  Jonathan Wakely  <jwakely.gcc@gmail.com>
-+
-+      PR libstdc++/52433
-+      * include/debug/safe_iterator.h (_Safe_iterator): Add move
-+      constructor and move assignment operator.
-+      * testsuite/23_containers/vector/debug/52433.cc: New.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
-===================================================================
---- libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc   (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,43 @@
-+// { dg-options "-std=gnu++0x" }
-+
-+// Copyright (C) 2012 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 3, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING3.  If not see
-+// <http://www.gnu.org/licenses/>.
-+
-+// 25.2.12 [lib.alg.partitions] Partitions.
-+
-+#include <algorithm>
-+#include <vector>
-+#include <testsuite_hooks.h>
-+
-+bool true_vector_pred(const std::vector<int>&) { return true; }
-+
-+void
-+test01()
-+{
-+  std::vector<std::vector<int> > v(1);
-+  v[0].push_back(7);
-+  VERIFY( v[0].size() == 1 );
-+  std::stable_partition(v.begin(), v.end(), &true_vector_pred);
-+  VERIFY( v[0].size() == 1 );
-+}
-+
-+int
-+main()
-+{
-+  test01();
-+  return 0;
-+}
-Index: libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
-===================================================================
---- libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,6 +1,6 @@
- // { dg-options "-std=gnu++0x" }
--// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
-+// Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -39,6 +39,11 @@
- const int B[] = {2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 17};
- const int N = sizeof(A) / sizeof(int);
-+// Check that starting with a true predicate works too. (PR52822)
-+const int A2[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
-+const int B2[] = {2, 4, 6, 8, 10, 12, 14, 16, 3, 5, 7, 9, 11, 13, 15, 17};
-+const int N2 = sizeof(A2) / sizeof(int);
-+
- struct Pred
- {
-   bool
-@@ -46,7 +51,7 @@
-   { return (x.val % 2) == 0; }
- };
--// 25.2.12 stable_partition()
-+// 25.2.12 stable_partition(), starting with a false predicate.
- void
- test01()
- {
-@@ -60,9 +65,24 @@
-   VERIFY( std::equal(s1, s1 + N, B) );
- }
-+// 25.2.12 stable_partition(), starting with a true predicate.
-+void
-+test02()
-+{
-+  bool test __attribute__((unused)) = true;
-+
-+  rvalstruct s1[N2];
-+  std::copy(A2, A2 + N2, s1);
-+  Container con(s1, s1 + N2);
-+
-+  std::stable_partition(con.begin(), con.end(), Pred());
-+  VERIFY( std::equal(s1, s1 + N2, B2) );
-+}
-+
- int
- main()
- {
-   test01();
-+  test02();
-   return 0;
- }
-Index: libstdc++-v3/testsuite/Makefile.in
-===================================================================
---- libstdc++-v3/testsuite/Makefile.in (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/testsuite/Makefile.in (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -502,6 +502,7 @@
-       @echo 'set target_triplet $(target_triplet)' >>site.tmp
-       @echo 'set libiconv "$(LIBICONV)"' >>site.tmp
-       @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
-+      @echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
-       @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
-       @test ! -f site.exp || \
-         sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
-Index: libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
-===================================================================
---- libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc  (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,68 @@
-+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
-+// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
-+// { dg-require-cstdint "" }
-+// { dg-require-gthreads "" }
-+// { dg-require-sched-yield "" }
-+// { dg-require-nanosleep "" }
-+
-+// Copyright (C) 2012 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 3, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING3.  If not see
-+// <http://www.gnu.org/licenses/>.
-+
-+// PR libstdc++/53830
-+// Test for deadlock in condition_variable_any::wait_for
-+
-+#include <thread>
-+#include <mutex>
-+#include <condition_variable>
-+#include <chrono>
-+#include <atomic>
-+
-+std::mutex mutex;
-+std::condition_variable_any cv;
-+
-+std::atomic<int> barrier(0);
-+
-+// waits for data from another thread
-+void wait_for_data()
-+{
-+  std::unique_lock<std::mutex> lock(mutex);
-+  barrier = 1;
-+  cv.wait_for(lock, std::chrono::milliseconds(100), []{ return false; });
-+  // read data
-+}
-+
-+// passes data to waiting thread
-+void provide_data()
-+{
-+  while (barrier == 0)
-+    std::this_thread::yield();
-+  std::unique_lock<std::mutex> lock(mutex);
-+  // pass data
-+  std::this_thread::sleep_for(std::chrono::seconds(1));
-+  cv.notify_one();
-+}
-+
-+int main()
-+{
-+  std::thread thread1(wait_for_data);
-+  provide_data();
-+  thread1.join();
-+  return 0;
-+}
-+
-Index: libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
-===================================================================
---- libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc       (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,28 @@
-+// Copyright (C) 2012 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 3, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING3.  If not see
-+// <http://www.gnu.org/licenses/>.
-+
-+// { dg-do compile }
-+
-+// 22.2.1 The ctype category
-+
-+#include <locale>
-+
-+// libstdc++/53678
-+void test01()
-+{
-+  bool NetBSD __attribute__((unused)) = true;
-+}
-Index: libstdc++-v3/testsuite/Makefile.am
-===================================================================
---- libstdc++-v3/testsuite/Makefile.am (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/testsuite/Makefile.am (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -59,6 +59,7 @@
-       @echo 'set target_triplet $(target_triplet)' >>site.tmp
-       @echo 'set libiconv "$(LIBICONV)"' >>site.tmp
-       @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
-+      @echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
-       @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
-       @test ! -f site.exp || \
-         sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
-Index: libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc (.../tags/gcc_4_6_3_release)    (revision 0)
-+++ libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -0,0 +1,43 @@
-+// Copyright (C) 2012 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 3, or (at your option)
-+// any later version.
-+//
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING3.  If not see
-+// <http://www.gnu.org/licenses/>.
-+//
-+// { dg-require-debug-mode "" }
-+// { dg-options "-std=gnu++0x" }
-+// { dg-do compile }
-+
-+// PR libstdc++/52433
-+
-+#include <vector>
-+
-+struct X
-+{
-+    std::vector<int>::iterator i;
-+
-+    X() = default;
-+    X(const X&) = default;
-+    X(X&&) = default;
-+    X& operator=(const X&) = default;
-+    X& operator=(X&&) = default;
-+};
-+
-+X test01()
-+{
-+    X x;
-+    x = X();
-+    return x;
-+}
-+
-Index: libstdc++-v3/config.h.in
-===================================================================
---- libstdc++-v3/config.h.in   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/config.h.in   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -692,6 +692,9 @@
- /* Define if a fully dynamic basic_string is wanted. */
- #undef _GLIBCXX_FULLY_DYNAMIC_STRING
-+/* Define if gthreads types cannot be copy-assigned in C++11. */
-+#undef _GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11
-+
- /* Define if gthreads library is available. */
- #undef _GLIBCXX_HAS_GTHREADS
-Index: libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
-===================================================================
---- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h     (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h     (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,6 +1,6 @@
- // Locale support -*- C++ -*-
--// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
-+// Copyright (C) 2000, 2009, 2011, 2012 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
-@@ -31,8 +31,6 @@
- //   anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
- // See www.netbsd.org for details of access.
-   
--#include <sys/param.h>
--
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
-@@ -47,7 +45,7 @@
-     // on the mask type. Because of this, we don't use an enum.
-     typedef unsigned char             mask;
--#if __NetBSD_Version__ < 599004100
-+#ifndef _CTYPE_U
-     static const mask upper           = _U;
-     static const mask lower   = _L;
-     static const mask alpha   = _U | _L;
-Index: libstdc++-v3/acinclude.m4
-===================================================================
---- libstdc++-v3/acinclude.m4  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libstdc++-v3/acinclude.m4  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -3213,6 +3213,58 @@
-   ])
- ])
-+dnl
-+dnl Check whether gthreads types can be copy-assigned in C++11 mode.
-+dnl
-+AC_DEFUN([GLIBCXX_GTHREADS_CXX11_COPY_ASSIGN], [
-+
-+  AC_LANG_SAVE
-+  AC_LANG_CPLUSPLUS
-+  ac_save_CXXFLAGS="$CXXFLAGS"
-+  CXXFLAGS="$CXXFLAGS -std=c++0x -I${toplevel_srcdir}/gcc"
-+
-+  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
-+  case $target_thread_file in
-+    posix)
-+      CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
-+  esac
-+
-+  AC_MSG_CHECKING([whether gthreads types are copy-assignable in C++11 mode])
-+
-+  AC_TRY_COMPILE([#include "gthr.h"],
-+    [
-+      #ifdef __GTHREAD_MUTEX_INIT
-+      __gthread_mutex_t m1;
-+      __gthread_mutex_t m2 = __GTHREAD_MUTEX_INIT;
-+      m1 = m2;
-+      #endif
-+      #ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
-+      __gthread_recursive_mutex_t r1;
-+      __gthread_recursive_mutex_t r2 = __GTHREAD_RECURSIVE_MUTEX_INIT;
-+      r1 = r2;
-+      #endif
-+      #ifdef __GTHREAD_HAS_COND
-+      #ifdef __GTHREAD_COND_INIT
-+      __gthread_cond_t c1;
-+      __gthread_cond_t c2 = __GTHREAD_COND_INIT;
-+      c1 = c2;
-+      #endif
-+      #endif
-+    ], [ac_gthread_cxx11_copy_assign=1], [ac_gthread_cxx11_copy_assign=0])
-+
-+  if test $ac_gthread_cxx11_copy_assign = 1 ; then res_gthr_copy_assign=yes ;
-+  else res_gthr_copy_assign=no ; fi
-+  AC_MSG_RESULT([$res_gthr_copy_assign])
-+
-+  if test x"$res_gthr_copy_assign" = x"no"; then
-+    AC_DEFINE(_GLIBCXX_GTHREADS_NO_COPY_ASSIGN_IN_CXX11, 1,
-+            [Define if gthreads types cannot be copy-assigned in C++11.])
-+  fi
-+
-+  CXXFLAGS="$ac_save_CXXFLAGS"
-+  AC_LANG_RESTORE
-+])
-+
- # Macros from the top-level gcc directory.
- m4_include([../config/gc++filt.m4])
- m4_include([../config/tls.m4])
-Index: libgfortran/intrinsics/eoshift2.c
-===================================================================
---- libgfortran/intrinsics/eoshift2.c  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libgfortran/intrinsics/eoshift2.c  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -77,6 +77,12 @@
-       ret->offset = 0;
-       ret->dtype = array->dtype;
-+
-+      if (arraysize > 0)
-+      ret->data = internal_malloc_size (size * arraysize);
-+      else
-+      ret->data = internal_malloc_size (1);
-+
-       for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++)
-         {
-         index_type ub, str;
-@@ -90,12 +96,6 @@
-             * GFC_DESCRIPTOR_STRIDE(ret,i-1);
-         GFC_DIMENSION_SET(ret->dim[i], 0, ub, str);
--
--        if (arraysize > 0)
--          ret->data = internal_malloc_size (size * arraysize);
--        else
--          ret->data = internal_malloc_size (1);
--
-         }
-     }
-   else if (unlikely (compile_options.bounds_check))
-Index: libgfortran/ChangeLog
-===================================================================
---- libgfortran/ChangeLog      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libgfortran/ChangeLog      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,9 @@
-+2012-05-12  Tobias Burnus  <burnus@net-b.de>
-+
-+      PR fortran/53310
-+      * intrinsics/eoshift2.c (eoshift2): Do not leak
-+      memory by allocating it in the loop.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: boehm-gc/configure.ac
-===================================================================
---- boehm-gc/configure.ac      (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ boehm-gc/configure.ac      (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -392,6 +392,7 @@
- oldLIBS="$LIBS"
- LIBS="$LIBS $THREADLIBS"
- AC_CHECK_FUNCS([pthread_getattr_np])
-+AC_CHECK_FUNCS([pthread_get_stackaddr_np])
- LIBS="$oldLIBS"
- # Configuration of machine-dependent code
-Index: boehm-gc/include/gc_config.h.in
-===================================================================
---- boehm-gc/include/gc_config.h.in    (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ boehm-gc/include/gc_config.h.in    (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -87,6 +87,9 @@
- /* Define to 1 if you have the `pthread_getattr_np' function. */
- #undef HAVE_PTHREAD_GETATTR_NP
-+/* Define to 1 if you have the `pthread_get_stackaddr_np_np' function. */
-+#undef HAVE_PTHREAD_GET_STACKADDR_NP
-+
- /* Define to 1 if you have the <stdint.h> header file. */
- #undef HAVE_STDINT_H
-Index: boehm-gc/include/private/gcconfig.h
-===================================================================
---- boehm-gc/include/private/gcconfig.h        (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ boehm-gc/include/private/gcconfig.h        (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1331,7 +1331,11 @@
-        These aren't used when dyld support is enabled (it is by default) */
- #     define DATASTART ((ptr_t) get_etext())
- #     define DATAEND  ((ptr_t) get_end())
--#     define STACKBOTTOM ((ptr_t) 0xc0000000)
-+#     ifdef HAVE_PTHREAD_GET_STACKADDR_NP
-+#       define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
-+#     else
-+#       define STACKBOTTOM ((ptr_t) 0xc0000000)
-+#     endif
- #     define USE_MMAP
- #     define USE_MMAP_ANON
- #     define USE_ASM_PUSH_REGS
-@@ -2011,7 +2015,11 @@
-        These aren't used when dyld support is enabled (it is by default) */
- #     define DATASTART ((ptr_t) get_etext())
- #     define DATAEND  ((ptr_t) get_end())
--#     define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
-+#     ifdef HAVE_PTHREAD_GET_STACKADDR_NP
-+#       define STACKBOTTOM (ptr_t)pthread_get_stackaddr_np(pthread_self())
-+#     else
-+#       define STACKBOTTOM ((ptr_t) 0x7fff5fc00000)
-+#     endif
- #     define USE_MMAP
- #     define USE_MMAP_ANON
- #     ifdef GC_DARWIN_THREADS
-Index: boehm-gc/ChangeLog
-===================================================================
---- boehm-gc/ChangeLog (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ boehm-gc/ChangeLog (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,17 @@
-+2012-03-02  Jack Howarth  <howarth@bromo.med.uc.edu>
-+
-+      Backport from mainline
-+      2012-02-23  Patrick Marlier  <patrick.marlier@gmail.com>
-+                  Jack Howarth  <howarth@bromo.med.uc.edu>
-+
-+      PR boehm-gc/52179
-+      * include/gc_config.h.in: Undefine HAVE_PTHREAD_GET_STACKADDR_NP.
-+      * include/private/gcconfig.h (DARWIN): Define STACKBOTTOM with
-+      pthread_get_stackaddr_np when available.
-+      * configure.ac (THREADS): Check availability of
-+      pthread_get_stackaddr_np.
-+      * configure: Regenerate.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: boehm-gc/configure
-===================================================================
---- boehm-gc/configure (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ boehm-gc/configure (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -15246,6 +15246,17 @@
- fi
- done
-+for ac_func in pthread_get_stackaddr_np
-+do :
-+  ac_fn_c_check_func "$LINENO" "pthread_get_stackaddr_np" "ac_cv_func_pthread_get_stackaddr_np"
-+if test "x$ac_cv_func_pthread_get_stackaddr_np" = x""yes; then :
-+  cat >>confdefs.h <<_ACEOF
-+#define HAVE_PTHREAD_GET_STACKADDR_NP 1
-+_ACEOF
-+
-+fi
-+done
-+
- LIBS="$oldLIBS"
- # Configuration of machine-dependent code
-Index: libffi/src/powerpc/aix.S
-===================================================================
---- libffi/src/powerpc/aix.S   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libffi/src/powerpc/aix.S   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,5 +1,5 @@
- /* -----------------------------------------------------------------------
--   aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
-+   aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
-    based on darwin.S by John Hornkvist
-    PowerPC Assembly glue.
-@@ -79,6 +79,8 @@
-       .set f20,20
-       .set f21,21
-+      .extern .ffi_prep_args
-+
- #define LIBFFI_ASM
- #include <fficonfig.h>
- #include <ffi.h>
-@@ -125,6 +127,7 @@
-       /* Call ffi_prep_args.  */
-       mr      r4, r1
-       bl      .ffi_prep_args
-+      nop
-       /* Now do the call.  */
-       ld      r0, 0(r29)
-@@ -226,6 +229,7 @@
-       /* Call ffi_prep_args.  */
-       mr      r4, r1
-       bl      .ffi_prep_args
-+      nop
-       /* Now do the call.  */
-       lwz     r0, 0(r29)
-Index: libffi/src/powerpc/aix_closure.S
-===================================================================
---- libffi/src/powerpc/aix_closure.S   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libffi/src/powerpc/aix_closure.S   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -79,6 +79,8 @@
-       .set f20,20
-       .set f21,21
-+      .extern .ffi_closure_helper_DARWIN
-+
- #define LIBFFI_ASM
- #define JUMPTARGET(name) name
- #define L(x) x
-@@ -165,6 +167,7 @@
-       /* look up the proper starting point in table  */
-       /* by using return type as offset */
-+      lhz     r3, 10(r3)      /* load type from return type */
-       ld      r4, LC..60(2)   /* get address of jump table */
-       sldi    r3, r3, 4       /* now multiply return type by 16 */
-       ld      r0, 240+16(r1)  /* load return address */
-@@ -337,8 +340,9 @@
-       /* look up the proper starting point in table  */
-       /* by using return type as offset */
-+      lhz     r3, 6(r3)       /* load type from return type */
-       lwz     r4, LC..60(2)   /* get address of jump table */
--      slwi    r3, r3, 4       /* now multiply return type by 4 */
-+      slwi    r3, r3, 4       /* now multiply return type by 16 */
-       lwz     r0, 176+8(r1)   /* load return address */
-       add     r3, r3, r4      /* add contents of table to table address */
-       mtctr   r3
-Index: libffi/ChangeLog
-===================================================================
---- libffi/ChangeLog   (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libffi/ChangeLog   (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,17 @@
-+2012-03-22  David Edelsohn  <dje.gcc@gmail.com>
-+
-+      Backport from mainline:
-+      2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
-+
-+      * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
-+      change to return value of ffi_closure_helper_DARWIN and load type
-+      from return type.
-+
-+      From Tom Honermann <tom.honermann@oracle.com>:
-+      * src/powerpc/aix.S: Declare .ffi_prep_args.  Insert nops after
-+      branch instructions.
-+      * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: libjava/configure.ac
-===================================================================
---- libjava/configure.ac       (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libjava/configure.ac       (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -886,14 +886,9 @@
-         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
-       fi
-     ;;
--    *-*-darwin9*)
-+    *-*-darwin[[912]]*)
-       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
-     ;;
--    *-*-darwin[[12]]*)
--      # Something is incompatible with pie, would be nice to fix it and
--      # remove -no_pie.  PR49461
--      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
--    ;;
-     *)
-       SYSTEMSPEC=
-     ;;
-Index: libjava/ChangeLog
-===================================================================
---- libjava/ChangeLog  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libjava/ChangeLog  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -1,3 +1,13 @@
-+2012-03-02  Jack Howarth  <howarth@bromo.med.uc.edu>
-+
-+      Backport from mainline
-+      2012-02-23  Patrick Marlier  <patrick.marlier@gmail.com>
-+                  Jack Howarth  <howarth@bromo.med.uc.edu>
-+
-+      PR target/49461
-+      * configure.ac (SYSTEMSPEC): No longer pass -no_pie for darwin11.
-+      * configure: Regenerate.
-+
- 2012-03-01  Release Manager
-       * GCC 4.6.3 released.
-Index: libjava/configure
-===================================================================
---- libjava/configure  (.../tags/gcc_4_6_3_release)    (revision 190226)
-+++ libjava/configure  (.../branches/gcc-4_6-branch)   (revision 190226)
-@@ -19775,14 +19775,9 @@
-         SYSTEMSPEC="-lunicows $SYSTEMSPEC"
-       fi
-     ;;
--    *-*-darwin9*)
-+    *-*-darwin[912]*)
-       SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
-     ;;
--    *-*-darwin[12]*)
--      # Something is incompatible with pie, would be nice to fix it and
--      # remove -no_pie.  PR49461
--      SYSTEMSPEC="-no_pie %{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
--    ;;
-     *)
-       SYSTEMSPEC=
-     ;;
This page took 1.171241 seconds and 4 git commands to generate.