rpms/gcc/devel gcc41-amdfam10.patch, NONE, 1.1 gcc41-rh227983.patch, NONE, 1.1 gcc41.spec, 1.141, 1.142 gcc41-i386-tune-core2.patch, 1.1, NONE gcc41-ssse3.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Sat Feb 10 19:16:46 UTC 2007


Author: jakub

Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv5496

Modified Files:
	gcc41.spec 
Added Files:
	gcc41-amdfam10.patch gcc41-rh227983.patch 
Removed Files:
	gcc41-i386-tune-core2.patch gcc41-ssse3.patch 
Log Message:
4.1.1-56

gcc41-amdfam10.patch:
 config.gcc                                |   12 
 config/i386/ammintrin.h                   |   73 +++++
 config/i386/athlon.md                     |  378 +++++++++++++++++++++++---
 config/i386/emmintrin.h                   |    6 
 config/i386/i386.c                        |  422 +++++++++++++++++++++++++++---
 config/i386/i386.h                        |   17 +
 config/i386/i386.md                       |  334 ++++++++++++++++++++---
 config/i386/i386.opt                      |   16 +
 config/i386/pmmintrin.h                   |    6 
 config/i386/sse.md                        |  129 ++++++++-
 config/i386/tmmintrin.h                   |    6 
 config/i386/xmmintrin.h                   |    4 
 doc/extend.texi                           |   17 +
 doc/invoke.texi                           |   11 
 testsuite/gcc.dg/i386-cpuid.h             |  115 +++++++-
 testsuite/gcc.target/i386/sse4a-extract.c |  100 +++++++
 testsuite/gcc.target/i386/sse4a-insert.c  |  110 +++++++
 testsuite/gcc.target/i386/sse4a-montsd.c  |   64 ++++
 testsuite/gcc.target/i386/sse4a-montss.c  |   64 ++++
 19 files changed, 1733 insertions(+), 151 deletions(-)

--- NEW FILE gcc41-amdfam10.patch ---
2007-02-08  Harsha Jagasia  <harsha.jagasia at amd.com>

	* config/i386/xmmintrin.h: Make inclusion of emmintrin.h
	conditional to __SSE2__.
	* config/i386/emmintrin.h: Generate #error if __SSE2__ is not
	defined.
	* config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
	defined.
	* config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
	defined.

2007-02-05  Harsha Jagasia  <harsha.jagasia at amd.com>

	* config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
	athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
	athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
	athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
	athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
	athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
	athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
	athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.

	* config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
	cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
	swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
	fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
	x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
	floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
	floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
	mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
	umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
	umuldi3_highpart_rex64, umulsi3_highpart_insn,
	umulsi3_highpart_zext, smuldi3_highpart_rex64,
	smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
	x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
	sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
	sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
	sqrtextenddfxf2_i387): Added amdfam10_decode.
	
	* config/i386/athlon.md (athlon_idirect_amdfam10,
	athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
	athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
	athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
	athlon_ivector_store_amdfam10): New define_insn_reservation.
	(athlon_idirect_loadmov, athlon_idirect_movstore): Added
	amdfam10.

	* config/i386/athlon.md (athlon_call_amdfam10,
	athlon_pop_amdfam10, athlon_lea_amdfam10): New
	define_insn_reservation.
	(athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
	athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
	athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.

	* config/i386/athlon.md (athlon_sseld_amdfam10,
	athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
	athlon_mmxssest_short_amdfam10): New define_insn_reservation.

	* config/i386/athlon.md (athlon_sseins_amdfam10): New
	define_insn_reservation.
	* config/i386/i386.md (sseins): Added sseins to define_attr type
	and define_attr unit.
	* config/i386/sse.md: Set type attribute to sseins for insertq
	and insertqi.

	* config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
	ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
	ssecomi_load_amdfam10, ssecomi_amdfam10,
	sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
	define_insn_reservation.
	(ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.

	* config/i386/athlon.md (cvtss2sd_load_amdfam10,
	cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
	cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
	cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
	cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
	cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New 
	define_insn_reservation.

	* config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
	cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
	cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
	cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
	cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.

	* config/i386/athlon.md (athlon_ssedivvector_amdfam10,
	athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
	athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
	(athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
	athlon_ssemul_load_k8): Added amdfam10.

	* config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
	(x86_sse_unaligned_move_optimal): New variable.
	
	* config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for  
	m_AMDFAM10.
	(ix86_expand_vector_move_misalign): Add code to generate movupd/movups
	for unaligned vector SSE double/single precision loads for AMDFAM10.

	* config/i386/i386.h (TARGET_AMDFAM10): New macro.
	(TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
	Define TARGET_CPU_DEFAULT_amdfam10.
	(TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
	(processor_type): Add PROCESSOR_AMDFAM10.	
	
	* config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
	processor_type in config/i386/i386.h.
	Enable imul peepholes for TARGET_AMDFAM10.
	
	* config.gcc: Add support for --with-cpu option for amdfam10.
	
	* config/i386/i386.c (amdfam10_cost): New variable.
	(m_AMDFAM10): New macro.
	(m_ATHLON_K8_AMDFAM10): New macro.
	(x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
	x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
	x86_promote_QImode, x86_integer_DFmode_moves,
	x86_partial_reg_dependency, x86_memory_mismatch_stall, 
	x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
	x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
	x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
	x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
	Enable/disable for amdfam10.
	(override_options): Add amdfam10_cost to processor_target_table.
	Set up PROCESSOR_AMDFAM10 for amdfam10 entry in 
	processor_alias_table.
	(ix86_issue_rate): Add PROCESSOR_AMDFAM10.
	(ix86_adjust_cost): Add code for amdfam10.

	* config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
	instruction set feature flag. Add new (-mpopcnt) flag for popcnt 
	instruction. Add new SSE4A (-msse4a) instruction set feature flag.
	* config/i386/i386.h: Add builtin definition for SSE4A.
	* config/i386/i386.md: Add support for ABM instructions 
	(popcnt and lzcnt).
	* config/i386/sse.md: Add support for SSE4A instructions
	(movntss, movntsd, extrq, insertq).
	* config/i386/i386.c: Add support for ABM and SSE4A builtins.
	Add -march=amdfam10 flag.
	* config/i386/ammintrin.h: Add support for SSE4A intrinsics.
	* doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
	and amdfam10.
	* doc/extend.texi: Add documentation for SSE4A builtins.

2007-02-05  Dwarakanath Rajagopal  <dwarak.rajagopal at amd.com>

	* gcc.dg/i386-cpuid.h: Test whether SSE4A is supported
	for running tests.
	* gcc.target/i386/sse4a-extract.c: New test.
	* gcc.target/i386/sse4a-insert.c: New test.
	* gcc.target/i386/sse4a-montsd.c: New test.
	* gcc.target/i386/sse4a-montss.c: New test.

2006-12-15  H.J. Lu  <hongjiu.lu at intel.com>

	* gcc.dg/i386-cpuid.h (bit_SSSE3): New.

2006-11-30  H.J. Lu  <hongjiu.lu at intel.com>

	* gcc.dg/i386-cpuid.h (bit_SSE3): New.
	(i386_get_cpuid): New function.
	(i386_cpuid_ecx): Likewise.
	(i386_cpuid_edx): Likewise.
	(i386_cpuid): Updated to call i386_cpuid_edx.

--- gcc/doc/extend.texi.jj	2007-02-09 16:18:25.000000000 +0100
+++ gcc/doc/extend.texi	2007-02-09 21:26:06.000000000 +0100
@@ -6931,6 +6931,23 @@ v4si __builtin_ia32_pabsd128 (v4si)
 v8hi __builtin_ia32_pabsw128 (v8hi)
 @end smallexample
 
+The following built-in functions are available when @option{-msse4a} is used.
+
+ at smallexample
+void             _mm_stream_sd (double*,__m128d);
+Generates the @code{movntsd} machine instruction.
+void             _mm_stream_ss (float*,__m128);
+Generates the @code{movntss} machine instruction.
+__m128i          _mm_extract_si64 (__m128i, __m128i);
+Generates the @code{extrq} machine instruction with only SSE register operands.
+__m128i          _mm_extracti_si64 (__m128i, int, int);
+Generates the @code{extrq} machine instruction with SSE register and immediate operands.
+__m128i          _mm_insert_si64 (__m128i, __m128i);
+Generates the @code{insertq} machine instruction with only SSE register operands.
+__m128i          _mm_inserti_si64 (__m128i, __m128i, int, int);
+Generates the @code{insertq} machine instruction with SSE register and immediate operands.
+ at end smallexample
+
 The following built-in functions are available when @option{-m3dnow} is used.
 All of them generate the machine instruction that is part of the name.
 
--- gcc/doc/invoke.texi.jj	2007-02-09 16:18:25.000000000 +0100
+++ gcc/doc/invoke.texi	2007-02-09 21:56:44.000000000 +0100
@@ -522,7 +522,7 @@ Objective-C and Objective-C++ Dialects}.
 -mno-fp-ret-in-387  -msoft-float  -msvr3-shlib @gol
 -mno-wide-multiply  -mrtd  -malign-double @gol
 -mpreferred-stack-boundary=@var{num} @gol
--mmmx  -msse  -msse2 -msse3 -mssse3 -m3dnow @gol
[...3215 lines suppressed...]
+    case PROCESSOR_AMDFAM10:
     case PROCESSOR_GENERIC32:
     case PROCESSOR_GENERIC64:
       memory = get_attr_memory (insn);
@@ -14370,6 +14572,14 @@ enum ix86_builtins
   IX86_BUILTIN_PABSW128,
   IX86_BUILTIN_PABSD128,
 
+  /* AMDFAM10 - SSE4A New Instructions.  */
+  IX86_BUILTIN_MOVNTSD,
+  IX86_BUILTIN_MOVNTSS,
+  IX86_BUILTIN_EXTRQI,
+  IX86_BUILTIN_EXTRQ,
+  IX86_BUILTIN_INSERTQI,
+  IX86_BUILTIN_INSERTQ,
+
   IX86_BUILTIN_VEC_INIT_V2SI,
   IX86_BUILTIN_VEC_INIT_V4HI,
   IX86_BUILTIN_VEC_INIT_V8QI,
@@ -15102,6 +15312,18 @@ ix86_init_mmx_sse_builtins (void)
     = build_function_type_list (void_type_node,
 			        pchar_type_node, V16QI_type_node, NULL_TREE);
 
+  tree v2di_ftype_v2di_unsigned_unsigned
+    = build_function_type_list (V2DI_type_node, V2DI_type_node,
+                                unsigned_type_node, unsigned_type_node,
+                                NULL_TREE);
+  tree v2di_ftype_v2di_v2di_unsigned_unsigned
+    = build_function_type_list (V2DI_type_node, V2DI_type_node, V2DI_type_node,
+                                unsigned_type_node, unsigned_type_node,
+                                NULL_TREE);
+  tree v2di_ftype_v2di_v16qi
+    = build_function_type_list (V2DI_type_node, V2DI_type_node, V16QI_type_node,
+                                NULL_TREE);
+
   tree float80_type;
   tree float128_type;
   tree ftype;
@@ -15435,6 +15657,20 @@ ix86_init_mmx_sse_builtins (void)
   def_builtin (MASK_SSSE3, "__builtin_ia32_palignr", di_ftype_di_di_int,
 	       IX86_BUILTIN_PALIGNR);
 
+  /* AMDFAM10 SSE4A New built-ins  */
+  def_builtin (MASK_SSE4A, "__builtin_ia32_movntsd", 
+               void_ftype_pdouble_v2df, IX86_BUILTIN_MOVNTSD);
+  def_builtin (MASK_SSE4A, "__builtin_ia32_movntss", 
+               void_ftype_pfloat_v4sf, IX86_BUILTIN_MOVNTSS);
+  def_builtin (MASK_SSE4A, "__builtin_ia32_extrqi", 
+               v2di_ftype_v2di_unsigned_unsigned, IX86_BUILTIN_EXTRQI);
+  def_builtin (MASK_SSE4A, "__builtin_ia32_extrq",
+               v2di_ftype_v2di_v16qi,  IX86_BUILTIN_EXTRQ);
+  def_builtin (MASK_SSE4A, "__builtin_ia32_insertqi",
+               v2di_ftype_v2di_v2di_unsigned_unsigned, IX86_BUILTIN_INSERTQI);
+  def_builtin (MASK_SSE4A, "__builtin_ia32_insertq",
+               v2di_ftype_v2di_v2di, IX86_BUILTIN_INSERTQ);
+
   /* Access to the vec_init patterns.  */
   ftype = build_function_type_list (V2SI_type_node, integer_type_node,
 				    integer_type_node, NULL_TREE);
@@ -15923,9 +16159,9 @@ ix86_expand_builtin (tree exp, rtx targe
   enum insn_code icode;
   tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
   tree arglist = TREE_OPERAND (exp, 1);
-  tree arg0, arg1, arg2;
-  rtx op0, op1, op2, pat;
-  enum machine_mode tmode, mode0, mode1, mode2, mode3;
+  tree arg0, arg1, arg2, arg3;
+  rtx op0, op1, op2, op3, pat;
+  enum machine_mode tmode, mode0, mode1, mode2, mode3, mode4;
   unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
 
   switch (fcode)
@@ -16340,6 +16576,114 @@ ix86_expand_builtin (tree exp, rtx targe
       emit_insn (pat);
       return target;
 
+    case IX86_BUILTIN_MOVNTSD:
+      return ix86_expand_store_builtin (CODE_FOR_sse4a_vmmovntv2df, arglist);
+
+    case IX86_BUILTIN_MOVNTSS:
+      return ix86_expand_store_builtin (CODE_FOR_sse4a_vmmovntv4sf, arglist);
+
+    case IX86_BUILTIN_INSERTQ:
+    case IX86_BUILTIN_EXTRQ:
+      icode = (fcode == IX86_BUILTIN_EXTRQ
+               ? CODE_FOR_sse4a_extrq
+               : CODE_FOR_sse4a_insertq);
+      arg0 = TREE_VALUE (arglist);
+      arg1 = TREE_VALUE (TREE_CHAIN (arglist));
+      op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
+      op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
+      tmode = insn_data[icode].operand[0].mode;
+      mode1 = insn_data[icode].operand[1].mode;
+      mode2 = insn_data[icode].operand[2].mode;
+      if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
+        op0 = copy_to_mode_reg (mode1, op0);
+      if (! (*insn_data[icode].operand[2].predicate) (op1, mode2))
+        op1 = copy_to_mode_reg (mode2, op1);
+      if (optimize || target == 0
+          || GET_MODE (target) != tmode
+          || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
+        target = gen_reg_rtx (tmode);
+      pat = GEN_FCN (icode) (target, op0, op1);
+      if (! pat)
+        return NULL_RTX;
+      emit_insn (pat);
+      return target;
+
+    case IX86_BUILTIN_EXTRQI:
+      icode = CODE_FOR_sse4a_extrqi;
+      arg0 = TREE_VALUE (arglist);
+      arg1 = TREE_VALUE (TREE_CHAIN (arglist));
+      arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
+      op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
+      op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
+      op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
+      tmode = insn_data[icode].operand[0].mode;
+      mode1 = insn_data[icode].operand[1].mode;
+      mode2 = insn_data[icode].operand[2].mode;
+      mode3 = insn_data[icode].operand[3].mode;
+      if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
+        op0 = copy_to_mode_reg (mode1, op0);
+      if (! (*insn_data[icode].operand[2].predicate) (op1, mode2))
+        {
+          error ("index mask must be an immediate");
+          return gen_reg_rtx (tmode);
+        }
+      if (! (*insn_data[icode].operand[3].predicate) (op2, mode3))
+        {
+          error ("length mask must be an immediate");
+          return gen_reg_rtx (tmode);
+        }
+      if (optimize || target == 0
+          || GET_MODE (target) != tmode
+          || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
+        target = gen_reg_rtx (tmode);
+      pat = GEN_FCN (icode) (target, op0, op1, op2);
+      if (! pat)
+        return NULL_RTX;
+      emit_insn (pat);
+      return target;
+
+    case IX86_BUILTIN_INSERTQI:
+      icode = CODE_FOR_sse4a_insertqi;
+      arg0 = TREE_VALUE (arglist);
+      arg1 = TREE_VALUE (TREE_CHAIN (arglist));
+      arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
+      arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist))));
+      op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
+      op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0);
+      op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0);
+      op3 = expand_expr (arg3, NULL_RTX, VOIDmode, 0);
+      tmode = insn_data[icode].operand[0].mode;
+      mode1 = insn_data[icode].operand[1].mode;
+      mode2 = insn_data[icode].operand[2].mode;
+      mode3 = insn_data[icode].operand[3].mode;
+      mode4 = insn_data[icode].operand[4].mode;
+
+      if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
+        op0 = copy_to_mode_reg (mode1, op0);
+
+      if (! (*insn_data[icode].operand[2].predicate) (op1, mode2))
+        op1 = copy_to_mode_reg (mode2, op1);
+
+      if (! (*insn_data[icode].operand[3].predicate) (op2, mode3))
+        {
+          error ("index mask must be an immediate");
+          return gen_reg_rtx (tmode);
+        }
+      if (! (*insn_data[icode].operand[4].predicate) (op3, mode4))
+        {
+          error ("length mask must be an immediate");
+          return gen_reg_rtx (tmode);
+        }
+      if (optimize || target == 0
+          || GET_MODE (target) != tmode
+          || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
+        target = gen_reg_rtx (tmode);
+      pat = GEN_FCN (icode) (target, op0, op1, op2, op3);
+      if (! pat)
+        return NULL_RTX;
+      emit_insn (pat);
+      return target;
+
     case IX86_BUILTIN_VEC_INIT_V2SI:
     case IX86_BUILTIN_VEC_INIT_V4HI:
     case IX86_BUILTIN_VEC_INIT_V8QI:
--- gcc/config/i386/xmmintrin.h.jj	2006-10-05 00:29:29.000000000 +0200
+++ gcc/config/i386/xmmintrin.h	2007-02-09 21:26:06.000000000 +0100
@@ -1241,7 +1241,9 @@ do {									\
 } while (0)
 
 /* For backward source compatibility.  */
-#include <emmintrin.h>
+#ifdef __SSE2__
+# include <emmintrin.h>
+#endif
 
 #endif /* __SSE__ */
 #endif /* _XMMINTRIN_H_INCLUDED */

gcc41-rh227983.patch:
 java/util/TimeZone.java |  256 +++++++++++++++++++++++++-----------------------
 scripts/timezones.pl    |   35 ++++++
 2 files changed, 168 insertions(+), 123 deletions(-)

--- NEW FILE gcc41-rh227983.patch ---
2007-02-09  Jakub Jelinek  <jakub at redhat.com>

	PR 23566
	* scripts/timezones.pl: Parse each file in 2 passes, in one parse
	just Rule lines, in the other everything else.  Pass 0 instead of
	$savings as second argument to parseRule when parsing the start
	rule.
	* java/util/TimeZone.java (timezones): Regenerate from tzdata2007a.

--- libjava/classpath/scripts/timezones.pl.jj	2007-01-17 16:11:04.000000000 +0100
+++ libjava/classpath/scripts/timezones.pl	2007-02-09 11:00:54.000000000 +0100
@@ -213,6 +213,10 @@ foreach $file (@TIMEZONEFILES) {
 #    print STDERR "$file\n";
     open INPUT, "$TIMEZONEDIR/$file" or die "Can't open $TIMEZONEDIR/$file";
     my $in_time_zone = 0;
+    # As Zone can reference even Rule which is defined after the
+    # current line, parse the file in 2 passes.
+
+    # First pass, parse just Rule lines:
     while (<INPUT>) {
 	$_ = $1 if /^([^\#]*)\#/;
 	next if /^\s*$/;
@@ -239,6 +243,35 @@ foreach $file (@TIMEZONEFILES) {
 	    } elsif ($entries[0] eq "Zone") {
 		$in_time_zone = 1;
 		shift @entries;
+		shift @entries;
+	    } elsif (!(($entries[0] eq "Remove") || ($entries[0] eq "Link"))) {
+		die "Unknown command: $_";
+	    }
+	}
+	if ($in_time_zone) {
+	    die "early end of Zone: $_" if ($entries[0] =~ /^[A-Za-z]+/);
+	    if (@entries <= 3) {
+		$in_time_zone = 0;
+	    }
+	}
+    }
+    close INPUT;
+    open INPUT, "$TIMEZONEDIR/$file" or die "Can't open $TIMEZONEDIR/$file";
+    $in_time_zone = 0;
+
+    # Second pass, parse all but Rule lines.
+    while (<INPUT>) {
+	$_ = $1 if /^([^\#]*)\#/;
+	next if /^\s*$/;
+	my @entries = split;
+#	$, = ","; print "'$_' -> [", at entries,"]\n";
+	if (!$in_time_zone) {
+	    if ($entries[0] eq "Rule") {
+		# Do nothing, this was already handled in the
+		# first pass.
+	    } elsif ($entries[0] eq "Zone") {
+		$in_time_zone = 1;
+		shift @entries;
 		$timezonename = shift @entries;
 	    } elsif ($entries[0] eq "Remove") {
 		my $found = 0;
@@ -295,7 +328,7 @@ foreach $file (@TIMEZONEFILES) {
 			my $savings = $rule->[2];
 			my $endrule = parseRule($rawoffset, $savings, 
 						$rule->[0]);
-			my $startrule = parseRule($rawoffset, $savings, 
+			my $startrule = parseRule($rawoffset, 0, 
 						  $rule->[1]);
 			$rule = [ $endrule, $startrule, $savings ];
 #			print "start",@{$rule->[1]}, "end", @{$rule->[0]}, 
--- libjava/classpath/java/util/TimeZone.java.jj	2006-10-05 00:31:11.000000000 +0200
+++ libjava/classpath/java/util/TimeZone.java	2007-02-09 11:05:13.000000000 +0100
@@ -1,5 +1,5 @@
 /* java.util.TimeZone
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
    Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
@@ -153,8 +153,8 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Pago_Pago", tz);
 	tz = new SimpleTimeZone
 	  (-10000 * 3600, "America/Adak",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("America/Adak", tz);
 	tz = new SimpleTimeZone(-10000 * 3600, "HST");
 	timezones0.put("HST", tz);
@@ -167,8 +167,8 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Marquesas", tz);
 	tz = new SimpleTimeZone
 	  (-9000 * 3600, "AST",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("AST", tz);
 	timezones0.put("America/Anchorage", tz);
 	timezones0.put("America/Juneau", tz);
@@ -177,55 +177,56 @@ public abstract class TimeZone implement
 	tz = new SimpleTimeZone(-9000 * 3600, "Pacific/Gambier");
 	timezones0.put("Pacific/Gambier", tz);
 	tz = new SimpleTimeZone
-	  (-8000 * 3600, "PST",
+	  (-8000 * 3600, "America/Tijuana",
 	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	timezones0.put("America/Tijuana", tz);
+	tz = new SimpleTimeZone
+	  (-8000 * 3600, "PST",
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("PST", tz);
 	timezones0.put("PST8PDT", tz);
 	timezones0.put("America/Dawson", tz);
 	timezones0.put("America/Los_Angeles", tz);
-	timezones0.put("America/Tijuana", tz);
 	timezones0.put("America/Vancouver", tz);
 	timezones0.put("America/Whitehorse", tz);
 	timezones0.put("US/Pacific-New", tz);
 	tz = new SimpleTimeZone(-8000 * 3600, "Pacific/Pitcairn");
 	timezones0.put("Pacific/Pitcairn", tz);
 	tz = new SimpleTimeZone
-	  (-7000 * 3600, "MST",
+	  (-7000 * 3600, "America/Chihuahua",
 	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	timezones0.put("America/Chihuahua", tz);
+	timezones0.put("America/Mazatlan", tz);
+	tz = new SimpleTimeZone(-7000 * 3600, "MST7");
+	timezones0.put("MST7", tz);
+	timezones0.put("PNT", tz);
+	timezones0.put("America/Dawson_Creek", tz);
+	timezones0.put("America/Hermosillo", tz);
+	timezones0.put("America/Phoenix", tz);
+	tz = new SimpleTimeZone
+	  (-7000 * 3600, "MST",
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("MST", tz);
 	timezones0.put("MST7MDT", tz);
 	timezones0.put("America/Boise", tz);
 	timezones0.put("America/Cambridge_Bay", tz);
-	timezones0.put("America/Chihuahua", tz);
 	timezones0.put("America/Denver", tz);
 	timezones0.put("America/Edmonton", tz);
 	timezones0.put("America/Inuvik", tz);
-	timezones0.put("America/Mazatlan", tz);
 	timezones0.put("America/Shiprock", tz);
 	timezones0.put("America/Yellowknife", tz);
-	tz = new SimpleTimeZone(-7000 * 3600, "MST7");
-	timezones0.put("MST7", tz);
-	timezones0.put("PNT", tz);
-	timezones0.put("America/Dawson_Creek", tz);
-	timezones0.put("America/Hermosillo", tz);
-	timezones0.put("America/Phoenix", tz);
 	tz = new SimpleTimeZone
-	  (-6000 * 3600, "CST",
+	  (-6000 * 3600, "America/Cancun",
 	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
-	timezones0.put("CST", tz);
-	timezones0.put("CST6CDT", tz);
 	timezones0.put("America/Cancun", tz);
-	timezones0.put("America/Chicago", tz);
-	timezones0.put("America/Menominee", tz);
 	timezones0.put("America/Merida", tz);
 	timezones0.put("America/Mexico_City", tz);
 	timezones0.put("America/Monterrey", tz);
-	timezones0.put("America/North_Dakota/Center", tz);
-	timezones0.put("America/Rainy_River", tz);
-	timezones0.put("America/Rankin_Inlet", tz);
 	tz = new SimpleTimeZone(-6000 * 3600, "America/Belize");
 	timezones0.put("America/Belize", tz);
 	timezones0.put("America/Costa_Rica", tz);
@@ -237,53 +238,62 @@ public abstract class TimeZone implement
 	timezones0.put("America/Tegucigalpa", tz);
 	timezones0.put("Pacific/Galapagos", tz);
 	tz = new SimpleTimeZone
-	  (-6000 * 3600, "America/Winnipeg",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
+	  (-6000 * 3600, "CST",
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
+	timezones0.put("CST", tz);
+	timezones0.put("CST6CDT", tz);
+	timezones0.put("America/Chicago", tz);
+	timezones0.put("America/Indiana/Knox", tz);
+	timezones0.put("America/Indiana/Petersburg", tz);
+	timezones0.put("America/Indiana/Vincennes", tz);
+	timezones0.put("America/Menominee", tz);
+	timezones0.put("America/North_Dakota/Center", tz);
+	timezones0.put("America/North_Dakota/New_Salem", tz);
+	timezones0.put("America/Rainy_River", tz);
+	timezones0.put("America/Rankin_Inlet", tz);
 	timezones0.put("America/Winnipeg", tz);
 	tz = new SimpleTimeZone
 	  (-6000 * 3600, "Pacific/Easter",
-	   Calendar.OCTOBER, 2, Calendar.SATURDAY, 23000 * 3600,
+	   Calendar.OCTOBER, 2, Calendar.SATURDAY, 22000 * 3600,
 	   Calendar.MARCH, 2, Calendar.SATURDAY, 22000 * 3600);
 	timezones0.put("Pacific/Easter", tz);
-	tz = new SimpleTimeZone
-	  (-5000 * 3600, "America/Grand_Turk",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 0 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 0 * 3600);
-	timezones0.put("America/Grand_Turk", tz);
-	tz = new SimpleTimeZone
-	  (-5000 * 3600, "America/Havana",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 1000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600);
-	timezones0.put("America/Havana", tz);
 	tz = new SimpleTimeZone(-5000 * 3600, "EST5");
 	timezones0.put("EST5", tz);
 	timezones0.put("IET", tz);
+	timezones0.put("America/Atikokan", tz);
 	timezones0.put("America/Bogota", tz);
 	timezones0.put("America/Cayman", tz);
 	timezones0.put("America/Eirunepe", tz);
 	timezones0.put("America/Guayaquil", tz);
-	timezones0.put("America/Indiana/Indianapolis", tz);
-	timezones0.put("America/Indiana/Knox", tz);
-	timezones0.put("America/Indiana/Marengo", tz);
-	timezones0.put("America/Indiana/Vevay", tz);
-	timezones0.put("America/Indianapolis", tz);
 	timezones0.put("America/Jamaica", tz);
 	timezones0.put("America/Lima", tz);
 	timezones0.put("America/Panama", tz);
-	timezones0.put("America/Port-au-Prince", tz);
 	timezones0.put("America/Rio_Branco", tz);
 	tz = new SimpleTimeZone
+	  (-5000 * 3600, "America/Havana",
+	   Calendar.APRIL, 1, Calendar.SUNDAY, 0 * 3600,
+	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600);
+	timezones0.put("America/Havana", tz);
+	tz = new SimpleTimeZone
+	  (-5000 * 3600, "America/Grand_Turk",
+	   Calendar.APRIL, 1, Calendar.SUNDAY, 0 * 3600,
+	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 0 * 3600);
+	timezones0.put("America/Grand_Turk", tz);
+	timezones0.put("America/Port-au-Prince", tz);
+	tz = new SimpleTimeZone
 	  (-5000 * 3600, "EST",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("EST", tz);
 	timezones0.put("EST5EDT", tz);
 	timezones0.put("America/Detroit", tz);
+	timezones0.put("America/Indiana/Indianapolis", tz);
+	timezones0.put("America/Indiana/Marengo", tz);
+	timezones0.put("America/Indiana/Vevay", tz);
 	timezones0.put("America/Iqaluit", tz);
 	timezones0.put("America/Kentucky/Louisville", tz);
 	timezones0.put("America/Kentucky/Monticello", tz);
-	timezones0.put("America/Louisville", tz);
 	timezones0.put("America/Montreal", tz);
 	timezones0.put("America/Nassau", tz);
 	timezones0.put("America/New_York", tz);
@@ -291,12 +301,18 @@ public abstract class TimeZone implement
 	timezones0.put("America/Pangnirtung", tz);
 	timezones0.put("America/Thunder_Bay", tz);
 	timezones0.put("America/Toronto", tz);
+	tz = new SimpleTimeZone
+	  (-4000 * 3600, "America/Asuncion",
+	   Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600,
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 0 * 3600);
+	timezones0.put("America/Asuncion", tz);
 	tz = new SimpleTimeZone(-4000 * 3600, "PRT");
 	timezones0.put("PRT", tz);
 	timezones0.put("America/Anguilla", tz);
 	timezones0.put("America/Antigua", tz);
 	timezones0.put("America/Aruba", tz);
 	timezones0.put("America/Barbados", tz);
+	timezones0.put("America/Blanc-Sablon", tz);
 	timezones0.put("America/Boa_Vista", tz);
 	timezones0.put("America/Caracas", tz);
 	timezones0.put("America/Curacao", tz);
@@ -318,38 +334,30 @@ public abstract class TimeZone implement
 	timezones0.put("America/St_Vincent", tz);
 	timezones0.put("America/Tortola", tz);
 	tz = new SimpleTimeZone
-	  (-4000 * 3600, "America/Asuncion",
-	   Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600,
-	   Calendar.MARCH, 2, Calendar.SUNDAY, 0 * 3600);
-	timezones0.put("America/Asuncion", tz);
-	tz = new SimpleTimeZone
 	  (-4000 * 3600, "America/Campo_Grande",
-	   Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600,
-	   Calendar.FEBRUARY, 3, Calendar.SUNDAY, 0 * 3600);
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0 * 3600,
+	   Calendar.FEBRUARY, -1, Calendar.SUNDAY, 0 * 3600);
 	timezones0.put("America/Campo_Grande", tz);
 	timezones0.put("America/Cuiaba", tz);
 	tz = new SimpleTimeZone
 	  (-4000 * 3600, "America/Goose_Bay",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 60000,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 60000);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 60000,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 60000);
 	timezones0.put("America/Goose_Bay", tz);
 	tz = new SimpleTimeZone
-	  (-4000 * 3600, "America/Santiago",
-	   Calendar.OCTOBER, 9, -Calendar.SUNDAY, 1000 * 3600,
-	   Calendar.MARCH, 9, -Calendar.SUNDAY, 0 * 3600);
-	timezones0.put("America/Santiago", tz);
-	tz = new SimpleTimeZone
 	  (-4000 * 3600, "America/Glace_Bay",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("America/Glace_Bay", tz);
 	timezones0.put("America/Halifax", tz);
+	timezones0.put("America/Moncton", tz);
 	timezones0.put("America/Thule", tz);
 	timezones0.put("Atlantic/Bermuda", tz);
 	tz = new SimpleTimeZone
-	  (-4000 * 3600, "Antarctica/Palmer",
+	  (-4000 * 3600, "America/Santiago",
 	   Calendar.OCTOBER, 9, -Calendar.SUNDAY, 0 * 3600,
 	   Calendar.MARCH, 9, -Calendar.SUNDAY, 0 * 3600);
+	timezones0.put("America/Santiago", tz);
 	timezones0.put("Antarctica/Palmer", tz);
 	tz = new SimpleTimeZone
 	  (-4000 * 3600, "Atlantic/Stanley",
@@ -358,31 +366,35 @@ public abstract class TimeZone implement
 	timezones0.put("Atlantic/Stanley", tz);
 	tz = new SimpleTimeZone
 	  (-3500 * 3600, "CNT",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 60000,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 60000);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 60000,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 60000);
 	timezones0.put("CNT", tz);
 	timezones0.put("America/St_Johns", tz);
 	tz = new SimpleTimeZone
 	  (-3000 * 3600, "America/Godthab",
-	   Calendar.MARCH, 30, -Calendar.SATURDAY, 23000 * 3600,
+	   Calendar.MARCH, 30, -Calendar.SATURDAY, 22000 * 3600,
 	   Calendar.OCTOBER, 30, -Calendar.SATURDAY, 23000 * 3600);
 	timezones0.put("America/Godthab", tz);
 	tz = new SimpleTimeZone
 	  (-3000 * 3600, "America/Miquelon",
-	   Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("America/Miquelon", tz);
 	tz = new SimpleTimeZone
+	  (-3000 * 3600, "America/Montevideo",
+	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600);
+	timezones0.put("America/Montevideo", tz);
+	tz = new SimpleTimeZone
 	  (-3000 * 3600, "America/Sao_Paulo",
-	   Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600,
-	   Calendar.FEBRUARY, 3, Calendar.SUNDAY, 0 * 3600);
+	   Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0 * 3600,
+	   Calendar.FEBRUARY, -1, Calendar.SUNDAY, 0 * 3600);
 	timezones0.put("America/Sao_Paulo", tz);
 	tz = new SimpleTimeZone(-3000 * 3600, "AGT");
 	timezones0.put("AGT", tz);
 	timezones0.put("America/Araguaina", tz);
 	timezones0.put("America/Argentina/Buenos_Aires", tz);
 	timezones0.put("America/Argentina/Catamarca", tz);
-	timezones0.put("America/Argentina/ComodRivadavia", tz);
 	timezones0.put("America/Argentina/Cordoba", tz);
 	timezones0.put("America/Argentina/Jujuy", tz);
 	timezones0.put("America/Argentina/La_Rioja", tz);
@@ -396,7 +408,6 @@ public abstract class TimeZone implement
 	timezones0.put("America/Cayenne", tz);
 	timezones0.put("America/Fortaleza", tz);
 	timezones0.put("America/Maceio", tz);
-	timezones0.put("America/Montevideo", tz);
 	timezones0.put("America/Paramaribo", tz);
 	timezones0.put("America/Recife", tz);
 	timezones0.put("Antarctica/Rothera", tz);
@@ -405,7 +416,7 @@ public abstract class TimeZone implement
 	timezones0.put("Atlantic/South_Georgia", tz);
 	tz = new SimpleTimeZone
 	  (-1000 * 3600, "America/Scoresbysund",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 1000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 0 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600);
 	timezones0.put("America/Scoresbysund", tz);
 	timezones0.put("Atlantic/Azores", tz);
@@ -429,22 +440,23 @@ public abstract class TimeZone implement
 	timezones0.put("Africa/Nouakchott", tz);
 	timezones0.put("Africa/Ouagadougou", tz);
 	timezones0.put("Africa/Sao_Tome", tz);
-	timezones0.put("Africa/Timbuktu", tz);
 	timezones0.put("America/Danmarkshavn", tz);
 	timezones0.put("Atlantic/Reykjavik", tz);
 	timezones0.put("Atlantic/St_Helena", tz);
-	timezones0.put("Europe/Belfast", tz);
-	timezones0.put("Europe/Dublin", tz);
-	timezones0.put("Europe/London", tz);
 	tz = new SimpleTimeZone
 	  (0 * 3600, "WET",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 1000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
 	timezones0.put("WET", tz);
 	timezones0.put("Atlantic/Canary", tz);
-	timezones0.put("Atlantic/Faeroe", tz);
+	timezones0.put("Atlantic/Faroe", tz);
 	timezones0.put("Atlantic/Madeira", tz);
+	timezones0.put("Europe/Dublin", tz);
+	timezones0.put("Europe/Guernsey", tz);
+	timezones0.put("Europe/Isle_of_Man", tz);
+	timezones0.put("Europe/Jersey", tz);
 	timezones0.put("Europe/Lisbon", tz);
+	timezones0.put("Europe/London", tz);
 	tz = new SimpleTimeZone(1000 * 3600, "Africa/Algiers");
 	timezones0.put("Africa/Algiers", tz);
 	timezones0.put("Africa/Bangui", tz);
@@ -458,7 +470,6 @@ public abstract class TimeZone implement
 	timezones0.put("Africa/Ndjamena", tz);
 	timezones0.put("Africa/Niamey", tz);
 	timezones0.put("Africa/Porto-Novo", tz);
-	timezones0.put("Africa/Tunis", tz);
 	tz = new SimpleTimeZone
 	  (1000 * 3600, "Africa/Windhoek",
 	   Calendar.SEPTEMBER, 1, Calendar.SUNDAY, 2000 * 3600,
@@ -466,12 +477,13 @@ public abstract class TimeZone implement
 	timezones0.put("Africa/Windhoek", tz);
 	tz = new SimpleTimeZone
 	  (1000 * 3600, "CET",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("CET", tz);
 	timezones0.put("ECT", tz);
 	timezones0.put("MET", tz);
 	timezones0.put("Africa/Ceuta", tz);
+	timezones0.put("Africa/Tunis", tz);
 	timezones0.put("Arctic/Longyearbyen", tz);
 	timezones0.put("Atlantic/Jan_Mayen", tz);
 	timezones0.put("Europe/Amsterdam", tz);
@@ -490,6 +502,7 @@ public abstract class TimeZone implement
 	timezones0.put("Europe/Monaco", tz);
 	timezones0.put("Europe/Oslo", tz);
 	timezones0.put("Europe/Paris", tz);
+	timezones0.put("Europe/Podgorica", tz);
 	timezones0.put("Europe/Prague", tz);
 	timezones0.put("Europe/Rome", tz);
 	timezones0.put("Europe/San_Marino", tz);
@@ -505,7 +518,7 @@ public abstract class TimeZone implement
 	timezones0.put("Europe/Zurich", tz);
 	tz = new SimpleTimeZone
 	  (2000 * 3600, "ART",
-	   Calendar.APRIL, -1, Calendar.FRIDAY, 1000 * 3600,
+	   Calendar.APRIL, -1, Calendar.FRIDAY, 0 * 3600,
 	   Calendar.SEPTEMBER, -1, Calendar.THURSDAY, 24000 * 3600);
 	timezones0.put("ART", tz);
 	timezones0.put("Africa/Cairo", tz);
@@ -526,8 +539,8 @@ public abstract class TimeZone implement
 	timezones0.put("Asia/Jerusalem", tz);
 	tz = new SimpleTimeZone
 	  (2000 * 3600, "Asia/Amman",
-	   Calendar.MARCH, -1, Calendar.THURSDAY, 1000 * 3600,
-	   Calendar.SEPTEMBER, -1, Calendar.THURSDAY, 1000 * 3600);
+	   Calendar.MARCH, -1, Calendar.THURSDAY, 0 * 3600,
+	   Calendar.OCTOBER, -1, Calendar.FRIDAY, 1000 * 3600);
 	timezones0.put("Asia/Amman", tz);
 	tz = new SimpleTimeZone
 	  (2000 * 3600, "Asia/Beirut",
@@ -541,12 +554,12 @@ public abstract class TimeZone implement
 	timezones0.put("Asia/Damascus", tz);
 	tz = new SimpleTimeZone
 	  (2000 * 3600, "Asia/Gaza",
-	   Calendar.APRIL, 3, Calendar.FRIDAY, 0 * 3600,
+	   Calendar.APRIL, 1, 0, 0 * 3600,
 	   Calendar.OCTOBER, 3, Calendar.FRIDAY, 0 * 3600);
 	timezones0.put("Asia/Gaza", tz);
 	tz = new SimpleTimeZone
 	  (2000 * 3600, "EET",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 4000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 4000 * 3600);
 	timezones0.put("EET", tz);
 	timezones0.put("Asia/Istanbul", tz);
@@ -568,25 +581,25 @@ public abstract class TimeZone implement
 	timezones0.put("Europe/Zaporozhye", tz);
 	tz = new SimpleTimeZone
 	  (2000 * 3600, "Europe/Kaliningrad",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Europe/Kaliningrad", tz);
 	timezones0.put("Europe/Minsk", tz);
 	tz = new SimpleTimeZone
 	  (3000 * 3600, "Asia/Baghdad",
-	   Calendar.APRIL, 1, 0, 4000 * 3600,
+	   Calendar.APRIL, 1, 0, 3000 * 3600,
 	   Calendar.OCTOBER, 1, 0, 4000 * 3600);
 	timezones0.put("Asia/Baghdad", tz);
 	tz = new SimpleTimeZone
-	  (3000 * 3600, "Asia/Tbilisi",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	  (3000 * 3600, "Europe/Moscow",
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
-	timezones0.put("Asia/Tbilisi", tz);
 	timezones0.put("Europe/Moscow", tz);
+	timezones0.put("Europe/Volgograd", tz);
 	tz = new SimpleTimeZone(3000 * 3600, "EAT");
 	timezones0.put("EAT", tz);
 	timezones0.put("Africa/Addis_Ababa", tz);
-	timezones0.put("Africa/Asmera", tz);
+	timezones0.put("Africa/Asmara", tz);
 	timezones0.put("Africa/Dar_es_Salaam", tz);
 	timezones0.put("Africa/Djibouti", tz);
 	timezones0.put("Africa/Kampala", tz);
@@ -606,64 +619,61 @@ public abstract class TimeZone implement
 	timezones0.put("Asia/Tehran", tz);
 	tz = new SimpleTimeZone
 	  (4000 * 3600, "Asia/Baku",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 1000 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600);
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 4000 * 3600,
+	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 5000 * 3600);
 	timezones0.put("Asia/Baku", tz);
 	tz = new SimpleTimeZone
 	  (4000 * 3600, "Asia/Yerevan",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Yerevan", tz);
 	timezones0.put("Europe/Samara", tz);
 	tz = new SimpleTimeZone(4000 * 3600, "NET");
 	timezones0.put("NET", tz);
-	timezones0.put("Asia/Aqtau", tz);
 	timezones0.put("Asia/Dubai", tz);
 	timezones0.put("Asia/Muscat", tz);
-	timezones0.put("Asia/Oral", tz);
+	timezones0.put("Asia/Tbilisi", tz);
 	timezones0.put("Indian/Mahe", tz);
 	timezones0.put("Indian/Mauritius", tz);
 	timezones0.put("Indian/Reunion", tz);
 	tz = new SimpleTimeZone(4500 * 3600, "Asia/Kabul");
 	timezones0.put("Asia/Kabul", tz);
 	tz = new SimpleTimeZone
-	  (5000 * 3600, "Asia/Bishkek",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 2500 * 3600,
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2500 * 3600);
-	timezones0.put("Asia/Bishkek", tz);
-	tz = new SimpleTimeZone
 	  (5000 * 3600, "Asia/Yekaterinburg",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Yekaterinburg", tz);
 	tz = new SimpleTimeZone(5000 * 3600, "PLT");
 	timezones0.put("PLT", tz);
+	timezones0.put("Asia/Aqtau", tz);
 	timezones0.put("Asia/Aqtobe", tz);
 	timezones0.put("Asia/Ashgabat", tz);
 	timezones0.put("Asia/Dushanbe", tz);
 	timezones0.put("Asia/Karachi", tz);
+	timezones0.put("Asia/Oral", tz);
 	timezones0.put("Asia/Samarkand", tz);
 	timezones0.put("Asia/Tashkent", tz);
 	timezones0.put("Indian/Kerguelen", tz);
 	timezones0.put("Indian/Maldives", tz);
-	tz = new SimpleTimeZone(5500 * 3600, "IST");
+	tz = new SimpleTimeZone(5500 * 3600, "BST");
+	timezones0.put("BST", tz);
 	timezones0.put("IST", tz);
 	timezones0.put("Asia/Calcutta", tz);
+	timezones0.put("Asia/Colombo", tz);
 	tz = new SimpleTimeZone(5750 * 3600, "Asia/Katmandu");
 	timezones0.put("Asia/Katmandu", tz);
-	tz = new SimpleTimeZone(6000 * 3600, "BST");
-	timezones0.put("BST", tz);
+	tz = new SimpleTimeZone(6000 * 3600, "Antarctica/Mawson");
 	timezones0.put("Antarctica/Mawson", tz);
 	timezones0.put("Antarctica/Vostok", tz);
 	timezones0.put("Asia/Almaty", tz);
-	timezones0.put("Asia/Colombo", tz);
+	timezones0.put("Asia/Bishkek", tz);
 	timezones0.put("Asia/Dhaka", tz);
 	timezones0.put("Asia/Qyzylorda", tz);
 	timezones0.put("Asia/Thimphu", tz);
 	timezones0.put("Indian/Chagos", tz);
 	tz = new SimpleTimeZone
 	  (6000 * 3600, "Asia/Novosibirsk",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Novosibirsk", tz);
 	timezones0.put("Asia/Omsk", tz);
@@ -687,7 +697,7 @@ public abstract class TimeZone implement
 	timezones0.put("Asia/Hovd", tz);
 	tz = new SimpleTimeZone
 	  (7000 * 3600, "Asia/Krasnoyarsk",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Krasnoyarsk", tz);
 	tz = new SimpleTimeZone(8000 * 3600, "CTT");
@@ -710,7 +720,7 @@ public abstract class TimeZone implement
 	timezones0.put("Australia/Perth", tz);
 	tz = new SimpleTimeZone
 	  (8000 * 3600, "Asia/Irkutsk",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Irkutsk", tz);
 	tz = new SimpleTimeZone
@@ -718,6 +728,8 @@ public abstract class TimeZone implement
 	   Calendar.MARCH, -1, Calendar.SATURDAY, 2000 * 3600,
 	   Calendar.SEPTEMBER, -1, Calendar.SATURDAY, 2000 * 3600);
 	timezones0.put("Asia/Ulaanbaatar", tz);
+	tz = new SimpleTimeZone(8750 * 3600, "Australia/Eucla");
+	timezones0.put("Australia/Eucla", tz);
 	tz = new SimpleTimeZone
 	  (9000 * 3600, "Asia/Choibalsan",
 	   Calendar.MARCH, -1, Calendar.SATURDAY, 2000 * 3600,
@@ -733,12 +745,12 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Palau", tz);
 	tz = new SimpleTimeZone
 	  (9000 * 3600, "Asia/Yakutsk",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Yakutsk", tz);
 	tz = new SimpleTimeZone
 	  (9500 * 3600, "Australia/Adelaide",
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Australia/Adelaide", tz);
 	timezones0.put("Australia/Broken_Hill", tz);
@@ -753,21 +765,21 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Port_Moresby", tz);
 	timezones0.put("Pacific/Saipan", tz);
 	timezones0.put("Pacific/Truk", tz);
-	timezones0.put("Pacific/Yap", tz);
 	tz = new SimpleTimeZone
 	  (10000 * 3600, "Asia/Sakhalin",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Sakhalin", tz);
 	timezones0.put("Asia/Vladivostok", tz);
 	tz = new SimpleTimeZone
-	  (10000 * 3600, "Australia/Hobart",
-	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 3000 * 3600,
+	  (10000 * 3600, "Australia/Currie",
+	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600);
+	timezones0.put("Australia/Currie", tz);
 	timezones0.put("Australia/Hobart", tz);
 	tz = new SimpleTimeZone
 	  (10000 * 3600, "AET",
-	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("AET", tz);
 	timezones0.put("Australia/Melbourne", tz);
@@ -779,7 +791,7 @@ public abstract class TimeZone implement
 	timezones0.put("Australia/Lord_Howe", tz);
 	tz = new SimpleTimeZone
 	  (11000 * 3600, "Asia/Magadan",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Magadan", tz);
 	tz = new SimpleTimeZone(11000 * 3600, "SST");
@@ -793,7 +805,7 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Norfolk", tz);
 	tz = new SimpleTimeZone
 	  (12000 * 3600, "NST",
-	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.MARCH, 3, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("NST", tz);
 	timezones0.put("Antarctica/McMurdo", tz);
@@ -801,7 +813,7 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Auckland", tz);
 	tz = new SimpleTimeZone
 	  (12000 * 3600, "Asia/Anadyr",
-	   Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600,
+	   Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
 	   Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600);
 	timezones0.put("Asia/Anadyr", tz);
 	timezones0.put("Asia/Kamchatka", tz);
@@ -816,7 +828,7 @@ public abstract class TimeZone implement
 	timezones0.put("Pacific/Wallis", tz);
 	tz = new SimpleTimeZone
 	  (12750 * 3600, "Pacific/Chatham",
-	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 3750 * 3600,
+	   Calendar.OCTOBER, 1, Calendar.SUNDAY, 2750 * 3600,
 	   Calendar.MARCH, 3, Calendar.SUNDAY, 3750 * 3600);
 	timezones0.put("Pacific/Chatham", tz);
 	tz = new SimpleTimeZone(13000 * 3600, "Pacific/Enderbury");


Index: gcc41.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc41.spec,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -r1.141 -r1.142
--- gcc41.spec	2 Feb 2007 21:17:24 -0000	1.141
+++ gcc41.spec	10 Feb 2007 19:16:44 -0000	1.142
@@ -1,10 +1,10 @@
-%define DATE 20070202
+%define DATE 20070209
 %define gcc_version 4.1.1
-%define gcc_release 55
+%define gcc_release 56
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %define include_gappletviewer 1
-%ifarch %{ix86} x86_64 ia64 ppc
+%ifarch %{ix86} x86_64 ia64 ppc alpha
 %define build_ada 1
 %else
 %define build_ada 0
@@ -116,7 +116,7 @@
 Patch7: gcc41-ada-tweaks.patch
 Patch8: gcc41-java-slow_pthread_self.patch
 Patch9: gcc41-ppc32-retaddr.patch
-Patch10: gcc41-i386-tune-core2.patch
+Patch10: gcc41-amdfam10.patch
 Patch11: gcc41-dsohandle.patch
 Patch12: gcc41-rh184446.patch
 Patch13: gcc41-pr20297-test.patch
@@ -124,7 +124,7 @@
 Patch15: gcc41-tests.patch
 Patch16: gcc41-pr25874.patch
 Patch17: gcc41-pr30189.patch
-Patch18: gcc41-ssse3.patch
+Patch18: gcc41-rh227983.patch
 Patch19: gcc41-hash-style-gnu.patch
 Patch20: gcc41-pr30001.patch
 Patch21: gcc41-java-libdotdotlib.patch
@@ -429,7 +429,7 @@
 %patch7 -p0 -b .ada-tweaks~
 %patch8 -p0 -b .java-slow_pthread_self~
 %patch9 -p0 -b .ppc32-retaddr~
-%patch10 -p0 -b .i386-tune-core2~
+%patch10 -p0 -b .amdfam10~
 %patch11 -p0 -b .dsohandle~
 %patch12 -p0 -b .rh184446~
 %patch13 -p0 -E -b .pr20297-test~
@@ -437,7 +437,7 @@
 %patch15 -p0 -b .tests~
 %patch16 -p0 -b .pr25874~
 %patch17 -p0 -b .pr30189~
-%patch18 -p0 -b .ssse3~
+%patch18 -p0 -b .rh227983~
 %patch19 -p0 -b .hash-style-gnu~
 %patch20 -p0 -b .pr30001~
 %patch21 -p0 -b .java-libdotdotlib~
@@ -1529,6 +1529,15 @@
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Sat Feb 10 2007 Jakub Jelinek <jakub at redhat.com> 4.1.1-56
+- update from gcc-4_1-branch (-r121479:121738)
+  - PRs c++/29487, target/29487, target/30370
+- merge gomp fixes from gcc-4_2-branch (-r121689:121690)
+  PR c++/30703
+- add AMDfam10 support (Harsha Jagasia, #222897)
+- set build_ada to 1 on alpha (#224247)
+- regenerate libjava.util.TimeZone data from tzdata2007a (#227888)
+
 * Fri Feb  2 2007 Jakub Jelinek <jakub at redhat.com> 4.1.1-55
 - update from gcc-4_1-branch (-r121069:121479)
   - PRs c++/28988, fortran/30278, libstdc++/30586, middle-end/29683,


--- gcc41-i386-tune-core2.patch DELETED ---


--- gcc41-ssse3.patch DELETED ---




More information about the fedora-cvs-commits mailing list