Commit Graph

985 Commits

Author SHA1 Message Date
Jakub Jelinek
ead51d3654 re PR c/35430 (ICE with complex arithmetic)
PR c/35430
	* c-common.c (warn_for_sign_compare): For complex result_type
	use component's type.

	* gcc.dg/pr35430.c: New test.
	* g++.dg/warn/Wsign-compare-2.C: New test.

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

From-SVN: r141587
2008-11-04 21:51:38 +01:00
Jakub Jelinek
cbc19f3932 re PR c/37106 (ICE with -fpic or -fPIC: in mems_in_disjoint_alias_sets_p, at alias.c:278)
PR c/37106
	* c-common.c (parse_optimize_options): Save and restore
	flag_strict_aliasing around decode_options call.

	* gcc.dg/pr37106-1.c: New test.
	* gcc.dg/pr37106-2.c: New test.

From-SVN: r141584
2008-11-04 21:06:33 +01:00
Manuel López-Ibáñez
cdd6a337c0 re PR middle-end/11492 (Bogus warning with -Wsign-compare)
2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 11492
	* c-common.c (min_precision): Move to...
	* tree.c (tree_int_cst_min_precision): ... to here. Renamed.
	* tree.h (tree_int_cst_min_precision): Declare.
	* c-common.h (min_precision): Delete declaration.
	* fold-const.c (tree_binary_nonnegative_warnv_p): Handle
	multiplication of non-negative integer constants.
	* c-decl.c (check_bitfield_type_and_width): Rename min_precision to
	tree_int_cst_min_precision.
	(finish_enum): Likewise.
cp/
	* class.c (check_bitfield_decl): Rename min_precision to
	tree_int_cst_min_precision.
	* decl.c (finish_enum): Likewise.
testsuite/
	* gcc.dg/pr11492.c: New.
	* g++.dg/warn/pr11492.C: New.

From-SVN: r141434
2008-10-29 17:16:46 +00:00
Manuel López-Ibáñez
100d537d7a re PR c/7543 (no warning for always-false "if (!a & 0x4)" bitwise and on boolean value)
2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c/7543
	* value-prof.c (gimple_stringop_fixed_value): Use parentheses
	around bit operation.
	* profile.c (is_edge_inconsistent): Likewise.
	* fold-const.c (truth_value_p): Move from here...
	* tree.h (truth_value_p): ... to here.
	* c-tree.h (c_expr): Update description of original_code.
	* c-typeck.c (parser_build_unary_op): Set original_code.
	(parser_build_binary_op): Update call to warn_about_parentheses.
	* c-common.c (warn_about_parentheses): Take two additional
	arguments of the operands. Use a switch. Quote operators
	appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
	Add warning about !x | y and !x & y.
	* c-common.h (warn_about_parentheses): Update declaration.
cp/	
	* typeck.c (build_x_binary_op): Update call to
	warn_about_parentheses.
	* parser.c (cp_parser_binary_expression): Add note about passing
	the correct code for unary expressions.
testsuite/
	* gcc.dg/Wparentheses-11.c: New.
	* g++.dg/warn/Wparentheses-25.C: New. XFAILED.

From-SVN: r141340
2008-10-24 10:09:06 +00:00
Aldy Hernandez
c9f9eb5d07 c-decl.c (finish_decl): Pass input_location to build_unary_op.
* c-decl.c (finish_decl): Pass input_location to build_unary_op.
	* c-typeck.c (array_to_pointer_conversion): Pass location to
	build_unary_op.
	(function_to_pointer_conversion): Use error_at and warning_at.
	(build_indirect_ref): Same.
	(build_array_ref): Pass location to build_binary_op.
	(parser_build_unary_op): Do not set location after calling
	build_unary_op.
	(build_unary_op): Add location argument.  Use it throughout.  Set
	EXPR_LOCATION before returning new tree.
	(build_modify_expr): Same.
	(build_binary_op): Use location throughout.  Set EXPR_LOCATION before
	returning node.
	* c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
	build_indirect_ref, build_modify_expr.
	(c_finish_omp_for): Same.  Use error_at instead of error.
	* c-common.c (c_common_truthvalue_conversion): Pass location to
	build_unary_op.
	(warn_for_div_by_zero): Add location argument.
	* c-common.h: Add argument to build_modify_expr, build_indirect_ref,
	build_unary_op, warn_for_div_by_zero.
	* c-parser.c (c_parser_typeof_specifier): Use
	protected_set_expr_location.
	(c_parser_statement_after_labels): Same.
	(c_parser_condition): Same.
	(c_parser_expr_no_commas): Pass correct location to build_modify_expr.
	(c_parser_conditional_expression): Use protected_set_expr_location.
	(c_parser_unary_expression): Pass location to build_indirect_ref.
	(c_parser_postfix_expression_after_primary): Pass location to
	build_indirect_ref, build_unary_op.
	(c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
objc/
	* objc-act.c (objc_build_string_object): Pass location to
	build_unary_op.
	(init_def_list): Same.
	(init_objc_symtab): Same.
	(init_module_descriptor): Same.
	(build_module_initializer_routine): Same.
	(generate_static_references): Same.
	(build_typed_selector_reference): Same.
	(add_objc_string): Same.
	(objc_substitute_decl): Same.
	(objc_build_ivar_assignment): Same.
	(objc_build_global_assignment): Same.
	(objc_build_strong_cast_assignment): Same.
	(generate_protocols): Same.
	(build_protocol_initializer): Same.
	(build_dispatch_table_initializer): Same.
	(generate_protocol_list): Same.
	(build_category_initializer): Same.
	(build_shared_structure_initializer): Same.
	(generate_shared_structures): Same.
	(objc_build_protocol_expr): Same.
	(build_ivar_reference): Same.
	(get_super_receiver): Same.
	build_modify_expr.
testsuite/
	* gcc.dg/gomp/for-1.c: Test column.
	* gcc.dg/misc-column.c: Add column tests for unary arguments.
cp/
	* typeck.c (build_x_indirect_ref): Add location argument.
	(cp_build_binary_op): Pass location to warn_for_div_by_zero.
	(cp_build_unary_op): Add location argument.
	(cp_build_modify_expr): Same.
	* class.c (build_base_path): Pass location to build_indirect_ref.
	* semantics.c (handle_omp_for_class_iterator): Pass elocus to
	build_modify_expr.

From-SVN: r140914
2008-10-06 21:35:02 +00:00
Paolo Bonzini
626c34b5c9 c-common.c (empty_if_body_warning): Remove.
2008-09-30  Paolo Bonzini  <bonzini@gnu.org>

	* c-common.c (empty_if_body_warning): Remove.
	* c-common.h (empty_if_body_warning): Remove.
	* c-parser.c (c_parser_if_body, c_parser_else_body): Implement
	here the -Wempty-body warning for `if' and `else' statements.
	* c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.

cp:
2008-09-30  Paolo Bonzini  <bonzini@gnu.org>

	* parser.c (cp_parser_selection_statement): Implement here the
	-Wempty-body warning for `if' and `else' statements.
	* semantics.c (finish_if_stmt): Do not call empty_body_warning.

testsuite:
2008-09-30  Paolo Bonzini  <bonzini@gnu.org>

	* g++.dg/warn/if-empty-1.C: Copy from gcc.dg/if-empty-1.c.

From-SVN: r140780
2008-09-30 09:52:41 +00:00
Jakub Jelinek
e7b012c044 re PR c/37645 (ICE with weakref attribute)
PR c/37645
	* c-common.c (handle_weakref_attribute): Ignore the attribute unless
	the decl is a VAR_DECL or FUNCTION_DECL.

	* gcc.dg/pr37645.c: New test.

From-SVN: r140680
2008-09-26 07:09:29 +02:00
Aldy Hernandez
3ba09659f1 c-common.c (fname_decl): New location argument.
* c-common.c (fname_decl): New location argument.
        * c-common.h (fname_decl): Same.
        * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
        {warning,error}.
        (c_parser_typeof_specifier): Same.
        (c_parser_parms_list_declarator): Same.
        (c_parser_asm_string_literal): Same.
        (c_parser_compound_statement_nostart): Same.
        (c_parser_label): Same.
        (c_parser_do_statement): Same.
        (c_parser_asm_statement): Same.
        (c_parser_unary_expression): Same.
        (c_parser_sizeof_expression): Same.
        (c_parser_postfix_expression): Same.
        (c_parser_pragma): Same.
        (c_parser_omp_clause_collapse): Same.
        (c_parser_omp_clause_num_threads): Same.
        (c_parser_omp_clause_schedule): Same.
        (c_parser_omp_all_clauses): Same.
        (c_parser_omp_sections_scope): Same.
        (c_parser_omp_for_loop): Same.  Pass condition's location to
        c_objc_common_truthvalue_conversion.
        (c_parser_enum_specifier): Remove comment.
testsuite/
        * gcc.dg/gomp/for-1.c: Test for columns.
        * gcc.dg/func-outside-1.c: Same.
        * gcc.dg/bitfld-7.c: Same.
cp/
        * semantics.c (finish_fname): Pass location to fname_decl.

From-SVN: r140642
2008-09-24 20:00:43 +00:00
Aldy Hernandez
ba47d38d4c c-tree.h: Add argument to c_objc_common_truthvalue_conversion, parser_build_binary_op.
* c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
        parser_build_binary_op.
        * c-decl.c (build_enumerator): Pass location to build_binary_op.
        * c-typeck.c (build_array_ref): Same.
        (parser_build_unary_op): New location argument.
        (pointer_diff): Pass location to build_binary_op,
        c_objc_common_truthvalue_conversion.
        (build_modify_expr): Same.
        (build_unary_op): New location argument.
        (build_binary_op): New location argument.
        (c_objc_common_truthvalue_conversion): Pass location to
        c_*common_truthvalue_conversion.
        * c-convert.c (convert): Same.
        * c-common.c (binary_op_error): New location argument.
        (pointer_int_sum): Pass location to build_binary_op.
        (c_common_truthvalue_conversion): New location argument.
        (warn_for_sign_compare): Same.
        * c-common.h: Add location argument to c_common_truthvalue_conversion,
        binary_op_error, build_binary_op, warn_for_sign_compare.
        * c-parser.c (c_parser_condition): Pass location to
        c_*common_truthvalue_conversion.
        (c_parser_conditional_expression): Save condition's location and pass
        it on down.
        (c_parser_binary_expression): Same, but for the binary operator's
        location.
        (c_parser_omp_for_loop): Pass location to
        c_objc_common_truthvalue_conversion.
objc/
        * objc-act.c (next_sjlj_build_enter_and_setjmp): Call
        c_common_truthvalue_conversion with location.
        (next_sjlj_build_catch_list): Same.
        (next_sjlj_build_try_catch_finally): Same.
testsuite/
        * gcc.dg/Walways-true-1.c: Test column numbers.
        * gcc.dg/c90-const-expr-5.c: Same.
        * gcc.dg/compare4.c: Same.
        * gcc.dg/Werror-1.c: Same.
cp/
        * typeck.c (build_array_ref): Pass location to cp_build_binary_op.
        (get_member_function_from_ptrfunc): Same.
        (build_x_binary_op): Same.
        (build_binary_op): Same.
        (cp_build_binary_op): New location argument.
        (pointer_diff): Pass location to cp_build_binary_op.
        (cp_truthvalue_conversion): Pass location to build_binary_op.
        (convert_ptrmem): Pass location to cp_build_binary_op.
        (cp_build_modify_expr): Same.
        (build_ptrmemfunc): Same.
        * init.c (expand_cleanup_for_base): Pass location to
        c_common_truthvalue_conversion.
        (build_new_1): Pass location to cp_build_binary_op.
        (build_vec_delete_1): Pass location to *build_binary_op,
        c_common_truthvalue_conversion.
        (build_vec_init): Same.
        (build_delete): Same.
        * decl.c (compute_array_index_type): Same.
        * call.c (build_new_op): Same.
        * rtti.c (build_dynamic_cast_1): Same.
        * cp-tree.h: Add argument to cp_build_binary_op.
        * semantics.c (handle_omp_for_class_iterator): Pass location to
        *build_binary_op, c_common_truthvalue_conversion.
        * decl2.c (get_guard_cond): Same.

From-SVN: r140598
2008-09-23 14:55:14 +00:00
Paolo Bonzini
0c03f46fcb c-common.c (c_expand_decl): Remove.
2008-09-09  Paolo Bonzini  <bonzini@gnu.org>

	* c-common.c (c_expand_decl): Remove.
	* c-common.h (anon_aggr_type_p): Remove prototype.
	(DECL_ANON_UNION_ELEMS): Remove.
	* c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
	* c-decl.c (anon_aggr_type_p): Remove.
	* langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
	(LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
	* langhooks.h (struct lang_hooks): Remove expand_decl.
	* langhooks.c (lhd_expand_decl): Remove.
	* stmt.c (expand_anon_union_decl): Remove.
	* tree.h (expand_anon_union_decl): Remove prototype.

cp:
2008-09-09  Paolo Bonzini  <bonzini@gnu.org>

	* cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
	* cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
	* semantics.c (anon_aggr_type_p): Remove.

From-SVN: r140138
2008-09-09 08:56:58 +00:00
Aldy Hernandez
6a3799eb00 tree.c (protected_set_expr_location): New.
* tree.c (protected_set_expr_location): New.
        * tree.h (protected_set_expr_location): New prototype.
        * c-tree.h (build_array_ref): Add argument.
        (parser_build_unary_op): Same.
        * c-typeck.c (build_indirect_ref): Handle new location argument.
        (build_array_ref): Same.
        (parser_build_unary_op): Same.
        * gimplify.c (gimplify_asm_expr): Set input_location before calling
        error.
        * c-omp.c (c_finish_omp_atomic): Pass location when calling
        build_indirect_ref.
        * c-common.c (finish_label_address_expr): Handle new location
        argument.
        * c-common.h (build_indirect_ref): Add argument.
        (finish_label_address_expr): Same.
        * c-parser.c (c_parser_unary_expression): Pass location to build
        functions.
        (c_parser_postfix_expression): Same.
objc/
        * objc-act.c (build_typed_selector_reference): Pass input_location to
        build_unary_op calls.
        (build_selector_reference): Same, but to build_array_ref.
        (objc_substitute_decl): Same.
        (build_ivar_reference): Same, but to build_indirect_ref.
        (get_super_receiver): Same.
testsuite/
        * gcc.dg/20010516-1.c: Test for columns.
cp/
        * typeck.c (build_x_indirect_ref): Add location argument.
        * class.c (build_base_path): Pass location to build_indirect_ref.
        * pt.c (tsubst_copy_and_build): Pass location to
        finish_label_address_expr.
        * parser.c (cp_parser_unary_expression): Same.

From-SVN: r139867
2008-09-01 15:02:27 +00:00
Michael Meissner
5779e7133d Change attribute((option(...))) to attribute((target(...))); Do not allocate tree nodes on x86 for builtins until we generate code for the ISA; Delete hot/cold functions changing optimization; Make C++ support target specific functions; Add #pragma GCC {push_options,pop_options,reset_options} instead of #pragma GCC {target,optimize} {push,reset,pop}
From-SVN: r139812
2008-08-30 23:50:40 +00:00
Manuel López-Ibáñez
528c22f4c7 re PR c/18050 (-Wsequence-point reports false positives)
2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
            Andrew Pinski  <pinskia@gcc.gnu.org>

	PR 18050
	* c-common.c (verify_tree): Fix handling of ADDR_EXPR.
testsuite/
	* gcc.dg/Wsequence-point-pr18050.c: New.
	* g++.dg/warn/Wsequence-point-pr18050.C: New.

Co-Authored-By: Andrew Pinski <pinskia@gcc.gnu.org>

From-SVN: r139742
2008-08-29 00:06:19 +00:00
Manuel López-Ibáñez
1bfb8f513f re PR c++/37217 (-Wconversion causes ICE with __builtin_strcmp with one char compare)
2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 37217
	* c-common.c (conversion_warning): Check for null operands.
testsuite/
	* gcc.dg/pr37217.c: New.

From-SVN: r139682
2008-08-28 00:00:49 +00:00
Paolo Carlini
8d5f60ac74 re PR c++/35321 (ICE with invalid use of __builtin_offsetof)
2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/35321
	* c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.

/testsuite
2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/35321
	* g++.dg/parse/offsetof8.C: New.

From-SVN: r139628
2008-08-27 17:08:40 +00:00
Douglas Gregor
adf2edec3c c-common.c (do_switch_warnings): Look through the CONST_DECLs in the enumerators of an ENUMERAL_TYPE.
2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>

	* c-common.c (do_switch_warnings): Look through the CONST_DECLs in
	the enumerators of an ENUMERAL_TYPE.
	* dbxout.c (dbxout_type): Ditto.

2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>

	* typeck.c (type_after_usual_arithmetic_conversions): Don't do the
	usual arithmetic conversions on scoped enumeration types.
	(common_type): Ditto.
	(default_conversion): Don't perform integral promotions on scoped
	enumeration types. 
	(build_array_ref): Scoped enumeration types can't be used as
	subscripts.
	* decl.c (start_enum): If building a C++0x scoped enumeration,
	enter its scope. If provided with an underlying type, check that
	underlying type and set up the enumeration type accordingly.
	(finish_enum): Only compute an underlying type if the underlying
	type isn't already fixed, and only convert the enumerator values
	now if we've just computed the underlying type. Finish the scope
	of C++0x scoped enumerations.
	(build_enumerator): For enumerations with a fixed underlying type,
	check the enumerator values when the enumerator is defined.
	(lookup_enumerator): New.
	* call.c (standard_conversion): Don't allow assignment from
	integers to scoped enumeration types, even with -fpermissive.
	Don't convert from scoped enumerations to bool or any arithmetic
	types.
	(build_conditional_expr): Don't per the usual arithmetic
	conversions for scoped enumeration types.
	(convert_like_real): Check complain to see if we should
	produce warnings.
	* error.c (class_key_or_enum_as_string): Print scoped enums.
	* cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
	TYPE_LANG_FLAG_5.
	(INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P): New.
	(SCOPED_ENUM_P): New.
	(UNSCOPED_ENUM_P): New.
	(SET_SCOPED_ENUM_P): New.
	(ENUM_UNDERLYING_TYPE): New.
	* pt.c (lookup_template_class): Update the instantiation of enum
	types to deal with C++0x scoped enumerations and underlying
	types.
	* name-lookup.c (begin_scope): Deal with scoped enumeration
	scopes.
	(lookup_qualified_name): Deal with lookup into enumeration types.
	* name-lookup.h (enum scope_kind): Add sk_scoped_enum.
	* parser.c (cp_parser_class_or_namespace_name): Rename to...
	(cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
	parse a type-name that can be an enumeration type.
	(cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
	(cp_parser_elaborated_type_specifier): Parse the
	optional `struct' or `class' following enum (in C++0x).
	(cp_parser_enum_specifier): Parse C++0x scoped enumerations and
	enum-base clauses.

2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>

	* g++.dg/cpp0x/scoped_enum_examples.C: New.
	* g++.dg/cpp0x/scoped_enum.C: New.
	* g++.dg/cpp0x/scoped_enum_98.C: New.
	* g++.dg/cpp0x/enum_base_warn.C: New.
	* g++.dg/cpp0x/enum_base.C: New.

From-SVN: r139611
2008-08-26 22:33:10 +00:00
Manuel López-Ibáñez
509c9d60e4 diagnostic.c (pedwarn_at): Rename as pedwarn.
2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* diagnostic.c (pedwarn_at): Rename as pedwarn.
	(pedwarn): Delete.
	* toplev.h (pedwarn_at): Likewise.
	* builtins.c: Update all calls to pedwarn.
	* c-lex.c: Likewise.
	* toplev.c: Likewise.
	* c-tree.h: Likewise.
	* c-decl.c: Likewise.
	* c-errors.c: Likewise.
	* c-typeck.c: Likewise.
	* c-common.c: Likewise.
	* c-parser.c: Likewise.
cp/
	* typeck.c: Update all calls to pedwarn.
	* decl.c: Likewise.
	* call.c: Likewise.
	* error.c: Likewise.
	* pt.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
fortran/	
	* f95-lang.c: Update all calls to pedwarn.

From-SVN: r139373
2008-08-21 10:55:13 +00:00
Manuel López-Ibáñez
9c591bd084 re PR c/35701 (Quieten -Wconversion warnings)
2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 35701
	* c-common.c (conversion_warning): Do not warn if applying bit-and
	operator to unsigned constant that fits in the target type.
	
testsuite/
	* gcc.dg/pr35701.c: New.
	* gcc.dg/Wconversion-real-integer.c: Add more tests.
	* gcc.dg/Wconversion-pr34389.c: Update.
	* g++.dg/warn/Wconversion-pr34389.C: Update.

From-SVN: r139329
2008-08-20 16:09:45 +00:00
Manuel López-Ibáñez
0011dedbd9 re PR c++/35602 (Bogus warning with -Wsign-conversion)
2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/35602
	* c-common.c (conversion_warning): Do not warn for artificial
	expressions.
testsuite/
	* g++.dg/warn/pr35602.C: New.

From-SVN: r139328
2008-08-20 16:05:58 +00:00
Manuel López-Ibáñez
1f5b386928 diagnostic.c (inform): Add an explicit location_t parameter.
2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* diagnostic.c (inform): Add an explicit location_t parameter.
	* toplev.h (inform): Update declaration.
	* builtins.c: Update all calls to inform.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* c-pch.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* coverage.c: Likewise.
	* opts.c: Likewise.
	* toplev.c: Likewise.
	* tree-cfg.c: Likewise.
	* tree-ssa.c: Likewise.
cp/	
	* parser.c: Update all calls to inform.
	* typeck.c: Likewise.
	* init.c: Likewise.
	* class.c: Likewise.
	* call.c: Likewise.
	* method.c: Likewise.
	* friend.c: Likewise.
	* typeck2.c: Likewise.
	* pt.c: Likewise.
	* name-lookup.c: Likewise.
	* lex.c: Likewise.

From-SVN: r139293
2008-08-20 13:35:00 +00:00
Manuel López-Ibáñez
4003301d71 re PR c/30551 (-pedantic does not include -Wmain, but -pedantic-errors does make -Wmain cause error messages)
2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 30551
	* doc/invoke.texi (Wmain): Update.
	* c-decl.c (start_decl): warn_main is only 0 or 1.
	(start_function): Likewise. Fix formatting.
	(finish_function): Delete redundant warning.
	* c.opt (Wmain): Add Var(warn_main) and Init(-1).
	* c-opts (c_common_handle_option): -Wall only has effect if
	warn_main is uninitialized. OPT_Wmain is automatically
	handled. -pedantic also enables Wmain.
	(c_common_post_options): Handle all logic for Wmain here.
	* c-common.c (warn_main): Delete.
	(check_main_parameter_types): Make pedwarns conditional on
	OPT_Wmain.
	* c-common.h (warn_main): Delete.
cp/	
	* decl.c (grokfndecl): Call check_main_parameters_type only if
	-Wmain.
testsuite/
	* gcc.dg/pr30551.c: New.
	* gcc.dg/pr30551-2.c: New.
	* gcc.dg/pr30551-3.c: New.
	* gcc.dg/pr30551-4.c: New.
	* gcc.dg/pr30551-5.c: New.
	* gcc.dg/pr30551-6.c: New.
	* gcc.dg/tree-ssa/reassoc-3.c: Don't compile with -pedantic-errors.
	* g++.dg/warn/pr30551.C: New.
	* g++.dg/warn/pr30551-2.C: New.

From-SVN: r139063
2008-08-13 17:57:47 +00:00
Manuel López-Ibáñez
374035cb20 re PR c/35635 (-Wconversion problematic with bitfields)
2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 35635
	* c-common.c (conversion_warning): Use a switch. Ignore boolean
	expressions except for conversions to signed:1 bitfields. Handle
	COND_EXPR with constant operands.
testsuite/
	* gcc.dg/pr35635.c: New.
	* gcc.dg/Wconversion-integer.c: Update.
	* gcc.dg/Wconversion-integer-no-sign.c: Update.
	* gcc.dg/Wsign-conversion.c: Update.
	* g++.dg/warn/pr35635.C: New.
	* g++.dg/warn/Wconversion-integer.C: Update.
	* g++.dg/warn/Wsign-conversion.C: Update.

From-SVN: r139049
2008-08-13 10:01:52 +00:00
Richard Guenther
7c9577becf gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
2008-08-09  Richard Guenther  <rguenther@suse.de>

	* gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
	* gimple.h (gimple_call_fn): Adjust comment.
	(gimple_call_set_fndecl): New function.
	(gimple_call_fndecl): Adjust for GIMPLE_CALL no
	longer having bare FUNCTION_DECL operand.
	(gimple_call_return_type): Likewise.
	* tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.

	* value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
	(gimple_mod_pow2): Likewise.
	(gimple_mod_subtract): Likewise.
	(gimple_ic): Likewise.
	(gimple_stringop_fixed_value): Likewise.
	(gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
	longer having bare FUNCTION_DECL operand.
	* ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
	* omp-low.c (optimize_omp_library_calls): Likewise.
	* cgraphunit.c (update_call_expr): Likewise.
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
	(execute_convert_to_rsqrt): Likewise.
	* cfgexpand.c (gimple_to_tree): Simplify.
	(release_stmt_tree): Fix for GIMPLE_CALL no longer having
	bare FUNCTION_DECL operand.
	* tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
	(convert_gimple_call): Use gimple_call_fndecl.
	* c-common.c (c_warn_unused_result): Likewise.

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

From-SVN: r138907
2008-08-09 17:28:39 +00:00
Manuel López-Ibáñez
ca085fd7b7 re PR c++/17880 (-Wsequence-point doesn't warn inside if, while, do conditions, for beg/cond/end expressions etc.)
2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/17880
	* c-typeck.c (digest_init): Call verify_sequence_points from here.
	(c_finish_return): Likewise.
	(c_start_case): Likewise.
	* c-common.c (warn_for_collisions_1): Use explicit location in
	warning.
	* c-parser.c (c_parser_condition): New. Call
	verify_sequence_points.
	(c_parser_paren_condition): Call c_parser_condition.
	(c_parser_for_statement): Call c_parser_condition.
testsuite/
	* gcc.dg/sequence-pt-pr17880.c: New.

From-SVN: r138904
2008-08-09 12:37:32 +00:00
Kaveh R. Ghazi
03c3034efe c-common.c (c_common_reswords): Also warn about keyword "bool".
* c-common.c (c_common_reswords): Also warn about keyword "bool".
	
testsuite:
	* gcc.dg/Wcxx-compat-2.c: Check for bool/_Bool.

From-SVN: r138859
2008-08-08 01:42:33 +00:00
Kaveh R. Ghazi
2696a99583 matrix-reorg.c (compute_offset): Avoid C++ keywords.
* matrix-reorg.c (compute_offset): Avoid C++ keywords.

	* c-common.c: Fix typo.
	(c_common_reswords): Activate more C++ keyword warnings.

testsuite:
	* gcc.dg/Wcxx-compat-2.c: Adjust test for more warnings.

From-SVN: r138817
2008-08-06 17:22:05 +00:00
Manuel López-Ibáñez
2d12797c69 re PR c++/8715 ('~' operator for unsigned char and conversion to bool)
2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 8715
	* c-common.c (warn_for_sign_compare): New. Handle separately the
	case that 'constant' is zero.
	* c-typeck.c (build_binary_op): Move code to c-common.c
cp/
	* typeck.c (cp_build_binary_op): Move code to c-common.c.
testsuite/
	* gcc.dg/pr8715.c: New.
	* g++.dg/warn/pr8715.C: New.

From-SVN: r138814
2008-08-06 16:17:41 +00:00
Manuel López-Ibáñez
6715192c06 re PR c/34389 (-Wconversion produces wrong warning)
2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 34389
	* c-typeck.c (build_binary_op): Encapsulate code into...
	* c-common.c (shorten_binary_op): ...this new function.
	(conversion_warning): Use the new function. Handle non-negative
	constant in bitwise-and.
	* c-common.h (shorten_binary_op): Declare.
cp/
	* typeck.c (build_binary_op): Encapsulate code into
	shorten_binary_op.
testsuite/
	* gcc.dg/Wconversion-pr34389.c: New.
	* g++.dg/warn/Wconversion-pr34389.C: New.

From-SVN: r138296
2008-07-30 08:30:32 +00:00
Richard Biener
726a989a8b backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
2008-07-28  Richard Guenther  <rguenther@suse.de>

	Merge from gimple-tuples-branch.

	* ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
	* gimple.def: New file.
	* gsstruct.def: Likewise.
	* gimple-iterator.c: Likewise.
	* gimple-pretty-print.c: Likewise.
	* tree-gimple.c: Removed.  Merged into ...
	* gimple.c: ... here.  New file.
	* tree-gimple.h: Removed.  Merged into ...
	* gimple.h: ... here.  New file.

	* Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
	* configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
	--enable-checking=gimple flag.
	* config.in: Likewise.
	* configure: Regenerated.

	* tree-ssa-operands.h: Tuplified.
	* tree-vrp.c: Likewise.
	* tree-loop-linear.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-ssa-loop-im.c: Likewise.
	* tree-dump.c: Likewise.
	* tree-complex.c: Likewise.
	* cgraphbuild.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa-loop-niter.c: Likewise.
	* tree-pretty-print.c: Likewise.
	* tracer.c: Likewise.
	* gengtype.c: Likewise.
	* tree-loop-distribution.c: Likewise.
	* tree-ssa-loop-unswitch.c: Likewise.
	* cgraph.c: Likewise.
	* cgraph.h: Likewise.
	* tree-ssa-loop-manip.c: Likewise.
	* value-prof.c: Likewise.
	* tree-ssa-loop-ch.c: Likewise.
	* tree-tailcall.c: Likewise.
	* value-prof.h: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* tree-pass.h: Likewise.
	* ipa-cp.c: Likewise.
	* tree-scalar-evolution.c: Likewise.
	* tree-scalar-evolution.h: Likewise.
	* target.h: Likewise.
	* lambda-mat.c: Likewise.
	* tree-phinodes.c: Likewise.
	* diagnostic.h: Likewise.
	* builtins.c: Likewise.
	* tree-ssa-alias-warnings.c: Likewise.
	* cfghooks.c: Likewise.
	* fold-const.c: Likewise.
	* cfghooks.h: Likewise.
	* omp-low.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* ipa-reference.c: Likewise.
	* tree-ssa-uncprop.c: Likewise.
	* toplev.c: Likewise.
	* tree-gimple.c: Likewise.
	* tree-gimple.h: Likewise.
	* tree-chrec.c: Likewise.
	* tree-chrec.h: Likewise.
	* tree-ssa-sccvn.c: Likewise.
	* tree-ssa-sccvn.h: Likewise.
	* cgraphunit.c: Likewise.
	* tree-ssa-copyrename.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-loop-ivopts.c: Likewise.
	* tree-nomudflap.c: Likewise.
	* tree-call-cdce.c: Likewise.
	* ipa-pure-const.c: Likewise.
	* c-format.c: Likewise.
	* tree-stdarg.c: Likewise.
	* tree-ssa-math-opts.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-nrv.c: Likewise.
	* tree-ssa-propagate.c: Likewise.
	* ipa-utils.c: Likewise.
	* tree-ssa-propagate.h: Likewise.
	* tree-ssa-alias.c: Likewise.
	* gimple-low.c: Likewise.
	* tree-ssa-sink.c: Likewise.
	* ipa-inline.c: Likewise.
	* c-semantics.c: Likewise.
	* dwarf2out.c: Likewise.
	* expr.c: Likewise.
	* tree-ssa-loop-ivcanon.c: Likewise.
	* predict.c: Likewise.
	* tree-ssa-loop.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-ssa-address.c: Likewise.
	* tree-ssa-ifcombine.c: Likewise.
	* matrix-reorg.c: Likewise.
	* c-decl.c: Likewise.
	* tree-eh.c: Likewise.
	* c-pretty-print.c: Likewise.
	* lambda-trans.c: Likewise.
	* function.c: Likewise.
	* langhooks.c: Likewise.
	* ebitmap.h: Likewise.
	* tree-vectorizer.c: Likewise.
	* function.h: Likewise.
	* langhooks.h: Likewise.
	* tree-vectorizer.h: Likewise.
	* ipa-type-escape.c: Likewise.
	* ipa-type-escape.h: Likewise.
	* domwalk.c: Likewise.
	* tree-if-conv.c: Likewise.
	* profile.c: Likewise.
	* domwalk.h: Likewise.
	* tree-data-ref.c: Likewise.
	* tree-data-ref.h: Likewise.
	* tree-flow-inline.h: Likewise.
	* tree-affine.c: Likewise.
	* tree-vect-analyze.c: Likewise.
	* c-typeck.c: Likewise.
	* gimplify.c: Likewise.
	* coretypes.h: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* calls.c: Likewise.
	* tree-ssa-coalesce.c: Likewise.
	* tree.def: Likewise.
	* tree-dfa.c: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* cfgexpand.c: Likewise.
	* tree-cfgcleanup.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-ssa-live.c: Likewise.
	* tree-sra.c: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-predcom.c: Likewise.
	* lambda.h: Likewise.
	* tree-mudflap.c: Likewise.
	* ipa-prop.c: Likewise.
	* print-tree.c: Likewise.
	* tree-ssa-copy.c: Likewise.
	* ipa-prop.h: Likewise.
	* tree-ssa-forwprop.c: Likewise.
	* ggc-page.c: Likewise.
	* c-omp.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	* tree-vect-patterns.c: Likewise.
	* tree-ssa-ter.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-ssa.c: Likewise.
	* lambda-code.c: Likewise.
	* tree-ssa-loop-prefetch.c: Likewise.
	* tree-inline.c: Likewise.
	* tree-inline.h: Likewise.
	* tree-iterator.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-vect-transform.c: Likewise.
	* tree-object-size.c: Likewise.
	* tree-outof-ssa.c: Likewise.
	* cfgloop.c: Likewise.
	* system.h: Likewise.
	* tree-profile.c: Likewise.
	* cfgloop.h: Likewise.
	* c-gimplify.c: Likewise.
	* c-common.c: Likewise.
	* tree-vect-generic.c: Likewise.
	* tree-flow.h: Likewise.
	* c-common.h: Likewise.
	* basic-block.h: Likewise.
	* tree-ssa-structalias.c: Likewise.
	* tree-switch-conversion.c: Likewise.
	* tree-ssa-structalias.h: Likewise.
	* tree-cfg.c: Likewise.
	* passes.c: Likewise.
	* ipa-struct-reorg.c: Likewise.
	* ipa-struct-reorg.h: Likewise.
	* tree-ssa-reassoc.c: Likewise.
	* cfgrtl.c: Likewise.
	* varpool.c: Likewise.
	* stmt.c: Likewise.
	* tree-ssanames.c: Likewise.
	* tree-ssa-threadedge.c: Likewise.
	* langhooks-def.h: Likewise.
	* tree-ssa-operands.c: Likewise.
	* config/alpha/alpha.c: Likewise.
	* config/frv/frv.c: Likewise.
	* config/s390/s390.c: Likewise.
	* config/m32c/m32c.c: Likewise.
	* config/m32c/m32c-protos.h: Likewise.
	* config/spu/spu.c: Likewise.
	* config/sparc/sparc.c: Likewise.
	* config/i386/i386.c: Likewise.
	* config/sh/sh.c: Likewise.
	* config/xtensa/xtensa.c: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/pa/pa.c: Likewise.
	* config/mips/mips.c: Likewise.

From-SVN: r138207
2008-07-28 14:33:56 +00:00
Michael Meissner
a51fa0f4ca Fix IA-64 breakage...
Fix IA-64 breakage; Make hot/cold optimization conversation port specific; Move
disabling of scheduling from OVERRIDE_OPTIONS to OPTIMIZATION_OPTIONS

Files modified:
gcc/doc/extend.texi
gcc/doc/tm.texi
gcc/target.h
gcc/ChangeLog
gcc/testsuite/gcc.target/i386/cmov8.c
gcc/testsuite/gcc.target/i386/funcspec-10.c
gcc/testsuite/gcc.target/i386/funcspec-11.c
gcc/testsuite/ChangeLog
gcc/target-def.h
gcc/c-common.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c

From-SVN: r138154
2008-07-25 23:44:24 +00:00
Manuel López-Ibáñez
fcf73884fb re PR c/35058 (-Werror= works only with some warnings)
2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 35058
	* diagnostic.c (pedwarn): Add opt parameter.
	(pedwarn0): New.
	* c-tree.h (pedwarn_init): Add opt parameter.
	(pedwarn_c90): Likewise.
	(pedwarn_c99): Likewise.
	* c-errors.c (pedwarn_c99): Likewise.
	(pedwarn_c90): Likewise.
	* toplev.h (pedwarn): Update declaration.
	(pedwarn0): Declare.
	* c-lex.c: All calls to pedwarn changed.
	* builtins.c: All calls to pedwarn changed.
	* toplev.c: All calls to pedwarn changed.
	* c-decl.c: All calls to pedwarn changed.
	* c-typeck.c: All calls to pedwarn changed.
	* c-common.c: All calls to pedwarn changed.
	* c-parser.c: All calls to pedwarn changed.
cp/
	* typeck.c: All calls to pedwarn changed.
	* decl.c: All calls to pedwarn changed.
	* call.c: All calls to pedwarn changed.
	* error.c: All calls to pedwarn changed.
	* typeck2.c: All calls to pedwarn changed.
	* pt.c: All calls to pedwarn changed.
	* name-lookup.c: All calls to pedwarn changed.
	* parser.c: All calls to pedwarn changed.
fortran/
	* f95-lang.c (gfc_mark_addressable): All calls to pedwarn changed.
testsuite/
	* gcc.dg/Wdeclaration-after-statement-3.c: New.
	* gcc/testsuite/gcc.dg/Wpointer-arith.c: New.

From-SVN: r138089
2008-07-23 15:57:49 +00:00
Michael Meissner
ab442df7fb Add ability to set target options (ix86 only) and optimization options on a function specific basis
From-SVN: r138075
2008-07-23 10:28:06 +00:00
Kris Van Hees
c466b2cd13 c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__ and __CHAR32_TYPE__.
gcc/ChangeLog:
2008-07-16  Kris Van Hees <kris.van.hees@oracle.com>

        * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
        and __CHAR32_TYPE__.
        * c-typeck.c (digest_init): Support char16_t and char32_t.
        (set_nonincremental_init_from_string): Idem.

gcc/cp/ChangeLog:
2008-07-16  Kris Van Hees <kris.van.hees@oracle.com>

        * rtti.c (emit_support_tinfos): Add char16_type_node and
        char32_type_node.
        * typeck2.c (digest_init): Support char16_t and char32_t.

gcc/testsuite/ChangeLog:
2008-07-16  Kris Van Hees <kris.van.hees@oracle.com>

        Tests for char16_t and char32_t support.
        * g++.dg/ext/utf-array.C: New
        * g++.dg/ext/utf-array-short-wchar.C: New
        * g++.dg/ext/utf-rtti.C: New
        * g++.dg/ext/utf-type.c: New
        * gcc.dg/utf-array.c: New
        * gcc.dg/utf-array-short-wchar.c: New
        * gcc.dg/utf-inc-init.c: New
        * gcc.dg/utf-type.c: New

libstdc++-v3/ChangeLog:
2008-07-16  Kris Van Hees <kris.van.hees@oracle.com>
            Holger Hopp <holger.hopp@sap.com>

        * config/abi/pre/gnu.ver: Support char16_t and char32_t.
        * testsuite/util/testsuite_abi.cc (check_version): Add
        CXXABI_1.3.3 to known_versions.

From-SVN: r137965
2008-07-18 20:23:42 +00:00
Richard Guenther
ac7ee6adbe re PR middle-end/36369 (may_alias broken with previous uses of non attributed type in some cases)
2008-07-15  Richard Guenther  <rguenther@suse.de>

	PR middle-end/36369
	* c-common.c (strict_aliasing_warning): Do not warn for
	TYPE_REF_CAN_ALIAS_ALL pointers.
	(c_common_get_alias_set): may_alias types are not special.
	* tree.c (build_pointer_type_for_mode): Look up the may_alias
	attribute and set can_ref_all accordingly.
	(build_reference_type_for_mode): Likewise.
	* doc/extend.texi (may_alias): Clarify.

	* gcc.dg/Wstrict-aliasing-bogus-ref-all.c: New testcase.

From-SVN: r137843
2008-07-15 15:07:46 +00:00
Ian Lance Taylor
eea1139b26 c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
./:	* c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
	(struct c_common_resword): Define.
	(D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
	(D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
	(c_common_reswords, num_c_common_reswords): Declare.
	* c-common.c (c_common_reswords): New global const array.
	(num_c_common_reswords): New const int.
	* c-parser.c (struct resword, reswords): Don't define.
	(D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
	(c_parse_init): Clarify mask code.  Use c_common_reswords rather
	than reswords.  If warning about C++ keywords, give them a special
	RID code.
	(c_lex_one_token): Warn about C++ keywords.  Call
	objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
	(c_parser_external_declaration): Look for RID_xxx rather than
	RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
	(c_parser_statement_after_labels): Likewise.
	(c_parser_objc_class_instance_variables): Likewise.
	(c_parser_objc_class_declaration): Likewise.
	(c_parser_objc_try_catch_statement): Likewise.
	* c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
	(declspecs_add_type): Likewise.
cp/:
	* lex.c (struct resword, reswords): Don't define.
	(D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
	(init_reswords): Clarify mask code.  Use c_common_reswords rather
	than reswords.
objc/:
	* objc-act.c (objc_is_reserved_word): Always check for RID_CLASS,
	etc., not just when OBJCPLUS is defined.
testsuite/:
	* gcc.dg/Wcxx-compat-2.c: New test.

From-SVN: r137724
2008-07-11 18:16:26 +00:00
Kai Tietz
35cbb29915 config.gcc (extra_headers): Add cross-stdarg.h for target x86_64-*-* and i?86-*-*.
2008-07-06  Kai Tietz  <kai.tietz@onevision.com>

	* config.gcc (extra_headers): Add cross-stdarg.h for target
	x86_64-*-* and i?86-*-*.
	* config/i386/cross-stdarg.h: New.
	* builtins.c (std_fn_abi_va_list): New.
	(std_canonical_va_list_type): New.
	(stabilize_va_list): Replace va_list_type_node use by
	mtarget.canonical_va_list_type.
	(gimplify_va_arg_expr): Likewise.
	(expand_builtin_va_copy): Replace va_list_type_node use by
	mtarget.fn_abi_va_list.
	* tree-sra.c (is_va_list_type): New helper.
	(decl_can_be_decomposed_p): Replace
	va_list_type_node use by is_va_list_type.
	* tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
	* c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
	* config/i386/i386-protos.h (ix86_get_valist_type): New.
	(ix86_enum_va_list): New.
	* config/i386/i386.c (sysv_va_list_type_node): New.
	(ms_va_list_type_node): New.
	(ix86_function_type_abi): Remove sorry.
	(ix86_build_builtin_va_list_abi): New.
	(ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
	for 64-bit targets.
	(ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
	(ix86_init_builtins_va_builtins_abi): New.
	(ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
	for 64-bit targets.
	(ix86_handle_abi_attribute): New.
	(attribute_spec): Add sysv_abi and ms_abi.
	(ix86_fn_abi_va_list): New.
	(ix86_canonical_va_list_type): New.
	(ix86_enum_va_list): New.
	(TARGET_FN_ABI_VA_LIST): New.
	(TARGET_CANONICAL_VA_LIST_TYPE): New.
	* config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
	* doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
	(TARGET_CANONICAL_VA_LIST_TYPE): New.
	(TARGET_ENUM_VA_LIST): New.
	* expr.h (std_fn_abi_va_list): New.
	(std_canonical_va_list_type): New.
	* target-def.h (TARGET_FN_ABI_VA_LIST): New.
	(TARGET_CANONICAL_VA_LIST_TYPE): New.
	(TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
	TARGET_CANONICAL_VA_LIST_TYPE.
	* target.h (struct gcc_target): Add fn_abi_va_list hook
	and canonical_va_list_type hook.

From-SVN: r137525
2008-07-06 16:51:58 +02:00
Kai Tietz
1d79e31d96 Revert 137452.
From-SVN: r137457
2008-07-04 14:38:46 +02:00
Kai Tietz
0b4b69ef79 config.gcc (extra_headers): Add cross-stdarg.h for target x86_64-*-* and i?86-*-*.
2008-07-04  Kai Tietz  <kai.tietz@onevision.com>

	* config.gcc (extra_headers): Add cross-stdarg.h for target
	x86_64-*-* and i?86-*-*.
	* config/i386/cross-stdarg.h: New.
	* builtins.c (std_fn_abi_va_list): New.
	(std_canonical_va_list_type): New.
	(stabilize_va_list): Replace va_list_type_node use by
	mtarget.canonical_va_list_type.
	(gimplify_va_arg_expr): Likewise.
	(expand_builtin_va_copy): Replace va_list_type_node use by
	mtarget.fn_abi_va_list.
	* tree-sra.c (is_va_list_type): New helper.
	(decl_can_be_decomposed_p): Replace
	va_list_type_node use by is_va_list_type.
	* tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
	* c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
	* config/i386/i386-protos.h (ix86_get_valist_type): New.
	(ix86_enum_va_list): New.
	* config/i386/i386.c (sysv_va_list_type_node): New.
	(ms_va_list_type_node): New.
	(ix86_function_type_abi): Remove sorry.
	(ix86_build_builtin_va_list_abi): New.
	(ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
	for 64-bit targets.
	(ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
	(ix86_init_builtins_va_builtins_abi): New.
	(ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
	for 64-bit targets.
	(ix86_handle_abi_attribute): New.
	(attribute_spec): Add sysv_abi and ms_abi.
	(ix86_fn_abi_va_list): New.
	(ix86_canonical_va_list_type): New.
	(ix86_enum_va_list): New.
	(TARGET_FN_ABI_VA_LIST): New.
	(TARGET_CANONICAL_VA_LIST_TYPE): New.
	* config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
	* doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
	(TARGET_CANONICAL_VA_LIST_TYPE): New.
	(TARGET_ENUM_VA_LIST): New.
	* expr.h (std_fn_abi_va_list): New.
	(std_canonical_va_list_type): New.
	* target-def.h (TARGET_FN_ABI_VA_LIST): New.
	(TARGET_CANONICAL_VA_LIST_TYPE): New.
	(TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
	TARGET_CANONICAL_VA_LIST_TYPE.
	* target.h (struct gcc_target): Add fn_abi_va_list hook
	and canonical_va_list_type hook.

2008-07-04  Kai Tietz  <kai.tietz@onevision.com>

	* gcc.dg/callabi/callabi.h: New.
	* gcc.dg/callabi/vaarg-1.c: New.
	* gcc.dg/callabi/vaarg-2.c: New.
	* gcc.dg/callabi/vaarg-3.c: New.
	* gcc.dg/callabi/func-1.c: New.

From-SVN: r137452
2008-07-04 10:15:27 +02:00
Andrew Haley
70d3fcabfd re PR bootstrap/33304 (Bootstrap failure on solaris2 using cc due to empty macro arguments)
2008-07-03  Andrew Haley  <aph@redhat.com>

        PR bootstrap/33304
        * vec.h (VEC_TA): New.
        (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
        DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
        * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
        (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
        (C_COMMON_FIXED_TYPES): Remove first arg.
        (C_COMMON_FIXED_MODE_TYPES): Likewise.
        * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
        MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
        not to use empty macro arguments.

From-SVN: r137413
2008-07-03 10:31:03 +00:00
Daniel Jacobowitz
f83c7f631f c-typeck.c (convert_for_assignment): Use vector_targets_convertible_p.
* c-typeck.c (convert_for_assignment): Use
	vector_targets_convertible_p.
	* c-common.c (vector_targets_convertible_p): New.
	* c-common.h (vector_targets_convertible_p): New prototype.
	* config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
	opaque_p_V2SI_type_node.

	* typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
	(comp_ptr_ttypes_const): Likewise.

	* g++.dg/other/opaque-1.C, g++.dg/other/opaque-2.C,
	g++.dg/other/opaque-3.C: Also run on powerpc*-*-linux*spe*.

From-SVN: r137325
2008-07-01 20:48:59 +00:00
Ian Lance Taylor
d75d71e0ac c-lex.c (narrowest_unsigned_type): Change itk to int.
* c-lex.c (narrowest_unsigned_type): Change itk to int.
	(narrowest_signed_type): Likewise.
	* c-typeck.c (c_common_type): Change local variable mclass to enum
	mode_class, twice.
	(parser_build_binary_op): Compare the TREE_CODE_CLASS with
	tcc_comparison, not the tree code itself.
	* c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
	(c_expand_expr): Cast modifier to enum expand_modifier.
	* c-common.h (C_RID_CODE): Add casts.
	(C_SET_RID_CODE): Define.
	* c-parser.c (c_parse_init): Use C_SET_RID_CODE.
	(c_lex_one_token): Add cast to avoid warning.
	(c_parser_objc_type_name): Rename local typename to type_name.
	(check_no_duplicate_clause): Change code parameter to enum
	omp_clause_code.
	(c_parser_omp_var_list_parens): Change kind parameter to enum
	omp_clause_code.
	(c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
	c_parser_omp_list_var_parens.
	(c_parser_omp_threadprivate): Likewise.
	* cp/lex.c (init_reswords): Use C_SET_RID_CODE.
	* cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
	* c-format.c (NO_FMT): Define.
	(printf_length_specs): Use NO_FMT.
	(asm_fprintf_length_specs): Likewise.
	(gcc_diag_length_specs): Likewise.
	(scanf_length_specs): Likewise.
	(strfmon_length_specs): Likewise.
	(gcc_gfc_length_specs): Likewise.
	(printf_flag_specs): Change 0 to STD_C89.
	(asm_fprintf_flag_specs): Likewise.
	(gcc_diag_flag_specs): Likewise.
	(gcc_cxxdiag_flag_specs): Likewise.
	(scanf_flag_specs): Likewise.
	(strftime_flag_specs): Likewise.
	(strfmon_flag_specs): Likewise.
	(print_char_table): Likewise.
	(asm_fprintf_char_table): Likewise.
	(gcc_diag_char_table): Likewise.
	(gcc_tdiag_char_table): Likewise.
	(gcc_cdiag_char_table): Likewise.
	(gcc_cxxdiag_char_table): Likewise.
	(gcc_gfc_char_table): Likewise.
	(scan_char_table): Likewise.
	(time_char_table): Likewis.
	(monetary_char_table): Likewise.
	* c-format.h (BADLEN): Likewise.

From-SVN: r137019
2008-06-22 14:56:08 +00:00
Ulrich Weigand
7b0518e33c targhooks.h (struct gcc_target): New member unwind_word_mode.
* targhooks.h (struct gcc_target): New member unwind_word_mode.
	(default_unwind_word_mode): Add prototype.
	* targhooks.c (default_unwind_word_mode): New function.
	(default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
	instead of word_mode.
	* target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
	(TARGET_INITIALIZER): Use it.

	* c-common.c (handle_mode_attribute): Support "unwind_word"
	mode attribute.
	* unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.

	* except.c (init_eh): Use targetm.unwind_word_mode () instead of
	word_mode to access SjLj_Function_Context member "data".
	(sjlj_emit_dispatch_table): Likewise.  Also, perform type
	conversion from targetm.eh_return_filter_mode () to
	targetm.unwind_word_mode () if they differ.

	* builtin-types.def (BT_UNWINDWORD): New primitive type.
	(BT_FN_UNWINDWORD_PTR): New function type.
	(BT_FN_WORD_PTR): Remove.
	* builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
	* except.c (expand_builtin_extend_pointer): Convert pointer to
	targetm.unwind_word_mode () instead of word_mode.

	* config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
	* config/spu/spu.c (spu_eh_return_filter_mode): Remove.
	(spu_unwind_word_mode): New function.
	(TARGET_EH_RETURN_FILTER_MODE): Do not define.
	(TARGET_UNWIND_WORD_MODE): Define.
	* config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.

From-SVN: r136912
2008-06-18 20:49:12 +00:00
Richard Guenther
4653cae5b8 alias.c (get_alias_set): Use the element alias-set for arrays.
2008-06-11  Richard Guenther  <rguenther@suse.de>

	* alias.c (get_alias_set): Use the element alias-set for arrays.
	(record_component_aliases): For arrays and vectors do nothing.
	* c-common.c (strict_aliasing_warning): Handle the cases
	of alias set zero explicitly.
	* Makefile.in (dfp.o-warn): Add -Wno-error.

From-SVN: r136679
2008-06-11 18:19:28 +00:00
Ralf Wildenhues
fa10beec52 cgraph.c: Fix typos in comments.
gcc/
	* cgraph.c: Fix typos in comments.
	(cgraph_availability_names): Fix string typo.
	* fold-const.c: Fix typos in comments.
	(fold_binary): Fix typo in warning.
	* genautomata.c: Fix typos in comments.
	(check_presence_pattern_sets): Fix typo in local variable.
	(output_description): Fix typo in output.
	* ggc-zone.c (ggc_pch_finish): Fix typo in error message.
	* hwint.h: Likewise.
	* matrix-reorg.c (check_allocation_function): Likewise.
	* omega.c (smooth_weird_equations): Likewise.
	* auto-inc-dec.c: Fix typos in comments.
	* bb-reorder.c: Likewise.
	* builtins.c: Likewise.
	* c-common.c: Likewise.
	* c-cppbuiltin.c: Likewise.
	* c-parser.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfgexpand.c: Likewise.
	* cfghooks.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cgraphunit.c: Likewise.
	* coverage.c: Likewise.
	* dbxout.c: Likewise.
	* df-byte-scan.c: Likewise.
	* df-core.c: Likewise.
	* df-problems.c: Likewise.
	* df-scan.c: Likewise.
	* dfp.c: Likewise.
	* dominance.c: Likewise.
	* domwalk.c: Likewise.
	* dse.c: Likewise.
	* dwarf2out.c: Likewise.
	* emit-rtl.c: Likewise.
	* et-forest.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* gcc.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-page.c: Likewise.
	* gimplify.c: Likewise.
	* gthr-lynx.h: Likewise.
	* haifa-sched.c: Likewise.
	* ipa-cp.c: Likewise.
	* ipa-inline.c: Likewise.
	* ipa-prop.h: Likewise.
	* ipa-pure-const.c: Likewise.
	* ipa-struct-reorg.c: Likewise.
	* ipa-struct-reorg.h: Likewise.
	* ipa-type-escape.c: Likewise.
	* ipa.c: Likewise.
	* loop-doloop.c: Likewise.
	* mips-tfile.c: Likewise.
	* mkmap-flat.awk: Likewise.
	* mkmap-symver.awk: Likewise.
	* modulo-sched.c: Likewise.
	* omp-low.c: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* opts.c: Likewise.
	* passes.c: Likewise.
	* postreload-gcse.c: Likewise.
	* postreload.c: Likewise.
	* predict.c: Likewise.
	* pretty-print.h: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* ra-conflict.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regs.h: Likewise.
	* reload.c: Likewise.
	* rtl-error.c: Likewise.
	* rtlanal.c: Likewise.
	* scan.h: Likewise.
	* sched-rgn.c: Likewise.
	* see.c: Likewise.
	* stmt.c: Likewise.
	* target.h: Likewise.
	* tree-dfa.c: Likewise.
	* tree-eh.c: Likewise.
	* tree-flow-inline.h: Likewise.
	* tree-inline.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-loop-distribution.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-pass.h: Likewise.
	* tree-pretty-print.c: Likewise.
	* tree-profile.c: Likewise.
	* tree-scalar-evolution.c: Likewise.
	* tree-sra.c: Likewise.
	* tree-ssa-alias-warnings.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-coalesce.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* tree-ssa-forwprop.c: Likewise.
	* tree-ssa-live.c: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-ssa-loop-im.c: Likewise.
	* tree-ssa-loop-ivopts.c: Likewise.
	* tree-ssa-loop-niter.c: Likewise.
	* tree-ssa-loop-prefetch.c: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-ssa-sccvn.c: Likewise.
	* tree-ssa-ter.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-vect-analyze.c: Likewise.
	* tree-vect-transform.c: Likewise.
	* tree-vectorizer.c: Likewise.
	* tree-vn.c: Likewise.
	* tree-vrp.c: Likewise.
	* tree.c: Likewise.
	* tree.def: Likewise.
	* tree.h: Likewise.
	* unwind-dw2-fde.c: Likewise.
	* unwind.inc: Likewise.
	* value-prof.c: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r136425
2008-06-06 05:42:00 +00:00
Alan Modra
dd25a747c9 Delete get_inner_array_type. Use strip_array_types instead.
From-SVN: r135858
2008-05-25 13:28:15 +09:30
Kaveh R. Ghazi
3bf5906b31 builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
* builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
	* builtins.c (fold_builtin_fpclassify): New.
	(fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
	* builtins.def (BUILT_IN_FPCLASSIFY): New.
	* c-common.c (handle_type_generic_attribute): Adjust to accept
	fixed arguments before an elipsis.
	(check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
	* doc/extend.texi: Document __builtin_fpclassify.

testsuite:
	* gcc.dg/builtins-error.c: Test __builtin_fpclassify.  Also
	add tests for all previous type-generic builtins.
	* gcc.dg/pr28796-2.c: Add -DUNSAFE flag.
	* gcc.dg/tg-tests.h: Test __builtin_fpclassify.

From-SVN: r135789
2008-05-23 04:47:12 +00:00
Kaveh R. Ghazi
05f41289d8 re PR middle-end/35509 (builtin isinf() mismatch to compile-time substitution)
PR middle-end/35509

	* builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
	Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
	(mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
	(fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
	(fold_builtin_1): Likewise.
	* builtins.def (BUILT_IN_ISINF_SIGN): New.
	c-common.c (check_builtin_function_arguments): Handle
	BUILT_IN_ISINF_SIGN.
	* doc/extend.texi: Document __builtin_isinf_sign.
	* fold-const.c (operand_equal_p): Handle COND_EXPR.

testsuite:
	* gcc.dg/builtins-error.c: Test __builtin_isinf_sign.
	* gcc.dg/tg-tests.h: Likewise.  Mark variables volatile.
	* gcc.dg/torture/builtin-isinf_sign-1.c: New test.

From-SVN: r135517
2008-05-18 23:19:38 +00:00
Tomas Bily
1043771b10 pa.c (reloc_needed): Use CASE_CONVERT.
* config/pa/pa.c (reloc_needed): Use CASE_CONVERT.

        * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.

        * tree-ssa-structalias.c (get_constraint_for): Likewise.

        * c-common.c (c_common_truthvalue_conversion): Likewise.

        * tree-object-size.c (compute_object_offset): Likewise.

        * tree-inline.c (estimate_num_insns_1): Likewise.

        * varasm.c (const_hash_1, compare_constant, copy_constant)
        (compute_reloc_for_constant, output_addressed_constants)
        (initializer_constant_valid_p): Likewise.

        * c-omp.c (check_omp_for_incr_expr): Likewise.

        * gimplify.c (gimplify_expr): Likewise.

        * c-typeck.c (c_finish_return): Likewise.

        * tree-vectorizer.c (supportable_widening_operation)
        (supportable_narrowing_operation): Likewise.

        * c-pretty-print.c (pp_c_cast_expression, pp_c_expression):
        Likewise.

        * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.

        * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.

        * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
        (descr_info_loc): Likewise.

        * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.

        * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
        (fold_unary): Likewise.

        * builtins.c (get_pointer_alignment): Likewise.

        * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
        (instantiate_parameters_1): Likewise.

        * tree.c (expr_align, stabilize_reference): Likewise.

        * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.

        * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.

        * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.

        * tree-ssa-threadedge.c (simplify_control_stmt_condition):
        Likewise.

        * config/alpha/alpha.c (va_list_skip_additions): Likewise.

        * c-common.c (c_alignof_expr, check_function_arguments_recurse):
        Likewise.

        * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.

        * varasm.c (initializer_constant_valid_p, output_constant):
        Likewise.

        * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
        (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
        (forward_propagate_comparison)
        (tree_ssa_forward_propagate_single_use_vars): Likewise.

        * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.

        * emit-rtl.c (component_ref_for_mem_expr)
        (set_mem_attributes_minus_bitpos): Likewise.

        * tree-ssa-phiopt.c (conditional_replacement): Likewise.

        * gimplify.c (gimplify_conversion, goa_lhs_expr_p,
        gimplify_expr): Likewise.

        * c-typeck.c (default_function_array_conversion,
        build_indirect_ref)
        (build_function_call, pointer_diff, build_compound_expr)
        (c_finish_return): Likewise.

        * tree-vect-analyze.c (vect_determine_vectorization_factor):
        Likewise.

        * matrix-reorg.c (get_inner_of_cast_expr,
        may_flatten_matrices_1): Likewise.

        * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.

        * expr.c (is_aligning_offset): Likewise.

        * tree-ssa-alias.c (is_escape_site): Likewise.

        * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
        (check_all_va_list_escapes): Likewise.

        * tree-ssa-loop-ivopts.c (determine_base_object)
        (determine_common_wider_type): Likewise.

        * dojump.c (do_jump): Likewise.

        * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.

        * tree-gimple.c (is_gimple_cast): Likewise.

        * fold-const.c (decode_field_reference, )
        (fold_sign_changed_comparison, fold_unary, fold_comparison)
        (fold_binary): Likewise.

        * tree-ssa-alias-warnings.c (find_alias_site_helper)
        (already_warned_in_frontend_p): Likewise.

        * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.

        * tree.c (really_constant_p, get_unwidened): Likewise.

        * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.

        * tree-ssa-loop-im.c (rewrite_bittest): Likewise.

        * tree-vrp.c (register_edge_assert_for_2,
        register_edge_assert_for_1): Likewise.

        * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
        CONVERT_EXPR_P.
        (CONVERT_EXPR_P): Define.
        (CASE_CONVERT): Define.

From-SVN: r135114
2008-05-09 16:57:39 +02:00
Kenneth Zadeck
becfd6e57b [multiple changes]
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>

        PATCH rtl/7335
        PATCH rtl/33826
        * see.c (see_copy_insn): Copy new pure const attributes for new
        call.
        * c-decl.c (merge_decls): Ditto.
        * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
        to RTL_CONST_OR_PURE_CALL_P.
        * tree.c (define_local_buitin): Rename DECL_IS_PURE to
        DECL_PURE_P.  Initialized DECL_LOOPING_CONST_PURE.
        (process_call_operands): Set tree_side_effects properly.
        * tree.h (TREE_READONLY_DECL_P): Removed.
        (DECL_IS_PURE): Renamed to DECL_PURE_P.
        (DECL_LOOPING_OR_CONST_P): New macro.
        (struct tree_function_decl): Added looping_const_or_pure_p.
        (ECF_*) Renumbered.
        (ECF_LOOPING_OR_CONST_P): New macro,
        * rtlanal.c (pure_const_p): Removed.
        * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
        * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
        to RTL_CONST_CALL_P.
        * ipa-pure-const.c (pure_const_state_e): Added looping field.
        (check_decl, check_tree, check_call, scan_function): Initialize
        looping.
        (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
        (static_execute): Set looping true for recursive functions.
        Undo setting state to IPA_NEITHER for recursive functions.
        * cse.c (cse_insn): 
        * ifcvt.c (noce_can_store_speculate_p): Changed
        CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or 
        RTL_CONST_OR_PURE_CALL_P.
        * dse.c (scan_insn): Ditto.
        * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
        * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
        RTL_CONST_OR_PURE_CALL_P.
        (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
        pure_call_p to RTL_CONST_CALL_P.
        * gimplify.c (gimplify_call_expr): Clear side effects for
        non-looping pure and constant calls.
        * calls.c (emit_call_1): Set rtl flags from ecf flags.
        (flags_from_decl_or_type): Set ecf flags from decl flags.
        (initialize_argument_information): Turn off
        ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
        Change const to pure if callee_copies is true rather than just
        turning off const.
        (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
        way of marking pure calls.
        (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
        Remove hack that was supposed to fix pr7335 and remove old
        way of marking pure calls.
        * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
        RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
        * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
        RTL_CONST_OR_PURE_CALL_P.
        * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
        * loop-invariant.c (find_exits, find_invariant_bb): Changed
        CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
        * sched-deps.c (schedule_analyze): Ditto.
        * rtl.h (struct rtx_def): Use call field, unchanging field, and
        return_val field of calls to represent pure and const function
        info.
        (CONST_OR_PURE_CALL_P): Deleted macro.
        (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
        RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
        * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
        TREE_READONLY.
        * tree-optimize.c (execute_fixup_cfg): Added test for
        ECF_LOOPING_CONST_OR_PURE.
        * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
        DECL_PURE_P.
        * tree-cfg.c (update_call_expr_flags): Do not clear tree side
        effects for looping pure or const calls.
        (verify_gimple_expr): Added verification code. 
        * config/alpha/alpha.c (alpha_legitimize_address,
        alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
        RTL_CONST_CALL_P.
        * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
        * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
        * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
        * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
        RTL_CONST_OR_PURE_CALL_P.
        * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
        and const calls to be deleted.

java:
2008-05-07  Kenneth Zadeck <zadeck@naturalbridge.com>

	* decl.c (java_init_decl_processing): Change DECL_IS_PURE to
	DECL_PURE_P.

cp:
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>

	 * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
	 DECL_LOOPING_CONST_OR_PURE_P attributes.
	 * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
	 DECL_PURE_P.

gfortran:
2008-05-07 Kenneth Zadeck <zadeck@naturalbridge.com>

	 * trans-decl.c (gfc_get_extern_function_decl, build_function_decl):
	 Rename DECL_IS_PURE to DECL_PURE_P.

From-SVN: r135053
2008-05-07 20:48:07 +00:00
Simon Baldwin
e4d3551548 Rolled back the following changes made in revision 134865:
* c-common.h (warn_array_subscript_range): New function.
        * c-common.c (warn_array_subscript_range): Ditto.
        * tree-vrp.c (check_array_ref): Corrected code to agree with
        comment, ignoring only arrays of size 0 or size 1.
        * c-typeck.c (build_array_ref): Call warn_array_subscript_range.

        * testsuite/gcc.dg/Warray-bounds.c: Updated for frontend warnings,
        additional tests for arrays of size 0 and size 1.
        * testsuite/g++.dg/warn/Warray-bounds.c: Ditto.
        * testsuite/gcc.dg/Warray-bounds-noopt.c: New testcase.
        * testsuite/g++.dg/warn/Warray-bounds-noopt.c: Ditto.

        * typeck.c (build_array_ref): Call warn_array_subscript_range.

From-SVN: r134889
2008-05-02 20:01:31 +00:00