1. 01 Sep, 2008 1 commit
    • expr.c (MOVE_BY_PIECES_P, [...]): Pass speed operand. · e04ad03d
      	* expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
      	* expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
      	* gimplify.c (gimplify_init_constructor): Add speed operand.
      	* tree-sra.c (decide_block_copy): Likewise.
      	* tree-inline.c (estimate_move_cost): Likewise.
      	* config/alpha/alpha.h (MOVE_RATIO): Update.
      	* config/frv/frv.c (MOVE_RATIO): Update.
      	* config/spu/spu.h (MOVE_RATIO): Update.
      	* config/sparc/sparc.h (MOVE_RATIO): Update.
      	* config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
      	* config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
      	* config/cris/cris.h (MOVE_RATIO): Update.
      	* config/mn10300/mn10300.h (MOVE_RATIO): Update.
      	* config/arm/arm.h (MOVE_RATIO): Update.
      	* config/pa/pa.md: Update uses of MOVE_RATIO
      	* config/pa/pa.h (MOVE_RATIO): Update.
      	* config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
      	* config/h8300/h8300.h (MOVE_RATIO): Update.
      	* config/v850/v850.h (MOVE_RATIO): Update.
      	* config/bfin/bfin.h (MOVE_RATIO): Update.
      
      From-SVN: r139855
      Jan Hubicka committed
  2. 30 Aug, 2008 1 commit
    • optabs.c (expand_abs_nojump): Update BRANCH_COST call. · 3a4fd356
      	* optabs.c (expand_abs_nojump): Update BRANCH_COST call.
      	* fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
      	* dojump.c (do_jump): Likewise.
      	* ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
      	(note-if_info): Add BRANCH_COST.
      	(noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
      	noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
      	noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
      	branch cost.
      	* expr.h (BRANCH_COST): Update default.
      	* predict.c (predictable_edge_p): New function.
      	* expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
      	Update BRANCH_COST call.
      	* basic-block.h (predictable_edge_p): Declare.
      	* config/alpha/alpha.h (BRANCH_COST): Update.
      	* config/frv/frv.h (BRANCH_COST): Update.
      	* config/s390/s390.h (BRANCH_COST): Update.
      	* config/spu/spu.h (BRANCH_COST): Update.
      	* config/sparc/sparc.h (BRANCH_COST): Update.
      	* config/m32r/m32r.h (BRANCH_COST): Update.
      	* config/i386/i386.h (BRANCH_COST): Update.
      	* config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
      	* config/sh/sh.h (BRANCH_COST): Update.
      	* config/pdp11/pdp11.h (BRANCH_COST): Update.
      	* config/avr/avr.h (BRANCH_COST): Update.
      	* config/crx/crx.h (BRANCH_COST): Update.
      	* config/xtensa/xtensa.h (BRANCH_COST): Update.
      	* config/stormy16/stormy16.h (BRANCH_COST): Update.
      	* config/m68hc11/m68hc11.h (BRANCH_COST): Update.
      	* config/iq2000/iq2000.h (BRANCH_COST): Update.
      	* config/ia64/ia64.h (BRANCH_COST): Update.
      	* config/rs6000/rs6000.h (BRANCH_COST): Update.
      	* config/arc/arc.h (BRANCH_COST): Update.
      	* config/score/score.h (BRANCH_COST): Update.
      	* config/arm/arm.h (BRANCH_COST): Update.
      	* config/pa/pa.h (BRANCH_COST): Update.
      	* config/mips/mips.h (BRANCH_COST): Update.
      	* config/vax/vax.h (BRANCH_COST): Update.
      	* config/h8300/h8300.h (BRANCH_COST): Update.
      	* params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
      	* doc/invoke.texi (predictable-branch-cost-outcome): Document.
      	* doc/tm.texi (BRANCH_COST): Update.
      
      From-SVN: r139804
      Jan Hubicka committed
  3. 16 Aug, 2008 1 commit
    • re PR middle-end/20548 (ACATS c52103x c52104x c52104y segfault) · b38f3813
      	PR ada/20548
      	* common.opt (-fstack-check): Do not declare the variable here.
      	(-fstack-check=): New option variant.
      	* doc/invoke.texi (Code Gen Options): Document it.
      	* expr.h (STACK_OLD_CHECK_PROTECT): New macro.
      	(STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
      	(STACK_CHECK_STATIC_BUILTIN): New macro.
      	* doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
      	* opts.c: Include expr.h.
      	(common_handle_option) <OPT_fold_stack_check_>: New case.
      	<OPT_fstack_check>: Likewise.
      	* calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
      	consistently in the test for variable-sized types.  Adjust for
      	new behaviour of flag_stack_check.
      	* explow.c: Include except.h.
      	(allocate_dynamic_stack_space): Do not take into account
      	STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
      	* function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
      	for variable-sized parameters.  Treat all parameters whose size is
      	greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
      	stack checking is enabled.
      	* gimplify.c (gimplify_decl_expr): Treat non-static objects whose
      	size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
      	if generic stack checking is enabled.
      	(expand_function_end): Adjust for new behaviour of flag_stack_check.
      	* reload1.c (reload): Likewise.
      	* stmt.c (expand_decl): Assert that all automatic variables have
      	fixed size at this point and remove dead code.
      	* flags.h (stack_check_type): New enumeration type.
      	(flag_stack_check): Declare.
      	* toplev.c (flag_stack_check): New global variable.
      	* Makefile.in (opts.o): Add dependency on EXPR_H.
      	(explow.o): Add dependency on except.h.
      ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Use DECL_SIZE_UNIT in the
      	setjmp test consistently.  Adjust for new behaviour of flag_stack_check.
      	* gcc-interface/utils2.c (build_call_alloc_dealloc): Remove redundant
      	test of flag_stack_check.  Adjust for new behaviour of flag_stack_check.
      
      From-SVN: r139159
      Eric Botcazou committed
  4. 06 Jul, 2008 1 commit
    • config.gcc (extra_headers): Add cross-stdarg.h for target x86_64-*-* and i?86-*-*. · 35cbb299
      2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
      
      	* config.gcc (extra_headers): Add cross-stdarg.h for target
      	x86_64-*-* and i?86-*-*.
      	* config/i386/cross-stdarg.h: New.
      	* builtins.c (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	(stabilize_va_list): Replace va_list_type_node use by
      	mtarget.canonical_va_list_type.
      	(gimplify_va_arg_expr): Likewise.
      	(expand_builtin_va_copy): Replace va_list_type_node use by
      	mtarget.fn_abi_va_list.
      	* tree-sra.c (is_va_list_type): New helper.
      	(decl_can_be_decomposed_p): Replace
      	va_list_type_node use by is_va_list_type.
      	* tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
      	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
      	* c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
      	* config/i386/i386-protos.h (ix86_get_valist_type): New.
      	(ix86_enum_va_list): New.
      	* config/i386/i386.c (sysv_va_list_type_node): New.
      	(ms_va_list_type_node): New.
      	(ix86_function_type_abi): Remove sorry.
      	(ix86_build_builtin_va_list_abi): New.
      	(ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
      	for 64-bit targets.
      	(ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
      	(ix86_init_builtins_va_builtins_abi): New.
      	(ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
      	for 64-bit targets.
      	(ix86_handle_abi_attribute): New.
      	(attribute_spec): Add sysv_abi and ms_abi.
      	(ix86_fn_abi_va_list): New.
      	(ix86_canonical_va_list_type): New.
      	(ix86_enum_va_list): New.
      	(TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	* config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
      	* doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_ENUM_VA_LIST): New.
      	* expr.h (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	* target-def.h (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
      	TARGET_CANONICAL_VA_LIST_TYPE.
      	* target.h (struct gcc_target): Add fn_abi_va_list hook
      	and canonical_va_list_type hook.
      
      From-SVN: r137525
      Kai Tietz committed
  5. 04 Jul, 2008 2 commits
    • Revert 137452. · 1d79e31d
      From-SVN: r137457
      Kai Tietz committed
    • config.gcc (extra_headers): Add cross-stdarg.h for target x86_64-*-* and i?86-*-*. · 0b4b69ef
      2008-07-04  Kai Tietz  <kai.tietz@onevision.com>
      
      	* config.gcc (extra_headers): Add cross-stdarg.h for target
      	x86_64-*-* and i?86-*-*.
      	* config/i386/cross-stdarg.h: New.
      	* builtins.c (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	(stabilize_va_list): Replace va_list_type_node use by
      	mtarget.canonical_va_list_type.
      	(gimplify_va_arg_expr): Likewise.
      	(expand_builtin_va_copy): Replace va_list_type_node use by
      	mtarget.fn_abi_va_list.
      	* tree-sra.c (is_va_list_type): New helper.
      	(decl_can_be_decomposed_p): Replace
      	va_list_type_node use by is_va_list_type.
      	* tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
      	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
      	* c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
      	* config/i386/i386-protos.h (ix86_get_valist_type): New.
      	(ix86_enum_va_list): New.
      	* config/i386/i386.c (sysv_va_list_type_node): New.
      	(ms_va_list_type_node): New.
      	(ix86_function_type_abi): Remove sorry.
      	(ix86_build_builtin_va_list_abi): New.
      	(ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
      	for 64-bit targets.
      	(ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
      	(ix86_init_builtins_va_builtins_abi): New.
      	(ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
      	for 64-bit targets.
      	(ix86_handle_abi_attribute): New.
      	(attribute_spec): Add sysv_abi and ms_abi.
      	(ix86_fn_abi_va_list): New.
      	(ix86_canonical_va_list_type): New.
      	(ix86_enum_va_list): New.
      	(TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	* config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
      	* doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_ENUM_VA_LIST): New.
      	* expr.h (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	* target-def.h (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
      	TARGET_CANONICAL_VA_LIST_TYPE.
      	* target.h (struct gcc_target): Add fn_abi_va_list hook
      	and canonical_va_list_type hook.
      
      2008-07-04  Kai Tietz  <kai.tietz@onevision.com>
      
      	* gcc.dg/callabi/callabi.h: New.
      	* gcc.dg/callabi/vaarg-1.c: New.
      	* gcc.dg/callabi/vaarg-2.c: New.
      	* gcc.dg/callabi/vaarg-3.c: New.
      	* gcc.dg/callabi/func-1.c: New.
      
      From-SVN: r137452
      Kai Tietz committed
  6. 03 Apr, 2008 1 commit
  7. 02 Apr, 2008 1 commit
    • expr.c (expand_var): Delete it. · 4846b435
      2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
      
      	* expr.c (expand_var): Delete it.
      	* expr.h (expand_var): Delete prototype.
      	* function.c (expand_function_start): Use expand_decl instead.
      	* cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
      	langhook.
      
      From-SVN: r133830
      Paolo Bonzini committed
  8. 22 Mar, 2008 1 commit
    • re PR rtl-optimization/33927 (replace_read in dse.c could handle cases where… · 18b526e8
      re PR rtl-optimization/33927 (replace_read in dse.c could handle cases where GET_MODE_CLASS (read_mode) != GET_MODE_CLASS (store_mode) (and the size is the same))
      
      gcc/
      	PR rtl-optimization/33927
      	* Makefile.in (dse.o): Depend on $(TM_P_H).
      	* expr.h (extract_low_bits): Declare.
      	* expmed.c (extract_low_bits): New function.
      	* rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
      	* dse.c: Include tm_p.h.
      	(find_shift_sequence): Remove the read_reg argument and return the
      	read value.  Emit the instructions instead of returning them.
      	Iterate on new_mode rather than calculating it each time.
      	Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
      	source to NEW_MODE and extract_low_bits to convert the shifted
      	value to READ_MODE.
      	(replace_read): Allow the load and store to have different mode
      	classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
      	or extraction instructions before trying the replacement.  Update
      	dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
      
      gcc/testsuite/
      	* gcc.target/mips/dse-1.c: Add checks for zeros.
      
      From-SVN: r133452
      Richard Sandiford committed
  9. 03 Dec, 2007 1 commit
    • re PR middle-end/33713 (can't find a register in class 'GENERAL_REGS' while reloading 'asm') · 3de5e93a
              PR33713
              * doc/invoke.texi: Remove -fforce-addr documentation.
              * expr.c (emit_move_insn): Remove use of flag_force_addr.
              (expand_expr_real_1): Same.
              (do_tablejump): Same.
              Call memory_address instead of memory_address_noforce.
              * expr.h (memory_address_noforce): Remove prototype.
              * explow.c (memory_address): Remove support for flag_force_addr.
              (validize_mem): Same.
              (memory_address_noforce): Remove.
              * common.opt: Add dummy documentation for -fforce-addr.
              * combine.c (can_combine_p): Remove -fforce-addr comment.
              * config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
              flag_force_addr.
              * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
              relating to memory_address_noforce.
              * testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
              * testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
      
      From-SVN: r130591
      Steven Bosscher committed
  10. 27 Aug, 2007 1 commit
    • Separate target-specific initialization from general back-end initialization. · b5deb7b6
      2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
      	    David Ung  <davidu@mips.com>
                  Nigel Stephens <nigel@mips.com>
      
      	gcc/
      	Separate target-specific initialization from general
      	back-end initialization.
      
      	* toplev.c (init_alignments): New, split out from...
      	(process_options): ...here.
      	(backend_init_target):  New, split out from...
      	(backend_init): ...here.
      	(lang_dependent_init_target):  New, split out from...
      	(lang_dependent_init): ...here.
      	(target_reinit): New.
      	* toplev.h (target_reinit): Declare.
      	* expr.c (init_expr_target): Renamed from init_expr_once, since it
      	now can be called more than once.  Update comments.
      	* expr.h (init_expr_target): Likewise.
      	* alias.c (init_alias_target): Renamed from init_alias_once, since it
      	now can be called more than once.  Explicitly zero
      	static_reg_base_value.
      	* emit-rtl.c (init_emit_regs): New, split out from...
      	(init_emit_once): Here.
      	* regclass.c (initial_fixed_regs, initial_call_used_regs): Make
      	non-const, so that changes from command-line arguments can overwrite
      	values provided by the static initializers.
      	(initial_call_really_used_regs): New, used similarly to the above.
      	(initial_reg_names): Likewise.
      	(last_mode_for_init_move_cost): Promoted function-local static to
      	file-scope static to make it accessible outside init_move_cost.
      	(init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
      	Do not initialize inv_reg_alloc_order yet, either.  Do initialize
      	reg_names since it is needed for parsing command-line options.
      	(init_move_cost): Use last_mode_for_init_move_cost instead of
      	function-local static.
      	(init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
      	call_really_used_regs now.  Reinitialize reg_names.  Also
      	initialize inv_reg_alloc_order.  Zero reg_class_subunion and
      	reg_class_superunion.  Clear losing_caller_save_reg_set.
      	Preserve global registers if called more than once.  Reset
      	move cost, may_move_in_cost, may_move_out_cost, and
      	last_mode_for_init_move_cost.
      	(init_reg_modes_target): Renamed from init_reg_modes_once, since it
      	can now be invoked more than once.  Update comments.
      	(init_regs): Update comments.
      	(fix_register): Update initial_fixed_regs, initial_call_used_regs,
      	and initial_call_really_used_regs, instead of the non-initial 
              variables.  This allows us to save the command-line register settings
      	after target reinitialization.
      	(init_reg_autoinc): Zero forbidden_inc_dec_classes.
      	* rtl.h (init_emit_regs): Declare.
      	(init_reg_modes_target, init_alias_target): Renamed as described
      	above.
      	* reload1.c (init_reload): Update comments.
      	* optabs.c (init_optabs): Likewise.
      	* cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
      	
      
      
      Co-Authored-By: David Ung <davidu@mips.com>
      Co-Authored-By: Nigel Stephens <nigel@mips.com>
      
      From-SVN: r127832
      Sandra Loosemore committed
  11. 24 Aug, 2007 2 commits
    • re PR target/11787 (always call memcpy for block move in mips16) · cfa31150
      2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
                  Nigel Stephens <nigel@mips.com>
      
      	PR target/11787
      
      	gcc/
      
      	* doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
      	(STORE_BY_PIECES_P): No longer applies to __builtin_memset.
      	* expr.c (SET_BY_PIECES_P): Define.
      	(can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
      	it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
      	(store_expr):  Pass MEMSETP argument to can_store_by_pieces and
      	store_by_pieces.
      	* expr.h (SET_RATIO): Define.
      	(can_store_by_pieces, store_by_pieces):	Update prototypes.
      	* builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
      	can_store_by_pieces/store_by_pieces.
      	(expand_builtin_memcpy_args): Likewise.
      	(expand_builtin_strncpy): Likewise.
      	(expand_builtin_memset_args): Likewise.  Also remove special case
      	for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
      	decide what to do instead.
      	* value-prof.c (tree_stringops_transform): Pass MEMSETP argument
      	to can_store_by_pieces.
      
      	* config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
      	* config/s390/s390.h (SET_BY_PIECES_P): Likewise.
      
      	* config/mips/mips.opt (mmemcpy): Change from Var to Mask.
      	* config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
      	* config/mips/mips.h (MIPS_CALL_RATIO): Define.
      	(MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
      	(STORE_BY_PIECES_P): Define.
      
      Co-Authored-By: Nigel Stephens <nigel@mips.com>
      
      From-SVN: r127790
      Sandra Loosemore committed
    • expr.c (store_expr): Optimize initialization of an array with STRING_CST. · 14a43348
      	* expr.c (store_expr): Optimize initialization of an array
      	with STRING_CST.
      	* expr.h (builtin_strncpy_read_str): New prototype.
      	* builtins.c (builtin_strncpy_read_str): Remove prototype.
      	No longer static.
      
      	* gcc.dg/array-init-1.c: New test.
      
      From-SVN: r127769
      Jakub Jelinek committed
  12. 23 Aug, 2007 1 commit
    • arc-protos.h (arc_select_cc_mode, gen_compare_reg): Wrap in RTX_CODE macro guard. · 586de218
      	* config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
      	Wrap in RTX_CODE macro guard.
      	* config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
      	arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
      	arm_mark_dllimport, arm_pe_encode_section_info,
      	arm_pe_unique_section): Use ISO-C function declarations.
      	* config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
      	c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
      	c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
      	Likewise.
      	* config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
      	* config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
      	defining.
      	* config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
      	warnings.
      	* config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
      	* config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
      	(register_move_cost): Use ISO-C function declarations.
      	* config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
      	* config/score/score-protos.h (score_declare_object): Add
      	ATTRIBUTE_PRINTF_4.
      	* config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
      	warnings.
      	* final.c (profile_function): Avoid empty if-bodies.
      	
      	
      	* calls.c (must_pass_in_stack_var_size,
      	must_pass_in_stack_var_size_or_pad): Constify.
      	* config/alpha/alpha-protos.h (function_value): Likewise.
      	* config/alpha/alpha.c (alpha_return_in_memory,
      	alpha_pass_by_reference, function_value,
      	unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
      	Likewise.
      	* config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
      	TARGET_PROMOTE_PROTOTYPES): Likewise.
      	* config/arm/arm-protos.h (arm_return_in_memory,
      	arm_pad_arg_upward, arm_function_value): Likewise.
      	* config/arm/arm.c (arm_pass_by_reference,
      	arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
      	arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
      	Likewise.
      	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
      	* config/avr/avr-protos.h (avr_function_value): Likewise.
      	* config/avr/avr.c (avr_return_in_memory,
      	gas_output_limited_string, gas_output_ascii, avr_function_value,
      	avr_return_in_memory): Likewise.
      	* config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
      	* config/bfin/bfin.c (bfin_pass_by_reference,
      	bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
      	Likewise.
      	* config/cris/cris.c (cris_pass_by_reference,
      	TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
      	* config/crx/crx.c (crx_return_in_memory): Likewise.
      	* config/darwin.c (function_base, machopic_function_base_name):
      	Likewise.
      	* config/fr30/fr30.c (fr30_must_pass_in_stack,
      	TARGET_PROMOTE_PROTOTYPES): Likewise.
      	* config/frv/frv.c (frv_must_pass_in_stack): Likewise.
      	* config/h8300/h8300.c (h8300_return_in_memory): Likewise.
      	* config/i386/i386-protos.h (ix86_return_in_memory,
      	ix86_sol10_return_in_memory): Likewise.
      	* config/i386/i386.c (ix86_function_value,
      	ix86_function_sseregparm, ix86_must_pass_in_stack,
      	type_natural_mode, classify_argument, examine_argument,
      	construct_container, ix86_pass_by_reference, function_value_32,
      	function_value_64, ix86_function_value_1, return_in_memory_32,
      	return_in_memory_64, return_in_memory_ms_64,
      	ix86_return_in_memory, ix86_sol10_return_in_memory,
      	TARGET_PROMOTE_PROTOTYPES): Likewise.
      	* config/ia64/ia64-protos.h (ia64_function_value,
      	ia64_hpux_function_arg_padding): Likewise.
      	* config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
      	ia64_function_value, bundle_state_hash, bundle_state_eq_p,
      	ia64_hpux_function_arg_padding): Likewise.
      	* config/iq2000/iq2000-protos.h (function_arg,
      	iq2000_function_value): Likewise.
      	* config/iq2000/iq2000.c (iq2000_return_in_memory,
      	iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
      	function_arg, iq2000_function_value): Likewise.
      	* config/m32c/m32c-protos.h (m32c_function_value,
      	m32c_promote_function_return): Likewise.
      	* config/m32c/m32c.c (m32c_pass_by_reference,
      	m32c_promote_prototypes, m32c_promote_function_return,
      	m32c_function_value): Likewise.
      	* config/m32r/m32r.c (m32r_return_in_memory,
      	m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
      	m32r_in_small_data_p): Likewise.
      	* config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
      	Likewise.
      	* config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
      	m68hc11_function_arg_padding): Likewise.
      	* config/m68k/m68k-protos.h (m68k_function_value): Likewise.
      	* config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
      	m68k_function_value): Likewise.
      	* config/mcore/mcore-protos.h (mcore_num_arg_regs,
      	mcore_function_value): Likewise.
      	* config/mcore/mcore.c (handle_structs_in_regs,
      	mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
      	mcore_num_arg_regs, mcore_function_value): Likewise.
      	* config/mips/mips-protos.h (mips_pad_arg_upward,
      	mips_function_value): Likewise.
      	* config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
      	mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
      	TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
      	mips_function_value): Likewise.
      	* config/mmix/mmix-protos.h (mmix_function_outgoing_value):
      	Likewise.
      	* config/mmix/mmix.c (mmix_pass_by_reference,
      	TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
      	mmix_encode_section_info): Likewise.
      	* config/mn10300/mn10300-protos.h (mn10300_function_value):
      	Likewise.
      	* config/mn10300/mn10300.c (mn10300_return_in_memory,
      	mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
      	mn10300_function_value): Likewise.
      	* config/mt/mt-protos.h (mt_function_value): Likewise.
      	* config/mt/mt.c (mt_pass_by_reference, mt_function_value,
      	mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
      	* config/pa/pa-protos.h (function_arg_padding, function_value,
      	pa_return_in_memory): Likewise.
      	* config/pa/pa.c (pa_pass_by_reference,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
      	function_arg_padding, function_value, pa_return_in_memory):
      	Likewise.
      	* config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
      	* config/rs6000/rs6000-protos.h (rs6000_function_value,
      	function_arg_padding): Likewise.
      	* config/rs6000/rs6000.c (rs6000_return_in_memory,
      	rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
      	rs6000_pass_by_reference, rs6000_must_pass_in_stack,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
      	function_arg_padding, altivec_expand_dst_builtin,
      	altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
      	altivec_init_builtins, rs6000_common_init_builtins,
      	rs6000_function_value): Likewise.
      	* s390/s390-protos.h (s390_function_value): Likewise.
      	* config/s390/s390.c (s390_function_arg_size,
      	s390_pass_by_reference, s390_return_in_memory,
      	s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
      	* config/score/score-protos.h (score_function_value): Likewise.
      	* config/score/score.c (score_arg_partial_bytes,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
      	TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
      	score_pass_by_reference, score_add_offset, score_function_value):
      	Likewise.
      	* config/sh/sh-protos.h (sh_attr_renesas_p,
      	sh_promote_prototypes): Likewise.
      	* config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
      	sh_callee_copies, sh_promote_prototypes, shcompact_byref,
      	sh_attr_renesas_p): Likewise.
      	* config/sparc/sparc-protos.h (function_value,
      	function_arg_padding): Likewise.
      	* config/sparc/sparc.c (sparc_promote_prototypes,
      	sparc_return_in_memory, sparc_pass_by_reference,
      	TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
      	function_arg_record_value_2, function_arg_record_value_1,
      	function_arg_record_value, function_arg_record_value,
      	function_arg_padding, function_value): Likewise.
      	* config/spu/spu-protos.h (spu_function_value): Likewise.
      	* config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
      	spu_function_value): Likewise.
      	* config/stormy16/stormy16-protos.h (xstormy16_function_value):
      	Likewise.
      	* config/stormy16/stormy16.c (xstormy16_return_in_memory,
      	xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
      	Likewise.
      	* config/v850/v850.c (v850_return_in_memory,
      	v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
      	* config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
      	* config/xtensa/xtensa.c (xtensa_return_in_msb,
      	xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
      	Likewise.
      	* explow.c (promote_mode, hard_function_value): Likewise.
      	* expr.h (hard_function_value, promote_mode): Likewise.
      	* function.c (aggregate_value_p): Likewise.
      	* hooks.c (hook_bool_const_tree_true): New.
      	* hooks.h (hook_bool_const_tree_true): New.
      	* sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
      	* target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
      	TARGET_RETURN_IN_MSB): Likewise.
      	* target.h (promote_function_args, promote_function_return,
      	promote_prototypes, return_in_memory, return_in_msb,
      	pass_by_reference, must_pass_in_stack, callee_copies,
      	function_value): Likewise.
      	* targhooks.c (default_return_in_memory,
      	hook_pass_by_reference_must_pass_in_stack,
      	hook_callee_copies_named,
      	hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
      	hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
      	default_function_value): Likewise. 
      	* targhooks.h (default_return_in_memory,
      	hook_pass_by_reference_must_pass_in_stack,
      	hook_callee_copies_named,
      	hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
      	hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
      	default_function_value): Likewise.
      	* tree-ssa-structalias.c (const_equiv_class_label_t): New.
      	(equiv_class_label_hash, equiv_class_label_eq): Constify.
      	* tree-vectorizer.c (bb_in_loop_p): Likewise.
      	* tree.c (needs_to_live_in_memory): Likewise.
      	* tree.h (struct tree_type, needs_to_live_in_memory,
      	aggregate_value_p, must_pass_in_stack_var_size,
      	must_pass_in_stack_var_size_or_pad): Likewise.
      	* vmsdbgout.c (write_debug_addr, write_debug_delta4,
      	write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
      	lookup_filename): Likewise.
      
      From-SVN: r127743
      Kaveh R. Ghazi committed
  13. 14 Aug, 2007 1 commit
    • alias.c (component_uses_parent_alias_set): Constify. · 22ea9ec0
      	* alias.c (component_uses_parent_alias_set): Constify.
      	* alias.h (component_uses_parent_alias_set): Likewise.
      	* cfgrtl.c (print_rtl_with_bb): Likewise.
      	* double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
      	mpz_get_double_int): Likewise.
      	* double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
      	mpz_get_double_int): Likewise.
      	* expr.c (is_aligning_offset, undefined_operand_subword_p,
      	mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
      	Likewise.
      	* expr.h (safe_from_p): Likewise.
      	* gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
      	Likewise.
      	* gimplify.c (should_carry_locus_p, zero_sized_field_decl,
      	zero_sized_type, goa_lhs_expr_p): Likewise.
      	* omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
      	* rtl.h (print_rtl_with_bb): Likewise.
      	* sched-vis.c (print_exp, print_value, print_pattern): Likewise.
      	* tree-cfg.c (const_first_stmt, const_last_stmt): New.
      	* tree-flow-inline.h (bb_stmt_list): Constify.
      	(cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
      	cbsi_stmt): New.
      	* tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
      	const_first_stmt, const_last_stmt): New.
      	(block_may_fallthru, empty_block_p): Constify.
      	* tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
      	EXPR_ONLY_BODY): New.
      	(expr_first, expr_last, expr_only): Use macro for body.
      	(const_expr_first, const_expr_last, const_expr_only): New.
      	* tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
      	ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
      	ctsi_prev, ctsi_stmt): New.
      	* tree-scalar-evolution.c (get_loop_exit_condition): Constify.
      	* tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
      	* tree-ssa-loop-niter.c (loop_only_exit_p,
      	derive_constant_upper_bound): Likewise.
      	* tree-ssa-phiopt.c (empty_block_p): Likewise.
      	* tree-ssa-threadupdate.c (redirection_block_p): Likewise.
      	* tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
      	* tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
      	* tree-vrp.c (vrp_bitmap_equal_p): Likewise.
      	* tree.c (get_type_static_bounds): Likewise.
      	* tree.h (const_expr_first, const_expr_last, const_expr_only): New.
      	(get_type_static_bounds): Constify.
      
      From-SVN: r127483
      Kaveh R. Ghazi committed
  14. 27 Jul, 2007 1 commit
    • expr.h (store_bit_field): Don't return a value. · 6d7db3c5
      gcc/
      	* expr.h (store_bit_field): Don't return a value.
      	* expmed.c (check_predicate_volatile_ok): New function.
      	(store_bit_field_1): New function, extracted from store_bit_field.
      	Take a fallback_p argument and return true if the operation succeeded.
      	Only use store_fixed_bit_field if fallback_p.  Don't recompute
      	mode_for_extraction; use op_mode instead.  Try forcing memories
      	into registers if the insv expander fails.
      	(store_bit_field): Use store_bit_field_1 with fallback_p true.
      	Don't return a value.
      	(convert_extracted_bit_field): New function, extracted from
      	store_bit_field.
      	(extract_bit_field_1): Likewise.  Take a fallback_p argument
      	and return NULL if the operation succeeded.  Only use
      	extract_fixed_bit_field if fallback_p.  Only calculate one
      	extraction mode.  Combine code for extv and extzv.  Try forcing
      	memories into registers if the ext(z)v expander fails.
      	(extract_bit_field): Use extract_bit_field_1 with fallback_p true.
      
      gcc/testsuite/
      	* gcc.target/mips/ins-1.c: New test.
      
      From-SVN: r126972
      Richard Sandiford committed
  15. 26 Jul, 2007 1 commit
  16. 10 Jun, 2007 1 commit
    • tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL. · 79f5e442
      	* tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
      	* tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
      	* tree-ssa-loop-prefetch.c: Include optabs.h.
      	(FENCE_FOLLOWING_MOVNT): New macro.
      	(struct mem_ref): Add independent_p and storent_p fields.
      	(record_ref): Initalize the new fields.
      	(gather_memory_references_ref): Return true if the reference
      	could be analysed.
      	(gather_memory_references): Check whether all memory accesses
      	in loop were recorded.
      	(should_issue_prefetch_p): Return false for nontemporal stores.
      	(nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
      	may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
      	(determine_loop_nest_reuse): Detect independent memory references.
      	(loop_prefetch_arrays): Call mark_nontemporal_stores.
      	* tree-flow.h (mark_virtual_ops_for_renaming): Declare.
      	* Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
      	* config/i386/i386.h (x86_mfence): Declare.
      	(FENCE_FOLLOWING_MOVNT): Return x86_mfence.
      	* config/i386/i386.c (x86_mfence): New variable.
      	(ix86_init_mmx_sse_builtins): Initialize x86_mfence.
      
      	* tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
      	* optabs.c (init_optabs): Initialize storent_optab.
      	* optabs.h (enum optab_index): Add OTI_storent.
      	(storent_optab): Declare.
      	* genopinit.c (optabs): Add initialization for storent_optab.
      	* tree.h (MOVE_NONTEMPORAL): New macro.
      	* expr.c (expand_assignment, store_expr, store_constructor_field,
      	store_constructor, store_field, expand_expr_real_1): Propagate
      	nontemporality of the expanded store.
      	(emit_storent_insn): New function.
      	* expr.h (expand_assignment, store_expr): Declaration changed.
      	* function.c (assign_parm_setup_reg): Pass false as nontemporality
      	to expand_assignment.
      	* stmt.c (expand_asm_expr): Ditto.
      	* calls.c (initialize_argument_information): Pass false as
      	nontemporality to store_expr.
      	* config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
      	storentsi): New.
      
      	* gcc.dg/tree-ssa/prefetch-7.c: New test.
      
      From-SVN: r125604
      Zdenek Dvorak committed
  17. 02 Mar, 2007 1 commit
  18. 01 Mar, 2007 1 commit
  19. 28 Jan, 2007 1 commit
    • expr.c (emit_block_move_via_movmem, [...]): Add variant handling histograms; add wrapper. · 079a182e
      	* expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
      	variant handling histograms; add wrapper.
      	(clear_storage_via_libcall): Export.
      	(emit_block_move_hints): Break out from ...; add histograms.
      	(emit_block_move): ... this one.
      	(clear_storage_hints): Break out from ...; add histograms.
      	(clear_storage): ... this one.
      	(set_storage_via_memset): Handle histogram.
      	* expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
      	(clear_storage_hints, clear_storage_via_libcall): Declare.
      	(set_storage_via_setmem): Update prototype.
      	* doc/md.texi (movmem, setmem): Document new arguments.
      
      	* value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
      	new histograms.
      	(stringop_block_profile): New global function.
      	(tree_stringops_values_to_profile): Profile block size and alignment.
      	* value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
      	HIST_TYPE_IOR.
      	(struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
      	(stringop_block_profile): Declare.
      	* builtins.c: Include value-prof.h.
      	(expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
      	* gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
      	(GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
      	(GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
      	* profile.c (instrument_values): Add new counters.
      	* cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
      	calls.
      	* tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
      	(tree_init_edge_profiler): Build new profilers.
      	(tree_gen_average_profiler, tree_gen_ior_profiler): New.
      	(pass_tree_profile): Add dump.
      	(tree_profile_hooks): Update.
      	* Makefile.in (LIBGCOV): Add new constants.
      	* libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
      	__gcov_ior_profiler): New.
      	* i386.md (movmem/setmem expanders): Add new optional arguments.
      
      From-SVN: r121270
      Jan Hubicka committed
  20. 27 Nov, 2006 1 commit
    • expr.c (emit_block_move_via_libcall): Export. · 8c996513
      	* expr.c (emit_block_move_via_libcall): Export.
      	(clear_storage_via_libcall): Rename to ...
      	(set_storage_via_libcall): ... this one; handle arbitrary value to set.
      	(clear_storage): Update to set_storage_via_libcall.
      	* expr.h (emit_block_move_via_libcall): Declare
      	* config/i386/i386.h (stringop_alg): New enum.
      	(MAX_STRINGOP_ALGS): New constant.
      	(stringop_algs): New struct.
      	(processor_costs): Add memcpy/memset descriptors.
      	(TARGET_REP_MOVEL_OPTIMAL): Remove.
      	* config/i386/i386.md (movsi_insv_1_rex64): New pattern.
      	(strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
      	for memset.
      	* config/i386/i386.opt (minline-stringops-dynamically,
      	mstringop-strategy): New
      	parameters.
      	* config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
      	(ix86_expand-clrmem): Rename to ...
      	(ix86_expand_setmem): ... this one; update prototype.
      	* config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
      	(size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
      	geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
      	nocona_cost, core2_cost, generic_cost, generic64_cost,
      	generic32_cost): Add memcpy/memset descriptors.
      	(x86_rep_movl_optimal): Remove.
      	(stringop_alg): New static variable.
      	(ix86_expand_aligntest): Handle predictions.
      	(override_options): Add strgop_alg handling.
      	(predict_jump): New function.
      	(scale_counter): New function.
      	(expand_set_or_movmem_via_loop): New function.
      	(expand_movmem_via_rep_mov): New function.
      	(expand_setmem_via_rep_stots): New function.
      	(emit_strmov): New function.
      	(expand_movmem_epilogue): New function.
      	(expand_setmem_epilogue_via_loop): New function.
      	(expand_setmem_epilogue): New function.
      	(expand_movmem_prologue): New function.
      	(expand_setmem_prologue): New function.
      	(decide_alg): New function.
      	(decide_alignment): New function.
      	(ix86_exand_movmem): Rewrite.
      	(promote_duplicated_reg): New function.
      	(ix86_expand_clrmem): Rename to ...
      	(ix86_expand_setmem): ... this one. Rewrite.
      
      	* invoke.texi (minline-stringops-dynamically): New command line option.
      	(mstringop-strategy): Likewise.
      
      From-SVN: r119252
      Jan Hubicka committed
  21. 22 May, 2006 1 commit
    • revert: invoke.texi (-msselibm): Document. · 9714c911
      2006-05-22  Richard Guenther  <rguenther@suse.de>
       
       	Revert
       	2006-01-31  Richard Guenther  <rguenther@suse.de>
       
       	* doc/invoke.texi (-msselibm): Document.
       	* target.h (expand_library_builtin): New target hook.
       	* builtins.c (expand_builtin): Use expand_library_builtin.
       	(default_expand_library_builtin): New function.
       	* gcc.c (LINK_GCC_MATH_SPEC): Define.
       	(LINK_COMMAND_SPEC): Handle %(link_gcc_math).
       	(link_gcc_math_spec): Declare.
       	(static_specs): Add link_gcc_math_spec.
       	* expr.h (default_expand_library_builtin): Declare.
       	* target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
       	(TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
       	* config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
       	* config/i386/i386.opt (msselibm): New target option.
       	* config/i386/i386.c (ix86_builtin_function_variants): New array.
       	(ix86_init_sse_abi_builtins): New function.
       	(ix86_expand_library_builtin): Likewise.
       	(TARGET_EXPAND_LIBRARY_BUILTIN): Define.
       	(override_options): Handle error conditions wrt -msselibm.
       	(ix86_builtins): Add function codes for SSE2 ABI builtins.
       	(ix86_init_builtins): Call ix86_init_sse_abi_builtins.
       	* doc/extend.texi (__builtin_sse2_*): Document new target specific
       	builtins.
       
       	* gcc.target/i386/sselibm-1.c: New testcase.
       	* gcc.target/i386/sselibm-2.c: Likewise.
       	* gcc.target/i386/sselibm-3.c: Likewise.
       	* gcc.target/i386/sselibm-4.c: Likewise.
       	* gcc.target/i386/sselibm-5.c: Likewise.
      
      From-SVN: r113977
      Richard Guenther committed
  22. 03 Apr, 2006 1 commit
    • builtins.c (dummy_object): Use build_int_cst instead of convert. · b6f65e3c
      	* builtins.c (dummy_object): Use build_int_cst instead of convert.
      	* tree-ssa-ccp.c (maybe_fold_stmt_addition): Use fold_convert
      	instead of convert.
      	* dojump.c (do_jump): Likewise.
      	* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE, ARGS_SIZE_TREE): Likewise.
      	* gimplify.c (gimple_boolify, gimplify_init_constructor,
      	gimplify_boolean_expr): Likewise.
      	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
      	* varasm.c (array_size_for_constructor): Likewise.
      	* tree-object-size.c (compute_object_offset): Likewise.
      
      From-SVN: r112633
      Roger Sayle committed
  23. 04 Mar, 2006 1 commit
  24. 18 Feb, 2006 1 commit
    • re PR target/9703 ([arm] Accessing data through constant pool more times could… · aacd3885
      re PR target/9703 ([arm] Accessing data through constant pool more times could be solved in less instructions)
      
      	* cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE.
      	* emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx.
      	(copy_insn_1): Likewise.  Don't copy each field individually.
      	Reindent.
      	* read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead
      	of RTX_SIZE.
      	* reload1.c (eliminate_regs): Use shallow_copy_rtx.
      	* rtl.c (rtx_size): Rename variable to...
      	(rtx_code_size): ...this.
      	(rtx_size): New function.
      	(rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE.
      	(copy_rtx): Use shallow_copy_rtx.  Don't copy each field individually.
      	Reindent.
      	(shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE.
      	* rtl.h (rtx_code_size): New variable.
      	(rtx_size): Change from a variable to a function.
      	(RTX_SIZE): Rename to...
      	(RTX_CODE_SIZE): ...this.
      
      	PR target/9703
      	PR tree-optimization/17106
      	* doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document.
      	(Anchored Addresses): New section.
      	* doc/invoke.texi (-fsection-anchors): Document.
      	* doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise.
      	(SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise.
      	(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise.
      	* hooks.c (hook_bool_mode_rtx_false): New function.
      	* hooks.h (hook_bool_mode_rtx_false): Declare.
      	* gengtype.c (create_optional_field): New function.
      	(adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when
      	SYMBOL_REF_IN_BLOCK_P is true.
      	* target.h (output_anchor, use_blocks_for_constant_p): New hooks.
      	(min_anchor_offset, max_anchor_offset): Likewise.
      	(use_anchors_for_symbol_p): New hook.
      	* toplev.c (compile_file): Call output_object_blocks.
      	(target_supports_section_anchors_p): New function.
      	(process_options): Check that -fsection-anchors is only used on
      	targets that support it and when -funit-at-a-time is in effect.
      	* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL
      	if the decl doesn't have one.
      	* dwarf2out.c: Remove instantiations of VEC(rtx,gc).
      	* expr.c (emit_move_multi_word, emit_move_insn): Pass the result
      	of force_const_mem through use_anchored_address.
      	(expand_expr_constant): New function.
      	(expand_expr_addr_expr_1): Call it.  Use the same modifier when
      	calling expand_expr for INDIRECT_REF.
      	(expand_expr_real_1): Pass DECL_RTL through use_anchored_address
      	for all modifiers except EXPAND_INITIALIZER.  Use expand_expr_constant.
      	* expr.h (use_anchored_address): Declare.
      	* loop-unroll.c: Don't declare rtx vectors here.
      	* explow.c: Include output.h.
      	(validize_mem): Call use_anchored_address.
      	(use_anchored_address): New function.
      	* common.opt (-fsection-anchors): New switch.
      	* varasm.c (object_block_htab, anchor_labelno): New variables.
      	(hash_section, object_block_entry_eq, object_block_entry_hash)
      	(use_object_blocks_p, get_block_for_section, create_block_symbol)
      	(use_blocks_for_decl_p, change_symbol_section): New functions.
      	(get_variable_section): New function, split out from assemble_variable.
      	(make_decl_rtl): Create a block symbol if use_object_blocks_p and
      	use_blocks_for_decl_p say so.  Use change_symbol_section if the
      	symbol has already been created.
      	(assemble_variable_contents): New function, split out from...
      	(assemble_variable): ...here.  Don't output any code for
      	block symbols; just pass them to place_block_symbol.
      	Use get_variable_section and assemble_variable_contents.
      	(get_constant_alignment, get_constant_section, get_constant_size): New
      	functions, split from output_constant_def_contents.
      	(build_constant_desc): Create a block symbol if use_object_blocks_p
      	says so.  Or into SYMBOL_REF_FLAGS.
      	(assemble_constant_contents): New function, split from...
      	(output_constant_def_contents): ...here.  Don't output any code
      	for block symbols; just pass them to place_section_symbol.
      	Use get_constant_section and get_constant_alignment.
      	(force_const_mem): Create a block symbol if use_object_blocks_p and
      	use_blocks_for_constant_p say so.  Or into SYMBOL_REF_FLAGS.
      	(output_constant_pool_1): Add an explicit alignment argument.
      	Don't switch sections here.
      	(output_constant_pool): Adjust call to output_constant_pool_1.
      	Switch sections here instead.  Don't output anything for block symbols;
      	just pass them to place_block_symbol.
      	(init_varasm_once): Initialize object_block_htab.
      	(default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK.
      	(default_asm_output_anchor, default_use_aenchors_for_symbol_p)
      	(place_block_symbol, get_section_anchor, output_object_block)
      	(output_object_block_htab, output_object_blocks): New functions.
      	* target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro.
      	(TARGET_ASM_OUT): Include it.
      	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro.
      	(TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros.
      	(TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro.
      	(TARGET_INITIALIZER): Include them.
      	* rtl.c (rtl_check_failed_block_symbol): New function.
      	* rtl.h: Include vec.h.  Declare heap and gc rtx vectors.
      	(block_symbol, object_block): New structures.
      	(rtx_def): Add a block_symbol field to the union.
      	(BLOCK_SYMBOL_CHECK): New macro.
      	(rtl_check_failed_block_symbol): Declare.
      	(SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags.
      	(SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates.
      	(SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2.
      	(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors.
      	* output.h (output_section_symbols): Declare.
      	(object_block): Name structure.
      	(place_section_symbol, get_section_anchor, default_asm_output_anchor)
      	(default_use_anchors_for_symbol_p): Declare.
      	* Makefile.in (RTL_BASE_H): Add vec.h.
      	(explow.o): Depend on output.h.
      	* config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default.
      	(TARGET_MAX_ANCHOR_OFFSET): Likewise.
      	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
      	(rs6000_use_blocks_for_constant_p): New function.
      
      From-SVN: r111254
      Richard Sandiford committed
  25. 14 Feb, 2006 1 commit
    • optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx directly... · 3bf78d3b
      	* optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx
      	directly, instead let do_compare_rtx_and_jump handle this for us.
      	* expr.c (expand_expr_real_1): Likewise.
      	* dojump.c (do_jump_by_parts_greater_rtx): Make static.  Move
      	before do_jump_by_parts_greater.
      	(do_jump_by_parts_greater): Move after do_jump_by_parts_greater_rtx.
      	* expr.h (do_jump_by_parts_greater_rtx): Delete prototype.
      
      From-SVN: r110954
      Roger Sayle committed
  26. 13 Feb, 2006 1 commit
    • re PR middle-end/25724 (Emits call to __cmpdi2 for long long comparison in switches) · feb04780
      	PR middle-end/25724
      	* dojump.c (do_jump): Call do_compare_rtx_and_jump.
      	(do_jump_parts_zero_rtx): New function renamed from
      	do_jump_parts_equality_rtx.  Made static.  Add a mode argument.
      	(do_jump_parts_equality_rtx): New function split out from
      	do_jump_parts_equality.  Old implementation renamed as above.
      	Call do_jump_parts_zero_rtx if either operand is zero.
      	(do_jump_parts_equality): Call do_jump_parts_equality_rtx to
      	do all of the heavy lifting.
      	(do_compare_rtx_and_jump): Handle multi-word comparisons by
      	calling either do_jump_by_parts_greater_rtx or
      	do_jump_by_parts_equality_rtx.
      	* expr.h (do_jump_by_parts_equality_rtx): Remove prototype.
      	* expmed.c (do_cmp_and_jump): Now multi-word optimization has
      	moved to do_compare_rtx_and_jump, call it directly.
      	* stmt.c (do_jump_if_equal): Remove static prototype.  Add a
      	mode argument.  Call do_compare_rtx_and_jump.
      	(emit_case_nodes): Update calls to do_jump_if_equal.
      
      From-SVN: r110906
      Roger Sayle committed
  27. 31 Jan, 2006 2 commits
    • invoke.texi (-msselibm): Document. · ee963181
      2006-01-31  Richard Guenther  <rguenther@suse.de>
      
      	* doc/invoke.texi (-msselibm): Document.
      	* target.h (expand_library_builtin): New target hook.
      	* builtins.c (expand_builtin): Use expand_library_builtin.
      	(default_expand_library_builtin): New function.
      	* gcc.c (LINK_GCC_MATH_SPEC): Define.
      	(LINK_COMMAND_SPEC): Handle %(link_gcc_math).
      	(link_gcc_math_spec): Declare.
      	(static_specs): Add link_gcc_math_spec.
      	* expr.h (default_expand_library_builtin): Declare.
      	* target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
      	(TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
      	* config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
      	* config/i386/i386.opt (msselibm): New target option.
      	* config/i386/i386.c (ix86_builtin_function_variants): New array.
      	(ix86_init_sse_abi_builtins): New function.
      	(ix86_expand_library_builtin): Likewise.
      	(TARGET_EXPAND_LIBRARY_BUILTIN): Define.
      	(override_options): Handle error conditions wrt -msselibm.
      	(ix86_builtins): Add function codes for SSE2 ABI builtins.
      	(ix86_init_builtins): Call ix86_init_sse_abi_builtins.
      	* doc/extend.texi (__builtin_sse2_*): Document new target specific
      	builtins.
      
      	* gcc.target/i386/sselibm-1.c: New testcase.
      	* gcc.target/i386/sselibm-2.c: Likewise.
      	* gcc.target/i386/sselibm-3.c: Likewise.
      	* gcc.target/i386/sselibm-4.c: Likewise.
      	* gcc.target/i386/sselibm-5.c: Likewise.
      
      From-SVN: r110439
      Richard Guenther committed
    • expr.h (expand_normal): new inline function. · 84217346
      2006-01-30  Marcin Dalecki  <martin@dalecki.de>
      
      	* expr.h (expand_normal): new inline function.
      	* builtins.c: use it, use EXPAND_NORMAL explicitely.
      	* dojump.c: use it.
      	* dwarf2out.c: use it.
      	* expr.c: use it.
      	* calls.c: use it.
      	* expmed.c: use it.
      	* except.c: use it.
      	* config/sparc/sparc.c: use it.
      	* config/i386/i386.c: use it.
      	* config/rs6000/rs6000.c: use it.
      	* config/arm/arm.c: use it.
      	* config/mips/mips.c: use it.
      	* stmt.c: use it, use EXPAND_NORMAL explicitely.
      
      From-SVN: r110428
      Marcin Dalecki committed
  28. 28 Jan, 2006 1 commit
  29. 16 Oct, 2005 1 commit
    • re PR middle-end/23714 (ICE in expand_assignment) · 1e188d1e
              PR 23714
              * builtins.c (expand_builtin_trap): Export.
              * expr.h (expand_builtin_trap): Declare.
              * expr.c (expand_assignment): Emit a trap for integral offsets
              from registers that weren't reduced to bitpos.
      
              * tree-cfg.c (mark_array_ref_addressable_1): Remove.
              (mark_array_ref_addressable): Remove.
              * tree-flow.h (mark_array_ref_addressable): Remove.
              * tree-optimize.c (execute_cleanup_cfg_post_optimizing): Don't call it.
      
      From-SVN: r105449
      Richard Henderson committed
  30. 14 Jul, 2005 1 commit
    • Makefile.in (explow.o, [...]): Depend on target.h. · 1d636cc6
      2005-07-14  Richard Guenther  <rguenther@suse.de>
      
      	* Makefile.in (explow.o, reg-stack.o): Depend on target.h.
      	* calls.c (expand_call): Pass fntype to hard_function_value.
      	(emit_library_call_value_1): Likewise.
      	* explow.c: Include target.h.
      	(hard_function_value): Take extra argument, the fntype.
      	Use new target hook for function_value.
      	* expr.h (hard_function_value): Change prototype.
      	* function.c (aggregate_value_p): Pass 0 as fntype to
      	hard_function_value.
      	(assign_parms): Use new target hook for function_value.
      	Pass 0 as fntype to hard_function_value.
      	(expand_function_end): Likewise.
      	* reg-stack.c: Include target.h.
      	(stack_result): Use new target hook for function_value.
      	* target-def.h: New target hook function_value.
      	* target.h: Likewise.
      	* targhooks.c (default_function_value): New function.
      	* targhooks.h (default_function_value): Declare.
      
      From-SVN: r102013
      Richard Guenther committed
  31. 28 Jun, 2005 1 commit
    • builtins.c: (expand_builtin_memset): Rewrite to support 'set_storage_via_setmem'. · 57e84f18
      2006-06-28  Adrian Straetling  <straetling@de.ibm.com>
      
      	* builtins.c: (expand_builtin_memset): Rewrite to support
      	'set_storage_via_setmem'.
      	* expr.c: (enum insn_code setmem_optab): Define.
      	(enum insn_code clrmem_optab): Remove.
      	(set_storage_via_setmem): New function.
      	(clear_storage_via_setmem): Remove.
      	(clear_storage): Replace call to "clear_storage_via_clrmem" with
      	"set_storage_via_setmem".
      	* expr.h: (set_storage_via_setmem): Declare.
      	(CLEAR_RATIO): Redefine using HAVE_setmemM.
      	* optabs.h: (enum insn_code setmem_optab): Declare.
      	(enum insn_code clrmem_optab): Remove.
      	* optabs.c: (init_optabs): Initialize setmem_optab.
      	(enum insn_code clrmem_optab): Remove.
      	* genopinit.c: (otabs): Likewise.
      	* doc/md.texi: Document new standard pattern 'setmem'. Remove
      	  'clrmem'.
      	* config/alpha/alpha.c: (alpha_expand_block_clear): Adjust
      	'operands' ordering.
      	* config/frv/frv.c: (frv_expand_block_clear): Likewise.
      	* config/rs6000/rs6000.c: (expand_block_clear): Likewise.
      	* config/alpha/alpha.md: ("clrmemqi", "clrmemdi"): Rename to "setmemM".
      	FAIL on operands[2]!=const0_rtx. Adjust 'operands' ordering.
      	* config/avr/avr.md: ("clrmemhi"): Likewise.
      	* config/frv/frv.md: ("clrmemsi"): Likewise.
      	* config/i386/i386.md: ("clrmemsi", "clrmemdi"): Likewise.
      	* config/pa/pa.md: ("clrmemsi", "clrmemdi"): Likewise.
      	* config/rs6000/rs6000.md: ("clrmemsi"): Likewise.
      	* config/s390/s390.md: ("clrmem<mode>"): Likewise.
      
      From-SVN: r101386
      Adrian Straetling committed
  32. 25 Jun, 2005 1 commit
  33. 26 May, 2005 1 commit
    • c-common.c, [...]: Fix comment typos. · 0fa2e4df
      	* c-common.c, c-parser.c, cfgbuild.c, cfghooks.c, cfghooks.h,
      	cfgrtl.c, cgraphunit.c, ddg.c, expr.h, gcse.c, ggc-page.c,
      	ggc-zone.c, gimplify.c, ipa-inline.c, longlong.h, targhooks.c,
      	tree-flow-inline.h, tree-pass.h, tree-ssa-dse.c,
      	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
      	tree-ssa-operands.c, tree-vect-analyze.c,
      	tree-vect-transform.c, tree-vectorizer.c, tree.c,
      	config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
      	config/frv/frv.md, config/i386/i386.c, config/i386/sse.md,
      	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
      	config/mcore/mcore.c, config/mips/mips.c, config/mips/mips.md,
      	config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
      	config/rs6000/rs6000.h, config/sh/sh.c, config/sh/sh.md,
      	config/sh/ushmedia.h, config/sparc/sparc.c,
      	config/sparc/sparc.md, config/stormy16/stormy-abi: Fix comment
      	typos.  Follow spelling conventions.
      	* doc/invoke.texi, doc/tm.texi, doc/tree-ssa.texi: Fix typos.
      	Follow spelling conventions.
      
      From-SVN: r100218
      Kazu Hirata committed
  34. 03 May, 2005 1 commit
    • re PR middle-end/21265 (GCC fails to optimize tail call to memset) · 8148fe65
      	PR middle-end/21265
      	* expr.h (enum block_op_methods): Add BLOCK_OP_TAILCALL.
      	(clear_storage): Add argument.
      	* expr.c (emit_block_move_via_libcall, clear_storage_via_libcall):
      	Add tailcall argument, set CALL_EXPR_TAILCALL of the CALL_EXPR to
      	tailcall.
      	(emit_block_move): Handle BLOCK_OP_TAILCALL method.
      	(clear_storage): Add method argument, handle BLOCK_OP_TAILCALL.
      	(store_expr, store_constructor): Adjust callers.
      	* builtins.c (expand_builtin_memcpy): Pass BLOCK_OP_TAILCALL
      	to emit_block_move if CALL_EXPR_TAILCALL (exp).
      	(expand_builtin_memmove): Add ORIG_EXP argument, copy
      	CALL_EXPR_TAILCALL from ORIG_EXP to the new CALL_EXPR.
      	(expand_builtin_bcopy): Replace ARGLIST and TYPE arguments
      	with EXP.  Pass EXP to expand_builtin_memmove.
      	(expand_builtin_memset): Add ORIG_EXP argument, pass
      	BLOCK_OP_TAILCALL to clear_storage if CALL_EXPR_TAILCALL (orig_exp).
      	(expand_builtin_bzero): Replace ARGLIST argument with EXP.
      	Pass EXP to expand_builtin_memset.
      	(expand_builtin_strcmp): Copy CALL_EXPR_TAILCALL from EXP to
      	the new CALL_EXPR.
      	(expand_builtin_strncmp): Likewise.
      	(expand_builtin_printf): Replace ARGLIST argument with EXP.
      	Copy CALL_EXPR_TAILCALL from EXP to the new CALL_EXPR.
      	(expand_builtin_fprintf): Likewise.
      	(expand_builtin): Adjust calls to
      	expand_builtin_{memmove,bcopy,memset,bzero,{,f}printf}.
      
      	* gcc.dg/20050503-1.c: New test.
      
      From-SVN: r99187
      Jakub Jelinek committed
  35. 14 Apr, 2005 1 commit
    • re PR middle-end/14311 (builtins for atomic operations needed) · 48ae6c13
      	PR middle-end/14311
      	* builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2,
      	BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2,
      	BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1,
      	BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8,
      	BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4,
      	BT_FN_I8_VPTR_I8_I8): New.
      	* builtins.def (DEF_SYNC_BUILTIN): New.
      	(BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1,
      	BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4,
      	BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N,
      	BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2,
      	BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8,
      	BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1,
      	BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4,
      	BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N,
      	BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2,
      	BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8,
      	BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1,
      	BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4,
      	BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N,
      	BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2,
      	BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8,
      	BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1,
      	BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4,
      	BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N,
      	BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2,
      	BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8,
      	BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1,
      	BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4,
      	BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N,
      	BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2,
      	BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8,
      	BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1,
      	BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4,
      	BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N,
      	BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2,
      	BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8,
      	BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
      	BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
      	BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N,
      	BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2,
      	BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8,
      	BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1,
      	BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4,
      	BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N,
      	BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2,
      	BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8,
      	BUILT_IN_SYNCHRONIZE: New.
      	* builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN
      	as a function.  Accept __sync_ as a prefix as well.
      	(expand_builtin_sync_operation, expand_builtin_compare_and_swap,
      	expand_builtin_lock_test_and_set, expand_builtin_synchronize,
      	expand_builtin_lock_release): New.
      	(expand_builtin): Call them.
      	* c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if
      	neither BOTH_P nor FALLBACK_P are defined.
      	(builtin_type_for_size): New.
      	(sync_resolve_size, sync_resolve_params, sync_resolve_return): New.
      	(resolve_overloaded_builtin): New.
      	* c-common.h (resolve_overloaded_builtin): Declare.
      	(builtin_type_for_size): Declare.
      	* c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin.
      	* expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab,
      	sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab,
      	sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab,
      	sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab,
      	sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab,
      	sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap,
      	sync_compare_and_swap_cc, sync_lock_test_and_set,
      	sync_lock_release): New.
      	* optabs.h: Declare them.
      	* expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap,
      	expand_sync_operation, expand_sync_fetch_operation,
      	expand_sync_lock_test_and_set): Declare.
      	* genopinit.c (optabs): Add sync optabs.
      	* optabs.c (init_optabs): Initialize sync optabs.
      	(expand_val_compare_and_swap_1, expand_val_compare_and_swap,
      	expand_bool_compare_and_swap, expand_compare_and_swap_loop,
      	expand_sync_operation, expand_sync_fetch_operation,
      	expand_sync_lock_test_and_set): New.
      	* doc/extend.texi (Atomic Builtins): New section
      	* doc/md.texi (Standard Names): Add sync patterns.
      
      From-SVN: r98154
      Richard Henderson committed
  36. 15 Jan, 2005 1 commit
  37. 11 Jan, 2005 1 commit
    • re PR target/18916 (mis-aligned vector code with copy memory (-maltivec)) · bfc45551
      	PR target/18916
      	* builtins.c (std_gimplify_va_arg_expr): Adjust alignment of *ap.
      	* expr.h (struct locate_and_pad_arg_data): Add "boundary".
      	* function.c (locate_and_pad_parm): Set new field.
      	(assign_parm_find_stack_rtl): Use it instead of FUNCTION_ARG_BOUNDARY.
      	Tweak where_pad test to include "none".  Always set mem align for
      	stack_parm.
      	(assign_parm_adjust_stack_rtl): Discard stack_parm if alignment
      	not sufficient for type.
      	(assign_parm_setup_block): If stack_parm is zero on entry, always
      	make a new stack local.  Block move old stack parm if necessary
      	to new aligned stack local.
      	(assign_parm_setup_stack): Use a block move to handle
      	potentially misaligned entry_parm.
      	(assign_parms_unsplit_complex): Specify required alignment when
      	creating stack local.
      	* calls.c (compute_argument_addresses): Override alignment of stack
      	arg calculated from its type with the alignment given by
      	FUNCTION_ARG_BOUNDARY.
      	(store_one_arg): Likewise.
      
      From-SVN: r93179
      Alan Modra committed