Commit Graph

32295 Commits

Author SHA1 Message Date
Uros Bizjak 8115817bf2 re PR tree-optimization/24659 (Conversions are not vectorized)
2007-04-22  Uros Bizjak  <ubizjak@gmail.com>

        PR tree-optimization/24659
        * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
        OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
        (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
        * genopinit.c (optabs): Rename vec_pack_mod_optab
        to vec_pack_trunc_optab.
        * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
        early for scalar floating point operands for NOP_EXPR.
        (vectorizable_type_promotion): Ditto.
        * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
        vec_pack_trunc_optab.
        (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.

        * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
        * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
        Rename from VEC_PACK_MOD_EXPR.
        (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
        * expr.c (expand_expr_real_1): Ditto.
        * tree-inline.c (estimate_num_insns_1): Ditto.
        * tree-vect-generic.c (expand_vector_operations_1): Ditto.

        * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
        (vec_unpacks_lo_v4sf): Ditto.
        (vec_pack_trunc_v2df): Ditto.
        (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
        (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
        (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
    
        * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
        vec_pack_mod_v8hi.
        (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.

        * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
        Rename from VEC_PACK_MOD_EXPR.  This expression also represent
        packing of floating point operands.
        [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
        represent unpacking of floating point operands.
        * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
        [vec_unpacks_hi]: Ditto.
        [vec_unpacks_lo]: Ditto.

testsuite/ChangeLog:

2007-04-22  Uros Bizjak  <ubizjak@gmail.com>

    PR tree-optimization/24659
    * gcc.dg/vect/vect-float-extend-1.c: New test.
    * gcc.dg/vect/vect-float-truncate-1.c: New test.

From-SVN: r124045
2007-04-22 20:45:06 +02:00
Jan Hubicka 395a40e0e2 misc.c (gnat_expand_body): Don't call target for destructors, avoid redundant check on syntax errors.
* ada/misc.c (gnat_expand_body): Don't call target for destructors,
	avoid redundant check on syntax errors.

	* final.c (rest_of_handle_final): Call
	targetm.asm_out.constructor/targetm.asm_out.destructor
	* cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
	proper priority via decl_*_priority_insert.
	* c-common.c (c_expand_body): Likewise.

From-SVN: r124044
2007-04-22 15:33:32 +00:00
Zdenek Dvorak b7716a8e90 Fix whitespace.
From-SVN: r124043
2007-04-22 12:02:29 +00:00
Richard Guenther e0a607311c re PR tree-optimization/29789 (Missed invariant out of the loop with conditionals and shifts)
2007-04-22  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/29789
	* tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
	(rewrite_reciprocal): New helper split out from
	determine_invariantness_stmt.
	(rewrite_bittest): Likewise.
	(determine_invariantness_stmt): Rewrite (A >> B) & 1 to
	A & (1 << B) if (1 << B) is loop invariant but (A >> B)
	is not.

	* gcc.dg/tree-ssa/ssa-lim-1.c: New testcase.
	* gcc.dg/tree-ssa/ssa-lim-2.c: Likewise.

From-SVN: r124042
2007-04-22 11:26:49 +00:00
Revital Eres 76fd2caa7d Extend MVE patterns
From-SVN: r124037
2007-04-22 08:46:58 +00:00
Zdenek Dvorak f06b0a10f9 predict.c: Include pointer-set.h.
* predict.c: Include pointer-set.h.
	(bb_predictions): New variable.
	(tree_predicted_by_p, tree_predict_edge,
	remove_predictions_associated_with_edge): Use bb_predictions map
	instead of bb->predictions.
	(clear_bb_predictions, assert_is_empty): New functions.
	(combine_predictions_for_bb): Use bb_predictions map.  Call
	clear_bb_predictions.
	(tree_estimate_probability): Create and free bb_predictions map.
	* Makefile.in (predict.o): Add pointer-set.h dependency.
	* basic-block.h (struct basic_block_def): Remove predictions
	field.
	* cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.

From-SVN: r124032
2007-04-22 00:51:38 +00:00
Kaz Kojima e919dfe284 re PR target/31480 (ICE with -O -fomit-frame-pointer on SH)
PR target/31480
	* config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
	is null.

From-SVN: r124031
2007-04-22 00:18:02 +00:00
Andrew Pinski 7be97ac71e timevar.c (timevar_print): Change reference of --disable-checking to --enable-checking=release.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * timevar.c (timevar_print): Change reference of --disable-checking to
        --enable-checking=release.  Also warn if assert checking is disabled.

From-SVN: r124025
2007-04-21 14:55:33 -07:00
Andrew Pinski c8a0a219fd re PR c/30265 (Compound literal can cause invalid gimple)
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR C/30265
        * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
        decl as addressable if the compound literal was marked as
        addressable.
        Mark the decl as a gimple register if it is a complex or
        vector decl and does not live in memory.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR C/30265
        * gcc.c-torture/compile/compound-literal-2.c: New testcase.
        * gcc.c-torture/compile/compound-literal-3.c: New testcase.

From-SVN: r124024
2007-04-21 14:47:35 -07:00
Andrew Pinski 3d95caa4af tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
        (GENERIC_NEXT): New function macro.
        (PHI_CHAIN): Use phi_node's new chain variable.
        (tree_phi_node): Change tree_common to tree_base
        and add the chain field.
        * tree-phinodes.c (make_phi_node): Don't set
        TREE_TYPE on the new node.
        * c-decl.c (lang_tree_node): Use GENERIC_NEXT
        instead of checking GIMPLE_TUPLE_P in chain_next.
        * tree-vect-transform.c
        (get_initial_def_for_induction): Look at
        PHI_RESULT_TREE for the type of the phi node.
        (update_vuses_to_preheader): Use PHI_CHAIN
        instead of TREE_CHAIN on the phi node.
        * tree-ssa-structalias.c (compute_points_to_sets):
        Likewise.
        (ipa_pta_execute): Likewise.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
        instead of checking GIMPLE_STMT_P in chain_next.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * ada-tree.h (lang_tree_node): Use GENERIC_NEXT
        instead of checking GIMPLE_STMT_P in chain_next.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * f95-lang.c (lang_tree_node): Use GENERIC_NEXT
        instead of checking GIMPLE_STMT_P in chain_next.
2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * java-tree.h (lang_tree_node): Use GENERIC_NEXT
        instead of checking GIMPLE_STMT_P in chain_next.

From-SVN: r124021
2007-04-21 13:40:31 -07:00
Richard Guenther 84ece8efd2 re PR tree-optimization/31136 (FRE ignores bit-field truncation (C and C++ front-end don't produce bit-field truncation)
2007-04-21  Richard Guenther  <rguenther@suse.de>

	PR middle-end/31136
	* fold-const.c (fold_unary): Call fold_convert_const on the
	original tree.

	* gcc.c-torture/execute/pr31136.c: New testcase.

From-SVN: r124020
2007-04-21 17:47:13 +00:00
Alexandre Oliva 1071bcbdf8 gcse.c (store_killed_in_insn): Handle PARALLELs.
gcc/ChangeLog:
* gcse.c (store_killed_in_insn): Handle PARALLELs.
(store_killed_in_pat): New.
gcc/testsuite/ChangeLog:
* gcc.target/i386/movsi-sm-1.c: New.

From-SVN: r124015
2007-04-21 06:48:37 +00:00
Richard Henderson c7a2139bef re PR target/31628 (stdcall function is miscompiled)
PR target/31628
        * config/i386/i386.c (type_has_variadic_args_p): Look for any
        TREE_LIST with a void_type_node value, not void_list_node exactly.

From-SVN: r124014
2007-04-20 16:53:37 -07:00
Douglas Gregor fda0adca8d standards.texi: Re-arrange into language-specific subsections.
2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>

	* doc/standards.texi: Re-arrange into language-specific
	subsections. Add a C++ section, documenting which standards we
	support.

From-SVN: r124013
2007-04-20 23:45:25 +00:00
Zdenek Dvorak 285463b5a2 tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
* tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
	* tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.

From-SVN: r124012
2007-04-20 23:27:51 +00:00
Daniel Jacobowitz 860532dff2 sysv4.h (STARTFILE_DEFAULT_SPEC): Include ecrti.o and crtbegin.o.
* config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
	ecrti.o and crtbegin.o.
	(LIB_DEFAULT_SPEC): Include -lc.
	(ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.

From-SVN: r124006
2007-04-20 21:56:53 +00:00
Richard Henderson 60e9352519 re PR target/28623 (ICE in extract_insn, at recog.c:2077 (nrecognizable insn) [alpha])
PR target/28623
        * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
        argument; update all callers.
        (get_unaligned_offset): New.
        * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
        get_unaligned_address, just pass on the address directly.
        (unaligned_extendqidi): Use gen_lowpart instead of open-coding
        the subreg in the helper patterns.
        (unaligned_extendqidi_le): Use get_unaligned_offset.
        (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
        (unaligned_extendhidi_be): Likewise.
        (unaligned_extendhidi): Tidy.
        * config/alpha/alpha-protos.h: Update.

From-SVN: r124002
2007-04-20 12:35:55 -07:00
Richard Henderson f326fd7a03 alpha.h (CPP_SPEC, [...]): Remove.
* config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
        (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
        * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
        * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
        * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
        (CPP_SPEC): Don't include %(cpp_subtarget).
        * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
        (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
        * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.

From-SVN: r123999
2007-04-20 12:05:24 -07:00
Jakub Jelinek a5b9afd1a1 i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED for __builtin_ia32_cmpordss.
* config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
	for __builtin_ia32_cmpordss.

	* gcc.target/i386/ordcmp-1.c: New test.
	* gcc.target/i386/unordcmp-1.c: New test.

From-SVN: r123989
2007-04-20 13:42:21 +02:00
Jakub Jelinek 86122f7282 re PR tree-optimization/31632 (ICE in compare_values)
PR tree-optimization/31632
	* fold-const.c (fold_binary): Use op0 and op1 instead of arg0
	and arg1 for optimizations of comparison against min/max values.
	Fold arg0 to arg1's type for optimizations of comparison against
	min+1 and max-1 values.

	* gcc.c-torture/compile/20070419-1.c: New test.

From-SVN: r123988
2007-04-20 13:40:47 +02:00
Bernd Schmidt c1673e1b5a reload.c (combine_reloads): When trying to use a dying register...
* reload.c (combine_reloads): When trying to use a dying register,
	check whether it's uninitialized and don't use if so.

From-SVN: r123986
2007-04-20 00:08:46 +00:00
Brooks Moses db136335ce fold-const.c: Remove prototypes for native_encode_expr and native_interpret_expr.
* fold-const.c: Remove prototypes for native_encode_expr and
native_interpret_expr.
(native_encode_expr): Make non-static.
(native_interpret_expr): Likewise.
* tree.h: Add prototypes for the above.

From-SVN: r123980
2007-04-19 14:52:58 -07:00
Joseph Myers b6fda43f4e spe.md (*frob_tf_ti, [...]): Add length attributes.
gcc/
	* config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
	*mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
	*mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
	spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
	tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
	Add length attributes.

From-SVN: r123979
2007-04-19 22:00:44 +01:00
Janis Johnson 93167356eb float.h: Check that __STDC_WANT_DEC_FP__ is defined, not that it is 1.
* ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
	not that it is 1.

From-SVN: r123974
2007-04-19 16:58:42 +00:00
Janis Johnson 589dd99500 c-cppbuiltin.c (c_cpp_builtins): Remove definition of __STDC_WANT_DEC_FP__.
* c-cppbuiltin.c (c_cpp_builtins): Remove definition of
	__STDC_WANT_DEC_FP__.

From-SVN: r123973
2007-04-19 16:57:23 +00:00
Joseph Myers f7cc5390ec configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu* for long double compatibility.
gcc:
	* configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
	for long double compatibility.
	* configure: Regenerate.

libstdc++-v3:
	* configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
	for long double compatibility.
	* configure: Regenerate.
	* src/complex_io.cc, src/istream-inst.cc, src/ostream-inst.cc:
	Condition some _GLIBCXX_LDBL_COMPAT calls on _GLIBCXX_USE_WCHAR_T.

From-SVN: r123972
2007-04-19 13:11:07 +01:00
Eric Botcazou d47a8b8331 re PR rtl-optimization/29841 (ICE with scheduling and __builtin_trap)
PR rtl-optimization/29841
	* cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
	trap instructions.
	* sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
	that may cause control flow transfer from being moved.

From-SVN: r123970
2007-04-19 11:19:16 +00:00
Jan Hubicka 8d5d586529 fold-const.c (div_if_zero_remainder): Do signed divide for pointer types.
* fold-const.c (div_if_zero_remainder): Do signed divide for pointer
	types.

From-SVN: r123966
2007-04-19 01:35:25 +00:00
Eric Christopher 316fbf1945 darwin.md (load_macho_picbase): Use link register only.
2007-04-18  Eric Christopher  <echristo@apple.com>

        * config/rs6000/darwin.md (load_macho_picbase): Use link register
        only. Update operands.
        * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
        * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
        link register to pic register.

From-SVN: r123960
2007-04-18 22:27:51 +00:00
Philippe De Muyter 5083912dfa m68k.c (output_btst): Use `movew to ccr' when useful.
2007-04-18  Philippe De Muyter  <phdm@macqel.be>

	* config/m68k/m68k.c (output_btst): Use `movew to ccr' when useful.

From-SVN: r123959
2007-04-18 20:51:42 +00:00
Dirk Mueller 05fb69e4c9 re PR tree-optimization/31227 (-Warray-bounds doesn't play together with loop optimizations)
2007-04-18  Dirk Mueller  <dmueller@suse.de>

       PR diagnostic/31227
       * tree-vrp.c (search_for_addr_array): New.
       (check_array_bounds): Suppress warning about
       address taken of array refs if its not de-referenced.

       * gcc.dg/Warray-bounds-3.c: New.

From-SVN: r123958
2007-04-18 20:09:21 +00:00
Dorit Nuzman 28e44f4fe6 tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
* tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
        * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.

        * tree-vectorizer.h (NITERS_KNOWN_P): New.
        * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
        instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.

        * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
        dump print.
        (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
        print message.
        (vect_analyze_scalar_cycles): Fix indentation.
        (vect_enhance_data_refs_alignment): Fix check in case of peeling.
        (vect_mark_relevant): Include phis in relevance analysis.

        * tree-vect-transform.c (vect_transform_loop): Add an assert.

From-SVN: r123955
2007-04-18 17:43:27 +00:00
Anatoly Sokolov 3639b3fac4 avr.c (ptrreg_to_str): Replace error() with output_operand_lossage().
* config/avr/avr.c (ptrreg_to_str): Replace error() with
	output_operand_lossage().

From-SVN: r123949
2007-04-18 20:21:57 +04:00
Dorit Nuzman f7c1d73d8d tree-vect-transform.c (get_initial_def_for_reduction): Clean away the unused code for reduction without adjust-in-epilog to simplify...
* tree-vect-transform.c (get_initial_def_for_reduction): Clean away
        the unused code for reduction without adjust-in-epilog to simplify the
        function.

From-SVN: r123948
2007-04-18 11:53:37 +00:00
Wolfgang Gellerich 638e37c250 s390.h (S390_TDC_POSITIVE_ZERO): New constant.
2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>

	* config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
	(S390_TDC_NEGATIVE_ZERO): New constant.
	(S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
	(S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
	(S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
	(S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
	(S390_TDC_POSITIVE_INFINITY): New constant.
	(S390_TDC_NEGATIVE_INFINITY): New constant.
	(S390_TDC_POSITIVE_QUIET_NAN): New constant.
	(S390_TDC_NEGATIVE_QUIET_NAN): New constant.
	(S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
	(S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
	(S390_TDC_INFINITY): New constant.
	* config/s390/s390.c (s390_canonicalize_comparison): Renamed
	UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
	optimization for UNSPEC_CCZ_TO_INT.
	* config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
	("*ccz_to_int"): New insn.
	("isinf<mode>2"): New insn.
	(UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
	(UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
	(UNSPEC_CCZ_TO_INT): New constant.

From-SVN: r123947
2007-04-18 11:51:06 +00:00
Richard Guenther 3b48ccbc89 re PR tree-optimization/19431 (missed optimization with ifs and deferencing)
2007-04-18  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/19431
	PR tree-optimization/21463
	* tree-pass.h (pass_phiprop): Declare.
	* passes.c (init_optimization_passes): New phiprop pass.
	* tree-ssa-forwprop.c (struct phiprop_d): New structure.
	(phivn_valid_p): New helper function.
	(phiprop_insert_phi): Likewise.
	(propagate_with_phi): Likewise.
	(tree_ssa_phiprop): New propagator propagating loads
	through phi nodes if profitable.

	* gcc.c-torture/execute/20070212-1.c: New testcase.
	* gcc.c-torture/execute/20070212-2.c: Likewise.
	* gcc.c-torture/execute/20070212-3.c: Likewise.
	* gcc.dg/tree-ssa/pr19431.c: Likewise.
	* gcc.dg/tree-ssa/pr21463.c: Likewise.
	* g++.dg/tree-ssa/pr21463.C: Likewise.
	* g++.dg/tree-ssa/pr30738.C: Likewise.

From-SVN: r123946
2007-04-18 11:45:09 +00:00
Dorit Nuzman 8cf81ddffd tree-vect-analyze.c (process_use): New function.
* tree-vect-analyze.c (process_use): New function.
        (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
        Check phis in all bbs.
        * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
        assert.

From-SVN: r123943
2007-04-18 07:55:34 +00:00
Bernd Schmidt 7c11b28c57 reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way we use REG_EQUAL.
* reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
	we use REG_EQUAL.

From-SVN: r123932
2007-04-17 22:35:47 +00:00
Anatoly Sokolov 5594a6c8c0 re PR target/30483 (Internal compiler error with inline volatile assembly on AVR)
PR target/30483
	* config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
	error().

From-SVN: r123926
2007-04-18 00:08:46 +04:00
H.J. Lu ce217d7583 sse.md (sse_vmaddv4sf3): Use register_operand on "0".
2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
	on "0".
	(sse_vmmulv4sf3): Likewise.
	(sse2_vmaddv2df3): Likewise.
	(sse2_vmmulv2df3): Likewise.

From-SVN: r123920
2007-04-17 10:30:40 -07:00
Zdenek Dvorak a154b43a81 re PR rtl-optimization/31360 (RTL loop invariant is not aggressive enough)
PR rtl-optimization/31360
	* cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
	(target_reg_cost): New.
	(init_set_costs): Initialize target_reg_cost.  Add comments
	regarding the rationale of the costs.
	(global_cost_for_size): Renamed to...
	(estimate_reg_pressure_cost): ... and simplify.  Decrease importance
	of register pressure.
	* tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
	estimate_reg_pressure_cost.  Add number of ivs.
	(determine_set_costs): Dump target_reg_cost.
	* loop-invariant.c (gain_for_invariant):  Use
	estimate_reg_pressure_cost.  Removed n_inv_uses argument.
	(best_gain_for_invariant, find_invariants_to_move): Remove
	n_inv_uses.
	* cfgloop.h (target_small_cost, target_pres_cost): Removed.
	(target_reg_cost): Declare.
	(global_cost_for_size): Declaration removed.
	(estimate_reg_pressure_cost): Declare.

	* gcc.dg/loop-7.c: New test.

From-SVN: r123919
2007-04-17 16:42:29 +00:00
Peter Bergner c092b0457f rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode regnos into even/odd register pairs.
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
	regnos into even/odd register pairs.
	* config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
	TDmode similar to the other floating point modes.
	[SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
	* config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
	define_expand's.
	(negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
	nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
	(movdd_hardfloat64): Use TARGET_MFPGPR.

From-SVN: r123916
2007-04-17 11:07:05 -05:00
Bernd Schmidt f2eb49dcfa re PR rtl-optimization/10692 ([m68k] miscompilation of perl with -O2 -fPIC)
* reload1.c (delete_output_reload): Don't count output in n_inherited.

	Revert
	2005-01-05  Richard Henderson  <rth@redhat.com>
	PR rtl-opt/10692
	* reload1.c (do_input_reload): Restrict the optimization deleteing
	a previous output reload to RELOAD_FOR_INPUT.

From-SVN: r123913
2007-04-17 15:29:34 +00:00
Dorit Nuzman cd38ca7f15 tree-vectorizer.h (stmt_vec_info_type): Add enum value induc_vec_info_type.
* tree-vectorizer.h (stmt_vec_info_type): Add enum value
        induc_vec_info_type.
        (vectorizable_induction): New function declaration.
        * tree-vect-transform.c (get_initial_def_for_induction): No need to
        check if already vectorized.  Find first place in BB where new stmts
        can be inserted.  Takes only one argument.
        (vectorizable_induction): New function.
        (vect_transform_stmt): Add case for induc_vec_info_type to call
        vectorizable_induction.
        (vect_transform_loop): Consider phis for vectorization.
        * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
        condition.
        (analyze_operations): Call vectorizable_induction when analyzing phis.
        Fix comment.
        (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
        (vect_mark_relevant): Include phis in relevance analysis.
        (vect_mark_stmts_to_be_vectorize): Likewise.
        * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.

From-SVN: r123910
2007-04-17 07:31:45 +00:00
Lawrence Crowl 39ef65923c invoke.texi (Debugging Options): Add documentation for the -femit-struct-debug options...
./:	* doc/invoke.texi (Debugging Options): Add documentation for the
	-femit-struct-debug options -femit-struct-debug-baseonly,
	-femit-struct-debug-reduced, and
	-femit-struct-debug-detailed[=...].

	* c-opts.c (c_common_handle_option): Add
	OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
	and OPT_femit_struct_debug_detailed_.
	* c.opt: Add specifications for
	-femit-struct-debug-baseonly, -femit-struct-debug-reduced,
	and -femit-struct-debug-detailed[=...].
	* opts.c (set_struct_debug_option): Parse the
	-femit-struct-debug-... options.
	* opts.c (matches_main_base, main_input_basename,
	main_input_baselength, base_of_path, matches_main_base): Add
	variables and functions to compare header base name to compilation
	unit base name.
	* opts.c (should_emit_struct_debug): Add to determine to emit a
	structure based on the option.
	(dump_struct_debug) Also disabled function to debug this
	function.
	* opts.c (handle_options): Save the base name of the
	compilation unit.

	* langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
        (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
	This hook indicates if a type is generic.  Set it by default
	to "never generic".
	* langhooks.h (struct lang_hooks_for_types): Add a new hook
	to determine if a struct type is generic or not.
	* cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
	* cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
	* cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
	with live C++ hook.

	* flags.h (enum debug_info_usage): Add an enumeration to describe
	a program's use of a structure type.
	* dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
	to indicate the program's usage of the type.  Filter structs based
	on the -femit-struct-debug-... specification.
	(gen_type_die): Split into two routines, gen_type_die and
	gen_type_die_with_usage.  gen_type_die is now a wrapper
	that assumes direct usage.
	(gen_type_die_with_usage): Replace calls to gen_type_die
	with gen_type_die_with_usage adding the program usage of
	the referenced type.
	(dwarf2out_imported_module_or_decl): Suppress struct debug
	information using should_emit_struct_debug when appropriate.
testsuite/:
	* g++.dg/other/fesd-any.C: Test -femit-struct-debug-detailed=any.
	* g++.dg/other/fesd-any.h: Test -femit-struct-debug-detailed=any.
	* g++.dg/other/fesd-baseonly.C: Test -femit-struct-debug-baseonly.
	* g++.dg/other/fesd-baseonly.h: Test -femit-struct-debug-baseonly.
	* g++.dg/other/fesd-none.C: Test -femit-struct-debug-detailed=none.
	* g++.dg/other/fesd-none.h: Test -femit-struct-debug-detailed=none.
	* g++.dg/other/fesd-reduced.C: Test -femit-struct-debug-reduced.
	* g++.dg/other/fesd-reduced.h: Test -femit-struct-debug-reduced.
	* g++.dg/other/fesd-sys.C: Test -femit-struct-debug-detailed=sys.
	* g++.dg/other/fesd-sys.h: Test -femit-struct-debug-detailed=sys.
	* g++.dg/other/fesd.h: Common to -femit-struct-debug-... tests.

	* gcc.dg/fesd-any.c: Test -femit-struct-debug-detailed=any.
	* gcc.dg/fesd-any.h: Test -femit-struct-debug-detailed=any.
	* gcc.dg/fesd-baseonly.c: Test -femit-struct-debug-baseonly.
	* gcc.dg/fesd-baseonly.h: Test -femit-struct-debug-baseonly.
	* gcc.dg/fesd-none.c: Test -femit-struct-debug-detailed=none.
	* gcc.dg/fesd-none.h: Test -femit-struct-debug-detailed=none.
	* gcc.dg/fesd-reduced.c: Test -femit-struct-debug-reduced.
	* gcc.dg/fesd-reduced.h: Test -femit-struct-debug-reduced.
	* gcc.dg/fesd-sys.c: Test -femit-struct-debug-detailed=sys.
	* gcc.dg/fesd-sys.h: Test -femit-struct-debug-detailed=sys.
	* gcc.dg/fesd.h: Common to -femit-struct-debug-... tests.

From-SVN: r123909
2007-04-17 06:19:36 +00:00
Ian Lance Taylor fc6827fe9f re PR tree-optimization/31522 (False overflow warning with phi nodes)
./:	PR tree-optimization/31522
	* tree-vrp.c (vr_phi_edge_counts): New static variable.
	(vrp_initialize): Allocate vr_phi_edge_counts.
	(vrp_visit_phi_node): Don't push to infinity if we saw a new
	executable edge.  Drop test for all constants.
	(vrp_finalize): Free vrp_phi_edge_counts.
testsuite/:
	PR tree-optimization/31522
	* gcc.dg/Wstrict-overflow-16.c: New test.

From-SVN: r123908
2007-04-17 05:33:38 +00:00
Ian Lance Taylor 4075e23198 cpp.texi (Common Predefined Macros): Clarify description of __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
* doc/cpp.texi (Common Predefined Macros): Clarify description of
	__GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.

From-SVN: r123907
2007-04-17 05:19:22 +00:00
Ian Lance Taylor 5a0ed003f0 tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer predecessors at head rather than tail.
* tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
	predecessors at head rather than tail.

From-SVN: r123906
2007-04-17 05:16:07 +00:00
Matthias Klose bdede2ace5 linux.h (CPP_SPEC): Define.
2007-04-16  Matthias Klose  <doko@debian.org>

        * gcc/config/alpha/linux.h (CPP_SPEC): Define.
        * gcc/config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.

From-SVN: r123888
2007-04-16 20:12:05 +00:00
Aldy Hernandez 52d412e76f * function.h: Remove sequence_stack extern declaration.
From-SVN: r123885
2007-04-16 18:55:33 +00:00