[packages/crossmingw32-gcc] - moving branch.diff to distfiles

qboosh qboosh at pld-linux.org
Mon Apr 1 11:18:07 CEST 2013


commit d0927e15a637bbf7098b202a66bbce8f6ab19b80
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Mon Apr 1 08:56:24 2013 +0200

    - moving branch.diff to distfiles

 gcc-branch.diff | 6891 -------------------------------------------------------
 1 file changed, 6891 deletions(-)
---
diff --git a/gcc-branch.diff b/gcc-branch.diff
deleted file mode 100644
index 86d37ee..0000000
--- a/gcc-branch.diff
+++ /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
-+ at 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
-- at option{-ffinite-math-only}.
-+ at 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
-+ at 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
-- at option{-mno-lsc} option is passed.  This is the default for
-+ at 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 at 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 at gcc.gnu.org>
-+
-+	Backported from trunk:
-+	2012-07-13  Richard Sandiford  <rdsandiford at googlemail.com>
-+		    Steven Bosscher  <steven at gcc.gnu.org>
-+		    Bernd Schmidt  <bernds at 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 at redhat.com>
-+
-+	* config/mn10300/mn10300.c (mn10300_encode_section_info): Call
-+	default_encode_section_info.
-+
-+2012-07-04  Richard Guenther  <rguenther at 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 at 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 at 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 at suse.de>
-+
-+	* gcov-iov.c: Include bconfig.h and system.h.
-+
-+2012-06-22  Richard Guenther  <rguenther at suse.de>
-+
-+	PR gcov-profile/53744
-+	* gcov-iov.c (main): Treat "" and "prerelease" the same.
-+
-+2012-06-19  Joey Ye  <joey.ye at arm.com>
-+
-+	Backported from mainline
-+	2011-10-14  David Alan Gilbert  <david.gilbert at linaro.org>
-+
-+	* config/arm/arm.h (TARGET_HAVE_DMB_MCR): MCR Not available in Thumb1.
-+
-+2012-06-18  Joey Ye  <joey.ye at arm.com>
-+
-+	Backported from mainline
-+	2011-10-14  David Alan Gilbert  <david.gilbert at linaro.org>
-+
-+	PR target/48126
-+	* config/arm/arm.c (arm_output_sync_loop): Move label before barrier.
-+
-+2012-06-17  Uros Bizjak  <ubizjak at gmail.com>
-+
-+	Backport from mainline:
-+	2012-06-17  Uros Bizjak  <ubizjak at gmail.com>
-+
-+	* config/i386/sse.md (vcvtph2ps): Fix vec_select selector.
-+
-+2012-06-16  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
-+
-+	Backport from mainline:
-+	2012-06-03  John David Anglin  <dave.anglin at 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 at 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 at vnet.ibm.com>
-+
-+	Backport from mainline
-+	2011-08-29  Jakub Jelinek  <jakub at redhat.com>
-+
-+	* gthr-posix.h (__gthread_active_p): Do not use preprocessor
-+	conditionals and comments inside macro arguments.
-+
-+2012-06-04  Edmar Wienskoski  <edmar at 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 at 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 at 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 at 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 at linux.vnet.ibm.com>
-+
-+	Backport from mainline
-+	2012-05-18  Bill Schmidt  <wschmidt at 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 at suse.de>
-+
-+	Backport from mainline
-+	2011-11-10  Richard Guenther  <rguenther at 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 at suse.de>
-+
-+	Backport from mainline
-+	2012-02-28  Richard Guenther  <rguenther at 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 at suse.de>
-+
-+	Backport from mainline
-+	2012-04-12  Richard Guenther  <rguenther at suse.de>
-+
-+	PR c/52862
-+	* convert.c (convert_to_pointer): Remove special-casing of zero.
-+
-+2012-05-21  Joseph Myers  <joseph at 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 at intel.com>
-+
-+	Backport from mainline
-+	2012-05-21  H.J. Lu  <hongjiu.lu at 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 at intel.com>
-+
-+	Backport from mainline
-+	2012-05-20  H.J. Lu  <hongjiu.lu at intel.com>
-+
-+	* config/i386/driver-i386.c (host_detect_local_cpu): Support
-+	RDRND, F16C and FSGSBASE.
-+
-+2012-05-16  Eric Botcazou  <ebotcazou at adacore.com>
-+
-+	* configure: Regenerate.
-+
-+2012-05-14  Uros Bizjak  <ubizjak at 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 at 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 at gmail.com>
-+
-+	Backport from mainline
-+	2012-05-12  Uros Bizjak  <ubizjak at gmail.com>
-+
-+	* config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
-+	ORDERED and UNORDERED conditions.
-+
-+2012-05-06  John David Anglin  <dave.anglin at 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 at gmail.com>
-+
-+	Backport from mainline
-+	2012-05-04  Uros Bizjak  <ubizjak at 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 at linux.vnet.ibm.com>
-+
-+	Backport from the mainline
-+	2012-05-03  Michael Meissner  <meissner at 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 at gmail.com>
-+
-+	Backport from mainline
-+	2012-04-27  Paolo Bonzini  <bonzini at gnu.org>
-+
-+	PR target/53138
-+	* config/i386/i386.md (x86_mov<mode>cc_0_m1_neg): Add clobber.
-+
-+2012-04-24  Jakub Jelinek  <jakub at 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 at codesourcery.com>
-+
-+	struct siginfo vs. siginfo_t
-+
-+	Backport from trunk (but apply to gcc/):
-+
-+	2012-04-20  Thomas Schwinge  <thomas at 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 at linux.vnet.ibm.com>
-+
-+	Backport from mainline
-+	2012-04-12  Michael Meissner  <meissner at 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 at 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 at 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 at 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 at gmail.com>
-+
-+	* doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc".
-+
-+2012-03-29  Uros Bizjak  <ubizjak at gmail.com>
-+
-+	* config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results
-+	crossing 128bit lane boundary.
-+
-+2012-03-29  Uros Bizjak  <ubizjak at gmail.com>
-+
-+	Backported from mainline
-+	2012-03-27  Uros Bizjak  <ubizjak at 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 at arm.com>
-+
-+	Backported from mainline
-+	2011-12-20  Bernd Schmidt  <bernds at 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 at arm.com>
-+
-+	* toplev.c (process_options): Fix typo.
-+
-+2012-03-28  Martin Jambor  <mjambor at suse.cz>
-+
-+	Backported from mainline
-+	2012-03-27  Martin Jambor  <mjambor at 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 at 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 at 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 at suse.cz>
-+
-+	Backport from mainline
-+	PR regression/52696
-+	* predict.c (predict_paths_for_bb): Fix typo.
-+
-+2012-03-24  Jan Hubicka  <jh at 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 at 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 at 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 at linaro.org>
-+
-+	Backport from mainline
-+	2011-05-05  Michael Hope  <michael.hope at 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 at codesourcery.com>
-+
-+	Backport from mainline
-+	2012-03-10  Chung-Lin Tang  <cltang at 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 at nrc-cnrc.gc.ca>
-+
-+	Backport from mainline
-+	2011-09-03  John David Anglin  <dave.anglin at 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 at 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 at 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 at nrc-cnrc.gc.ca>
-+
-+	Backport from mainline
-+	2012-03-01  John David Anglin  <dave.anglin at 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 at adacore.com>
-+
-+	PR target/52425
-+	Backport from mainline
-+	2011-05-22  Eric Botcazou  <ebotcazou at adacore.com>
-+
-+	* config/sparc/sparc.c (sparc_delegitimize_address): Handle
-+	UNSPEC_MOVE_PIC pattern.
-+
-+2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
-+
-+	Backport from mainline
-+	2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
-+
-+	* config/rs6000/vsx.md (vsx_set_<mode>): Reorder operands.
-+
-+2012-03-02  Bill Schmidt <wschmidt at linux.vnet.ibm.com>
-+	    Ira Rosen <irar at 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 at 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 at 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 at gmail.com>
-+
-+	* gcc.dg/20020201-1.c: Remove declarations for exit, abort,
-+	rand, srand. Include <stdlib.h>.
-+
-+2012-07-16  Steven Bosscher  <steven at gcc.gnu.org>
-+
-+	Backport from trunk:
-+	2012-07-13  Hans-Peter Nilsson  <hp at axis.com>
-+
-+	PR rtl-optimization/53908
-+	* gcc.dg/torture/pr53908.c: New test.
-+
-+2012-07-14  Mikael Morin  <mikael.morin at gcc.gnu.org>
-+
-+	Backport from trunk:
-+	2012-01-09  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/51758
-+	* gfortran.dg/optional_absent_2.f90: New.
-+
-+2012-07-03  Michael Hope  <michael.hope at linaro.org>
-+
-+	PR c++/53814
-+	* g++.dg/cpp0x/nullptr28.C: Change selector for explicit
-+	options.
-+
-+2012-06-28  Richard Guenther  <rguenther at suse.de>
-+
-+	PR middle-end/53790
-+	* gcc.dg/torture/pr53790.c: New testcase.
-+
-+2012-06-25  Jason Merrill  <jason at redhat.com>
-+
-+	PR c++/52988
-+	* g++.dg/cpp0x/nullptr28.C: New.
-+
-+2012-06-19  Kaz Kojima  <kkojima at 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 at net-b.de>
-+
-+	PR fortran/53597
-+	* gfortran.dg/save_4.f90: New.
-+
-+2012-06-13  Christian Bruel  <christian.bruel at st.com>
-+
-+	PR target/53621
-+	* gcc.dg/stack-usage-1.c: Force -fomit-frame-pointer on SH.
-+
-+2012-06-05  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/50619
-+	* gfortran.dg/init_flag_10.f90: New.
-+
-+2012-06-04  Edmar Wienskoski  <edmar at 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 at linaro.org>
-+
-+	PR c++/52796
-+	* g++.dg/cpp0x/variadic-value1.C: Change selector for explicit
-+	options.
-+
-+2012-05-23  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/53389
-+	* gfortran.dg/realloc_on_assign_15.f90: New.
-+
-+2012-05-22  Richard Guenther  <rguenther at suse.de>
-+
-+	Backport from mainline
-+	2011-11-10  Richard Guenther  <rguenther at 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 at suse.de>
-+
-+	Backport from mainline
-+	2012-02-28  Richard Guenther  <rguenther at suse.de>
-+
-+	PR target/52407
-+	* gcc.dg/torture/pr52407.c: New testcase.
-+
-+2012-05-22  Richard Guenther  <rguenther at suse.de>
-+
-+	Backport from mainline
-+	2012-04-12  Richard Guenther  <rguenther at suse.de>
-+
-+	PR c/52862
-+	* gcc.dg/pr52862.c: New testcase.
-+
-+2012-05-21  Joseph Myers  <joseph at 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 at intel.com>
-+
-+	Backport from mainline
-+	2012-05-21  Uros Bizjak  <ubizjak at gmail.com>
-+		    H.J. Lu  <hongjiu.lu at intel.com>
-+
-+	PR target/53416
-+	* gcc.target/i386/pr53416.c: New file.
-+
-+2012-05-14  Uros Bizjak  <ubizjak at 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 at linux.vnet.ibm.com>
-+
-+	Backport from mainline
-+	2012-05-03  Michael Meissner  <meissner at linux.vnet.ibm.com>
-+
-+	PR target/53199
-+	* gcc.target/powwerpc/pr53199.c: New file.
-+
-+2012-05-02  Tobias Burnus  <burnus at net-b.de>
-+
-+	Backport from mainline
-+	2012-04-16  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/52864
-+	* gfortran.dg/pointer_intent_6.f90: New.
-+
-+2012-04-30  Uros Bizjak  <ubizjak at gmail.com>
-+
-+	Backport from mainline
-+	2012-04-27  Paolo Bonzini  <bonzini at gnu.org>
-+
-+	PR target/53138
-+	* gcc.c-torture/execute/20120427-1.c: New testcase.
-+
-+2012-04-24  Jakub Jelinek  <jakub at redhat.com>
-+
-+	PR middle-end/53084
-+	* gcc.c-torture/execute/pr53084.c: New test.
-+
-+2012-04-13  Michael Meissner  <meissner at linux.vnet.ibm.com>
-+
-+	Backport from mainline
-+	2012-04-12  Michael Meissner  <meissner at linux.vnet.ibm.com>
-+
-+	PR target/52775
-+	* gcc.target/powerpc/pr52775.c: New file.
-+
-+2012-04-03  Jason Merrill  <jason at redhat.com>
-+
-+	PR c++/52796
-+	* g++.dg/cpp0x/variadic-value1.C: New.
-+
-+2012-03-28  Joey Ye  <joey.ye at arm.com>
-+
-+	Backported from mainline
-+	2011-12-20  Bernd Schmidt  <bernds at 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 at arm.com>
-+
-+	PR middle-end/51200
-+	* gcc.dg/volatile-bitfields-2.c: New test.
-+
-+2012-03-28  Martin Jambor  <mjambor at suse.cz>
-+
-+	Backported from mainline
-+	2012-03-27  Martin Jambor  <mjambor at suse.cz>
-+
-+	PR middle-end/52693
-+	* gcc.dg/torture/pr52693.c: New test.
-+
-+2012-03-28  Jakub Jelinek  <jakub at redhat.com>
-+
-+	PR target/52736
-+	* gcc.target/i386/pr52736.c: New test.
-+
-+2012-03-24  Jan Hubicka  <jh at suse.cz>
-+
-+	PR middle-end/51737
-+	* g++.dg/torture/pr51737.C: New testcase
-+
-+2012-03-24  Steven Bosscher  <steven at gcc.gnu.org>
-+
-+	PR middle-end/52640
-+	* gcc.c-torture/compile/limits-externdecl.c: New test.
-+
-+2012-03-16  Jan Hubicka  <jh at suse.cz>
-+
-+	PR middle-end/48600
-+	* g++.dg/torture/pr48600.C: New testcase.
-+
-+2012-03-10  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/52469
-+	* gfortran.dg/proc_ptr_34.f90: New.
-+
-+2012-03-06  Tobias Burnus  <burnus at net-b.de>
-+
-+	Backport from mainline
-+	2012-03-02  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/52452
-+	* gfortran.dg/intrinsic_8.f90: New.
-+
-+2012-03-02  Peter Bergner  <bergner at vnet.ibm.com>
-+
-+	Backport from mainline
-+	2012-03-02  Peter Bergner  <bergner at 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 at 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 at cup.hp.com>
-+
-+	Backported from mainline.
-+	* decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
-+
-+2012-04-03  Jason Merrill  <jason at 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 at 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 at gcc.gnu.org>
-+
-+	Backport from trunk:
-+	2012-01-09  Mikael Morin  <mikael at 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 at 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 at net-b.de>
-+
-+	PR fortran/50619
-+	* resolve.c (build_default_init_expr): Don't initialize
-+	ASSOCIATE names.
-+
-+2012-06-01  Tobias Burnus  <burnus at 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 at 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 at net-b.de>
-+
-+	Backport from mainline
-+	2012-04-12  Tobias Burnus  <burnus at net-b.de>
-+
-+	PR fortran/52864
-+	* expr.c (gfc_check_vardef_context): Fix assignment check for
-+	pointer components.
-+
-+2012-03-10  Tobias Burnus  <burnus at 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 at net-b.de>
-+
-+	Backport from mainline
-+	2012-03-02  Tobias Burnus  <burnus at 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 at vnet.ibm.com>
-+
-+	Backport from mainline
-+	2011-06-11  Jan Hubicka  <jh at 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.  */
<Skipped 2920 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/crossmingw32-gcc.git/commitdiff/669fa8b10e8d80867c4810f9c39d4c484c7c45c9




More information about the pld-cvs-commit mailing list