rpms/gcc/devel gcc44-libstdc++-docs.patch, NONE, 1.1 gcc44-power7-2.patch, 1.2, 1.3 gcc44-power7-3.patch, NONE, 1.1 gcc44-pr39856.patch, NONE, 1.1 gcc44-pr39942.patch, NONE, 1.1 .cvsignore, 1.268, 1.269 gcc.spec, 1.41, 1.42 gcc44-atom.patch, 1.1, 1.2 gcc44-rh330771.patch, 1.1, 1.2 import.log, 1.1, 1.2 sources, 1.271, 1.272 gcc44-libjava-i386.patch, 1.1, NONE gcc44-pr39543.patch, 1.2, NONE gcc44-pr39763.patch, 1.1, NONE generate-cacerts.pl, 1.1, NONE

Jakub Jelinek jakub at fedoraproject.org
Thu May 14 08:52:32 UTC 2009


Author: jakub

Update of /cvs/pkgs/rpms/gcc/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv7391/devel

Modified Files:
	.cvsignore gcc.spec gcc44-atom.patch gcc44-rh330771.patch 
	import.log sources 
Added Files:
	gcc44-libstdc++-docs.patch gcc44-power7-2.patch 
	gcc44-power7-3.patch gcc44-pr39856.patch gcc44-pr39942.patch 
Removed Files:
	gcc44-libjava-i386.patch gcc44-pr39543.patch 
	gcc44-pr39763.patch generate-cacerts.pl 
Log Message:
4.4.0-5


gcc44-libstdc++-docs.patch:

--- NEW FILE gcc44-libstdc++-docs.patch ---
--- libstdc++-v3/doc/html/index.html	2009-01-14 12:06:37.000000000 +0100
+++ libstdc++-v3/doc/html/index.html	2009-05-06 09:17:30.000000000 +0200
@@ -12,7 +12,8 @@
 <div>
 <h1>The GNU C++ Library Documentation</h1>
 
-<p>Copyright 2008 FSF</p>
+<p>Release 4.4.0</p>
+<p>Copyright 2008, 2009 FSF</p>
 
 <p>
   Permission is granted to copy, distribute and/or modify this
--- libstdc++-v3/doc/html/api.html	2009-04-20 21:21:15.000000000 +0200
+++ libstdc++-v3/doc/html/api.html	2009-05-06 09:17:24.000000000 +0200
@@ -17,27 +17,12 @@ useful for examining the signatures of p
 the library classes, finding out what is in a particular include
 file, looking at inheritance diagrams, etc.
 </p><p>
-The source-level documentation for the most recent releases can be
-viewed online:
-</p><div class="itemizedlist"><ul type="disc"><li><p>
-      <a class="ulink" href="libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
+The source-level documentation can be viewed here:
+</p>
+<div class="itemizedlist"><ul type="disc">
+    <li><p>
+      <a class="ulink" href="api/index.html" target="_top">for the 4.4 release
       </a>
-    </p></li><li><p>
-      <a class="ulink" href="libstdc++-html-USERS-4.1/index.html" target="_top">for the 4.1 release
-      </a>
-    </p></li><li><p>
-      <a class="ulink" href="libstdc++-html-USERS-4.2/index.html" target="_top">for the 4.2 release
-      </a>
-    </p></li><li><p>
-      <a class="ulink" href="libstdc++-html-USERS-4.3/index.html" target="_top">for the 4.3 release
-      </a>
-    </p></li><li><p>
-      <a class="ulink" href="libstdc++-html-USERS-4.4/index.html" target="_top">for the 4.4 release
-      </a>
-    </p></li><li><p>
-      <a class="ulink" href="latest-doxygen/index.html" target="_top">"the latest collection"
-      </a>
-      (For the main development tree; see the date on the first page.)
     </p></li></ul></div><p>
 This generated HTML collection, as above, is also available for download in the libstdc++ snapshots directory at
    <code class="literal">&lt;URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/&gt;</code>.

gcc44-power7-2.patch:

Index: gcc44-power7-2.patch
===================================================================
RCS file: gcc44-power7-2.patch
diff -N gcc44-power7-2.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gcc44-power7-2.patch	14 May 2009 08:52:31 -0000	1.3
@@ -0,0 +1,267 @@
+2009-04-14  Michael Meissner  <meissner at linux.vnet.ibm.com>
+
+	* config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Handle
+	more possible combinations of addresses.
+
+	* config/rs6000/vector.md (vec_reload_and_plus_<mptrsize>): Allow
+	register+small constant in addition to register+register, and
+	restrict the insn to only match during reload and afterwards.
+	(vec_reload_and_reg_<mptrsize>): Allow for and of register
+	indirect to not generate insn not found message.
+
+--- gcc/config/rs6000/vector.md	(revision 146069)
++++ gcc/config/rs6000/vector.md	(revision 146118)
+@@ -129,14 +129,15 @@ (define_expand "reload_<VEC_R:mode>_<P:m
+ })
+ 
+ ;; Reload sometimes tries to move the address to a GPR, and can generate
+-;; invalid RTL for addresses involving AND -16.
++;; invalid RTL for addresses involving AND -16.  Allow addresses involving
++;; reg+reg, reg+small constant, or just reg, all wrapped in an AND -16.
+ 
+ (define_insn_and_split "*vec_reload_and_plus_<mptrsize>"
+   [(set (match_operand:P 0 "gpc_reg_operand" "=b")
+ 	(and:P (plus:P (match_operand:P 1 "gpc_reg_operand" "r")
+-		       (match_operand:P 2 "gpc_reg_operand" "r"))
++		       (match_operand:P 2 "reg_or_cint_operand" "rI"))
+ 	       (const_int -16)))]
+-  "TARGET_ALTIVEC || TARGET_VSX"
++  "(TARGET_ALTIVEC || TARGET_VSX) && (reload_in_progress || reload_completed)"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 0)
+@@ -146,6 +147,21 @@ (define_insn_and_split "*vec_reload_and_
+ 		   (and:P (match_dup 0)
+ 			  (const_int -16)))
+ 	      (clobber:CC (scratch:CC))])])
++
++;; The normal ANDSI3/ANDDI3 won't match if reload decides to move an AND -16
++;; address to a register because there is no clobber of a (scratch), so we add
++;; it here.
++(define_insn_and_split "*vec_reload_and_reg_<mptrsize>"
++  [(set (match_operand:P 0 "gpc_reg_operand" "=b")
++	(and:P (match_operand:P 1 "gpc_reg_operand" "r")
++	       (const_int -16)))]
++  "(TARGET_ALTIVEC || TARGET_VSX) && (reload_in_progress || reload_completed)"
++  "#"
++  "&& reload_completed"
++  [(parallel [(set (match_dup 0)
++		   (and:P (match_dup 1)
++			  (const_int -16)))
++	      (clobber:CC (scratch:CC))])])
+ 
+ ;; Generic floating point vector arithmetic support
+ (define_expand "add<mode>3"
+--- gcc/config/rs6000/rs6000.c	(revision 146069)
++++ gcc/config/rs6000/rs6000.c	(revision 146118)
+@@ -12574,6 +12574,11 @@ rs6000_secondary_reload_inner (rtx reg, 
+   enum reg_class rclass;
+   rtx addr;
+   rtx and_op2 = NULL_RTX;
++  rtx addr_op1;
++  rtx addr_op2;
++  rtx scratch_or_premodify = scratch;
++  rtx and_rtx;
++  rtx cc_clobber;
+ 
+   if (TARGET_DEBUG_ADDR)
+     {
+@@ -12595,7 +12600,8 @@ rs6000_secondary_reload_inner (rtx reg, 
+ 
+   switch (rclass)
+     {
+-      /* Move reg+reg addresses into a scratch register for GPRs.  */
++      /* GPRs can handle reg + small constant, all other addresses need to use
++	 the scratch register.  */
+     case GENERAL_REGS:
+     case BASE_REGS:
+       if (GET_CODE (addr) == AND)
+@@ -12603,70 +12609,152 @@ rs6000_secondary_reload_inner (rtx reg, 
+ 	  and_op2 = XEXP (addr, 1);
+ 	  addr = XEXP (addr, 0);
+ 	}
++
++      if (GET_CODE (addr) == PRE_MODIFY)
++	{
++	  scratch_or_premodify = XEXP (addr, 0);
++	  gcc_assert (REG_P (scratch_or_premodify));
++	  gcc_assert (GET_CODE (XEXP (addr, 1)) == PLUS);
++	  addr = XEXP (addr, 1);
++	}
++
+       if (GET_CODE (addr) == PLUS
+ 	  && (!rs6000_legitimate_offset_address_p (TImode, addr, true)
+ 	      || and_op2 != NULL_RTX))
+ 	{
+-	  if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == CONST
+-	      || GET_CODE (addr) == CONST_INT)
+-	    rs6000_emit_move (scratch, addr, GET_MODE (addr));
+-	  else
+-	    emit_insn (gen_rtx_SET (VOIDmode, scratch, addr));
+-	  addr = scratch;
++	  addr_op1 = XEXP (addr, 0);
++	  addr_op2 = XEXP (addr, 1);
++	  gcc_assert (legitimate_indirect_address_p (addr_op1, true));
++
++	  if (!REG_P (addr_op2)
++	      && (GET_CODE (addr_op2) != CONST_INT
++		  || !satisfies_constraint_I (addr_op2)))
++	    {
++	      rs6000_emit_move (scratch, addr_op2, Pmode);
++	      addr_op2 = scratch;
++	    }
++
++	  emit_insn (gen_rtx_SET (VOIDmode,
++				  scratch_or_premodify,
++				  gen_rtx_PLUS (Pmode,
++						addr_op1,
++						addr_op2)));
++
++	  addr = scratch_or_premodify;
++	  scratch_or_premodify = scratch;
+ 	}
+-      else if (GET_CODE (addr) == PRE_MODIFY
+-	       && REG_P (XEXP (addr, 0))
+-	       && GET_CODE (XEXP (addr, 1)) == PLUS)
++      else if (!legitimate_indirect_address_p (addr, true)
++	       && !rs6000_legitimate_offset_address_p (TImode, addr, true))
+ 	{
+-	  emit_insn (gen_rtx_SET (VOIDmode, XEXP (addr, 0), XEXP (addr, 1)));
+-	  addr = XEXP (addr, 0);
++	  rs6000_emit_move (scratch_or_premodify, addr, Pmode);
++	  addr = scratch_or_premodify;
++	  scratch_or_premodify = scratch;
+ 	}
+       break;
+ 
++      /* Float/Altivec registers can only handle reg+reg addressing.  Move
++	 other addresses into a scratch register.  */
++    case FLOAT_REGS:
++    case VSX_REGS:
++    case ALTIVEC_REGS:
++
+       /* With float regs, we need to handle the AND ourselves, since we can't
+ 	 use the Altivec instruction with an implicit AND -16.  Allow scalar
+ 	 loads to float registers to use reg+offset even if VSX.  */
+-    case FLOAT_REGS:
+-    case VSX_REGS:
+-      if (GET_CODE (addr) == AND)
++      if (GET_CODE (addr) == AND
++	  && (rclass != ALTIVEC_REGS || GET_MODE_SIZE (mode) != 16))
+ 	{
+ 	  and_op2 = XEXP (addr, 1);
+ 	  addr = XEXP (addr, 0);
+ 	}
+-      /* fall through */
+ 
+-      /* Move reg+offset addresses into a scratch register.  */
+-    case ALTIVEC_REGS:
+-      if (!legitimate_indirect_address_p (addr, true)
+-	  && !legitimate_indexed_address_p (addr, true)
+-	  && (GET_CODE (addr) != PRE_MODIFY
+-	      || !legitimate_indexed_address_p (XEXP (addr, 1), true))
+-	  && (rclass != FLOAT_REGS
+-	      || GET_MODE_SIZE (mode) != 8
++      /* If we aren't using a VSX load, save the PRE_MODIFY register and use it
++	 as the address later.  */
++      if (GET_CODE (addr) == PRE_MODIFY
++	  && (!VECTOR_MEM_VSX_P (mode)
+ 	      || and_op2 != NULL_RTX
+-	      || !rs6000_legitimate_offset_address_p (mode, addr, true)))
++	      || !legitimate_indexed_address_p (XEXP (addr, 1), true)))
+ 	{
+-	  if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == CONST
+-	      || GET_CODE (addr) == CONST_INT)
+-	    rs6000_emit_move (scratch, addr, GET_MODE (addr));
+-	  else
+-	    emit_insn (gen_rtx_SET (VOIDmode, scratch, addr));
+-	  addr = scratch;
++	  scratch_or_premodify = XEXP (addr, 0);
++	  gcc_assert (legitimate_indirect_address_p (scratch_or_premodify,
++						     true));
++	  gcc_assert (GET_CODE (XEXP (addr, 1)) == PLUS);
++	  addr = XEXP (addr, 1);
++	}
++
++      if (legitimate_indirect_address_p (addr, true)	/* reg */
++	  || legitimate_indexed_address_p (addr, true)	/* reg+reg */
++	  || GET_CODE (addr) == PRE_MODIFY		/* VSX pre-modify */
++	  || GET_CODE (addr) == AND			/* Altivec memory */
++	  || (rclass == FLOAT_REGS			/* legacy float mem */
++	      && GET_MODE_SIZE (mode) == 8
++	      && and_op2 == NULL_RTX
++	      && scratch_or_premodify == scratch
++	      && rs6000_legitimate_offset_address_p (mode, addr, true)))
++	;
++
++      else if (GET_CODE (addr) == PLUS)
++	{
++	  addr_op1 = XEXP (addr, 0);
++	  addr_op2 = XEXP (addr, 1);
++	  gcc_assert (REG_P (addr_op1));
++
++	  rs6000_emit_move (scratch, addr_op2, Pmode);
++	  emit_insn (gen_rtx_SET (VOIDmode,
++				  scratch_or_premodify,
++				  gen_rtx_PLUS (Pmode,
++						addr_op1,
++						scratch)));
++	  addr = scratch_or_premodify;
++	  scratch_or_premodify = scratch;
+ 	}
++
++      else if (GET_CODE (addr) == SYMBOL_REF || GET_CODE (addr) == CONST
++	       || GET_CODE (addr) == CONST_INT)
++	{
++	  rs6000_emit_move (scratch_or_premodify, addr, Pmode);
++	  addr = scratch_or_premodify;
++	  scratch_or_premodify = scratch;
++	}
++
++      else
++	gcc_unreachable ();
++
+       break;
+ 
+     default:
+       gcc_unreachable ();
+     }
+ 
+-  /* If the original address involved an AND -16 that is part of the Altivec
+-     addresses, recreate the and now.  */
++  /* If the original address involved a pre-modify that we couldn't use the VSX
++     memory instruction with update, and we haven't taken care of already,
++     store the address in the pre-modify register and use that as the
++     address.  */
++  if (scratch_or_premodify != scratch && scratch_or_premodify != addr)
++    {
++      emit_insn (gen_rtx_SET (VOIDmode, scratch_or_premodify, addr));
++      addr = scratch_or_premodify;
++    }
++
++  /* If the original address involved an AND -16 and we couldn't use an ALTIVEC
++     memory instruction, recreate the AND now, including the clobber which is
++     generated by the general ANDSI3/ANDDI3 patterns for the
++     andi. instruction.  */
+   if (and_op2 != NULL_RTX)
+     {
+-      rtx and_rtx = gen_rtx_SET (VOIDmode,
+-				 scratch,
+-				 gen_rtx_AND (Pmode, addr, and_op2));
+-      rtx cc_clobber = gen_rtx_CLOBBER (CCmode, gen_rtx_SCRATCH (CCmode));
++      if (! legitimate_indirect_address_p (addr, true))
++	{
++	  emit_insn (gen_rtx_SET (VOIDmode, scratch, addr));
++	  addr = scratch;
++	}
++
++      and_rtx = gen_rtx_SET (VOIDmode,
++			     scratch,
++			     gen_rtx_AND (Pmode,
++					  addr,
++					  and_op2));
++
++      cc_clobber = gen_rtx_CLOBBER (CCmode, gen_rtx_SCRATCH (CCmode));
+       emit_insn (gen_rtx_PARALLEL (VOIDmode,
+ 				   gen_rtvec (2, and_rtx, cc_clobber)));
+       addr = scratch;

gcc44-power7-3.patch:

--- NEW FILE gcc44-power7-3.patch ---
2009-04-26  Michael Meissner  <meissner at linux.vnet.ibm.com>

	* config/rs6000/vector.md (vector_vsel<mode>): Generate the insns
	directly instead of calling VSX/Altivec expanders.

	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map VSX
	builtins that are identical to Altivec, to the Altivec vesion.
	(altivec_overloaded_builtins): Add V2DF/V2DI sel, perm support.
	(altivec_resolve_overloaded_builtin): Add V2DF/V2DI support.

	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Rename VSX
	splat functions.
	(expand_vector_set): Merge V2DF/V2DI code.
	(expand_vector_extract): Ditto.
	(bdesc_3arg): Add more VSX builtins.
	(bdesc_2arg): Ditto.
	(bdesc_1arg): Ditto.
	(rs6000_expand_ternop_builtin): Require xxpermdi 3rd argument to
	be 2 bit-constant, and V2DF/V2DI set to be a 1 bit-constant.
	(altivec_expand_builtin): Add support for VSX overloaded builtins.
	(altivec_init_builtins): Ditto.
	(rs6000_common_init_builtins): Ditto.
	(rs6000_init_builtins): Add V2DI types and vector long support.
	(rs6000_handle_altivec_attribute): Ditto.
	(rs6000_mange_type): Ditto.

	* config/rs6000/vsx.md (UNSPEC_*): Add new UNSPEC constants.
	(vsx_vsel<mode>): Add support for all vector types, including
	Altivec types.
	(vsx_ftrunc<mode>2): Emit the correct instruction.
	(vsx_x<VSv>r<VSs>i): New builtin rounding mode insns.
	(vsx_x<VSv>r<VSs>ic): Ditto.
	(vsx_concat_<mode>): Key off of VSX memory instructions being
	generated instead of the vector arithmetic unit to enable V2DI
	mode.
	(vsx_extract_<mode>): Ditto.
	(vsx_set_<mode>): Rewrite as an unspec.
	(vsx_xxpermdi2_<mode>): Rename old vsx_xxpermdi_<mode> here.  Key
	off of VSX memory instructions instead of arithmetic unit.
	(vsx_xxpermdi_<mode>): New insn for __builtin_vsx_xxpermdi.
	(vsx_splat_<mode>): Rename from vsx_splat<mode>.
	(vsx_xxspltw_<mode>): Change from V4SF only to V4SF/V4SI modes.
	Fix up constraints.  Key off of memory instructions instead of
	arithmetic instructions to allow use with V4SI.
	(vsx_xxmrghw_<mode>): Ditto.
	(vsx_xxmrglw_<mode>): Ditto.
	(vsx_xxsldwi_<mode>): Implement vector shift double by word
	immediate.

	* config/rs6000/rs6000.h (VSX_BUILTIN_*): Update for current
	builtins being generated.
	(RS6000_BTI_unsigned_V2DI): Add vector long support.
	(RS6000_BTI_bool_long): Ditto.
	(RS6000_BTI_bool_V2DI): Ditto.
	(unsigned_V2DI_type_node): Ditto.
	(bool_long_type_node): Ditto.
	(bool_V2DI_type_node): Ditto.

	* config/rs6000/altivec.md (altivec_vsel<mode>): Add '*' since we
	don't need the generator function now.  Use VSX instruction if
	-mvsx.
	(altivec_vmrghw): Use VSX instruction if -mvsx.
	(altivec_vmrghsf): Ditto.
	(altivec_vmrglw): Ditto.
	(altivec_vmrglsf): Ditto.

	* doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
	Document that under VSX, vector double/long are available.

testsuite/
	* gcc.target/powerpc/vsx-builtin-3.c: New test for VSX builtins.

2009-04-23  Michael Meissner  <meissner at linux.vnet.ibm.com>

	* config/rs6000/vector.md (VEC_E): New iterator to add V2DImode.
	(vec_init<mode>): Use VEC_E instead of VEC_C iterator, to add
	V2DImode support.
	(vec_set<mode>): Ditto.
	(vec_extract<mode>): Ditto.

	* config/rs6000/predicates.md (easy_vector_constant): Add support
	for setting TImode to 0.

	* config/rs6000/rs6000.opt (-mvsx-vector-memory): Delete old debug
	switch that is no longer used.
	(-mvsx-vector-float): Ditto.
	(-mvsx-vector-double): Ditto.
	(-mvsx-v4sf-altivec-regs): Ditto.
	(-mreload-functions): Ditto.
	(-mallow-timode): New debug switch.

	* config/rs6000/rs6000.c (rs6000_ira_cover_classes): New target
	hook for IRA cover classes, to know that under VSX the float and
	altivec registers are part of the same register class, but before
	they weren't.
	(TARGET_IRA_COVER_CLASSES): Set ira cover classes target hookd.
	(rs6000_hard_regno_nregs): Key off of whether VSX/Altivec memory
	instructions are supported, and not whether the vector unit has
	arithmetic support to enable V2DI/TI mode.
	(rs6000_hard_regno_mode_ok): Ditto.
	(rs6000_init_hard_regno_mode_ok): Add V2DImode, TImode support.
	Drop several of the debug switches.
	(rs6000_emit_move): Force TImode constants to memory if we have
	either Altivec or VSX.
	(rs6000_builtin_conversion): Use correct insns for V2DI<->V2DF
	conversions.
	(rs6000_expand_vector_init): Add V2DI support.
	(rs6000_expand_vector_set): Ditto.
	(avoiding_indexed_address_p): Simplify tests to say if the mode
	uses VSX/Altivec memory instructions we can't eliminate reg+reg
	addressing.
	(rs6000_legitimize_address): Move VSX/Altivec REG+REG support
	before the large integer support.
	(rs6000_legitimate_address): Add support for TImode in VSX/Altivec
	registers.
	(rs6000_emit_move): Ditto.
	(def_builtin): Change internal error message to provide more
	information.
	(bdesc_2arg): Add conversion builtins.
	(builtin_hash_function): New function for hashing all of the types
	for builtin functions.
	(builtin_hash_eq): Ditto.
	(builtin_function_type): Ditto.
	(builtin_mode_to_type): New static for builtin argument hashing.
	(builtin_hash_table): Ditto.
	(rs6000_common_init_builtins): Rewrite so that types for builtin
	functions are only created when we need them, and use a hash table
	to store all of the different argument combinations that are
	created.  Add support for VSX conversion builtins.
	(rs6000_preferred_reload_class): Add TImode support.
	(reg_classes_cannot_change_mode_class): Be stricter about VSX and
	Altivec vector types.
	(rs6000_emit_vector_cond_expr): Use VSX_MOVE_MODE, not
	VSX_VECTOR_MOVE_MODE.
	(rs6000_handle_altivec_attribute): Allow __vector long on VSX.

	* config/rs6000/vsx.md (VSX_D): New iterator for vectors with
	64-bit elements.
	(VSX_M): New iterator for 128 bit types for moves, except for
	TImode.
	(VSm, VSs, VSr): Add TImode.
	(VSr4, VSr5): New mode attributes for float<->double conversion.
	(VSX_SPDP): New iterator for float<->double conversion.
	(VS_spdp_*): New mode attributes for float<->double conversion.
	(UNSPEC_VSX_*): Rename unspec constants to remove XV from the
	names.  Change all users.
	(vsx_mov<mode>): Drop TImode support here.
	(vsx_movti): New TImode support, allow GPRs, but favor VSX
	registers.
	(vsx_<VS_spdp_insn>): New support for float<->double conversions.
	(vsx_xvcvdpsp): Delete, move into vsx_<VS_spdp_insn>.
	(vsx_xvcvspdp): Ditto.
	(vsx_xvcvuxdsp): New conversion insn.
	(vsx_xvcvspsxds): Ditto.
	(vsx_xvcvspuxds): Ditto.
	(vsx_concat_<mode>): Generalize V2DF permute/splat operations to
	include V2DI.
	(vsx_set_<mode>): Ditto.
	(vsx_extract_<mode>): Ditto.
	(vsx_xxpermdi_<mode>): Ditto.
	(vsx_splat<mode>): Ditto.

	* config/rs6000/rs6000.h (VSX_VECTOR_MOVE_MODE): Delete.
	(VSX_MOVE_MODE): Add TImode.
	(IRA_COVER_CLASSES): Delete.
	(IRA_COVER_CLASSES_PRE_VSX): New cover classes for machines
	without VSX where float and altivec are different registers.
	(IRA_COVER_CLASS_VSX): New cover classes for machines with VSX
	where float and altivec are part of the same register class.

	* config/rs6000/altivec.md (VM2): New iterator for 128-bit types,
	except TImode.
	(altivec_mov<mode>): Drop movti mode here.
	(altivec_movti): Add movti insn, and allow GPRs, but favor altivec
	registers.

2009-04-16  Michael Meissner  <meissner at linux.vnet.ibm.com>

	* config/rs6000/rs6000-protos.h (rs6000_has_indirect_jump_p): New
	declaration.
	(rs6000_set_indirect_jump): Ditto.

	* config/rs6000/rs6000.c (struct machine_function): Add
	indirect_jump_p field.
	(rs6000_override_options): Wrap warning messages in N_().  If
	-mvsx was implicitly set, don't give a warning for -msoft-float,
	just silently turn off vsx.
	(rs6000_secondary_reload_inner): Don't use strict register
	checking, since pseudos may still be present.
	(register_move_cost): If -mdebug=cost, print out cost information.
	(rs6000_memory_move_cost): Ditto.
	(rs6000_has_indirect_jump_p): New function, return true if
	current function has an indirect jump.
	(rs6000_set_indirect_jump): New function, note that an indirect
	jump has been generated.

	* config/rs6000/rs6000.md (indirect_jump): Note that we've
	generated an indirect jump.
	(tablejump): Ditto.
[...3124 lines suppressed...]
 
   /* VSX overloaded builtins, add the overloaded functions not present in
      Altivec.  */
@@ -3395,7 +3411,13 @@ enum rs6000_builtins
   VSX_BUILTIN_VEC_NMADD,
   VSX_BUITLIN_VEC_NMSUB,
   VSX_BUILTIN_VEC_DIV,
-  VSX_BUILTIN_OVERLOADED_LAST = VSX_BUILTIN_VEC_DIV,
+  VSX_BUILTIN_VEC_XXMRGHW,
+  VSX_BUILTIN_VEC_XXMRGLW,
+  VSX_BUILTIN_VEC_XXPERMDI,
+  VSX_BUILTIN_VEC_XXSLDWI,
+  VSX_BUILTIN_VEC_XXSPLTD,
+  VSX_BUILTIN_VEC_XXSPLTW,
+  VSX_BUILTIN_OVERLOADED_LAST = VSX_BUILTIN_VEC_XXSPLTW,
 
   /* Combined VSX/Altivec builtins.  */
   VECTOR_BUILTIN_FLOAT_V4SI_V4SF,
@@ -3425,13 +3447,16 @@ enum rs6000_builtin_type_index
   RS6000_BTI_unsigned_V16QI,
   RS6000_BTI_unsigned_V8HI,
   RS6000_BTI_unsigned_V4SI,
+  RS6000_BTI_unsigned_V2DI,
   RS6000_BTI_bool_char,          /* __bool char */
   RS6000_BTI_bool_short,         /* __bool short */
   RS6000_BTI_bool_int,           /* __bool int */
+  RS6000_BTI_bool_long,		 /* __bool long */
   RS6000_BTI_pixel,              /* __pixel */
   RS6000_BTI_bool_V16QI,         /* __vector __bool char */
   RS6000_BTI_bool_V8HI,          /* __vector __bool short */
   RS6000_BTI_bool_V4SI,          /* __vector __bool int */
+  RS6000_BTI_bool_V2DI,          /* __vector __bool long */
   RS6000_BTI_pixel_V8HI,         /* __vector __pixel */
   RS6000_BTI_long,	         /* long_integer_type_node */
   RS6000_BTI_unsigned_long,      /* long_unsigned_type_node */
@@ -3466,13 +3491,16 @@ enum rs6000_builtin_type_index
 #define unsigned_V16QI_type_node      (rs6000_builtin_types[RS6000_BTI_unsigned_V16QI])
 #define unsigned_V8HI_type_node       (rs6000_builtin_types[RS6000_BTI_unsigned_V8HI])
 #define unsigned_V4SI_type_node       (rs6000_builtin_types[RS6000_BTI_unsigned_V4SI])
+#define unsigned_V2DI_type_node       (rs6000_builtin_types[RS6000_BTI_unsigned_V2DI])
 #define bool_char_type_node           (rs6000_builtin_types[RS6000_BTI_bool_char])
 #define bool_short_type_node          (rs6000_builtin_types[RS6000_BTI_bool_short])
 #define bool_int_type_node            (rs6000_builtin_types[RS6000_BTI_bool_int])
+#define bool_long_type_node           (rs6000_builtin_types[RS6000_BTI_bool_long])
 #define pixel_type_node               (rs6000_builtin_types[RS6000_BTI_pixel])
 #define bool_V16QI_type_node	      (rs6000_builtin_types[RS6000_BTI_bool_V16QI])
 #define bool_V8HI_type_node	      (rs6000_builtin_types[RS6000_BTI_bool_V8HI])
 #define bool_V4SI_type_node	      (rs6000_builtin_types[RS6000_BTI_bool_V4SI])
+#define bool_V2DI_type_node	      (rs6000_builtin_types[RS6000_BTI_bool_V2DI])
 #define pixel_V8HI_type_node	      (rs6000_builtin_types[RS6000_BTI_pixel_V8HI])
 
 #define long_integer_type_internal_node  (rs6000_builtin_types[RS6000_BTI_long])
--- gcc/config/rs6000/altivec.md	(revision 146119)
+++ gcc/config/rs6000/altivec.md	(revision 146798)
@@ -166,12 +166,15 @@ (define_mode_iterator V [V4SI V8HI V16QI
 ;; otherwise handled by altivec (v2df, v2di, ti)
 (define_mode_iterator VM [V4SI V8HI V16QI V4SF V2DF V2DI TI])
 
+;; Like VM, except don't do TImode
+(define_mode_iterator VM2 [V4SI V8HI V16QI V4SF V2DF V2DI])
+
 (define_mode_attr VI_char [(V4SI "w") (V8HI "h") (V16QI "b")])
 
 ;; Vector move instructions.
 (define_insn "*altivec_mov<mode>"
-  [(set (match_operand:V 0 "nonimmediate_operand" "=Z,v,v,*o,*r,*r,v,v")
-	(match_operand:V 1 "input_operand" "v,Z,v,r,o,r,j,W"))]
+  [(set (match_operand:VM2 0 "nonimmediate_operand" "=Z,v,v,*o,*r,*r,v,v")
+	(match_operand:VM2 1 "input_operand" "v,Z,v,r,o,r,j,W"))]
   "VECTOR_MEM_ALTIVEC_P (<MODE>mode)
    && (register_operand (operands[0], <MODE>mode) 
        || register_operand (operands[1], <MODE>mode))"
@@ -191,6 +194,31 @@ (define_insn "*altivec_mov<mode>"
 }
   [(set_attr "type" "vecstore,vecload,vecsimple,store,load,*,vecsimple,*")])
 
+;; Unlike other altivec moves, allow the GPRs, since a normal use of TImode
+;; is for unions.  However for plain data movement, slightly favor the vector
+;; loads
+(define_insn "*altivec_movti"
+  [(set (match_operand:TI 0 "nonimmediate_operand" "=Z,v,v,?o,?r,?r,v,v")
+	(match_operand:TI 1 "input_operand" "v,Z,v,r,o,r,j,W"))]
+  "VECTOR_MEM_ALTIVEC_P (TImode)
+   && (register_operand (operands[0], TImode) 
+       || register_operand (operands[1], TImode))"
+{
+  switch (which_alternative)
+    {
+    case 0: return "stvx %1,%y0";
+    case 1: return "lvx %0,%y1";
+    case 2: return "vor %0,%1,%1";
+    case 3: return "#";
+    case 4: return "#";
+    case 5: return "#";
+    case 6: return "vxor %0,%0,%0";
+    case 7: return output_vec_const_move (operands);
+    default: gcc_unreachable ();
+    }
+}
+  [(set_attr "type" "vecstore,vecload,vecsimple,store,load,*,vecsimple,*")])
+
 (define_split
   [(set (match_operand:VM 0 "altivec_register_operand" "")
 	(match_operand:VM 1 "easy_vector_constant_add_self" ""))]
@@ -434,13 +462,13 @@ (define_insn "*altivec_gev4sf"
   "vcmpgefp %0,%1,%2"
   [(set_attr "type" "veccmp")])
 
-(define_insn "altivec_vsel<mode>"
+(define_insn "*altivec_vsel<mode>"
   [(set (match_operand:VM 0 "altivec_register_operand" "=v")
 	(if_then_else:VM (ne (match_operand:VM 1 "altivec_register_operand" "v")
 			     (const_int 0))
 			 (match_operand:VM 2 "altivec_register_operand" "v")
 			 (match_operand:VM 3 "altivec_register_operand" "v")))]
-  "VECTOR_UNIT_ALTIVEC_P (<MODE>mode)"
+  "VECTOR_MEM_ALTIVEC_P (<MODE>mode)"
   "vsel %0,%3,%2,%1"
   [(set_attr "type" "vecperm")])
 
@@ -780,7 +808,7 @@ (define_insn "altivec_vmrghw"
 						    (const_int 3)
 						    (const_int 1)]))
 		      (const_int 5)))]
-  "TARGET_ALTIVEC"
+  "VECTOR_MEM_ALTIVEC_P (V4SImode)"
   "vmrghw %0,%1,%2"
   [(set_attr "type" "vecperm")])
 
@@ -797,7 +825,7 @@ (define_insn "*altivec_vmrghsf"
                                                     (const_int 3)
                                                     (const_int 1)]))
                       (const_int 5)))]
-  "VECTOR_UNIT_ALTIVEC_P (V4SFmode)"
+  "VECTOR_MEM_ALTIVEC_P (V4SFmode)"
   "vmrghw %0,%1,%2"
   [(set_attr "type" "vecperm")])
 
@@ -881,7 +909,7 @@ (define_insn "altivec_vmrglw"
 				     (const_int 1)
 				     (const_int 3)]))
 	 (const_int 5)))]
-  "TARGET_ALTIVEC"
+  "VECTOR_MEM_ALTIVEC_P (V4SImode)"
   "vmrglw %0,%1,%2"
   [(set_attr "type" "vecperm")])
 
@@ -899,7 +927,7 @@ (define_insn "*altivec_vmrglsf"
 				     (const_int 1)
 				     (const_int 3)]))
 	 (const_int 5)))]
-  "VECTOR_UNIT_ALTIVEC_P (V4SFmode)"
+  "VECTOR_MEM_ALTIVEC_P (V4SFmode)"
   "vmrglw %0,%1,%2"
   [(set_attr "type" "vecperm")])
 
--- gcc/config/rs6000/rs6000.md	(revision 146119)
+++ gcc/config/rs6000/rs6000.md	(revision 146798)
@@ -14667,7 +14667,11 @@ (define_insn "return"
   [(set_attr "type" "jmpreg")])
 
 (define_expand "indirect_jump"
-  [(set (pc) (match_operand 0 "register_operand" ""))])
+  [(set (pc) (match_operand 0 "register_operand" ""))]
+  ""
+{
+  rs6000_set_indirect_jump ();
+})
 
 (define_insn "*indirect_jump<mode>"
   [(set (pc) (match_operand:P 0 "register_operand" "c,*l"))]
@@ -14682,14 +14686,14 @@ (define_expand "tablejump"
   [(use (match_operand 0 "" ""))
    (use (label_ref (match_operand 1 "" "")))]
   ""
-  "
 {
+  rs6000_set_indirect_jump ();
   if (TARGET_32BIT)
     emit_jump_insn (gen_tablejumpsi (operands[0], operands[1]));
   else
     emit_jump_insn (gen_tablejumpdi (operands[0], operands[1]));
   DONE;
-}")
+})
 
 (define_expand "tablejumpsi"
   [(set (match_dup 3)
@@ -14749,6 +14753,11 @@ (define_expand "doloop_end"
   /* Only use this on innermost loops.  */
   if (INTVAL (operands[3]) > 1)
     FAIL;
+  /* Do not try to use decrement and count on code that has an indirect
+     jump or a table jump, because the ctr register is preferred over the
+     lr register.  */
+  if (rs6000_has_indirect_jump_p ())
+    FAIL;
   if (TARGET_64BIT)
     {
       if (GET_MODE (operands[0]) != DImode)

gcc44-pr39856.patch:

--- NEW FILE gcc44-pr39856.patch ---
2009-04-24  Vladimir Makarov  <vmakarov at redhat.com>

	PR target/39856
	* reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
	for clobber.

--- gcc/reg-stack.c	(revision 146648)
+++ gcc/reg-stack.c	(working copy)
@@ -1371,21 +1371,23 @@ subst_stack_regs_pat (rtx insn, stack re
 
 	    if (pat != PATTERN (insn))
 	      {
-		/* The fix_truncdi_1 pattern wants to be able to allocate
-		   its own scratch register.  It does this by clobbering
-		   an fp reg so that it is assured of an empty reg-stack
-		   register.  If the register is live, kill it now.
-		   Remove the DEAD/UNUSED note so we don't try to kill it
-		   later too.  */
+		/* The fix_truncdi_1 pattern wants to be able to
+		   allocate its own scratch register.  It does this by
+		   clobbering an fp reg so that it is assured of an
+		   empty reg-stack register.  If the register is live,
+		   kill it now.  Remove the DEAD/UNUSED note so we
+		   don't try to kill it later too.
+
+		   In reality the UNUSED note can be absent in some
+		   complicated cases when the register is reused for
+		   partially set variable.  */
 
 		if (note)
 		  emit_pop_insn (insn, regstack, *dest, EMIT_BEFORE);
 		else
-		  {
-		    note = find_reg_note (insn, REG_UNUSED, *dest);
-		    gcc_assert (note);
-		  }
-		remove_note (insn, note);
+		  note = find_reg_note (insn, REG_UNUSED, *dest);
+		if (note)
+		  remove_note (insn, note);
 		replace_reg (dest, FIRST_STACK_REG + 1);
 	      }
 	    else

gcc44-pr39942.patch:

--- NEW FILE gcc44-pr39942.patch ---
2009-05-05  Jakub Jelinek  <jakub at redhat.com>

	PR target/39942
	* config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
	.p2align 3 if MAX_SKIP is smaller than 7.
	* config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.

--- gcc/config/i386/x86-64.h.jj	2009-05-05 08:33:20.000000000 +0200
+++ gcc/config/i386/x86-64.h	2009-05-05 16:37:13.000000000 +0200
@@ -74,7 +74,9 @@ see the files COPYING3 and COPYING.RUNTI
 	fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP));	\
 	/* Make sure that we have at least 8 byte alignment if > 8 byte \
 	   alignment is preferred.  */					\
-	if ((LOG) > 3 && (1 << (LOG)) > ((MAX_SKIP) + 1))		\
+	if ((LOG) > 3							\
+	    && (1 << (LOG)) > ((MAX_SKIP) + 1)				\
+	    && (MAX_SKIP) >= 7)						\
 	  fprintf ((FILE), "\t.p2align 3\n");				\
       }									\
     }									\
--- gcc/config/i386/linux.h.jj	2009-05-05 08:33:20.000000000 +0200
+++ gcc/config/i386/linux.h	2009-05-05 16:37:13.000000000 +0200
@@ -153,7 +153,9 @@ along with GCC; see the file COPYING3.  
 	fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP));	\
 	/* Make sure that we have at least 8 byte alignment if > 8 byte \
 	   alignment is preferred.  */					\
-	if ((LOG) > 3 && (1 << (LOG)) > ((MAX_SKIP) + 1))		\
+	if ((LOG) > 3							\
+	    && (1 << (LOG)) > ((MAX_SKIP) + 1)				\
+	    && (MAX_SKIP) >= 7)						\
 	  fprintf ((FILE), "\t.p2align 3\n");				\
       }									\
     }									\


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.268
retrieving revision 1.269
diff -u -p -r1.268 -r1.269
--- .cvsignore	14 Apr 2009 15:46:14 -0000	1.268
+++ .cvsignore	14 May 2009 08:52:30 -0000	1.269
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.0-20090414.tar.bz2
+gcc-4.4.0-20090514.tar.bz2


Index: gcc.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc.spec,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -p -r1.41 -r1.42
--- gcc.spec	14 Apr 2009 17:54:33 -0000	1.41
+++ gcc.spec	14 May 2009 08:52:30 -0000	1.42
@@ -1,40 +1,41 @@
-%define DATE 20090414
-%define SVNREV 146037
-%define gcc_version 4.4.0
+%global DATE 20090514
+%global SVNREV 147523
+%global gcc_version 4.4.0
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%define gcc_release 0.34
-%define _unpackaged_files_terminate_build 0
-%define multilib_64_archs sparc64 ppc64 s390x x86_64
-%define include_gappletviewer 1
+%global gcc_release 5
+%global _unpackaged_files_terminate_build 0
+%global multilib_64_archs sparc64 ppc64 s390x x86_64
+%global include_gappletviewer 1
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
-%define build_ada 1
+%global build_ada 1
 %else
-%define build_ada 0
+%global build_ada 0
 %endif
-%define build_java 1
+%global build_java 1
 %ifarch %{sparc}
-%define build_cloog 0
+%global build_cloog 0
 %else
-%define build_cloog 1
+%global build_cloog 1
 %endif
+%global build_libstdcxx_docs 1
 # If you don't have already a usable gcc-java and libgcj for your arch,
 # do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec
 # which creates libjava-classes-%{version}-%{release}.tar.bz2
 # With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec
-%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
-%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
+%global bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
+%global build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
 %ifarch s390x
-%define multilib_32_arch s390
+%global multilib_32_arch s390
 %endif
 %ifarch sparc64
-%define multilib_32_arch sparcv9
+%global multilib_32_arch sparcv9
 %endif
 %ifarch ppc64
-%define multilib_32_arch ppc
+%global multilib_32_arch ppc
 %endif
 %ifarch x86_64
-%define multilib_32_arch i586
+%global multilib_32_arch i586
 %endif
 Summary: Various compilers (C, C++, Objective-C, Java, ...)
 Name: gcc
@@ -52,7 +53,7 @@ Source0: gcc-%{version}-%{DATE}.tar.bz2
 Source1: libgcc_post_upgrade.c
 Source2: README.libgcjwebplugin.so
 Source3: protoize.1
-%define fastjar_ver 0.97
+%global fastjar_ver 0.97
 Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz
 URL: http://gcc.gnu.org
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -99,6 +100,10 @@ BuildRequires: libunwind >= 0.98
 %if %{build_cloog}
 BuildRequires: ppl >= 0.10, ppl-devel >= 0.10, cloog-ppl >= 0.15, cloog-ppl-devel >= 0.15
 %endif
+%if %{build_libstdcxx_docs}
+BuildRequires: doxygen
+BuildRequires: graphviz
+%endif
 Requires: cpp = %{version}-%{release}
 # Need .eh_frame ld optimizations
 # Need proper visibility support
@@ -127,7 +132,8 @@ Obsoletes: libgnat < %{version}-%{releas
 %if %{build_cloog}
 Requires: cloog-ppl >= 0.15
 %endif
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 AutoReq: true
 
 Patch0: gcc44-hack.patch
@@ -147,26 +153,29 @@ Patch20: gcc44-libtool-no-rpath.patch
 Patch21: gcc44-cloog-dl.patch
 Patch22: gcc44-raw-string.patch
 Patch24: gcc44-atom.patch
-Patch26: gcc44-power7.patch
+Patch25: gcc44-power7.patch
+Patch26: gcc44-power7-2.patch
+Patch27: gcc44-power7-3.patch
 Patch28: gcc44-pr38757.patch
-Patch30: gcc44-pr39543.patch
-Patch31: gcc44-pr39763.patch
+Patch29: gcc44-pr39856.patch
+Patch30: gcc44-libstdc++-docs.patch
+Patch31: gcc44-pr39942.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 
 # On ARM EABI systems, we do want -gnueabi to be part of the
 # target triple.
 %ifnarch %{arm}
-%define _gnu %{nil}
+%global _gnu %{nil}
 %endif
 %ifarch sparcv9
-%define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
+%global gcc_target_platform sparc64-%{_vendor}-%{_target_os}
 %endif
 %ifarch ppc
-%define gcc_target_platform ppc64-%{_vendor}-%{_target_os}
+%global gcc_target_platform ppc64-%{_vendor}-%{_target_os}
 %endif
 %ifnarch sparcv9 ppc
-%define gcc_target_platform %{_target_platform}
+%global gcc_target_platform %{_target_platform}
 %endif
 
 %description
@@ -215,6 +224,15 @@ This is the GNU implementation of the st
 package includes the header files and libraries needed for C++
 development. This includes rewritten implementation of STL.
 
+%package -n libstdc++-docs
+Summary: Documentation for the GNU standard C++ library
+Group: Development/Libraries
+Autoreq: true
+
+%description -n libstdc++-docs
+Manual, doxygen generated API information and Frequently Asked Questions
+for the GNU standard C++ library.
+
 %package objc
 Summary: Objective-C support for GCC
 Group: Development/Languages
@@ -251,7 +269,8 @@ Group: Development/Languages
 Requires: gcc = %{version}-%{release}
 Requires: libgfortran = %{version}-%{release}
 BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 Autoreq: true
 
 %description gfortran
@@ -270,7 +289,8 @@ Fortran dynamically linked programs.
 %package -n libgomp
 Summary: GCC OpenMP v3.0 shared support library
 Group: System Environment/Libraries
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 
 %description -n libgomp
 This package contains GCC shared support library which is needed
@@ -305,7 +325,8 @@ Requires: gcc = %{version}-%{release}
 Requires: libgcj = %{version}-%{release}
 Requires: libgcj-devel = %{version}-%{release}
 Requires: /usr/share/java/eclipse-ecj.jar
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 Autoreq: true
 
 %description java
@@ -315,7 +336,8 @@ bytecode into native code.
 %package -n libgcj
 Summary: Java runtime library for gcc
 Group: System Environment/Libraries
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 Requires: zip >= 2.1
 Requires: gtk2 >= 2.4.0
 Requires: glib2 >= 2.4.0
@@ -360,7 +382,8 @@ The Java(tm) runtime library sources for
 %package -n cpp
 Summary: The C Preprocessor
 Group: Development/Languages
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 Autoreq: true
 
 %description -n cpp
@@ -390,7 +413,8 @@ Summary: Ada 95 support for GCC
 Group: Development/Languages
 Requires: gcc = %{version}-%{release}
 Requires: libgnat = %{version}-%{release}, libgnat-devel = %{version}-%{release}
-Prereq: /sbin/install-info
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
 Autoreq: true
 
 %description gnat
@@ -436,10 +460,15 @@ which are required to compile with the G
 %endif
 %patch22 -p0 -b .raw-string~
 %patch24 -p0 -b .atom~
-%patch26 -p0 -b .power7~
+%patch25 -p0 -b .power7~
+%patch26 -p0 -b .power7-2~
+%patch27 -p0 -b .power7-3~
 %patch28 -p0 -b .pr38757~
-#%patch30 -p0 -b .pr39543~
-%patch31 -p0 -b .pr39763~
+%patch29 -p0 -b .pr39856~
+%if %{build_libstdcxx_docs}
+%patch30 -p0 -b .libstdc++-docs~
+%endif
+%patch31 -p0 -b .pr39942~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -493,7 +522,7 @@ fi
 # fastjar, build it anyway.
 mkdir fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
 cd fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
-../configure CFLAGS="$RPM_OPT_FLAGS" --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir}
+../configure CFLAGS="%{optflags}" --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir}
 make %{?_smp_mflags}
 export PATH=`pwd`${PATH:+:$PATH}
 cd ../../
@@ -533,7 +562,7 @@ cd ..
 %endif
 
 CC=gcc
-OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
+OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
 OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
 %ifarch sparc
 OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
@@ -632,19 +661,6 @@ CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`
 #GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
 GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
 
-# run the tests.
-make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
-echo ====================TESTING=========================
-( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
-echo ====================TESTING END=====================
-mkdir testlogs-%{_target_platform}-%{version}-%{release}
-for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do
-  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
-done
-tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
-  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
-rm -rf testlogs-%{_target_platform}-%{version}-%{release}
-
 # Make protoize
 make -C gcc CC="./xgcc -B ./ -O2" proto
 
@@ -656,6 +672,14 @@ done
 make -C gcc generated-manpages
 for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
 
+# Make generated doxygen pages.
+%if %{build_libstdcxx_docs}
+cd %{gcc_target_platform}/libstdc++-v3
+make doc-html-doxygen
+make doc-man-doxygen
+cd ../..
+%endif
+
 # Copy various doc files here and there
 cd ..
 mkdir -p rpm.doc/gfortran rpm.doc/objc
@@ -704,11 +728,7 @@ tar cf - -T libjava-classes.list | bzip2
 %endif
 
 %install
-rm -fr $RPM_BUILD_ROOT
-
-perl -pi -e \
-  's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
-  libstdc++-v3/doc/html/api.html
+rm -fr %{buildroot}
 
 cd obj-%{gcc_target_platform}
 
@@ -724,31 +744,31 @@ TARGET_PLATFORM=%{gcc_target_platform}
 # There are some MP bugs in libstdc++ Makefiles
 make -C %{gcc_target_platform}/libstdc++-v3
 
-make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \
-  infodir=$RPM_BUILD_ROOT%{_infodir} install
+make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
+  infodir=%{buildroot}%{_infodir} install
 %if %{build_java}
-make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
+make DESTDIR=%{buildroot} -C %{gcc_target_platform}/libjava install-src.zip
 %endif
 %if %{build_ada}
-chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
+chmod 644 %{buildroot}%{_infodir}/gnat*
 %endif
 
-FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
 
 # fix some things
-ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc
-mkdir -p $RPM_BUILD_ROOT/lib
-ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp
-ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95
-rm -f $RPM_BUILD_ROOT%{_infodir}/dir
-gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info*
-ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc
+ln -sf gcc %{buildroot}%{_prefix}/bin/cc
+mkdir -p %{buildroot}/lib
+ln -sf ..%{_prefix}/bin/cpp %{buildroot}/lib/cpp
+ln -sf gfortran %{buildroot}%{_prefix}/bin/f95
+rm -f %{buildroot}%{_infodir}/dir
+gzip -9 %{buildroot}%{_infodir}/*.info*
+ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc
 
 cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
 for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
   if ! diff -up $cxxconfig $i; then
-    cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
+    cat > %{buildroot}%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
 #ifndef _CPP_CPPCONFIG_WRAPPER
 #define _CPP_CPPCONFIG_WRAPPER 1
 #include <bits/wordsize.h>
@@ -771,7 +791,7 @@ EOF
   fi
 done
 
-for f in `find $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/ -name c++config.h`; do
+for f in `find %{buildroot}%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/ -name c++config.h`; do
   for i in 1 2 4 8; do
     sed -i -e 's/#define _GLIBCXX_ATOMIC_BUILTINS_'$i' 1/#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_'$i'\
 &\
@@ -788,15 +808,25 @@ done
 # 4) it is huge
 # People can always precompile on their own whatever they want, but
 # shipping this for everybody is unnecessary.
-rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
+rm -rf %{buildroot}%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
+
+%if %{build_libstdcxx_docs}
+libstdcxx_doc_builddir=%{gcc_target_platform}/libstdc++-v3/doc/doxygen
+mkdir -p ../rpm.doc/libstdc++-v3
+cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html
+mv $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api
+mkdir -p %{buildroot}%{_mandir}
+mv $libstdcxx_doc_builddir/man/man3 %{buildroot}%{_mandir}/man3/
+find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm
+%endif
 
 %ifarch sparcv9 sparc64
-ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
-  $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
+  %{buildroot}%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
 %endif
 %ifarch ppc ppc64
-ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
-  $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
+  %{buildroot}%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
 %endif
 
 %ifarch sparcv9 ppc
@@ -811,24 +841,24 @@ else
   FULLLPATH=$FULLPATH
 fi
 
-find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
+find %{buildroot} -name \*.la | xargs rm -f
 %if %{build_java}
 # gcj -static doesn't work properly anyway, unless using --whole-archive
 # and saving 35MB is not bad.
-find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \
+find %{buildroot} -name libgcj.a -o -name libgtkpeer.a \
 		     -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \
 		     -o -name libgij.a -o -name libgcj_bc.a -o -name libjavamath.a \
   | xargs rm -f
 
-mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
+mv %{buildroot}%{_prefix}/lib/libgcj.spec $FULLPATH/
 sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
   $FULLPATH/libgcj.spec
 %endif
 
-mkdir -p $RPM_BUILD_ROOT/%{_lib}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
+mkdir -p %{buildroot}/%{_lib}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+chmod 755 %{buildroot}/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 %{buildroot}/%{_lib}/libgcc_s.so.1
 ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
 %ifarch sparcv9 ppc
 ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
@@ -837,30 +867,30 @@ ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64
 ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
 %endif
 
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
 
 %if %{build_ada}
-mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
-mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+mv -f $FULLPATH/adalib/libgnarl-*.so %{buildroot}%{_prefix}/%{_lib}/
+mv -f $FULLPATH/adalib/libgnat-*.so %{buildroot}%{_prefix}/%{_lib}/
 rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so*
 %endif
 
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf
+mkdir -p %{buildroot}%{_prefix}/libexec/getconf
 if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then
-  ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+  ln -sf POSIX_V6_ILP32_OFF32 %{buildroot}%{_prefix}/libexec/getconf/default
 else
-  ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+  ln -sf POSIX_V6_LP64_OFF64 %{buildroot}%{_prefix}/libexec/getconf/default
 fi
 
 %if %{build_java}
 pushd ../fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
-make install DESTDIR=$RPM_BUILD_ROOT
+make install DESTDIR=%{buildroot}
 popd
 
 if [ "%{_lib}" != "lib" ]; then
-  mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig
-  sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \
-    > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc`
+  mkdir -p %{buildroot}%{_prefix}/%{_lib}/pkgconfig
+  sed '/^libdir/s/lib$/%{_lib}/' %{buildroot}%{_prefix}/lib/pkgconfig/libgcj-*.pc \
+    > %{buildroot}%{_prefix}/%{_lib}/pkgconfig/`basename %{buildroot}%{_prefix}/lib/pkgconfig/libgcj-*.pc`
 fi
 %endif
 
@@ -891,14 +921,14 @@ ln -sf ../../../../%{_lib}/libgij.so.10.
 %endif
 fi
 %if %{build_java}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
 %endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a .
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a .
+mv -f %{buildroot}%{_prefix}/%{_lib}/libobjc.*a .
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.*a .
+mv -f %{buildroot}%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
 
 %if %{build_ada}
 %ifarch sparcv9 ppc
@@ -956,10 +986,10 @@ ln -sf ../`echo ../../../../lib/libgij.s
 ln -sf lib32/libgcj_bc.so libgcj_bc.so
 ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so
 %endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/
+mv -f %{buildroot}%{_prefix}/lib64/libsupc++.*a 64/
+mv -f %{buildroot}%{_prefix}/lib64/libgfortran.*a 64/
+mv -f %{buildroot}%{_prefix}/lib64/libobjc.*a 64/
+mv -f %{buildroot}%{_prefix}/lib64/libgomp.*a 64/
 ln -sf lib32/libstdc++.a libstdc++.a
 ln -sf ../lib64/libstdc++.a 64/libstdc++.a
 ln -sf lib32/libmudflap.a libmudflap.a
@@ -989,10 +1019,10 @@ ln -sf ../`echo ../../../../lib64/libgcj
 ln -sf ../`echo ../../../../lib64/libgcj-tools.so.10.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
 ln -sf ../`echo ../../../../lib64/libgij.so.10.* | sed s~/../lib64/~/~` 32/libgij.so
 %endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/
+mv -f %{buildroot}%{_prefix}/lib/libsupc++.*a 32/
+mv -f %{buildroot}%{_prefix}/lib/libgfortran.*a 32/
+mv -f %{buildroot}%{_prefix}/lib/libobjc.*a 32/
+mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
 %endif
 %ifarch sparc64 ppc64
 ln -sf ../lib32/libstdc++.a 32/libstdc++.a
@@ -1031,14 +1061,14 @@ strip -g `find . \( -name libgfortran.a 
 		    -o -name libmudflap.a -o -name libmudflapth.a \
 		    -o -name libgcc.a -o -name libgcov.a \) -a -type f`
 popd
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.3.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.2.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.3.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgomp.so.1.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libobjc.so.2.*
 
 %if %{build_ada}
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgnarl*so*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgnat*so*
 %endif
 
 mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
@@ -1051,7 +1081,7 @@ for h in `find $FULLPATH/include -name \
   fi
 done
 
-cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF"
+cat > %{buildroot}%{_prefix}/bin/c89 <<"EOF"
 #!/bin/sh
 fl="-std=c89"
 for opt; do
@@ -1063,7 +1093,7 @@ for opt; do
 done
 exec gcc $fl ${1+"$@"}
 EOF
-cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
+cat > %{buildroot}%{_prefix}/bin/c99 <<"EOF"
 #!/bin/sh
 fl="-std=c99"
 for opt; do
@@ -1075,11 +1105,11 @@ for opt; do
 done
 exec gcc $fl ${1+"$@"}
 EOF
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
+chmod 755 %{buildroot}%{_prefix}/bin/c?9
 
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin
-gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
-strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+mkdir -p %{buildroot}%{_prefix}/sbin
+gcc -static -Os %{SOURCE1} -o %{buildroot}%{_prefix}/sbin/libgcc_post_upgrade
+strip %{buildroot}%{_prefix}/sbin/libgcc_post_upgrade
 
 cd ..
 %find_lang %{name}
@@ -1087,38 +1117,54 @@ cd ..
 
 # Remove binaries we will not be including, so that they don't end up in
 # gcc-debuginfo
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a}
+rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a}
 rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp*
-rm -f $RPM_BUILD_ROOT%{_prefix}/bin/gnative2ascii
+rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
+rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
+rm -f %{buildroot}%{_prefix}/bin/gnative2ascii
 
 %ifarch %{multilib_64_archs}
 # Remove libraries for the other arch on multilib arches
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so*
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a
+rm -f %{buildroot}%{_prefix}/lib/lib*.so*
+rm -f %{buildroot}%{_prefix}/lib/lib*.a
 %else
 %ifarch sparcv9 ppc
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so*
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a
+rm -f %{buildroot}%{_prefix}/lib64/lib*.so*
+rm -f %{buildroot}%{_prefix}/lib64/lib*.a
 %endif
 %endif
 
 %if %{build_java}
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
-	 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
-	  $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \
-	  $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+mkdir -p %{buildroot}%{_prefix}/share/java/gcj-endorsed \
+	 %{buildroot}%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+chmod 755 %{buildroot}%{_prefix}/share/java/gcj-endorsed \
+	  %{buildroot}%{_prefix}/%{_lib}/gcj-%{version} \
+	  %{buildroot}%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+touch %{buildroot}%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
 %endif
 
-install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
-echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
-chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+install -m644 %{SOURCE3} %{buildroot}%{_mandir}/man1/protoize.1
+echo '.so man1/protoize.1' > %{buildroot}%{_mandir}/man1/unprotoize.1
+chmod 644 %{buildroot}%{_mandir}/man1/unprotoize.1
+
+%check
+cd obj-%{gcc_target_platform}
+
+# run the tests.
+make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
+echo ====================TESTING=========================
+( LC_ALL=C ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
+echo ====================TESTING END=====================
+mkdir testlogs-%{_target_platform}-%{version}-%{release}
+for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do
+  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
+done
+tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
+  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
+rm -rf testlogs-%{_target_platform}-%{version}-%{release}
 
 %clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
 %post
 /sbin/install-info \
@@ -1164,7 +1210,7 @@ fi
 /sbin/install-info \
   --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
 /sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
+  --info-dir=%{_infodir} %{_infodir}/gnat_ugn.info.gz || :
 /sbin/install-info \
   --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
 
@@ -1173,7 +1219,7 @@ if [ $1 = 0 ]; then
   /sbin/install-info --delete \
     --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
   /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
+    --info-dir=%{_infodir} %{_infodir}/gnat_ugn.info.gz || :
   /sbin/install-info --delete \
     --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
 fi
@@ -1234,7 +1280,7 @@ fi
 %postun -n libmudflap -p /sbin/ldconfig
 
 %files -f %{name}.lang
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/bin/cc
 %{_prefix}/bin/c89
 %{_prefix}/bin/c99
@@ -1357,7 +1403,7 @@ fi
 %doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
 
 %files -n cpp -f cpplib.lang
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 /lib/cpp
 %{_prefix}/bin/cpp
 %{_mandir}/man1/cpp.1*
@@ -1368,14 +1414,14 @@ fi
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
 
 %files -n libgcc
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 /%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
 /%{_lib}/libgcc_s.so.1
 %{_prefix}/sbin/libgcc_post_upgrade
 %doc gcc/COPYING.LIB
 
 %files c++
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/bin/%{gcc_target_platform}-*++
 %{_prefix}/bin/g++
 %{_prefix}/bin/c++
@@ -1409,11 +1455,11 @@ fi
 %doc rpm.doc/changelogs/gcc/cp/ChangeLog*
 
 %files -n libstdc++
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libstdc++.so.6*
 
 %files -n libstdc++-devel
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %dir %{_prefix}/include/c++
 %dir %{_prefix}/include/c++/%{gcc_version}
 %{_prefix}/include/c++/%{gcc_version}/[^gjos]*
@@ -1437,10 +1483,17 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
 %endif
-%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/doc/html/
+%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README*
 
-%files objc
+%if %{build_libstdcxx_docs}
+%files -n libstdc++-docs
 %defattr(-,root,root)
+%{_mandir}/man3/*
+%doc rpm.doc/libstdc++-v3/html
+%endif
+
+%files objc
+%defattr(-,root,root,-)
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
@@ -1466,18 +1519,18 @@ fi
 %doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog*
 
 %files objc++
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %dir %{_prefix}/libexec/gcc
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
 
 %files -n libobjc
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libobjc.so.2*
 
 %files gfortran
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/bin/gfortran
 %{_prefix}/bin/f95
 %{_mandir}/man1/gfortran.1*
@@ -1512,12 +1565,12 @@ fi
 %doc rpm.doc/gfortran/*
 
 %files -n libgfortran
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libgfortran.so.3*
 
 %if %{build_java}
 %files java
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/bin/gcj
 %{_prefix}/bin/gjavah
 %{_prefix}/bin/gcjh
@@ -1559,7 +1612,7 @@ fi
 %doc rpm.doc/changelogs/gcc/java/ChangeLog*
 
 %files -n libgcj
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/bin/jv-convert
 %{_prefix}/bin/gij
 %{_prefix}/bin/gjar
@@ -1620,7 +1673,7 @@ fi
 %endif
 
 %files -n libgcj-devel
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
@@ -1653,7 +1706,7 @@ fi
 %doc rpm.doc/libjava/*
 
 %files -n libgcj-src
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %dir %{_prefix}/share/java
 %{_prefix}/share/java/src*.zip
 %{_prefix}/share/java/libgcj-tools-%{version}.jar
@@ -1661,7 +1714,7 @@ fi
 
 %if %{build_ada}
 %files gnat
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/bin/gnat*
 %{_infodir}/gnat*
 %dir %{_prefix}/lib/gcc
@@ -1688,12 +1741,12 @@ fi
 %doc rpm.doc/changelogs/gcc/ada/ChangeLog*
 
 %files -n libgnat
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libgnat-*.so
 %{_prefix}/%{_lib}/libgnarl-*.so
 
 %files -n libgnat-devel
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
@@ -1714,18 +1767,18 @@ fi
 %endif
 
 %files -n libgomp
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libgomp.so.1*
 %{_infodir}/libgomp.info*
 %doc rpm.doc/changelogs/libgomp/ChangeLog*
 
 %files -n libmudflap
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %{_prefix}/%{_lib}/libmudflap.so.0*
 %{_prefix}/%{_lib}/libmudflapth.so.0*
 
 %files -n libmudflap-devel
-%defattr(-,root,root)
+%defattr(-,root,root,-)
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
@@ -1750,6 +1803,68 @@ fi
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Thu May 14 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-5
+- update from gcc-4_4-branch
+  - PRs c++/17395, c/39983, fortran/38863, fortran/38956, fortran/39879,
+	fortran/40018, libstdc++/39546, libstdc++/40038, middle-end/39986,
+	middle-end/40021, middle-end/40023, middle-end/40043,
+	middle-end/40057, middle-end/40080, target/37179,
+	tree-optimization/40062, tree-optimization/40074
+- fix Fortran FMT= character array arguments (#492209, PR fortran/39865)
+- allow putting breakpoints on Fortran END{SUBROUTINE,FUNCTION}
+  (PR fortran/34153)
+- incorporate changes suggested in gcc44 package review (#498911)
+
+* Wed May  6 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-4
+- update from gcc-4_4-branch
+  - PRs c++/40013, libgcj/39899, libstdc++/39868, libstdc++/39880,
+	libstdc++/39881, libstdc++/39882, libstdc++/39909, middle-end/39937,
+	rtl-optimization/39914, target/39565, testsuite/39769,
+	testsuite/39776, testsuite/39790, testsuite/39807,
+	tree-optimization/39941
+  - fix phiprop tuplification (#496400, PR tree-optimization/40022)
+- don't add artificial default case label if switch labels already
+  cover the whole range (PR middle-end/39666)
+- fix DSE with block reads (PR middle-end/40035)
+- fix debuginfo for C++ typedef struct {...} T (PR debug/35463)
+- remove some unnecessary padding on x86_64/i386 added for >= 4 control
+  flow insns in a 16-byte block (PR target/39942)
+- don't create invalid DWARF location lists containing DW_OP_reg*
+  followed by DW_OP_deref*, instead use DW_OP_breg* 0 (#481675)
+- add libstdc++-docs subpackage, move html manual to it, add doxygen
+  generated html and man pages
+
+* Mon Apr 27 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-3
+- update from gcc-4_4-branch
+  - PR bootstrap/39739
+  - fix -Wunused-value (#497545, PR c/39889)
+- backport further power7-meissner branch changes (#497816)
+- fix reg-stack ICE on SPEC2k6 453.povray with -m32 -O3 -msse3
+  (PR target/39856)
+- fix x86_64 ICE on passing structure with flexible array member
+  (PR target/39903)
+
+* Fri Apr 24 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-2
+- update from gcc-4_4-branch
+  - PR c++/38228
+- fix folding of cond expr with comparison to MAX/MIN (PR middle-end/39867)
+- fix up gcc-gnat install-info arguments (#452783)
+
+* Thu Apr 23 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-1
+- update from gcc-4_4-branch
+  - GCC 4.4.0 release
+  - PRs libstdc++/39802, c++/39639, c/39855, rtl-optimization/39762,
+	testsuite/39781, tree-optimization/39824
+- fix up DSE (PR rtl-optimization/39794)
+- debuginfo fixes for VLA and nested/contained functions (#459374)
+- improve -ftree-switch-conversion optimization if the constant is the
+  same in all cases
+
+* Mon Apr 20 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-0.35
+- update from gcc-4_4-branch
+  - PRs middle-end/39804, target/39678, target/39767, tree-optimization/39675,
+	tree-optimization/39764
+
 * Tue Apr 14 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-0.34
 - update from gcc-4_4-branch
   - GCC 4.4.0-rc1
@@ -1787,7 +1902,7 @@ fi
 	tree-optimization/39557
 - emit debuginfo for block local externs in C (PR debug/39563)
 - fix -maltivec conditional vector macro (PR target/39558)
-- teach fwprop to handle asm (PR rtl-optimization/39543)
+- teach fwprop to handle asm (PR inline-asm/39543)
 
 * Tue Mar 24 2009 Jakub Jelinek <jakub at redhat.com> 4.4.0-0.29
 - update from trunk
@@ -1824,7 +1939,7 @@ fi
 - fix memcmp builtin asm redirection (PR middle-end/39443)
 - fix sparcv9 profiledbootstrap (PR bootstrap/39454)
 
-* Thu Mar 12 2009 Dennis Gilmore <dennis at ausil.us> 
+* Thu Mar 12 2009 Dennis Gilmore <dennis at ausil.us>
 - don't build with graphite support on sparc arches
   - still missing some deps
 

gcc44-atom.patch:

Index: gcc44-atom.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc44-atom.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- gcc44-atom.patch	4 Mar 2009 13:55:08 -0000	1.1
+++ gcc44-atom.patch	14 May 2009 08:52:30 -0000	1.2
@@ -2409,7 +2409,7 @@
      | m_NOCONA | m_CORE2 | m_GENERIC;
  
  static enum stringop_alg stringop_alg = no_stringop;
-@@ -1952,7 +2038,8 @@ static const struct ptt processor_target
+@@ -1953,7 +2039,8 @@ static const struct ptt processor_target
    {&core2_cost, 16, 10, 16, 10, 16},
    {&generic32_cost, 16, 7, 16, 7, 16},
    {&generic64_cost, 16, 10, 16, 10, 16},
@@ -2419,7 +2419,7 @@
  };
  
  static const char *const cpu_names[TARGET_CPU_DEFAULT_max] =
-@@ -1970,6 +2057,7 @@ static const char *const cpu_names[TARGE
+@@ -1971,6 +2058,7 @@ static const char *const cpu_names[TARGE
    "prescott",
    "nocona",
    "core2",
@@ -2427,7 +2427,7 @@
    "geode",
    "k6",
    "k6-2",
-@@ -2528,6 +2616,9 @@ override_options (bool main_args_p)
+@@ -2529,6 +2617,9 @@ override_options (bool main_args_p)
        {"core2", PROCESSOR_CORE2, CPU_CORE2,
  	PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
  	| PTA_SSSE3 | PTA_CX16},
@@ -2437,7 +2437,7 @@
        {"geode", PROCESSOR_GEODE, CPU_GEODE,
  	PTA_MMX | PTA_3DNOW | PTA_3DNOW_A |PTA_PREFETCH_SSE},
        {"k6", PROCESSOR_K6, CPU_K6, PTA_MMX},
-@@ -12866,6 +12957,263 @@ ix86_expand_unary_operator (enum rtx_cod
+@@ -12903,6 +12994,263 @@ ix86_expand_unary_operator (enum rtx_cod
      emit_move_insn (operands[0], dst);
  }
  
@@ -2701,7 +2701,7 @@
  /* Return TRUE or FALSE depending on whether the unary operator meets the
     appropriate constraints.  */
  
-@@ -18985,6 +19333,7 @@ ix86_issue_rate (void)
+@@ -19022,6 +19370,7 @@ ix86_issue_rate (void)
    switch (ix86_tune)
      {
      case PROCESSOR_PENTIUM:
@@ -2709,7 +2709,7 @@
      case PROCESSOR_K6:
        return 2;
  
-@@ -19051,41 +19400,21 @@ ix86_flags_dependent (rtx insn, rtx dep_
+@@ -19088,41 +19437,21 @@ ix86_flags_dependent (rtx insn, rtx dep_
    return 1;
  }
  
@@ -2764,7 +2764,7 @@
  }
  
  static int
-@@ -19113,8 +19442,19 @@ ix86_adjust_cost (rtx insn, rtx link, rt
+@@ -19150,8 +19479,19 @@ ix86_adjust_cost (rtx insn, rtx link, rt
      {
      case PROCESSOR_PENTIUM:
        /* Address Generation Interlock adds a cycle of latency.  */
@@ -2786,7 +2786,7 @@
  
        /* ??? Compares pair with jump/setcc.  */
        if (ix86_flags_dependent (insn, dep_insn, insn_type))
-@@ -19123,7 +19463,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
+@@ -19160,7 +19500,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
        /* Floating point stores require value to be ready one cycle earlier.  */
        if (insn_type == TYPE_FMOV
  	  && get_attr_memory (insn) == MEMORY_STORE
@@ -2795,7 +2795,7 @@
  	cost += 1;
        break;
  
-@@ -19146,7 +19486,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
+@@ -19183,7 +19523,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
  	 in parallel with previous instruction in case
  	 previous instruction is not needed to compute the address.  */
        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
@@ -2804,7 +2804,7 @@
  	{
  	  /* Claim moves to take one cycle, as core can issue one load
  	     at time and the next load can start cycle later.  */
-@@ -19175,7 +19515,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
+@@ -19212,7 +19552,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
  	 in parallel with previous instruction in case
  	 previous instruction is not needed to compute the address.  */
        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
@@ -2813,7 +2813,7 @@
  	{
  	  /* Claim moves to take one cycle, as core can issue one load
  	     at time and the next load can start cycle later.  */
-@@ -19192,6 +19532,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
+@@ -19229,6 +19569,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
      case PROCESSOR_ATHLON:
      case PROCESSOR_K8:
      case PROCESSOR_AMDFAM10:
@@ -2821,7 +2821,7 @@
      case PROCESSOR_GENERIC32:
      case PROCESSOR_GENERIC64:
        memory = get_attr_memory (insn);
-@@ -19200,7 +19541,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
+@@ -19237,7 +19578,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
  	 in parallel with previous instruction in case
  	 previous instruction is not needed to compute the address.  */
        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)

gcc44-rh330771.patch:

Index: gcc44-rh330771.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/gcc44-rh330771.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- gcc44-rh330771.patch	16 Jan 2009 18:34:38 -0000	1.1
+++ gcc44-rh330771.patch	14 May 2009 08:52:31 -0000	1.2
@@ -3,20 +3,20 @@
 	* Makefile.am (libgcj_tools_la_LIBADD): Add.
 	* Makefile.in: Regenerated.
 
---- libjava/Makefile.am.jj	2007-03-17 09:20:30.000000000 +0100
-+++ libjava/Makefile.am	2007-10-16 15:45:14.000000000 +0200
-@@ -277,6 +277,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
- 
- libgcj_tools_la_SOURCES = classpath/tools/tools.zip
- libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes  -fsource-filename=$(here)/classpath/tools/all-classes.lst
+--- libjava/Makefile.am.jj	2009-05-06 08:14:50.000000000 +0200
++++ libjava/Makefile.am	2009-05-06 10:26:43.000000000 +0200
+@@ -314,6 +314,8 @@ libgcj_tools_la_SOURCES = classpath/tool
+ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \
+  -fno-bootstrap-classes -fno-indirect-classes \
+  -fsource-filename=$(here)/classpath/tools/all-classes.lst
 +## See jv_convert_LDADD.
 +libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
  libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
   -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
   $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
---- libjava/Makefile.in.jj	2007-07-04 21:11:11.000000000 +0200
-+++ libjava/Makefile.in	2007-10-16 15:56:07.000000000 +0200
-@@ -153,7 +153,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
+--- libjava/Makefile.in.jj	2009-05-06 08:14:49.000000000 +0200
++++ libjava/Makefile.in	2009-05-06 10:27:18.000000000 +0200
+@@ -160,7 +160,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
  am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
  lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
  @XLIB_AWT_TRUE at am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
@@ -24,10 +24,10 @@
  am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
  libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
  @INTERPRETER_TRUE at am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \
-@@ -941,6 +940,7 @@ libgcj_la_LINK = $(LIBLINK)
- EXTRA_libgcj_la_SOURCES = java/lang/Object.java
- libgcj_tools_la_SOURCES = classpath/tools/tools.zip
- libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes  -fsource-filename=$(here)/classpath/tools/all-classes.lst
+@@ -1041,6 +1040,7 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS
+  -fno-bootstrap-classes -fno-indirect-classes \
+  -fsource-filename=$(here)/classpath/tools/all-classes.lst
+ 
 +libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
  libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
   -version-info `grep -v '^\#' $(srcdir)/libtool-version` \


Index: import.log
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/import.log,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- import.log	16 Jan 2009 18:34:38 -0000	1.1
+++ import.log	14 May 2009 08:52:31 -0000	1.2
@@ -1 +1,2 @@
 gcc-4_4_0-0_3:HEAD:gcc-4.4.0-0.3.src.rpm:1232130841
+gcc-4_4_0-5:HEAD:gcc-4.4.0-5.src.rpm:1242291126


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/gcc/devel/sources,v
retrieving revision 1.271
retrieving revision 1.272
diff -u -p -r1.271 -r1.272
--- sources	14 Apr 2009 15:46:16 -0000	1.271
+++ sources	14 May 2009 08:52:31 -0000	1.272
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-004cfd0a49b225032953517a827da968  gcc-4.4.0-20090414.tar.bz2
+271340a1883a595c5c8b4fe1007389fa  gcc-4.4.0-20090514.tar.bz2


--- gcc44-libjava-i386.patch DELETED ---


--- gcc44-pr39543.patch DELETED ---


--- gcc44-pr39763.patch DELETED ---


--- generate-cacerts.pl DELETED ---




More information about the scm-commits mailing list