1. 22 May, 2007 14 commits
    • sse4_1-check.h: Don't include ../auto-host.h. · f0de03cf
      2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* gcc.target/i386/sse4_1-check.h: Don't include ../auto-host.h.
      
      From-SVN: r124957
      H.J. Lu committed
    • mode-switching.c (reg_dies): Change type of second argument to "HARD_REG_SET *". · 408bed3c
      gcc/
      	* mode-switching.c (reg_dies): Change type of second argument to
      	"HARD_REG_SET *".
      	(optimize_mode_switching): Update accordingly.
      
      From-SVN: r124955
      Richard Sandiford committed
    • hard-reg-set.h (GO_IF_HARD_REG_SUBSET, [...]): Delete in favor of... · 56b138ae
      gcc/
      	* hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
      	in favor of...
      	(hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
      	(hard_reg_set_empty_p): ...these new functions.
      	* bt-load.c (choose_btr): Use hard_reg_subset_p instead of
      	GO_IF_HARD_REG_SUBSET.
      	* cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
      	instead of GO_IF_HARD_REG_EQUAL.
      	* df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
      	instead of GO_IF_HARD_REG_EQUAL.
      	* global.c (find_reg): Use hard_reg_set_empty_p instead of
      	GO_IF_HARD_REG_SUBSET.
      	(modify_reg_pav): Use hard_reg_set_empty_p instead of
      	GO_IF_HARD_REG_EQUAL.
      	* local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
      	of GO_IF_HARD_REG_SUBSET.
      	* reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
      	instead of GO_IF_HARD_REG_EQUAL.
      	* regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
      	hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
      	(reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
      	of GO_IF_HARD_REG_SUBSET,
      	* reload1.c (finish_spills): Use hard_reg_subset_p instead of
      	GO_IF_HARD_REG_SUBSET.
      	* struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
      	instead of GO_IF_HARD_REG_EQUAL.
      	* config/sh/sh.c (push_regs, calc_live_regs): Use
      	hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
      	(hard_regs_intersect_p): Delete.
      
      From-SVN: r124954
      Richard Sandiford committed
    • func-array.c: Support -DDBG to report individual failures. · 965ff670
      	* gcc.dg/dfp/func-array.c: Support -DDBG to report individual failures.
      	* gcc.dg/dfp/func-struct.c: Ditto.
      	* gcc.dg/dfp/operator-assignment.c: Ditto.
      	* gcc.dg/dfp/convert-bfp.c: Ditto.
      	* gcc.dg/dfp/convert-int.c: Ditto.
      	* gcc.dg/dfp/convert-int-max.c: Ditto.
      	* gcc.dg/dfp/func-scalar.c: Ditto.
      	* gcc.dg/dfp/cast.c: Ditto.
      	* gcc.dg/dfp/func-mixed.c: Support -DDBG to report individual
      	failures, and fix a typo in return type of arg1_128.
      	* gcc.dg/dfp/convert-dfp.c: Support -DDBG to report individual
      	failures, and fix a typo in a constant suffix.
      	* gcc.dg/dfp/func-vararg-dfp.c: Return zero at the end.
      	* gcc.dg/dfp/convert-complex.c: With -DDBG, abort for failures.
      
      From-SVN: r124953
      Janis Johnson committed
    • gcc/ · ba2f32a9
      	* doc/sourcebuild.texi (Test Directives) Add dg-message.
      gcc/testsuite/
      	* lib/gcc-dg.exp(process_message): New proc.
      	(dg-message): New test directive.
      	* gcc.dg/always_inline.c: Use dg-message.
      	* gcc.dg/always_inline2.c: Ditto.
      	* gcc.dg/always_inline3.c: Ditto.
      	* gcc.dg/invalid-call-1.c: Ditto.
      	* gcc.dg/pr17506.c: Ditto.
      	* gcc.dg/simd-5.c: Ditto.
      	* gcc.dg/simd-6.c: Ditto.
      	* gcc.dg/va-arg-2.c: Ditto.
      	* gcc.dg/cpp/syshdr.c: Ditto.
      	* gcc.dg/cpp/unc4.c: Ditto.
      	* gcc.dg/cpp/trad/mi1.c: Ditto.
      	* gcc.dg/cpp/trad/mi5.c: Ditto.
      	* gcc.dg/cpp/trad/mi7.c: Ditto.
      	* gcc.test-framework/dg-outexistsnot-exp-P.c: Ditto.
      	* gcc.test-framework/dg-outexists-exp-F.c: Ditto.
      	* gcc.test-framework/test-framework.awk: Special-case outexists
      	tests.
      
      Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
      
      From-SVN: r124952
      Janis Johnson committed
    • re PR libfortran/31295 (Uninitialized variable in libgfortran's _gfortran_eoshift0_4) · 1f801ab7
      2007-05-22  Tobias Burnus  <burnus@net-b.de>
      
             PR libgfortran/31295
             * intrinsics/eoshift0.c (eoshift0): Silence uninitialized warning.
             * intrinsics/eoshift2.c (eoshift2): Ditto.
      
      From-SVN: r124948
      Tobias Burnus committed
    • i386-cpuid.h (bit_SSE4_1): New. · 05629956
      2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* gcc.dg/i386-cpuid.h (bit_SSE4_1): New.
      	(bit_SSE4_2): Likewise.
      	(bit_POPCNT): Likewise.
      
      	* gcc.target/i386/i386.exp (check_effective_target_sse4): New.
      	Check if assembler supports SSE4 instructions.
      
      	* gcc.target/i386/sse4_1-blendpd.c: New file.
      	* gcc.target/i386/sse4_1-blendps.c: Likewise.
      	* gcc.target/i386/sse4_1-blendvpd.c: Likewise.
      	* gcc.target/i386/sse4_1-blendvps.c: Likewise.
      	* gcc.target/i386/sse4_1-check.h: Likewise.
      	* gcc.target/i386/sse4_1-dppd-1.c: Likewise.
      	* gcc.target/i386/sse4_1-dppd-2.c: Likewise.
      	* gcc.target/i386/sse4_1-dpps-1.c: Likewise.
      	* gcc.target/i386/sse4_1-dpps-2.c: Likewise.
      	* gcc.target/i386/sse4_1-extractps.c: Likewise.
      	* gcc.target/i386/sse4_1-insertps-1.c: Likewise.
      	* gcc.target/i386/sse4_1-insertps-2.c: Likewise.
      	* gcc.target/i386/sse4_1-movntdqa.c: Likewise.
      	* gcc.target/i386/sse4_1-mpsadbw.c: Likewise.
      	* gcc.target/i386/sse4_1-packusdw.c: Likewise.
      	* gcc.target/i386/sse4_1-pblendvb.c: Likewise.
      	* gcc.target/i386/sse4_1-pblendw.c: Likewise.
      	* gcc.target/i386/sse4_1-pcmpeqq.c: Likewise.
      	* gcc.target/i386/sse4_1-pextrb.c: Likewise.
      	* gcc.target/i386/sse4_1-pextrd.c: Likewise.
      	* gcc.target/i386/sse4_1-pextrq.c: Likewise.
      	* gcc.target/i386/sse4_1-pextrw.c: Likewise.
      	* gcc.target/i386/sse4_1-phminposuw.c: Likewise.
      	* gcc.target/i386/sse4_1-pinsrb.c: Likewise.
      	* gcc.target/i386/sse4_1-pinsrd.c: Likewise.
      	* gcc.target/i386/sse4_1-pinsrq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmaxsb.c: Likewise.
      	* gcc.target/i386/sse4_1-pmaxsd.c: Likewise.
      	* gcc.target/i386/sse4_1-pmaxud.c: Likewise.
      	* gcc.target/i386/sse4_1-pmaxuw.c: Likewise.
      	* gcc.target/i386/sse4_1-pminsb.c: Likewise.
      	* gcc.target/i386/sse4_1-pminsd.c: Likewise.
      	* gcc.target/i386/sse4_1-pminud.c: Likewise.
      	* gcc.target/i386/sse4_1-pminuw.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovsxbd.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovsxbq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovsxbw.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovsxdq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovsxwd.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovsxwq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovzxbd.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovzxbq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovzxbw.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovzxdq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovzxwd.c: Likewise.
      	* gcc.target/i386/sse4_1-pmovzxwq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmuldq.c: Likewise.
      	* gcc.target/i386/sse4_1-pmulld.c: Likewise.
      	* gcc.target/i386/sse4_1-ptest-1.c: Likewise.
      	* gcc.target/i386/sse4_1-ptest-2.c: Likewise.
      	* gcc.target/i386/sse4_1-ptest-3.c: Likewise.
      	* gcc.target/i386/sse4_1-round.h: Likewise.
      	* gcc.target/i386/sse4_1-roundpd-1.c: Likewise.
      	* gcc.target/i386/sse4_1-roundpd-2.c: Likewise.
      	* gcc.target/i386/sse4_1-roundpd-3.c: Likewise.
      	* gcc.target/i386/sse4_1-roundps-1.c: Likewise.
      	* gcc.target/i386/sse4_1-roundps-2.c: Likewise.
      	* gcc.target/i386/sse4_1-roundps-3.c: Likewise.
      	* gcc.target/i386/sse4_1-roundsd-1.c: Likewise.
      	* gcc.target/i386/sse4_1-roundsd-2.c: Likewise.
      	* gcc.target/i386/sse4_1-roundsd-3.c: Likewise.
      	* gcc.target/i386/sse4_1-roundsd-4.c: Likewise.
      	* gcc.target/i386/sse4_1-roundss-1.c: Likewise.
      	* gcc.target/i386/sse4_1-roundss-2.c: Likewise.
      	* gcc.target/i386/sse4_1-roundss-3.c: Likewise.
      	* gcc.target/i386/sse4_1-roundss-4.c: Likewise.
      
      From-SVN: r124947
      H.J. Lu committed
    • config.gcc (i[34567]86-*-*): Add smmintrin.h to extra_headers. · 9a5cee02
      2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
      	    Richard Henderson  <rth@redhat.com>
      
      	* config.gcc (i[34567]86-*-*): Add smmintrin.h to
      	extra_headers.
      	(x86_64-*-*): Likewise.
      
      	* i386/i386-modes.def (V2QI): New.
      
      	* config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
      	SSE4A.
      	(override_options): Support SSE4.1.
      	(IX86_BUILTIN_BLENDPD): New for SSE4.1.
      	(IX86_BUILTIN_BLENDPS): Likewise.
      	(IX86_BUILTIN_BLENDVPD): Likewise.
      	(IX86_BUILTIN_BLENDVPS): Likewise.
      	(IX86_BUILTIN_PBLENDVB128): Likewise.
      	(IX86_BUILTIN_PBLENDW128): Likewise.
      	(IX86_BUILTIN_DPPD): Likewise.
      	(IX86_BUILTIN_DPPS): Likewise.
      	(IX86_BUILTIN_INSERTPS128): Likewise.
      	(IX86_BUILTIN_MOVNTDQA): Likewise.
      	(IX86_BUILTIN_MPSADBW128): Likewise.
      	(IX86_BUILTIN_PACKUSDW128): Likewise.
      	(IX86_BUILTIN_PCMPEQQ): Likewise.
      	(IX86_BUILTIN_PHMINPOSUW128): Likewise.
      	(IX86_BUILTIN_PMAXSB128): Likewise.
      	(IX86_BUILTIN_PMAXSD128): Likewise.
      	(IX86_BUILTIN_PMAXUD128): Likewise.
      	(IX86_BUILTIN_PMAXUW128): Likewise.
      	(IX86_BUILTIN_PMINSB128): Likewise.
      	(IX86_BUILTIN_PMINSD128): Likewise.
      	(IX86_BUILTIN_PMINUD128): Likewise.
      	(IX86_BUILTIN_PMINUW128): Likewise.
      	(IX86_BUILTIN_PMOVSXBW128): Likewise.
      	(IX86_BUILTIN_PMOVSXBD128): Likewise.
      	(IX86_BUILTIN_PMOVSXBQ128): Likewise.
      	(IX86_BUILTIN_PMOVSXWD128): Likewise.
      	(IX86_BUILTIN_PMOVSXWQ128): Likewise.
      	(IX86_BUILTIN_PMOVSXDQ128): Likewise.
      	(IX86_BUILTIN_PMOVZXBW128): Likewise.
      	(IX86_BUILTIN_PMOVZXBD128): Likewise.
      	(IX86_BUILTIN_PMOVZXBQ128): Likewise.
      	(IX86_BUILTIN_PMOVZXWD128): Likewise.
      	(IX86_BUILTIN_PMOVZXWQ128): Likewise.
      	(IX86_BUILTIN_PMOVZXDQ128): Likewise.
      	(IX86_BUILTIN_PMULDQ128): Likewise.
      	(IX86_BUILTIN_PMULLD128): Likewise.
      	(IX86_BUILTIN_ROUNDPD): Likewise.
      	(IX86_BUILTIN_ROUNDPS): Likewise.
      	(IX86_BUILTIN_ROUNDSD): Likewise.
      	(IX86_BUILTIN_ROUNDSS): Likewise.
      	(IX86_BUILTIN_PTESTZ): Likewise.
      	(IX86_BUILTIN_PTESTC): Likewise.
      	(IX86_BUILTIN_PTESTNZC): Likewise.
      	(IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
      	(IX86_BUILTIN_VEC_SET_V2DI): Likewise.
      	(IX86_BUILTIN_VEC_SET_V4SF): Likewise.
      	(IX86_BUILTIN_VEC_SET_V4SI): Likewise.
      	(IX86_BUILTIN_VEC_SET_V16QI): Likewise.
      	(bdesc_ptest): New.
      	(bdesc_sse_3arg): Likewise.
      	(bdesc_2arg): Likewise.
      	(bdesc_1arg): Likewise.
      	(ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
      	with 3 args.
      	(ix86_expand_sse_4_operands_builtin): New.
      	(ix86_expand_unop_builtin): Support 2 arg builtins with a constant
      	smaller than 8 bits as the 2nd arg.
      	(ix86_expand_sse_ptest): New.
      	(ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
      	(ix86_expand_vector_set): Support SSE4.1.
      	(ix86_expand_vector_extract): Likewise.
      
      	* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
      	__SSE4_1__ for -msse4.1.
      
      	* config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
      	(UNSPEC_INSERTPS): Likewise.
      	(UNSPEC_DP): Likewise.
      	(UNSPEC_MOVNTDQA): Likewise.
      	(UNSPEC_MPSADBW): Likewise.
      	(UNSPEC_PHMINPOSUW): Likewise.
      	(UNSPEC_PTEST): Likewise.
      	(UNSPEC_ROUNDP): Likewise.
      	(UNSPEC_ROUNDS): Likewise.
      
      	* config/i386/i386.opt (msse4.1): New for SSE4.1.
      
      	* config/i386/predicates.md (const_pow2_1_to_2_operand): New.
      	(const_pow2_1_to_32768_operand): Likewise.
      
      	* config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
      	file.
      
      	* config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
      	SSE4.1.
      	(sse4_1_insertps): Likewise.
      	(*sse4_1_extractps): Likewise.
      	(sse4_1_ptest): Likewise.
      	(sse4_1_mulv2siv2di3): Likewise.
      	(*sse4_1_mulv4si3): Likewise.
      	(*sse4_1_smax<mode>3): Likewise.
      	(*sse4_1_umax<mode>3): Likewise.
      	(*sse4_1_smin<mode>3): Likewise.
      	(*sse4_1_umin<mode>3): Likewise.
      	(sse4_1_eqv2di3): Likewise.
      	(*sse4_1_pinsrb): Likewise.
      	(*sse4_1_pinsrd): Likewise.
      	(*sse4_1_pinsrq): Likewise.
      	(*sse4_1_pextrb): Likewise.
      	(*sse4_1_pextrb_memory): Likewise.
      	(*sse4_1_pextrw_memory): Likewise.
      	(*sse4_1_pextrq): Likewise.
      	(sse4_1_blendpd): Likewise.
      	(sse4_1_blendps): Likewise.
      	(sse4_1_blendvpd): Likewise.
      	(sse4_1_blendvps): Likewise.
      	(sse4_1_dppd): Likewise.
      	(sse4_1_dpps): Likewise.
      	(sse4_1_movntdqa): Likewise.
      	(sse4_1_mpsadbw): Likewise.
      	(sse4_1_packusdw): Likewise.
      	(sse4_1_pblendvb): Likewise.
      	(sse4_1_pblendw): Likewise.
      	(sse4_1_phminposuw): Likewise.
      	(sse4_1_extendv8qiv8hi2): Likewise.
      	(*sse4_1_extendv8qiv8hi2): Likewise.
      	(sse4_1_extendv4qiv4si2): Likewise.
      	(*sse4_1_extendv4qiv4si2): Likewise.
      	(sse4_1_extendv2qiv2di2): Likewise.
      	(*sse4_1_extendv2qiv2di2): Likewise.
      	(sse4_1_extendv4hiv4si2): Likewise.
      	(*sse4_1_extendv4hiv4si2): Likewise.
      	(sse4_1_extendv2hiv2di2): Likewise.
      	(*sse4_1_extendv2hiv2di2): Likewise.
      	(sse4_1_extendv2siv2di2): Likewise.
      	(*sse4_1_extendv2siv2di2): Likewise.
      	(sse4_1_zero_extendv8qiv8hi2): Likewise.
      	(*sse4_1_zero_extendv8qiv8hi2): Likewise.
      	(sse4_1_zero_extendv4qiv4si2): Likewise.
      	(*sse4_1_zero_extendv4qiv4si2): Likewise.
      	(sse4_1_zero_extendv2qiv2di2): Likewise.
      	(*sse4_1_zero_extendv2qiv2di2): Likewise.
      	(sse4_1_zero_extendv4hiv4si2): Likewise.
      	(*sse4_1_zero_extendv4hiv4si2): Likewise.
      	(sse4_1_zero_extendv2hiv2di2): Likewise.
      	(*sse4_1_zero_extendv2hiv2di2): Likewise.
      	(sse4_1_zero_extendv2siv2di2): Likewise.
      	(*sse4_1_zero_extendv2siv2di2): Likewise.
      	(sse4_1_roundpd): Likewise.
      	(sse4_1_roundps): Likewise.
      	(sse4_1_roundsd): Likewise.
      	(sse4_1_roundss): Likewise.
      	(mulv4si3): Don't expand for SSE4.1.
      	(smax<mode>3): Likewise.
      	(umaxv4si3): Likewise.
      	(uminv16qi3): Likewise.
      	(umin<mode>3): Likewise.
      	(umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
      
      	* doc/extend.texi: Document SSE4.1 built-in functions.
      
      	* doc/invoke.texi: Document -msse4.1.
      
      Co-Authored-By: Richard Henderson <rth@redhat.com>
      
      From-SVN: r124945
      H.J. Lu committed
    • re PR fortran/31627 ([4.1/4.2 only] -bounds-check doesn't check lower bound of assumed-sized array) · c099916d
      	PR fortran/31627
      
      	* trans-array.c (gfc_trans_array_bound_check): Take extra argument to
      	indicate whether we should check the upper bound in that dimension.
      	(gfc_conv_array_index_offset): Check only the lower bound of the
      	last dimension for assumed-size arrays.
      	(gfc_conv_array_ref): Likewise.
      	(gfc_conv_ss_startstride): Likewise.
      
      	* gfortran.dg/bounds_check_7.f90: New test.
      
      From-SVN: r124940
      Francois-Xavier Coudert committed
    • i386.exp (check_effective_target_ssse3): New. · 0f869709
      	* gcc.target/i386/i386.exp (check_effective_target_ssse3): New.
      	(check_effective_target_sse4a): Ditto.
      
      	* gcc.target/i386/ssse3-phsubw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-phaddd.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-pabsb.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-psignb.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-phaddsw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-pabsd.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-psignd.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-pmaddubsw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-pmulhrsw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-phaddw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-phsubd.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-pabsw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-psignw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-pshufb.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-phsubsw.c: Require effective target ssse3.
      	* gcc.target/i386/ssse3-palignr.c: Require effective target ssse3.
      	* gcc.target/i386/sse4a-insert.c: Require effective target sse4a.
      	* gcc.target/i386/sse4a-extract.c: Require effective target sse4a.
      	* gcc.target/i386/sse4a-montss.c: Require effective target sse4a.
      	* gcc.target/i386/sse4a-montsd.c: Require effective target sse4a.
      
      From-SVN: r124939
      Uros Bizjak committed
    • linux.h (ASM_SPEC): Add asm_pcrel_spec. · bebb3a98
      	* config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
      	* config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
      	* config/m68k/m68k.h (ASM_PCREL_SPEC): New.
      	(ASM_SPEC): Add asm_pcrel_spec.
      	(EXTRA_SPECS): Add asm_pcrel_spec.
      
      From-SVN: r124937
      Nathan Sidwell committed
    • install.texi (Building a cross compiler): Add requirements for Java cross compiler. · c076e75f
      	* doc/install.texi (Building a cross compiler): Add requirements
      	for Java cross compiler.
      
      From-SVN: r124936
      David Daney committed
    • Daily bump. · e175d3bf
      From-SVN: r124933
      GCC Administrator committed
  2. 21 May, 2007 19 commits
    • decl.c (cxx_maybe_build_cleanup): Handle __attribute__((cleanup)). · 5c113154
      	* decl.c (cxx_maybe_build_cleanup): Handle
      	__attribute__((cleanup)).
      	* g++.dg/ext/cleanup-1.C: New test.
      	* g++.dg/ext/cleanup-2.C: Likewise.
      	* g++.dg/ext/cleanup-3.C: Likewise.
      	* g++.dg/ext/cleanup-4.C: Likewise.
      	* g++.dg/ext/cleanup-5.C: Likewise.
      	* g++.dg/ext/cleanup-6.C: Likewise.
      	* g++.dg/ext/cleanup-8.C: Likewise.
      	* g++.dg/ext/cleanup-9.C: Likewise.
      	* g++.dg/ext/cleanup-10.C: Likewise.
      	* g++.dg/ext/cleanup-11.C: Likewise.
      	* g++.dg/ext/cleanup-dtor.C: Likewise.
      
      From-SVN: r124930
      Mark Mitchell committed
    • internal.h (struct cpp_reader): Add new fields: nonexistent_file_hash and nonexistent_file_ob. · 0b4cafec
      	* internal.h (struct cpp_reader): Add new fields:
      	nonexistent_file_hash and nonexistent_file_ob.
      	* files.c: Include "obstack.h".
      	(find_file_in_dir): Before trying to open the file, look up the
      	path name in the hash table of nonexistent files.  After failing
      	to open the file, add the path name to the hash table.
      	(_cpp_find_file): Cache the results of looking up the file name
      	starting with the quote and bracket chain heads, if we can.
      	(nonexistent_file_hash_eq): New static function.
      	(_cpp_init_files): Initialize pfile->nonexistent_file_hash and
      	pfile->nonexistent_file_ob.
      	(_cpp_cleanup_files): Free pfile->nonexistent_file_hash and
      	pfile->nonexistent_file_ob.
      
      From-SVN: r124929
      Ian Lance Taylor committed
    • re PR tree-optimization/31995 (can't determine dependence between p->a[x+i] and p->a[x+i+1]) · a50411de
      2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              PR middle-end/31995
              * tree-chrec.c (evolution_function_is_affine_multivariate_p):
              Add loopno argument.  Use evolution_function_is_invariant_rec_p
              instead of evolution_function_is_constant_p.
              Update calls to evolution_function_is_affine_multivariate_p.
              * tree-chrec.h  (evolution_function_is_affine_multivariate_p):
              Add loopno argument.
              * tree-scalar-evolution.c (gather_chrec_stats): Call
              evolution_function_is_affine_multivariate_p with a  loop
              number of 0.
              * tree-data-ref.c (analyze_miv_subscript): Likewise.
              (analyze_overlapping_iterations): Likewise.
              (access_functions_are_affine_or_constant_p):
              Likewise.
              (build_classic_dist_vector_1): If the access functions
              are equal, don't do anything.
      
      2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              PR middle-end/31995
              * gcc.dg/vect/vect-102a.c: New test.
      
      From-SVN: r124927
      Andrew Pinski committed
    • c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1... · 60c4429c
      2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
                  Paolo Carlini  <pcarlini@suse.de>
      	    Uros Bizjak  <ubizjak@gmail.com>
      
      	* c-cppbuiltin.c (c_cpp_builtins): Define
      	__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
      	__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
      	__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
      	* doc/cpp.texi ([Standard Predefined Macros]): Document.
      
      2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
                  Paolo Carlini  <pcarlini@suse.de>
      	    Uros Bizjak  <ubizjak@gmail.com>
      
      	* gcc.dg/gcc-have-sync-compare-and-swap.c,
      	gcc.target/i386/gcc-have-sync-compare-and-swap-1.c,
      	gcc.target/i386/gcc-have-sync-compare-and-swap-2.c,
      	gcc.target/i386/gcc-have-sync-compare-and-swap-3.c,
      	gcc.target/i386/gcc-have-sync-compare-and-swap-4.c,
      	New testcases.
      
      Co-Authored-By: Paolo Carlini <pcarlini@suse.de>
      Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
      
      From-SVN: r124926
      Paolo Bonzini committed
    • re PR fortran/32002 (insufficient conformance check when assigning the result of… · 1b35264f
      re PR fortran/32002 (insufficient conformance check when assigning the result of an elemental function to an array)
      
      gcc/fortran:
      2005-05-21  Jerry DeLisle  <jvdelisle@verizon.net>
                  Daniel Franke  <franke.daniel@gmail.com>
      
      	PR fortran/32002
              * resolve.c (resolve_actual_arglist): Resolve actual argument after
              being identified as variable.
      
      
      gcc/testsuite:
      2005-05-21  Daniel Franke  <franke.daniel@gmail.com>
      
      	PR fortran/32002
              * gfortran.dg/compliant_elemental_intrinsics_2.f90: New test.
      
      From-SVN: r124924
      Daniel Franke committed
    • re PR fortran/32027 (The "DO" variable isn't consistent after loop) · 244974bd
      	PR fortran/32027
      
      	* trans-stmt.c (gfc_trans_do): Fix the value of loop variable
      	when the loop ends.
      
      	* gfortran.dg/do_3.F90: Add checks for the final value of the
      	loop variable.
      
      From-SVN: r124923
      Francois-Xavier Coudert committed
    • trans-stmt.c (gfc_trans_do): Fix a typo in comment. · 76dac339
      2007-05-21  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* trans-stmt.c (gfc_trans_do): Fix a typo in comment.
      
      From-SVN: r124911
      H.J. Lu committed
    • darwin.h (LINK_COMMAND_SPEC): Add .cxx for dsymutil handling as well. · ccd3cc09
      	* config/darwin.h (LINK_COMMAND_SPEC): Add .cxx for dsymutil
      	handling as well.
      	* config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
      Radar 5214697
      
      From-SVN: r124909
      Mike Stump committed
    • 990127-2.x: New file. · f6d95b1e
              * gcc.c-torture/execute/990127-2.x: New file.
      
      From-SVN: r124908
      Uros Bizjak committed
    • c_locale.h: Do not include <cstdarg>, use builtins. · 32c8d4b1
      2007-05-21  Paolo Carlini  <pcarlini@suse.de>
      
      	* config/locale/gnu/c_locale.h: Do not include <cstdarg>, use builtins.
      	* config/locale/generic/c_locale.h: Likewise.
      
      From-SVN: r124907
      Paolo Carlini committed
    • Update my e-mail address for new employer. · 97773977
      From-SVN: r124906
      James Lemke committed
    • tmmintrin.h (_mm_alignr_epi8): Provide macro implementation if __OPTIMIZE__ is not defined. · 32fe15ec
      	* config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
      	implementation if __OPTIMIZE__ is not defined.
      	(_mm_alignr_pi8): Ditto.
      	* config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
      	(_mm_inserti_si64): Ditto.
      	* config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
      	(_mm_slli_epi16): Ditto.
              (_mm_slli_epi32): Ditto.
              (_mm_slli_epi64): Ditto.
      	(_mm_srai_epi16): Ditto.
      	(_mm_srai_epi32): Ditto.
      	(_mm_srli_si128): Ditto.
      	(_mm_slli_si128): Ditto.
      	(_mm_srli_epi16): Ditto.
              (_mm_srli_epi32): Ditto.
              (_mm_srli_epi64): Ditto.
      	(_mm_extract_epi16): Ditto.
      	(_mm_insert_epi16): Ditto.
      	(_mm_shufflehi_epi16): Ditto.
      	(_mm_shufflelo_epi16): Ditto.
      	(_mm_shuffle_epi32): Ditto.
              * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
              (_m_pextrw): Ditto.
              (_mm_insert_pi16): Ditto.
              (_m_pinsrw): Ditto.
              (_mm_shuffle_pi16): Ditto.
              (_m_pshufw): Ditto.
              (_mm_shufle_ps): Ditto.
              (_mm_prefetch): Ditto.
      
      testsuite/ChangeLog:
      
      	* gcc.target/i386/sse-14.c: Remove all intrinsic redefines.
      	* gcc.target/i386/sse-12: Add -O to compile options.
      	* g++.dg/other/i386-2.C: Use "-march=k8 -m3dnow -mssse3
      	-msse4a" instead of "-msse3".  Include only ammintrin.h, tmmintrin.h
      	and mm3dnow.h.  Add -O to compile options.
      
      From-SVN: r124904
      Uros Bizjak committed
    • re PR fortran/31867 ([4.2 only] function result with character LEN computed at run time) · c4ba8848
      2007-05-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/31867
      	PR fortran/31994
      	* trans-array.c (gfc_conv_expr_descriptor): Obtain the stored
      	offset for non-descriptor, source arrays and correct for stride
      	not equal to one before writing to field of output descriptor.
      
      2007-05-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/31867
      	* gfortran.dg/char_length_5.f90: New test.
      
      	PR fortran/31994
      	* gfortran.dg/array_reference_1.f90: New test.
      
      From-SVN: r124903
      Paul Thomas committed
    • defaults.h (IBM_FLOAT_FORMAT): Macro definition removed. · 4d8a8a0a
      2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
      
      	* defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
      	* doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
      	* real.c (encode_i370_single, decode_i370_single,
      	encode_i370_double, decode_i370_double): Functions removed.
      	(i370_single_format, i370_double_format): Initializations removed.
      	(real_maxval, round_for_format, exact_real_truncate, significand_size):
      	Consider the log2_b field to always be one.
      	(ieee_single_format, mips_single_format, coldfire_single_format,
      	ieee_double_format, mips_double_format,	coldfire_double_format,
      	ieee_extended_motorola_format, ieee_extended_intel_96_format,
      	ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
      	ibm_extended_format, mips_extended_format, ieee_quad_format,
      	mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
      	decimal_single_format, decimal_double_format, decimal_quad_format,
      	c4x_single_format, c4x_extended_format, real_internal_format): Remove
      	initialization of log2_b.
      	* real.h (i370_single_format, i370_double_format): Declarations removed.
      	* c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
      	field to always be one.
      
      From-SVN: r124901
      Andreas Krebbel committed
    • ia64.c (emit_predicate_relation_info): Fix use of NOTE_INSN_BASIC_BLOCK_P. · 740aeb38
      	* config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
      	NOTE_INSN_BASIC_BLOCK_P.
      	(process_for_unwind_directive): Likewise.
      
      From-SVN: r124899
      Andreas Schwab committed
    • builtins.c (expand_builtin_setjmp_setup): Update comment. · ecaebb9e
      	* builtins.c (expand_builtin_setjmp_setup): Update comment.
      	* function.h (struct function): Move va_list_gpr_size,
      	va_list_fpr_size, function_frequency to front of bitfields.  Add
      	calls_unwind_init.
      	(current_function_calls_unwind_init): New.
      	* except.c (expand_builtin_unwind_init): Set
      	current_function_calls_unwind_init not
      	current_function_has_nonlocal_label.
      	* reload1.c (has_nonexceptional_receiver): New.
      	(reload): Use it and current_function_calls_unwind_init to
      	determine whether call-saved regs must be saved.
      
      From-SVN: r124898
      Nathan Sidwell committed
    • re PR libstdc++/31621 (libstdc++ uses -xc++ which can cause exceptions to show… · 2a0ab51c
      re PR libstdc++/31621 (libstdc++ uses -xc++ which can cause exceptions to show up which causes __gxx_personality_v0 to be referenced)
      
      2007-05-21  Paolo Carlini  <pcarlini@suse.de>
      
      	PR libstdc++/31621
      	* acinclude.m4 ([GLIBCXX_CHECK_LINKER_FEATURES]): Use the C compiler.
      	* configure: Regenerate.
      
      From-SVN: r124896
      Paolo Carlini committed
    • gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of NOTE_LINE_NUMBER... · a38e7aa5
      
      	* gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
      	NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	* ddg.c (create_ddg): LIkewise.
      	* final.c (final): Remove hunk moving line numbernotes around since
      	they are no longer present at this stage.
      	(final_scan_insn): Use NOTE_KIND instead of
      	NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	(output_asm_label): Likewise.
      	* reorg.c (dbr_schedule): Likewise.
      	* haifa-sched.c (unlink_other_notes): Likewise.
      	* mode-switching.c (optimize_mode_switching): Likewise.
      	* graph.c (start_bb): Likewise.
      	* rtl.def (NOTE): Update description.
      	* jump.c (squeeze_notes): Delete.
      	(mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
      	NOTE_INSN_BASIC_BLOCK_P when possible.
      	* ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
      	* dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
              NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	(dwarf2out_var_location): Likewise.
      	* cfgbuild.c (make_edges): Likewise.
      	(find_basic_blocks_1): Likewise.
      	* function.c (reorder_blocks_1): Likewise.
      	(epilogue_done): Likewise.
      	(reposition_prologue_and_epilogue_notes): Likewise.
      	* print-rtl.c (print_rtx): Likewise; drop code for printing line number
      	notes.
      	(print_rtl): Likewise.
      	(print_rtl_single): Likewise.
      	* gcse.c (insert_insn_start_bb): Likewise.
      	* alias.c (init_alias_analysis): Likewise.
      	* calls.c (fixup_tail_calls): Likewise.
      	* except.c (sjlj_emit_function_enter): Likewise.
      	* emit-rtl.c (add_insn_after): Likeiwse.
      	(emit_label_before): Likewise.
      	(emit_label_after): Likewise.
      	(emit_note_before, emit_note_after, emit_note): Update
      	parameter to be enum insn_note; do not deal with source
      	files.
      	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
      	Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
      	when possible.
      	(merge_blocks_move_successor_nojumps): Simplify now when
      	we don't have BLOCK notes.
      	(try_optimize_cfg): Likewise.
      	* cfglayout.c (skip_insns_after_block): Likewise.
      	(record_effective_endpoints): Likewise.
      	(duplicate_insn_chain): Likewise.
      	* varasm.c (output_constant_pool_1): Likewise.
      	* sched-deps.c (sched_analyze): Likewise.
      	* rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
      	Exterminate.
      	(note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
      	* rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
      	(SET_INSN_DELETED): Simplify.
      	(NOTE_LINE_NUMBER): Exterminate.
      	(NOTE_LINE_KIND): New.
      	(NOTE_INSN_BASIC_BLOCK_P): Update.
      	(enum insn_note): Simplify.
      	(GET_NOTE_INSN_NAME) Simplify.
      	(emit_note_before, emit_note_after, emit_note): Update prototype.
      	(squeeze_notes): Remove.
      	* sched-int.h (NOTE_NOT_BB_P): Update.
      	* resource.c (mark_target_live_regs): Update.
      	* sched-rgn.c (debug_dependencies): Update.
      	* sched-vis.c (print_insn): Update.
      	* config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
      	* config/i386/i386.c (ix86_output_function_epilogue): Update.
      	* config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
      	(TARGET_ADJUST_UNROLL_MAX): Likewise.
      	(split_branches): Update.
      	(sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
      	4.0.0.
      	(sh_adjust_unroll_max): Exterminate.
      	* config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
      	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
      	(m68hc11_reorg): Likewise.
      	* config/ia64/ia64.c (emit_insn_group_barriers): Update.
      	(emit_predicate_relation_info): Update.
      	(process_for_unwind_directive): Update.
      	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
      	(output_call): Update.
      	* config/pa/pa.c (output_lbranch): Update.
      	(output_millicode_call): Update.
      	(output_call): Update.
      	(pa_combine_instructions): Update.
      	* config/mips/mips.c (mips16_gp_pseudo_reg): Update.
      	* config/bfin/bfin.c (gen_one_bundle): Update.
      	* cfgrtl.c (can_delete_note_p): Update.
      	(delete_insn): Update.
      	(rtl_merge_blocks): Update.
      	(commit_one_edge_insertion): Update.
      	(rtl_verify_flow_info): Update.
      	* stmt.c (expand_case): Do not call squeeze_notes.
      
      From-SVN: r124895
      Jan Hubicka committed
    • Daily bump. · 631abdb2
      From-SVN: r124890
      GCC Administrator committed
  3. 20 May, 2007 7 commits
    • Changelog: Fix wrong year. · aac8bf80
              * gcc/Changelog: Fix wrong year.
              * gcc/testsuite/Changelog: Likewise.
      
      From-SVN: r124877
      Manuel López-Ibáñez committed
    • re PR middle-end/7651 (Define -Wextra strictly in terms of other warning flags) · f6aa72dd
      2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      	
      	PR middle-end/7651
      	PR c++/11856
      	PR c/12963
      	PR c/23587
      	PR other/29694
      	* c.opt (Wtype-limits): New.
      	* doc/invoke.texi (Wtype-limits): Document it.
      	(Wextra): Enabled by -Wextra.
      	* c-opts.c (c_common_post_options): Enabled by -Wextra.
      	* c-common.c (shorten_compare): Warn with Wtype-limits.
      
      testsuite/
      	* gcc.dg/compare6.c: Replace Wall with Wtype-limits.
      	* gcc.dg/Wtype-limits.c: New.
      	* gcc.dg/Wtype-limits-Wextra.c: New.
      	* gcc.dg/Wtype-limits-no.c: New.
      	* g++.dg/warn/Wtype-limits.C: New.
      	* g++.dg/warn/Wtype-limits-Wextra.C: New.
      	* g++.dg/warn/Wtype-limits-no.C: New.
      
      From-SVN: r124875
      Manuel López-Ibáñez committed
    • stl_algo.h: Shuffle the functions to better match the order in the standard. · da5a2efd
      2007-05-20  Paolo Carlini  <pcarlini@suse.de>
      
      	* include/bits/stl_algo.h: Shuffle the functions to better match the
      	order in the standard.
      
      From-SVN: r124874
      Paolo Carlini committed
    • tmmintrin.h (_mm_alignr_epi32): Implement as always inlined function, not as a macro. · 46fb8f6b
              * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
              inlined function, not as a macro.
              (_mm_alignr_pi8): Ditto.
              * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
              (_mm_inserti_si64): Ditto.
              * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
              (_mm_extract_epi16): Ditto.
              (_mm_insert_epi16): Ditto.
              (_mm_shufflehi_epi16): Ditto.
              (_mm_shufflelo_epi16): Ditto.
              (_mm_shuffle_epi32): Ditto.
              * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
              * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
              all functions.
              (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
              float constant.
              (_m_to_float): Use C89 compatible assignment.
      
      testsuite/ChangeLog:
      
              * gcc.target/i386/sse-vect-types.c: Revert 'Use "-msse"
              instead of "-msse2".'
              * gcc.target/i386/sse-12.c: Use "-march=k8 -m3dnow -mssse3 -msse4a"
              instead of "-msse3".  Include only ammintrin.h, tmmintrin.h
              and mm3dnow.h.
              * gcc.target/i386/sse-13.c (__builtin_ia32_extrqi): Redefine
              to test with immediate operand.
              (__builtin_ia32_insertqi): Ditto.
              (__builtin_ia32_palignr128): Ditto.
              (__builtin_ia32_palignr): Ditto.
              (__builtin_ia32_pshufhw): Ditto.
              (__builtin_ia32_pshuflw): Ditto.
              (__builtin_ia32_pshufd): Ditto.
              (__builtin_ia32_vec_set_v8hi): Ditto.
              (__builtin_ia32_vec_ext_v8hi): Ditto.
              (__builtin_ia32_shufpd): Ditto.
              * gcc.target/i386/sse-14.c: Same changes as sse-13.c.
      
      From-SVN: r124873
      Uros Bizjak committed
    • re PR target/32007 (bootstrap broken on ARM v3) · dde27bba
      2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
      
      	PR target/32007
      	* config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
      
      From-SVN: r124871
      Martin Michlmayr committed
    • configure.ac: Introduce extra_ldflags_libgc. · 53630715
      2007-05-20  Andreas Tobler  <a.tobler@schweiz.org>
      
      	* configure.ac: Introduce extra_ldflags_libgc. Use it for Darwin.
      	* configure: Regenerate.
      	* Makefile.am (libgc_la_LDFLAGS): Use extra_ldflags_libgc.
      	* Makefile.in: Regenerate.
      	* include/Makefile.in: Regenerate.
      	* include/private/gcconfig.h: Enable MPROTECT_VDB for all Darwin
      	targets. Remove comments. Prepare ppc64 support for Darwin.
      
      From-SVN: r124870
      Andreas Tobler committed
    • re PR fortran/32001 (MAX intrinsic with large number of arguments) · 6495bc0b
      gcc/fortran:
      2007-05-20  Daniel Franke  <franke.daniel@gmail.com>
      
              PR fortran/32001
              * check.c (check_rest): Improved argument conformance check and
              fixed error message generation.
      
      
      gcc/testsuite:
      2007-05-20  Daniel Franke  <franke.daniel@gmail.org>
      
      	PR fortran/32001
      	* gfortran.dg/min_max_conformance.f90: Added more testcases.
      
      From-SVN: r124869
      Daniel Franke committed