Commit Graph

31556 Commits

Author SHA1 Message Date
Zdenek Dvorak b39c670645 tree-data-ref.c (conflict_fn): Assert that the number of affine relations in the conflict function is valid.
* tree-data-ref.c (conflict_fn): Assert that the number of affine
	relations in the conflict function is valid.

From-SVN: r121259
2007-01-28 17:29:30 +00:00
Ian Lance Taylor eeef0e452e common.opt: Add fstrict-overflow.
./:	* common.opt: Add fstrict-overflow.
	* opts.c (decode_options): Set flag_strict_overflow if -O2.
	* flags.h (TYPE_OVERFLOW_WRAPS): Define.
	(TYPE_OVERFLOW_UNDEFINED): Define.
	(TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
	Replace all uses.
	* tree.h (TYPE_TRAP_SIGNED): Don't define.
	* fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
	(fold_negate_expr): Likewise.
	(make_range): Likewise.
	(extract_muldiv_1): Likewise.
	(maybe_canonicalize_comparison): Likewise.
	(fold_comparison): Likewise.
	(fold_binary): Likewise.
	(tree_expr_nonnegative_p): Likewise.
	(tree_expr_nonzero_p): Likewise.
	* tree-vrp.c (compare_values): Likewise.
	(extract_range_from_binary_expr): Likewise.
	(extract_range_from_unary_expr): Likewise.
	* tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
	Likewise.
	(nowrap_type_p): Likewise.
	* tree-scalar-evolution.c (simple_iv): Likewise.
	* fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
	(build_range_check): Likewise.
	(extract_muldiv_1): Likewise.
	(fold_comparison): Likewise.
	* tree-vrp.c (vrp_int_const_binop): Likewise.
	(extract_range_from_unary_expr): Likewise.
	* convert.c (convert_to_integer): Likewise.
	* fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
	(fold_comparison): Likewise.
	(fold_binary): Likewise.
	* optabs.c (optab_for_tree_code): Likewise.
	* tree-vectorizer.c (vect_is_simple_reduction): Likewise.
	* simplify-rtx.c (simplify_const_relational_operation): Check
	flag_strict_overflow and flag_trapv.
	(simplify_const_relational_operation): Likewise.
	* doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
	(Optimize Options): Add -fstrict-overflow to -O2 list.  Document
	-fstrict-overflow.
testsuite/:
	* gcc.dg/strict-overflow-1.c: New test.
	* gcc.dg/no-strict-overflow-1.c: New test.
	* gcc.dg/strict-overflow-2.c: New test.
	* gcc.dg/no-strict-overflow-2.c: New test.
	* gcc.dg/strict-overflow-3.c: New test.
	* gcc.dg/no-strict-overflow-3.c: New test.
	* gcc.dg/strict-overflow-4.c: New test.
	* gcc.dg/no-strict-overflow-4.c: New test.
	* gcc.dg/fold-mod-1.c: Add -fstrict-overflow option.
	* gcc.dg/pr15784-1.c: Likewise.
	* gcc.dg/pr20922-1.c: Likewise.
	* gcc.dg/pr20922-3.c: Likewise.
	* gcc.dg/pr20922-4.c: Likewise.
	* gcc.dg/pr20922-6.c: Likewise.
	* gcc.dg/compare-4.c: Likewise.
	* gcc.dg/torture/pr26898-1.c: Likewise.
	* gcc.dg/tree-ssa/divide-1.c: Likewise.
	* gcc.dg/tree-ssa/divide-2.c: Likewise.
	* gcc.dg/tree-ssa/divide-3.c: Likewise.
	* gcc.dg/tree-ssa/divide-4.c: Likewise.
	* gcc.dg/tree-ssa/pr14490-1.c: Likewise.
	* gcc.dg/tree-ssa/pr14490-3.c: Likewise.
	* gcc.dg/tree-ssa/pr21082.c: Likewise.
	* gcc.dg/tree-ssa/pr26899.c: Likewise.
	* g++.dg/tree-ssa/pr21082.C: Likewise.

From-SVN: r121254
2007-01-28 05:15:06 +00:00
Roger Sayle b73a605656 tree.c (tree_fold_gcd): Delete.
* tree.c (tree_fold_gcd): Delete.
	* tree.h (tree_fold_gcd): Remove prototype.
	* tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
	test whether one constant integer is a multiple of another.  Instead
	call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
	* fold-const.c (multiple_of_p):  We've determined both TOP and
	BOTTOM are integer constants so we can call int_const_binop directly
	instead of the more generic const_binop.

From-SVN: r121253
2007-01-28 05:04:48 +00:00
Roger Sayle 74890d7bbd fold-const.c (size_binop): In the fast-paths for X+0...
* fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
	1*X check that the constant hasn't overflowed, to preserve the
	TREE_OVERFLOW bit.
	(round_up): Provide an efficient implementation when rouding-up an
	INTEGER_CST to a power-of-two.

	* gcc-dg/large-size-array-3.c: New test case.

From-SVN: r121252
2007-01-28 03:48:41 +00:00
Gerald Pfeifer b93633383b Add missing doc/install.texi to ChangeLog entry of the previous commit.
From-SVN: r121245
2007-01-28 00:12:11 +00:00
Ralf Wildenhues 2a01aae626 sourcebuild.texi: Add comma for clarity.
* doc/sourcebuild.texi: Add comma for clarity.
	* doc/extend.texi: Fix some typos.
	* doc/passes.texi: Likewise.
	* doc/cppinternals.texi: Likewise.
	* doc/c-tree.texi: Likewise.
	* doc/tree-ssa.texi: Likewise.

From-SVN: r121242
2007-01-27 23:55:27 +00:00
Jan Hubicka 7fbb9a499c tree-sra.c (sra_walk_function): Don't rely on aliases being build.
* tree-sra.c (sra_walk_function): Don't rely on aliases being build.
	(pass_sra): Do not require alias information.
	* passes.c (init_optimization_passes): Add SRA

From-SVN: r121240
2007-01-27 22:31:19 +00:00
Steven Bosscher 9eab67850b tracer.c (rest_of_handle_tracer): We already cleaned up the CFG in tracer() so don't do it here again.
* tracer.c (rest_of_handle_tracer): We already cleaned
	up the CFG in tracer() so don't do it here again.
	* cfgcleanup.c (rest_of_handle_jump2): Don't repeat
	cleanup_cfg here, either.  And don't call renumber_insns.

	* cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
	and BB_HEAD are in the insn stream here.  Instead make sure
	that BB_INSN is valid on all insns.  Also, do check here that
	there are no pending branch predictions...
	(rtl_verify_flow_info): ...instead of doing it here.  Checks
	for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
	here.

From-SVN: r121231
2007-01-27 14:48:02 +00:00
Roger Sayle ffa1b3c684 i386.c (ix86_swap_binary_operands_p): New helper function to simplify/factorize operand order canonicalization.
* config/i386/i386.c (ix86_swap_binary_operands_p): New helper
	function to simplify/factorize operand order canonicalization.
	(ix86_fixup_binary_operands): Reorganize using the above function.
	(ix86_binary_operator_ok): Likewise.

From-SVN: r121227
2007-01-27 02:52:37 +00:00
Jakub Jelinek e2e3023612 genattrtab.c (struct attr_value_list, [...]): Move to file scope from optimize_attrs.
* genattrtab.c (struct attr_value_list, insn_code_values): Move to
	file scope from optimize_attrs.
	(simplify_test_exp): If insn_code_values is not NULL, use it to speed
	up search.
	(optimize_attrs): Clear insn_code_values after freeing it.

From-SVN: r121216
2007-01-27 00:15:08 +01:00
Zdenek Dvorak cdd76d88c8 tree-ssa-address.c (create_mem_ref): Remove ", bsi" from a parts.base assignment.
* tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
	a parts.base assignment.

From-SVN: r121213
2007-01-26 19:47:20 +00:00
Zdenek Dvorak d93817c435 tree-data-ref.c (dump_subscript): Use dump_conflict_function.
* tree-data-ref.c (dump_subscript): Use dump_conflict_function.
	(compute_subscript_distance, initialize_data_dependence_relation,
	finalize_ddr_dependent, analyze_ziv_subscript,
	analyze_siv_subscript_cst_affine,
	compute_overlap_steps_for_affine_univar,
	compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
	analyze_siv_subscript, analyze_miv_subscript,
	analyze_overlapping_iterations, subscript_dependence_tester_1,
	compute_self_dependence, free_dependence_relation): Work
	with affine_fn instead of chrecs.
	(dump_affine_function, dump_conflict_function, affine_function_equal_p,
	common_affine_function, affine_function_base,
	affine_function_constant_p, affine_fn_op, affine_fn_plus,
	affine_fn_minus, affine_fn_free, conflict_fn_not_known,
	conflict_fn_no_dependence, free_conflict_function, free_subscripts,
	conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
	(all_chrecs_equal_p): Removed.
	* tree-data-ref.h (affine_fn, conflict_function): New types.
	(struct subscript): Change type of conflicting_iterations_in_a
	and conflicting_iterations_in_b.

From-SVN: r121212
2007-01-26 19:33:04 +00:00
Steve Ellcey dfcb2b5145 re PR target/30182 (FAIL: gcc.dg/pr28796-2.c (test for excess errors))
PR other/30182
	* config/pa/pa.h (TARGET_HPUX_11): New.
	* config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
	* config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.

From-SVN: r121211
2007-01-26 18:16:29 +00:00
Daniel Berlin d3c3697412 tree-ssa-structalias.c (solve_graph): Handle case we merged the variable to another.
2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
	Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (solve_graph): Handle case
	we merged the variable to another.

Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r121202
2007-01-26 12:36:01 +00:00
Kaveh R. Ghazi 4b26d10bcc builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even' functions.
* builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
	functions.

	* fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
	catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
	
testsuite:
	* gcc.dg/builtins-20.c: Add more cases.
	* gcc.dg/torture/builtin-symmetric-1.c: Likewise.

From-SVN: r121200
2007-01-26 02:40:31 +00:00
DJ Delorie db9c839733 m32c.c (m32c_cannot_change_mode_class): We don't allow changes to modes which don't fit in those registers.
* config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
allow changes to modes which don't fit in those registers.

From-SVN: r121199
2007-01-25 20:16:57 -05:00
DJ Delorie 21f14ff955 reload1.c (choose_reload_regs): Check for invalid subregs before computing their locations, not after.
* reload1.c (choose_reload_regs): Check for invalid subregs before
computing their locations, not after.

From-SVN: r121198
2007-01-25 20:15:05 -05:00
Geoffrey Keating 22fa69dace re PR target/25127 (internal compiler error: in rs6000_emit_prologue, at config/rs6000/rs6000.c:14039)
2007-01-24  Geoffrey Keating  <geoffk@apple.com>

	PR 25127
	* config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
	save Altivec registers in an eh_return function.
	(compute_vrsave_mask): Likewise.
	(rs6000_stack_info): Correct AIX/Darwin stack alignment computation
	for saving Altivec registers.
	(rs6000_emit_prologue): Don't allocate stack twice in
	eh_return function.  Correct expected value of altivec_save_offset
	when using save_world.  Describe save of R0 to stack when using
	save_world.  Describe stack pointer adjustment when using
	save_world.  Remove duplicated eh_return parameter register saving.
	Update sp_offset variable after save_world.
	* config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
	darwin-world.asm.
	(LIB2FUNCS_EXTRA): Add darwin-world.asm.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
	implies Altivec.

Index: gcc/testsuite/ChangeLog
2007-01-24  Geoffrey Keating  <geoffk@apple.com>

	* gcc.target/powerpc/darwin-ehreturn-1.c: New.
	* g++.dg/eh/simd-2.C: Also run on Darwin.
	* g++.dg/eh/simd-3.C: New.
	* g++.dg/eh/simd-4.C: New.

From-SVN: r121184
2007-01-25 20:32:06 +00:00
Steve Ellcey 79e8b6c016 * config.gcc (ia64*-*-hpux*): Make posix threads the default.
From-SVN: r121180
2007-01-25 18:08:16 +00:00
Steve Ellcey 7d52200069 re PR target/30182 (FAIL: gcc.dg/pr28796-2.c (test for excess errors))
PR other/30182
	* config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
	* config/ia64/ia64.c (ia64_init_builtins):  Ditto.

From-SVN: r121178
2007-01-25 17:06:55 +00:00
Richard Guenther 16c1c158d8 invoke.texi (-Wcoverage-mismatch): Document.
2007-01-25  Richard Guenther  <rguenther@suse.de>

	* doc/invoke.texi (-Wcoverage-mismatch): Document.
	* common.opt (-Wcoverage-mismatch): New warning option.
	* coverage.c (get_coverage_counts): Ignore coverage mismatch
	if -Wcoverage-mismatch is given.

	* gcc.dg/tree-prof/tree-prof.exp: Define _PROFILE_GENERATE
	and _PROFILE_USE.
	* gcc.dg/tree-prof/wcoverage-mismatch.c: New testcase.

From-SVN: r121169
2007-01-25 12:35:13 +00:00
Razya Ladelsky b9c369e618 ipa-cp.c (ipcp_insert_stage, [...]): Support for SSA.
2007-01-25  Razya Ladelsky  <razya@il.ibm.com>

        * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
          (ipcp_driver): Change to static definition.
          Add dumping of the ifunctions.
          (constant_val_insert): Remove unused parameter. Support for SSA.
          (ipcp_propagate_const): Support for SSA.
          (ipcp_profile_bb_print): Print only analyzed nodes.
          (ipcp_replace_map_create): Remove support for Fortran constant
          for now.
          * ipa-prop.c (ipa_method_modify_stmt,
          ipa_callsite_compute_param): Support for SSA.
          * ipa-prop.h (ipcp_driver): Remove declaration.
          (IS_VALID_TREE_MAP_INDEX): Add define.

From-SVN: r121167
2007-01-25 10:54:47 +00:00
Geoffrey Keating 9dc5c4f5eb * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
From-SVN: r121165
2007-01-25 07:08:33 +00:00
Kaveh R. Ghazi 01ffa37015 re PR middle-end/30447 (Evaluate complex math functions at compile-time)
PR middle-end/30447
	* builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
	constant argument to cabs and do it without checking for
	-funsafe-math-optimizations.

From-SVN: r121163
2007-01-25 04:15:26 +00:00
Douglas Gregor e1f1ee86a8 c-common.h (RID_FIRST_CXX0X): New.
2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>

	* c-common.h (RID_FIRST_CXX0X): New.
	(RID_LAST_CXX0X): New.
	* c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
	by -Wall.
	* c.opt (Wc++0x-compat): New.
	* doc/invoke.texi (-Wc++0x-compat): Document.

From-SVN: r121162
2007-01-25 04:04:18 +00:00
Kaveh R. Ghazi 527cab2096 builtins.c (fold_builtin_carg): New.
* builtins.c (fold_builtin_carg): New.
	(fold_builtin_1): Use it.

testsuite:
	* gcc.dg/builtins-20.c: Test builtin carg.

From-SVN: r121159
2007-01-25 03:57:30 +00:00
Jan Hubicka ee41133693 * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
From-SVN: r121156
2007-01-25 01:13:02 +00:00
Jan Hubicka b7c27d5169 ipa-inline.c (initial_insns, max_insns): Delete.
* ipa-inline.c (initial_insns, max_insns): Delete.
	(compute_max_insns): New function.
	(cgraph_decide_inlining_of_small_function): Use it; take minimal amount
	of insns as base for code growth.
	(cgraph_decide_inlining): Make initial_insns local; do not compute
	max_insns.
	* params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
	* doc/invoke.texi (inline-unit-growth): Update docs.

From-SVN: r121144
2007-01-24 22:45:00 +00:00
Jakub Jelinek 15a26abf30 i386.h (x86_cmpxchg16b): Remove const.
* config/i386/i386.h (x86_cmpxchg16b): Remove const.
	(TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
	* config/i386/i386.c (x86_cmpxchg16b): Remove const.
	(override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
	for CPUs that have PTA_CX16 set.

From-SVN: r121140
2007-01-24 23:00:03 +01:00
Jakub Jelinek 07b7aade9d re PR middle-end/27416 (ICE on invalid firstprivate/lastprivate)
PR middle-end/27416
	* gimplify.c (omp_check_private): New function.
	(gimplify_scan_omp_clauses): Use it for
	firstprivate/lastprivate/reduction.

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

From-SVN: r121133
2007-01-24 21:58:21 +01:00
Jakub Jelinek 4288fea212 re PR middle-end/30494 (ICE with VLA and openmp)
PR middle-end/30494
	* gimplify.c (omp_add_variable): Don't call omp_notice_variable
	on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.

	* gcc.dg/gomp/pr30494.c: New test.
	* g++.dg/gomp/pr30494.C: New test.

	* testsuite/libgomp.c/pr30494.c: New test.

From-SVN: r121132
2007-01-24 21:56:45 +01:00
Jakub Jelinek 3d55c64b49 re PR middle-end/30421 (incorrect warning when using firstprivate and lastprivate clauses)
PR middle-end/30421
	* omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
	If lower_lastprivate_clauses emits some statements, append them
	to dlist rather than body_p and to body_p append an initializer.
	(lower_omp_for): Adjust caller.

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

From-SVN: r121131
2007-01-24 21:53:08 +01:00
Steve Ellcey 3b313c7838 Forgot ChangeLog in previous commit.
From-SVN: r121129
2007-01-24 19:40:57 +00:00
Andreas Krebbel f767122b2e unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.
2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with 
	_uleb128_t and _Unwind_SWord with _sleb128_t.
	* unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
	uw_frame_state_for, uw_update_context_1): Likewise.
	* unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
	* unwind-pe.h (read_uleb128, read_sleb128,
	read_encoded_value_with_base): Likewise.
	* unwind-generic.h: Define _sleb128_t and _uleb128_t types.

2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* libsupc++/eh_personality.cc (parse_lsda_header, check_exception_spec,
	get_ttype_entry, empty_exception_spec, PERSONALITY_FUNCTION): Replaced
	_Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.

2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* exception.cc (parse_lsda_header, PERSONALITY_FUNCTION): Replaced
	_Unwind_Word with _uleb128_t and _Unwind_SWord with _sleb128_t.

From-SVN: r121116
2007-01-24 14:46:47 +00:00
Richard Guenther 9d972b2dd3 builtins.c (expand_builtin_cexpi): Get the fndecl for cexp in the correct way.
2007-01-24  Richard Guenther  <rguenther@suse.de>

	* builtins.c (expand_builtin_cexpi): Get the fndecl
	for cexp in the correct way.

From-SVN: r121114
2007-01-24 13:49:18 +00:00
Jan Hubicka cf22730346 pr23382.c: Avoid DCE from eliminating dead variable.
* gcc.dg/tree-ssa/pr23382.c: Avoid DCE from eliminating dead variable.
	* tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.

From-SVN: r121108
2007-01-24 12:13:45 +00:00
Andreas Krebbel 024a85aeb6 c-cppbuiltin.c (builtin_define_type_sizeof): New function.
2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* c-cppbuiltin.c (builtin_define_type_sizeof): New function.
	(c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
	__SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
	__SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
	__SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
	__SIZEOF_PTRDIFF_T__.
	* doc/cpp.texi: Documentation for the new builtin macros added.

2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>

	* gcc.c-torture/compile/sizeof-macros-1.c: New testcase.

From-SVN: r121107
2007-01-24 12:03:38 +00:00
Uros Bizjak 9db2744988 i386.md (tanxf2, [...]): Use op2 instead of operands[2] to avoid access past the end of array.
* config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
	log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
	instead of operands[2] to avoid access past the end of array.

From-SVN: r121106
2007-01-24 12:17:09 +01:00
Richard Sandiford 92d5459253 reload1.c (emit_reload_insns): Pass the reload register for a non-spill output reload through forget_old_reloads_1.
gcc/
	* reload1.c (emit_reload_insns): Pass the reload register
	for a non-spill output reload through forget_old_reloads_1.

From-SVN: r121105
2007-01-24 08:16:14 +00:00
Joseph Myers 17caeff262 rs6000-c.c (rs6000_cpu_cpp_builtins): Define _SOFT_DOUBLE if doubles use software floating-point.
gcc:
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
	_SOFT_DOUBLE if doubles use software floating-point.
	* config/rs6000/libgcc-ppc-glibc.ver: Export additional long
	double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
	* config/rs6000/darwin-ldouble.c: Also compile functions for
	hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
	cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
	* config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
	commented-out long double override.
	(CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
	* config/rs6000/eabispe.h: Likewise.
	* config/rs6000/rs6000.c (rs6000_override_options): Don't override
	long double for non-SPE.
	(rs6000_handle_option): Likewise.
	(invalid_e500_subreg): Disallow more subregs involding DImode,
	DFmode, TImode or TFmode.
	(rs6000_legitimate_offset_address_p): Check TFmode offsets for
	E500 double.
	(legitimate_lo_sum_address_p): Also check for TFmode for E500
	double.
	(rs6000_legitimize_address): Also handle TFmode for E500 double.
	(rs6000_legitimize_reload_address): Also handle TFmode for E500
	double.
	(rs6000_legitimate_address): Also check for TFmode for E500
	double.
	(rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
	(spe_build_register_parallel): Handle TFmode and TCmode.
	(rs6000_spe_function_arg): Handle TFmode and TCmode for E500
	double.
	(function_arg): Handle TFmode and TCmode for E500 double.
	(rs6000_init_libfuncs): Initialize extra libfuncs for soft double
	in general.
	(print_operand): Handle TFmode and TImode for %y.
	(rs6000_generate_compare): Handle TFmode comparisons for E500
	double.
	(spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
	(rs6000_function_value): Handle TFmode and TCmode for E500 double.
	(rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
	* config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
	TFmode for E500 double.
	* config/rs6000/rs6000.md (FP): Allow TF for E500 double.
	(floatsidf2): Enable for E500 double.
	(movtf_softfloat): Use rs6000_nonimmediate_operand.
	(extenddftf2): Change to extenddftf2_fprs.
	(extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
	depending on TARGET_E500_DOUBLE.
	(extendsftf2): Enable for E500 double.
	(trunctfdf2): Enable for E500 double.
	(trunctfsf2): Change to trunctfsf2_fprs.
	(trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
	depending on TARGET_E500_DOUBLE.
	(floatsitf2): Enable for E500 double.
	(fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
	(fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
	gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
	(negtf2): Change to negtf2_internal.
	(negtf2): New expander.
	(abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
	gen_spe_abstf2_cmp or gen_abstf2_internal depending on
	TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
	(movdi_internal32): Use rs6000_nonimmediate_operand.
	(unnamed splitter): Likewise.
	* config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
	TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
	(SPE64TF, DITI): New mode macros.
	(frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
	modes.
	(frob_tf_ti): New.
	(frob_<mode>_di_2): New.
	(frob_tf_di_8_2): New.
	(frob_di_df): Change to frob_di_<mode>; allow more modes.
	(frob_ti_tf): New.
	(frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
	more modes.
	(frob_ti_<mode>_8_2): New.
	(frob_ti_tf_2): New.
	(mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
	mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
	TFmode.
	(mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
	mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
	(spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
	spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
	spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
	(cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
	tsttflt_gp): New.

libgcc:
	* config/rs6000/t-ldbl128: Always use -mlong-double-128.

From-SVN: r121085
2007-01-23 19:38:33 +00:00
Ian Lance Taylor d5dc6badbf Makefile.in (OBJS-common): Reformat, alphabetize, but put insn-*.o first.
* Makefile.in (OBJS-common): Reformat, alphabetize, but put
	insn-*.o first.
	(OBJS-archive): Reformat, alphabetize.
	(OBJS): Change out_object_file to OBJS-md.

From-SVN: r121081
2007-01-23 15:12:44 +00:00
Uros Bizjak 7656aee4d0 i386.md: Use REG_P...
* config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
	JUMP_P and CALL_P predicates where applicable.
	* config/i386/i386.c: Ditto.
	* config/i386/i386.md: Ditto.
	* config/i386/mmx.md: Ditto.
	* config/i386/predicates.md: Ditto.

From-SVN: r121079
2007-01-23 08:14:26 +01:00
Andreas Schwab c8832aae41 * config/m68k/m68k.h: Fix comment.
From-SVN: r121063
2007-01-22 21:16:24 +00:00
Jan Hubicka 6ffa0491ad passes.c (init_optimization_passes): Do not rerun pass_early_warn_uninitialized.
* passes.c (init_optimization_passes): Do not rerun
	pass_early_warn_uninitialized.

From-SVN: r121060
2007-01-22 18:51:56 +00:00
Richard Guenther 2f397a93c0 re PR tree-optimization/30038 (Call to sin(x), cos(x) should be transformed to sincos(x))
2007-01-22  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/30038
	* tree-ssa-math-opts.c (maybe_record_sincos): New static helper
	function.
	(execute_cse_sincos_1): Likewise.
	(execute_cse_sincos): Likewise.
	(gate_cse_sincos): Likewise.
	(pass_cse_sincos): New pass CSEing sin() and cos() calls using
	the cexpi() canonicalization of sincos().
	* tree-pass.h (pass_cse_sincos): Declare.
	* passes.c (init_optimization_passes): New pass pas_cse_sincos.

	* gcc.dg/builtins-62.c: New testcase.

From-SVN: r121052
2007-01-22 11:11:00 +00:00
Eric Botcazou 64c9193063 re PR rtl-optimization/29329 (internal consistency failure)
PR rtl-optimization/29329
	* combine.c (replaced_rhs_insn): Rename to i2mod.
	(replaced_rhs_value): Rename to i2mod_new_rhs.
	(i2mod_old_rhs): New global variable.
	(combine_instructions): Adjust for above change.  Save a copy of
	the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
	note are substituted in the second instruction.
	(distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
	ditch the note if it pertains to the second eliminated register
	and this register is mentioned in i2mod_old_rhs.

	Revert:
	2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
	the insn to which the note was originally attached.

From-SVN: r121037
2007-01-21 22:32:39 +00:00
Jan Hubicka 7fa49e7be7 ipa-inline.c (inlining_mode): Comment, move up.
* ipa-inline.c (inlining_mode): Comment, move up.
	(cgraph_decide_inlining_incrementally): Do not perform inlining itself; fix
	handling of flattening of self recursive functions.
	(cgraph_find_cycles): Remove.
	(cgraph_flatten_node): Remove.
	(cgraph_decide_inlining): Use incremental inliner to handle flattening.
	(try_inline): New function.
	(cgraph_early_inlining): Update call of cgraph_decide_inlining_incrementally.
	Apply inlining here.
	(apply_inline): Update call of cgraph_decide_inlining_incrementally.

From-SVN: r121034
2007-01-21 18:35:27 +00:00
Dirk Mueller 1eb7b04904 re PR bootstrap/30511 (False array bound check causes gcc failed to boostrap)
2007-01-21  Dirk Mueller  <dmueller@suse.de>

        PR bootstrap/30511
        * tree-vrp.c (check_array_bounds): do not warn
        about ADDR_EXPR's of ARRAY_REF's which are immediately
        used in binary expressions.

From-SVN: r121032
2007-01-21 16:12:10 +00:00
Ira Rosen 6004caaf4d tree-vectorizer.h (struct _stmt_vec_info): Add new field read_write_dep and macros for its access.
* tree-vectorizer.h (struct _stmt_vec_info): Add new field
	read_write_dep and macros for its access.
	* tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
	* tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
	argument, call vect_check_interleaving for every independent pair of
	data-refs. Mark loads that access the same memory location as a store
	in the loop.
	(vect_check_dependences): Remove.
	(vect_analyze_data_ref_dependences): Remove  vect_check_dependences
	call, fix the call to vect_analyze_data_ref_dependence.
	(vect_analyze_data_ref_access): For statements that access the same
	data-ref, check that they are not stores; for loads, check that there
	is no store that access the same location.

From-SVN: r121026
2007-01-21 09:22:56 +00:00
Roger Sayle 78681dbdee invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
* doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
	(-fdump-rtl-stack): Likewise.
	(-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
	(-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
	(-mpt-fixed): Use @minus{} for minus sign.
	(Using Precompiled Headers): Fix under/overfull hbox.


Co-Authored-By: Joseph Myers <joseph@codesourcery.com>

From-SVN: r121023
2007-01-21 03:54:41 +00:00