Commit Graph

31325 Commits

Author SHA1 Message Date
David Daney 4d9f4c465b mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before define.
* config/mips/mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before
	define.

From-SVN: r119819
2006-12-13 06:53:49 +00:00
Andrew Pinski fc98ed56e1 tree-vect-transform.c (vect_permute_load_chain): Set DECL_GIMPLE_REG_P to true for the vect_perm_* temp variables.
2006-12-12  Andrew Pinski  <pinskia@gmail.com>

        * tree-vect-transform.c (vect_permute_load_chain):
        Set DECL_GIMPLE_REG_P to true for the vect_perm_*
        temp variables.

From-SVN: r119818
2006-12-12 21:37:39 -08:00
Ben Elliston 83a01f24c3 spu.h (C_COMMON_OVERRIDE_OPTIONS): Define.
* config/spu/spu.h (C_COMMON_OVERRIDE_OPTIONS): Define.
	(REGISTER_TARGET_PRAGMAS): Don't zero warn_main flag.
	* config/spu/spu-protos.h (spu_c_common_override_options):
	Declare.
	* config/spu/spu-c.c (spu_c_common_override_options): New.
	* config/spu/spu.c (spu_override_options): Whitespace fix.

testsuite/
	* gcc.target/spu/Wmain.c: New test.

From-SVN: r119817
2006-12-13 16:25:57 +11:00
Trevor Smigiel 1f49ae6eaf spu.c (cpat_info): Fix an incorrectly identified case.
* config/spu/spu.c (cpat_info): Fix an incorrectly identified case.

	* gcc.target/spu/cpat-1.c: New test.
	* gcc.target/spu/cpat-2.c: New test.
	* gcc.target/spu/cpat-3.c: New test.
	* gcc.target/spu/cpat-4.c: New test.

From-SVN: r119807
2006-12-12 23:59:35 +00:00
Geoffrey Keating 606e938d0f tm.texi (Alignment Output): Document that ASM_OUTPUT_SKIP actually takes an unsigned HOST_WIDE_INT for its...
* doc/tm.texi (Alignment Output): Document that ASM_OUTPUT_SKIP
	actually takes an unsigned HOST_WIDE_INT for its second parameter.

From-SVN: r119806
2006-12-12 23:53:37 +00:00
Ulrich Weigand 3d9cd79a7c spu.c (TARGET_ENCODE_SECTION_INFO): Define.
* config/spu/spu.c (TARGET_ENCODE_SECTION_INFO): Define.
	(spu_encode_section_info): New.
	* config/spu/spu.h (ALIGNED_SYMBOL_REF_P): Adjust.
	(SYMBOL_FLAG_ALIGN1): New.

From-SVN: r119803
2006-12-13 10:21:48 +11:00
Andrew Pinski 1f70491b99 re PR tree-optimization/28624 (latent segfault in remove_phi_node)
2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/28624
        * tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary
        bitmap for EXECUTE_IF_SET_IN_BITMAP.

From-SVN: r119802
2006-12-12 14:45:25 -08:00
Andrew Pinski 0890b981c9 re PR middle-end/28436 (accessing an element via a "pointer" on a vector does not cause vec_extract to be used)
2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/28436
        * tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
        (DECL_GIMPLE_REG_P): This.
        * fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
        using BIT_FIELD_REF.
        * omp-low.c (omp_copy_decl_2): Use the renamed DECL_GIMPLE_REG_P.
        * tree-gimple.c (is_gimple_reg): Use the renamed DECL_GIMPLE_REG_P
        and check for VECTOR_TYPE.
        * expr.c (get_inner_reference): Set the mode for BIT_FIELD_REF with
        vector types.
        * tree-flow-inline.h (var_can_have_subvars): Use the renamed
        DECL_GIMPLE_REG_P.
        * gimplify.c (internal_get_tmp_var): Use the renamed DECL_GIMPLE_REG_P
        and check for VECTOR_TYPE.
        (gimplify_bind_expr): Likewise.
        (gimplify_function_tree): Likewise.
        * expmed.c: Include target.h.
        (extract_bit_field): For vector mode, try find a better mode first.
        If that fails use gen_lowpart (for vectors only).
        * tree-dfa.c (make_rename_temp): Use the renamed DECL_GIMPLE_REG_P
        and check for VECTOR_TYPE.
        * tree-ssa-pre.c (create_expressions_by_pieces): Likewise.
        (insert_into_preds_of_block): Likewise.
        (insert_fake_stores): Create gimple register store_tmps for
        vector types.
        * tree-sra.c (sra_elt): New field, is_vector_lhs.
        (sra_walk_expr <case BIT_FIELD_REF>): For vector types that
        are the left hand side, set the element's is_vector_lhs to true.
        (instantiate_element): For vector types which were on the left         hand size, set DECL_GIMPLE_REG_P to false.
        * tree-nested.c (create_tmp_var_for): Use the renamed DECL_GIMPLE_REG_P.        * tree-inline.c (declare_return_variable):  Use the renamed
        DECL_GIMPLE_REG_P
        and check for VECTOR_TYPE.         (copy_decl_to_var):  Use the renamed DECL_GIMPLE_REG_P.
        (copy_result_decl_to_var): Likewise.
        * tree-vect-transform.c (vect_get_new_vect_var): For vector types,         create a gimple register variable.
        (vect_permute_store_chain): Set DECL_GIMPLE_REG_P to true for the
        vect_inter_* temp variables.
        * Makefile.in (expmed.o): Update dependencies.

2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/28436
        * gcc.c-torture/compile/vector-1.c: New test.
        * gcc.c-torture/compile/vector-2.c: New test.
        * gcc.c-torture/compile/vector-3.c: New test.

From-SVN: r119801
2006-12-12 14:33:06 -08:00
Peter Bergner 4fbd315165 reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and the offset == 0 "then" clauses.
* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
	the offset == 0 "then" clauses.
	* config/rs6000/predicates.md (gpc_reg_operand): Check for
	reload_in_progress.

From-SVN: r119800
2006-12-12 15:45:37 -06:00
Marcin Dalecki 0cf9e3a4be tree-pass.h: remove redundant pass_partition_blocks declaration.
2006-12-12  Marcin Dalecki  <martin@dalecki.de>

	* gcc/tree-pass.h: remove redundant pass_partition_blocks declaration.

From-SVN: r119796
2006-12-12 21:21:36 +01:00
Marcin Dalecki 04974e1a97 passes.texi: remove docs about "redundant PHI removal".
2006-12-12  Marcin Dalecki  <martin@dalecki.de>

	* doc/passes.texi: remove docs about "redundant PHI removal".
	* tree-pass.h: remove orphaned declaration of pass_redundant_phi.

From-SVN: r119794
2006-12-12 21:09:46 +01:00
Andrew MacLeod 0d70045091 re PR tree-optimization/30159 (gcc.c-torture/execute/20010422-1.c is miscompiled)
2006-12-12  Andrew Macleod  <amacleod@redhat.com>

	PR tree-optimization/30159
	* tree-ssa-coalesce.c (coalesce_ssa_name): Process single ssa_name 
	functions in case a default_def coalesce is required.

From-SVN: r119792
2006-12-12 15:50:06 +00:00
Jakub Jelinek c2431a6272 re PR libstdc++/11953 (_REENTRANT defined when compiling non-threaded code.)
PR libstdc++/11953
	* gthr-posix.h (_REENTRANT): Only define if __osf__ is defined.

	* config/ia64/linux.h (CPP_SPEC): Define.
	* config/s390/linux.h (CPP_SPEC): Define.

From-SVN: r119788
2006-12-12 16:15:19 +01:00
James E Wilson b5425e756b re PR rtl-optimization/27761 (combine miscompiles)
PR rtl-optimization/27761
	* combine.c (try_combine): Don't create a useless garbage SET
	if PATTERN (i2) is a PARALLEL.  If added_sets_1, save
	PATTERN (i1) resp. SET from i1src to i1dest in i1pat
	and use it to prevent accidental modification of i1src.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r119785
2006-12-12 16:03:39 +01:00
Ira Rosen a3895f55f7 tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check for stores with gaps.
* tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check
	for stores with gaps.
	* tree-vect-transform.c (vect_permute_store_chain): Create
	interleave_high or interleave_low according to the endianess.

From-SVN: r119779
2006-12-12 13:07:39 +00:00
Richard Guenther 8e3dc7a344 re PR middle-end/30147 (ICE in fold_convert with -O2)
2006-12-12  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30147
	* fold-const.c (fold_read_from_constant_string): Only fold read
	from constant string if the result type is integer.

	* gfortran.fortran-torture/compile/pr30147.f90: New testcase.

From-SVN: r119776
2006-12-12 12:13:48 +00:00
Olivier Hainque 527a08917e t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.
* config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.

From-SVN: r119773
2006-12-12 11:09:53 +00:00
Olivier Hainque c0da9742e5 vxlib.c: Extract tls related routines into ...
* config/vxlib.c: Extract tls related routines into ...
	* config/vxlib-tls.c: New file. 
	* config/t-vxworks: Add vxlib-tls.c to LIB2FUNCS_EXTRA.

From-SVN: r119771
2006-12-12 11:05:54 +00:00
Sa Liu 32fb22af5d spu.opt (mfixed-range): New option.
* config/spu/spu.opt (mfixed-range): New option.
	* config/spu/spu.h (spu_fixed_range_string): Declare.
	* config/spu/spu.c (spu_override_options): Handle -mfixed-range.
	(fix_range): New function.
	* doc/invoke.texi (SPU Options): Document -mfixed-range.
	* testsuite/gcc.target/spu/fixed-range.c: New.
	* testsuite/gcc.target/spu/fixed-range-bad.c: Ditto.

Co-Authored-By: Ben Elliston <bje@au.ibm.com>

From-SVN: r119768
2006-12-12 15:55:50 +11:00
H.J. Lu c47c29c896 re PR middle-end/17982 (stop calling assemble_external before final assembly output time)
2006-12-11  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/17982
	PR middle-end/20218
	* cgraphunit.c (cgraph_optimize): Remove call to
	process_pending_assemble_externals.

	* config/elfos.h (ASM_OUTPUT_EXTERNAL): New.

	* config/ia64/hpux.h (TARGET_ASM_FILE_END): Removed.

	* config/ia64/ia64.c (ia64_asm_output_external): Rewritten.
	(ia64_hpux_add_extern_decl): Removed.
	(ia64_hpux_file_end): Likewise.
	(extern_func_list): Likewise.
	(extern_func_head): Likewise.

	* output.h (assemble_external): Update comments.
	(default_elf_asm_output_external): New.
	(maybe_assemble_visibility): New.

	* toplev.c (compile_file): Update comment.

	* varasm.c (assemble_external): Always put it on
	pending_assemble_externals.
	(maybe_assemble_visibility): Make it extern and return int.
	(default_elf_asm_output_external): New.

From-SVN: r119764
2006-12-11 19:58:52 -08:00
Daniel Berlin 864abd46ca tree-ssa-structalias.c (handle_ptr_arith): Return false when we can't handle the pointer arithmetic.
2006-12-11  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (handle_ptr_arith): Return false when we
	can't handle the pointer arithmetic.

From-SVN: r119763
2006-12-12 03:44:25 +00:00
Diego Novillo 38635499e9 [multiple changes]
2006-12-11  Diego Novillo  <dnovillo@redhat.com>

	* doc/tree-ssa.texi: Update documentation for virtual operands
	and the use of push_stmt_changes/pop_stmt_changes.
	* doc/invoke.texi: Remove documentation for params
	global-var-threshold.
	Update documentation on max-aliased-vops.

	* tree-into-ssa.c: Cleanup comments, variables and
	spacing in various functions.
	(regs_to_rename): Declare.
	(mem_syms_to_rename): Declare.
	(dump_update_ssa): Declare.
	(debug_update_ssa): Declare.
	(dump_names_replaced_by): Declare.
	(debug_names_replaced_by): Declare.
	(dump_def_blocks): Declare.
	(debug_def_blocks): Declare.
	(dump_defs_stack): Declare.
	(debug_defs_stack): Declare.
	(dump_currdefs): Declare.
	(debug_currdefs): Declare.
	(mark_def_sites): Do not handle virtual operands.
	(compute_idf): Rename from find_idf.  Update users.
	(register_new_def): Make local.  Convert second argument
	to 'tree'.
	Use BLOCK_DEFS_STACK directly.
	If pushing a non-register, also push the underlying
	symbol.
	(rewrite_stmt): Do not handle virtual operands.
	(dump_tree_ssa): Call dump_def_blocks, dump_defs_stack,
	dump_currdefs and dump_tree_ssa_stats.
	(dump_tree_ssa_stats): Also dump REPL_TBL.
	(replace_use): Remove.  Update all users to call SET_USE
	instead.
	(rewrite_blocks): Move code to free memory to
	fini_ssa_renamer.
	(mark_def_site_blocks): Move initialization code to
	init_ssa_renamer.
	(init_ssa_renamer): New.
	(fini_ssa_renamer): New.
	(rewrite_into_ssa): Call them.
	(prepare_block_for_update): Process SSA_OP_ALL_USES first
	and SSA_OP_ALL_DEFS later.  Do not process virtual
	operands separately.
	(dump_update_ssa): Call dump_decl_set.
	(init_update_ssa): Initialize regs_to_rename and
	mem_syms_to_rename.
	Call init_ssa_renamer.
	(delete_update_ssa): Call fini_ssa_renamer.
	Free blocks_with_phis_to_rewrite.
	(mark_sym_for_renaming): If the variable has
	sub-variables, also mark them.
	If the variable belongs to a partition, also mark it.
	(mark_set_for_renaming): Call mark_sym_for_renaming on
	every symbol in the set.
	(switch_virtuals_to_full_rewrite): Call
	mark_set_for_renaming.
	(update_ssa): Separate syms_to_rename into regs_to_rename
	and mem_syms_to_rename.

	* tree-dump.c (dump_options): Add TDF_MEMSYMS.
	* tree-pretty-print.c (debug_generic_expr): Add TDF_MEMSYMS.
	(debug_generic_stmt): Likewise.
	(debug_tree_chain): Likewise.
	(dump_symbols): New.
	(dump_generic_node): Check for TDF_MEMSYMS.
	Handle MEMORY_PARTITION_TAG.
	If the statement references memory and TDF_MEMSYMS is
	given, call dump_symbols.
	Indicate default names with (D).
	(dump_vops): Update for new virtual operator format.

	* tree.c (init_ttree): Add MEMORY_PARTITION_TAG to
	tree_contains_struct.
	(tree_code_size): Handle MEMORY_PARTITION_TAG.
	(tree_node_structure): Likewise.
	(needs_to_live_in_memory): Handle SSA names.
	* tree.h (MTAG_P): Likewise.
	(struct tree_memory_partition_tag): Declare.
	(MPT_SYMBOLS): Define.
	(union tree_node): Add field 'mpt'.
	* treestruct.def (TS_MEMORY_PARTITION_TAG): Define.
	* tree.def (MEMORY_PARTITION_TAG): Define.

	* tree-pass.h (TDF_MEMSYMS): Define.

	* params.h (GLOBAL_VAR_THRESHOLD): Remove.

	* tree-ssa-alias.c: Include pointer-set.h
	(struct alias_map_d): Remove fields total_alias_vops,
	grouped_p and may_aliases.  Update all users.
	(struct mp_info_def): Declare.
	(mp_info_t): New type.
	(get_smt_for): Rename from get_tmt_for.  Update all
	users.
	(add_may_alias): Add argument ALREADY_ADDED.  If given,
	use it to avoid adding duplicate entries to alias sets.
	(replace_may_alias): Remove.  Update all users.
	(total_alias_vops_cmp): Remove.  Update all users.
	(group_aliases_into): Remove.  Update all users.
	(tree_pointer_compare): Remove.  Update all users.
	(compact_name_tags): Remove.  Update all users.
	(group_aliases): Remove.  Update all users.
	(mark_non_addressable): Move from tree-flow-inline.h.
	Remove the symbol from the partition holding it, if
	needed.
	(dump_mp_info): New.
	(debug_mp_info): New.
	(sort_mp_info): New.
	(create_partition_for): New.
	(rewrite_alias_set_for): New.
	(compute_memory_partitions): New.
	(compute_may_aliases): Call it.
	(init_alias_info): If computing aliases for the first
	time, mark every memory symbol for renaming.
	(have_common_aliases_p): New.
	(compute_flow_insensitive_aliasing): Call it.
	(setup_pointers_and_addressables): Do not cache
	num_referenced_vars.
	For register promoted symbols, mark their former
	partition for renaming.
	(maybe_create_global_var): Only create .GLOBAL_VAR if
	there are no call-clobbered variables and a mix of pure
	and non-pure functions were found.
	(may_alias_p): Tidy comments.
	(create_tag_raw): Remove unused variable new_type.
	(dump_alias_info): call dump_memory_partitions.
	(dump_points_to_info_for): Call dump_decl_set.
	(may_be_aliased): Tidy comments and formatting.

	* timevar.def (TV_MEMORY_PARTITIONING): Define.
	* tree-vectorizer.c (vect_memsyms_to_rename): Rename from
	vect_vnames_to_rename.  Set DECL_UIDs instead of SSA name
	versions in it.
	(slpeel_update_phi_nodes_for_guard1): Ignore memory PHIs.
	* tree-vect-transform.c (vect_transform_loop): Call
	mark_set_for_renaming with vect_memsyms_to_rename.
	* tree-flow-inline.h (zero_imm_uses_p): New.
	(memory_partition): New.
	(set_memory_partition): New.
	(factoring_name_p): New.
	(symbol_mem_tag): New.  Update every function that used
	to access the annotation directly.
	(set_symbol_mem_tag): Likewise.

	* tree-ssa-copy.c (may_propagate_copy): Allow copies
	between a partition and a symbol as long as the symbol
	belongs to the partition.
	(merge_alias_info): Ignore merge requests when memory
	partitions are involved.

	* tree-ssa.c (verify_ssa_name): Check that default
	definitions have empty defining statements.
	(verify_use): Remove argument IS_VIRTUAL.
	Don't call verify_ssa_name.
	(verify_phi_args): Call verify_ssa_name.
	(verify_flow_insensitive_alias_info): Handle MPTs.
	(verify_flow_sensitive_alias_info): Likewise.
	(verify_name_tags): Likewise.
	(verify_call_clobbering): Likewise.
	(verify_ssa): Check for VOPs only after aliasing
	information is available.
	Check virtuals and real operands separately.
	Call verify_ssa_name on every operand.
	(stmt_references_memory_p): Move to tree-ssa-operands.c.
	(walk_use_def_chains_1): Guard against NULL PHI
	arguments.

	* tree-ssa-operands.c (stmt_references_memory_p): Move from
	tree-ssa.c.
	(get_mpt_for): New.
	(dump_memory_partitions): New.
	(debug_memory_partitions): New.

	* tree-flow.h (struct var_ann_d): Add field mpt.
	(struct stmt_ann_d): Add bitfield references_memory.
	* Makefile.in (tree-ssa-structalias.o): Include
	pointer-set.h
	(tree-ssa-alias.o): Likewise.
	* tree-ssa-structalias.c: (update_alias_info): Use
	STORED_SYMS to determine which variables are being
	written to by the store operation.
	* tree-ssa-structalias.h (struct alias_info)
	<total_alias_vops>: Remove.  Update all users.
	<written_vars>: Change to a pointer set.  Update all
	users.
	<dereferenced_ptrs_store>: Likewise.
	<dereferenced_ptrs_load>: Likewise.
	(NUM_REFERENCES): Remove.  Update all users.
	(NUM_REFERENCES_CLEAR): Remove.  Update all users.
	(NUM_REFERENCES_INC): Remove.  Update all users.
	(NUM_REFERENCES_SET): Remove.  Update all users.

	* params.def (PARAM_GLOBAL_VAR_THRESHOLD): Remove.
	Update all users.
	(PARAM_MAX_ALIASED_VOPS): Set to 10.
	* tree-ssanames.c (make_ssa_name): Initialize
	SSA_NAME_IS_DEFAULT_DEF to 0.

2006-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-dse.c (aggregate_vardecl_d): New.
	(dse_global_data): Add aggregate_vardecl field.
	(dse_possible_dead_store_p): New.
	Add prev_defvar variable.
	Allow immediate uses and previous immediate uses to differ
	if they are setting different parts of the whole.
	(get_aggregate_vardecl): New.
	(dse_record_partial_aggregate_store): New.
	(dse_whole_aggregate_clobbered_p): New.
	(dse_partial_kill_p): New.
	(dse_optimize_stmt): Abstract code checking a possible dead store
	into new function dse_possible_dead_store_p().
	Call dse_maybe_record_aggregate_store().
	When checking whether a STMT and its USE_STMT refer to the
	same memory address, check also for partial kills that clobber
	the whole.
	Move some variable definitions to the block where they are used.
	(aggregate_vardecl_hash): New.
	(aggregate_vardecl_eq): New.
	(aggregate_vardecl_free): New.
	(aggregate_whole_store_p): New.
	(tree_ssa_dse): Initialize and free aggregate_vardecl.
	Mark which aggregate stores we care about.

2006-12-11  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa-operands.h (struct vuse_element_d): Declare.
	(vuse_element_t): Declare.
	(struct vuse_vec_d): Declare.
	(vuse_vec_p): Declare.
	(VUSE_VECT_NUM_ELEM): Define.
	(VUSE_VECT_ELEMENT_NC): Define.
	(VUSE_ELEMENT_PTR_NC): Define.
	(VUSE_ELEMENT_VAR_NC): Define.
	(VUSE_VECT_ELEMENT): Define.
	(VUSE_ELEMENT_PTR): Define.
	(VUSE_ELEMENT_VAR): Define.
	(struct maydef_optype_d) <use_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(struct vuse_optype_d) <kill_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(struct mustdef_optype_d) <kill_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(VUSE_OP_PTR): Add argument.  Use VUSE_ELEMENT_PTR.
	(VUSE_OP): Add argument.  Use VUSE_ELEMENT_PTR.
	(VUSE_NUM): Define.
	(VUSE_VECT): Define.
	(MAYDEF_OP_PTR): Add argument.  Use VUSE_OP_PTR.
	(MAYDEF_OP): Add argument.  Use VUSE_OP.
	(MAYDEF_NUM): Define.
	(MAYDEF_VECT): Define.
	(MUSTDEF_KILL_PTR): Use VUSE_OP_PTR.
	(MUSTDEF_KILL): Use VUSE_OP.
	(MUSTDEF_NUM): Define.
	(MUSTDEF_VECT): Define.
	(realloc_maydef): Declare.
	(realloc_vuse): Declare.
	(struct ssa_operand_iterator_d) <vuse_index>: Add.
	<mayuse_index>: Add.
	(LOADED_SYMS): Define.
	(STORED_SYMS): Define.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): Call op_iter_next_mustdef.
	* tree-into-ssa.c: Adapt for multi-operand V_MAY_DEF and VUSE
	operators.
	* tree-pretty-print.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* tree-flow-inline.h: Likewise.
	(op_iter_next_mustdef): New.
	* tree-ssa-operands.c: Likewise.
	(ALLOC_OPTYPE): Remove.
	Update all users.
	(alloc_def): New.
	(alloc_use): New.
	(alloc_maydef): New.
	(alloc_vuse): New.
	(alloc_mustdef): New.
	(realloc_maydef): New.
	(realloc_vuse): New.

2006-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-operands.c: Remove build_v_must_defs.
	(init_ssa_operands): Delete build_v_must_defs.
	(finalize_ssa_v_must_def_ops): Remove.
	(finalize_ssa_v_must_defs): Remove.
	(finalize_ssa_stmt_operands): Do not call
	finalize_ssa_v_must_defs.
	(start_ssa_stmt_operands): Do not check build_v_must_defs.
	(append_v_must_def): Delete.
	(copy_virtual_operands): Do not copy V_MUST_DEFs.
	(get_modify_expr_operands): Remove reference to V_MUST_DEF from
	comment.  Remove opf_kill_def.
	(build_ssa_operands): Remove references to v_must_defs.
	(copy_virtual_operands): Same.
	(copy_virtual_operands): Same.
	(fini_ssa_operands): Same.
	(free_ssa_operands): Same.
	(add_mustdef_op): Remove.
	Remove mustdef_optype_p.
	(alloc_mustdef): Remove.
	Remove references to V_MUST_DEFs in comment at top of file.
	(get_expr_operands): Remove opf_kill_def.
	(opf_kill_def): Remove.
	(add_virtual_operand): Remove opf_kill_def.
	(get_indirect_ref_operands): Same.
	(get_tmr_operands): Same.

	* tree-vectorizer.c (rename_variables_in_bb): Remove
	SSA_OP_ALL_KILLS.

	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
	SSA_OP_ALL_KILLS.
	(check_loop_closed_ssa_stmt): Same.

	* tree-ssa.c (verify_def): Remove V_MUST_DEF from comment.
	(verify_use): Same.
	(verify_ssa): Remove V_MUST_DEFs traces.
	(verify_ssa): Remove SSA_OP_ALL_KILLS.

	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTDEF to
	SSA_OP_VMAYDEF.
	(rewrite_update_stmt): Remove SSA_OP_VIRTUAL_KILLS.
	(rewrite_stmt): Remove SSA_OP_ALL_KILLS.

	* tree-ssa-operands.h (struct stmt_operands_d): Remove V_MUST_DEF
	references.
	(MUSTDEF_OPS): Remove.
	(SSA_OP_VMUSTDEF): Remove.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): Remove.
	(struct mustdef_optype_d): Remove.
	Remove mustdef_optype_p.
	(struct stmt_operands_d): Remove mustdef_ops.
	(ssa_operand_iterator_d): Remove mustdefs and mustkills.
	(SSA_OP_VIRTUAL_DEFS): Remove SSA_OP_VMUSTDEF.
	(MUSTDEF_RESULT_PTR): Remove.
	(MUSTDEF_RESULT): Remove.
	(MUSTDEF_KILL_PTR): Remove.
	(MUSTDEF_KILL): Remove.
	(MUSTDEF_NUM): Remove.
	(MUSTDEF_VECT): Remove.
	(SSA_OP_VIRTUAL_KILLS): Remove.
	(SSA_OP_ALL_VIRTUALS): Remove SSA_OP_VIRTUAL_KILLS.
	(SSA_OP_VMUSTKILL): Remove.
	(SSA_OP_ALL_KILLS): Remove.
	(SSA_OP_ALL_OPERANDS): Remove SSA_OP_ALL_KILLS.

	* tree-flow-inline.h (op_iter_init_def): Remove
	SSA_OP_VIRTUAL_KILLS.
	(delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.

	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
	SSA_OP_VIRTUAL_KILLS.

	* tree-ssa-loop-im.c (determine_max_movement): Remove
	SSA_OP_VIRTUAL_KILLS.
	(gather_mem_refs_stmt): Same.
	(gather_mem_refs_stmt): Same.

	* tree-ssa-dce.c (mark_really_necessary_kill_operand_phis): Delete.
	(perform_tree_ssa_dce): Remove call to
	mark_really_necessary_kill_operand_phis.

	* tree-flow-inline.h (op_iter_init): Remove setting of mustdefs
	and mustkills.
	(op_iter_next_use): Do not check mustkills.
	(op_iter_next_def): Do not check mustdefs.
	(op_iter_next_tree): Do not check mustkills or mustdefs.
	(clear_and_done_ssa_iter): Do not set mustdefs or mustkills.
	(op_iter_next_maymustdef): Do not check mustkills.
	(op_iter_init_must_and_may_def): Remove SSA_OP_VMUSTKILL.
	(op_iter_init_mustdef): Remove.

	* tree-ssa-live.c (create_ssa_var_map): Change SSA_OP_VMUSTDEF to
	SSA_OP_VMAYDEF.

	* tree-ssa-dse.c (dse_optimize_stmt): Remove SSA_OP_VMUSTDEF.

	* tree-ssa-ccp.c: Remove V_MUST_DEF traces from comments.
	(visit_assignment): Same.

	* tree-ssa-copy.c (copy_prop_visit_assignment): Same.

	* tree-sra.c (mark_all_v_defs_1): Remove V_MUST_DEF from comment.

	* tree-outof-ssa.c (check_replaceable): Remove SSA_OP_VMUSTDEF.

	* tree-pretty-print.c (dump_vops): Remove printing of V_MUST_DEF.
	Remove kill_p variable.

	* tree-dfa.c (struct dfa_stats_d): Remove num_v_must_defs.
	(dump_dfa_stats): Remove code related to V_MUST_DEFs.
	(collect_dfa_stats_r): Do not set num_v_must_defs.
	(mark_new_vars_to_rename): Remove v_must_defs_{before,after}
	code.

	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
	SSA_OP_VMAYUSE.

	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
	SSA_OP_VMUSTDEF and SSA_OP_VMUSTKILL.

	* tree-ssa-propagate.c (stmt_makes_single_store): Remove
	SSA_OP_VMUSTDEF.

From-SVN: r119760
2006-12-11 20:48:51 -05:00
Zdenek Dvorak d453882913 re PR rtl-optimization/30113 (ICE in trunc_int_for_mode)
PR rtl-optimization/30113
	* loop-iv.c (implies_p): Require the mode of the operands to be
	scalar.

From-SVN: r119748
2006-12-11 21:29:44 +00:00
Diego Novillo cfaab3a924 tree-ssa-operands.h (create_ssa_artificial_load_stmt): Rename from create_ssa_artficial_load_stmt.
* tree-ssa-operands.h (create_ssa_artificial_load_stmt):
	Rename from create_ssa_artficial_load_stmt.  Update all users.
	* tree-into-ssa.c (register_new_def): Make static.
	* tree.c (is_global_var): Handle SSA_NAMEs.
	* tree.h (SSA_NAME_IS_DEFAULT_DEF): Define.  Update all users
	that used to call gimple_default_def.
	* tree-ssa-operands.c (push_stmt_changes): New.
	(pop_stmt_changes): New.  Update every pass that modifies
	statements to bracket modifications with
	push_stmt_changes/pop_stmt_changes.
	(discard_stmt_changes): New.
	* tree-ssa-dom.c (stmts_to_rescan): Change to stack of
	'tree *' instead of 'tree'.  Update all users.
	* tree-flow-inline.h (zero_imm_uses_p): New.
	(symbol_mem_tag): New.  Update every function that used
	to access the annotation directly.
	(set_symbol_mem_tag): Likewise.
	* tree-dfa.c (dump_variable): Always show the escape mask.
	(mark_symbols_for_renaming): Rename from
	mark_new_vars_to_rename.  Update all users.
	Only mark to rename naked symbols in real and virtual
	operands.

From-SVN: r119746
2006-12-11 15:15:53 -05:00
Andreas Schwab 7f46c638e6 Fix changelog entry.
From-SVN: r119745
2006-12-11 19:11:38 +00:00
Andreas Schwab 86aa531238 varasm.c (elf_record_gcc_switches): Cast second argument of ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.
* varasm.c (elf_record_gcc_switches): Cast second argument of
	ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.

From-SVN: r119744
2006-12-11 19:09:05 +00:00
Diego Novillo 9b3b55a105 * tree-scalar-evolution.c (scev_const_prop):
* tree-phinodes.c (remove_phi_node): Add argument
	RELEASE_LHS_P.  If given, release the SSA name on the LHS of
	the PHI node.
	Update all users.
	* tree-ssa-dce.c: Remove forward declarations for static
	functions.  Re-arrange functions bodies as needed.
	(find_obviously_necessary_stmts): Never mark PHI nodes as
	obviously necessary.

From-SVN: r119740
2006-12-11 12:50:53 -05:00
Carlos O'Donell 546447ae68 elf.h (MAX_OFILE_ALIGNMENT): Remove definition.
2006-12-11  Carlos O'Donell  <carlos@codesourcery.com>

	* config/arm/elf.h (MAX_OFILE_ALIGNMENT): Remove definition.

From-SVN: r119739
2006-12-11 17:31:48 +00:00
Jan Hubicka 34d85166bb value-prof.c (tree_stringops_transform): New.
* value-prof.c (tree_stringops_transform): New.
	(tree_value_profile_transformations): Require count to be non-zero;
	call stringop transform; reset stmt BSI after BB changed.
	(tree_divmod_fixed_value, tree_mod_pow2): Don't emit unnecesary label.
	(interesting_stringop_to_profile_p, tree_stringop_fixed_value): New.
	(tree_stringops_values_to_profile): New.
	(tree_values_to_profile): Call tree_stringops_values_to_profile.
	* tree.h (build_string_literal): Tidy prototype.
	(validate_arglist, builtin_memset_read_str, get_pointer_alignment):
	Declare.
	* builtins.c (validate_arglist, builtin_memset_read_str,
	get_pointer_alignment): Export.

From-SVN: r119735
2006-12-11 14:19:11 +00:00
Uros Bizjak fa283935de re PR target/30120 (silent miscompilation of argument passing)
PR target/30120
	Revert:
	2006-11-15  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.opt: New target option -mx87regparm.

	* config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
	float_in_x87: Add new variables. mmx_words, sse_words: Remove.
	(X87_REGPARM_MAX): Define.

	* config/i386/i386.c (override_options): Error out for
	-mx87regparm but no 80387 support.
	(ix86_attribute_table): Add x87regparm.
	(ix86_handle_cconv_attribute): Update comments for x87regparm.
	(ix86_comp_type_attributes): Check for mismatched x87regparm types.
	(ix86_function_x87regparm): New function.
	(ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
	point registers.
	(init_cumulative_args): Initialize x87_nregs and float_in_x87
	variables.
	(function_arg_advance): Process x87_nregs and x87_regno when
	floating point argument is to be passed in 80387 register.
	(function_arg): Pass XFmode arguments in 80387 registers for local
	functions.  Pass SFmode and DFmode arguments to local functions
	in 80387 registers when flag_unsafe_math_optimizations is set.

	* reg-stack.c (convert_regs_entry): Disable NaN load for
	stack registers that are used for argument passing.

	* doc/extend.texi: Document x87regparm function attribute.
	* doc/invoke.texi: Document -mx87regparm.

testsuite/ChangeLog:

	PR target/30120
	* gcc.target/i386/pr30120.c: New test.

	Revert:
	2006-11-15  Uros Bizjak  <ubizjak@gmail.com>

	* gcc.target/i386/x87regparm-1.c: New test.
	* gcc.target/i386/x87regparm-2.c: New test.
	* gcc.target/i386/x87regparm-3.c: New test.
	* gcc.target/i386/x87regparm-4.c: New test.

From-SVN: r119734
2006-12-11 15:06:07 +01:00
Jan Hubicka 8a4a83ed92 Move all varpool routines out of cgraph/cgraphunit to varpool.c
Move all varpool routines out of cgraph/cgraphunit to varpool.c
	* cgraph.c: Update comments.
	(cgraph_varpool_hash,
	cgraph_varpool_nodes, cgraph_varpool_last_needed_node
	cgraph_varpool_node_name, cgraph_varpool_node,
	cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_variable_initializer_availability): Move to
	varpool.c and drop cgraph_ prefixes.
	(cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
	move to varpool.c; drop cgraph_ prefix; make static.
	(dump_cgraph_varpool_node): Move to varpool.c under name
	dump_varpool_node.
	(dump_varpool, hash_varpool_node, eq_varpool_node,
	decide_is_variable_needed): Move to varpool.c
	(decl_assembler_name_equal): Move to tree.c.
	(availability_names): Rename to ...
	(cgraph_availability_names): ... this one.
	(dump_cgraph_node): Update.
	* cgraph.h: Reorder declarations now in varpool.c
	(cgraph_vailablity_names): Declare.
	(struct cgraph_varpool_node): Rename to ...
	(struct varpool_node): ... this one.
	(cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
	cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
	cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
	cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
	cgraph_variable_initializer_availability): Rename to ...
	(varpool_first_unanalyzed_node, varpool_nodes_queue,
	varpool_first_unanalyzed_node, varpool_node,
	varpool_node_for_asm, varpool_mark_needed_node,
	varpool_finalize_decl, varpool_enqueue_needed_node,
	varpool_assemble_pending_decls, variable_initializer_availability):
	Rename to ...
	* tree.c (decl_assembler_name_equal): Move here from cgraph.c.
	* tree.h (decl_assembler_name_equal): Declare.
	* omp-low.c (lower_omp_critical): Update.
	* ipa-reference (analyze_variable, static_execute): Likewise.
	* toplev.c (wrapup_global_declaration_2, compile_file): Update.
	* cgraphunit.c: Update comments.
	(cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
	varpool_assembled_nodes_queue.
	(cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
	varpool_analyze_pending_decls.
	(cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
	varpool_remove_unreferenced_decls.
	(record_reference): Update.
	(cgraph_create_edges): Update.
	(record_referneces_in_initializer): New function.
	(cgraph_varpool_assemble_decl): Move to varpool.c under name
	varpool_assemble_decl; make global.
	(cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
	varpool_assemble_pending_decls.
	(process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
	struct cgraph_order_sort, cgraph_output_in_order,
	cgraph_function_and_variable_invisibility, cgraph_optimize,
	cgraph_increase_alignment): Update.
	* dwarf2out.c (decls_for_scope): Likewise.
	* ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
	* except.c (output_ttype): Likewise.
	* varasm.c (mark_decl_referenced): Likewise.
	(find_decl_and_mark_referenced, assemble_alias): update.
	* Makefile.in: Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
	* passes.c (rest_of_decl_compilation): Update.

	* cp/decl2.c (var_finalized_p): Update for renamed varpool functions.
	* fortran/f59-lang.c (gfc_expand_function): Update for renamed varpool functions.

From-SVN: r119731
2006-12-11 08:07:52 +00:00
Ira Rosen ce133c3fa2 tree-vect-patterns.c (vect_recog_dot_prod_pattern): Use GIMPLE_STMT_OPERAND.
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Use
	GIMPLE_STMT_OPERAND.
	* tree-vect-transform.c (vect_permute_store_chain): Likewise.
	(vect_setup_realignment): Likewise.

From-SVN: r119730
2006-12-11 07:54:35 +00:00
Sa Liu cc8d70cd9d spu-elf.h (STARTFILE_SPEC): Update.
* config/spu/spu-elf.h (STARTFILE_SPEC): Update.
	(ENDFILE_SPEC): Likewise.
	* config/spu/spu.opt (mstdmain): New option.
	* config/spu/crti.asm: Remove.
	* config/spu/crtn.asm: Likewise.
	* config/spu/crt0.c: Likewise.
	* config/spu/crtend.c: Likewise.
	* config/spu/t-spu-elf (EXTRA_MULTILIB_PARTS): Remove crt0 files
	listed above.
	($(T)crti.o, $(T)crtn.o, $(T)crt1.o, $(T)crtend1.o): Remove.
	* doc/invoke.texi (SPU Options): Document -mstdmain.

Co-Authored-By: Ben Elliston <bje@au.ibm.com>

From-SVN: r119727
2006-12-11 11:53:42 +11:00
Zdenek Dvorak a14865dbe0 loop.texi: Document number_of_latch_executions and number_of_cond_exit_executions.
* doc/loop.texi: Document number_of_latch_executions and
	number_of_cond_exit_executions.
	* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
	chrec_is_positive, number_of_iterations_for_all_loops,
	scev_const_prop): Use number_of_latch_executions.
	(set_nb_iterations_in_loop): Do not increase the value of the
	number of iterations.
	(number_of_iterations_in_loop): Renamed to ...
	(number_of_latch_executions): ... this.
	(number_of_exit_cond_executions): New function.
	* tree-scalar-evolution.h (number_of_iterations_in_loop): Declaration
	removed.
	(number_of_latch_executions, number_of_exit_cond_executions): Declare.
	* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): Use
	number_of_latch_executions.
	* tree-data-ref.c (get_number_of_iters_for_loop): Use
	number_of_exit_cond_executions.
	* tree-vect-analyze.c (vect_get_loop_niters): Ditto.
	* cfgloop.h (struct loop): Improve description of the nb_iterations
	field.

	* gcc.dg/tree-ssa/loop-17.c: Update outcome.

From-SVN: r119718
2006-12-10 23:34:20 +00:00
Daniel Berlin c7463db95a tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
2006-12-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
	(tree_pointer_compare): Remove.

From-SVN: r119714
2006-12-10 22:39:41 +00:00
Zdenek Dvorak 42fd6772c6 tree-vrp.c (adjust_range_with_scev): Use get_chrec_loop.
* tree-vrp.c (adjust_range_with_scev): Use get_chrec_loop.
	* loop-unswitch.c (unswitch_loops): Use FOR_EACH_LOOP.
	* tree-loop-linear.c (linear_transform_loops): Ditto.
	* tree-ssa-loop-im.c (determine_lsm): Ditto.
	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
	free_numbers_of_iterations_estimates): Ditto.
	* tree_ssa_unswitch_loops (tree_ssa_unswitch_loops): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
	* modulo-sched.c (sms_schedule): Ditto.
	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables,
	tree_unroll_loops_completely): Ditto.
	* predict.c (predict_loops): Ditto.
	* tree-if-conv.c (main_tree_if_conversion): Ditto.
	* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
	decide_unrolling_and_peeling): Ditto.
	* cfgloopmanip.c (unloop): Use delete_loop.
	(place_new_loop): Access larray vector instead of parray.
	(create_preheaders, force_single_succ_latches,
	fix_loop_structure): Use FOR_EACH_LOOP and delete_loop..
	* loop-doloop.c (doloop_optimize_loops): Ditto.
	* loop-invariant.c (move_loop_invariants): Ditto.
	* tree-cfg.c (replace_uses_by): Ditto.
	* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Ditto.
	* tree-chrec.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
	Moved to ...
	* tree.h (CHREC_VAR, CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE):
	... here.
	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
	compute_overall_effect_of_inner_loop, chrec_is_positive): Use
	get_loop and get_chrec_loop.
	(number_of_iterations_for_all_loops): Use number_of_loops.
	(scev_initialize, scev_reset, scev_const_prop): Use FOR_EACH_LOOP.
	* tree-scalar-evolution.h (get_chrec_loop): New inline function.
	* cfgloopanal.c (mark_irreducible_loops): Use number_of_loops,
	and FOR_EACH_LOOP.
	* tree-chrec.c (evolution_function_is_invariant_rec_p,
	chrec_convert_1): Use get_loop and get_chrec_loop.
	* loop-init.c (loop_optimizer_init): Use number_of_loops.
	(loop_optimizer_init): Use FOR_EACH_LOOP.
	* tree-vectorizer.c (vect_loops_num): Removed.
	(vectorize_loops): Store number of loops locally.  Use
	FOR_EACH_LOOP and get_loop.
	* tree-vectorizer.h (vect_loops_num): Removed.
	* tree-data-ref.c (get_number_of_iters_for_loop): Use get_loop.
	(find_data_references_in_loop): Do not set parallel_p.
	* tree-data-ref.h: Do not declare VEC(loop_p).
	* cfgloop.c (flow_loops_dump, mark_single_exit_loops,
	verify_loop_structure): Use FOR_EACH_LOOP.
	(flow_loops_free): Use FOR_EACH_LOOP, free larray vector.
	(initialize_loops_parallel_p): Removed.
	(flow_loops_find): Push the loops into a vector.
	(delete_loop): New function.
	(cancel_loop): Use delete_loop.
	* cfgloop.h: Declare VEC(loop_p).
	(struct loop): Remove parallel_p field.
	(struct loops): Replace num and parray field by larray vector.
	Remove shared_headers field.
	(delete_loop): Declare.
	(get_loop, get_loops, number_of_loops, fel_next, fel_init,
	FOR_EACH_LOOP): New.
	* doc/loop.tex: Document new accessor functions.

From-SVN: r119713
2006-12-10 22:17:15 +00:00
Andrew MacLeod 7290d709ef New out of ssa Coalescer.
2006-12-10  Andrew MacLeod  <amacleod@redhat.com>

	* common.opt (-ftree-lrs): Remove live range splitting option.
	* makefile.in: Add tree-ssa-coalesce.o and reduce header dependancies.
	* opts.c (decode_options): Remove flag_tree_live_range_split.
	* tree-flow.h (struct var_ann_d): Rename fields from root_ to base_.
	* tree-flow-inline.h (single_imm_use_p): New.  Check for single use.
	* tree-outof-ssa.c: Remove header files which aren't needed.
	(SSANORM_*): Remove flags.
	(print_exprs_edge, coalesce_abnormal_edges, coalesce_phi_operands, 
	coalesce_result_decls_and_copies, coalesce_asm_operands): Remove.
	(coalesce_ssa_name): Move to tree-ssa-coalesce.c.
	(assign_vars): Use Basevar instead of root_var structure.
	(replace_def_variable): Dont do anything if def is replaceable.
	(remove_ssa_form): Integrate functional changes.
	(rewrite_out_of_ssa): Remove live-range_split option.
	* tree-ssa-coalesce.c: New File for ssa-name coalescing.
	(coalesce_cost): Calculate the cost of a coalesce.
	(coalesce_cost_bb): Calculate the coalesce cost within a BB.
	(coalesce_cost_edge): Calculate the coalesce cost on an edge.
	(pop_cost_one_pair): Remove the best coalesce with cost 1 from the list.
	(pop_best_coalesce): Remove the best coalesce from the list.
	(coalesce_pair_map_hash): Calculate coalesce pair hash.
	(coalesce_pair_map_eq): Compare 2 coalesce pairs for hash function.
	(create_coalesce_list): Create a coalesce list object.
	(delete_coalesce_list): Free a coalesce list object.
	(find_coalesce_pair): Find matching pair in the coalesce list.
	(add_cost_one_coalesce): Add a coalesce to the "cost one" list.
	(add_coalesce): Add a coalesce to the coalesce list.
	(compare_pairs): Comparision function to determine pair sorted order.
	(num_coalesce_pairs): Number of coalesced pairs.
	(first_coalesce_pair, end_coalesce_pair_p, next_coalesce_pair):
	Coalesce pair iterator functions.
	(sort_coalesce_list): Sort coalesce pairs in order of expense.
	(dump_coalesce_list): Show coalesce list.
	(ssa_conflicts_new): Create an SSA conflict graph.
	(ssa_conflicts_delete): Delete an SSA conflict graph.
	(ssa_conflicts_test_p): Test for conflicts.
	(ssa_conflicts_add_one): Add a single conflict.
	(ssa_conflicts_add): Add a conflict pair.
	(ssa_conflicts_merge): Merge conflicts.
	(struct live_track_d): Struct for tracking live partitions.
	(new_live_track): Create new live_track object.
	(delete_live_track): Delete a live_track object.
	(live_track_remove_partition): Remove a partition from the live list.
	(live_track_add_partition): Add a partition from the live list.
	(live_track_clear_var): Take VAR from the live list.
	(live_track_live_p): Is var live?
	(live_track_process_use): Make var come alive.
	(live_track_process_def): Make var go dead, add conflicts.
	(live_track_init): Initialize to a live on exit set.
	(live_track_clear_base_vars): Clear live partitions.
	(build_ssa_conflict_graph): Build a conflict graph.
	(print_exprs): Common debug output routine.
	(abnormal_corrupt): Output info about a failed coalesce across an
	abnormal edge.
	(fail_abnormal_edge_coalesce): Output info about a failed MUST_COALESCE.
	(create_outofssa_var_map): Create a var map and coalesce list.
	(attempt_coalesce): Coalesce a pair.
	(coalesce_partitions): Coalesce all pairs in a coalesce list.
	(coalesce_ssa_name): Entry point.  Determine what ssa_names to coalesce.
	* tree-ssa-live.c: Remove header files which aren't needed.
	(var_map_base_init): New.  Initialize a basevar list.
	(var_map_base_fini): New.  Finish a basevar list.
	(init_var_map): Initialize new fields.
	(delete_var_map): Free new fields.
	(var_union): Use renamed fields.
	(compact_var_map): Remove.
	(partition_to_view_init): Use renamed fields, change order of an if.
	(partition_view_fini): Use renamed fields.
	(partition_view_normal): Create basevar list if requested.
	(partition_view_bitmap): Create a view based on a bitmap of partitions.
	(change_partition_var): Use renamed fields.
	(create_ssa_var_map): Remove.
	(tpa_init, tpa_remove_partition, tpa_delete, tpa_compact,
	root_var_init): Remove.
	(partition_pair_map_hash, partition_pair_map_eq, create_coalesce_list,
	delete_coalesce_list, find_partition_pair, coalesce_cost, add_coalesce,
	compare_pairs, num_coalesce_pairs, first_partition_pair,
	end_partition_pair_p, next_partition_pair, sort_coalesce_list,
	pop_best_coalesce, add_conflicts_if_valid, set_if_valid,
	build_tree_conflict_graph, coalesce_tpa_members, dump_coalesce_list,
	tpa_dump): Moved to tree-ssa-coalesce.c and/or renamed there.
	(dump_var_map): Use renamed fields.
	* tree-ssa-live.h (struct  _var_map): Modify fields.
	(partition_to_var, version_to_var, var_to_partition): Use renamed 
	fields.
	(basevar_index): New.  Index of the base variable of a partition.
	(num_basevars): New.  Number of unique base variables in partition map.
	(register_ssa_partition): Use renamed fields.
	(struct tree_partition_associator_d): Remove.
	(tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition,
	tpa_find_tree, tpa_decompact, root_var_init, root_var_num,
	root_var, root_var_first_partition, root_var_next_partition,
	root_var_dump, root_var_delete, root_var_remove_partition, 
	root_var_find, root_var_compact, root_var_decompact): Remove.
	(struct partition_pair, struct coalesce_list_d): Moved to 
	tree-ssa-coalesce.c
	* tree-ssa-ter.c: Remove header files which aren't needed.

From-SVN: r119711
2006-12-10 21:25:40 +00:00
Steven Bosscher 932ad4d9b5 cse.c: (struct cse_basic_block_data): Remove LAST field.
* cse.c: (struct cse_basic_block_data): Remove LAST field.
	(struct branch_path): Remove BRANCH and TAKEN fields. Add new
	BB field.
	(cse_visited_basic_blocks): New static bitmap.
	(cse_end_of_basic_block, cse_basic_block): Remove.
	(cse_find_path, cse_dump_path, cse_prescan_path,
	cse_extended_basic_block): New static functions.
	(cse_insn): Don't CSE over setjmp calls.  Use the CFG to find
	basic block boundaries.  Don't record jump equivalences here.
	Update the CFG after doing in-place replacement of the SET_SRC.
	(cse_main): Rewrite.  Look for extended basic block headers
	and call cse_extended_basic_block on them until all paths that
	start at this header are exhausted.
	(rest_of_handle_cse): Verify that the CFG is incrementally updated
	and correct after cse_main.
	Don't call delete_trivially_dead_insns, let cfgcleanup do that.
	(rest_of_handle_cse2): Verify the CFG here, too, after cse_main.
	(pass_cse): Add TODO_verify_flow.
	(pass_cse2): Likewise.

From-SVN: r119706
2006-12-10 10:59:19 +00:00
Rask Ingemann Lambertsen 15447faef3 reload1.c (choose_reload_regs): Don't set byte offset when resolving subregs of hard regs.
2006-12-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>

	* reload1.c (choose_reload_regs): Don't set byte offset when
	resolving subregs of hard regs.

From-SVN: r119705
2006-12-10 10:37:48 +00:00
Zack Weinberg 566c6181e6 c-opts.c (c_common_parse_file): Unconditionally give a warning, suitable for the language, if set_yydebug is true.
* c-opts.c (c_common_parse_file): Unconditionally give a warning,
	suitable for the language, if set_yydebug is true.
	* c-pragma.h: Define enum pragma_omp_clause here.  Don't define
	YYDEBUG or declare yydebug.
	* c-parser.c (yydebug, enum pragma_omp_clause): Delete.
	* cp/parser.c: Likewise.

From-SVN: r119704
2006-12-10 05:09:29 +00:00
Jan Hubicka efe75b6f9f cgraph.c: Update copyright.
* cgraph.c: Update copyright.
	* cgraph.h: Likewise
	(cgraph_update_pending_function): Remove prototype.
	* cgraphunit.c: Update copyright; update overall comment.
	(cgraph_assemble_pending_functions): Make local.

From-SVN: r119691
2006-12-09 15:36:55 +00:00
Maxim Kuvyrkov 448d5cc931 haifa-sched.c (schedule_block): Remove excessive sanity check.
2006-12-09  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	* haifa-sched.c (schedule_block): Remove excessive sanity check.

From-SVN: r119688
2006-12-09 13:05:44 +00:00
Trevor Smigiel a1c6e4b803 spu-protos.h (spu_split_immediate): Renamed from spu_split_address.
* config/spu/spu-protos.h (spu_split_immediate): Renamed from
        spu_split_address.
        (cpat_const_p, gen_cpat_const): Add.
        * config/spu/spu.c (immediate_class): New enum.
        (cpat_info, classify_immediate): New.
        (print_operand): Use S, D, T instead of F, G, H.  Use
        classify_immediate.  Handle cpat cases.
        (spu_split_immediate):  Renamed from spu_split_address.  Split all
        immediates that can be split.
        (immediate_load_p): Use classify_immediate.
        (spu_legitimate_constant_p): Accept everything except some cases of
        CONST_VECTOR.
        (spu_expand_move): Use spu_split_immedate.
        (fsmbi_const_p): Use classify_immediate.
        (cpat_const_p): New.
        (gen_cpat_const: New.
        * config/spu/constraints.md (j,k,l): New constraints for cpat
        instructions.
        * config/spu/spu.md (unnamed splitter): Change address splitter to
        handle all immediates.
        (_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
        instructions.
        (cpat, _cpat, splitter): Generate a TImode constant for cpat patterns
        when possible.

From-SVN: r119682
2006-12-09 01:22:39 +00:00
John David Anglin 920aeaf3da re PR target/30039 (HPPA: Incorrect code generated on 64bit host)
PR target/30039
	* pa.md (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
	patterns.  Correct length of high:DI instruction sequence.

From-SVN: r119669
2006-12-08 23:41:03 +00:00
Mike Stump 44f31fec96 t-darwin (TARGET_LIBGCC2_CFLAGS): Build libgcc with -mmacosx-version-min=10.4.
* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
	libgcc with -mmacosx-version-min=10.4.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
	G4 for 10.5+ unless doing kernel builds.

From-SVN: r119666
2006-12-08 22:22:51 +00:00
Uros Bizjak 4280a3e362 re PR target/30120 (silent miscompilation of argument passing)
PR target/30120
        * reg-stack.c (convert_regs_entry): Mark current argument passing
        registers as live.

        * config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
        of float arguments in x87 registers.

testsuite/ChangeLog:

        * gcc.target/i386/x87regparm-1.c: XFAIL.
        * gcc.target/i386/x87regparm-2.c: XFAIL.
        * gcc.target/i386/x87regparm-3.c: XFAIL.
        * gcc.target/i386/x87regparm-4.c: XFAIL.

From-SVN: r119663
2006-12-08 19:20:25 +01:00
John David Anglin fd13de7772 pa.h (LEGITIMATE_CONSTANT_P): Simplify.
* pa.h (LEGITIMATE_CONSTANT_P): Simplify.

From-SVN: r119661
2006-12-08 17:28:59 +00:00
Mark Shinwell b9a76028a2 recog.c (mode_dependent_address_p): Identify pre-increment...
gcc/
	* recog.c (mode_dependent_address_p): Identify pre-increment,
	pre-decrement, post-increment and post-decrement addressing as always
	being mode-dependent.
	* config/m32c/m32c.c (m32c_mode_dependent_address): Delete.
	* config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/m32c/m32c-protos.h (m32c_mode_dependent_address): Delete.
	* config/m32r/m32r.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
	PRE_INC and POST_INC checks.
	* config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/c4x/c4x.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
	PRE_INC, POST_DEC and POST_INC cases.
	* config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
	Delete POST_INC and PRE_DEC cases.
	* config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
	no-op.
	* config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
	no-op.
	* config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/rs6000/rs6000.c (rs6000_mode_dependent_address): Delete
	PRE_INC and PRE_DEC cases.
	* config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/arm/arm.h (ARM_GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
	(GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	* config/vax/vax.c (vax_mode_dependent_address_p): Delete
	auto-increment cases.
	* config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete
	auto-increment cases.
	* config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
	
	gcc/testsuite/
	* gcc.c-torture/execute/mode-dependent-address.c: New test.

From-SVN: r119660
2006-12-08 16:37:42 +00:00
Andrew MacLeod 00509c04ee New TER code.
2006-12-08  Andrew MacLeod  <amacleod@redhat.com>

	* Makefile.in: Add new file tree-ssa-ter.c.
	* tree-outof-ssa.c (struct temp_expr_table_d, new_temp_expr_table, 
	free_temp_expr_table, add_value_to_version_list, 
	add_value_to_partition_list, remove_value_from_partition_list, 
	add_dependence, check_replaceable, finish_expr, mark_replaceable, 
	kill_expr, kill_virtual_exprs, find_replaceable_in_bb, 
	find_replaceable_exprs, dump_replaceable_exprs): Move to tree-ssa-ter.c.
	* tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): Add
	prototypes.
	* tree-ssa-ter.c: New file using code moved from tree-outof-ssa.c.
	(struct value_expr_d): Remove.
	(struct temp_expr_table_d): Rename fields, add explicit vector of
	replaceable expressions instead of sharing. Change value_expr_p's to 
	bitmap.  Delete free_list.
	(new_temp_expr_table): Rename fields, count number of ssa_names in
	each partition.
	(free_temp_expr_table): Rename field, free new fields.
	(new_value_expr, free_value_expr, find_value_in_list, add_value_to_list,
	add_info_to_list, remove_value_from_list): Delete.
	(version_to_be_replaced_p): New. Is an ssa-name replaceable?
	(make_dependent_on_partition): New. Set bit in version list, allocating
	a bitmap if need be.
	(add_to_partition_kill_list): New.  Set bit in the partition list,
	allocating a bitmap if need be.
	(remove_from_partition_kill_list): New.  Remove a bit from the
	partition list, free the bitmap if it is empty.
	(add_dependence): Use renamed field, cleanup. Don't add a dependence
	on partitions with only one member.
	(is_replaceable_p): New.  Split out replaceability check from 
	check_replaceable.
	(process_replaceable): New. Replacement code split from 
	check_replaceable.
	(check_replaceable): Removed.
	(finished_with_expr): Renamed from finish_expr.
	(kill_expr): Use renamed fields. Less parameters.
	(kill_virtual_exprs): Less parameters.
	(mark_replaceable): Use renamed fields.
	(find_replaceable_in_bb): Use renamed fields, cleanup.
	(find_replaceable_exprs): Use renamed routines, cleanup.
	(dump_replaceable_exprs): don;t go past end of ssa_names list.
	(debug_ter): New.  Debug routine to dump state.

From-SVN: r119657
2006-12-08 14:07:53 +00:00
Eric Botcazou 5848e34ae4 Fix ChangeLog.
From-SVN: r119656
2006-12-08 13:34:03 +00:00
Bernd Schmidt 96f46444e1 bfin.c (effective_address_32bit_p): Return true for anything involving the GOT.
* config/bfin/bfin.c (effective_address_32bit_p): Return true for
	anything involving the GOT.
	(bfin_adjust_cost): Don't take the REGNO of a MEM.
	(trapping_loads_p): Look inside the pattern of an insn to find the
	SET.
	* config/bfin/bfin.md (attr "type"): Add movcc.
	(insn_reservation "alu"): Likewise.
	(movsicc_insn1, movsicc_insn2): Change type to movcc.

From-SVN: r119655
2006-12-08 12:42:44 +00:00
Andrew Pinski faf8957192 Correctly wrap my changelog entry.
From-SVN: r119650
2006-12-08 00:11:44 -08:00
Andrew Pinski cf71109bd6 Add a PR reference for the patch which fixed PR 27558.
2006-04-20  Jakub Jelinek  <jakub@redhat.com>

        * c-pretty-print.c (pp_c_direct_abstract_declarator): Print
        TYPE_MAX_VALUE (TYPE_DOMAIN (t)) + 1 for ARRAY_TYPE rather
        than plain TYPE_MAX_VALUE (TYPE_DOMAIN (t)).

From-SVN: r119648
2006-12-07 20:50:02 -08:00
Andrew Pinski 9838be08d0 spu-c.c (spu_build_overload_builtin): Delete.
2006-12-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * config/spu/spu-c.c (spu_build_overload_builtin): Delete.
        (spu_resolve_overloaded_builtin): Check for non scalar instead
        of vector type and check the function call argument type also for non scalar.
        Call build_function_call instead of spu_build_overload_builtin.

2006-12-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * gcc.target/spu: New directory.
        * gcc.target/spu/spu.exp: New file.
        * gcc.target/spu/intrinsics-1.c: New test.

From-SVN: r119637
2006-12-07 15:40:46 -08:00
Trevor Smigiel 9dc5f9bad9 spu.c (array_to_constant): Correct the order of arguments to the calls of hwint_to_const_double.
* config/spu/spu.c (array_to_constant): Correct the order of arguments
	to the calls of hwint_to_const_double.

From-SVN: r119635
2006-12-07 22:11:51 +00:00
Nick Clifton f4ab891606 * config/elfos.h (TARGET_ASM_RECORD_GCC_SWITCHES): Set to elf_record_gcc_switches.
From-SVN: r119630
2006-12-07 17:44:10 +00:00
Andrew MacLeod a3de5951ce expr.c (string_constant): Account for non-zero lower bound arrays.
2006-12-07  Andrew Macleod  <amacleod@redhat.com>

	* expr.c (string_constant): Account for non-zero lower bound arrays.

From-SVN: r119623
2006-12-07 14:39:37 +00:00
Richard Guenther 5eab7e7af0 builtins.c (expand_builtin_pow): Adjust predicates for pow to cbrt expansion to unsafe math and !HONOR_NANS for...
2006-12-07  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_pow): Adjust predicates for
	pow to cbrt expansion to unsafe math and !HONOR_NANS for
	negative base.

From-SVN: r119622
2006-12-07 14:24:11 +00:00
Jan Hubicka e850f0281c i386.c (nocona_cost, [...]): Update preffered memcpy/memset codegen.
* i386.c (nocona_cost, pentium4_cost): Update preffered memcpy/memset
	codegen.

From-SVN: r119620
2006-12-07 12:56:02 +00:00
Jan Hubicka 5daffcc76e tree-vrp.c (compare_values): Short circuit INTEGER_CST...
* tree-vrp.c (compare_values): Short circuit INTEGER_CST;
	use fold_constant_to_binary; tolerate wrong type constants.
	(value_intersect_p): Do just two tests.

From-SVN: r119619
2006-12-07 12:54:09 +00:00
Bernd Schmidt 58f7667965 bfin.c (print_operand): New modifier 'N' for constants.
* config/bfin/bfin.c (print_operand): New modifier 'N' for constants.
	* config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
	lshifthi3): Use it, and fix the order of alternatives.

From-SVN: r119616
2006-12-07 11:06:08 +00:00
Nick Clifton e0d9d0ddb6 common.opt (record-gcc-switches): New command line switch.
* common.opt (record-gcc-switches): New command line switch.
* target.h (print_switch_type): New enum.
  (print_switch_fn_type): New typedef for a function pointer.
  (struct gcc_target): Add record_gcc_switches and record_gcc_switches_section fields.
* target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a default definition.
  (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Provide a default definition.
* toplev.c (print_single_switch): Simplify by providing a pointer to function that will format and output the switch appropriately.
  (print_switch_values): Likewise.
  (print_to_asm_out_file): New function.
  (print_to_stderr): New function.
  (init_asm_output): If flag_record_gcc_switches is set then if the target supports recording the switches then emit them into the assembler output file, otherwise tell the user that the switch is not supported.
* varasm.c (eld_record_gcc_switches): New function.  Example handler for the record_gcc_switches target hook.
* doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new target hook.
  (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Likewise.
* doc/invoke.texi (-frecord-gcc-switches): Document.

From-SVN: r119615
2006-12-07 10:54:13 +00:00
Maxim Kuvyrkov 1d49ee6a79 re PR target/29794 (cc1 segfaults with -O3 -msched-control-spec)
2006-12-07  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>

	PR target/29794
	* sched-rgn.c (add_block1): Use correct initializer.

From-SVN: r119613
2006-12-07 10:02:35 +00:00
Richard Guenther 9f9195633a tree-vect-transform.c (vectorizable_call): Fix leftover of TREE_OPERAND to GIMPLE_STMT_OPERAND conversion.
2006-12-07  Richard Guenther  <rguenther@suse.de>

	* tree-vect-transform.c (vectorizable_call): Fix leftover of
	TREE_OPERAND to GIMPLE_STMT_OPERAND conversion.

From-SVN: r119612
2006-12-07 09:38:37 +00:00
Aldy Hernandez 66863d89a1 pa.c (hppa_gimplify_va_arg_expr): Build MODIFY_EXPR not GIMPLE_MODIFY_STMT.
PR/30079
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Build MODIFY_EXPR
	not GIMPLE_MODIFY_STMT.

From-SVN: r119600
2006-12-06 22:08:49 +00:00
Jan Hubicka 6b3c76a98c tree-vrp.c (operand_less_p): New.
* tree-vrp.c (operand_less_p): New.
	(compare_values, value_inside_range): Rewrite in terms of
	operand_less_p.

From-SVN: r119583
2006-12-06 16:32:17 +00:00
Uros Bizjak 90c56b45eb i386.md (DIRFLAG_REG): Remove constant.
* config/i386/i386.md (DIRFLAG_REG): Remove constant.
	(type): Remove cld.
	(length_immediate): Do not depend on cld type attribute.
	(length_address): Ditto.
	(modrm): Ditto.
	(memory): Ditto.
	(cld): Remove insn pattern.
	(strmov_singleop): Do not use DIRFLAG_REG.
	(*strmovdi_rex_1): Ditto.
	(*strmovsi_1): Ditto.
	(*strmovsi_rex_1): Ditto.
	(*strmovhi_1): Ditto.
	(*strmovhi_rex_1): Ditto.
	(*strmovqi_1): Ditto.
	(*strmovqi_rex_1): Ditto.
	(rep_mov): Ditto.
	(*rep_movdi_rex64): Ditto.
	(*rep_movsi): Ditto.
	(*rep_movsi_rex64): Ditto.
	(*rep_movqi): Ditto.
	(*rep_movqi_rex64): Ditto.
	(strset_singleop): Ditto.
	(*strsetdi_rex_1): Ditto.
	(*strsetsi_1): Ditto.
	(*strsetsi_rex_1): Ditto.
	(*strsethi_1): Ditto.
	(*strsethi_rex_1): Ditto.
	(*strsetqi_1): Ditto.
	(*strsetqi_rex_1): Ditto.
	(rep_stos): Ditto.
	(*rep_stosdi_rex64): Ditto.
	(*rep_stossi): Ditto.
	(*rep_stossi_rex64): Ditto.
	(*rep_stosqi): Ditto.
	(*rep_stosqi_rex64): Ditto.
	(cmpstrnsi): Do not generate cld insn.
	(cmpstrnqi_nz_1): Do not use DIRFLAG_REG.
	(*cmpstrnqi_nz_1): Ditto.
	(*cmpstrnqi_nz_rex_1): Ditto.
	(cmpstrnqi_1): Ditto.
	(*cmpstrnqi_1): Ditto.
	(*cmpstrnqi_rex_1): Ditto.
	(strlenqi_1): Ditto.
	(*strlenqi_1): Ditto.
	(*strlenqi_rex_1): Ditto.

	* config/i386/geode.md (shift): Do not depend on cld type attribute.
	* config/i386/pentium.md (pent_cld): Remove insn reservation.
	* config/i386/athlon.md (athlon_decode): Do not depend on cld
	type attribute.
	* config/i386/ppro.md (ppro_cld): Remove insn reservation.
	* config/i386/k6.md (k6_alux_only): Do not depend on cld type
	attribute.
	(k6_alux_only_load): Ditto.
	(k6_alux_only_store): Ditto.

	* config/i386/i386.c (ix86_expand_movmem): Remove cld_done boolean.
	Do not emit cld instruction.
	(ix86_expand_setmem): Ditto.
	(ix86_expand_strlen): Do not emit cld instruction.

From-SVN: r119581
2006-12-06 15:56:10 +01:00
Bernd Schmidt 4b53c50816 bfin.c (bfin_rtx_costs): Add a number of new cases, tweak old ones.
* config/bfin/bfin.c (bfin_rtx_costs): Add a number of new cases, tweak
	old ones.

From-SVN: r119579
2006-12-06 12:45:36 +00:00
Diego Novillo 3a7f50dc49 gdbinit.in: Set complaints to 0.
* gdbinit.in: Set complaints to 0.

From-SVN: r119578
2006-12-06 06:24:41 -05:00
Uros Bizjak ebb60f41d4 ChangeLog: Use tabs instead of spaces.
* ChangeLog: Use tabs instead of spaces.

From-SVN: r119576
2006-12-06 08:14:23 +01:00
Jan Hubicka f75709c6f8 statistics.h (ALONE_PASS_MEM_STAT, [...]): New macros.
* statistics.h (ALONE_PASS_MEM_STAT, ALONE_MEM_STAT_INFO,
	ALONE_MEM_STAT_DECL): New macros.
	* bitmap.h: Include statistics.h
	(struct bitmap_head_def): Add variant with pointer to bitmap descriptor.
	(bitmap_initialize_stat): Rename from bitmap_initialize; add statistics.
	(bitmap_obstack_alloc_stat, bitmap_gc_alloc_stat): Declare.
	* bitmap.c: Include hashtab.h
	(bitmap_descriptor): New.
	(bitmap_hash): New static variable
	(hash_descriptor, eq_descriptor, bitmap_descriptor, register_overhead):
	New static functions.
	(bitmap_register): New.
	(bitmap_element_free, bitmap_element_allocate, bitmap_elt_clear_from,
	bitmap_obstack_release): Do accounting.
	(bitmap_obstack_alloc_stat): Rename from bitmap_obstack_alloc ; do
	accounting.
	(bitmap_gc_alloc_stat): Likewise.
	(bitmap_obstack_free, bitmap_find_bit): Do statictics.
	(print_statistics, dump_bitmap_statistics): New functions.
	* toplev.c (finalize): Dump bitmap statistics.

From-SVN: r119573
2006-12-06 01:37:38 +00:00
Bernd Schmidt 2372a06257 reload1.c (delete_output_reload): Count occurrences in CALL_INSN_FUNCTION_USAGE.
* reload1.c (delete_output_reload): Count occurrences in
	CALL_INSN_FUNCTION_USAGE.
	* rtlanal.c (count_occurrences): Handle EXPR_LIST nodes without
	crashing at the end of the list.

From-SVN: r119571
2006-12-06 00:25:29 +00:00
Daniel Berlin ff3add8dce tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
2006-12-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
	Optimize to avoid marking more SMT's as used when they aren't.

From-SVN: r119562
2006-12-05 23:46:28 +00:00
Eric Christopher 29c08d7c90 i386.c (x86_output_aligned_bss): Move out of COMMON_ASM_OP ifdef.
2006-12-05  Eric Christopher  <echristo@apple.com>

	* config/i386/i386.c (x86_output_aligned_bss): Move out
	of COMMON_ASM_OP ifdef.

From-SVN: r119560
2006-12-05 22:35:13 +00:00
Eric Christopher 742163c039 darwin.h (DARWIN_EXTRA_SPECS): New.
2006-12-05  Eric Christopher  <echristo@apple.com>

        * config/darwin.h (DARWIN_EXTRA_SPECS): New.
        (STARTFILE_SPEC): Use.
        (DARWIN_DYLIB1_SPEC): New.
        (DARWIN_CRT1_SPEC): New.
        * config/i386/darwin64.h (SUBTARGET_EXTRA_SPECS): Use
        DARWIN_EXTRA_SPECS.
        * config/i386/darwin.h: Ditto.
        * config/rs6000/darwin.h: Ditto.

From-SVN: r119555
2006-12-05 19:40:54 +00:00
Daniel Berlin 66087ed002 Commit missing changelog entry
From-SVN: r119553
2006-12-05 19:31:51 +00:00
Brooks Moses 58660eb32c * doc/include/texinfo.tex: Update to version 2006-11-08.17.
From-SVN: r119551
2006-12-05 10:50:57 -08:00
Zdenek Dvorak c1ac94fbe9 re PR tree-optimization/14784 ([Tree-ssa] alias analysis deficiency)
PR tree-optimization/14784
	* tree-ssa-operands.c (access_can_touch_variable): Unrevert the fix.

From-SVN: r119549
2006-12-05 18:26:20 +00:00
Aldy Hernandez 07beea0df3 Merge gimple-tuples-branch into mainline.
From-SVN: r119546
2006-12-05 17:26:05 +00:00
H.J. Lu 3b8aab767b config.host: Remove extra blank line.
2006-12-05  H.J. Lu  <hongjiu.lu@intel.com>

	* config.host: Remove extra blank line.

From-SVN: r119544
2006-12-05 08:04:35 -08:00
Bernd Schmidt 08bac9d89c config.host (i[34567]86-*-*, x86-64-*-*): Use driver-i386.o only if target is also an x86 variant.
* config.host (i[34567]86-*-*, x86-64-*-*): Use driver-i386.o only if
	target is also an x86 variant.

From-SVN: r119543
2006-12-05 15:45:51 +00:00
Richard Guenther db3cf6bd4c i386.c (ix86_builtin_vectorized_function): Declare.
2006-12-05  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
	(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
	(ix86_builtin_vectorized_function): New function to vectorize
	sqrt.

	* gcc.dg/vect/vect.exp: Add support for -fno-math-errno tests.
	* gcc.dg/vect/vect-pow-2.c: Rename to ...
	* gcc.dg/vect/no-math-errno-vect-pow-1.c: ... this.  Require
	vect_double, xfail for spu*-*-*.

From-SVN: r119542
2006-12-05 15:42:54 +00:00
Bernd Schmidt 708f30d603 bfin.c (output_file_start): Fix comment which referred to ia64_override_options.
* config/bfin/bfin.c (output_file_start): Fix comment which referred to
	ia64_override_options.

From-SVN: r119536
2006-12-05 10:35:36 +00:00
Jan Hubicka bd9f1b4b91 cfgexpand.c (expand_one_var): Guard expand_one_stack_var by really_expand.
* cfgexpand.c (expand_one_var): Guard expand_one_stack_var by
	really_expand.

From-SVN: r119535
2006-12-05 10:15:28 +00:00
Bernd Schmidt bbbc206e9f rtlanal.c (note_uses): Deal with SEQUENCEs.
* rtlanal.c (note_uses): Deal with SEQUENCEs.
	* config/bfin/bfin.c: Include "timevar.h".
	(bfin_flag_schedule_insns2, splitting_for_sched,
	bfin_flag_var_tracking): New variables.
	(print_operand): Handle '%!'.
	(override_options): Disable normal sched2 pass, instead set
	bfin_flag_schedule_insns2 for reorg to handle it.
	(output_file_start): Likewise for var-tracking.
	(bfin_optimize_loop): Take some care not to stumble over SEQUENCEs.
	(gen_one_bundle, bfin_gen_bundles, type_for_anomaly, trapping_loads_p):
	New functions.
	(bfin_reorg): Do second scheduling pass here, and call
	bfin_gen_bundles.  Use type_for_anomaly and trapping_loads_p instead
	of examining insns directly.  If bfin_flag_var_tracking, call
	var-tracking pass when done with everything else.
	* config/bfin/bfin.h (PRINT_OPERAND_PUNCT_VALID_P): '!' is valid.
	* config/bfin/bfin.md (UNSPEC_32BIT): New constant.
	(movsi_insn32): New pattern, with two new splits to create it
	before the final scheduling pass.
	(neghi2): Not a dsp32 insn, rather alu0.
	(movbi, pushsi_insn, popsi_insn, movsi_insn, movv2hi_insn, movhi_insn,
	movqi_insn, movsf_insn, movsi_insv, extendhisi2, zero_extendhisi2,
	extendqihi2, extendqisi2, zero_extendqihi2, zero_extendqisi2,
	mulhisi3, umulhisi3, ssadsi3, sssubsi3, smaxsi3, sminsi3, abssi2,
	ssnegsi2, signbitssi2, smaxhi3, sminhi3, abshi2, ssneghi2, signbitshi2,
	movhi_low2high, movhi_high2high, movhi_low2low, movhi_high2low,
	movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
	ssaddhi3, sssubhi3, addv2hi3, ssaddv2hi3, subv2hi3, sssubv2hi3,
	addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3, sublohiv2hi3,
	subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3, addlohiv2hi3,
	addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3, sminv2hi3, smaxv2hi3,
	flag_mulhi, flag_mulhisi, flag_mulhisi_parts, flag_machi,
	flag_machi_acconly, flag_macinithi, flag_macinit1hi, mulv2hi3,
	flag_mulv2hi, flag_mulv2hi_parts, flag_macv2hi_parts,
	flag_macv2hi_parts_acconly, flag_macinitv2hi_parts,
	flag_macinit1v2hi_parts, mulhisi_ll, mulhisi_lh, mulhisi_hl,
	mulhisi_hh, ssnegv2hi2, absv2hi2, ssashiftv2hi3, ssashifthi3,
	lshiftv2hi3, lshifthi3): Use '%!' to terminate all dsp32/load/store
	variants instead of ';'.
	(ror_one, rol_one): Likewise.  Make them dsp32 insns.
	(ashlsi3_insn, ashrsi3, lshrsi3): Add dsp32 variants.
	(align8, align16, align24): Now named patterns; also using '%!'.
	(mnop): New insn.

From-SVN: r119534
2006-12-05 08:49:56 +00:00
Kazu Hirata 9fc4da9d86 darwin.h, [...]: Fix comment typos.
* config/i386/darwin.h, config/spu/spu.c, tree-ssa-live.c,
	tree-vect-generic.c, tree-vect-transform.c: Fix comment typos.

From-SVN: r119533
2006-12-05 08:27:27 +00:00
Trevor Smigiel 20e9e7597f spu-protos.c (spu_split_address): Add.
* config/spu/spu-protos.c (spu_split_address): Add.
	* config/spu/spu.c (spu_split_address): Add.
	(print_operand): Handle HIGH.
	(spu_legitimate_address):  Don't test for aligned CONST.
	(spu_expand_mov):  Don't split addresses here.
	* config/spu/constraints.md (A): Don't test legitimate_const.
	* config/spu/spu.md: Add split of movsi patterns for PIC mode.
	(ceq_di): Use correct predicates.

From-SVN: r119532
2006-12-05 03:55:38 +00:00
Eric Christopher 304c85e6f0 darwin.h: Update copyright notice.
2006-12-04  Eric Christopher  <echristo@apple.com>

        * config/darwin.h: Update copyright notice.
        * config/i386/darwin.h: Ditto.

From-SVN: r119531
2006-12-05 02:23:18 +00:00
Daniel Berlin e5ebbea51e tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call set_used_smts.
2006-12-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
	set_used_smts.
	* tree-ssa-structalias.c (set_used_smts): Export.
	(find_what_p_points_to): Don't call set_used_smts here.
	* tree-ssa-structalias.h (set_used_smts): Add prototype.

From-SVN: r119528
2006-12-05 00:44:24 +00:00
Jan Hubicka 26979bc292 cp-objcp-common.c (cp_expr_size): Return NULL in the case size is undefined.
* cp-objcp-common.c (cp_expr_size): Return NULL in the case
	size is undefined.

	* builtins.c (fold_builtin_memory_op): Check that expr_size match.
	* explow.c (expr_size, int_expr_size): Assert that size is non_NULL.

From-SVN: r119515
2006-12-04 22:51:42 +00:00
Daniel Berlin c58936b6b7 tree-ssa-alias.c (compute_may_aliases): Compute flow sensitive before flow insensitive.
2006-12-04  Daniel Berlin  <dberlin@dberlin.org>
	
	* tree-ssa-alias.c (compute_may_aliases):
	Compute flow sensitive before flow insensitive.
	(compute_flow_sensitive_aliasing): Don't try to add
	a symbol memory tag to itself.
	
	* alias.h (alias_set_subset_of): New prototype.

	* alias.c (alias_set_subset_of): New function.

	* tree-ssa-structalias.c: Update comments.
	(struct variable_info): Add finished_solution.
	(new_varinfo): Set finished solution to NULL.
	(var_escaped_vars): Remove.
	(escaped_vars_tree): Remove.
	(escaped_vars_id): Remove.
	(nonlocal_vars_id): Remove.
	(constraint_expr_type): Add INCLUDES.
	(graph_size): Removed.
	(dump_constraint): Support INCLUDES.
	(build_constraint_graph): Ditto.
	(collapse_nodes): Add merge_solutions argument.
	Don't merge attributes.
	(process_unification_queue): Just use collapse_nodes.
	(perform_var_substitution): Update call to collapse_nodes.
	(get_constraint_exp_from_ssa_var): Use INCLUDES.
	(process_constraint): Fix non-field sensitive handling
	Handle includes.
	(get_constraint_for): Use INCLUDES.
	(make_constraint_from_anything): Renamed from
	make_constraint_from_escaped.
	(make_constraint_to_escaped): Removed.
	(find_global_initializers): Removed.
	(create_variable_info_for): Do not make constraints to escaped
	vars anymore.
	(dump_solution_for_var): Don't print out the equivalent points-to
	sets, just use the name of the variable it shares it with.
	(intra_create_variable_infos): Use INCLUDES.
	Change nonlocal variable sets to anything sets.
	(init_base_vars): Remove escaped_vars and nonlocal_var
	initialization. 
	(find_escape_constraints): Removed.
	(delete_points_to_sets): Remove dead code.
	(used_smt_calculated): New variable.
	(set_used_smts): New function.
	(merge_smts_into): New function.
	(find_what_p_points_to): Modify to use SMTs.
	(create_nonlocal_var): Remove.
	
	* tree-ssa-operands.c (access_can_touch_variable): Remove
	reference to nonlocal_all. 

	* tree-ssa.c (verify_name_tags): Remove.

From-SVN: r119502
2006-12-04 19:07:05 +00:00
Carlos O'Donell 7f575bf6d4 unwind-arm.c: Adjust __cxa_type_match declaration.
gcc/

2006-12-04  Carlos O'Donell  <carlos@codesourcery.com>

	* config/arm/unwind-arm.c: Adjust __cxa_type_match declaration.
	(__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match.

From-SVN: r119498
2006-12-04 17:25:36 +00:00
Andrew MacLeod 32ace6e2a6 Switch live on entry to a per block basis from per variable.
* tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
	* tree-ssa-live.c (new_tree_live_info, delete_tree_live_info): Update.
	(add_livein_if_notdef): Delete.
	(loe_visit_block): New.  Propogate live on entry info for a block into
	each predecessor.  If it changes, make sure it is visited again.
	(live_worklist): Visit every block and update the live on entry info 
	for preds.  Iterate over any that changed.
	(set_var_live_on_entry): Populate the live on entry blocks with bits
	based on the immediate uses of a var.
	(calculate_live_on_entry): Remove.
	(calculate_live_on_exit): Calculate live on exit based on the newly
	oriented live on entry bits.
	(calculate_live_ranges): Build live on entry and exit vectors.
	(dump_live_info): Use new orientation of live on entry bitmaps.
	(verify_live_on_entry): New.  Split out verification code from old
	calculate_live_on_entry routine.
	* tree-ssa-live.h (struct tree_live_info_d): Add Working stack.
	(live_entry_blocks): Rename to live_on_entry and return bitmap for a
	basic_block instead of for a partition.
	(live_merge_and_clear): Add asserts.
	(make_live_on_entry): Set partition bit in basic block vector.

From-SVN: r119495
2006-12-04 14:26:37 +00:00
Jakub Jelinek 22568cc62c re PR middle-end/29947 (OpenMP parallel for fails for reversed loop range)
PR libgomp/29947
	* omp-low.c (expand_omp_for_static_nochunk,
	expand_omp_for_static_chunk): Do all arithmetics in signed rather than
	unsigned type.

	* loop.c (gomp_loop_init): Make parameters signed.  Set ws->end to
	start if there shouldn't be any loop iterations.
	(gomp_loop_ordered_static_start): Remove start == end test.
	* testsuite/libgomp.c/pr29947-1.c: New test.
	* testsuite/libgomp.c/pr29947-2.c: New test.

From-SVN: r119485
2006-12-04 11:26:00 +01:00
Jakub Jelinek d3c673c74a re PR middle-end/29965 (OpenMP vs always throw in a loop)
PR middle-end/29965
	* omp-low.c (determine_parallel_type): Don't try to optimize combined
	parallels if region->exit or region->inner->exit is NULL.
	(expand_omp_parallel): Handle NULL region->exit even if cfg is already
	built.
	(expand_omp_for_generic): Handle NULL region->cond and region->exit.
	(expand_omp_for): Use expand_omp_for_generic if either region->cond
	or region->exit is NULL.
	(expand_omp_sections): Handle NULL region->cond or region->exit.
	(expand_omp_synch): 

	* gcc.dg/gomp/pr29965-1.c: New test.
	* gcc.dg/gomp/pr29965-2.c: New test.
	* gcc.dg/gomp/pr29965-3.c: New test.
	* gcc.dg/gomp/pr29965-4.c: New test.
	* gcc.dg/gomp/pr29965-5.c: New test.
	* gcc.dg/gomp/pr29965-6.c: New test.
	* g++.dg/gomp/pr29965-1.C: New test.
	* g++.dg/gomp/pr29965-2.C: New test.
	* g++.dg/gomp/pr29965-3.C: New test.
	* g++.dg/gomp/pr29965-4.C: New test.
	* g++.dg/gomp/pr29965-5.C: New test.
	* g++.dg/gomp/pr29965-6.C: New test.
	* g++.dg/gomp/pr29965-7.C: New test.
	* g++.dg/gomp/pr29965-8.C: New test.
	* g++.dg/gomp/pr29965-9.C: New test.
	* g++.dg/gomp/pr29965-10.C: New test.

From-SVN: r119483
2006-12-04 11:20:51 +01:00
Eric Botcazou 94983d3065 sp64-elf.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
* config/sparc/sp64-elf.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
	* config/sparc/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.

From-SVN: r119482
2006-12-04 09:31:48 +00:00
Eric Botcazou 8f6e6bf375 tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and TYPE_MAX_VALUE for scalar types here but...
* tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and
	TYPE_MAX_VALUE for scalar types here but...
	(walk_tree): ...there instead.  Return NULL_TREE if the TYPE_DECL
	is attached an error mark, and the return value of the callback
	if it is not NULL_TREE.

cp/
	* pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
	Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.

testsuite/
	* gnat.dg/pointer_variable_bounds.adb: New test.
	* gnat.dg/pointer_variable_bounds.ads: Likewise.
	* gnat.dg/pointer_variable_bounds_q.ads: Likewise.

From-SVN: r119481
2006-12-04 07:47:32 +00:00
Ben Elliston ceebb5f568 * config/spu/spu.md (_mulv4si3): Remove unused local variables.
From-SVN: r119479
2006-12-04 16:38:21 +11:00
Eric Christopher bd6a088940 re PR target/24598 (Need to support odcctools and its ablity to use --prefix and libtool)
2006-12-03  Eric Christopher  <echristo@apple.com>

        PR target/24598
        * config/t-slibgcc-darwin: Pass -install_name.
        * config/darwin.h (LINK_COMMAND_SPEC): Remove use of
        libtool. Only pass through options that the linker recognizes.
        (LINK_SPEC): Update comment. Translate options.
        (STARTFILE_SPEC): Add dylib1.o for shared libraries.
        * config/darwin9.h (LINK_COMMAND_SPEC): Ditto above.

From-SVN: r119477
2006-12-04 02:10:10 +00:00
Dorit Nuzman 0f6909b963 vect.exp: Enable tests to run on spu.
* g++.dg/vect/vect.exp: Enable tests to run on spu.
        * gcc.dg/vect/vect.exp: Enable tests to run on spu.
        * gcc.dg/vect/no-section-anchors-vect-69.c: Reduce array size.
        * gcc.dg/vect/vect-70.c: Reduce array size.
        * gcc.dg/vect/fast-math-vect-reduc-7.c: Xfail for
        vect_no_compaer_double targets.
        * lib/target-supports.exp: Add spu to vect_no_align, no_vect_int_max,
        vect_float, vect_double, and vect_int.

	* config/spu/spu.md (smaxv4sf3, sminv4sf3): New.

From-SVN: r119469
2006-12-03 20:05:31 +00:00
Uros Bizjak 7372c0a430 re PR target/30041 (FAIL: gcc.target/i386/sse3-movddup.c (internal compiler error))
PR target/30041
        * config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
        operands[1] in insn constraint.  Correct type attribute to sselog1.

From-SVN: r119468
2006-12-03 20:40:06 +01:00
H.J. Lu edccdcb198 re PR target/30040 (-mtune=native is wrong for Core 2 Duo and Core Duo)
2006-12-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/30040
	* config/i386/driver-i386.c: Include "coretypes.h" and "tm.h".
	(bit_SSSE3): New.
	(host_detect_local_cpu): Check -mtune= vs. -march=. Rewrite
	processor detection.

	* config/i386/i386.h (CC1_CPU_SPEC): Add -mtune=native for
	-march=native if there is no -mtune=*.

	* config/i386/x-i386 (driver-i386.o): Also depend on $(TM_H)
	coretypes.h.

From-SVN: r119454
2006-12-02 14:18:25 -08:00
Kaveh R. Ghazi b5147de7c1 configure.in: Update MPFR version in error message.
* configure.in: Update MPFR version in error message.

	* configure: Regenerate.

gcc:
	* doc/install.texi: Update recommended MPFR version.  Remove
	obsolete reference to cumulative patch.

gcc/testsuite:
	* gcc.dg/torture/builtin-sin-mpfr-1.c: Update MPFR comment.

From-SVN: r119447
2006-12-02 16:52:15 +00:00
Lee Millward f1f66b423f re PR c/27953 (ICE with invalid function definitions)
PR c/27953
	* c-decl.c (store_parm_decls_oldstyle): Robustify
        * gcc.dg/pr27953.c: New test.

From-SVN: r119446
2006-12-02 16:34:26 +00:00
Jan Hubicka cc0faf9dc9 i386.c (pentium4_cost, [...]): Update 32bit memcpy/memset decriptors.
* config/i386/i386.c (pentium4_cost, nocona_cost): Update
	32bit memcpy/memset decriptors.
	(decide_alg): With -minline-all-stringops and sizes that are best
	to be copied via libcall still work hard enough to pick non-libcall
	strategy.

Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>

From-SVN: r119445
2006-12-02 13:16:27 +00:00
Kazu Hirata 9c134b65cd * config/i386/i386.c: Fix a comment typo.
From-SVN: r119443
2006-12-02 02:47:07 +00:00
Kazu Hirata 2f8e468bf3 builtins.c, [...]: Fix comment typos.
* builtins.c, cfgloop.h, cgraph.h, config/arm/arm.c,
	config/i386/i386.c, config/i386/i386.h, config/mips/mips.h,
	config/rs6000/cell.md, config/rs6000/rs6000.c, config/sh/sh.c,
	config/sh/sh4-300.md, config/spu/spu-builtins.def,
	config/spu/spu-c.c, config/spu/spu-modes.def,
	config/spu/spu.c, config/spu/spu.md,
	config/spu/spu_internals.h, config/spu/vmx2spu.h,
	fold-const.c, fwprop.c, predict.c, tree-data-ref.h,
	tree-flow.h, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
	tree-ssa-pre.c, tree-vect-analyze.c, tree-vect-transform.c,
	tree-vectorizer.c, tree-vrp.c: Fix comment typos.  Follow
	spelling conventions.

From-SVN: r119442
2006-12-02 02:26:04 +00:00
Kazu Hirata 5681c208fa * doc/extend.texi, doc/invoke.texi, doc/md.texi: Fix typos.
From-SVN: r119441
2006-12-02 02:06:52 +00:00
Trevor Smigiel 01975fc73d spu.c (spu_immediate): Remove trailing comma.
* config/spu/spu.c (spu_immediate): Remove trailing comma.
	(reloc_diagnostic): Call warning when -mwarn-reloc is specified.
	* config/spu/spu.md: (zero_extendhisi2): Expand instead of split for
	better optimization.
	(floatv4siv4sf2): New.
	(fix_truncv4sfv4si2): New.
	(floatunsv4siv4sf2): New.
	(fixuns_truncv4sfv4si2): New.
	(addv16qi3): New.
	(subv16qi3): New.
	(negv16qi2): New.
	(mulv8hi3): New.
	(mulsi3): Remove.
	(mul<mode>3): New.
	(_mulv4si3): New.
	(cmp<mode>): Don't accept constant arguments for DI, TI and SF.
	* config/spu/spu_internals.h: Handle overloaded intrinsics in C++ with
	spu_resolve_overloaded_builtin instead of static inline functions.

From-SVN: r119424
2006-12-01 22:51:06 +00:00
Eric Botcazou f0dbdfbb4d fold-const.c (fold_binary): Use the precision of the type instead of the size of its mode to compute the...
* fold-const.c (fold_binary) <LT_EXPR>: Use the precision of the
	type instead of the size of its mode to compute the highest and
	lowest possible values.  Still check the size of the mode before
	flipping the signedness of the comparison.

From-SVN: r119422
2006-12-01 22:46:45 +00:00
Trevor Smigiel 09aad82b44 predicates.md (spu_mov_operand): Add.
* config/spu/predicates.md (spu_mov_operand): Add.
        * config/spu/spu.c (spu_expand_extv): Remove unused code.
        (print_operand_address, print_operand): Handle addresses containing AND.
        (spu_split_load, spu_split_store): Use updated movti pattern.
        * config/spu/spu.md: (_mov<mode>, _movdi, _movti): Handle loads and
        stores in mov patterns for correct operation of reload.
        (lq, lq_<mode>, stq, stq_<mode>): Remove.

From-SVN: r119421
2006-12-01 22:43:18 +00:00
Volker Reichelt d8e1d61976 re PR c++/30021 (ICE on invalid parameter for main)
PR c++/30021
	* c-common.c (check_main_parameter_types): Check for error_mark_node.

	* g++.dg/other/main1.C: New test.

From-SVN: r119415
2006-12-01 21:28:35 +00:00
Andrew MacLeod 7c6a62dd39 common.opt (ftree-combine-temps): Remove.
* common.opt (ftree-combine-temps): Remove.
	* tree-outof-ssa.c (SSANORM_COMBINE_TEMPS): Remove.
	(coalesce_ssa_name): Don't check for combine-temps.
	(coalesce_vars): Remove.
	(check_replaceable): Use num_imm_uses.
	(remove_ssa_form, insert_backedge_copies, rewrite_out_of_ssa): Don't 
	check for combine-temps.
	(rewrite_out_of_ssa): Never create a ref_count in the var_map.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Change parms
	to register_ssa_partition calls.
	* tree-ssa-live.c (register_ssa_partition): Remove prototype.
	(init_var_map, delete_var_map): remove refernces to ref_count.
	(create_ssa_var_map): Never calculate a ref count.
	(type_var_init): Remove.
	* tree-ssa-live.h (typedef struct _var_map): Remove ref_count.
	(SSA_VAR_MAP_REF_COUNT): Delete.
	(create_ssa_var_map): Change Prototype to have no parameters.
	(version_ref_count): Delete.
	(register_ssa_partition): Remove 'is_use' paramater and don't set the
	ref_count vector.
	(type_var_num, type_var, type_var_first_partition,
	type_var_next_partition, type_var_dump, type_var_delete,
	type_var_remove_partition, type_var_find, type_var_compact,
	type_var_decompact): Remove.

	* gcc.dg/max-1.c: Remove reference to -fno-tree-lrs option.

From-SVN: r119409
2006-12-01 19:53:29 +00:00
Bernd Schmidt 35e3ced91a bfin.md (pushsi_insn, popsi_insn): Set correct addrtype attribute.
* config/bfin/bfin.md (pushsi_insn, popsi_insn): Set correct addrtype
	attribute.

From-SVN: r119408
2006-12-01 17:53:42 +00:00
Richard Guenther e01e02016b re PR c++/29433 (using boost::MPL requires lots of memory)
2006-12-01  Richard Guenther  <rguenther@suse.de>

	PR c++/29433
	* dwarf2out.c (struct pubname_struct): Make name const.
	(add_pubtype): Do not xstrdup identifiers.

From-SVN: r119404
2006-12-01 16:37:38 +00:00
Bernd Schmidt 5308e94309 bfin.c (bfin_valid_add): Fix the logic that ensures multiword accesses are in range.
* config/bfin/bfin.c (bfin_valid_add): Fix the logic that ensures
	multiword accesses are in range.

From-SVN: r119402
2006-12-01 15:49:55 +00:00
H.J. Lu fbb5445b5d [multiple changes]
2006-12-01  Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29921
	* tree-ssa-ccp.c (canonicalize_float_value): New function.
	(set_lattice_value): Use canonicalize_float_value.

2006-12-01  H.J. Lu  <hongjiu.lu@intel.com>
	    Zdenek Dvorak <dvorakz@suse.cz>

	PR tree-optimization/29921
	* gcc.dg/pr29921-2.c: New test.

From-SVN: r119401
2006-12-01 06:49:15 -08:00
Andrew Pinski b66b813d47 spu.c (spu_builtin_range): Move from spu-c.c
2006-11-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * config/spu/spu.c (spu_builtin_range): Move from spu-c.c
        (TARGET_RESOLVE_OVERLOADED_BUILTIN): Delete.
        (spu_cpu_cpp_builtins): Remove.
        (spu_override_options): Don't set warn_main.
        (spu_force_reg): Move from spu-c.c.
        (spu_check_builtin_parm): Likewise.
        (expand_builtin_args): Likewise.
        (spu_expand_builtin_1): Likewise.
        (spu_expand_builtin): Likewise.
        * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Define, set
        warn_main and targetm.resolve_overloaded_builtin.
        * config/spu/spu-c.c (spu_builtin_range): Remove.
        (spu_check_builtin_parm): Remove.
        (expand_builtin_args): Remove.
        (spu_expand_builtin_1): Remove.
        (spu_expand_builtin): Remove.
        (spu_cpu_cpp_builtins): Moved from spu.c
        (spu_force_reg): Remove.

From-SVN: r119397
2006-11-30 18:38:47 -08:00
Joseph Myers 8521c41417 re PR target/24036 ([e500] ICE in subreg_offset_representable_p, at rtlanal.c:3143)
2006-12-01  Joseph Myers  <joseph@codesourcery.com>
            David Edelsohn  <edelsohn@gnu.org>

	PR target/24036
	* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING,
	HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
	* defaults.h (HARD_REGNO_NREGS_HAS_PADDING,
	HARD_REGNO_NREGS_WITH_PADDING): Define.
	* config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
	HARD_REGNO_NREGS_WITH_PADDING): Define.
	* rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
	Use new macros to detect modes with holes; do not look at integer
	units.
	(subreg_offset_representable_p): Check for and disallow cases
	where the modes use different numbers of bits from registers.
	* config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
	constant for soft-float.
	(rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
	containing doubles.
	(rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
	in E500 double case.
	* config/rs6000/rs6000.md (movtf): Allow soft-float.
	(movtf_softfloat): New.

Co-Authored-By: David Edelsohn <edelsohn@gnu.org>

From-SVN: r119395
2006-12-01 02:25:22 +00:00
Richard Sandiford e25615581d simplify-rtx.c (simplify_rtx): Use simplify_subreg rather than simplify_gen_subreg.
gcc/
	* simplify-rtx.c (simplify_rtx): Use simplify_subreg rather than
	simplify_gen_subreg.

From-SVN: r119380
2006-11-30 21:54:20 +00:00
Andrew MacLeod 9fa2efcd3d Implement coalesce list with hash table instead of linked list.
* tree-ssa-live.c (create_coalesce_list): Create a hash table.
	(COALESCE_HASH_FN): New.  Define hash function.
	(partition_pair_map_hash): New.  Hash value for a partition pair.
	(partition_pair_map_eq): New.  Equality for hash pairs.
	(create_coalesce_list): Create hash table.
	(delete_coalesce_list): Free hash table.
	(find_partition_pair): Find/create pairs in hash table.
	(compare_pairs):  Sort pairs in ascending order now.
	(num_coalesce_pairs): New.  Number of pairs in hash table.
	(struct partition_pair_iterator): Iterator struct for pair table.
	(first_partition_pair): Iterator function for first pair.
	(end_partition_pair_p): Iterator function for end of iteration.
	(next_partition_pair): Iterator function for next pair.
	(FOR_EACH_PARTITION_PAIR): Macro for iterating over pairs.
	(sort_coalesce_list): Sort pairs from hash table into an array.
	(pop_best_coalesce): Take pairs from the array.
	(dump_coalesce_list): Update to use hash table or sorted array.
	* tree-ssa-live.h (struct partition_pair_d): Remove next field.
	(struct coalesce_list_d): Add hash table related fields.

From-SVN: r119378
2006-11-30 21:36:32 +00:00
Jan Hubicka f7b410e0fb re PR middle-end/30028 (bcopy is wrongly converted to memcpy)
PR middle-end/30028
	* builtins.c (fold_builtin_memory_op): Fix typo in the check for
	memmove/bcopy->memcpy conversion.

From-SVN: r119375
2006-11-30 19:36:02 +00:00
Carlos O'Donell 11d90e2dd0 tm.texi (MAX_OFILE_ALIGNMENT): Document default.
gcc/

2006-11-30  Carlos O'Donell  <carlos@codesourcery.com>

	* doc/tm.texi (MAX_OFILE_ALIGNMENT): Document default.
	* config/elfos.h [!MAX_OFILE_ALIGNMENT] (MAX_OFILE_ALIGNMENT): 
	Default is the largest alignment supported for 32-bit ELF and 
	representable on a 32-bit host.

From-SVN: r119374
2006-11-30 19:25:08 +00:00
Janis Johnson 2a061db501 dfp-bit.c (DFP_TO_INT): Use wider precision.
gcc/
	* config/dfp-bit.c (DFP_TO_INT): Use wider precision.
testsuite/
	* gcc.dg/dfp/convert-int-max.c: New test.
	* gcc.dg/dfp/convert-int-max-fold.c: New test.

From-SVN: r119368
2006-11-30 17:58:03 +00:00
Jan Hubicka 456cde3030 tree-ssa-operands.h (struct ssa_operands): New.
* tree-ssa-operands.h (struct ssa_operands): New.
	* tree-flow-inline.h (gimple_ssa_operands): New function.
	* tree-flow.h: (struct gimple_df): Add ssa_operands.
	* Makefile.in: Remove gt-tree-ssa-operands.h
	* tree-ssa-operands.c: Do not include gt-tree-ssa-operands.h
	(free_defs, free_uses, free_vuses, free_maydefs, free_mustdefs,
	operand_memory, operand_memory_index, ops_active): Remove statics.
	(ALLOC_OPTYPE): Update.
	(operand_build_sort_virtual): Update.
	(ssa_operands_active): Update.
	(init_ssa_operands): Update.
	(fini_ssa_operands): Update.
	(ssa_operand_alloc): Update.
	(INITIALIZE_USE): Update.
	(finalize_ssa_use_ops): Update.
	(finalize_ssa_v_may_def_ops): Update.
	(finalize_ssa_vuse_ops): Update.
	(finalize_ssa_v_must_def_ops): Update.

From-SVN: r119363
2006-11-30 15:30:01 +00:00
Richard Guenther c6b1b49b1e tree-vectorizer.h (vectorizable_function): Export.
2006-11-30  Richard Guenther  <rguenther@suse.de>

	* tree-vectorizer.h (vectorizable_function): Export.
	* tree-vect-transform.c (vectorizable_function): Likewise.
        * tree-vect-patterns.c (vect_recog_pow_pattern): Set
        type_in to scalar type in recognition of squaring.
	Make sure the target can vectorize sqrt in recognition
	of sqrt, set type_in to vector type in this case.

	* gcc.dg/vect/vect-pow-1.c: Rename ...
	* gcc.dg/vect/fast-math-vect-pow-1.c: ... to this.  Use
	floats instead of doubles, check successful vectorization.

From-SVN: r119362
2006-11-30 14:30:00 +00:00
Uros Bizjak 3c4ace25d7 i386.md (R10_REG): New constant.
* config/i386/i386.md (R10_REG): New constant.
	* config/i386/i386.c (pro_epilogue_adjust_stack): Use R11_REG.
	(ix86_emit_restore_regs_using_mov): Ditto.
	(ix86_expand_call): Ditto.
	(x86_output_mi_thunk): Ditto. Also use R10_REG.

From-SVN: r119360
2006-11-30 11:57:34 +01:00
Steven Bosscher ac3768f69a cselib.c (cselib_init): Use special MEM rtx form for callmem.
* cselib.c (cselib_init): Use special MEM rtx form for callmem.
	* alias.c (canon_true_dependence): Update comment.

From-SVN: r119358
2006-11-30 07:24:03 +00:00
Steven Bosscher e9ec5c6b5e cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline at the end of a diagnostics message.
* cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline
	at the end of a diagnostics message.

	* alloc-pool.c (pool_free): Postpone clearing the pool entry
	until after asserting that it was allocated in the right pool.

	* cfgrtl.c (print_rtl_with_bb): Print predecessor and
	successor edge information as well.  Make output of live regs
	on exit consistent with live regs on entry.

From-SVN: r119357
2006-11-30 07:22:04 +00:00
Uros Bizjak e26feb2c60 re PR target/29852 (x86_64: SSE version missing for fmod{d,s,x}f3)
PR target/29852
	* config/i386/i386.md (*truncxfsf2_mixed, *truncxfdf2_mixed): Enable
	insn patterns for TARGET_80387.
	(*truncxfsf2_i387, *truncxfdf2_i387): Remove.
	(*truncxfsf2_i387_1): Rename to *truncxfsf2_i387.
	(*truncxfdf2_i387_1): Rename to *truncxfdf2_i387.
	(fmod<mode>3, remainder<mode>3): Enable expaders for SSE math.
	Generate truncxf<mode>2 insn patterns for strict SSE math.

From-SVN: r119356
2006-11-30 07:54:47 +01:00
Uros Bizjak 8002331ec5 i386.md (movsf_1): Enable pattern for standard 80387 constants before reload when optimizing for size.
* config/i386/i386.md (movsf_1): Enable pattern for standard
	80387 constants before reload when optimizing for size.
	(*movdf_nointeger, *movdf_integer): Ditto.
	(*movxf_nointeger, *movxf_integer): Disable patterns for standard
	80387 constants before reload when not optimizing for size.

	(*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float
	extension of XFmode input operands.

From-SVN: r119355
2006-11-30 07:47:24 +01:00
Andrew Pinski 8fdb55720f crt0.c (__dso_handle): Define.
2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * config/spu/crt0.c (__dso_handle): Define.

From-SVN: r119354
2006-11-29 19:37:34 -08:00
Kaz Kojima 2954a81343 emit-rtl.c (verify_rtl_sharing): Handle SEQUENCE specially when clearing the used flags.
* emit-rtl.c (verify_rtl_sharing): Handle SEQUENCE specially
	when clearing the used flags.

From-SVN: r119353
2006-11-30 03:13:29 +00:00
Andrew Pinski f21840c3c7 spu.md (extend_compare): Fix whitespace formatting.
2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * config/spu/spu.md (extend_compare): Fix whitespace formatting.

From-SVN: r119350
2006-11-29 17:19:00 -08:00
Andrew Pinski 357f76d7f0 re PR target/29945 (ICE in simplify_subreg with simple code in libgfortran)
2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR target/29945
        * config/spu/spu.md  (extend_compare<mode>): New pattern.
        (extend_compare): Change to expand and use the above pattern.

2006-11-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR target/29945
        * gcc.c-torture/compile/pr29945.c: New testcase.

From-SVN: r119348
2006-11-29 17:05:58 -08:00
Janis Johnson 2d42636d4d * dfp-bit.c (DFP_TO_INT): Fix rounding mode.
From-SVN: r119335
2006-11-29 23:11:01 +00:00
Janis Johnson 240e6b6bd0 decRound.c: Move declarations to new file, update comments.
libdecnumber/
	* decRound.c: Move declarations to new file, update comments.
	* decRound.h: New file.
gcc/
	* mklibgcc.in: Fix dependencies for dfp-bit.c.
	* config/dfp-bit.h (CONTEXT_ROUND): Delete.
	(DFP_INIT_ROUNDMODE): Define.
	* config/dfp-bit.c: Replace CONTEXT_ROUND with DFP_INIT_ROUNDMODE.

From-SVN: r119329
2006-11-29 18:34:56 +00:00
Tehila Meyzels 07c0282832 haifa-sched.c: Remove define LINE_NOTE(INSN).
2006-11-29  Tehila Meyzels  <tehila@il.ibm.com>

      * haifa-sched.c: Remove define LINE_NOTE(INSN).
      Remove line_note_head.
      Update documentation.
      (associate_line_notes_with_blocks): Kill.
      (extend_bb): Remove basic block argument, put void instead.
      Remove line number handling for each bb.
      (save_line_notes): Kill.
      (restore_line_notes): Kill.
      (sched_init): Remove line_note_head initialization.
      Change extend_bb call.
      (sched_finish): Remove free of line_note_head.
      (add_block): Change extend_bb call.
      * sched-ebb.c (schedule_ebb): Remove save_line_notes,
      rm_line_notes and restore_line_notes calls.
      (schedule_ebbs): Remove rm_redundant_line_notes.
      * sched-int.h (struct haifa_insn_data): Remove line_note.
      (save_line_notes): Remove declaration.
      (restore_line_notes): Remove declaration.
      * modulo-sched.c (loop_canon_p): Update debug info printing
      by using insn locators instead of line note.
      (sms_schedule): Update debug info printing, by using insn
      locators instead of line note.
      * sched-rgn.c (debug_dependencies): Remove handling of case
      n>0 (line number), since it's a dead code.
      (schedule_region): Remove save_line_notes and
      restore_line_notes calls.

From-SVN: r119328
2006-11-29 18:24:14 +00:00
Joseph Myers 14502dad06 predicates.md (gpc_reg_operand): Check invalid_e500_subreg.
* config/rs6000/predicates.md (gpc_reg_operand): Check
	invalid_e500_subreg.
	* config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
	SImode subregs of SPE vectors.
	* config/rs6000/rs6000.md (insv): Fail for invalid E500 subregs.
	* jump.c (true_regnum): Require subregs to satisfy
	subreg_offset_representable_p.

From-SVN: r119324
2006-11-29 17:33:59 +00:00
Daniel Berlin d315c4a9f8 Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h, since it no longer exists.
2006-11-29  Daniel Berlin  <dberlin@dberlin.org>
	    Steven Bosscher <stevenb.gcc@gmail.com>

	* Makefile.in (tree-ssanames.o): Remove gt-tree-ssanames.h,
	since it no longer exists.


Co-Authored-By: Steven Bosscher <stevenb.gcc@gmail.com>

From-SVN: r119323
2006-11-29 17:17:56 +00:00
Duncan Sands 32c8bce718 re PR tree-optimization/23744 (VRP does not merge discontinuous ranges of PHIs)
PR tree-optimization/23744
	* tree-vrp.c (vrp_meet): do not require ranges to intersect.
	* testsuite/gcc.dg/tree-ssa/pr23744.c: new test.
	* testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.

From-SVN: r119320
2006-11-29 16:00:07 +00:00
Jie Zhang 8b65a354f0 * doc/tm.texi (NO_PROFILE_COUNTERS): Document more accurately.
From-SVN: r119315
2006-11-29 14:52:31 +00:00
J"orn Rennecke dc557046cf sh.opt (minline-ic_invalidate): New option.
* sh.opt (minline-ic_invalidate): New option.
	(musermode): Adjust comment.
	* sh.c (sh_initialize_trampoline): Emit library call unless
	is set; if it is set, don't emit library call if we can use icbi
	instead.
	* sh.md (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
	icbi for TARGET_SH4_300.
	* t-sh (LIB1ASMFUNCS_CACHE): Set.
	* doc/invoke.texi: Document -minline-ic_invalidate; Update
	-musermode documentation.

From-SVN: r119314
2006-11-29 14:35:38 +00:00
Jim Tison 6db2889286 gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION, [...]): Define.
2006-11-29  Jim Tison  <jtison@us.ibm.com>

	* gthr-tpf.h (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
	__gthread_recursive_mutex_init): Define.

From-SVN: r119311
2006-11-29 13:00:12 +00:00
Joseph Myers 0cfbc62b0b rs6000.c (rs6000_gimplify_va_arg): If STRICT_ALIGNMENT and the type is more aligned than the saved registers...
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
	STRICT_ALIGNMENT and the type is more aligned than the saved
	registers, copy via a temporary.

From-SVN: r119307
2006-11-29 12:49:06 +00:00
Andrew Pinski e969dbde29 re PR tree-optimization/29984 (SPE GCC segfaults with MAX_EXPR <a, a>)
2006-11-28  Andrew Pinski  <pinskia@gmail.com>

        PR tree-opt/29984
        * gcc.dg/tree-ssa/reassoc-12.c: New test.

2006-11-28  Andrew Pinski  <pinskia@gmail.com>

        PR tree-opt/29984
        * tree-ssa-reassoc.c (eliminate_duplicate_pair): Handle MAX_EXPR
        and MIN_EXRP.

From-SVN: r119303
2006-11-28 23:23:11 -08:00
Bob Wilson f8383f28e2 * config/xtensa/lib1funcs.asm (__umulsidi3): Restore a12-a15 on exit.
From-SVN: r119296
2006-11-28 21:22:14 +00:00
Jan Hubicka 5cd4ec7f24 Privatize SSA variables into gimple_df.
* tree-flow-inline.h
	(gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
	gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
	gimple_nonlocal_all): New accessors.
	(first_referenced_var): Update.
	(mark_stmt_modified): Update.
	(is_call_clobbered): Update.
	(mark_call_clobbered): Update.
	(clear_call_clobbered): Update.
	(mark_non_addressable): Update.
	* tree-vrp.c (get_value_range): Update.
	* tree-into-ssa.c (in_ssa_p): Kill.
	(get_default_def_for): Update.
	(rewrite_into_ssa): Update.
	* tree-complex.c (init_parameter_lattice_values): Update.
	(update_complex_assignment): Update.
	(update_parameter_components): Update.
	(expand_complex_libcall): Update.
	(expand_complex_operations_1): Update.
	* tree-tailcall.c (arg_needs_copy_p): Update.
	(add_virtual_phis): Update.
	(tree_optimize_tail_calls_1): Update.
	* tree-ssa-dse.c (memory_ssa_name_same): Update.
	* tree-ssa-copyrename.c
	(copy_rename_partition_coalesce): Update.
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
	* tree-ssa-propagate.c (set_rhs): Update.
	* tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
	addressable_vars, global_var):Kill.
	(set_initial_properties): Update.
	(init_alias_info): Update.
	(finalize_ref_all_pointers): Update.
	(setup_pointers_and_addressables): Update.
	(maybe_create_global_var): Update.
	(create_global_var): Update.
	(dump_points_to_info): Update.
	* function.h (struct gimple_df): Forward declare.
	(struct function): Add GIMPLE_DF field.
	* gimplify.c (force_gimple_operand): Update.
	* tree-dfa.c (referenced_vars, default_defs): KIll.
	(make_rename_temp): Update.
	(dump_variable): Update.
	(referenced_var_lookup): Update.
	(referenced_var_check_and_insert): Update.
	(default_def): Rename to ...
	(gimple_default_def): ... this one; accept cfun argument.
	(set_default_def): Update.
	* tree-cfgcleanup.c (modified_noreturn_calls): Kill.
	(cleanup_control_flow): Update.
	* tree-ssa-pre.c (compute_avail): Update
	* tree-ssa-live.c (calculate_live_on_entry): Update.
	* tree-ssa.c (verify_use): Update.
	(verify_call_clobbering): Update.
	(verify_call_clobbering): Update.
	(init_tree_ssa): Update.
	(delete_tree_ssa): Update.
	* tree-outof-ssa.c (coalesce_ssa_name): Update.
	(rewrite_out_of_ssa): Update.
	* tree-flow.h (gimple_df): New structure collecting dataflow variables.
	(FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
	private accessors.
	(in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
	ssa_names, global_var, nonlocal_all, call_clobbered_vars,
	addressable_vars, aliases_computed_p): Kill.
	(default_def): Rename to...
	(gimple_default_def): ... this one.
	(defaule_def_fn): Kill.
	(num_referenced_vars, ssa_names, num_ssa_names): Update.
	* tree-ssa-structalias.c (nonlocal_all): Kill.
	(get_constraint_exp_from_ssa_var): Update.
	(create_nonlocal_var): Update.
	(get_constraint_for): Update.
	(update_alias_info): Update.
	(find_global_initializers): Update.
	(intra_create_variable_infos): Update.
	(intra_create_variable_infos):
	(find_what_p_points_to): Update.
	(init_alias_heapvars): Update.
	* tree-cfg.c (remove_bb): Update.
	(gimplify_val): Update.
	* tree-ssa-reassoc.c (get_rank): Update.
	(init_reassoc): Update.
	* tree-ssanames.c: Do not include gt-tree-ssanames.h
	(ssa_names, free_ssanames): Kill.
	(init_ssanames): Update.
	(make_ssa_name): Update.
	(release_ssa_name): Update.
	(release_defs): Update.
	(replace_ssa_name_symbol): Update.
	* tree-ssa-operands.c (access_can_touch_variable): Update.
	(add_virtual_operand): Update.
	(add_call_clobber_ops): Update.
	(add_call_read_ops): Update.
	(get_call_expr_operands): Update.
	(get_asm_expr_operands): Update.

From-SVN: r119294
2006-11-28 14:42:37 +00:00
Jan Hubicka a1da787df3 builtins.c: Include tree-flow.h.
* builtins.c: Include tree-flow.h.
	(fold_builtin_memory_op): Be more aggressive on converting memcpy to
	assignment; convert memmove to memcpy for sizes greater than 1 where
	alignment of operands prohibit the partial overlap.

From-SVN: r119292
2006-11-28 14:20:04 +00:00
Jan Hubicka ff28a94d32 invoke.texi (large-stack-frame, [...]): New params.
* invoke.texi (large-stack-frame, large-stack-frame-growth): New params.
	* cgraph.c (dump_cgraph_node): Dump stack usage.
	* cgraph.h (cgraph_local_info): Add estimated_self_stack_size.
	(cgraph_global_info): Add estimated_stack_size and stack_frame_offset.
	* cgraphunit.c (cgraph_analyze_function): Analyze stack sizes.
	* ipa-inline.c (cgraph_clone_inlined_nodes): Propagate stack usage.
	(cgraph_check_inline_limits): Limit stack growth.
	* cfgexpand.c: Include tree-inline.h.
	(account_stack_vars): New function.
	(expand_one_var): New param to just account the stack; return estimated
	size.
	(expand_used_vars_for_block): Update call of expand_one_var.
	(account_used_vars_for_block): New function.
	(estimated_stack_frame_size): Likewise.
	(init_vars_expansion, fini_vars_expansion): Break out from..
	(expand_used_vars): ... here.
	* tree-inline.h (estimated_stack_frame_size): Declare.
	* params.def (PARAM_LARGE_STACK_FRAME, PARAM_STACK_FRAME_GROWTH): New.

From-SVN: r119281
2006-11-28 10:53:16 +00:00
Richard Guenther 00df958942 ggc-page.c (ggc_print_statistics): Use %ul and a cast to unsigned long for printing OBJECT_SIZE.
2006-11-28  Richard Guenther  <rguenther@suse.de>

	* ggc-page.c (ggc_print_statistics): Use %ul and a cast to
	unsigned long for printing OBJECT_SIZE.

From-SVN: r119280
2006-11-28 10:03:49 +00:00
Steven Bosscher 4a25ff8383 alias.c (init_alias_analysis): Remove simplification loop after propagating pointers.
* alias.c (init_alias_analysis): Remove simplification loop
        after propagating pointers.

From-SVN: r119262
2006-11-27 23:15:38 +00:00
Uros Bizjak 71615adf0c i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2 and m_GENERIC64.
* config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
        and m_GENERIC64.

From-SVN: r119260
2006-11-27 20:50:40 +01:00
Bob Wilson 327e3a0331 * config/xtensa/xtensa.h (XCHAL_HAVE_MUL32_HIGH): Provide default.
From-SVN: r119259
2006-11-27 18:48:57 +00:00
Roger Sayle 91c41804cb c-common.c (constant_fits_type_p): Delete.
2006-11-27  Roger Sayle  <roger@eyesopen.com>
	    Manuel Lopez-Ibanez <manu@gcc.gnu.org>
	    
	* c-common.c (constant_fits_type_p): Delete.
	(unsigned_conversion_warning): Delete.
	(conversion_warning): Integrate Wconversion warning from
	unsigned_conversion_warning.
	(convert_and_check): Integrate Woverflow warning from
	unsigned_conversion_warning.  Reorganize and simplify to avoid
	dependence upon the middle-end setting TREE_OVERFLOW on integral
	conversions, by using int_fits_type_p directly.

Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>

From-SVN: r119258
2006-11-27 18:47:41 +00:00
Tobias Burnus dbdbfff135 invoke.texi: Fixed typo.
2006-11-27  Tobias Burnus  <burnus@net-b.de>

       * doc/invoke.texi: Fixed typo.

From-SVN: r119257
2006-11-27 17:43:12 +01:00
Michael Matz e064939e4a re PR target/29319 (ICE unrecognizable insn: offset too large for larl (breaks glibc))
2006-11-27  Michael Matz  <matz@suse.de>
            Andreas Krebbel  <krebbel1@de.ibm.com>

	PR target/29319
	* config/s390/predicates.md (larl_operand): Check addend of larl
	operand to be in range of -/+2GB.
	* config/s390/s390.c (legitimize_pic_address): Likewise.  
	Changed type of variable even to HOST_WIDE_INT.

2006-11-27  Michael Matz  <matz@suse.de>
            Andreas Krebbel  <krebbel1@de.ibm.com>

	PR target/29319
	* gcc.dg/20061127-1.c: New testcase.


Co-Authored-By: Andreas Krebbel <krebbel1@de.ibm.com>

From-SVN: r119256
2006-11-27 16:34:19 +00:00
Jan Hubicka 8c99651385 expr.c (emit_block_move_via_libcall): Export.
* 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
2006-11-27 16:00:26 +00:00
Jan Hubicka 071a42f958 cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
* cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
	* rtl.texi (NOTE_INSN_FUNCTION_END): Remove.
	* final.c (final_scan_insn): Don't scan NOTE_INSN_FUNCTION_END.
	* insn-notes.def (FUNCTION_END): Remove.
	* jump.c (delete_related_insns): Don't worry about FUNCTION_END.
	(redicect_jump_2): Don't accept -1 parameter to remove FUNCTION_END
	note.
	* ifcvt.c (dead_or_predictable): Update call of redirect_jump_2.
	* function.c (expand_function_end): Don't emit NOTE_INSN_FUNCTION_END
	* cfglayout.c (duplicate_insn_chain): Don't worry about
	NOTE_FUNCTION_END.

From-SVN: r119250
2006-11-27 15:07:10 +00:00
Richard Guenther 2505a3f233 target.h (struct gcc_target): Add builtin_vectorized_function target hook.
2006-11-27  Richard Guenther  <rguenther@suse.de>
	Zdenek Dvorak <dvorakz@suse.cz>

	* target.h (struct gcc_target): Add builtin_vectorized_function
	target hook.
	* target-def.h (TARGET_VECTORIZE): Likewise.
	* doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION):
	Document new target hook.
	* targhooks.h (default_builtin_vectorized_function): Declare.
	* targhooks.c (default_builtin_vectorized_function): Define.
	* tree-vectorizer.h (stmt_vec_info_type): Add call_vec_info_type.
	(vectorizable_call): Declare.
	* tree-vect-analyze.c (vect_analyze_operations): Call
	vectorizable_call.
	* tree-vect-transform.c (vectorizable_function): New static function.
	(build_vectorized_function_call): Likewise.
	(vectorizable_call): New function.
	(vect_transform_stmt): Handle vectorizable calls.

Co-Authored-By: Zdenek Dvorak <dvorakz@suse.cz>

From-SVN: r119249
2006-11-27 12:41:51 +00:00
Richard Guenther 9fca6f972d re PR fortran/25620 (Missed optimization with power)
2006-11-27  Richard Guenther  <rguenther@suse.de>

	PR middle-end/25620
	* builtins.c (expand_builtin_pow): Optimize non integer valued
	constant exponents using sqrt or cbrt if possible.  Always fall back
	to expanding via optabs.

	* gcc.target/i386/pow-1.c: New testcase.
	* gcc.dg/builtins-58.c: Likewise.

From-SVN: r119248
2006-11-27 11:38:42 +00:00
Ira Rosen 4090db01e8 re PR tree-optimization/22372 (Vectorizer produces mis-match types)
PR tree-optimization/22372
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
	the type of the base address.
	(vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
	it in the data-ref pointer creation.
	(vect_init_vector): Add an argument, type of the init vector. Use it in
	the stmt creation.
	(vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
	(get_initial_def_for_reduction): Likewise.
	(vect_create_epilog_for_reduction): Change type of MODIFY_EXPR to
	void_type_node.
	(vectorizable_assignment, vect_permute_store_chain): Likewise.
	(vectorizable_store): Fix call to vect_create_data_ref_ptr. Use the
	correct type in stmt creation.
	(vect_setup_realignment): Use the correct type in stmt creation.
	(vect_permute_load_chain): Change type of MODIFY_EXPR to
	void_type_node.
	(vectorizable_load): Fix calls to vect_create_data_ref_ptr. Change type
	of MODIFY_EXPR to void_type_node.
	(vectorizable_condition): Change type of MODIFY_EXPR to
	void_type_node.
	(vect_update_ivs_after_vectorizer): Use the correct type in stmt
	creation.

From-SVN: r119247
2006-11-27 08:10:23 +00:00
Uros Bizjak ce7d4645bb revert: i386.c (ix86_rtx_costs): For standard 80387 constants...
Revert:
        2006-05-08  Uros Bizjak  <uros@kss-loka.si>
        * config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
        standard 80387 constants, raise the cost to prevent
        compress_float_constant() to generate load from memory.

        * config/i386/i386.md: Add new splitter pattern to split
        float_extended load of constant from constant pool into
        pure constant load.

From-SVN: r119246
2006-11-27 09:03:45 +01:00
Kaveh Ghazi f019376cf5 Checkin ChangeLogs from previous checkin.
* configure.in (--with-mpfr-dir, --with-gmp-dir): Remove flags.
        (--with-mpfr-include, --with-mpfr-lib, --with-gmp-include,
        --with-gmp-lib): New flags.

        * configure: Regenerate.

gcc:
        * doc/install.texi: Move GMP/MPFR configure options from Fortran
        section to general section.  Remove documentation for
        --with-mpfr-dir and --with-gmp-dir, add documentation for
        --with-mpfr-include, --with-mpfr-lib, --with-gmp-include and
        --with-gmp-lib.

From-SVN: r119240
2006-11-27 00:23:24 +00:00
Eric Botcazou ba4ac68280 Fix oversight.
From-SVN: r119228
2006-11-26 18:27:19 +00:00
Kaveh R. Ghazi a8e3bad42b builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.
* builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.

testsuite:
	* gcc.dg/torture/builtin-minmax-1.c: Test NaN in fmin/fmax.
	Don't ever inline the testcase.

From-SVN: r119224
2006-11-26 14:35:54 +00:00
Razya Ladelsky 9dedcfe16a ipa-6.c: New.
2006-11-26  Razya Ladklesky  <razya@il.ibm.com>

        * testsuite/gcc.dg/ipa/ipa-6.c: New.

From-SVN: r119222
2006-11-26 10:29:28 +00:00
Razya Ladelsky 95c8e17296 re PR tree-optimization/29122 (ICE with -ipa-cp and -m64 (tail calls))
2006-11-26  Razya Ladklesky  <razya@il.ibm.com>

        PR tree-optimization/29122
        * tree-inline.c (tree_function_versioning): Update DECL_ASSEMBLER_NAME
        for the new version.  Assign NULL to DECL_RTL of the new version.

From-SVN: r119220
2006-11-26 10:00:18 +00:00
Uros Bizjak 56d8eb6260 reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.
* reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.

From-SVN: r119210
2006-11-25 22:40:53 +01:00
Steven Bosscher 0129d079d0 cse.c (cse_altered): Remove.
* cse.c (cse_altered): Remove.
	(record_jump_equiv): Make true/false argument a bool instead
	of an int.
	(cse_insn): Don't set cse_altered.  Use delete_insn_and_edges
	where appropriate.  Emit a new jump before the existing one
	instead of after so that delete_insn_and_edges removes the
	dead edges properly.  Check any_condjump_p before calling
	record_jump_equiv.
	(cse_basic_block): Check any_condjump_p before calling
	record_jump_equiv.
	(cse_main): Don't set/check cse_altered.  Remove USE_C_ALLOCA.

From-SVN: r119209
2006-11-25 21:23:27 +00:00
Brooks Moses bbe7da4a15 c.opt: Remove -ffixed-form, -ffixed-line-length-none, and -ffixed-line-length-* options.
* c.opt: Remove -ffixed-form, -ffixed-line-length-none, and
-ffixed-line-length-* options.

From-SVN: r119206
2006-11-25 11:15:29 -08:00
Uros Bizjak 786f159e27 config/i386/i386.md (fpremxf4): Rename to fpremxf4_i387.
(fprem1xf4): Rename to fprem1xf4_i387.

        (fmodsf3, fmoddf3): Macroize patterns using X87MODEF12 mode macro.
        Rename patterns to fmod<mode>3.  Use general_operand operand
        constraint for operands 1 and 2.  Use SSE_FLOAT_MODE_P to disable
        patterns for SSE math.
        (remaindersf3, remainderdf3): Ditto.

From-SVN: r119199
2006-11-25 16:05:53 +01:00
Joseph Myers 6ba1bd3699 function.c (instantiate_virtual_regs_in_insn): Call force_reg inside start_sequence / end_sequence pair.
* function.c (instantiate_virtual_regs_in_insn): Call force_reg
	inside start_sequence / end_sequence pair.

From-SVN: r119192
2006-11-25 13:21:43 +00:00
Steven Bosscher 05549c9604 jump.c (mark_all_labels): Work in cfglayout mode.
* jump.c (mark_all_labels): Work in cfglayout mode.
	* cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
	when in cfglayout mode, because there are no dead jumptables
	visible.
	* cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
	in cfglayout mode.
	(commit_edge_insertions): Do not allow insertion of instructions
	with control flow insns when in cfglayout mode.

From-SVN: r119191
2006-11-25 10:53:06 +00:00
Zdenek Dvorak d73be2683d tree-vrp.c (execute_vrp): Do not pass loops structure through arguments.
* tree-vrp.c (execute_vrp): Do not pass loops structure through
	arguments.
	* loop-unswitch.c (unswitch_loops, unswitch_single_loop,
	unswitch_loop): Ditto.
	* tree-loop-linear.c (linear_transform_loops): Ditto.
	* tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
	tree_ssa_lim): Ditto.
	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
	free_numbers_of_iterations_estimates): Ditto.
	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
	tree_unswitch_single_loop, tree_unswitch_loop): Ditto.
	* cfgloopmanip.c (fix_bb_placement, fix_bb_placements,
	remove_path, add_loop, loopify, unloop, fix_loop_placements,
	place_new_loop, duplicate_loop, duplicate_subloops,
	update_single_exit_for_duplicated_loops, copy_loops_to,
	duplicate_loop_to_header_edge, create_preheaders,
	force_single_succ_latches, loop_version, fix_loop_structure):
	Ditto.
	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge,
	tree_unroll_loop): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* tree-scalar-evolution.c (select_loops_exit_conditions,
	scev_initialize, scev_analysis): Ditto.
	* tree-scalar-evolution.h (scev_initialize): Ditto.
	* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge): Ditto.
	* cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
	* modulo-sched.c (sms_schedule): Ditto.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
	* loop-init.c (loop_optimizer_init, rtl_move_loop_invariants,
	rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): Ditto.
	* ifcvt.c (if_convert): Ditto.
	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely,
	canonicalize_loop_induction_variables,
	canonicalize_induction_variables,
	tree_unroll_loops_completely, remove_empty_loops): Ditto.
	* tree-ssa-loop.c (tree_ssa_loop_init, tree_ssa_loop_im,
	tree_ssa_loop_unswitch, tree_vectorize, tree_linear_transform,
	tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
	tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts,
	tree_ssa_loop_done): Ditto.
	* predict.c (predict_loops, tree_estimate_probability, estimate_loops,
	estimate_bb_frequencies): Ditto.
	* tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
	slpeel_tree_peel_loop_to_edge, vectorize_loops): Ditto.
	* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
	decide_unrolling_and_peeling, peel_loop_completely,
	unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
	peel_loop_simple, unroll_loop_stupid): Ditto.
	* loop-doloop.c (doloop_optimize_loops): Ditto.
	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Ditto.
	* loop-invariant.c (move_loop_invariants): Ditto.
	* tree-ssa-dce.c (tree_ssa_dce_loop): Ditto.
	* tree-ssa-loop-prefetch.c (loop_prefetch_arrays,
	tree_ssa_prefetch_arrays): Ditto.
	* lambda-code.c (gcc_loopnest_to_lambda_loopnest, perfect_nestify):
	Ditto.
	* tree-vect-transform.c (vect_do_peeling_for_loop_bound,
	vect_do_peeling_for_alignment, vect_transform_loop): Ditto.
	* cfgloop.c (flow_loops_cfg_dump, flow_loops_dump,
	mark_single_exit_loops, cancel_loop, cancel_loop_tree,
	verify_loop_structure): Ditto.
	* tree-flow.h (vectorize_loops, tree_ssa_lim, tree_ssa_unswitch_loops,
	canonicalize_induction_variables, tree_unroll_loops_completely,
	tree_ssa_prefetch_arrays, remove_empty_loops, tree_ssa_iv_optimize,
	estimate_numbers_of_iterations, free_numbers_of_iterations_estimates,
	tree_duplicate_loop_to_header_edge, tree_ssa_loop_version,
	tree_unroll_loop, linear_transform_loops): Declaration changed.
	* basic-block.h: Remove declaration of struct loops.
	* cfghooks.h (struct cfg_hooks): Change type of
	cfg_hook_duplicate_loop_to_header_edge.
	(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
	* tree-vectorizer.h (slpeel_tree_peel_loop_to_edge,
	vect_transform_loop): Declaration changed.
	* lambda.h (gcc_loopnest_to_lambda_loopnest): Declaration changed.
	* cfgloop.h (flow_loops_dump, fix_loop_structure,
	mark_irreducible_loops, mark_single_exit_loops, mark_loop_exit_edges,
	cancel_loop_tree, create_preheaders, force_single_succ_latches,
	verify_loop_structure, duplicate_loop, duplicate_loop_to_header_edge,
	loopify, loop_version, remove_path, unswitch_loops,
	unroll_and_peel_loops, doloop_optimize_loops, move_loop_invariants):
	Declaration changed.

From-SVN: r119189
2006-11-25 10:34:13 +00:00
Uros Bizjak 013021041a config/i386/i386.md (UNSPEC_TRUNC_NOOP): New unspec definition.
(X87MODEF): New mode macro.
        (ssemodefsuffix): New mode attribute.
        (truncxf<mode>2_i387_noop_unspec): New insn pattern.
        (sqrt_extend<mode>xf2_i387): New insn pattern.
        (sqrt<mode>2): For non-SSE sqrt, emit sqrt_extend<mode>xf2_i387
        insn and truncate result back to original mode using
        UNSPEC_TRUNC_NOOP truncation.
        (*sqrt<mode>2_sse): Implement using SSEMODEF mode macro and
        ssemodefsuffix mode attribute.
        (*sqrtsf2_mixed, *sqrtsf2_i387, *sqrtdf2_mixed, *sqrtdf2_i387)
        (*sqrtextendsfdf2_i387, *sqrtextendsfxf2_i387)
        (*sqrtextenddfxf2_i387): Remove insn patterns.

        (fmodsf3, fmoddf3, remaindersf3, remainderdf3): Use noop
        truncation patterns.

        reg-stack.c (get_true_reg): Handle UNSPEC_TRUNC_NOOP.

From-SVN: r119188
2006-11-25 10:17:57 +01:00
Jakub Jelinek 5c386a95ee re PR c/29955 (ICE with -fopenmp -fexceptions)
PR c/29955
	* c-tree.h (c_maybe_initialize_eh): New prototype.
	* c-decl.c (finish_decl): Move EH initialization...
	(c_maybe_initialize_eh): ... here.  New function.
	* c-parser.c (c_parser_omp_construct): Call c_maybe_initialize_eh
	if not #pragma omp atomic.

	* gcc.dg/gomp/pr29955.c: New test.

From-SVN: r119168
2006-11-24 22:28:38 +01:00
Jakub Jelinek 238564598b re PR c/29736 (ICE on duplicate vector attribute)
PR c/29736
	* c-common.c (handle_vector_size_attribute): Disallow VECTOR_TYPE
	or UNION_TYPE inner types.

	* gcc.dg/pr29736.c: New test.

From-SVN: r119165
2006-11-24 22:23:23 +01:00
Andrew Pinski 13335ae664 re PR tree-optimization/29964 (function with volatile operators still found to be pure)
2006-11-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/29964
        * ipa-pure-const.c (check_tree): If the original tree
        is volatile return early and say the function is not pure
        nor const.  Remove the volatile check for writes.
        (analyze_function): Print out the result of the local
        analysis pass.

2006-11-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/29964
        * gcc.dg/pure-1.c: New test.

From-SVN: r119162
2006-11-24 10:32:14 -08:00
Joseph Myers db2675d3c0 eabispe.h (TARGET_DEFAULT): Include MASK_STRICT_ALIGN.
* config/rs6000/eabispe.h (TARGET_DEFAULT): Include
	MASK_STRICT_ALIGN.
	* config/rs6000/linuxspe.h (TARGET_DEFAULT): Likewise.
	* config/rs6000/rs6000.c (rs6000_override_options): Use
	MASK_STRICT_ALIGN for 8540 and 8548.  Add MASK_STRICT_ALIGN to
	POWERPC_MASKS.

From-SVN: r119156
2006-11-24 16:25:25 +00:00
Andreas Krebbel 8bb501bb10 s390.c (s390_emit_compare_and_swap): New function.
2006-11-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390.c (s390_emit_compare_and_swap): New function.
	(s390_expand_cs_hqi, s390_expand_atomic): Call 
	s390_emit_compare_and_swap.

2006-11-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* gcc.dg/20061124-1.c: New testcase.

From-SVN: r119151
2006-11-24 13:30:59 +00:00
John David Anglin af1e323e93 pa.c (return_addr_rtx): Change 0xe0400002 to -532676606.
* pa.c (return_addr_rtx): Change 0xe0400002 to -532676606.

From-SVN: r119145
2006-11-24 04:30:57 +00:00
Manuel López-Ibáñez 422c3a54ea re PR c/2707 (gcc does not warn on truncate)
2006-11-24  Manuel Lopez-Ibanez <manu@gcc.gnu.org>

	PR c/2707
	PR c++/26167
	* c-common.c (conversion_warning): New.
	(convert_and_check): Call conversion_warning unless there is an
	overflow warning.
	* doc/invoke.texi (-Wconversion): Update description.

testsuite/

	* gcc.dg/Wconversion-integer.c: New. Supersedes	
	Wconversion-negative-constants.c 
	* gcc.dg/Wconversion-real.c: New.
	* gcc.dg/Wconversion-real-integer.c: New.
	* gcc.dg/Wconversion-negative-constants.c: Deleted.
	* g++.dg/warn/Wconversion1.C: Modified.

From-SVN: r119143
2006-11-24 01:50:33 +00:00
Daniel Berlin 2941f691d9 tree-ssa-alias.c (tree_pointer_compare): New function.
2006-11-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (tree_pointer_compare): New function.
	(compact_name_tags): New function.
	(group_aliases): Call compact_name_tags.

From-SVN: r119142
2006-11-24 01:26:26 +00:00
Manuel López-Ibáñez 313f234ba1 real.h (real_isinteger): Declare.
2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* real.h (real_isinteger): Declare.
	* real.c (real_isinteger): Define.
	* builtins.c (integer_valued_real_p): Use it.

From-SVN: r119130
2006-11-23 18:49:22 +00:00
Manuel López-Ibáñez 05170031ab re PR c/9072 (-Wconversion should be split into two distinct flags)
2006-11-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/9072 
	* c.opt (Wtraditional-conversion): New.
	(Wconversion): Update description.
	* c-typeck.c (convert_arguments): Warnings for prototypes causing
	type conversions different from what would happen in the absence
	of prototype are now handled by Wtraditional-conversion.
	* doc/invoke.texi (Wtraditional-conversion): New.
	(Wconversion): Update description.
	* doc/trouble.texi (Wconversion): Replace Wconversion by
	Wtraditional-conversion.

testsuite/

	PR c/9072 
	* gcc.dg/builtin-protos-1.c: Replace Wconversion by
	Wtraditional-conversion.
	* gcc.dg/overflow-warn-2.c: Likewise.
	* gcc.dg/Wconversion.c: Likewise. Renamed as
	Wtraditional-conversion.c .
	* gcc.dg/Wconversion-2.c: Likewise. Renamed as
	Wtraditional-conversion-2.c .
	* gcc.dg/dfp/Wconversion-2.c: Likewise. Renamed as
	Wtraditional-conversion-2.c 
	* gcc.dg/Wconversion-negative-constants.c: New.

From-SVN: r119129
2006-11-23 18:39:32 +00:00
Andrew Pinski 61968738d5 predict.c (tree_estimate_probability): Check to make sure current_loops is non null before calling flow_loops_dump.
2006-11-23  Andrew Pinski  <pinskia@gmail.com>

        * predict.c (tree_estimate_probability): Check to make
        sure current_loops is non null before calling flow_loops_dump.
2006-11-23  Andrew Pinski  <pinskia@gmail.com>

        * gcc.dg/tree-ssa/dump-1.c: New test.

From-SVN: r119128
2006-11-23 09:59:53 -08:00
Bernd Schmidt b33614eef2 var-tracking.c (emit_note_insn_var_location): Revert previous patch.
* var-tracking.c (emit_note_insn_var_location): Revert previous patch.

From-SVN: r119127
2006-11-23 17:50:52 +00:00
David Ung 6f42806295 mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu combination.
gcc:
	* config/mips/mips.h (ISA_HAS_FP4): Add MIPS32R2 + 64bit fpu
	combination.
	(ISA_HAS_MXHC1): True if ISA supports mfhc1 and mthc1 opcodes.
	(ASM_SPEC): Pass along -mfp32 and -mfp64.
	* config/mips/mips.c (mips_split_64bit_move): Use gen_mthc1 to set
	high part of FP register when in 64-bit FP register mode.  Similarly
	use gen_mfhc1 to load high part of FP register.
	(override_options): Allow -mgp32 and -mfp64 combination if
	ISA_HAS_MXHC1 (currently for O32 only).
	(mips_cannot_change_mode_class): If floating-point registers are
	bigger than word size. disallow conversion of float register from a
	large integer mode to a float mode smaller than the float register
	size.
	(mips_class_max_nregs): Handle float registers case seperately.
	* config/mips/mips.md (define_constants): Add UNSPEC_MFHC1,
	UNSPEC_MTHC1.
	(movdi_32bit): Use !TARGET_FLOAT64 in condition pattern.
	(movdf_hardfloat_32bit): Similarly.
	(movdi_gp32_fp64): New DImode pattern for MIPS32R2 which optionally
	support a full 64-bit fpu.
	(mthc1): New pattern to generate MTHC1 instruction.
	(mfhc1): New pattern to generate MFHC1 instruction.
	* doc/invoke.texi (MIPS Options): Document the -mgp32 -mfp64
	option for the MIPS32R2 and mention its use under O32 ABI.

gcc/testsuite:
	* gcc.target/mips/mips.exp (dg-mips-options): Handle parsing of
	-mfp64, allowable when ISA >= 33 and float is enabled.
	* gcc.target/mips/mips32r2-mxhc1.c: New test for checking the use
	of mthc1 and mfhc1 patterns.

From-SVN: r119124
2006-11-23 16:13:46 +00:00
Bernd Schmidt 49bcb41649 var-tracking.c (emit_note_insn_var_location): Take care not to cause verify_flow_info failures.
* var-tracking.c (emit_note_insn_var_location): Take care not to
	cause verify_flow_info failures.

From-SVN: r119116
2006-11-23 12:53:15 +00:00
Daniel Berlin 57250223c0 tree-ssa-structalias.c: Remove edge weights in favor of just processing them as complex constraints.
2006-11-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-structalias.c: Remove edge weights in favor of just
	processing them as complex constraints.
	(struct constraint_graph): Remove weighted succs and preds. Rename
	nonweighted succs and preds.
	(constraint_edge): Removed.
	(constraint_edge_t): Ditto.
	(constraint_edge_pool): Ditto.
	(new_constraint_edge): Ditto.
	(constraint_edge_equal): Ditto.
	(constraint_edge_less): Ditto.
	(constraint_edge_vec_find): Ditto.
	(erase_self_graph_edge): Ditto.
	(add_graph_edge): Removed.
	(get_graph_weights): Ditto.
	(allocate_graph_weights): Ditto.	(
	(valid_weighted_graph_edge): Ditto
	(bitmap_other_than_zero_bit_set): Ditto.
	(int_add_graph_edge): Renamed to add_graph_edge.
	(clear_edges_for_node): Remove support for weighted edges.
	(merge_graph_nodes): Ditto.
	(valid_graph_edge): Ditto.
	(build_constraint_graph): Ditto.
	(scc_visit): Ditto.
	(collapse_nodes): Ditto.
	(process_unification_queue): Ditto.
	(topo_visit): Ditto.
	(do_ds_constraint): Ditto.
	(perform_var_subsitution): Ditto.
	(solve_graph): Ditto.
	(init_alias_vars): Ditto.
	(delete_points_to_sets): Ditto.
	(do_complex_constraint): Support offsetted copies here.

From-SVN: r119114
2006-11-23 03:37:56 +00:00
Ben Elliston dc6ba965fe spu_intrinsics.h (SPU_RdEventStatMask): Rename to SPU_RdEventMask.
* config/spu/spu_intrinsics.h (SPU_RdEventStatMask): Rename to
	SPU_RdEventMask.
	* config/spu/spu_mfcio.h (spu_read_event_mask): Update.

From-SVN: r119111
2006-11-23 12:58:15 +11:00
Ben Elliston a991f101ae spu_mfcio.h (struct mfc_list_element): Change width of size bitfield.
* config/spu/spu_mfcio.h (struct mfc_list_element): Change width
	of size bitfield.

From-SVN: r119110
2006-11-23 12:23:42 +11:00
Ben Elliston 6db20516db * config/spu/spu-elf.h (LIB_SPEC): Do not link with -lc_p.
From-SVN: r119103
2006-11-23 10:46:27 +11:00
Zdenek Dvorak 0446c9f3a7 re PR tree-optimization/29921 (internal compiler error: in set_lattice_value, at tree-ssa-ccp.c:437)
PR tree-optimization/29921
	* fold-const.c (operand_equal_p): Without HONOR_SIGNED_ZEROS, consider
	signed and unsigned zero equal.

	* gcc.dg/pr29921.c: New test.

From-SVN: r119102
2006-11-22 23:11:15 +00:00
Peter Bergner e3a0e20064 rs6000.c (get_store_dest): New.
* config/rs6000/rs6000.c (get_store_dest): New.
	(adjacent_mem_locations): Use get_store_dest() to get
	the rtl of the store destination.

From-SVN: r119099
2006-11-22 13:06:41 -06:00
Joseph Myers 61c7623949 spe.md (SPE64): New mode macro.
* config/rs6000/spe.md (SPE64): New mode macro.
	(mov_sidf_e500_subreg0): Change to mov_si<mode>_e500_subreg0.  Add
	memory load.
	(mov_si<mode>_e500_subreg0_2): New.
	(mov_sidf_e500_subreg4): Change to mov_si<mode>_e500_subreg4.  Add
	memory load.
	(mov_si<mode>_e500_subreg4_2): New.
	* config/rs6000/predicates.md (input_operand): Do not allow
	invalid E500 subregs.
	(rs6000_nonimmediate_operand): Check for invalid E500 subregs also
	if TARGET_SPE.
	* config/rs6000/rs6000.c (invalid_e500_subreg): Check for subregs
	involving DFmode if TARGET_E500_DOUBLE.  Check for subregs
	involving vector modes if TARGET_SPE.

From-SVN: r119094
2006-11-22 16:41:29 +00:00
Kaz Kojima 7c21975d47 revert: reorg.c (emit_delay_sequence): Copy the delay slot insn.
Revert
	2006-11-12  Kaz Kojima  <kkojima@gcc.gnu.org>
	* reorg.c (emit_delay_sequence): Copy the delay slot insn.

From-SVN: r119093
2006-11-22 15:29:02 +00:00
Bernd Schmidt 36662eb11d predicates.md (d_register_operand, [...]): New predicates.
* config/bfin/predicates.md (d_register_operand, mem_p_address_operand,
	mem_i_address_operand): New predicates.
	* config/bfin/bfin.c (bfin_issue_rate): New function.
	(TARGET_SCHED_ISSUE_RATE): New macro.
	* config/bfin/bfin.md (addrtype): New attribute.
	(slot0, slot1, slot2, store, pregs): New cpu_units.
	(core): Now a define_reservation.
	(alu): Remove some insn types from this reservation.
	(dsp32, load32, loadp, loadi, store32, storep, storei, multi): New
	insn reservations.
	(dummy reservation): Don't trigger for mcld insns.
	(absence_sets): Two new absence sets to enforce slot ordering.
	(popsi_insn): Set addrtype.

From-SVN: r119090
2006-11-22 14:12:46 +00:00
Ira Rosen 98b44b0eea c-tree.texi: Document new tree codes.
* doc/c-tree.texi: Document new tree codes.
        * doc/md.texi: Document new optabs.
        * tree-pretty-print.c (dump_generic_node): Handle print of new tree
        codes.
        * optabs.c (optab_for_tree_code, init_optabs): Handle new optabs.
        * optabs.h (optab_index): Add new.
        (vec_extract_even_optab, vec_extract_odd_optab,
        vec_interleave_high_optab, vec_interleave_low_optab): New optabs.
        * genopinit.c (vec_extract_even_optab, vec_extract_odd_optab,
        vec_interleave_high_optab, vec_interleave_low_optab): Initialize
        new optabs.
        * expr.c (expand_expr_real_1): Add implementation for new tree codes.
        * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
        * tree-vectorizer.h (stmt_vec_info): Add new fields for interleaving
        along with macros for their access.
        * tree-data-ref.h (first_location_in_loop, data_reference): Update
        comment.
        * tree-vect-analyze.c (toplev.h): Include.
        (vect_determine_vectorization_factor): Fix indentation.
        (vect_insert_into_interleaving_chain,
        vect_update_interleaving_chain, vect_equal_offsets): New functions.
        (vect_analyze_data_ref_dependence): Add argument for interleaving
        check. Check for interleaving if it's true.
        (vect_check_dependences): New function.
        (vect_analyze_data_ref_dependences): Call vect_check_dependences for
        every ddr. Call vect_analyze_data_ref_dependence with new argument.
        (vect_update_misalignment_for_peel): Update for interleaving.
        (vect_verify_datarefs_alignment): Check only first data-ref for
        interleaving.
        (vect_enhance_data_refs_alignment): Update for interleaving. Check
        only first data-ref for interleaving.
        (vect_analyze_data_ref_access): Check interleaving, update
        interleaving data.
        (vect_analyze_data_refs): Call compute_data_dependences_for_loop
        with different parameters.
        * tree.def (VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR,
        VEC_INTERLEAVE_HIGH_EXPR, VEC_INTERLEAVE_LOW_EXPR): New tree codes.
        * tree-inline.c (estimate_num_insns_1): Add cases for new codes.
        * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
        Update step in case of interleaving.
        (vect_strided_store_supported, vect_permute_store_chain): New
        functions.
        (vectorizable_store): Handle strided stores.
        (vect_strided_load_supported, vect_permute_load_chain,
        vect_transform_strided_load): New functions.
        (vectorizable_load): Handle strided loads.
        (vect_transform_stmt): Add argument. Handle strided stores. Check
        that vectorized stmt exists for patterns.
        (vect_gen_niters_for_prolog_loop): Update calculation for
        interleaving.
        (vect_transform_loop): Remove stmt_vec_info for strided stores after
        whole chain vectorization.
        * config/rs6000/altivec.md (UNSPEC_EXTEVEN, UNSPEC_EXTODD,
        UNSPEC_INTERHI, UNSPEC_INTERLO): New constants.
        (vpkuhum_nomode, vpkuwum_nomode, vec_extract_even<mode>,
        vec_extract_odd<mode>, altivec_vmrghsf, altivec_vmrglsf,
        vec_interleave_high<mode>, vec_interleave_low<mode>): Implement.

From-SVN: r119088
2006-11-22 08:46:03 +00:00