Commit Graph

32214 Commits

Author SHA1 Message Date
Richard Sandiford 8cb6400cda Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
gcc/
	* Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
	* genemit.c (main): Emit #include "integrate.h".
	* config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
	(LOADGP_RTP): New mips_loadgp_style.
	* config/mips/mips.h: Include config/vxworks-dummy.h.
	(TARGET_RTP_PIC): New macro.
	(TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
	(TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
	for TARGET_RTP_PIC.
	* config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
	-mvxworks-pic when using -mrtp and a PIC option.
	* config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
	for RTP PIC.
	(mips_symbolic_constant_p, mips_symbolic_address_p)
	(mips_symbol_insns): Handle SYMBOL_HALF.
	(override_options): Warn about -G and -mrtp being used together.
	Initialize mips_lo_relocs[SYMBOL_HALF].
	(mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
	(mips_emit_loadgp): Handle LOADGP_RTP.
	(mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
	* config/mips/mips.md (loadgp_rtp): New insn and splitter.
	(tablejump): Handle function-relative case table entries if
	TARGET_RTP_PIC.
	* config/mips/predicates.md (symbol_ref_operand): New predicate.

From-SVN: r123757
2007-04-12 17:59:57 +00:00
Richard Sandiford f28d806256 mips.md (load_call<mode>): Allow any general register.
gcc/
	* config/mips/mips.md (load_call<mode>): Allow any general register.
	destination.
	(sibcall_value_internal, sibcall_value_multiple_internal)
	(call_value_internal, call_value_split, call_value_multiple_internal)
	(call_value_multiple_split): Remove constraints from operand 0.

From-SVN: r123756
2007-04-12 17:44:57 +00:00
Richard Sandiford dc7750b1a9 mips-protos.h: In comments, refer to loadgp_absolute rather than loadgp_noshared.
gcc/
	* config/mips/mips-protos.h: In comments, refer to loadgp_absolute
	rather than loadgp_noshared.
	* config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
	instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
	gen_loadgp.
	* config/mips/mips.md (loadgp): Rename to...
	(loadgp_newabi): ...this.
	(loadgp_noshared): Rename to...
	(loadgp_absolute): ...this.

From-SVN: r123755
2007-04-12 17:39:58 +00:00
Richard Sandiford 006257dc5b mips.c (mips_ok_for_lazy_binding_p): Always return false for locally-binding symbols.
gcc/
	* config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
	false for locally-binding symbols.
	(mips_dangerous_for_la25_p): Check mips_global_symbol_p.

From-SVN: r123754
2007-04-12 17:37:25 +00:00
Richard Sandiford 08e7ceb3d3 mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
gcc/
	* config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
	(SYMBOL_GOT_PAGE_OFST): ...this.
	(SYMBOL_GOT_GLOBAL): Rename to...
	(SYMBOL_GOT_DISP): ...this.
	(SYMBOL_GOTOFF_GLOBAL): Rename to...
	(SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
	* config/mips/mips.c (mips_global_symbol_p): New function.
	(mips_symbol_binds_local_p): Likewise.
	(mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
	and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
	and mips_symbol_binds_local_p.
	(mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
	(override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
	SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
	SYMBOL_GOTOFF_DISP.
	(mips_ok_for_lazy_binding_p): New function.
	(mips_load_call_address, mips_expand_call): Use it.
	(mips_dangerous_for_la25_p): Likewise.
	* config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
	(*got_disp<mode>): Use got_disp_operand instead of
	global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
	SYMBOL_GOTOFF_GLOBAL.
	(*got_page<mode>): Use got_page_ofst_operand instead of
	local_got_operand.
	* config/mips/predicates.md (const_call_insn_operand): Use
	SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
	(global_got_operand): Rename to...
	(got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
	SYMBOL_GOT_GLOBAL.
	(local_got_operand): Rename to...
	(got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
	of SYMBOL_GOT_LOCAL.

From-SVN: r123752
2007-04-12 17:26:45 +00:00
Richard Sandiford 14976818e7 mips.h (TARGET_SPLIT_CALLS): Check TARGET_CALL_CLOBBERED_GP.
gcc/
	* config/mips/mips.h (TARGET_SPLIT_CALLS): Check
	TARGET_CALL_CLOBBERED_GP.
	(TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
	(TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
	(TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
	(STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
	of TARGET_ABICALLS && !TARGET_NEWABI.
	(MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
	* config/mips/mips.c (mips_load_call_address): Check
	TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
	(mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
	Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
	(mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
	TARGET_ABICALLS && TARGET_NEWABI.
	(mips_current_loadgp_style): Check TARGET_USE_GOT instead of
	TARGET_ABICALLS.
	(mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
	(mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
	TARGET_ABICALLS && TARGET_NEWABI.
	(mips_output_mi_thunk): Check TARGET_USE_GOT instead of
	TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
	TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
	whether indirect calls must use $25.
	(mips_extra_live_on_entry): Check TARGET_GOT instead of
	TARGET_ABICALLS.
	* config/mips/mips.md (jal_macro): Check flag_pic and
	TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
	(builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
	instead of TARGET_ABICALLS.
	(exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
	TARGET_ABICALLS && TARGET_OLDABI.
	(load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
	(sibcall): In the comment above the define_insn, mention
	TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
	* config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
	instead of TARGET_ABICALLS.

From-SVN: r123751
2007-04-12 17:10:56 +00:00
Bernd Schmidt 2d3649b23f bfin.md (movhi_low2high, [...]): Delete, merge functionality into...
* config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
	movhi_high2low): Delete, merge functionality into...
	(packv2hi): ... this pattern.

From-SVN: r123749
2007-04-12 15:22:06 +00:00
Bernd Schmidt 3fbee523e2 lib1funcs.asm (___umulsi3_highpart, [...]): Use a more efficient implementation.
* config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
	Use a more efficient implementation.
	* config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
	inline sequences when not optimizing for size.

From-SVN: r123748
2007-04-12 13:39:35 +00:00
Bernd Schmidt 9d3f9aa3a5 bfin.opt (msim): New option.
2007-02-11  Jie Zhang  <jie.zhang@analog.com>
	* config/bfin/bfin.opt (msim): New option.
	(mcpu=): New option.
	* config/bfin/bfin-protos.h (enum bfin_cpu): New.
	(bfin_cpu_t): Typedef of enum bfin_cpu.
	(bfin_cpu_type): New declaration.
	* config/bfin/elf.h (STARTFILE_SPEC): Add support for
	-msim and -mcpu= options.
	(LIB_SPEC): Likewise.
	* config/bfin/bfin.c (bfin_cpu_type): Define.
	(bfin_handle_option): Handle -mcpu= option.
	* config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
	(TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
	__ADSPBF533__ or __ADSPBF537__ according to the cpu type.

From-SVN: r123747
2007-04-12 13:21:01 +00:00
Bernd Schmidt 3efd5670ca md.texi (Blackfin family constraints): Document PA and PB.
* doc/md.texi (Blackfin family constraints): Document PA and PB.
	* config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
	(MACFLAGS_MATCH_P): New macro.
	* config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
	(bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
	* config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
	the other MACFLAG constants.
	(sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
	(flag_machi): Tighten constraints.  Renumber some of the operands.
	(flag_machi_acconly): Tighten constraints.  Correct operand numbers in
	output template.
	(flag_machi_parts_acconly): New pattern.
	(flag_macinithi): Tighten constraints.  Allow any accumulator to be
	used.
	(flag_macinit1hi): Tighten constraints.
	(flag_mul_macv2hi_parts_acconly): New pattern.

From-SVN: r123745
2007-04-12 13:03:17 +00:00
Richard Sandiford f4de8ba686 config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
gcc/
	* config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
	(arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
	(powerpc-wrs-vxworksae): Use ${tm_file}.
	(i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
	after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
	* config/i386/vx-common.h: New file.

From-SVN: r123744
2007-04-12 12:47:05 +00:00
Richard Sandiford b83b15dae3 vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead of crt0.o%s.
gcc/
	* config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
	of crt0.o%s.

From-SVN: r123743
2007-04-12 12:44:31 +00:00
Andreas Krebbel bf259a7704 s390.md ("trunctddd2"): Use TDmode for the target of ldxtr.
2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
	ldxtr.

From-SVN: r123741
2007-04-12 12:07:24 +00:00
Douglas Gregor 9576481824 re PR c++/31078 (warning: same canonical type node for different types with const strings)
2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>

	PR c++/31078
	PR c++/31103
	* c-common.c (c_build_qualified_type): Set canonical type
	appropriately.  

2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>

	PR c++/31078
	* g++.dg/other/pr31078.C: New.

From-SVN: r123740
2007-04-12 11:47:56 +00:00
Richard Guenther a670437d92 tree-pretty-print.c (dump_generic_node): Print ARRAY_REF lower bound and element size if...
2007-04-12  Richard Guenther  <rguenther@suse.de>

	* tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
	lower bound and element size if lower bound is not zero
	or either of the ARRAY_REF operands is set.

From-SVN: r123738
2007-04-12 09:25:04 +00:00
Richard Guenther 5852948c5b re PR tree-optimization/24689 (operand_equal_p does not return true for some equivalent ARRAY_REF)
2007-04-12  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/24689
	PR tree-optimization/31307
	* fold-const.c (operand_equal_p): Compare INTEGER_CST array
	indices by value.
	* gimplify.c (canonicalize_addr_expr): To be consistent with
	gimplify_compound_lval only set operands two and three of
	ARRAY_REFs if they are not gimple_min_invariant.  This makes
	it never at this place.
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.

	* g++.dg/tree-ssa/pr31307.C: New testcase.
	* gcc.dg/tree-ssa/pr24689.c: Likewise.

From-SVN: r123736
2007-04-12 09:15:53 +00:00
John David Anglin 8c5e065b53 pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not null before emitting a .nsubspa directive.
* pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
	null before emitting a .nsubspa directive.

From-SVN: r123733
2007-04-12 00:46:13 +00:00
Diego Novillo 0de107cf67 tree-ssa-alias.c (dump_mem_ref_stats): Do not call need_to_partition_p if there are no memory statements in the function.
* tree-ssa-alias.c (dump_mem_ref_stats): Do not call
	need_to_partition_p if there are no memory statements in the
	function.

From-SVN: r123732
2007-04-11 19:46:43 -04:00
Zdenek Dvorak 55a700ac1f tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
* tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
	(gcd_of_steps_may_divide_p): New function.
	(analyze_miv_subscript): Use gcd_of_steps_may_divide_p.

From-SVN: r123731
2007-04-11 23:18:58 +00:00
Bernd Schmidt 0f4b25a3e3 reload.c (find_reloads_toplev, [...]): Use rtx_equal_p...
* reload.c (find_reloads_toplev, find_reloads_address,
	find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
	not a pointer equality test, to decide if we need to call
	push_reg_equiv_alt_mem.

From-SVN: r123724
2007-04-11 19:44:07 +00:00
Sebastian Pop 1baf2906ef tree-data-ref.c (affine_function_zero_p, [...]): New.
* tree-data-ref.c (affine_function_zero_p, constant_access_functions,
	insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
	(build_classic_dist_vector): Call add_distance_for_zero_overlaps.

From-SVN: r123721
2007-04-11 17:10:23 +00:00
Zdenek Dvorak 0ca2faee4f tree-data-ref.c (add_multivariate_self_dist): Force the distance vector to be positive.
* tree-data-ref.c (add_multivariate_self_dist): Force the distance
	vector to be positive.

From-SVN: r123720
2007-04-11 16:45:47 +00:00
Diego Novillo e9e0aa2c96 re PR tree-optimization/30735 (50% slow down due to mem-ssa merge)
PR 30735
	PR 31090
	* doc/invoke.texi: Document --params max-aliased-vops and
	avg-aliased-vops.
	* tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
	debug_memory_partitions): Move to tree-flow.h
	* params.h (AVG_ALIASED_VOPS): Define.
	* tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
	users.
	(mp_info_t): Likewise.
	(get_mem_sym_stats_for): New.
	(set_memory_partition): Move from tree-flow-inline.h.
	(mark_non_addressable): Only clear the set of symbols for the
	partition if it exists.
	(dump_memory_partitions): Move from tree-ssa-operands.c
	(debug_memory_partitions): Likewise.
	(need_to_partition_p): New.
	(dump_mem_ref_stats): New.
	(debug_mem_ref_stats): New.
	(dump_mem_sym_stats): New.
	(debug_mem_sym_stats): New.
	(update_mem_sym_stats_from_stmt): New.
	(compare_mp_info_entries): New.
	(mp_info_cmp): Call it.
	(sort_mp_info): Change argument to a list of mem_sym_stats_t
	objects.
	(get_mpt_for): Move from tree-ssa-operands.c.
	(find_partition_for): New.
	(create_partition_for): Remove.
	(estimate_vop_reduction): New.
	(update_reference_counts): New.
	(build_mp_info): New.
	(compute_memory_partitions): Refactor.
	Document new heuristic.
	Call build_mp_info, update_reference_counts,
	find_partition_for and estimate_vop_reduction.
	(compute_may_aliases): Populate virtual operands before
	calling debugging dumps.
	(delete_mem_sym_stats): New.
	(delete_mem_ref_stats): New.
	(init_mem_ref_stats): New.
	(init_alias_info): Call it.
	(maybe_create_global_var): Remove alias_info argument.
	Get number of call sites and number of pure/const call sites
	from gimple_mem_ref_stats().
	(dump_alias_info): Call dump_memory_partitions first.
	(dump_points_to_info_for): Show how many times a pointer has
	been dereferenced.
	* opts.c (decode_options): For -O2 set --param
	max-aliased-vops to 500.
	For -O3 set --param max-aliased-vops to 1000 and --param
	avg-aliased-vops to 3.
	* fortran/options.c (gfc_init_options): Remove assignment to
	MAX_ALIASED_VOPS.
	* tree-flow-inline.h (gimple_mem_ref_stats): New.
	* tree-dfa.c (dump_variable): Dump memory reference
	statistics.
	Dump NO_ALIAS* settings.
	(referenced_var_lookup): Tidy.
	(mem_sym_stats): New.
	* tree-ssa-copy.c (may_propagate_copy): Return true if DEST
	and ORIG are different SSA names for a memory partition.
	* tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
	* tree-flow.h (struct mem_sym_stats_d): Define.
	(mem_sym_stats_t): Define.
	(struct mem_ref_stats_d): Define.
	(struct gimple_df): Add field mem_ref_stats.
	(enum noalias_state): Define.
	(struct var_ann_d): Add bitfield noalias_state.
	(mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
	debug_mem_ref_stats, debug_memory_partitions,
	debug_mem_sym_stats): Declare.
	* tree-ssa-structalias.c (update_alias_info): Update call
	sites, pure/const call sites and asm sites in structure
	returned by gimple_mem_ref_stats.
	Remove local variable IS_POTENTIAL_DEREF.
	Increase NUM_DEREFS if the memory expression is a potential
	dereference.
	Call update_mem_sym_stats_from_stmt.
	If the memory references memory, call
	update_mem_sym_stats_from_stmt for all the direct memory
	symbol references found.
	(intra_create_variable_infos): Set noalias_state field for
	pointer arguments according to the value of
	flag_argument_noalias.
	* tree-ssa-structalias.h (struct alias_info): Remove fields
	num_calls_found and num_pure_const_calls_found.
	(update_mem_sym_stats_from_stmt): Declare.
	* params.def (PARAM_MAX_ALIASED_VOPS): Change description.
	Set default value to 100.
	(PARAM_AVG_ALIASED_VOPS): Define.

From-SVN: r123719
2007-04-11 12:14:06 -04:00
Richard Guenther 4bf371ea7e re PR middle-end/31530 (Incorrect folding of multiplication and sign change when followed by an addition)
2007-04-11  Richard Guenther  <rguenther@suse.de>

	PR middle-end/31530
	* simplify-rtx.c (simplify_binary_operation_1): Do not simplify
	a * -b + c as c - a * b if we honor sign dependent rounding.

From-SVN: r123715
2007-04-11 11:13:54 +00:00
Bernd Schmidt 266d11d862 bfin-protos.h (bfin_expand_movmem): Renamed from bfin_expand_strmov.
* config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
	bfin_expand_strmov.
	* config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
	bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
	variables.
	(initialize_trampoline): Don't use old-style function definition.
	(bfin_secondary_reload): Mark IN_P argument as unused.

From-SVN: r123714
2007-04-11 11:06:44 +00:00
Sebastian Pop e9793dae58 re PR tree-optimization/31343 (ICE in data-refs dependence testing)
PR tree-optimization/31343
	* tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
	(build_polynomial_chrec): Return a scalar when the evolution is zero.
	* testsuite/gcc.dg/vect/pr31343.c: New.

From-SVN: r123708
2007-04-11 00:09:35 +00:00
Eric Christopher 54a8809004 i386.h (X87_FLOAT_MODE_P): New.
2007-04-10  Eric Christopher  <echristo@apple.com>

	    * config/i386/i386.h (X87_FLOAT_MODE_P): New.
	    * config/i386/i386.md (*cmpfp0): Use.
	    (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
	    (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
	    (fix_trunc<mode>_i386_fisttp): Ditto.
	    (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
	    (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
	    (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
	    (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
	    (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
	    (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
	    (unnamed_splitters): Ditto.
	    * config/i386/i386.c (output_fix_trunc): Assert that
	    we're not being passed a TFmode operand.

From-SVN: r123700
2007-04-10 22:41:28 +00:00
Zdenek Dvorak 7c57be853d re PR tree-optimization/31526 (ICE in alloc_aux_for_block())
PR tree-optimization/31526
	* tree-inline.c (copy_cfg_body): Use last_basic_block instead of
	n_basic_blocks to find newly added blocks.

From-SVN: r123699
2007-04-10 21:10:26 +00:00
Uros Bizjak 0218c0120c i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm" alternative.
* config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
	alternative.
	(fix_trunc<mode>si_sse): Ditto.
	(*floatsisf2_mixed, *floatsisf2_sse): Ditto.
	(*floatsidf2_mixed, *floatsidf2_sse): Ditto.
	(*floatdisf2_mixed, *floatdisf2_sse): Ditto.
	(*floatdidf2_mixed, *floatdidf2_sse): Ditto.
	(floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
	expander using SSEMODEF mode macro.
	(floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
	expander using SSEMODEF mode macro.
	(*floathi<mode>2_i387): Rename from *floathisf2_i387 and
	*floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
	(*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
	*floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
	(*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
	*floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
	(float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
	Macroize insn using X87MODEF mode macro.

From-SVN: r123693
2007-04-10 13:41:01 +02:00
H.J. Lu 3117d1b509 sse.md (sse2_pinsrw): Removed.
2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/sse.md (sse2_pinsrw): Removed.
	(sse2_pextrw): Renamed to ...
	(*sse2_pextrw): This.

From-SVN: r123689
2007-04-09 18:58:03 -07:00
Jan Hubicka c141e4992b re PR target/27869 ("-O -fregmove" handles SSE scalar instructions incorrectly)
PR target/27869
	* config/i386/sse.md
	(sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
	(sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
	(sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
	(sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.

From-SVN: r123682
2007-04-09 23:06:16 +00:00
Jan Hubicka 6e6e19cbf5 foldaddr-3.c: New file.
* gcc.dg/tree-ssa/foldaddr-3.c: New file.

	* tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
	multiple fields of union.

From-SVN: r123674
2007-04-09 17:00:10 +00:00
Zdenek Dvorak c7b852c8a6 cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
* cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
	(create_preheaders): Check that loops are available.
	(fix_loop_structure): Clean up, improve comments.
	* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
	Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
	state flags.
	* tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
	* predict.c (tree_estimate_probability): Do not call
	calculate_dominance_info.  Call create_preheaders.
	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
	rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
	flags.
	* cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
	* cfgloop.h (LOOP_CLOSED_SSA): New constant.
	* tree-cfg.c (tree_split_edge): Make an assert more precise.
	* tree-ssa-threadedge.c (thread_across_edge): Comment the function
	arguments.

From-SVN: r123670
2007-04-09 06:51:43 +00:00
Jan Hubicka c586d32a1e tree.h (maybe_fold_offset_to_component_ref): Declare.
* tree.h (maybe_fold_offset_to_component_ref): Declare.
	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
	* fold-const.c (fold_unary): Use it.

	* gcc.dg/tree-ssa/foldaddr-2.c: New file.

From-SVN: r123664
2007-04-08 22:12:21 +00:00
Andrew Pinski 136cdb2250 varasm.c (assemble_variable): Remove call to lang_hooks.decls.prepare_assemble_variable.
2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * varasm.c (assemble_variable): Remove call to
        lang_hooks.decls.prepare_assemble_variable.
        * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
        (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
        * langhooks.h (lang_hooks_for_decls): Remove
        prepare_assemble_variable.

From-SVN: r123663
2007-04-08 12:30:06 -07:00
Mike Stump 77c1632f35 * config/i386/i386.c: Use inc/dec on Core2.
From-SVN: r123662
2007-04-08 16:30:23 +00:00
Steven Bosscher cb9c159dc0 langhooks.c (lhd_tree_inlining_add_pending_fn_decls, [...]): Remove.
* langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
	lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
	lhd_tree_inlining_end_inlining): Remove.
	* langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
	add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
	end_inlining hooks.
	* langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
	lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
	lhd_tree_inlining_end_inlining): Remove prototypes.
	(LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
	LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
	LANG_HOOKS_TREE_INLINING_START_INLINING,
	LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.

	* c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
	not set it.

cp/
	* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
	Do not set it.
	(LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
	* tree.c (cp_add_pending_fn_decls): Remove.
	* cp-tree.h (cp_add_pending_fn_decls): Remove prototype.

From-SVN: r123658
2007-04-08 13:14:39 +00:00
Anatoly Sokolov d8a1f0fb64 re PR target/29932 (avr-gcc wrongly optimizes bit sets/resets for IO register 0x20)
PR target/29932
	* config/avr/predicates.md (io_address_operand): Delete predicate.
	(low_io_address_operand): Don't use 'mode' argument.
	(higth_io_address_operand): Rename ...
	(high_io_address_operand): ... to this. Don't use 'mode' argument.
	* config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
	for above change.

From-SVN: r123657
2007-04-08 14:38:38 +04:00
Daniel Berlin 270c60bb5f 2007-04-07 Daniel Berlin <dberlin@dberlin.org>
Revert change removing staticp.

From-SVN: r123650
2007-04-07 23:08:23 +00:00
Anatoly Sokolov ee57a66148 re PR target/30289 (avr-gcc: builtin memset(): wrong code)
PR target/30289
	* config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as 
	earlyclobber.

From-SVN: r123647
2007-04-08 02:00:33 +04:00
Bruce Korb ca178f85a6 Separate NUL byte detection from rest of -Wformat warnings
From-SVN: r123640
2007-04-07 17:55:07 +00:00
H.J. Lu 594dc04813 i386.c (ix86_handle_option): Handle SSSE3.
2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_handle_option): Handle SSSE3.

From-SVN: r123639
2007-04-07 08:58:00 -07:00
Daniel Berlin 1df918ac8e in / 2007-04-06 Daniel Berlin <dberlin@dberlin.org>
in /
2007-04-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree.c (staticp): No longer use staticp langhook.
	* langhooks.c (lhd_staticp): Removed.
	* langhooks.h (struct lang_hooks): Remove staticp.
	* c-common.c (c_staticp): Remove.
	* c-common.h (c_staticp): Ditto.
	* langhooks-defs.h (lhd_staticp): Ditto.
	(LHD_HOOKS_STATICP): Ditto
	* tree.h (gcc_assert_lowered): New macro.

in cp/				       

2007-04-06  Daniel Berlin  <dberlin@dberlin.org>

	* cp-objcp-common.c (cxx_staticp): Remove.
	* cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
	* cp-tree.h (cxx_staticp):

From-SVN: r123636
2007-04-07 00:19:46 +00:00
Zdenek Dvorak ac84e05eb6 tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use argument "reliable".
* tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
	argument "reliable".
	(infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
	Add argument "reliable".  Propagate it through calls.
	(infer_loop_bounds_from_undefined):  Derive number of iterations
	estimates from references in blocks that do not dominate loop latch.
	(gcov_type_to_double_int): New function.
	(estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
	and expected_loop_iterations_unbounded.
	* cfgloopanal.c (expected_loop_iterations_unbounded): New function.
	(expected_loop_iterations): Use expected_loop_iterations_unbounded.
	* tree-data-ref.c (estimated_loop_iterations): Export.
	(get_references_in_stmt): Fix -- do not return addresses of local
	objects.
	* cfgloop.h (expected_loop_iterations_unbounded,
	estimated_loop_iterations): Declare.

From-SVN: r123630
2007-04-06 23:11:15 +00:00
H.J. Lu 64199a9eed Remove ">>>>>>> .r123627".
From-SVN: r123629
2007-04-06 14:24:17 -07:00
Andreas Tobler 4de5c5d3bf tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>

        * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.

From-SVN: r123628
2007-04-06 22:55:24 +02:00
Uros Bizjak a344e3cbb6 i386.md (extend<mode>xf2): Rename from extendsfxf2 and extenddfxf2.
* config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
        and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
        (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
        Use output_387_reg_move().
        (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
        expander using X87MODEF12 mode macro.
        (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
        choosing register preferences.  Use output_387_reg_move().
        (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
        instead of "x".  Use output_387_reg_move().
        (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
        *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
        (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
        *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
        Use output_387_reg_move().
        (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
        mode macro.
        (*truncxf?f_i387 splitter): Ditto.

From-SVN: r123626
2007-04-06 22:14:12 +02:00
Daniel Berlin 9c269bf8e5 langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_SAFE_FROM_P.
2007-04-06  Daniel Berlin  <dberlin@dberlin.org>

	* langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
	LANG_HOOKS_SAFE_FROM_P.
	* expr.c (safe_from_p): Remove langhook call.
	* langhooks.h (lang_hooks): Remove safe_from_p.
	(lhd_safe_from_p): Remove prototype.
	* langhooks.c (lhd_safe_from_p): Remove.

From-SVN: r123624
2007-04-06 16:51:18 +00:00
Jan Hubicka b521dcbee1 cgraphunit.c (decide_is_function_needed): Do not keep always_inline functions.
* cgraphunit.c (decide_is_function_needed): Do not keep always_inline
	functions.

From-SVN: r123614
2007-04-06 12:56:50 +00:00
Uros Bizjak d869c35152 i386.c (output_387_reg_move): Handle memory operand[0].
* config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
	* config/i386/i386.md (*movsf_1, *movdf_nointeger,
	*movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
	*movxf_integer): Use output_387_reg_move() for x87 reg->mem
	alternative.
	(*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
	*extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.

From-SVN: r123613
2007-04-06 12:59:53 +02:00