Commit Graph

31869 Commits

Author SHA1 Message Date
Richard Henderson 962f383322 expr.h (promoted_input_arg): Remove decl.
* expr.h (promoted_input_arg): Remove decl.
        * function.c (promoted_input_arg): Merge into ...
        * combine.c (setup_incoming_promotions): ... only caller.
        Rearrange to avoid double loop.

From-SVN: r122479
2007-03-02 09:49:58 -08:00
Ben Elliston 7393f7f8d0 dfp.md: New file.
* config/rs6000/dfp.md: New file.
	* config/rs6000/rs6000.md: Include dfp.md.
	(add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
	and TDmode decimal float modes in FP registers.
	(num_insns_constant): Likewise.
	(rs6000_legitimate_offset_address_p): Likewise.
	(rs6000_legitimize_address): Likewise.
	(rs6000_legitimize_reload_address): Likewise.
	(rs6000_legitimate_address): Likewise.
	(rs6000_emit_move): Likewise.
	(function_arg_boundary): Likewise.
	(function_arg_advance): Likewise.
	(rs6000_darwin64_record_arg_recurse): Likewise.
	(function_arg): Likewise.
	(rs6000_gimplify_va_arg): Likewise.
	(rs6000_split_multireg_move): Likewise.
	(rs6000_output_function_epilogue): Likewise.
	(rs6000_output_function_epilogue): Likewise.
	(rs6000_register_move_cost): Likewise.
	(rs6000_function_value): Likewise.
	(rs6000_libcall_value): Likewise.

Co-Authored-By: Janis Johnson <janis187@us.ibm.com>
Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com>

From-SVN: r122477
2007-03-02 09:57:08 -06:00
Uros Bizjak 0fa4c37026 i386.c (override_options): Put initialization of ix86_tune_mask and ix86_arch_mask to the correct place.
* config/i386/i386.c (override_options): Put initialization of
        ix86_tune_mask and ix86_arch_mask to the correct place.

From-SVN: r122476
2007-03-02 14:36:54 +01:00
Richard Sandiford 1f24ba024d t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
gcc/
	* config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.

From-SVN: r122475
2007-03-02 12:38:32 +00:00
Richard Sandiford c3c9a5d23e t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
gcc/
	* config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
	Use $MULTIDIR to choose between the kernel and RTP headers,
	and use $WIND_BASE and $WIND_USR to locate them.

From-SVN: r122474
2007-03-02 12:37:31 +00:00
Uros Bizjak 8691cea396 re PR target/31019 (Microoptimization of the i386 and x86_64 compilers)
PR target/31019
	* config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
	(ARCHMASK): Define.
	(TARGET_CMOVE): Use ARCHMASK.
	(TARGET_CMPXCHG): Ditto.
	(TARGET_CMPXCHG8B): Ditto.
	(TARGET_XADD): Ditto.
	(TARGET_BSWAP): Ditto.
	* config/i386/i386.c (ix86_tune_mask): New global variable.
	(ix86_arch_mask): Ditto.
	(override_options): Initialize ix86_tune_mask and
	ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
	target_flags.


Co-Authored-By: Michael Meissner <michael.meissner@amd.com>

From-SVN: r122473
2007-03-02 13:26:55 +01:00
Ben Elliston cee690f184 re PR middle-end/30992 (Scaling error in decimal floating-point arithmetic blows conversions to integers)
2007-03-02  Ben Elliston  <bje@au.ibm.com>

	PR 30992
	* config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".

From-SVN: r122469
2007-03-02 16:28:06 +11:00
Joseph Myers 37ea0b7e74 target.h (init_dwarf_reg_sizes_extra): New target hook.
* target.h (init_dwarf_reg_sizes_extra): New target hook.
	* target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
	* doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
	hook.
	* config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
	rs6000_init_dwarf_reg_sizes_extra): New.
	* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
	SPE register high parts.

testsuite:
	* gcc.target/powerpc/spe-unwind-1.c, g++.dg/eh/simd-5.C: New
	tests.

From-SVN: r122468
2007-03-02 01:55:06 +00:00
Brooks Moses bcc3d150be Makefile.in: Add install-pdf target as copied from automake v1.10 rules.
* Makefile.in: Add install-pdf target as
copied from automake v1.10 rules.
* configure.ac: Add install-pdf to target list.
* configure: Regenerate.

From-SVN: r122466
2007-03-01 16:23:20 -08:00
Paul Brook fe2d934b4b arm.c (arm_legitimate_index_p): Limit iWMMXt addressing modes to LDRD for DImode.
2007-03-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
	modes to LDRD for DImode.
	(output_move_double): Fixup out of range ldrd/strd.
	(vfp_secondary_reload_class): Rename...
	(coproc_secondary_reload_class): ... to this.  Add wb argument.
	* config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
	coproc_secondary_reload_class for CLASS_IWMMXT.
	(SECONDARY_INPUT_RELOAD_CLASS): Ditto.
	* arm-protos.h (coproc_secondary_reload_class): Update prototype.

From-SVN: r122437
2007-03-01 22:58:40 +00:00
Zdenek Dvorak 2711355fbc tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the unroll factor by the estimated number of iterations.
* tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
	factor by the estimated number of iterations.
	(loop_prefetch_arrays): Do not prefetch in loops that iterate less than
	prefetch latency.

	* gcc.dg/tree-ssa/prefetch-4.c: New test.

From-SVN: r122435
2007-03-01 22:14:23 +00:00
Richard Henderson ceca734e8f expr.c (emit_move_complex_push): Export.
* expr.c (emit_move_complex_push): Export.
        (emit_move_complex_parts): Split out from ...
        (emit_move_complex): ... here.
        * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
        * config/i386/i386.md (movcdi): New.

From-SVN: r122432
2007-03-01 08:30:38 -08:00
Uros Bizjak 93de7743ba i386.c (ix86_modes_tieable_p): Fix typo, use also size of mode1 to check for tieable modes in MMX case.
* config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
	size of mode1 to check for tieable modes in MMX case.

From-SVN: r122429
2007-03-01 11:54:52 +01:00
Richard Sandiford 7ffb5e7879 Makefile.in (rtlanal.o): Depend on tree.h.
gcc/
	* Makefile.in (rtlanal.o): Depend on tree.h.
	* rtl.h (offset_within_section_p, split_const): Declare.
	* rtlanal.c: Include tree.h.
	(offset_within_block_p): New function, taken from
	mips_offset_within_object_p.
	(split_const): New function, taken from mips_split_const.
	* config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
	Declare.
	* config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
	(CONSTANT_ADDRESS_P): Only accept legitimate constants.
	(LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
	* config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
	(m68k_illegitimate_symbolic_constant_p): New function.
	* config/m68k/m68k.md (movsi): Remove misleading predicates.
	If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
	symbolic constant that might be outside the symbol's section,
	move the symbol first and then add the offset.
	* config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
	Override.
	* config/mips/mips.c (mips_split_const): Delete.
	(mips_offset_within_object_p): Delete.
	(mips_symbolic_constant_p): Use offset_within_section_p and
	split_const instead of mips_offset_within_object_p and
	mips_split_const.
	(mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
	(mips_legitimize_const_move, print_operand_reloc)
	(mips_dangerous_for_la25_p): Use split_const instead of
	mips_split_const.

From-SVN: r122428
2007-03-01 09:58:12 +00:00
Eric Christopher d3dc619d32 revert: Makefile.def (dependencies): Add dependency for install-target-libssp and install-target-libgomp on install-gcc.
2007-02-28  Eric Christopher  <echristo@apple.com>

   Revert:
   2006-12-07  Mike Stump  <mrs@apple.com>

       * Makefile.def (dependencies): Add dependency for
       install-target-libssp and install-target-libgomp on
       install-gcc.
       * Makefile.in: Regenerate.

2007-02-28  Eric Christopher  <echristo@apple.com>

   * Makefile.in (install-include-dir): Don't rm -rf include.

From-SVN: r122415
2007-02-28 22:46:01 +00:00
Richard Guenther a6d5f37ceb re PR middle-end/30364 (Wrong variable ranges due to constant folding)
2007-02-28  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30364
	* fold-const.c (fold_binary): Do not associate expressions
	with more than one variable for integer types that do not wrap.

	* gcc.dg/torture/pr30364-1.c: New testcase.
	* gcc.dg/torture/pr30364-2.c: Likewise.
	* gcc.dg/torture/pr30364-3.c: Likewise.

From-SVN: r122414
2007-02-28 21:56:41 +00:00
Sandra Loosemore 94a0dd7b59 builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>

	* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
	Delete, and replace with...
	(fold_builtin_call_array): This.  Update callers to use it.
	* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
	(fold_build_call_array): This.
	(fold_build_call_list_initializer): Delete, and replace with...
	(fold_build_call_array_initializer): This.
	* gcc/tree.h: Update declarations to reflect above changes.

	* gcc/c-typeck.c (build_function_call): Store converted arguments
	in a stack-allocated array instead of building a list.
	(convert_arguments): Store arguments in the array passed in as an
	argument, and return the actual number of arguments.
	* gcc/c-format.c: (check_function_format): Pass arguments in an
	array instead of a list.
	* gcc/c-common.c (check_function_nonnull): Likewise.
	(check_function_sentinel): Likewise.
	(check_function_arguments): Likewise.
	* gcc/c-common.h: Update declarations to reflect above changes.

	* gcc/cp/typeck.c (build_function_call): Store converted arguments
	in a stack-allocated array instead of building a list.
	(convert_arguments): Store arguments in the array passed in as an
	argument, and return the actual number of arguments.
	* gcc/cp/call.c (build_call): Delete, and replace with...
	(build_call_n, build_call_a): New.
	(build_op_delete_call): Rewrite to avoid constructing argument lists.
	(build_over_call): Store converted arguments in a stack-allocated
	array instead of building a list.
	(build_cxx_call): Pass arguments in an array instead of as a list.
	(build_java_interface_fn_ref): Rewrite to avoid constructing
	argument lists.
	* gcc/cp/tree.h: Update declarations to reflect above changes.
	* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
	the arguments instead of a list.
	* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
	(throw_bad_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.
	* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
	* gcc/cp/decl.c (expand_static_init): Likewise.
	* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
	* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
	(gimplify_must_not_throw_expr): Likewise.
	(cxx_omp_apply_fn): Use build_call_a.

From-SVN: r122411
2007-02-28 14:21:20 -05:00
Jan Hubicka 76bf4853ce predict.def (PRED_TREE_EARLY_RETURN, [...]): Update outcomes.
* predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
	PRED_NEGATIVE_RETURN): Update outcomes.

From-SVN: r122410
2007-02-28 18:27:07 +00:00
Bernd Schmidt 3b1bf459a3 calls.c (emit_library_call_value_1): Handle partial registers correctly when building up CALL_INSN_FUNCTION_USAGE.
* calls.c (emit_library_call_value_1): Handle partial registers
	correctly when building up CALL_INSN_FUNCTION_USAGE.

From-SVN: r122396
2007-02-28 00:37:09 +00:00
John David Anglin e214de0a0a predicates.md (move_src_operand): Allow zero for mode.
* pa/predicates.md (move_src_operand): Allow zero for mode.
	* pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
	move pattern.

From-SVN: r122388
2007-02-28 00:11:14 +00:00
Uros Bizjak 8ab9333261 re PR target/30970 (Register zeroing by xor N,N should be moved out of loop)
PR target/30970
        * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
        *movv2df_internal): Enable pattern only for valid operand
        combinations.
        * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
        tie only 128bit modes. For MMX registers, tie only 64bit modes.

testsuite/ChangeLog:

	PR target/30970
	* gcc.target/i386/gfortran.dg/pr30970.c: New test.

From-SVN: r122387
2007-02-27 22:27:27 +01:00
Mike Stump 3b41414683 darwin-crt3.c: Avoid compilation when compiling for a kext multilib.
* config/darwin-crt3.c: Avoid compilation when compiling for a
	kext multilib.

From-SVN: r122385
2007-02-27 20:47:55 +00:00
Joseph Myers f686ec0522 mkheaders.in (incdir): Use include-fixed not include.
fixincludes:
	* mkheaders.in (incdir): Use include-fixed not include.

gcc:
	* Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
	FIXED_INCLUDE_DIR.
	(stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
	for fixed headers and limits.h.
	(install-include-dir, install-headers-tar, install-headers-cpio,
	install-headers-cp, real-install-headers-tar,
	real-install-headers-cpio, real-install-headers-cp): Handle
	include-fixed as well as include.
	(install-mkheaders): Don't install files that go only in include
	not include-fixed.
	* cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
	from GCC_INCLUDE_DIR.
	* gcc.c (process_command): Remove special -BstageN/ handling.
	(do_spec_1): Add include-fixed directories.

From-SVN: r122384
2007-02-27 20:32:13 +00:00
Bernd Schmidt 01e7cd6e29 t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and _smulsi3_highpart.
* config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
	_smulsi3_highpart.
	* config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
	New functions.
	* config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
	patterns.

From-SVN: r122379
2007-02-27 16:29:10 +00:00
Mark Mitchell f6fc5c864b c-common.c (get_priority): Add check for SUPPORTS_INIT_PRIORITY.
* c-common.c (get_priority): Add check for
	SUPPORTS_INIT_PRIORITY.

	* lib/target-supports.exp (check_effective_target_init_priority):
	Remove Solaris special case.

From-SVN: r122378
2007-02-27 15:49:23 +00:00
Bernd Schmidt 9713091585 bfin.md (rotl16, [...]): New patterns.
* config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.

From-SVN: r122377
2007-02-27 15:26:19 +00:00
Bernd Schmidt 6ce986b971 bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg instead of R2.
* config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
	instead of R2.

From-SVN: r122376
2007-02-27 15:20:47 +00:00
Bernd Schmidt 329437dd43 bfin.md (ssashiftv2hi3, [...]): Fix output template to use half reg for operand 2.
* config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
	lshifthi3): Fix output template to use half reg for operand 2.

From-SVN: r122374
2007-02-27 13:55:56 +00:00
Bernd Schmidt 2889abeda3 bfin.h (enum reg_class, [...]): Add D0REGS through D7REGS.
* config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
	REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
	(CONSTRAINT_LEN): Add entry for 'q'.
	(REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
	Add 'q' constraints.
	(REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
	(CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.

	* config/bfin/bfin.md (add_with_carry): New pattern.
	(s_or_u, su_optab, su_modifier): New code macros/attrs.
	(<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
	<su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
	support unsigned multiplies too.  Removed incorrect commutativity from
	operand 1 constraint where appropriate.
	(usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
	patterns.
	(<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
	<su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
	New patterns.
	(usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
	usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
	usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
	usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
	usmulhisi_hh_huh): New patterns.

From-SVN: r122373
2007-02-27 13:44:10 +00:00
Bernd Schmidt ce27ef3d72 bfin.c: Include "cfglayout.h".
* config/bfin/bfin.c: Include "cfglayout.h".
	(MAX_LSETUP_DISTANCE): New macro.
	(struct loop_info): New members incoming, incoming_src and
	incoming_dest.  Delete member predecessor.
	(length_for_loop): New function.
	(bfin_optimize_loop): Handle more different loop structures.
	(bfin_discover_loop): Rework detection of predecessor blocks by
	examining incoming edges.
	(bfin_discover_loops, bfin_free_loops): New functions, broken out of
	bfin_reorg_loops.
	(bfin_reorder_loops): New function.
	(bfin_reorg_loops): Use these three new functions.

From-SVN: r122372
2007-02-27 13:25:41 +00:00
Bernd Schmidt 9b02a95e80 bfin.md (doloop_end): FAIL if counter reg isn't SImode.
* config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.

From-SVN: r122371
2007-02-27 13:13:26 +00:00
Andreas Schwab 3b4ed48b65 * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
From-SVN: r122368
2007-02-27 10:45:58 +00:00
Jan Hubicka dcb995f769 predict.c (last_basic_block_p): Remove.
* predict.c (last_basic_block_p): Remove.
	(tree_estimate_probability): Update return heuristic for commonized
	return blocks.

From-SVN: r122367
2007-02-27 10:21:55 +00:00
Brooks Moses e5fc6da81a * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
From-SVN: r122366
2007-02-27 02:19:59 -08:00
Brooks Moses 7771bb621a gcc/ChangeLog ---------------------------------------------------------
gcc/ChangeLog ---------------------------------------------------------
	* doc/include/gcc-common.texi (versionsubtitle): New macro.
	* doc/cpp.texi: Standardize title page.
	* doc/cppinternals.texi: Likewise.
	* doc/gcc.texi: Standardize title page, remove version number
	from copyright page.
	* doc/gccint.texi: Likewise.
	* doc/install.texi: Standardize title page, add table of
	contents.

ada/ChangeLog ---------------------------------------------------------
	* gnat-style.texi: Standardize title page.
	* gnat_rm.texi: Likewise.
	* gnat_ugn.texi: Likewise.

fortran/ChangeLog -----------------------------------------------------
	* gfortran.texi: Standardize title page, remove version number
	from copyright page.

treelang/ChangeLog ----------------------------------------------------
	* treelang.texi: Standardize title page, remove version number
	from copyright page.

From-SVN: r122358
2007-02-26 22:00:47 -08:00
Jan Hubicka 75b6bb627c predict.def: Set outcomes according to more recent results.
* predict.def: Set outcomes according to more recent results.
	(PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
	Remove dead predictors.
	* predict.c (return_prediction): Fix pasto.

From-SVN: r122347
2007-02-27 00:07:03 +00:00
Bernd Schmidt 4898239452 loop-iv.c (simplify_using_initial_values): Fix oversight in previous change; avoid a memory leak when returning early.
* loop-iv.c (simplify_using_initial_values): Fix oversight in previous
	change; avoid a memory leak when returning early.

From-SVN: r122346
2007-02-26 23:42:43 +00:00
Mark Mitchell 57a4c089e2 c-decl.c (static_ctors): Move to c-common.c.
* c-decl.c (static_ctors): Move to c-common.c.
	(static_dtors): Likewise.
	(finish_function): Use c_record_cdtor_fn.
	(build_cdtor): Move to c-common.c.
	(c_write_global_declarations): Use c_build_cdtor_fns.
	* c-common.h (static_ctors): Declare.
	(static_dtors): Likewise.
	(c_record_cdtor_fn): Likewise.
	(c_build_cdtor_fns): Likewise.
	* c-common.c (static_ctors): New variable.
	(static_dtors): Likewise.
	(c_record_cdtor_fn): New function.
	(build_cdtor): Move from c-decl.c
	(c_build_cdtor_fns): New function.

	* semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
	* decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.

From-SVN: r122341
2007-02-26 21:14:24 +00:00
Mark Mitchell b2f4bed837 output.h (assemble_addr_to_section): Declare.
* output.h (assemble_addr_to_section): Declare.
	(get_cdtor_priority_section): Likewise.
	* varasm.c (assemble_addr_to_section): New function.
	(get_cdtor_priority_section): Likewise.
	(default_named_section_asm_out_destructor): Use them.
	(destor_dtor_section_asm_out_destructor): Likewise.
	(default_named_section_asm_out_constructor): Likewise.
	(default_ctor_section_asm_out_constructor): Likewise.
	* config.gcc (*-*-vxworks*): Include vxworks.o.
	* config/t-vxworks (vxworks.o): New target.
	* config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
	(TARGET_ASM_CONSTRUCTOR): Define.
	(TARGET_ASM_DESTRUCTOR): Likewise.
	(vxworks_asm_out_constructor): Declare.
	(vxworks_asm_out_destructor): Likewise.

	* c-common.c (get_priority): Check that we have not just an
	INTEGER_CST, but an integer constant with integeral type.

	* gcc.dg/vxworks/vxworks.exp: New file.
	* gcc.dg/vxworks/initpri1.c: Likewise.
	* gcc.dg/vxworks/initpri2.c: Likewise.
	* gcc.dg/initpri2.c: Add more tests.
	* g++.dg/special/initpri2.C: Likewise.

From-SVN: r122335
2007-02-26 15:53:51 +00:00
Uros Bizjak c4a4d1a076 re PR tree-optimization/30938 (Bootstrap fails on x86_64 for -ftree-vectorize)
PR tree-optimization/30938
        * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
        use &dt[nargs-1] instead of &dt[nargs] in the call to
        vect_is_simple_use().

From-SVN: r122323
2007-02-26 00:18:45 +01:00
Ulrich Weigand b098aaf2ae reload.c (find_reloads_address_1): Handle PLUS expressions resulting from register elimination as PRE_MODIFY /...
* reload.c (find_reloads_address_1): Handle PLUS expressions resulting
	from register elimination as PRE_MODIFY / POST_MODIFY increments.
	Do not attempt to handle MEM inside auto-inc expressions.
	* reload1.c (eliminate_regs_1): Do not attempt to handle elimination
	of a register modified by an auto-inc expression.  However, do handle
	elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
	(elimination_effects): Prohibit elimination of a register modified
	by an auto-inc expression.  Disable register elimination rules whose
	target register is modified by an auto-inc expression with variable
	increment.

From-SVN: r122318
2007-02-25 20:56:46 +00:00
Zdenek Dvorak 4839cb59b3 tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix off-by-one error.
* tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
	off-by-one error.
	(array_at_struct_end_p): New function.
	(idx_infer_loop_bounds): Use it.
	(estimate_numbers_of_iterations_loop): Export.
	* predict.c (predict_loops): Use estimated_loop_iterations_int.
	Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
	(tree_estimate_probability): Call record_loop_exits.
	* tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
	(estimated_loop_iterations, estimated_loop_iterations_int,
	estimated_loop_iterations_tree): New functions.
	(analyze_siv_subscript_cst_affine,
	compute_overlap_steps_for_affine_1_2,
	analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
	(analyze_miv_subscript): Use estimated_loop_iterations_tree.
	* predict.def (PRED_LOOP_ITERATIONS): Update comment.
	(PRED_LOOP_ITERATIONS_GUESSED): New.
	* cfgloop.c (record_loop_exits): Do nothing if there are no loops.
	* cfgloop.h (estimate_numbers_of_iterations_loop,
	estimated_loop_iterations_int): Declare.

From-SVN: r122316
2007-02-25 19:49:22 +00:00
Mark Mitchell fc8600f9c1 extend.texi: Document optional priority argument to constructors and destructors.
* doc/extend.texi: Document optional priority argument to
	constructors and destructors.
	* tree.c (init_priority_for_decl): Adjust GTY markers.
	(init_ttree): Use priority-info hash functions for
	init_priority_for_decl.
	(tree_map_eq): Rename to ...
	(tree_map_base_eq): ... this.
	(tree_map_marked_p): Rename to ...
	(tree_map_base_marked_p): ... this.
	(tree_map_base_hash): New function.
	(decl_init_priority_lookup): Rework.
	(decl_fini_priority_lookup): New function.
	(decl_priority_info): New function.
	(decl_init_priority_insert): Use it.
	(decl_fini_priority_insert): Likewise.
	(decl_restrict_base_lookup): Adjust for refactoring of tree_map
	hierarchy.
	(decl_restrict_base_insert): Likewise.
	(decl_debug_expr_insert): Likewise.
	(decl_value_expr_lookup): Likewise.
	(decl_value_expr_insert): Likewise.
	* tree.h (priority_type): New type.
	(decl_init_priority_lookup): Use priority_type.
	(decl_fini_priority_lookup): New function.
	(decl_init_priority_insert): Use priority_type.
	(decl_fini_priority_insert): New function.
	(DECL_HAS_INIT_PRIORITY): Tweak comments.
	(DECL_INIT_PRIORITY): Likewise.
	(SET_DECL_INIT_PRIORITY): Add comment.
	(DECL_FINI_PRIORITY): New macro.
	(SET_DECL_FINI_PRIORITY): Likewise.
	(DEFAULT_INIT_PRIORITY): Document.
	(MAX_INIT_PRIORITY): Likewise.
	(MAX_RESERVED_INIT_PRIORITY): Likewise.
	(tree_map_base): New type.
	(tree_map_base_eq): New function.
	(tree_map_base_hash): Likewise.
	(tree_map_base_marked_p): Likewise.
	(tree_map): Inherit from tree_map_base.
	(tree_map_eq): Make it a macro.
	(tree_map_marked_p): Likewise.
	(tree_int_map): Inherit from tree_map_base.
	(tree_int_map_eq): Make it a macro.
	(tree_int_map_hash): Likewise.
	(tree_int_map_marked_p): Likewise.
	(tree_priority_map): New type.
	(tree_priority_map_eq): New macro.
	(tree_priority_map_hash): Likewise.
	(tree_priority_map_marked_p): Likewise.
	* varasm.c (emults_decl): Adjust for refactoring of tree_map
	hierarchy.
	(emutls_common_1): Likewise.
	* lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
	* tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
	of tree_map hierarchy.
	* tree-cfg.c (move_stmt_r): Likewise.
	(new_label_mapper): Likewise.
	* c-tree.h (c_expand_body): Move to ...
	* c-common.h (c_expand_body): ... here.
	* c-decl.c (c_expand_body): Move to ...
	* c-common.c (c_expand_body): ... here.
	(c_common_attribute_table): Allow 1 argument for the constructor
	and destructor attributes.
	(get_priority): New function.
	(handle_constructor_attribute): Set DECL_INIT_PRIORITY.
	(handle_destructor_attribute): Set DECL_FINI_PRIORITY.

	* cp-tree.h (static_ctors): Remove.
	* cp-tree.h (static_dtors): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
	refactoring of tree_map hierarchy.
	(decl_shadowed_for_var_insert): Likewise.
	* semantics.c (expand_body): Use c_expand_body.
	(expand_or_defer_fn): Don't update static_ctors or static_dtors.
	* decl2.c (static_ctors): Remove.
	(static_dtors): Likewise.
	(generate_ctor_or_dtor_function): Pass NULL_TREE to
	objc_generate_static_init_call.  Do not call static_[cd]tors.
	(generate_ctor_and_dtor_functions_for_priority): Do not check for
	static_[cd]tors.
	(cp_write_global_declarations): Likewise.

	* decl.c (annotate_value): Adjust for refactoring of tree_map
	hierarchy.

	* gcc.dg/initpri1.c: New test.
	* gcc.dg/initpri2.c: Likewise.
	* g++.dg/special/initpri1.C: New test.
	* g++.dg/special/initpri2.C: Likewise.
	* g++.dg/special/conpr-1.C: Use init_priority effective target.
	* g++.dg/special/conpr-2.C: Likewise.
	* g++.dg/special/conpr-3.C: Likewise.
	* g++.dg/special/conpr-4.C: Likewise.
	* g++.dg/special/initp1.C: Likewise.
	* g++.dg/special/ecos.exp: Remove code to detect availability of
	constructor priorities.
	* lib/target-support.exp (target_init_priority): New function.

From-SVN: r122315
2007-02-25 18:47:05 +00:00
Jan Hubicka 2a025b54f6 re PR middle-end/30509 (ice for legal code with -O3)
PR middle-end/30509
	* tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.

From-SVN: r122314
2007-02-25 18:11:20 +00:00
Jan Hubicka bd8d4d1917 re PR target/30778 (invalid code generation for memset() with -mtune=k8)
PR target/30778
	* i386.c (counter_mode): New function.
	(expand_set_or_movmem_via_loop): Use it.
	(expand_movmem_epilogue): Likewise; fix pasto.
	(ix86_expand_movmem): Do emit guard even for constant counts.
	(ix86_expand_setmem): Likewise.

From-SVN: r122313
2007-02-25 17:37:37 +00:00
Nick Clifton e133c867ea frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
* config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
   (JUMP_TABLES_IN_TEXT_SECTION): Define.

From-SVN: r122311
2007-02-25 07:47:49 +00:00
Uros Bizjak 730130547b re PR target/30770 (BOOT_CFLAGS="-O2 -g -mtune=nocona" miscompiled the stage 3 compiler)
PR target/30770
        * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
        count argument with 0x10, not with 0x16.
        (expand_setmem_epilogue): Ditto.

From-SVN: r122301
2007-02-25 00:29:30 +01:00
Mike Stump 320ce1d3a3 i386.c (output_pic_addr_const): Stubify optimized symbols.
* config/i386/i386.c (output_pic_addr_const): Stubify optimized
	symbols.

From-SVN: r122297
2007-02-24 22:27:26 +00:00
Richard Guenther a31498d293 re PR middle-end/30951 (Does not fold x + CST == x and x + CST != x)
2007-02-24  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30951
	* fold-const.c (fold_binary): Fold x +- CST op x for
	EQ_EXPR and NE_EXPR.

	* gcc.dg/pr30951.c: New testcase.

From-SVN: r122295
2007-02-24 19:55:47 +00:00
John David Anglin 1e6e2c303b pa.md (muldi3): Force subregs to registers in 64-bit expander.
* pa.md (muldi3): Force subregs to registers in 64-bit expander.

From-SVN: r122294
2007-02-24 19:16:45 +00:00