Commit Graph

78210 Commits

Author SHA1 Message Date
Shujing Zhao
52f84254b2 i386.c: Use REG_P...
2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>

	* config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
	JUMP_TABLE_DATA_P predicates where applicable.
	* config/i386/predicates.md: Ditto.
	* config/i386/sse.md: Ditto.

From-SVN: r147769
2009-05-21 14:01:02 +00:00
Jakub Jelinek
93cac287cb i386.md (adddi_4_rex64, [...]): For operand2 -128 override length_immediate attribute to 1.
* config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
	operand2 -128 override length_immediate attribute to 1.
	* config/i386/predicates.md (constm128_operand): New predicate.

From-SVN: r147767
2009-05-21 15:32:47 +02:00
Jakub Jelinek
a952487c45 i386.c (memory_address_length): Handle %r12 the same as %rsp and %r13 the same as %rbp.
* config/i386/i386.c (memory_address_length): Handle %r12
	the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
	also check REGNO.
	(ix86_attr_length_address_default): For MODE_SI lea in 64-bit
	mode look through optional ZERO_EXTEND and SUBREG.
	* config/i386/i386.md (R12_REG): New define_constant.
	(prefix_data16): For sse unit set also for MODE_TI insns.
	(prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
	insns set if operand 1 is ext_QIreg_operand.
	(modrm): For TYPE_IMOV clear only if not MODE_DI.  For
	TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
	immediate.
	(*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
	mode from MODE_DI to MODE_SI.
	(movdi_1_rex64): Override modrm and length_immediate attributes
	only for movabs (TYPE_IMOV, alternative 2).
	(zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
	(*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
	*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
	*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
	*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
	prefix_rex attribute if DImode.
	(*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
	*addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
	*addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
	*addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
	attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
	(pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
	Likewise.  For TYPE_IMOV clear length_immediate attribute.
	(*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
	*ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
	*ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
	*ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
	*ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
	or one operand TYPE_ISHIFT.
	(*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
	*ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
	*ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
	*ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
	*ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
	*ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
	*ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
	*lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
	*lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
	*lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
	*lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
	*lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
	*lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
	*rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
	*rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
	*rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
	*rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
	set mode attribute, don't override length attribute.
	(*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
	to 1.
	(return_internal_long): Set length attribute to 2 instead of 1.
	(*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
	*cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
	prefix_rex attribute.
	* config/i386/predicates.md (ext_QIreg_operand,
	const128_operand): New predicates.
	(memory_displacement_only_operand): Always return 0 for
	TARGET_64BIT.

From-SVN: r147763
2009-05-21 15:00:30 +02:00
Ramana Radhakrishnan
64af62c2ba thumb2.md (orsi_notsi_si): Fix typo in pattern.
2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	* config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.

From-SVN: r147761
2009-05-21 08:46:40 +00:00
Ian Lance Taylor
c166b8981f tree.c (build_tree_list_vec_stat): New function.
./:	* tree.c (build_tree_list_vec_stat): New function.
	(ctor_to_vec): New function.
	(build_nt_call_vec): New function.
	(build_call_array): Change args to be a const pointer.
	(build_call_vec): New function.
	* tree.h (build_nt_call_vec): Declare.
	(build_tree_list_vec_stat): Declare.
	(build_tree_list_vec): Define.
	(build_call_array): Update declaration.
	(build_call_vec): Declare.
	(ctor_to_vec): Declare.
	* c-common.c (tree_vector_cache): New static variable.
	(make_tree_vector): New function.
	(release_tree_vector): New function.
	(make_tree_vector_single): New function.
	(make_tree_vector_copy): New function.
	* c-common.h (tree_vector_cache, make_tree_vector): Declare.
	(make_tree_vector_single, make_tree_vector_copy): Declare.
	* c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
	(c_parser_expr_list): Don't manage cache here, instead call
	make_tree_vector.
	(c_parser_release_expr_list): Remove static function.
	(c_parser_vec_to_tree_list): Remove static function.
	(c_parser_attributes): Call build_tree_list_vec instead of
	c_parser_vec_to_tree_list.  Call release_tree_vector instead of
	c_parser_release_expr_list.
	(c_parser_postfix_expression_after_primary): Likewise.
	(c_parser_objc_keywordexpr): Likewise.
cp/:
	* parser.c (cp_parser_postfix_expression): Change args to a vec.
	Release it when done.
	(tree_vector): Define typedef.  Define VEC functions.
	(cp_parser_parenthesized_expression_list): Change return type to
	vec.  Change all callers.
	(cp_parser_new_expression): Change placement and initializer to
	vecs.  Release them when done.
	(cp_parser_new_placement): Change return type to vec.  Change all
	callers.
	(cp_parser_new_initializer): Likewise.
	* typeck.c (build_function_call_vec): Just call
	cp_build_function_call_vec.
	(cp_build_function_call): Just build a vec and call
	cp_build_function_call_vec.
	(cp_build_function_call_vec): New function based on old
	cp_build_function_call.
	(convert_arguments): Remove nargs and argarray parameters.  Change
	values to a vec.  Change caller.
	(build_x_compound_expr_from_vec): New function.
	(cp_build_modify_expr): Build vec to pass to
	build_special_member_call.
	* call.c (struct z_candidate): Add first_arg field.  Change args
	field to vec.
	(convert_class_to_reference): Handle first argument separately.
	(add_candidate): Add first_arg parameter.  Change args parameter
	to vec.  Change all callers.
	(add_function_candidate, add_conv_candidate): Likewise.
	(add_template_candidate_real, add_template_candidate): Likewise.
	(add_template_conv_candidate): Likewise.
	(build_user_type_conversion_1): Handle first argument separately.
	(resolve_args): Change return type and parameter type to vecs.
	Change all callers.
	(perform_overload_resolution): Change args parameter to vec.
	Change all callers.
	(build_new_function_call, build_operator_new_call): Likewise.
	(add_candidates): Likewise.
	(build_op_call): New globally visible function, built from and
	replacing static function build_object_call.
	(build_new_op): Don't handle CALL_EXPR.  Build vec, not tree_list,
	of arguments.
	(build_op_delete_call): Build vec to pass to
	cp_build_function_call_vec.
	(build_temp): Build vec to pass to build_special_member_call.
	(convert_like_real): Likewise.
	(perform_direct_initialization_if_possible): Likewise.
	(build_over_call): Handle first_arg field.  Use build_call_array
	rather than build_call_list.
	(build_special_member_call): Change args parameter to vec.  Change
	all callers.
	(build_new_method_call): Likewise.
	* init.c (expand_default_init): Change parms to vec.
	(build_raw_new_expr): Change placement and init to vecs.  Change
	all callers.
	(build_new_1, build_new): Likewise.
	* class.c (resolve_address_of_overloaded_function): Build array to
	pass to fn_type_unification.
	* pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to
	build_new.  For CALL_EXPR create a vec rather than a tree_list;
	expand a pack if necessary.
	(fn_type_unification): Change args parameter to const tree *.  Add
	nargs parameter.  Change all callers.
	(type_unification_real): Likewise.
	(unify): Build array to pass to type_unification_real.
	(get_bindings): Build array to pass to fn_type_unification.
	(any_type_dependent_arguments_p): Change args parameter to a vec.
	Change all callers.
	(make_args_non_dependent): Renamed from build_non_dependent_args.
	Change return type to void.  Change parameter type to vec.  Change
	all callers.
	(do_auto_deduction): Pass an array to type_unification_real.
	* semantics.c (perform_koenig_lookup): Change args to vec.  Change
	all callers.
	(finish_call_expr): Change args to vec.  Change all callers.  Call
	build_op_call instead of passing CALL_EXPR to build_new_op.
	(cxx_omp_create_clause_info): Allocate vec to pass to
	build_special_member_call.
	* decl2.c (build_offset_ref_call_from_tree): Change args parameter
	to vec.  Change all callers.
	* name-lookup.c (lookup_function_nonclass): Likewise.
	(struct arg_lookup): Change args to vec.
	(arg_assoc_namespace): Handle args as a vec.
	(arg_assoc_args_vec): New static function.
	(lookup_arg_dependent): Change args parameter to vec.  Change all
	callers.
	* method.c (do_build_assign_ref): Allocate vec to pass to
	build_special_member_call.
	* except.c (build_throw): Likewise.
	* typeck2.c (build_functional_cast): Likewise.
	* cvt.c (ocp_convert): Likewise.
	* tree.c (build_min_non_dep_call_vec): Change last parameter to
	vec.  Change all callers.
	* cp-tree.h: Update declarations.
	* name-lookup.h: Update declarations.
objc/:
	* objc-act.c (objc_generate_cxx_ctor_or_dtor): Pass NULL rather
	than NULL_TREE to build_special_member_call.

From-SVN: r147759
2009-05-21 05:58:39 +00:00
Sandra Loosemore
40449a90d7 tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE...
2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
	TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
	TARGET_CONVERT_TO_TYPE.
	* hooks.c (hook_tree_const_tree_null): Define.
	* hooks.h (hook_tree_const_tree_null): Declare.
	* target.h (struct gcc_target):  Add invalid_parameter_type,
	invalid_return_type, promoted_type, and convert_to_type fields.
	* target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
	(TARGET_INVALID_RETURN_TYPE): Define.
	(TARGET_PROMOTED_TYPE): Define.
	(TARGET_CONVERT_TO_TYPE): Define.
	(TARGET_INITIALIZER): Update for new fields.
	* c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
	(grokparms): Check targetm.invalid_parameter_type.
	* c-typeck.c (default_conversion): Check targetm.promoted_type.
	* c-convert.c (convert): Check targetm.convert_to_type.

	gcc/cp/
	* typeck.c (default_conversion): Check targetm.promoted_type.
	* decl.c (grokdeclarator): Check targetm.invalid_return_type.
	(grokparms): Check targetm.invalid_parameter_type.
	* cvt.c (ocp_convert): Check targetm.convert_to_type.
	(build_expr_type_conversion): Check targetm.promoted_type.

From-SVN: r147758
2009-05-20 23:06:12 -04:00
GCC Administrator
f256c06431 Daily bump.
From-SVN: r147755
2009-05-21 00:16:48 +00:00
Adam Nemet
642d97ff00 * config/mips/mips.md (*extenddi_truncate<mode>,
*extendsi_truncate<mode>): Emit exts if supported.  Add attribute
	defintions.
	(*extendhi_truncateqi): New define_insn_and_sptit.

testsuite/
	* gcc.target/mips/octeon-exts-6.c: New test.
	* gcc.target/mips/extend-1.c: New test.
	* gcc.target/mips/octeon-exts-2.c: Adjust to not match sign-extension
	EXTS.
	* gcc.target/mips/octeon-exts-5.c: Likewise.

From-SVN: r147751
2009-05-20 21:47:57 +00:00
Jakub Jelinek
776248b87e re PR middle-end/40204 (segfault with bitfields in structs)
PR middle-end/40204
	* fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
	recursion if build_int_cst_type returns the same INTEGER_CST as
	arg1.

	* gcc.c-torture/compile/pr40204.c: New test.

From-SVN: r147749
2009-05-20 23:09:11 +02:00
Eric Botcazou
00c5fa1bca Fix formatting
From-SVN: r147740
2009-05-20 16:14:16 +00:00
Eric Botcazou
d98e868633 fold-const.c (build_fold_addr_expr_with_type): Take the address of the operand of VIEW_CONVERT_EXPR.
* fold-const.c (build_fold_addr_expr_with_type): Take the address of
	the operand of VIEW_CONVERT_EXPR.

From-SVN: r147739
2009-05-20 16:01:41 +00:00
H.J. Lu
37c5043589 driver-i386.c (host_detect_local_cpu): Check extended family and model for Intel processors.
2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/driver-i386.c (host_detect_local_cpu): Check
	extended family and model for Intel processors.  Support Intel
	Atom.

From-SVN: r147736
2009-05-20 06:32:14 -07:00
Olivier Hainque
dbb6088f89 gstab.h (stab_code_type): Define, to be used instead of the __stab_debug_code enum, made anonymous.
* gstab.h (stab_code_type): Define, to be used instead of the
	__stab_debug_code enum, made anonymous.  Add 2009 to the copyright
	notice.
	* dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
	occurrences by stab_code_type.
	* mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.

From-SVN: r147734
2009-05-20 12:44:44 +00:00
Martin Jambor
7ec492570b tree-flow.h (insert_edge_copies_seq): Undeclare.
2009-05-20  Martin Jambor  <mjambor@suse.cz>

	* tree-flow.h (insert_edge_copies_seq): Undeclare.
	(sra_insert_before): Likewise.
	(sra_insert_after): Likewise.
	(sra_init_cache): Likewise.
	(sra_type_can_be_decomposed_p): Likewise.
	* tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
	* tree-sra.c (sra_type_can_be_decomposed_p): Made static.
	(sra_insert_before): Likewise.
	(sra_insert_after): Likewise.
	(sra_init_cache): Likewise.
	(insert_edge_copies_seq): Made static and moved upwards.

	* tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
	case.

	* tree-flow-inline.h (contains_view_convert_expr_p): New function.

	* ipa-prop.c (get_ssa_def_if_simple_copy): New function.
	(determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
	simple copies.

From-SVN: r147733
2009-05-20 12:18:10 +02:00
Eric Botcazou
3f6f0eb2e4 decl.c (gnat_to_gnu_entity): When discriminants affect the shape of the subtype...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: When
	discriminants affect the shape of the subtype, retrieve the GCC type
	directly from the original field if the GNAT types for the field and
	the original field are the same.

From-SVN: r147732
2009-05-20 08:29:05 +00:00
Richard Guenther
0328ae4d56 expr.c (expand_expr_real_1): Avoid calling do_store_flag with mismatched comparison modes.
2009-05-20  Richard Guenther  <rguenther@suse.de>

	* expr.c (expand_expr_real_1): Avoid calling do_store_flag
	with mismatched comparison modes.

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

From-SVN: r147731
2009-05-20 08:19:50 +00:00
Ramana Radhakrishnan
a7994a57b9 Fix Thumb2 bic orn
2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
    
	* config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
        (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
        * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
        with shifts for Thumb2.
        (orsi_notsi): New for orn.
        (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
        (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
        * config/arm/arm.c (const_ok_for_op): Split case for IOR for
        Thumb2.
        (arm_gen_constant): Set can_invert for IOR and Thumb2, Add
        comments. Don't invert remainder for IOR.

From-SVN: r147729
2009-05-20 05:40:17 +00:00
Zdenek Dvorak
e36dc33956 re PR tree-optimization/40087 (Number of iterations analysis wrong)
PR tree-optimization/40087
	* tree-ssa-loop-niter.c (number_of_iterations_ne_max,
	number_of_iterations_ne): Rename never_infinite argument.
	(number_of_iterations_lt_to_ne, number_of_iterations_lt,
	number_of_iterations_le): Handle pointer-type ivs when
	exit_must_be_taken is false.
	(number_of_iterations_cond):  Do not always assume that
	exit_must_be_taken if the control variable is a pointer.

	* gcc.dg/tree-ssa/pr40087.c: New test.

From-SVN: r147727
2009-05-20 00:33:54 +00:00
GCC Administrator
03d33c2a44 Daily bump.
From-SVN: r147726
2009-05-20 00:16:48 +00:00
Andrew Pinski
5cfd5d9b8f c-typeck.c (build_binary_op): Allow % on integal vectors.
2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * c-typeck.c (build_binary_op): Allow % on integal vectors.
        * doc/extend.texi (Vector Extension): Document that % is allowed too.

009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * typeck.c (build_binary_op): Allow % on integal vectors.

2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * gcc.dg/vector-4.c: New testcase.
        * gcc.dg/simd-1b.c: % is now allowed for integer vectors.
        * g++.dg/ext/vector16.C: New testcase.

From-SVN: r147722
2009-05-19 16:14:10 -07:00
H.J. Lu
dae279f018 re PR c/40172 (Revision 147596 breaks bootstrap)
2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>

	PR c/40172
	* gcc.dg/pr40172.c: Renamed to ...
	* gcc.dg/pr40172-1.c: This.

	* gcc.dg/pr40172-2.c: New.
	* gcc.dg/pr40172-3.c: Likewise.

From-SVN: r147719
2009-05-19 14:17:00 -07:00
H.J. Lu
2f1c7156ef i386.c (ix86_avoid_jump_mispredicts): Check ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
	ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.

From-SVN: r147718
2009-05-19 13:11:55 -07:00
Manuel López-Ibáñez
7bb2707483 re PR c/40172 (Revision 147596 breaks bootstrap)
2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/40172
gcc/
	* c.opt (Wlogical-op): Disabled by default.
	* c-opt (c_common_post_options): Do not enable Wlogical-op with
	Wextra.
	* doc/invoke.texi (Wlogical-op): Likewise.
testsuite/
	* gcc.dg/pr40172.c: Add -Wlogical-op to dg-options.

From-SVN: r147717
2009-05-19 19:29:27 +00:00
Eric Botcazou
5aefc6a0f0 tree-scalar-evolution.c (follow_ssa_edge_expr): Turn into CASE_CONVERT.
* tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
	into CASE_CONVERT.
	<PLUS_EXPR>: Strip useless type conversions instead of type nops.
	Propagate the type of the first operand.
	<ASSERT_EXPR>: Simplify.
	(follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
	Rewrite using the RHS code as discriminant.
	<NOP_EXPR>: Turn into CASE_CONVERT.
	<PLUS_EXPR>: Propagate the type of the first operand.

From-SVN: r147716
2009-05-19 19:14:42 +00:00
Steve Ellcey
f3a8311127 ia64-protos.h (ia64_dconst_0_5): New.
* config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
	(ia64_dconst_0_375): New.
	* config/ia64/ia64.c (ia64_override_options): Remove
	-minline-sqrt-min-latency warning.
	(ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
	(ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
	* config/ia64/ia64.md (*sqrt_approx): Remove.
	(sqrtsf2): Remove #if 0.
	(sqrtsf2_internal_thr): Rewrite and move to div.md.
	(sqrtdf): Remove assert.
	(sqrtdf2_internal_thr): Rewrite and move to div.md.
	(sqrtxf2): Remove #if 0.
	(sqrtxf2_internal_thr): Rewrite and move to div.md.
	* div.md (sqrt_approx_rf): New.
	(sqrtsf2_internal_thr): New implementation.
	(sqrtsf2_internal_lat): New.
	(sqrtdf2_internal_thr: New implementation.
	(sqrtxf2_internal): New implementation.

From-SVN: r147713
2009-05-19 18:18:08 +00:00
Francois-Xavier Coudert
1ffc7157ef * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
(WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
	(INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
	(INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
	(UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
	(INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
	(UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
	(INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
	(UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
	(SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
	* c-common.c: ...from here.

Co-Authored-By: Hans-Peter Nilsson <hp@axis.com>

From-SVN: r147712
2009-05-19 18:12:57 +00:00
H.J. Lu
e9351712b5 Replace spaces with tab.
From-SVN: r147709
2009-05-19 09:06:46 -07:00
Manuel López-Ibáñez
db91d9ef7b c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* c-common.c (warn_logical_operator): Remove unnecessary
	conditionals.

From-SVN: r147708
2009-05-19 15:41:17 +00:00
Kaveh R. Ghazi
bbb9d91f19 builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
* builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.

From-SVN: r147707
2009-05-19 14:56:05 +00:00
Ben Elliston
ce883f549b unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning assignments with memcpy calls.
* unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
	assignments with memcpy calls.
	(add_fdes): Likewise.
	(binary_search_unencoded_fdes): Likewise.
	(linear_search_fdes): Eliminate type puns.

From-SVN: r147705
2009-05-19 23:24:30 +10:00
Richard Guenther
377f099ab8 tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not falsely claim to have propagated into all uses.
2009-05-19  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
	not falsely claim to have propagated into all uses.

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

From-SVN: r147702
2009-05-19 11:51:54 +00:00
GCC Administrator
d99e5e9584 Daily bump.
From-SVN: r147688
2009-05-19 00:16:50 +00:00
Ben Elliston
848bc769a5 invoke.texi (C Dialect Options): Update OpenMP specification version to v3.0.
* doc/invoke.texi (C Dialect Options): Update OpenMP specification
	version to v3.0.

From-SVN: r147682
2009-05-19 09:41:55 +10:00
Kaz Kojima
1bb99877d3 sh-protos.h (sh_legitimate_address_p): Remove.
* config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
	* config/sh/sh.c (sh_legitimate_address_p): Make static.
	(TARGET_LEGITIMATE_ADDRESS_P): New.
	* config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
	* config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.

From-SVN: r147679
2009-05-18 22:31:46 +00:00
Jason Merrill
e57d93c6bc Implement explicit conversions ops as specified in N2437.
* decl.c (grokdeclarator): Handle explicit conversion ops.
	(check_initializer): Pass flags to store_init_value.
	* decl2.c (maybe_emit_vtables): Likewise.
	* init.c (expand_aggr_init_1): Likewise.
	* call.c (convert_class_to_reference): Take flags parm,
	check DECL_NONCONVERTING_P.
	(build_user_type_conversion_1): Check DECL_NONCONVERTING_P.
	(add_builtin_candidates): Simplify getting type of conversion.
	(build_object_call): Likewise.  Check DECL_NONCONVERTING_P.
	(implicit_conversion): Pass through LOOKUP_ONLYCONVERTING.
	(reference_binding): Take flags parm.  Direct-initialize copy parm.
	(add_function_candidate): Direct-initialize the copy parm.
	(add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL.
	(build_builtin_candidate): Add LOOKUP_ONLYCONVERTING.
	(conditional_conversion): Likewise.
	(convert_like_real): Only complain about DECL_NONCONVERTING_P
	constructors.
	(perform_implicit_conversion_flags): Add flags parm to
	perform_implicit_conversion.  Improve diagnostics.
	* cp-tree.h (LOOKUP_IMPLICIT): New macro.
	(LOOKUP_COPY_PARM): New bit macro.
	* cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P.
	* typeck.c (convert_for_assignment): Take flags parm, pass it to
	perform_implicit_conversion_flags.
	(cp_build_modify_expr): Pass flags to convert_for_assignment.
	(convert_for_initialization): Likewise.
	* typeck2.c (store_init_value): Take flags parm, pass to
	digest_init_flags.
	(digest_init_flags): Add flags parm to digest_init.
	(digest_init_r): Take flags parm, pass to convert_for_initialization.
	(process_init_constructor_array): Pass it.
	(process_init_constructor_record): Likewise.
	(process_init_constructor_union): Likewise.

From-SVN: r147677
2009-05-18 17:48:02 -04:00
Dodji Seketeli
82725547db re PR debug/40109 (Incorrect debug info nesting for typedef statements within namespaces)
Fix for PR debug/40109

gcc/ChangeLog:
PR debug/40109
* dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
child of the containing namespace's DIE.

gcc/testsuite/ChangeLog:
PR debug/40109
* g++.dg/debug/dwarf2/nested-1.C: New test.

From-SVN: r147674
2009-05-18 21:19:52 +02:00
Adam Nemet
f6a1e4301a * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
*zero_extendhi_truncqi):  Move after the zero_extend patterns.
	(*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
	extend patterns.

From-SVN: r147673
2009-05-18 18:43:25 +00:00
H.J. Lu
6a90d232ab re PR target/39942 (Nonoptimal code - leaveq; xchg %ax,%ax; retq)
2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/39942
	* config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
	gen_align with gen_pad.
	(ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
	#ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.

	* config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
	* config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.

	* config/i386/i386.md (align): Renamed to ...
	(pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
	ASM_OUTPUT_MAX_SKIP_PAD.

From-SVN: r147671
2009-05-18 10:21:13 -07:00
H.J. Lu
cf249b02ea re PR testsuite/39907 (Aligned access to unaligned address)
2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR testsuite/39907
	* gcc.target/x86_64/abi/asm-support.S (snapshot_ret): Preserve
	stack alignment.

From-SVN: r147667
2009-05-18 09:53:25 -07:00
Andreas Schwab
3f1c917c5d * config.gcc: Fix variable syntax.
From-SVN: r147666
2009-05-18 16:49:50 +00:00
Andreas Schwab
06555043e5 * config.gcc: Fix variable syntax.
From-SVN: r147665
2009-05-18 16:22:47 +00:00
Andreas Schwab
c4406f7429 re PR target/39531 (m68k gcc does not convert andil to bclr when compiled on a 64bit host)
PR target/39531
* config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
before calling exact_log2.
(output_iorsi3): Likewise.
(output_xorsi3): Likewise.

From-SVN: r147664
2009-05-18 15:36:18 +00:00
Janus Weil
e35bbb23ad re PR fortran/40164 (Fortran 2003: "Arrays of procedure pointers" (using PPCs))
2009-05-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/40164
	* primary.c (gfc_match_rvalue): Handle procedure pointer components in
	arrays.
	* resolve.c (resolve_ppc_call,resolve_expr_ppc): Resolve component and
	array references.
	(resolve_fl_derived): Procedure pointer components are not required to
	have constant array bounds in their return value.


2009-05-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/40164
	* gfortran.dg/proc_ptr_comp_8.f90: New.

From-SVN: r147663
2009-05-18 16:44:55 +02:00
Janus Weil
9b2db7be32 intrinsic.c (add_sym): Fix my last commit (r147655), which broke bootstrap.
2009-05-18  Janus Weil  <janus@gcc.gnu.org>

	* intrinsic.c (add_sym): Fix my last commit (r147655),
	which broke bootstrap.

From-SVN: r147662
2009-05-18 15:56:44 +02:00
Kaz Kojima
9905269286 sh.c (expand_cbranchdi4): Use a scratch register for the none zero constant operand except for EQ and NE...
* config/sh/sh.c (expand_cbranchdi4): Use a scratch register
	for the none zero constant operand except for EQ and NE
	comprisons even when the first operand is R0.

From-SVN: r147661
2009-05-18 12:53:22 +00:00
Andreas Krebbel
f4aa38482c 2064.md: Remove trailing whitespaces.
2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/2064.md: Remove trailing whitespaces.
	* config/s390/2084.md: Likewise.
	* config/s390/constraints.md: Likewise.
	* config/s390/fixdfdi.h: Likewise.
	* config/s390/libgcc-glibc.ver: Likewise.
	* config/s390/s390-modes.def: Likewise.
	* config/s390/s390-protos.h: Likewise.
	* config/s390/s390.c: Likewise.
	* config/s390/s390.h: Likewise.
	* config/s390/s390.md: Likewise.
	* config/s390/tpf-unwind.h: Likewise.

From-SVN: r147660
2009-05-18 12:33:55 +00:00
Richard Guenther
bfa31dad8a re PR tree-optimization/40168 (finding common subexpressions)
2009-05-18  Richard Guenther  <rguenther@suse.de>

	PR fortran/40168
	* trans-expr.c (gfc_trans_zero_assign): For local array
	destinations use an assignment from an empty constructor.

	* gfortran.dg/array_memset_2.f90: Adjust.

From-SVN: r147659
2009-05-18 10:24:34 +00:00
Maxim Kuvyrkov
ab7256e4ce * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
From-SVN: r147656
2009-05-18 10:12:44 +00:00
Janus Weil
23e38561c5 re PR fortran/36947 (Attributes not fully checked comparing actual vs dummy procedure)
2009-05-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/36947
	PR fortran/40039
	* expr.c (gfc_check_pointer_assign): Check intents when comparing
	interfaces.
	* gfortran.h (typedef struct gfc_intrinsic_arg): Add 'intent' member.
	(gfc_compare_interfaces): Additional argument.
	* interface.c (operator_correspondence): Add check for equality of
	intents, and new argument 'intent_check'.
	(gfc_compare_interfaces): New argument 'intent_check', which is passed
	on to operator_correspondence.
	(check_interface1): Don't check intents when comparing interfaces.
	(compare_parameter): Do check intents when comparing interfaces.
	* intrinsic.c (add_sym): Add intents for arguments of intrinsic
	procedures.
	(add_sym_1,add_sym_1s,add_sym_1m,add_sym_2,add_sym_2s,add_sym_3,
	add_sym_3ml,add_sym_3red,add_sym_3s,add_sym_4): Use INTENT_IN by
	default.
	(add_sym_1_intent,add_sym_1s_intent,add_sym_2s_intent,add_sym_3s_intent)
	: New functions to add intrinsic symbols, specifying custom intents.
	(add_sym_4s,add_sym_5s): Add new arguments to specify intents.
	(add_functions,add_subroutines): Add intents for various intrinsics.
	* resolve.c (check_generic_tbp_ambiguity): Don't check intents when
	comparing interfaces.
	* symbol.c (gfc_copy_formal_args_intr): Copy intent.


2009-05-18  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/36947
	PR fortran/40039
	* gfortran.dg/interface_27.f90: New.
	* gfortran.dg/interface_28.f90: New.
	* gfortran.dg/proc_ptr_11.f90: Fixing invalid test case.
	* gfortran.dg/proc_ptr_result_1.f90: Ditto.

From-SVN: r147655
2009-05-18 11:19:20 +02:00
Maxim Kuvyrkov
75df395f15 M68K TLS support.
* configure.ac (m68k-*-*): Check if binutils support TLS.
	* configure: Regenerate.
	* config/m68k/predicates.md (symbolic_operand): Extend comment.
	* config/m68k/constraints.md (Cu): New constraint.
	* config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
	(UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
	(movsi): Handle TLS symbols.
	(addsi3_5200): Handle XTLS symbols, indent.
	* config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
	(m68k_tls_reference_p): Declare.
	(m68k_legitimize_address): Declare.
	(m68k_unwrap_symbol): Declare.
	* config/m68k/m68k.opt (mxtls): New option.
	* config/m68k/m68k.c (ggc.h): Include.
	(m68k_output_dwarf_dtprel): Implement hook.
	(TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
	(m68k_expand_prologue): Load GOT pointer when function needs it.
	(m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
	(m68k_legitimate_constant_address_p): Same.
	(m68k_decompose_address): Handle TLS references.
	(m68k_get_gp): New static function.
	(enum m68k_reloc): New contants.
	(TLS_RELOC_P): New macro.
	(m68k_wrap_symbol): New static function.
	(m68k_unwrap_symbol): New function.
	(m68k_final_prescan_insn_1): New static function.
	(m68k_final_prescan_insn): New function.
	(m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
	functions.
	(legitimize_pic_address): Handle TLS references..
	(m68k_tls_get_addr, m68k_get_tls_get_addr)
	(m68k_libcall_value_in_a0_p)
	(m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
	(m68k_call_m68k_read_tp): Helper variables and functions for ...
	(m68k_legitimize_tls_address): Handle TLS references.
	(m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
	New functions.
	(m68k_legitimize_address): Handle TLS symbols.
	(m68k_get_reloc_decoration): New static function.
	(m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
	UNSPEC_RELOC32.
	(m68k_output_dwarf_dtprel): Implement hook.
	(print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
	(m68k_libcall_value): Return result in A0 instead of D0 when asked by
	m68k_call_* routines.
	(sched_attr_op_type): Handle TLS symbols.
	(gt-m68k.h): Include.
	* config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
	(LEGITIMATE_PIC_OPERAND_P): Support TLS.

	* gcc.target/m68k/tls-ie.c: New test.
	* gcc.target/m68k/tls-le.c: New test.
	* gcc.target/m68k/tls-gd.c: New test.
	* gcc.target/m68k/tls-ld.c: New test.
	* gcc.target/m68k/tls-ie-xgot.c: New test.
	* gcc.target/m68k/tls-le-xtls.c: New test.
	* gcc.target/m68k/tls-gd-xgot.c: New test.
	* gcc.target/m68k/tls-ld-xgot.c: New test.
	* gcc.target/m68k/tls-ld-xtls.c: New test.
	* gcc.target/m68k/tls-ld-xgot-xtls.c: New test.

From-SVN: r147654
2009-05-18 07:54:44 +00:00