Commit Graph

81658 Commits

Author SHA1 Message Date
Uros Bizjak 6b889d891d re PR middle-end/31723 (Use reciprocal and reciprocal square root with -ffast-math)
PR middle-end/31723
    * hooks.c (hook_tree_tree_bool_null): New hook.
    * hooks.h (hook_tree_tree_bool_null): Add prototype.
    * tree-pass.h (pass_convert_to_rsqrt): Declare.
    * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
    * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
    and convert it to reciprocal a*rfunc(b).
    (execute_convert_to_rsqrt): New function.
    (gate_convert_to_rsqrt): New function.
    (pass_convert_to_rsqrt): New pass definition.
    * target.h (struct gcc_target): Add builtin_reciprocal.
    * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
    (TARGET_INITIALIZER): Initialize builtin_reciprocal with
    TARGET_BUILTIN_RECIPROCAL.
    * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.

    * config/i386/i386.h (TARGET_RECIP): New define.
    * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
    for TARGET_SSE_MATH and TARGET_RECIP when
    flag_unsafe_math_optimizations is set and not optimizing for size.
    (*rcpsf2_sse): New insn pattern.
    (*rsqrtsf2_sse): Ditto.
    (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
    for TARGET_SSE_MATH and TARGET_RECIP when
    flag_unsafe_math_optimizations is set and not optimizing for size.
    (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
    for TARGET_SSE_MATH and TARGET_RECIP when
    flag_unsafe_math_optimizations is set and not optimizing for size.
    * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
    for TARGET_SSE_MATH and TARGET_RECIP when
    flag_unsafe_math_optimizations is set and not optimizing for size.
    (*sse_rsqrtv4sf2): Do not export.
    (sqrtv4sf2): Ditto.
    (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
    for TARGET_SSE_MATH and TARGET_RECIP when
    flag_unsafe_math_optimizations is set and not optimizing for size.
    (sqrtv4sf2): Ditto.
    * config/i386/i386.opt (mrecip): New option.
    * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
    (ix86_emit_swsqrtsf): Ditto.
    * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
    (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
    builtin definition.
    (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
    ix86_expand_unop1_builtin.
    (ix86_emit_swdivsf): New function.
    (ix86_emit_swsqrtsf): Ditto.
    (ix86_builtin_reciprocal): New function.
    (TARGET_BUILTIN_RECIPROCAL): Use it.
    (ix86_vectorize_builtin_conversion): Rename from
    ix86_builtin_conversion.
    (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
    * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
    "i386 and x86_64 Options" section.
    (Intel 386 and AMD x86_64 Options): Document -mrecip.

testsuite/ChangeLog:

    PR middle-end/31723
    * gcc.target/i386/recip-divf.c: New test.
    * gcc.target/i386/recip-sqrtf.c: Ditto.
    * gcc.target/i386/recip-vec-divf.c: Ditto.
    * gcc.target/i386/recip-vec-sqrtf.c: Ditto.
    * gcc.target/i386/sse-recip.c: Ditto.

From-SVN: r125756
2007-06-16 11:52:48 +02:00
Andrew Pinski 5be014d5b7 [multiple changes]
2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
            Zdenek Dvorak <dvorakz@suse.cz>
            Richard Guenther  <rguenther@suse.de>
            Kaz Kojima  <kkojima@gcc.gnu.org>

	* tree-vrp.c (compare_values_warnv): Convert val2 to
	the type of val1.
	(extract_range_from_assert): Create
	POINTER_PLUS_EXPR for pointer types.
	(extract_range_from_binary_expr): Handle
	only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
	for pointer types.
	* doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
	* tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
	POINTER_PLUS_EXPR as PLUS_EXPR.
	(number_of_iterations_lt_to_ne):
	For pointer types, use sizetype when
	creating MINUS_EXPR/PLUS_EXPRs.
	(assert_loop_rolls_lt): For pointer types, use sizetype when
	creating MINUS_EXPR/PLUS_EXPRs.
	(number_of_iterations_le): Likewise.
	(expand_simple_operations): POINTER_PLUS_EXPR are simple also.
	(derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
	like PLUS_EXPR and MINUS_EXPR.
	* tree-pretty-print.c (dump_generic_node): Handle
	POINTER_PLUS_EXPR.
	(op_prio): Likewise.
	(op_symbol_1): Likewise.
	* optabs.c (optab_for_tree_code): Likewise.
	* tree-ssa-loop-manip.c (create_iv): Handle pointer base
	specially.
	* tree-tailcall.c (process_assignment): Mention
	POINTER_PLUS_EXPR in a TODO comment.
	* tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
	MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
	not used with a pointer and an integer type.
	* tree-scalar-evolution.c (add_to_evolution_1): Convert the
	increment using chrec_convert_rhs instead of chrec_convert.
	(follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
	PLUS_EXPR except for the right hand side's type will be
	sizetype.
	(interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
	(fold_used_pointer_cast): Kill.
	(pointer_offset_p): Kill.
	(fold_used_pointer): Kill.
	(pointer_used_p): Kill.
	(analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
	call fold_used_pointer.
	(instantiate_parameters_1): Convert the increment
	using chrec_convert_rhs instead of chrec_convert.
	Handle POINTER_PLUS_EXPR as PLUS_EXPR.
	* builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
	instead of PLUS_EXPR.
	(expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
	PLUS_EXPR for pointers.
	(std_gimplify_va_arg_expr): Likewise.
	(fold_builtin_memory_op): Likewise.
	(fold_builtin_strstr): Likewise.
	(fold_builtin_strchr): Likewise.
	(fold_builtin_strrchr): Likewise.
	(fold_builtin_strpbrk): Likewise.
	(expand_builtin_memory_chk): Likewise.
	(fold_builtin_memory_chk): Likewise.
	(std_expand_builtin_va_start): Use
	sizetype for the call to make_tree and then convert
	to the pointer type.
	(fold_builtin_memchr): Use POINTER_PLUS_EXPR
	instead of PLUS_EXPR for adding to a pointer.
	(std_gimplify_va_arg_expr): Use fold_build2 for
	the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
	the operands to sizetype first and then cast the BIT_AND_EXPR
	back to the pointer type.
	* fold-const.c (build_range_check): Handle pointer types
	specially.
	(extract_array_ref): Look for POINTER_PLUS_EXPR instead
	of PLUS_EXPR's. Make sure the offset is converted to
	sizetype.
	(try_move_mult_to_index): Strip the NOPs from the offset.
	Remove code argument and replace all uses with PLUS_EXPR.
	(fold_to_nonsharp_ineq_using_bound): Handle pointer types
	specially. Don't use a pointer type for MINUS_EXPR.
	(fold_unary): Handle for (T1)(X op Y),
	only p+ as that is the only as that can be handled for
	binary operators now.
	(fold_binary <case POINTER_PLUS_EXPR>): Add folding of
	POINTER_PLUS_EXPR.
	<case PLUS_EXPR>: Add folding of PTR+INT into
	PTR p+ INT.
	Don't call try_move_mult_to_index.
	<case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
	into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
	(PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
	Don't call try_move_mult_to_index.
	(tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
	(tree_expr_nonzero_p): Likewise.
	(fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
	of PLUS_EXPR for the complex expression folding.
	* tree-chrec.c (chrec_fold_plus_poly_poly): If the
	first chrec is a pointer type, then the second should
	be sizetype and not the first's type.
	For POINTER_PLUS_EXPR, use a different right hand side type.
	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
	(chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
	different right hand side type.
	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
	(chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
	instead of PLUS_EXPR.
	When either operand is zero, convert the other operand.
	(chrec_apply): Use chrec_convert_rhs
	on the argument x instead of chrec_convert.
	(reset_evolution_in_loop): For pointer types, the new_evol
	should be sizetype.
	(convert_affine_scev): For POINTER_PLUS_EXPR, use a
	different right hand side type.
	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
	(chrec_convert_rhs): New function.
	(chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
	different right hand side type.
	Handle POINTER_PLUS_EXPR like PLUS_EXPR.
	* tree-chrec.h (chrec_convert_rhs): New prototype.
	(build_polynomial_chrec): For pointer types, the right hand
	* tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
	POINTER_PLUS_EXPR instead of PLUS_EXPR's.
	Remove subtraction case as it is always addition now.
	Make sure the offset is converted to sizetype.
	(fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
	Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
	* tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
	PLUS_EXPR in pointer type.
	Handle POINTER_PLUS_EXPR.
	(tree_to_aff_combination): Likewise.
	(force_expr_to_var_cost): Likewise.
	(force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
	instead of PLUS_EXPR for pointers.
	* c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
	instead of PLUS_EXPR of pointer types.
	* tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
	as PLUS_EXPR.
	(check_va_list_escapes): Likewise.
	(check_all_va_list_escapes): Likewise.
	* dwarf2out.c (loc_descriptor_from_tree_1):
	Handle POINT_PLUS_EXPR as a PLUS_EXPR.
	* expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
	(string_constant): Likewise.
	* tree-ssa-address.c (tree_mem_ref_addr): When adding
	the offset to the base, use POINTER_PLUS_EXPR.
	(add_to_parts): Convert the index to sizetype.
	(create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
	* matrix-reorg.c (collect_data_for_malloc_call): Stmt
	will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
	Offset only holds something for PLUS_EXPR.
	(ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
	a PLUS_EXPR.
	(analyze_transpose): POINTER_PLUS_EXPR will only show up now
	and not PLUS_EXPR.
	(analyze_accesses_for_modify_stmt): Likewise.
	Remove comment about the type being integral type as it is
	wrong now.
	(can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
	PLUS_EXPR.
	(transform_access_sites): POINTER_PLUS_EXPR will only show up now
	and not PLUS_EXPR.
	Correct the type which the artimentic is done in (is now
	sizetype).
	Reindent one loop.
	* tree-data-ref.c (split_constant_offset): Handle
	POINTER_PLUS_EXPR
	* tree-affine.c (tree_to_aff_combination): Likewise.
	* c-typeck.c (build_unary_op): For pointers create the increment
	as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
	for pointers.
	* gimplify.c (gimplify_self_mod_expr): Create a
	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
	(gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
	* tree.def (POINTER_PLUS_EXPR): New tree code.
	* tree-predcom.c (ref_at_iteration): If we have a pointer
	type do the multiplication in sizetype.
	* tree-mudflap.c (mf_xform_derefs_1): Create a
	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
	* tree-ssa-forwprop.c 
	(forward_propagate_addr_into_variable_array_index):
	Don't expect there to be a cast for the index as that
	does not exist anymore.
	(forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
	instead of PLUS_EXPR.
	Don't check for the first operand of the POINTER_PLUS_EXPR
	was the index as it cannot be.
	Call forward_propagate_addr_into_variable_array_index with
	the SSA_NAME instead of the statement.
	* varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
	(compare_constant): Likewise.
	(copy_constant): Likewise.
	(compute_reloc_for_constant): Likewise.
	(output_addressed_constants): Likewise.
	(initializer_constant_valid_p): Likewise.
	* tree-ssa.c (tree_ssa_useless_type_conversion_1):
	Convert the MIN/MAX of the inner type to the outer
	type before comparing them.
	* tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
	POINTER_PLUS_EXPR instead of PLUS_EXPR.
	(issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
	of PLUS_EXPR for pointers.
	* tree-inline.c (estimate_num_insns_1): Handle
	POINTER_PLUS_EXPR.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
	Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
	(bump_vector_ptr): Create a POINTER_PLUS_EXPR
	instead of PLUS_EXPR for the pointer increment statement.
	(vect_update_ivs_after_vectorizer): For pointer types, create
	POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
	MULT_EXPR in sizetype.
	(vect_gen_niters_for_prolog_loop): Add a cast when creating
	byte_misalign.
	* tree-object-size.c (plus_expr_object_size): Handle
	POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
	code which is trying to figure out which side is a pointer and 
	is the index.
	(check_for_plus_in_loops_1): Likewise.
	(check_for_plus_in_loops): Likewise.
	* c-common.c (pointer_int_sum): Create a
	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
	* tree-ssa-structalias.c (handle_ptr_arith): Handle
	only POINTER_PLUS_EXPR.  Removing all the extra
	code which is trying to figure out which side is a pointer and 
	is the index.
	* tree-cfg.c (verify_expr): Add extra checking for pointers and
	PLUS_EXPR and MINUS_EXPR.
	Also add checking to make sure the operands of POINTER_PLUS_EXPR
	are correct.
	* config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
	with make_tree, instead of a pointer type.
	* config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
	for pointers instead of PLUS_EXPR.
	(s390_gimplify_va_arg): Likewise.
	* config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
	instead of PLUS_EXPR when doing addition on pointer
	types.  Use sizetype for the second operand.
	(spu_gimplify_va_arg_expr): Likewise.
	* config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
	POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
	a pointer.  Don't create a BIT_AND_EXPR for pointer types.
	* config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
	for the pointer addition and also use size_int/sizetype
	for the offset.
	(ix86_gimplify_va_arg): Likewise.
	Perform BIT_AND_EXPR on sizetype arguments.
	* config/sh/sh.c (sh_va_start): Call make_tree with sizetype
	and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
	for the pointer additions and also use size_int for the offsets.
	(sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
	additions and also use size_int for the offsets.  Perform
	BIT_AND_EXPR on sizetype arguments.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Use
	POINTER_PLUS_EXPR for pointers and create the
	BIT_AND_EXPR in sizetype.
	* config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
	instead of PLUS_EXPR for pointer addition.
	(rs6000_va_start): Likewise.
	Also use sizetype for the offset.
	* config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
	as PLUS_EXPR/MINUS_EXPR.
	(hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
	PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
	Don't use BIT_AND_EXPR on a pointer type, convert the
	expression to sizetype first.
	* config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
	for pointers.
	(mips_gimplify_va_arg_expr): Likewise.
	Don't create BIT_AND_EXPR in a pointer type.



2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use
        POINTER_PLUS_EXPR instead of PLUS_EXPR for pointer addition.
        * trans-expr.c (gfc_trans_string_copy): Create
        POINTER_PLUS_EXPR instead of a PLUS_EXPR
        for pointer types.

2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* typeck.c (build_binary_op): For templates build the
	expression in pieces to avoid the assert in build2_stat.
	(get_member_function_from_ptrfunc):
	Change over to using POINTER_PLUS_EXPR and convert
	the second operand to sizetype.
	* typeck2.c (build_m_component_ref):  Likewise.
	* init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
	instead of PLUS_EXPR for pointers.
	(build_new_1): Likewise.
	(build_vec_delete_1): Likewise.
	(build_vec_delete): Likewise.
	* class.c (build_base_path): Likewise.
	(build_base_path): Likewise.
	(convert_to_base_statically): Likewise.
	(fixed_type_or_null): Handle POINTER_PLUS_EXPR.
	(get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
	instead of PLUS_EXPR.
	(dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
	instead of PLUS_EXPR for pointers.
	* call.c (build_special_member_call): Likewise.
	* rtti.c (build_headof): Likewise.
	Use sizetype instead of ptrdiff_type_node.
	(tinfo_base_init): Create a POINTER_PLUS_EXPR
	instead of PLUS_EXPR for pointers.
	* except.c (expand_start_catch_block):  Do a
	NEGATIVE and then a POINTER_PLUS_EXPR instead
	of a MINUS_EXPR.
	* cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
	PLUS_EXPR on pointer types over to use
	POINTER_PLUS_EXPR and remove the conversion
	to the pointer types.
	* method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
	adding to a pointer type. Use size_int instead of
	ssize_int. Convert the index to sizetype before
	adding it to the pointer.



2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * trans.c (Attribute_to_gnu): When subtracting an
        offset from a pointer, use POINTER_PLUS_EXPR with
        NEGATE_EXPR instead of MINUS_EXPR.
        (gnat_to_gnu): Likewise.
        * utils.c (convert): When converting between
        thin pointers, use POINTER_PLUS_EXPR and sizetype
        for the offset.
        * utils2.c (known_alignment): POINTER_PLUS_EXPR
        have the same semantics as PLUS_EXPR for alignment.
        (build_binary_op): Add support for the semantics of
        POINTER_PLUS_EXPR's operands.
        When adding an offset to a pointer, use POINTER_PLUS_EXPR.



2007-06-15 Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * class.c (make_class_data): Build the index in sizetype.
        Use POINTER_PLUS_EXPR instead of PLUS_EXPR when
        adding to a pointer type.
        (build_symbol_entry): Likewise.
        * expr.c (build_java_arrayaccess): Likewise.
        (build_field_ref): Likewise.
        (build_known_method_ref): Likewise.
        (build_invokevirtual): Likewise.
        * except.c (build_exception_object_ref): Do a
        NEGATIVE and then a POINTER_PLUS_EXPR instead
        of a MINUS_EXPR.


2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR tree-opt/32225
	* gcc.c-torture/compile/20070605-1.c: New test.

	* gcc.c-torture/compile/20070603-1.c: New testcase.
	* gcc.c-torture/compile/20070603-2.c: New testcase.

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

	PR tree-opt/32167
	* gcc.c-torture/compile/20070531-2.c: New test.

	PR tree-opt/32144
	* gcc.c-torture/compile/20070529-1.c: New test.

	PR tree-opt/32145
	* gcc.c-torture/compile/20070529-2.c: New test.

	PR tree-opt/32015
	* gcc.c-torture/compile/20070520-1.c: New test.

	* g++.dg/ext/java-1.C: New test.

	* gcc.dg/vect/vect-106.c: We are now able to vectorize two
	loops instead of one. Remove the "can't determine dependence"
	check.
	* gcc.dg/tree-ssa/20030815-1.c: Remove testcase which is no longer
	needed as the cast is gone in the first place.
	* gcc.dg/max-1.c: Change local variable a to be a global one.
	* gcc.dg/tree-ssa/ssa-pre-8.c: Update testcase since we don't
	have a cast which is PREd.

From-SVN: r125755
2007-06-15 22:42:36 -07:00
Eric Christopher 1d2b1d9167 config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
2007-06-15  Eric Christopher  <echristo@apple.com>

	    * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
	    (x86_64-*-darwin*): Ditto.
	    * config/i386/darwin.h (CRTEND_SPEC): New. Add support
	    for above.

From-SVN: r125754
2007-06-16 02:43:57 +00:00
GCC Administrator b42c318374 Daily bump.
From-SVN: r125751
2007-06-16 00:16:57 +00:00
Matthew Wilcox e9f9692b8e extend.texi: Document behavior of __attribute__((aligned)) on typedefs.
* doc/extend.texi: Document behavior of __attribute__((aligned))
	on typedefs.

From-SVN: r125747
2007-06-15 17:33:01 +00:00
Mark Mitchell c3a1ef9da9 * rtlanal.c (note_stores): Improve documentation.
From-SVN: r125746
2007-06-15 17:31:53 +00:00
Mark Mitchell 555551c24b cp-tree.h (DECL_VAR_MARKED_P): Remove.
* cp-tree.h (DECL_VAR_MARKED_P): Remove.
	(DECL_ANON_UNION_VAR_P): New macro.
	* class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
	than DECL_VAR_MARKED_P, to keep track of which variables we have
	seen.
	* decl.c (redeclaration_error_message): Complain about redeclaring
	anonymous union members at namespace scope.
	* decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
	* g++.dg/lookup/anon6.C: New test.

From-SVN: r125745
2007-06-15 16:58:29 +00:00
Bernd Schmidt 2f119dcccd elf.h (ASM_GENERATE_INTERNAL_LABEL, [...]): Delete.
* config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
	LOCAL_LABEL_PREFIX): Delete.
	* config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
	(bfin_internal_label): Delete.

From-SVN: r125740
2007-06-15 11:54:51 +00:00
Rainer Orth bec38225d5 re PR libfortran/32345 (Unconditional snprintf use breaks all gfortran exec tests on Tru64 UNIX V4.0F)
PR libfortran/32345
	* runtime/backtrace.c (show_backtrace): Only use snprintf if
	available.

From-SVN: r125739
2007-06-15 10:26:16 +00:00
Arnaud Charlet 2be6658d86 Add new tests
From-SVN: r125738
2007-06-15 10:27:59 +02:00
Uros Bizjak 3353afbec7 libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3...
* libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
	define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
	otherwise define to LIBGCC2_TF_CEXT.
	* config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
	(LIBGCC_TF_CEXT): Ditto.
	(TF_SIZE): Ditto.

From-SVN: r125737
2007-06-15 09:01:31 +02:00
Seongbae Park 203927fc06 re PR rtl-optimization/32339 (ICE in insert_save, at caller-save.c:726)
2007-06-14  Seongbae Park  <seongbae.park@gmail.com>

	PR rtl-optimization/32339
	* df-scan.c (df_uses_record): Don't modify flags but just add to it for
	df_ref_record.

From-SVN: r125736
2007-06-15 06:33:24 +00:00
Keith Seitz 7dace0ca51 java-interp.h (_Jv_LocalVarTableEntry): Add union for bytecode_pc and direct-threaded pc.
* include/java-interp.h (_Jv_LocalVarTableEntry): Add union
        for bytecode_pc and direct-threaded pc.
        Add field descriptions inline.
        * defineclass.cc (read_one_code_attribute): Change from
        bytecode_start_pc to bytecode_pc.
        Remove unused variable "len".
        * interpret.cc (compile): Remap the variable table, too.
        (get_local_var_table) [DIRECT_THREADED]: Use insn_index on the
        start location to map from pc_t to code index.

From-SVN: r125734
2007-06-15 03:53:52 +00:00
Andrew Pinski e89993b3f2 tree-mudflap.c: Fix whitespace issues.
2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * tree-mudflap.c: Fix whitespace issues.

From-SVN: r125733
2007-06-14 20:39:31 -07:00
Kazu Hirata 83f6221b98 * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
From-SVN: r125731
2007-06-15 02:43:32 +00:00
GCC Administrator f5f9faee6d Daily bump.
From-SVN: r125729
2007-06-15 00:16:52 +00:00
Dirk Mueller bf37bd8885 re PR c++/31806 (miscompilation with -fschedule-insns2 -fno-threadsafe-statics)
2007-06-14  Dirk Mueller  <dmueller@suse.de>

       PR c++/31806
       * g++.dg/opt/static6.C: New testcase.

From-SVN: r125726
2007-06-14 23:12:25 +00:00
Eric Christopher 5eafdd32da sse.md (movdi_to_sse): Rewrite body.
2007-06-14  Eric Christopher  <echristo@apple.com>

        * config/i386/sse.md (movdi_to_sse): Rewrite body.
        (movv4sf): Use gcc_unreachable instead of abort.

From-SVN: r125723
2007-06-14 21:43:45 +00:00
Geoffrey Keating c96f00012b decl2.c (determine_visibility): Ensure that functions with hidden types as parameters are hidden.
* decl2.c (determine_visibility): Ensure that functions with
	hidden types as parameters are hidden.

From-SVN: r125722
2007-06-14 21:04:10 +00:00
Geoffrey Keating 7dbd86a541 re PR libgcj/31093 (Multicast PromiscuousTraffic)
PR 31093
	* decl2.c (determine_visibility): Remove duplicate code for
	handling type info.

From-SVN: r125721
2007-06-14 20:56:25 +00:00
Uros Bizjak 4962b67943 re PR target/32268 (Wrong comparison results for __float128 operands)
PR target/32268
        * config/i386/sfp-machine.c (CMPtype): New define.
        (mach stubs): Use CMPtype instead of int as a return type.

testsuite/ChangeLog:

        PR target/32268
        * gcc.target/i386/pr32268.c: New test.

From-SVN: r125720
2007-06-14 22:15:13 +02:00
Uros Bizjak 97943b3c8b eqdf2.c, [...]: Update from glibc CVS.
* config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
        config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
        config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
        config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
        config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
        config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
        config/soft-fp/soft-fp.h: Update from glibc CVS.

From-SVN: r125719
2007-06-14 21:45:11 +02:00
H.J. Lu 9929612817 fe-convert-1.c: Expect FE_OVERFLOW when converting from 10.000000e96DD to _Decimal32...
2007-06-14  H.J. Lu  <hongjiu.lu@intel.com>

	* gcc.dg/dfp/fe-convert-1.c: Expect FE_OVERFLOW when converting
	from 10.000000e96DD to _Decimal32, from 10.000000e96DL to
	_Decimal32 and from 10.00000000000000E384DL to _Decimal64.

	*  gcc.dg/dfp/fe-convert-2.c: Expect FE_INEXACT when converting
	from 1.0e96 and -1.0e96 to _Decimal32. Enable testing for
	converting from 1.0e-96 and 0.00048828125 to _Decimal32 when
	BID is used.

From-SVN: r125718
2007-06-14 10:24:22 -07:00
Bernd Schmidt 3fcfad7607 configure.ac: Don't add target-libmudflap to noconfigdirs for bfin*-*-uclinux* targets.
* configure.ac: Don't add target-libmudflap to noconfigdirs for
	bfin*-*-uclinux* targets.
	* configure: Regenerate.

	* gcc/config/bfin/uclinux.h (MFWRAP_SPEC): New.

From-SVN: r125717
2007-06-14 17:10:54 +00:00
Paolo Bonzini aa2480c5fb configure.ac: Use ACX_PROG_CC_ALMOST_PEDANTIC too.
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Use ACX_PROG_CC_ALMOST_PEDANTIC too.
	* configure: Regenerate.

From-SVN: r125716
2007-06-14 14:40:58 +00:00
Rask Ingemann Lambertsen 9074582342 re PR target/32341 (undefined reference to `df_set_regs_ever_live_p')
2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>

	PR target/32341
	* config/v850/v850.c: Include dataflow header file.
	(substitute_ep_register): Fix typo.

From-SVN: r125715
2007-06-14 14:33:21 +00:00
Ian Lance Taylor 3f5a2b7f67 MAINTAINERS: Add myself as non-algorithmic global write maintainer.
* MAINTAINERS: Add myself as non-algorithmic global write
	maintainer.

From-SVN: r125713
2007-06-14 13:56:46 +00:00
Paolo Bonzini 04c3028a09 configure.ac: Fix earlier checkin.
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Fix earlier checkin.
	* configure: Regenerated.

From-SVN: r125711
2007-06-14 06:27:32 -07:00
Diego Novillo 4c46daeea9 MAINTAINERS: Add self as middle-end maintainer and non-algorithmic global write maintainer.
* MAINTAINERS: Add self as middle-end maintainer and
	non-algorithmic global write maintainer.

From-SVN: r125710
2007-06-14 09:15:24 -04:00
Paul Thomas d8158369c6 re PR fortran/32302 (Incorrect result with -O2)
2007-06-14  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32302
	* trans-common.c (build_common_decl): If resizing of common
	decl is needed, update the TREE_TYPE.

2007-06-14  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32302
	* gfortran.dg/common_resize_1.f90: New test.

From-SVN: r125708
2007-06-14 13:04:05 +00:00
H.J. Lu 77a1416d57 configure.ac: Fix a typo in --enable-checking=.
2007-06-14  H.J. Lu  <hongjiu.lu@intel.com>

	* configure.ac: Fix a typo in --enable-checking=.
	* configure: Regenerated.

From-SVN: r125705
2007-06-14 05:44:43 -07:00
Francois-Xavier Coudert a3bb222a7b MAINTAINERS: Change spelling from "fortran 95" to "Fortran".
* MAINTAINERS: Change spelling from "fortran 95" to "Fortran".
	Move all Fortran maintainers except Paul Brook into the
	Non-Autopoiesis section.

From-SVN: r125704
2007-06-14 12:30:28 +00:00
Dorit Nuzman c6f5c27317 re PR testsuite/32274 (FAIL: gcc.dg/vect/pr32224.c)
PR target/32274
        * gcc.dg/vect/pr32224.c: Fix.

From-SVN: r125703
2007-06-14 09:39:31 +00:00
Arnaud Charlet 3c95201d6f Add new tests.
From-SVN: r125702
2007-06-14 11:24:07 +02:00
Paolo Bonzini a19e8f6495 Makefile.tpl (cleanstrap): Don't delete the toplevel Makefile.
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.tpl (cleanstrap): Don't delete the toplevel Makefile.
	(distclean-stage[+id+]): Possibly delete stage_last.
	* Makefile.in: Regenerate.

From-SVN: r125701
2007-06-14 08:50:28 +00:00
Paolo Bonzini 3bbd5a19eb acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
gcc:
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

        * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
        * aclocal.m4: Regenerate.
        * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
        ACX_PROG_CC_WARNINGS_ARE_ERRORS,
        ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
	* configure: Regenerate.
        * Makefile.in (LOOSE_WARN): Subst loose_warn.

        * Makefile.in (quickstrap): Build libgcc too.

libiberty:
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

        * aclocal.m4: Include config/warnings.m4.
        * configure.ac: Use ACX_PROG_CC_WARNING_OPTS.
	* configure: Regenerate.

config:
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

        * acx.m4 (ACX_CHECK_PROG_VER): Remove duplicate lines.

From-SVN: r125700
2007-06-14 08:10:41 +00:00
Paolo Bonzini ab28cc38fd svn missed the changelog for previous rev...
From-SVN: r125699
2007-06-14 07:54:21 +00:00
Paolo Bonzini 3089f8b5a1 configure.ac: Add --enable-checking=df.
2007-06-14  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Add --enable-checking=df.  Explicitly mention that
	the variables are initialized as for "release".
	* df-core.c: Use it.
	* configure: Regenerate.
	* config.in: Regenerate.

From-SVN: r125698
2007-06-14 07:51:58 +00:00
Bob Wilson 20dca97bbd xtensa.c (xtensa_expand_nonlocal_goto): Use validate_replace_rtx instead of replace_rtx.
* config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
        validate_replace_rtx instead of replace_rtx.
        (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.

From-SVN: r125697
2007-06-14 04:49:42 +00:00
Danny Smith 76f5e2005d config.host (*-cygwin* |*-mingw* ): Add crtbegin.o, crtend.o to extra_parts.
ChangeLog/libgcc

2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>

	* config.host(*-cygwin* |*-mingw* ): Add crtbegin.o, crtend.o to
	extra_parts. Add config/i386/t-cygming to tmake_file. 
	* config/i386/t-cygming: New file with rules for crtbegin.o, crtend.o.


ChangeLog/gcc

2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
	(DWARF2_UNWIND_INFO): Override default if configured with
	SJLJ EH disabled.
	* config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
	(ENDFILE_SPEC): Add crtend.o.
	* config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
	(ENDFILE_SPEC): Add crtend.o.
	(TARGET_USE_JCR_SECTION): Define.
	(MD_UNWIND_SUPPORT): Define for 32-bit target.

	* config/i386/cygming-crtbegin.c: New file.
	* config/i386/cygming-crtend.c: New file.

2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>

	* config/i386/w32-unwind.h: New file.

From-SVN: r125696
2007-06-14 02:38:37 +00:00
Eric Christopher ab47d43e01 darwin.h (PREFERRED_STACK_BOUNDARY): Don't let the user set a value below STACK_BOUNDARY.
2007-06-13  Eric Christopher  <echristo@apple.com>

	    * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
	    the user set a value below STACK_BOUNDARY.

From-SVN: r125695
2007-06-14 01:53:17 +00:00
Eric Christopher 77dcc28677 ssefn-1.c: Add -march=i386.
2007-06-13  Eric Christopher  <echristo@apple.com>

	    * gcc.target/i386/ssefn-1.c: Add -march=i386.

From-SVN: r125694
2007-06-14 01:24:28 +00:00
GCC Administrator 31a61d0c84 Daily bump.
From-SVN: r125692
2007-06-14 00:17:05 +00:00
Thiemo Seufer b64a6dbdbb linux.h, linux64.h (LIB_SPEC): Always imply -lpthread for -pthread.
* config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
	imply -lpthread for -pthread.

From-SVN: r125688
2007-06-13 23:22:29 +00:00
Kazu Hirata 9c57e1e889 tree-ssa-pre.c (mergephitemp): Remove.
* tree-ssa-pre.c (mergephitemp): Remove.
	(init_pre): Don't use mergephitemp.

From-SVN: r125687
2007-06-13 23:12:46 +00:00
Kazu Hirata efd7122b03 basic-block.h: Remove the prototype for free_basic_block_vars.
* basic-block.h: Remove the prototype for
	free_basic_block_vars.
	* cfglayout.h: Remove the prototype for
	insn_locators_initialize.
	* tree.h: Remove the prototype for emit_line_note.

From-SVN: r125686
2007-06-13 22:57:14 +00:00
Eric Christopher b26f6ed7b9 i386.c (override_options): If we've specified an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
2007-06-13  Eric Christopher  <echristo@apple.com>

        * config/i386/i386.c (override_options): If we've specified
        an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.

From-SVN: r125685
2007-06-13 22:06:15 +00:00
Tobias Burnus 59be80716a re PR fortran/32323 (Accepts invalid vector subscript actual argument for intent(out) dummy argument)
2007-06-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32323
	* interface.c (has_vector_section): New.
	(compare_actual_formal): Check for array sections with vector subscript.

2007-06-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32323
	* gfortran.dg/actual_array_vect_1.f90: New.

From-SVN: r125684
2007-06-13 22:12:40 +02:00
Richard Earnshaw ddb4f387ee eh_arm.cc (__cxa_type_match): Handle foreign exceptions.
* libsupc++/eh_arm.cc (__cxa_type_match): Handle foreign
	exceptions.
	* libsubpc++/eh_personality.cc: Don't try to set up foreign or
	forced unwind types here when using the ARM EABI unwinder.

From-SVN: r125683
2007-06-13 19:31:58 +00:00
Bob Wilson 29dc9e2011 df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM is defined.
* df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
        is defined.

From-SVN: r125682
2007-06-13 18:27:50 +00:00