Commit Graph

32553 Commits

Author SHA1 Message Date
Andrew Pinski 3613c7abfa re PR tree-optimization/32100 (vrp bitfield miscompilation)
2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/32100
        * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
        return true when truth_value_p is true and the type
        is of signed:1.

2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/32100
         * gcc.c-torture/execute/vrp-7.c: New test.

From-SVN: r125139
2007-05-28 12:43:10 -07:00
Gerald Pfeifer 565f8ce5ff install.texi (Prerequisites): We no longer require Autoconf 2.13 for the top-level.
* doc/install.texi (Prerequisites): We no longer require Autoconf
	2.13 for the top-level.

From-SVN: r125131
2007-05-28 15:42:25 +00:00
Uros Bizjak e9dd4c3e04 i386.c (ix86_expand_vector_move): Expand unaligned memory access via x86_expand_vector_move_misalign() only for...
* target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
	memory access via x86_expand_vector_move_misalign() only for
	TImode values on 32-bit targets.

From-SVN: r125129
2007-05-28 14:17:42 +02:00
Razya Ladelsky 138e99d1a0 Change date of changelog
From-SVN: r125127
2007-05-28 11:23:08 +00:00
Razya Ladelsky 43d861a5bc matrix-reorg.c: New file.
2007-05-07  Razya Ladelsky  <razya@il.ibm.com>  
        
        * matrix-reorg.c: New file. Implement matrix flattening and transposing
	    optimization.
        * tree-pass.h: Add matrix reorg pass.
        * common.opt: Add fipa-mreorg flag.
        * Makefile.in: Add matrix-reorg.c.
        * passes.c: Add matrix reorg pass.
	  * varpool.c (add_new_static_var): New function.
	  * cgraph.h (add_new_static_var): Declare.

From-SVN: r125126
2007-05-28 11:10:27 +00:00
Eric Christopher bcb2d70142 rs6000.c (rs6000_emit_prologue): Update sp_offset depending on stack size.
2007-05-27  Eric Christopher  <echristo@apple.com>

	    * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
	    sp_offset depending on stack size. Save r12 depending
	    on registers we're saving later.
	    (rs6000_emit_epilogue): Update sp_offset depending only
	    on stack size.

From-SVN: r125116
2007-05-27 19:13:07 +00:00
Zdenek Dvorak d51157deee tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
* tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
	* tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
	* ifcvt.c (if_convert): Ditto.
	* tree-ssa-threadupdate.c (thread_block): Ditto.
	(thread_through_all_blocks): Ditto.  Assert that loops were analysed.
	* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
	verify_loop_closed_ssa): Check number_of_loops instead of current_loops.
	* predict.c (tree_estimate_probability): Ditto.
	* tree-if-conv.c (main_tree_if_conversion): Ditto.
	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* modulo-sched.c (sms_schedule): Ditto.
	* tree-scalar-evolution.c (scev_const_prop): Ditto.
	(scev_finalize): Do not do anything if scev analysis was not
	initialized.
	* cfgloopanal.c (mark_irreducible_loops): Do not check whether
	current_loops == NULL.
	(mark_loop_exit_edges): Check number_of_loops instead of current_loops.
	* loop-init.c (loop_optimizer_init): Do not free current_loops when
	there are no loops.
	(loop_optimizer_finalize): Assert that loops were analyzed.
	(rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
	rtl_doloop): Check number_of_loops instead of current_loops.
	* tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
	current_loops == NULL.
	(tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
	gate_tree_vectorize tree_linear_transform, check_data_deps,
	tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
	tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
	Check number_of_loops instead of current_loops.
	(tree_ssa_loop_done): Do not check whether current_loops == NULL.
	* tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
	free loops if available.
	(execute_pre): Do not pass do_fre to fini_pre.

From-SVN: r125114
2007-05-27 17:23:11 +00:00
Tobias Burnus fe67caf629 re PR middle-end/32083 (bug in transfer integer->real->integer)
2007-05-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32083
	* real.c (mpfr_from_real): Fix sign of -Inf.

2007-05-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32083
	* gfortran.dg/transfer_simplify_3.f90: New.

From-SVN: r125108
2007-05-27 10:09:51 +02:00
H.J. Lu 8ff43db0f9 tree-vect-transform.c (vectorizable_conversion): Initialize tree_code variables to ERROR_MARK.
2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>

	* tree-vect-transform.c (vectorizable_conversion): Initialize
	tree_code variables to ERROR_MARK.
	(vectorizable_type_demotion): Likewise.
	(vectorizable_type_promotion): Likewise.

From-SVN: r125107
2007-05-27 00:21:58 -07:00
Uros Bizjak 72bd078f6e re PR target/32065 (Many dfp testsuite failures for -msse targets)
PR target/32065
        * config/i386/i386.md (movti): Handle push operands via
        ix86_expand_push().

testsuite/ChangeLog:

        PR target/32065
        * gcc.target/i386/pr32065-1.c: Rename from pr32065.c.  Add -std=gnu99
        to compile options.
        * gcc.target/i386/pr32065-2.c: New test.

From-SVN: r125102
2007-05-26 23:35:41 +02:00
Kazu Hirata 5ef1348f3c tree-flow.h: Remove the prototype for is_aliased_with.
* tree-flow.h: Remove the prototype for is_aliased_with.
	* tree-ssa-alias.c (is_aliased_with): Remove.

From-SVN: r125095
2007-05-26 15:17:38 +00:00
Kazu Hirata eb83419390 basic-block.h: Remove the prototype for merge_seq_blocks.
* basic-block.h: Remove the prototype for merge_seq_blocks.
	* cfgcleanup.c (merge_seq_blocks): Remove.

From-SVN: r125094
2007-05-26 15:16:45 +00:00
H.J. Lu e5ac0b9bce i386-protos.h (ix86_expand_sse4_unpack): New.
2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.

	* config/i386/i386.c (ix86_expand_sse4_unpack): New.

	* config/i386/sse.md (vec_unpacku_hi_v16qi): Call
	ix86_expand_sse4_unpack if SSE4.1 is enabled.
	(vec_unpacks_hi_v16qi): Likewise.
	(vec_unpacku_lo_v16qi): Likewise.
	(vec_unpacks_lo_v16qi): Likewise.
	(vec_unpacku_hi_v8hi): Likewise.
	(vec_unpacks_hi_v8hi): Likewise.
	(vec_unpacku_lo_v8hi): Likewise.
	(vec_unpacks_lo_v8hi): Likewise.
	(vec_unpacku_hi_v4si): Likewise.
	(vec_unpacks_hi_v4si): Likewise.
	(vec_unpacku_lo_v4si): Likewise.
	(vec_unpacks_lo_v4si): Likewise.

From-SVN: r125093
2007-05-26 07:34:21 -07:00
Kazu Hirata 110abdbc68 i386.c, [...]: Fix comment typos.
* config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
	df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
	fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
	tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
	tree-vrp.c: Fix comment typos.  Follow spelling conventions.
	* doc/tm.texi: Follow spelling conventions.

From-SVN: r125090
2007-05-26 13:00:47 +00:00
Kazu Hirata 4dad0aca14 c-typeck.c, [...]: Fix typos and follow spelling conventions in various warning/error/diagnostic...
* c-typeck.c, config/arm/arm.c, config/darwin.c,
	config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
	omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
	follow spelling conventions in various
	warning/error/diagnostic messages.

From-SVN: r125089
2007-05-26 12:17:52 +00:00
Andrew Pinski 150594ba69 re PR tree-optimization/32090 (ICE in forwprop with zero sized array)
2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/32090
        * tree-ssa-forwprop.c
        (forward_propagate_addr_into_variable_array_index): Remove
        the lhs argument.  Use the type of def_rhs instead of lhs.
        (forward_propagate_addr_expr_1): Update use of
        forward_propagate_addr_into_variable_array_index.

2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR tree-opt/32090
        * g++.dg/opt/array2.C: New testcase.

From-SVN: r125087
2007-05-25 20:29:58 -07:00
Sandra Loosemore cd3a59b38e mips.c (mips_attribute_table): Add "near" and "far" function attributes, "far" being an alias for "long_call".
2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
	    Nigel Stephens  <nigel@mips.com>

	gcc/
	* config/mips/mips.c (mips_attribute_table): Add "near" and "far"
	function attributes, "far" being an alias for "long_call".
	(TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
	(mips_near_type_p, mips_far_type_p): New.
	(mips_comp_type_attributes): New function to check that attributes
	attached to a function type are compatible.
	(mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
	TARGET_LONG_CALLS when deciding	whether we can do a direct sibcall
	to the target function of the thunk.
	(mips_encode_section_info): Check for "near" and "far" function
	attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.

	* config/mips/predicates.md (const_call_insn_operand): Test only
	SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.

	* doc/extend.texi (Function Attributes): Document MIPS "near" and
	"far" attributes.

	* testsuite/gcc.target/mips/near-far-1.c:  New test case.
	* testsuite/gcc.target/mips/near-far-2.c:  New test case.
	* testsuite/gcc.target/mips/near-far-3.c:  New test case.
	* testsuite/gcc.target/mips/near-far-4.c:  New test case.

Co-Authored-By: Nigel Stephens <nigel@mips.com>

From-SVN: r125086
2007-05-25 22:02:37 -04:00
Eric Christopher 8536ebb582 config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp to x86-darwin configurations.
2007-05-25  Eric Christopher  <echristo@apple.com>

	    * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
	    to x86-darwin configurations.
	    * config/i386/t-darwin: Add softfp support.
	    * config/i386/t-darwin64: Ditto.
	    * config/i386/sfp-machine.h: If mach then don't use
	    aliasing, emit a stub to call.

From-SVN: r125085
2007-05-26 01:58:51 +00:00
Kazu Hirata c80b4100e0 cfglayout.c, [...]: Fix comment typos.
* cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
	haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
	tree-predcom.c, tree-ssa-alias-warnings.c,
	tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
	comment typos.  Follow spelling conventions.
	* doc/cpp.texi, doc/invoke.texi: Fix typos.

From-SVN: r125080
2007-05-25 22:58:16 +00:00
Uros Bizjak 4d2a42a1f6 re PR target/32065 (Many dfp testsuite failures for -msse targets)
PR target/32065
        * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
        constants into memory.  Expand unaligned memory references for
        SSE modes via x86_expand_vector_move_misalign() function.

testsuite/ChangeLog:

        PR target/32065
        * gcc.target/i386/pr32065.c: New test.

From-SVN: r125077
2007-05-26 00:36:10 +02:00
Uros Bizjak 5b98f74d38 sse.md (*vec_extractv2di_1_sse2): Do not calculate "memory" attribute for "sseishft" type insn without operands[2].
* config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
        "memory" attribute for "sseishft" type insn without operands[2].

From-SVN: r125075
2007-05-25 23:58:21 +02:00
Dirk Mueller 51bc54a661 extend.texi (alloc_size): New attribute.
2007-05-25  Dirk Mueller  <dmueller@suse.de>
            Marcus Meissner <meissner@suse.de>

        * doc/extend.texi (alloc_size): New attribute.
        * c-common.c (handle_alloc_size_attribute): New.
        * tree-object-size.c (alloc_object_size): Use alloc_size
        attribute, if available.

        * testsuite/gcc.dg/attr-alloc_size.c: New.


Co-Authored-By: Marcus Meissner <meissner@suse.de>

From-SVN: r125073
2007-05-25 21:18:15 +00:00
H.J. Lu fc6c9f75ef i386.c (__builtin_ia32_vec_ext_v2df): Mark it with MASK_SSE2.
gcc/

2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
	with MASK_SSE2.
	(__builtin_ia32_vec_ext_v2di): Likewise.
	(__builtin_ia32_vec_ext_v4si): Likewise.
	(__builtin_ia32_vec_ext_v8hi): Likewise.
	(__builtin_ia32_vec_ext_v16qi): Likewise.
	(__builtin_ia32_vec_set_v8hi): Likewise.

gcc/testsuite/

2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>

	* gcc.target/i386/sse2-check.h: New.
	* gcc.target/i386/sse2-vec-1.c: Likewise.
	* gcc.target/i386/sse2-vec-2.c: Likewise.
	* gcc.target/i386/sse2-vec-3.c: Likewise.
	* gcc.target/i386/sse2-vec-4.c: Likewise.
	* gcc.target/i386/sse2-vec-5.c: Likewise.
	* gcc.target/i386/sse2-vec-6.c: Likewise.

From-SVN: r125063
2007-05-25 07:33:27 -07:00
H.J. Lu 77315816df sse.md (*vec_extractv2di_1_sse2): Correct shift.
2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.

From-SVN: r125061
2007-05-25 05:27:27 -07:00
Richard Sandiford 25a6519845 arm-protos.h (arm_encode_call_attribute): Delete.
gcc/
	* config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
	(arm_is_longcall_p): Rename to...
	(arm_is_long_call_p): ...this.  Take a single tree argument and
	return a bool.
	* config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
	(CUMULATIVE_ARGS): Remove call_cookie.
	(SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
	(ENCODED_LONG_CALL_ATTR_P): Delete.
	(ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
	LONG_CALL_FLAG_CHAR cases.
	(ARM_DECLARE_FUNCTION_SIZE): Delete.
	* config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
	ARM_DECLARE_FUNCTION_SIZE.
	* config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
	(arm_function_arg): Return const0_rtx for VOIDmode arguments.
	(arm_encode_call_attribute, current_file_function_operand): Delete.
	(arm_function_in_section_p): New function.
	(arm_is_longcall_p): Rename to...
	(arm_is_long_call_p): ...this.  Take the target function as a single
	argument and return a bool.  Do not rely on call cookies.  Check
	whether the target symbol is in the same section as the current
	function, not just the same compilation unit.
	(arm_function_ok_for_sibcall): Use arm_is_long_call_p.
	(arm_encode_section_info): Don't encode a call type.
	* config/arm/arm.md (call, call_value): Update calls to
	arm_is_long(_)call_p.  Simplify logic.
	(*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
	Update calls to arm_is_long(_)call_p.

gcc/testsuite/
	* gcc.target/arm/long-calls-1.c: New test.
	* gcc.target/arm/long-calls-2.c: Likewise.
	* gcc.target/arm/long-calls-3.c: Likewise.
	* gcc.target/arm/long-calls-4.c: Likewise.

From-SVN: r125060
2007-05-25 11:36:06 +00:00
Richard Guenther 88efe45a92 re PR tree-optimization/31982 (Missed forw prop with indirect ref and addr. (and char types or sizeof(type) == 1))
2007-05-24  Richard Guenther  <rguenther@suse.de>
        Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-optimization/31982
	* tree-ssa-forwprop.c
	(forward_propagate_addr_into_variable_array_index): Handle arrays
	with element size one.

	* gcc.dg/tree-ssa/forwprop-2.c: New testcase.

Co-Authored-By: Andrew Pinski <andrew_pinski@playstation.sony.com>

From-SVN: r125058
2007-05-25 09:07:29 +00:00
Andrew Pinski 03fd30b180 spu.md (smulsi3_highpart): Unshare the rtl chain.
2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
        (umulsi3_highpart): Likewise.

From-SVN: r125055
2007-05-24 22:57:42 -07:00
Ian Lance Taylor 88d1c2ad47 re PR rtl-optimization/32069 (segfault in regclass() with -O0 -fsplit-wide-types)
PR rtl-optimization/32069
	* regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
	is NULL.

From-SVN: r125043
2007-05-24 22:12:31 +00:00
Mike Stump 0f17a91f46 darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil handling as well.
* config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
	handling as well.
	* config/darwin9.h (LINK_COMMAND_SPEC): Likewise.

From-SVN: r125042
2007-05-24 21:36:20 +00:00
Ollie Wild a702045a24 macro.c (_cpp_builtin_macro_text): Handle BT_COUNTER.
* macro.c (_cpp_builtin_macro_text): Handle BT_COUNTER.
	* pch.c (cpp_write_pch_deps): Save __COUNTER__ state.
	(cpp_write_pch_state): Save __COUNTER__ state.
	(cpp_valid_state): Check valid __COUNTER__ state.
	(cpp_read_state): Read new __COUNTER__ state.
	* include/cpplib.h (enum builtin_type): Add BT_COUNTER enumerator.
	* init.c (builtin_array): Add __COUNTER__/BT_COUNTER.
	* internal.h (struct cpp_reader): Add counter member.

	* gcc.dg/cpp/counter-1.c: New test.
	* gcc.dg/pch/counter-1.c: New test.
	* gcc.dg/pch/counter-1.hs: New file.
	* gcc.dg/pch/counter-2.c: New test.
	* gcc.dg/pch/counter-2.hs: New file.
	* gcc.dg/pch/counter-3.c: New test.
	* gcc.dg/pch/counter-3.hs: New file.

	* doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
	description.

From-SVN: r125041
2007-05-24 20:55:36 +00:00
Richard Sandiford 5da20cfe73 postreload-gcse.c (reg_changed_after_insn_p): New function.
gcc/
	* postreload-gcse.c (reg_changed_after_insn_p): New function.
	(oprs_unchanged_p): Use it to check all registers in a REG.
	(record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
	(reg_set_between_after_reload_p): Delete.
	(reg_used_between_after_reload_p): Likewise.
	(reg_set_or_used_since_bb_start): Likewise.
	(eliminate_partially_redundant_load): Use reg_changed_after_insn_p
	and reg_used_between_p instead of reg_set_or_used_since_bb_start.
	Use reg_set_between_p instead of reg_set_between_after_reload_p.
	* rtlanal.c (reg_set_p): Check whether REG overlaps
	regs_invalidated_by_call, rather than just checking the
	membership of REGNO (REG).

From-SVN: r125037
2007-05-24 19:19:31 +00:00
Uros Bizjak dc675301cb ChangeLog: Whitespace fixes.
* gcc/ChangeLog: Whitespace fixes.
	* gcc/testsuite/ChangeLog: Ditto

From-SVN: r125035
2007-05-24 19:14:15 +02:00
Zdenek Dvorak bbc8a8dc0d passes.texi: Document predictive commoning.
* doc/passes.texi: Document predictive commoning.
	* doc/invoke.texi (-fpredictive-commoning): Document.
	* opts.c (decode_options): Enable flag_predictive_commoning on -O3.
	* tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
	adding indices to the generated name.
	(schedule_sm): Pass 0 to get_lsm_tmp_name.
	* tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
	* tree-pretty-print.c (op_symbol_1): Renamed to ...
	(op_symbol_code): ... and exported.
	(dump_omp_clause, op_symbol): Use op_symbol_code
	instead of op_symbol_1.
	* tree-pass.h (pass_predcom): Declare.
	* timevar.def (TV_PREDCOM): New timevar.
	* tree-ssa-loop.c (run_tree_predictive_commoning,
	gate_tree_predictive_commoning, pass_predcom): New.
	* tree-data-ref.c (find_data_references_in_loop): Find the
	references in dominance order.
	(canonicalize_base_object_address): Ensure that the result has
	pointer type.
	(dr_analyze_innermost): Export.
	(create_data_ref): Code to fail for references with invariant
	address moved ...
	(find_data_references_in_stmt): ... here.
	* tree-data-ref.h (dr_analyze_innermost): Declare.
	* tree-affine.c: Include tree-gimple.h and hashtab.h.
	(aff_combination_find_elt, name_expansion_hash,
	name_expansion_eq, tree_to_aff_combination_expand,
	double_int_constant_multiple_p, aff_combination_constant_multiple_p):
	New functions.
	* tree-affine.h (aff_combination_constant_multiple_p,
	tree_to_aff_combination_expand): Declare.
	* tree-predcom.c: New file.
	* common.opt (fpredictive-commoning): New option.
	* tree-flow.h (op_symbol_code, tree_predictive_commoning,
	stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
	* Makefile.in (tree-predcom.o): Add.
	(tree-affine.o): Add TREE_GIMPLE_H dependency.
	* passes.c (init_optimization_passes):  Add dceloop after
	copy propagation in loop optimizer.  Add predictive commoning
	to loop optimizer passes.

	* gcc.dg/tree-ssa/predcom-1.c: New test.
	* gcc.dg/tree-ssa/predcom-2.c: New test.
	* gcc.dg/tree-ssa/predcom-3.c: New test.
	* gcc.dg/tree-ssa/predcom-4.c: New test.
	* gcc.dg/tree-ssa/predcom-5.c: New test.
	* gcc.dg/vect/dump-tree-dceloop-pr26359.c: Test dceloop2 dumps.

From-SVN: r125030
2007-05-24 16:09:26 +00:00
Jan Hubicka 956741d54f Fotgotten changelog entry:
* gengenrtl.c (gendecl, gendef): Output the gens annotated for
	statistics.
	(genheader): Include statistics.h.

From-SVN: r125029
2007-05-24 15:47:07 +00:00
H.J. Lu cb8b507b65 target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct default hook.
2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>

	* target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
	default hook.

From-SVN: r125027
2007-05-24 07:35:00 -07:00
Jan Hubicka 9dbe7947ab invoke.texi (-fdump-unnumbered): Update docs when line number notes are gone.
* doc/invoke.texi (-fdump-unnumbered): Update docs when line number
	notes are gone.
	* print-rtl.c (flag_dump_unnumbered): Update comments.
	(print_rtl): Fix my previous change.
	* emit-rtl.c (emit_note_before, emit_note_after): Clear out note
	specific data.

From-SVN: r125026
2007-05-24 14:21:14 +00:00
Zdenek Dvorak 561e8a90fd re PR middle-end/32018 (ICE on optimization)
PR middle-end/32018
	* tree-ssa-threadupdate.c (thread_through_loop_header): Use
	set_loop_copy.
	(thread_through_all_blocks): Call initialize_original_copy_tables
	and free_original_copy_tables.
	* cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
	Use set_loop_copy.
	* tree-cfg.c (tree_duplicate_sese_region): Ditto.
	* cfghooks.c (duplicate_block): Use get_loop_copy.
	* cfg.c: Include cfgloop.h.
	(loop_copy): New hash table.
	(initialize_original_copy_tables): Initialize loop_copy table.
	(free_original_copy_tables): Free loop_copy table.
	(copy_original_table_clear, copy_original_table_set,
	set_loop_copy, get_loop_copy): New functions.
	(set_bb_original, set_bb_copy): Use copy_original_table_set.
	* cfgloop.h (struct loop): Remove copy field.
	* Makefile.in (cfg.o): Add CFGLOOP_H dependency.
	* basic-block.h (set_loop_copy, get_loop_copy): Declare.

From-SVN: r125024
2007-05-24 14:02:12 +00:00
H.J. Lu 66da42bc85 i386.c (ix86_handle_option): Handle SSE4.1 for -msse/-msse2/-msse3.
2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
	-msse/-msse2/-msse3.

From-SVN: r125023
2007-05-24 06:31:05 -07:00
H.J. Lu 5691b85a26 i386.c (ix86_init_mmx_sse_builtins): Mark __builtin_ia32_vec_set_v2di with MASK_64BIT.
2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
	__builtin_ia32_vec_set_v2di with MASK_64BIT.

From-SVN: r125022
2007-05-24 06:28:49 -07:00
Danny Smith 5234b8f573 re PR target/27067 (Compile errors with multiple inheritance where the stdcall attribute is applied to virtual functions.)
ChangeLog
	
	PR target/27067
	* doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
	* targhooks.h (default_mangle_decl_assembler_name): Declare
	default hook.
	* targhooks.c (default_mangle_decl_assembler_name): Define
	default hook.
	* target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
	default hook.
	* target.h (struct gcc_target): Add mangle_decl_assembler_name field.
	* langhooks.c (lhd_set_decl_assembler_name): Call
	targetm.mangle_decl_assembler_name for names with global scope.

	* config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
	default.
	(ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
	* config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
	Declare.
	* config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
	New. Factored out of i386_pe_encode_section_info.
	(gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
	Move check for prior decoration of stdcall
	symbols to i386_pe_encode_section_info.
	(i386_pe_encode_section_info): Adjust call to
	gen_stdcall_or_fastcall_suffix.  Use
	i386_pe_maybe_mangle_decl_assembler_name, if needed.
	(i386_pe_mangle_decl_assembler_name): New. Wrap
	i386_pe_maybe_mangle_decl_assembler_name.


cp/ChangeLog

        * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.

From-SVN: r125020
2007-05-24 10:11:49 +00:00
Rafael Avila de Espindola 1e2041330f c-common.c (c_common_signed_or_unsigned_type): Delay the check for INTEGRAL_TYPE_P and TYPE_UNSIGNED.
* c-common.c (c_common_signed_or_unsigned_type): Delay the check for
       INTEGRAL_TYPE_P and TYPE_UNSIGNED.
       * langhooks.c (get_signed_or_unsigned_type): Don't check for
       INTEGRAL_TYPE_P or TYPE_UNSIGNED.
       (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
       TYPE_UNSIGNED.

From-SVN: r125012
2007-05-24 04:38:27 +00:00
Sandra Loosemore a38e0142a8 Fix up MIPS16 hard float and add support for complex.
2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
	    Nigel Stephens  <nigel@mips.com>
	    Richard Sandiford  <richard@codesourcery.com>

	gcc/
	Fix up MIPS16 hard float and add support for complex.

	* config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
	(TARGET_SOFT_FLOAT_ABI): New.
	(TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
	__mips_soft_float to reflect the ABI in use, not whether the
	FPU is directly accessible (e.g., in MIPS16 mode).
	(UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
	(UNITS_PER_FPVALUE): Likewise.

	* config/mips/mips.c (mips_expand_call): Remove redundant
	TARGET_MIPS16 check.
	(mips_arg_regno): New.
	(function_arg_advance): When setting bits in cum->fp_code for
	MIPS16, don't subtract 1 from cum->arg_number, since it is now
	zero-based.
	(function_arg): Use mips_arg_regno.
	(mips_return_mode_in_fpr_p): New.
	(mips16_call_stub_mode_suffix): New.
	(mips16_cfun_returns_in_fpr_p): New.
	(mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
	(mips_output_function_prologue): Test mips16_hard_float, not
	!TARGET_SOFT_FLOAT, to decide when a function stub is required.
	(mips_expand_epilogue): Call MIPS16 helper routines to copy
	return value into a floating-point register.
	(mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
	(mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
	(mips16_fp_args): Handle MIPS32r2 ISA which supports
	TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
	word of double arguments from or to the high bits of 64-bit
	floating point registers.
	(build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
	(mips16_fpret_double): New helper function.
	(build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
	support for complex modes.  Fill in DECL_RESULT for stubdecl.
	(mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.

	* config/mips/mips16.S 
	(RET, ARG1, ARG2): New.
	(MERGE_GPRf, MERGE_GPRt): New.
	(DELAYt, DELAYf): New.
	(MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
	(MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
	(MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
	(MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
	(SFOP): Renamed to...
	(OPSF3): This, and macro-ified.  Updated all uses.
	(SFOP2): Renamed to...
	(OPSF2): This, and macro-ified.  Updated all uses.
	(SFCMP): Renamed to...
	(CMPSF): This, and macro-ified.  Updated all uses.
	(SFREVCMP): Renamed to...
	(REVCMPSF): This, and macro-ified.  Updated all uses.
	(__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
	(LDDBL1, LDDBL2, RETDBL): Deleted.
	(DFOP): Renamed to...
	(OPDF3): This, and macro-ified.  Updated all uses.
	(DFOP2): Renamed to...
	(OPDF2): This, and macro-ified.  Updated all uses.
	(__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
	(DFCMP): Renamed to...
	(CMPDF): This, and macro-ified.  Updated all uses.
	(DFREVCMP): Renamed to...
	(REVCMPDF): This, and macro-ified.  Updated all uses.
	(__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
	(RET_FUNCTION): New.
	(__mips16_ret_sf, __mips16_ret_df): Macro-ified.
	(__mips16_ret_sc, __mips16_ret_dc): New.
	(STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
	STUB_ARGS_6, STUB_ARGS_10): New.
	(CALL_STUB_NO_RET): New.
	(__mips16_call_stub_1): Macro-ified.
	(__mips16_call_stub_5): Macro-ified.
	(__mips16_call_stub_2): Macro-ified.
	(__mips16_call_stub_6): Macro-ified.
	(__mips16_call_stub_9): Macro-ified.
	(__mips16_call_stub_10): Macro-ified.
	(CALL_STUB_RET): New.
	(__mips16_call_stub_sf_0): Macro-ified.
	(__mips16_call_stub_sf_1): Macro-ified.
	(__mips16_call_stub_sf_5): Macro-ified.
	(__mips16_call_stub_sf_2): Macro-ified.
	(__mips16_call_stub_sf_6): Macro-ified.
	(__mips16_call_stub_sf_9): Macro-ified.
	(__mips16_call_stub_sf_10): Macro-ified.
	(__mips16_call_stub_df_0): Macro-ified.
	(__mips16_call_stub_df_1): Macro-ified.
	(__mips16_call_stub_df_5): Macro-ified.
	(__mips16_call_stub_df_2): Macro-ified.
	(__mips16_call_stub_df_6): Macro-ified.
	(__mips16_call_stub_df_9): Macro-ified.
	(__mips16_call_stub_df_10): Macro-ified.
	(__mips16_call_stub_sc_0): New.
	(__mips16_call_stub_sc_1): New.
	(__mips16_call_stub_sc_5): New.
	(__mips16_call_stub_sc_2): New.
	(__mips16_call_stub_sc_6): New.
	(__mips16_call_stub_sc_9): New.
	(__mips16_call_stub_sc_10): New.
	(__mips16_call_stub_dc_0): New.
	(__mips16_call_stub_dc_1): New.
	(__mips16_call_stub_dc_5): New.
	(__mips16_call_stub_dc_2): New.
	(__mips16_call_stub_dc_6): New.
	(__mips16_call_stub_dc_9): New.
	(__mips16_call_stub_dc_10): New.
	
	* config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
	* config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
	* config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.

	gcc/testsuite/
	* gcc.target/mips/inter/mips16_stubs_1_main.c: New.
	* gcc.target/mips/inter/mips16_stubs_1_x.c: New.
	* gcc.target/mips/inter/mips16_stubs_1_y.c: New.
	* gcc.target/mips/inter/mips16-inter.exp: New.


Co-Authored-By: Nigel Stephens <nigel@mips.com>
Co-Authored-By: Richard Sandiford <richard@codesourcery.com>

From-SVN: r124999
2007-05-23 16:03:00 -04:00
Ian Lance Taylor 70f57af18f invoke.texi (Invoking GCC): Document that the order of the -l option matters.
* doc/invoke.texi (Invoking GCC): Document that the order of the
	-l option matters.

From-SVN: r124995
2007-05-23 15:55:34 +00:00
Chen Liqin 6d0ceb7638 re PR target/30987 (Problem while compiling gcc for score)
2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>

	PR target/30987
	* config/score/misc.md (bitclr_c, bitset_c, bittgl_c): remove.
	* config/score/predicate.md (const_pow2, const_npow2): remove.
	* config/score/score.h (ASM_OUTPUT_EXTERNAL): add ASM_OUTPUT_EXTERNAL undef.
	PR target/30474
	* config/score/score.c (score_print_operand): makes sure that only lower 
        bits are used.

From-SVN: r124983
2007-05-23 06:09:20 +00:00
Ian Lance Taylor b80cca7b47 tree-vrp.c (avoid_overflow_infinity): New static function, broken out of set_value_range_to_value.
* tree-vrp.c (avoid_overflow_infinity): New static function,
	broken out of set_value_range_to_value.
	(set_value_range_to_value): Call avoid_overflow_infinity.
	(extract_range_from_assert): Likewise.

From-SVN: r124981
2007-05-23 05:53:21 +00:00
Andrew Pinski 1809a5208f re PR middle-end/31095 (ICE in expand_expr_real_1, at expr.c:8786)
2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/31095
         * builtins.c (expand_builtin_memmove_args): Strip nops that don't
        change the type before looking for a COMPOUND_EXPR.

2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/31095
        * gcc.c-torture/compile/bcopy-1.c: New testcase.

From-SVN: r124975
2007-05-22 18:17:14 -07:00
Ian Lance Taylor 1570a70441 lower-subreg.c (decompose_multiword_subregs): If we change an insn, call remove_retval_note on it.
* lower-subreg.c (decompose_multiword_subregs): If we change an
	insn, call remove_retval_note on it.

From-SVN: r124969
2007-05-22 23:42:17 +00:00
Richard Sandiford 09e18274fd regs.h (end_hard_regno): New function.
gcc/
	* regs.h (end_hard_regno): New function.
	(END_HARD_REGNO, END_REGNO): New macros.
	(add_to_hard_reg_set): New function.
	(remove_from_hard_reg_set): Likewise.
	(in_hard_reg_set_p): Likewise.
	(overlaps_hard_reg_set_p): Likewise.
	* bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
	(note_btr_set): Use END_HARD_REGNO.
	* caller-save.c (setup_save_areas): Use end_hard_regno.
	(mark_set_regs): Use END_HARD_REGNO.
	(add_stored_regs): Use end_hard_regno.
	(mark_referenced_regs): Use add_to_hard_reg_set.
	* combine.c (update_table_tick): Use END_REGNO.
	(record_value_for_reg): Likewise.
	(record_dead_and_set_regs): Likewise.
	(get_last_value_validate): Likewise.
	(use_crosses_set_p): Likewise.
	(reg_dead_at_p_1): Likewise.
	(reg_dead_at_p): Likewise.
	(mark_used_regs_combine): Use add_to_hard_reg_set.
	(move_deaths): Use END_HARD_REGNO.
	(reg_bitfield_target_p): Use end_hard_regno.
	(distribute_notes): Use END_HARD_REGNO.
	* cse.c (mention_regs): Use END_REGNO.
	(insert): Use add_to_hard_reg_set.
	(invalidate): Use END_HARD_REGNO.
	(invalidate_for_call): Likewise.
	(exp_equiv_p): Use END_REGNO.
	(cse_insn): Likewise.
	* cselib.c (cselib_invalidate_regno): Use end_hard_regno.
	* df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
	* df-scan.c (df_ref_record): Use END_HARD_REGNO.
	* function.c (keep_stack_depressed): Use end_hard_regno.
	* global.c (global_alloc): Use end_hard_regno.
	(global_conflicts): Use add_to_hard_reg_set instead of
	mark_reg_live_nc.
	(find_reg): Likewise.
	(mark_reg_store): Likewise.
	(mark_reg_conflicts): Likewise.
	(mark_reg_death): Use remove_from_hard_reg_set.
	(mark_reg_live_nc): Delete.
	(set_preference): Use end_hard_regno.
	* local-alloc.c (mark_life): Use add_to_hard_reg_set and
	remove_from_hard_reg_set.
	(post_mark_life): Use add_to_hard_reg_set.
	* mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
	(reg_becomes_live): Use add_to_hard_reg_set.
	* recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
	(peep2_find_free_register): Use add_to_hard_reg_set.
	* reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
	* regclass.c (record_reg_classes): Use in_hard_reg_set_p.
	* regrename.c (note_sets): Use add_to_hard_reg_set.
	(clear_dead_regs): Use remove_from_hard_reg_set.
	(regrename_optimize): Use add_to_hard_reg_set.
	(find_oldest_value_reg): Use in_hard_reg_set_p.
	* reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
	(hard_reg_set_here_p): Use end_hard_regno.
	(decompose): Likewise.
	(reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
	(find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
	* reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
	(mark_home_live): Use end_hard_regno.
	(spill_hard_reg): Likewise.
	(clear_reload_reg_in_use): Likewise.
	* reorg.c (delete_prior_computation): Use END_REGNO.
	* resource.c (update_live_status): Use END_HARD_REGNO.
	(mark_referenced_resources): Use add_to_hard_reg_set.
	(mark_set_resources): Likewise.
	(mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
	* rtlanal.c (refers_to_regno_p): Use END_REGNO.
	(reg_overlap_mentioned_p): Likewise.
	(dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
	(covers_regno_no_parallel_p): Use END_REGNO.
	(find_regno_note): Likewise.
	(find_reg_fusage): Use END_HARD_REGNO.
	* stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
	* var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.

From-SVN: r124961
2007-05-22 20:52:39 +00:00
Richard Sandiford 408bed3c38 mode-switching.c (reg_dies): Change type of second argument to "HARD_REG_SET *".
gcc/
	* mode-switching.c (reg_dies): Change type of second argument to
	"HARD_REG_SET *".
	(optimize_mode_switching): Update accordingly.

From-SVN: r124955
2007-05-22 19:41:10 +00:00
Richard Sandiford 56b138aed2 hard-reg-set.h (GO_IF_HARD_REG_SUBSET, [...]): Delete in favor of...
gcc/
	* hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
	in favor of...
	(hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
	(hard_reg_set_empty_p): ...these new functions.
	* bt-load.c (choose_btr): Use hard_reg_subset_p instead of
	GO_IF_HARD_REG_SUBSET.
	* cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
	instead of GO_IF_HARD_REG_EQUAL.
	* df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
	instead of GO_IF_HARD_REG_EQUAL.
	* global.c (find_reg): Use hard_reg_set_empty_p instead of
	GO_IF_HARD_REG_SUBSET.
	(modify_reg_pav): Use hard_reg_set_empty_p instead of
	GO_IF_HARD_REG_EQUAL.
	* local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
	of GO_IF_HARD_REG_SUBSET.
	* reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
	instead of GO_IF_HARD_REG_EQUAL.
	* regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
	hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
	(reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
	of GO_IF_HARD_REG_SUBSET,
	* reload1.c (finish_spills): Use hard_reg_subset_p instead of
	GO_IF_HARD_REG_SUBSET.
	* struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
	instead of GO_IF_HARD_REG_EQUAL.
	* config/sh/sh.c (push_regs, calc_live_regs): Use
	hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
	(hard_regs_intersect_p): Delete.

From-SVN: r124954
2007-05-22 19:33:37 +00:00