Commit Graph

845 Commits

Author SHA1 Message Date
Richard Henderson
9e14e18fd1 c-common.def (GOTO_STMT, LABEL_STMT): Remove.
* c-common.def (GOTO_STMT, LABEL_STMT): Remove.
        * c-common.c (c_add_case_label): Use LABEL_EXPR.
        * c-common.h (GOTO_FAKE_P, LABEL_STMT_LABEL): Remove.
        (c_common_stmt_codes): Remove GOTO_STMT, LABEL_STMT.
        * c-dump.c (c_dump_tree): Likewise.
        * c-gimplify.c (c_gimplify_stmt): Likewise.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-parse.in (stmt): Use GOTO_EXPR.
        (label): Use LABEL_EXPR.
        * c-semantics.c (build_stmt): Set TREE_TYPE to void.
        * tree-inline.c (copy_body_r): Don't build empty BLOCKs.
cp/
        * decl.c (finish_destructor_body): Use LABEL_EXPR.
        * parser.c (cp_parser_statement): Update commentary.
        * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
        * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
        * tree.c (mark_local_for_remap_r): Likewise.

From-SVN: r83255
2004-06-16 11:21:20 -07:00
Richard Henderson
325c369115 c-common.c (lang_gimplify_stmt): Remove next_p argument.
* c-common.c (lang_gimplify_stmt): Remove next_p argument.
	(if_elt, if_stack, if_stack_space, c_expand_start_cond, c_finish_then,
	c_expand_end_cond, c_expand_start_else, c_finish_else, c_begin_if_stmt,
	c_begin_while_stmt, c_finish_while_stmt_cond): Move to c-typeck.c.
	(finish_fname_decls, fname_decl): Use statement_lists.
	(c_expand_expr_stmt): Don't set last_expr_type.
	(c_type_hash): Fix indentation.
	(c_safe_from_p): Don't follow TREE_CHAIN.
	(c_tree_chain_matters_p): Remove.
	* c-common.def (SCOPE_STMT): Remove.
	(CLEANUP_STMT): Redefine to contain its own body.
	* c-common.h (struct stmt_tree_s): Remove x_last_stmt,
	x_last_expr_type, x_last_expr_filename, x_scope_stmt_stack.
	Add x_cur_stmt_list.
	(last_tree, last_expr_type, last_expr_filename, RECHAIN_STMTS): Remove.
	(cur_stmt_list): New.
	(STATEMENT_LIST_STMT_EXPR): New.
	(SCOPE_BEGIN_P, SCOPE_END_P, SCOPE_STMT_BLOCK, SCOPE_NULLIFIED_P,
	SCOPE_NO_CLEANUPS_P, SCOPE_PARTIAL_P, NEW_FOR_SCOPE_P): Remove.
	(CLEANUP_BODY): New.
	(CLEANUP_DECL): Move to operand 2.
	(c_common_stmt_codes): Remove SCOPE_STMT.
	(COMPOUND_STMT_NO_SCOPE, COMPOUND_STMT_BODY_BLOCK): Remove.
	* c-decl.c (c_scope_stmt_stack, current_scope_stmt_stack): Remove.
	(c_push_function_context, c_pop_function_context): Don't save it.
	(finish_decl): Set TREE_USED on the decl for a cleanup.
	Use push_cleanup.
	(store_parm_decls): Use statement lists.
	(finish_function): Remove compstmt rule workaround.  Use statement
	lists.  Call finish_fname_decls after finalizing the body.
	(c_begin_compound_stmt): Move to c-typeck.c.
	* c-dump.c (c_dump_tree): Remove SCOPE_STMT.
	* c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts): New.
	(c_genericize): Invoke them.
	(c_gimplify_stmt): Don't look through TREE_CHAIN.  Kill SCOPE_STMT.
	(c_build_bind_expr): Export.
	(gimplify_block, gimplify_cleanup): Remove.
	(gimplify_condition): Use gimplify_stmt.
	(gimplify_for_stmt): Remove FOR_INIT_STMT chaining hack.
	(gimplify_if_stmt): Remove recursion hack.
	(c_gimplify_expr): Remove STMT_EXPR handling.
	(stmt_expr_last_stmt, gimplify_stmt_expr): Remove.
	(is_last_stmt_of_scope): Remove.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
	* c-mudflap.c (mflang_flush_calls): Use c_begin_compound_stmt,
	c_end_compound_stmt.
	* c-objc-common.c (build_cdtor): Likewise.
	* c-parse.in (primary): Use c_finish_stmt_expr.
	(push_scope, pop_scope): Remove.
	(c99_block_start, compstmt_start): Use c_begin_compound_stmt.
	(c99_block_end, compstmt): Use c_end_compound_stmt.
	(c99_block_lineno_labeled_stmt): Likewise.
	(compstmt_primary_start): Use c_begin_stmt_expr.
	(simple_if, select_or_iter_stmt): Update calls to stmt builders.
	(do_stmt_start): Fill in body directly.
	(lineno_stmt): Avoid setting lineno on constants.
	* c-pretty-print.c (pp_c_statement): Handle STATEMENT_LIST.
	Remove SCOPE_STMT.
	* c-semantics.c (begin_stmt_tree): Remove.
	(push_stmt_list, re_push_stmt_list, pop_stmt_list): New.
	(add_stmt): Use statement lists.
	(add_scope_stmt, finish_stmt_tree): Remove.
	(push_cleanup): New.
	* c-tree.h: Move some decls from c-common.h.
	* c-typeck.c (c_tree_expr_nonnegative_p): Simplify for statement lists.
	(do_case, c_finish_case): Likewise.
	(c_finish_then): Take body for then as argument.
	(c_finish_else): Similarly.
	(c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
	c_finish_for_stmt_incr, c_finish_for_stmt): New.
	(c_begin_stmt_expr, c_finish_stmt_expr): New.
	(c_begin_compound_stmt): Do scope management.
	(c_end_compound_stmt): New.
	* fold-const.c (tree_expr_nonnegative_p): Fix BIND_EXPR.
	* gimplify.c (voidify_wrapper_expr): Accept temporary argument.
	Look through exception handling constructs.
	(gimplify_bind_expr): Accept temporary argument.
	(gimplify_target_expr): Special case BIND_EXPR bodies.
	(gimplify_expr): Handle fallback == fb_none like a statement.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Kill.
	* langhooks.c (lhd_tree_inlining_tree_chain_matters_p): Remove.
	* langhooks.h (tree_chain_matters_p): Remove.
	* stub-objc.c (objc_clear_super_receiver): New.
	* tree-gimple.h (voidify_wrapper_expr): Update decl.
	(append_to_statement_list, append_to_statement_list_force): Move
	to tree-iterator.h.
	* tree-inline.c (expand_call_inline): Update call.
	(clone_body): Use statement lists.
	(walk_tree): Don't check tree_chain_matters_p.
	(copy_tree_r): Likewise.
	* tree-iterator.c (alloc_stmt_list): Clear lang bits.
	(tsi_link_before, tsi_link_after): Set TREE_SIDE_EFFECTS properly.
	* tree-iterator.h (append_to_statement_list,
	append_to_statement_list_force): Moved from tree-gimple.h.
	* tree-pretty-print.c (dump_generic_node): Clean up TARGET_EXPR dump.
	* objc/objc-act.c (build_module_descriptor): Use c_begin_compound_stmt.
	(objc_enter_block): Likewise.
	(objc_exit_block): Use c_end_compound_stmt.
	(objc_build_try_enter_fragment): Add #error and comment for
	rewriting for OBJCPLUS.
	(objc_build_extract_fragment, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_finally_prologue,
	objc_build_finally_epilogue): Update for C statement builders.
	* objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P):
	Remove.
cp/
	* call.c (initialize_reference): Don't build CLEANUP_STMT here.
	* cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
	(genericize_try_block): Use gimplify_stmt.
	(genericize_catch_block, genericize_eh_spec_block): Likewise.
	(cp_gimplify_init_expr): Remove STMT_EXPR special case.
	(gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
	* cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
	(cp_tree_chain_matters_p): Remove.
	* cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
	(COMPOUND_STMT_BODY_BLOCK): New.
	(STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
	(EXPR_STMT_STMT_EXPR_RESULT): New.
	(building_stmt_tree): Check cur_stmt_list.
	(tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
	(BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
	* decl.c (poplevel): Use pop_stmt_list for minding cleanups.
	(cp_finish_decl): Use push_cleanup.
	(start_function, finish_function): Use statement lists.
	(finish_stmt): Do nothing.
	* except.c (begin_eh_spec_block): Use statement lists.
	(check_handlers_1, check_handlers): Likewise.
	* init.c (construct_virtual_base): Don't add extra compound stmts.
	(build_vec_init): Likewise.
	* name-lookup.c (maybe_push_cleanup_level): Use statement lists.
	* name-lookup.h (struct cp_binding_level): Add statement_list.
	* parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
	(cp_parser_labeled_statement, cp_parser_expression_statement,
	cp_parser_statement_seq_opt): Likewise.
	(cp_parser_compound_statement): Likewise.  Take bool for try block.
	(cp_parser_selection_statement): Tidy if processing.
	(cp_parser_already_scoped_statement): Rewrite to do what it says.
	* pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
	(tsubst_expr): Rewrite STMT_EXPR processing.  Handle STATEMENT_LIST.
	Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
	* semantics.c (do_poplevel, do_pushlevel): Use statement lists.
	(finish_cond): New, rewritten from FINISH_COND.
	(simplify_loop_decl_cond): New.
	(finish_expr_stmt): Avoid nested EXPR_STMTs.
	(begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
	begin_else_clause, finish_else_clause, finish_if_stmt,
	begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
	begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
	finish_for_cond, finish_for_stmt, begin_switch_stmt,
	finish_switch_cond, finish_switch_stmt, begin_try_block,
	finish_try_block, finish_cleanup_try_block, finish_function_try_block,
	finish_handler_sequence, finish_function_handler_sequence,
	begin_handler, finish_handler_parms, finish_handler,
	begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
	using statement lists.
	(begin_compound_stmt): Replace has_no_scope argument with flags.
	Update all callers.  Use statement lists.
	(finish_compound_stmt): Likewise.
	(finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
	(current_scope_stmt_stack): Remove.
	(simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
	* typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
	Rewrite with statement lists.
testsuite/
	* g++.dg/ext/stmtexpr1.C: XFAIL.
	* gcc.dg/20030612-1.c: XFAIL.

From-SVN: r83221
2004-06-15 18:21:38 -07:00
Jakub Jelinek
498c0f2757 re PR c++/14791 (13070 does not fix -Wformat with fprintf)
PR c++/14791
	* tree.h (enum tree_index): Add TI_FILEPTR_TYPE.
	(fileptr_type_node): Define.
	* tree.c (build_common_tree_nodes_2): Initialize
	fileptr_type_node to ptr_type_node.
	* c-common.c (c_common_nodes_and_builtins): For C++, make
	fileptr_type_node a distinct type copy.
	* builtin-types.def (BT_FILEPTR, BT_FN_INT_CONST_STRING_FILEPTR,
	BT_FN_INT_INT_FILEPTR, BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
	BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
	BT_FN_INT_FILEPTR_CONST_STRING_VAR): Add.
	(BT_FN_INT_CONST_STRING_PTR, BT_FN_INT_INT_PTR,
	BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR, BT_FN_INT_PTR_CONST_STRING_VAR,
	BT_FN_INT_PTR_CONST_STRING_VALIST_ARG): Remove.
	* builtins.def (BUILT_IN_FPRINTF, BUILT_IN_FPRINTF_UNLOCKED,
	BUILT_IN_FPUTC, BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS,
	BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FSCANF, BUILT_IN_FWRITE,
	BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_VFPRINTF, BUILT_IN_VFSCANF): Use
	the above *FILEPTR* types instead of *PTR*.

	* decl.c (duplicate_decls): Handle fileptr_type_node arguments
	specially.

	* g++.dg/opt/builtins1.C: New test.

From-SVN: r82902
2004-06-10 10:08:02 +02:00
Mark Mitchell
d5a10cf069 re PR c++/15337 (sizeof on incomplete type diagnostic)
PR c++/15337
	* error.c (c_sizeof_or_alignof_type): Use more detailed error
	message.

	PR c++/15766
	* parser.c (cp_parser_iteration_statement): Fix typo in error
	message.

	PR c++/14777
	* pt.c (tsubst_default_argument): Do not defer access checks
	while substituting into the default argument.

	PR c++/15554
	* pt.c (tsubst_copy): Do not try to substitute for an enumeration
	constant in a non-dependent context.

	PR c++/15057
	* except.c (build_throw): Ensure that temp_expr has been
	initialized.

	PR c++/15337
	* g++.dg/expr/sizeof3.C: New test.

	PR c++/14777
	* g++.dg/template/access14.C: New test.

	PR c++/15554
	* g++.dg/template/enum1.C: New test.

	PR c++/15057
	* g++.dg/eh/throw1.C: New test.

From-SVN: r82693
2004-06-07 15:54:15 +00:00
Andrew Pinski
3c79fa86db c-decl.c (c_expand_body_1): Remove and fold back into ...
ChangeLog:
	* c-decl.c (c_expand_body_1): Remove and fold back into ...
	(c_expand_body): here.
	(c_expand_decl): Move to ...
	* c-common.c (c_expand_decl): Here and remove check for nested
	functions.
	* c-common.h (c_expand_decl): Add prototype.
	* c-tree.h (c_expand_decl): Remove.

cp/ChangeLog:
	* cp-lang.c (cp_expand_decl): Remove.
	(LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.

From-SVN: r82469
2004-05-30 16:53:32 -07:00
Kazu Hirata
9cf737f89f bb-reorder.c, [...]: Fix comment formatting.
* bb-reorder.c, builtins.c, c-common.c, c-gimplify.c,
	c-incpath.c, cgraphunit.c, ddg.c, defaults.h, dwarf2out.c,
	expmed.c, flags.h, gcc.c, gensupport.c, gimplify.c, global.c,
	passes.c, reg-stack.c, target.h, toplev.c, tree-alias-ander.c,
	tree-alias-common.c, tree-cfg.c, tree-complex.c, tree-dfa.c,
	tree-eh.c, tree-mudflap.c, tree-mudflap.h, tree-outof-ssa.c,
	tree-phinodes.c, tree-pretty-print.c, tree-ssa-alias.c,
	tree-ssa-ccp.c, tree-ssa-live.c, tree-ssa-live.h,
	tree-ssa-pre.c, tree.h, value-prof.h, varasm.c: Fix comment
	formatting.

From-SVN: r82463
2004-05-30 18:32:31 +00:00
Kazu Hirata
1ea7e6ad84 c-common.c, [...]: Fix comment typos.
* c-common.c, calls.c, cfgcleanup.c, cgraph.c, cgraphunit.c,
	ddg.c, ddg.h, df.c, df.h, except.c, expr.c, flags.h,
	fold-const.c, gcc.c, gimplify.c, haifa-sched.c,
	modulo-sched.c, tree-inline.c, tree-into-ssa.c, tree-nested.c,
	tree-nrv.c, tree-ssa-ccp.c, tree-ssa-dom.c, tree-ssa-live.c,
	tree-ssa-loop.c, tree-ssa-pre.c, tree-tailcall.c, tree.h: Fix
	comment typos.  Follow spelling conventions.

From-SVN: r82439
2004-05-30 07:12:58 +00:00
Aldy Hernandez
5557d6723d fix typo in last commit....
From-SVN: r82386
2004-05-28 22:18:24 +00:00
Aldy Hernandez
e851b37384 * c-common.c (fname_as_string): Fix xcalloc to xmalloc.
From-SVN: r82384
2004-05-28 22:05:45 +00:00
Aldy Hernandez
0d0bc03606 function.cc: New.
* testsuite/g++.dg/charset/function.cc: New.

	* testsuite/gcc.dg/charset/function.c: New.

	* c-decl.c (c_make_fname_decl): Free return value from
	fname_as_string.

	* cp/decl.c (cp_make_fname_decl): Free return value from
	fname_as_string.

	* c-common.c (fname_as_string): Translate if necessary.

From-SVN: r82381
2004-05-28 21:56:59 +00:00
Andrew Pinski
2fec96c1b9 c-common.c (c_estimate_num_insns_1): Kill.
2004-05-28  Andrew Pinski  <pinskia@physics.uc.edu>

        * c-common.c (c_estimate_num_insns_1): Kill.
        (c_estimate_num_insns): Kill.
        * c-common.h (c_estimate_num_insns): Kill.

From-SVN: r82377
2004-05-28 13:32:20 -07:00
Paolo Bonzini
d1a7edafe6 re PR rtl-optimization/15649 (ICE with __builtin_isgreater and -ffast-math)
gcc/ChangeLog:
2004-05-27  Paolo Bonzini  <bonzini@gnu.org>
	    Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/15649
	Add LTGT_EXPR and improve pretty-printing of unordered
	comparisons.
	* c-common.c (c_common_truthvalue_conversion):
	Handle LTGT_EXPR.
	* c-typeck.c (build_binary_op): Likewise.
	* dojump.c (do_jump): Likewise.
	* expr.c (expand_expr_real_1, do_store_flag): Likewise.
	* predict.c (tree_predict_by_opcode): Likewise.
	* real.c (real_compare): Likewise.
	* tree-cfg.c (verify_expr): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	Handle ORDERED_EXPR, UNORDERED_EXPR.
	(op_symbol): Print unordered comparisons differently
	than ordered ones.
	* tree.def (LTGT_EXPR): New '<' tree code.
	* doc/c-tree.texi (Expressions): Document floating-point
	comparison nodes.

	Fold comparisons between floating point values.
	* fold-const.c (enum comparison_code): New, from
	#define'd constants.  Define compcodes for unordered
	comparisons and for invalid transformations.
	(invert_tree_comparison): Add "honor_nans" parameter.
	(fold_truthop): Revamp to work on floating-point types too.
	(comparison_to_compcode): Support unordered comparisons.
	Use new enum comparison_code.
	(compcode_to_comparison): Likewise.
	(combine_compcodes): New function.
	(invert_truthvalue): Let invert_tree_comparison decide
	whether it is valid to fold the comparison.  Fold ORDERED
	and UNORDERED even if flag_unsafe_math_optimizations is off,
	and the remaining even if flag_unsafe_math_optimizations
	is off but we are under -fno-trapping-math.
	(fold_relational_const): Integer modes do not honor NaNs.

gcc/testsuite/ChangeLog:
2004-05-27  Paolo Bonzini  <bonzini@gnu.org>

	* gcc.c-torture/compare-fp-1.c, gcc.c-torture/compare-fp-2.c,
	gcc.c-torture/compare-fp-3.c, gcc.c-torture/compare-fp-4.c,
	gcc.c-torture/compare-fp-3.x, gcc.c-torture/compare-fp-4.x,
	gcc.c-torture/pr15649-1.c: New.

Co-Authored-By: Roger Sayle <roger@eyesopen.com>

From-SVN: r82365
2004-05-28 16:37:08 +00:00
Zack Weinberg
6f312d18d4 [multiple changes]
2004-05-22  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-common.c (c_common_truthvalue_conversion): Handle
	UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
	ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
	i.e. set the type to truthvalue_type_node and return.

2004-05-22  Zack Weinberg  <zack@codesourcery.com>

       * tree.h (struct tree_decl): Add possibly_inlined bit.
	(DECL_POSSIBLY_INLINED): New accessor macro.
	* cgraph.h: Remove declaration of cgraph_inline_hash.
	* cgraph.c: Remove definition of cgraph_inline_hash.
	(hash_node): Revert to hashing DECL_UID.
	(eq_node): Take two pointers to cgraph_node structures.
	Compare DECL_UIDs.
	(cgraph_remove_node): Pass the node directly to htab_find_slot.
	(cgraph_varpool_hash_node): Rename hash_varpool_node;
	hash on DECL_UID.
	(eq_cgraph_varpool_node): Rename eq_varpool_node; take two
	pointers to cgraph_varpool_node structures; compare DECL_UIDs.
	(cgraph_node): Allocate a temporary node on the stack, fill in
	its DECL field, and pass that to htab_find_slot.
	(cgraph_varpool_node): Likewise.
	(cgraph_function_possibly_inlined_p): If global info is ready,
	return the DECL_POSSIBLY_INLINED bit.
	* cgraphunit.c (cgraph_mark_inline_edge): Set DECL_POSSIBLY_INLINED
	instead of mucking with cgraph_inline_hash.

From-SVN: r82140
2004-05-22 18:16:39 +00:00
Zack Weinberg
b4117c3061 Makefile.def, [...]: Remove all mention of libf2c.
top:
	* Makefile.def, Makefile.tpl, configure.in: Remove all mention
	of libf2c.
	* configure, Makefile.in: Regenerate.
contrib:
	* gcc_update: Remove gcc/f/intdoc.texi and all libf2c files
	from list of files to be touched.
	* convert_to_f2c, convert_to_g2c, download_f2c: Delete.
gcc:
	* f: Entire directory removed

	* c-common.h (CTI_G77_INTEGER_TYPE, CTI_G77_UINTEGER_TYPE)
	(CTI_G77_LONGINT_TYPE, CTI_G77_ULONGINT_TYPE)
	(g77_integer_type_node, g77_uinteger_type_node)
	(g77_longint_type_node, or g77_ulongint_type_node): Delete.
	* c-common.c (c_common_nodes_and_builtins): Do not initialize
	the above set of variables.

	* config/i386/uwin.h: No need to define WIN32_UWIN_TARGET.
	* doc/invoke.texi, doc/standards.texi: Remove cross-references
	to g77 manual.
gcc/po:
	* exgettext (spec_error_string): Do not scan beyond the end of
	the string for a close brace.  Do not bail out at the first
	incidence of %%e.
	* gcc.pot: Regenerate.

From-SVN: r81967
2004-05-18 01:26:21 +00:00
Zack Weinberg
90afe2c9f5 tree.def (documentation): Remove mention of class 'b'.
* tree.def (documentation): Remove mention of class 'b'.
	(BLOCK): Now in class 'x'.
	* c-common.c (verify_tree): Remove case 'b'.
	* c-typeck.c (same_translation_unit_p): Change 'b' to 'x'.
	* calls.c (calls_function_1): Control cannot get past the switch
	when exp is a BLOCK.
	* print-tree.c (print_node): Move code for class 'b' to the class
	'c'/'x' switch, as case BLOCK.
	* tree.c (tree_size, make_node_stat, tree_node_structure): Likewise.
	(unsafe_for_reeval, substitute_placeholder_in_expr)
	(stabilize_reference_1): Remove case 'b'.
	* tree-browser.c (browse_tree): Change all tests for TREE_CODE_CLASS
	of something being 'b' to tests for TREE_CODE of something being
	BLOCK.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
ada:
	* trans.c (gnat_stabilize_reference_1): Remove case 'b'.

From-SVN: r81831
2004-05-14 02:33:00 +00:00
Diego Novillo
6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Paolo Bonzini
cc27e657d3 re PR target/14899 (wrong code due to change in compatibility rules for vector types)
gcc/ChangeLog:
2004-05-04  Paolo Bonzini  <bonzini@gnu.org>
            Richard Henderson  <rth@redhat.com>

        PR target/14899

        * c-common.c (vector_types_convertible_p): New function.
        * c-typeck.c (comptypes): Recurse on vector types.
        (convert_for_assignment): Use vector_types_convertible_p.
        (digest_init): Use vector_types_convertible_p to check
        validness of constant vector initializers; otherwise treat
        them as scalars.
        * tree.c (make_or_reuse_type): New.
        (build_common_tree_nodes): Use it.
        * cp/call.c (standard_conversion): Likewise.
        * cp/typeck.c (comptypes): Recurse on vector types.
        (convert_for_assignment): Use vector_types_convertible_p.
        * config/rs6000/rs6000.c (build_opaque_vector_type):
        New function.
        (rs6000_init_builtins): Use it.


gcc/testsuite/ChangeLog:
2004-05-04  Paolo Bonzini  <bonzini@gnu.org>

	* g++.dg/ext/spe1.C: New testcase.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r81504
2004-05-05 07:23:00 +00:00
Zdenek Dvorak
d1c3882392 Makefile.in (LIBGCOV): Add _gcov_fork...
* Makefile.in (LIBGCOV): Add _gcov_fork, _gcov_execl, _gcov_execlp,
	_gcov_execle, _gcov_execv, _gcov_execvp, _gcov_execve.
	* builtin-types.def (BT_PID, BT_PTR_CONST_STRING, BT_FN_PID,
	BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
	BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING): New.
	* builtins.c (expand_builtin_fork_or_exec): New.
	(expand_builtin): Call it.
	* builtins.def (BUILT_IN_EXECL, BUILT_IN_EXECLP,BUILT_IN_EXECLE,
	BUILT_IN_EXECV, BUILT_IN_EXECVP, BUILT_IN_EXECVE, BUILT_IN_FORK): New.
	* c-common.c (PID_TYPE): New macro.
	(c_common_nodes_and_builtins): Initialize pid_type_node.
	* calls.c (special_function_p): Do not handle fork and exec.
	(expand_call): Do not handle ECF_FORK_OR_EXEC.
	* gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
	__gcov_execv, __gcov_execvp, __gcov_execve): Declare.
	* libgcov.c (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
	__gcov_execv, __gcov_execvp, __gcov_execve): New.
	* tree.h (enum tree_index): Add TI_PID_TYPE.
	(pid_type_node): New macro.
	(ECF_FORK_OR_EXEC): Removed.

From-SVN: r81118
2004-04-23 22:50:16 +00:00
Andrew Pinski
c29726e22d c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead of TREE_READONLY for types.
2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>

        * c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead
        of TREE_READONLY for types.
2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>

        * gcc.dg/20040409-1.c: New test.

From-SVN: r80565
2004-04-09 13:08:03 -07:00
Richard Kenner
8df83eae1e builtins.c, [...]: Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
* builtins.c, c-aux-info.c, c-common.c, c-cppbuiltin.c, c-decl.c:
	Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
	* c-format.c, c-opts.c, c-pretty-print.c, c-typeck.c: Likewise.
	* calls.c, convert.c, dbxout.c, dojump.c, dwarf2out.c: Likewise.
	* expmed.c, expr.c, fold-const.c, function.c, integrate.c: Likewise.
	* optabs.c, sdbout.c, stmt.c, stor-layout.c, tree-dump.c: Likewise.
	* tree.c, config/iq2000/iq2000.c, config/m32r/m32r.c: Likewise.
	* config/mips/mips.c, config/rs6000/rs6000.c: Likewise.
	* config/s390/s390.c, config/sparc/sparc.c, objc/objc-act.c: Likewise.
	* stor-layout.c (layout_type, case COMPLEX_TYPE): Test for
	REAL_TYPE, not INTEGER_TYPE.
	(layout_type, case VECTOR_TYPE): Simplify code.
	* tree.c (build_vector_type_for_mode): Remove dup unsigned setting.
	* tree.h: Update comments.
	(STRIP_NOPS): Use TYPE_UNSIGNED.
	(TYPE_UNSIGNED): New macro.
	(TYPE_TRAP_SIGNED): Remove now redundant check.
	(SAVE_EXPR_NOPLACEHOLDER): Don't use TREE_UNSIGNED.

	* cp/call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	* cp/class.c (check_bitfield_decl): Likewise.
	* cp/cvt.c (type_promotes_to): Likewise.
	* cp/decl.c (finish_enum): Likewise.
	* cp/mangle.c (write_builtin_type): Likewise.
	* cp/semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
	* cp/typeck.c (type_after_usual_arithmetic_conversions): Likewise.
	(build_binary_op): Likewise.

	* f/com.c (ffecom_arrayref_): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	(ffecom_expr_): Likewise.

	* java/jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.

	* treelang/treetree.c (tree_lang_signed_or_unsigned_type):
	Use TYPE_UNSIGNED, not TREE_UNSIGNED.

	* ada/decl.c (gnat_to_gnu_entity, make_type_from_size):
	Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	* ada/trans.c (tree_transform, convert_with_check): Likewise.
	* ada/utils.c (gnat_signed_or_unsigned_type): Likewise.
	(build_vms_descriptor, unchecked_convert): Likewise.
	* ada/utils2.c (nonbinary_modular_operation): Likewise.

From-SVN: r80287
2004-03-31 22:50:43 -05:00
Richard Kenner
22421b79c8 alias.c (get_alias_set): Add support for TYPE_REF_CAN_ALIAS_ALL.
* alias.c (get_alias_set): Add support for TYPE_REF_CAN_ALIAS_ALL.
	* c-common.c (handle_mode_attribute): Add extra arg to
	build_pointer_type_for_mode and build_reference_type_for_mode.
	* c-typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
	for INTEGER_CST.
	* tree.c (build_pointer_type_for_mode): Add arg CAN_ALIAS_ALL.
	Chain pointers via TYPE_NEXT_PTR_TO.
	(build_reference_type_for_mode): Similarly.
	(build_type_no_quals): Add extra arg to build_pointer_type_for_mode
	and build_reference_type_for_mode.
	(tree_check4_failed): New function.
	* tree.h (TREE_CHECK4, PTR_OR_REF_CHECK): New macros.
	(TYPE_REF_CAN_ALIAS_ALL, TYPE_NEXT_PTR_TO, TYPE_NEXT_REF_TO): Likewise.
	(TREE_NO_UNSUED_WARNING, TREE_VIA_VIRTUAL, TREE_CONSTANT_OVERFLOW):
	Add check.

	* cp/typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
	for INTEGER_CST.

	* ada/decl.c (gnat_to_gnu_entity, case E_Access_Type): Pass value
	of No_Strict_Aliasing to build_pointer_type_for_mode.
	* ada/utils.c (update_pointer_to): Walk pointer and ref chains.

From-SVN: r79873
2004-03-23 15:43:44 -05:00
Kazu Hirata
d1a6adeb67 c-common.c, [...]: Fix comment typos.
* c-common.c, cfgcleanup.c, cgraphunit.c, c-pretty-print.c,
	expmed.c, ggc-common.c, jump.c, passes.c, recog.c, regmove.c,
	reorg.c, tree.h: Fix comment typos.

From-SVN: r79730
2004-03-20 05:21:41 +00:00
Kazu Hirata
5fd9b17875 alias.c, [...]: Replace calls via (*targetm.foo) () with targetm.foo ().
* alias.c, attribs.c, bt-load.c, builtins.c, c-common.c,
	c-decl.c, c-objc-common.c, c-typeck.c, calls.c, cfglayout.c,
	cse.c, dbxout.c, dwarf2out.c, except.c, final.c,
	haifa-sched.c, integrate.c, passes.c, rtlanal.c, sched-rgn.c,
	sched-vis.c, simplify-rtx.c, stor-layout.c, tree.c, varasm.c,
	vmsdbgout.c: Replace calls via (*targetm.foo) () with
	targetm.foo ().

From-SVN: r79729
2004-03-20 04:52:59 +00:00
Mark Mitchell
9d363a56a8 c-common.c (pointer_int_sum): Do not complain about using pointers to pointers-to-members.
* c-common.c (pointer_int_sum): Do not complain about using
	pointers to pointers-to-members.

	* call.c (build_conditional_expr): Do not call force_rvalue for
	operands of void_type when the conditional expression itself has
	void type.
	* name-lookup.c (pushdecl): Don't consider a declaration of a
	function named "main" to be an overload of a type named "main".
	* parser.c (cp_parser_template_name): Perform name lookup when the
	template name is proceeded by "template" if the qualifying scope
	is non-dependent.
	* typeck.c (composite_pointer_type_r): Correctly handle
	pointer-to-member types.
	(build_const_cast): Likewise.

	* g++.dg/expr/cond5.C: New test.
	* g++.dg/expr/constcast1.C: Likewise.
	* g++.dg/expr/ptrmem2.C: Likewise.
	* g++.dg/expr/ptrmem3.C: Likewise.
	* g++.dg/lookup/main1.C: Likewise.
	* g++.dg/template/lookup6.C: Likewise.

From-SVN: r79663
2004-03-19 01:35:01 +00:00
Paolo Bonzini
4a5eab38a4 c-common.c (c_common_type_for_mode): Build vector types on demand.
gcc/ChangeLog
2004-03-16  Paolo Bonzini  <bonzini@gnu.org>

	* c-common.c (c_common_type_for_mode): Build vector types on
	demand.
	(handle_mode_attribute): Deprecate using the mode attribute
	to create vector types.  Fix indentation.
	(vector_type_node_list): Remove.
	(handle_vector_size_attribute): Create vector types on demand.
	Strip a NON_LVALUE_EXPR from the attribute if there is one.
	* c-typeck.c (comptypes): Make vector types compatible if they
	have the same underlying mode.
	(convert_for_assignment): Use comptypes to convert between
	vector types.
	* tree.c (build_common_tree_nodes_2): Do not create vector types.
	* config/arm/arm.c (arm_init_iwmmxt_builtins): Create necessary
	vector types.
	* tree.h: Remove vector types.
	* config/i386/i386.c (i386_init_mmx_sse_builtins): Likewise.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Likewise.
	(V16QI_type_node, V2SI_type_node, V2SF_type_node, V4HI_type_node,
	V4SI_type_node, V4SF_type_node, V8HI_type_node): New globals.
	* doc/extend.texi (Vector Types): Document how to use the
	vector_size attribute to create vectors, rather than mode.

	* config/arm/mmintrin.h: Use vector_size attribute, not mode.
	* config/i386/emmintrin.h: Likewise.
	* config/i386/mmintrin.h: Likewise.
	* config/i386/xmmintrin.h: Likewise.
	* config/sh/ushmedia.h: Likwise.

testsuite/ChangeLog
2004-03-16  Paolo Bonzini  <bonzini@gnu.org>

	* g++.dg/eh/simd-1.C: Use vector_size attribute, not mode.
	* g++.dg/eh/simd-2.C: Likewise.
	* g++.dg/init/array10.C: Likewise.
	* gcc.c-torture/compile/simd-1.c: Likewise.
	* gcc.c-torture/compile/simd-2.c: Likewise.
	* gcc.c-torture/compile/simd-3.c: Likewise.
	* gcc.c-torture/compile/simd-4.c: Likewise.
	* gcc.c-torture/compile/simd-6.c: Likewise.
	* gcc.c-torture/execute/simd-1.c: Likewise.
	* gcc.c-torture/execute/simd-2.c: Likewise.
	* gcc.dg/compat/vector-defs.h: Likewise.
	* gcc.dg/20020531-1.c: Likewise.
	* gcc.dg/altivec-3.c: Likewise.
	* gcc.dg/altivec-4.c: Likewise.
	* gcc.dg/altivec-varargs-1.c: Likewise.
	* testsuite/gcc.dg/compat/vector-defs.h: Likewise.
	* gcc.dg/i386-mmx-3.c: Likewise.
	* gcc.dg/i386-sse-4.c: Likewise.
	* gcc.dg/i386-sse-5.c: Likewise.
	* gcc.dg/i386-sse-8.c: Likewise.
	* gcc.dg/simd-1.c: Likewise.
	* gcc.dg/20030218-1.c: Likewise.  Plus, do not declare
	__ev64_opaque__ since the machine description provides it.

Index: c-common.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-common.c,v
retrieving revision 1.487
diff -u -r1.487 c-common.c
--- c-common.c	26 Feb 2004 01:24:37 -0000	1.487
+++ c-common.c	10 Mar 2004 10:25:28 -0000
@@ -1874,38 +1874,12 @@
   if (mode == TYPE_MODE (build_pointer_type (integer_type_node)))
     return unsignedp ? make_unsigned_type (mode) : make_signed_type (mode);

-  switch (mode)
+  if (VECTOR_MODE_P (mode))
     {
-    case V16QImode:

From-SVN: r79544
2004-03-16 20:37:31 +00:00
Roger Sayle
ae2bcd98fa alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) () with lang_hooks.foo ().
* alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) ()
	with lang_hooks.foo ().
	* builtins.c (expand_builtin_va_arg): Likewise.
	* c-common.c (fname_as_string, c_common_truthvalue_conversion,
	c_common_type_for_mode, c_common_nodes_and_builtins,
	handle_mode_attribute, handle_vector_size_attribute): Likewise.
	* c-convert.c (convert): Likewise.
	* c-format.c (check_format_types): Likewise.
	* c-objc-common.c (c_tree_printer): Likewise.
	* c-typeck.c (build_unary_op, build_conditional_expr,
	build_binary_op): Likewise.
	* calls.c (try_to_integrate, expand_call,
	emit_library_call_value_1): Likewise.
	* cgraph.c (cgraph_node_name, cgraph_function_possibly_inlined_p):
	Likewise.
	* cgraphunit.c (record_call_1, cgraph_analyze_function,
	cgraph_expand_function): Likewise.
	* convert.c (convert_to_pointer, convert_to_integer): Likewise.
	* coverage.c (build_fn_info_type, build_ctr_info_type,
	build_gcov_info, create_coverage): Likewise.
	* dbxout.c (dbxout_init): Likewise.
	* diagnostic.c (diagnostic_report_current_function): Likewise.
	* dojump.c (do_jump): Likewise.
	* dwarf2out.c (dwarf2_name): Likewise.
	* except.c (init_eh): Likewise.
	* explow.c (expr_size, int_expr_size): Likewise.
	* expmed.c (make_tree, const_mult_add_overflow_p, expand_mult_add):
	Likewise.
	* expr.c (store_expr, store_constructor, safe_from_p,
	expand_expr_real, do_store_flag, try_casesi): Likewise.
	* function.c (push_function_context_to, pop_function_context_from,
	free_after_parsing, assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack, allocate_struct_function, current_function_name):
	Likewise.
	* integrate.c (copy_decl_for_inlining, expand_inline_function):
	Likewise.
	* langhooks.c (lhd_clear_binding_stack, write_global_declarations,
	lhd_print_error_function): Likewise.
	* opts.c (handle_option, decode_options): Likewise.
	* passes.c (open_dump_file): Likewise.
	* print-tree.c (print_node): Likewise.
	* stmt.c (expand_fixup, fixup_gotos, expand_asm_operands,
	expand_decl_cleanup, emit_case_nodes): Likewise.
	* stor-layout.c (variable_size): Likewise.
	* toplev.c (announce_function, wrapup_global_declarations,
	check_global_declarations, compile_file, default_tree_printer,
	process_options, lang_dependent_init, finalize): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (remap_decl, remap_block, copy_body_r,
	initialize_inlined_parameters, declare_return_variable,
	inlinable_function_p, expand_call_inline, optimize_inline_calls,
	walk_tree, copy_tree_r): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree.c (decl_assembler_name, tree_size, size_in_bytes, staticp,
	unsafe_for_reeval, get_unwidened, get_narrower, get_callee_fndecl,
	variably_modified_type_p, dump_tree_statistics): Likewise.
	* varasm.c (assemble_variable, compare_constant, copy_constant,
	force_const_mem, compute_reloc_for_constant, output_constant,
	output_addressed_constants, initializer_constant_valid_p): Likewise.

From-SVN: r79481
2004-03-14 22:26:14 +00:00
Richard Henderson
f6a76b9f5d c-common.c (handle_alias_attribute): Reject the attribute if current_function_decl is set.
* c-common.c (handle_alias_attribute): Reject the attribute if
        current_function_decl is set.

From-SVN: r78472
2004-02-25 17:24:37 -08:00
Zack Weinberg
3521b33c2f Remove -fwritable-strings.
gcc/
	Remove -fwritable-strings.
	* c-common.c (fix_string_type): Don't check
	flag_writable_strings.
	(fix_string_type): Likewise.
	* c-opts.c (set_std_c89): Don't initialize
	flag_writable_strings.
	(set_std_c99): Likewise.
	* common.opt (fwritable-strings): Remove.
	* flags.h: Remove the external declaration of
	flag_writable_strings.
	* opts.c (common_handle_option) <OPT_fwritable_strings>:
	Remove.
	* toplev.c (flag_writable_strings): Remove.
	(f_options): Remove an entry for writable-strings.
	* varasm.c (const_hash_1) <STRING_CST>: Don't check
	flag_writable_strings.
	(compare_constant) <STRING_CST>: Likewise.
	(build_constant_desc): Likewise.
	* config/darwin.c (machopic_select_section): Likewise.
	* config/arm/arm.c (AOF_ASSEMBLER): Likewise.
	* config/arm/pe.c (arm_pe_encode_section_info): Likewise.
	* config/iq2000/iq2000.c (iq2000_select_section): Likewise.
	* config/mips/mips.c (mips_select_section): Likewise.
	(mips_encode_section_info): Likewise.
	* config/pa/pa.c (pa_select_section): Likewise.
	* config/pa/pa.h (TEXT_SPACE_P): Likewise.
	* config/v850/v850.c (v850_select_section): Likewise.
	* doc/invoke.texi (-fwritable-strings): Remove.
	(-fno-const-strings): Don't mention -fwritable-strings.
	* doc/trouble.texi: Don't mention -fwritable-strings.

gcc/cp/
	* decl.c (cxx_init_decl_processing): Don't check
	flag_writable_strings.

gcc/testsuite/
	* gcc.dg/fwritable-strings-1.c: Remove.

Co-Authored-By: Kazu Hirata <kazu@cs.umass.edu>

From-SVN: r78333
2004-02-23 21:43:18 +00:00
Kazu Hirata
321440fd61 c-common.c, [...]: Fix comment typos.
* c-common.c, cfghooks.c, rtlanal.c, varasm.c: Fix comment
	typos.

From-SVN: r77995
2004-02-17 23:03:37 +00:00
Mark Mitchell
57782ad852 re PR c++/11326 (C++ IA64 ABI: 3.1.4: sometimes pointer to temporary return value is implicit first parameter preceding "this")
PR c++/11326
	* c-common.c (flag_abi_version): Remove.
	* c-common.h (flag_abi_version): Likewise.
	* c-opts.c (c_common_handle_option): Remove OPT_fabi_version case.
	* c.opt (fabi-version): Remove.
	* calls.c (expand_call): Always pass a function type to
	struct_value_rtx.  Use convert_memory_address.
	* common.opt (fabi-version): Add it.
	* flags.h (flag_abi_version): Likewise.
	(abi_version_at_least): New macro.
	* opts.c (common_handle_option): Add OPT_fabi_version.
	* toplev.c (flag_abi_version): Define it.
	* config/ia64/ia64.c (ia64_struct_retval_addr_is_first_parm_p):
	New function.
	(ia64_output_mi_thunk): Use it.
	(ia64_struct_value_rtx): Likewise.

	PR c++/11326
	* cp-tree.h (abi_version_at_least): Remove.
	* mangle.c: Include flags.h.

	PR c++/11326
	* g++.dg/abi/structret1.C: New test.

From-SVN: r77968
2004-02-17 18:32:45 +00:00
Ziemowit Laski
b34417a407 c-common.c (vector_size_helper): Remove; call reconstruct_complex_type() instead.
2004-02-10  Ziemowit Laski  <zlaski@apple.com>

	* c-common.c (vector_size_helper): Remove; call
	reconstruct_complex_type() instead.
	* tree.c (reconstruct_complex_type): New function
	(formerly vector_size_helper() in c-common.c).
	(make_vector): Make externally visible.
	* tree.h (reconstruct_complex_type, make_vector): Add prototypes.

From-SVN: r77632
2004-02-11 01:55:29 +00:00
James E Wilson
228ae085b5 re PR c++/11295 (ICE when using a non-trivial object in a compound statement expression)
PR c++/11295
* c-common.c (c_expand_expr, case STMT_EXPR): Change expand_expr call
to expand_expr_real call, and pass in alt_rtl as last argument.

From-SVN: r77557
2004-02-09 13:32:37 -08:00
Zack Weinberg
a6f78652f3 c-common.c (shadow_warning): Delete.
* c-common.c (shadow_warning): Delete.
	* c-common.h (free_parser_stacks, shadow_warning, sw_kind): Delete.
	* c-decl.c (warn_if_shadowing): Issue shadow warnings directly.
	* c-opts.c (c_common_parse_file): Don't call free_parser_stacks.
	* c-parse.in (free_parser_stacks): Delete.
cp:
	* name-lookup.c (pushdecl): Issue shadow warnings directly.
	* parser.c (free_parser_stacks): Delete.
testsuite:
	* gcc.c-torture/execute/string-opt-15.c: Define memcmp with void *
	arguments.
	* gcc.dg/fwritable-strings-1.c: Expect the deprecation notice.
------
	Bug 13856
	* c-decl.c (diagnose_mismatched_decls): Only give special
	treatment when olddecl is DECL_BUILT_IN, if C_DECL_INVISIBLE
	is also true.
	(merge_decls): Don't clear DECL_BUILT_IN_CLASS and
	DECL_FUNCTION_CODE when defining a built-in function.
	Don't update DECL_ESTIMATED_INSNS.
	* dwarf2out.c (dwarf2out_decl): Don't ignore built-in
	FUNCTION_DECLs.
	* tree.h: Delete DECL_ESTIMATED_INSNS.
	* tree-inline.c (struct inline_data): Delete inlined_insns field.
	(expand_call_inline, optimize_inline_calls): Don't update
	DECL_ESTIMATED_INSNS nor inlined_insns.
	* cgraphunit.c (cgraph_analyze_function): Don't update
	DECL_ESTIMATED_INSNS.
cp:
	* optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
	* decl.c (duplicate_decls, start_function): Likewise.
testsuite:
	* gcc.dg/visibility-8.c: New testcase.

From-SVN: r77475
2004-02-08 01:59:11 +00:00
Paolo Bonzini
e57e265ba6 re PR c/11658 (Wrong error message)
2004-02-03  Paolo Bonzini  <bonzini@gnu.org>

	PR c/11658
	PR c/13994
	* Makefile.in (c-parse.o, c-convert.o, c-typeck.o): Depend
	on langhooks.h.
	* objc/Make-lang.in (objc-parse.o): Depend on langhooks.h.
	* c-parse.in, c-convert.c, c-typeck.c, objc/objc-act.c:
	Include langhooks.h.  Replace c_common_truthvalue_conversion
	with the truthvalue_conversion language hook throughout.
	(expr_no_commas): Call default_conversion before save_expr
	for the first term of the production 'x ? : y'.
	* c-common.c (c_common_truthvalue_conversion): Remove
	obsolete block.  Invoke recursively the hook instead
	of this function.
	* c-convert.c (convert): handle ERROR_MARK_NODE.
	* c-typeck.c (build_binary_op): handle ERROR_MARK_NODE
	returned by the truthvalue_conversion language hook.
	* c-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Use
	c_objc_common_truthvalue_conversion.
	* c-objc-common.c (c_objc_common_truthvalue_conversion):
	New function.
	* c-tree.h (c_objc_common_truthvalue_conversion): Declare it.
	* objc/objc-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Use
	c_objc_common_truthvalue_conversion.

From-SVN: r77168
2004-02-03 11:22:41 +00:00
Kazu Hirata
d9221e016b alias.c, [...]: Update copyright.
* alias.c, basic-block.h, c-common.c, c-common.h,
	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
	genautomata.c, genconditions.c, genemit.c, genflags.c,
	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
	unwind.h, varray.c, varray.h: Update copyright.

From-SVN: r76302
2004-01-21 20:40:04 +00:00
Jason Merrill
162f92bb89 fix comment
From-SVN: r76215
2004-01-20 12:01:28 -05:00
Jan Hubicka
3b75d796ac c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and builtin_expect specially.
* c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and
	builtin_expect specially.
	* params.def (PARAM_MAX_INLINE_INSNS_AUTO): Set to 100.
	(PARAM_LARGE_FUNCTION_INSNS): Set to 3000.
	* invoke.texi (max-inline-insns-single): Set to 100.
	(large-function-insns): Set to 3000.

From-SVN: r76007
2004-01-17 00:03:14 +00:00
Jan Hubicka
4b589eab01 lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost estimation.
* lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
	estimation.
	* c-common.c (c_estimate_num_insns_1):  Fix bug in MODIFY_EXPR
	cost estimation.
	* expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ...
	* expr.h (MOVE_RATIO, CLEAR_RATIO): ... here.

From-SVN: r75821
2004-01-13 23:14:04 +00:00
Andrew Pinski
bfaba7a9c3 re PR c++/12709 (ICE with __FUNCTION__ and function-try-block)
2004-01-13  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/12709
        * c-common.c (finish_fname_decls): Use the chain only if the
        tree is an expr_stmt.

2004-01-13  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/12709
        * g++.dg/parse/try-catch-1.C: New test.

From-SVN: r75814
2004-01-13 12:10:07 -08:00
Mark Mitchell
0fab64a344 expr.h (expand_expr): Make it a macro, not a function.
* expr.h (expand_expr): Make it a macro, not a function.
	(expand_expr_real): New function.
	* expr.c (store_expr): Adjust logic for deciding whether or not to
	copy the value returned by expand_expr.
	(expand_expr): Rename to ...
	(expand_expr_real): ... this.  Add alt_rtl parameter.  Adjust
	calls to language hooks.
	* c-common.h (c_expand_expr): Adjust prototype.
	* c-common.c (c_expand_expr): Add alt_rtl parameter.
	* langhooks-def.h (lhd_expand_expr): Change prototype.
	* langhooks.c (lhd_expand_expr): Add all_rtl parameter.
	* langhooks.h (lang_hooks): Change type of expand_expr.
	* stmt.c (stmt_status): Add x_last_expr_alt_rtl.
	(last_expr_alt_rtl): Likewise.
	(expand_expr_stmt_value): Set last_expr_alt_rtl.
	(clear_last_expr): Clear it.
	(expand_end_stmt_expr): Set RTL_EXPR_ATL_RTL.
	(expand_end_bindings): Save and restor last_expr_alt_rtl.
	* tree.def (RTL_EXPR): Give it an additional operand.
	* tree.h (RTL_EXPR_ALT_RTL): New macro.

	* misc.c (gnat_expand_expr): Add alt_rtl parameter.

	* cp-tree.h (cxx_expand_expr): Change prototype.
	* expr.c (cxx_expand_expr): Add alt_rtl parameter.

	* java-tree.h (java_expand_expr): Change prototype.
	* expr.c (java_expand_expr): Add alt_rtl parameter.

From-SVN: r75594
2004-01-09 19:55:13 +00:00
Mark Mitchell
9c5c5f2cd1 c-common.c (c_expand_expr): Remove code to return a value different from that returned by expand_expr.
* c-common.c (c_expand_expr): Remove code to return a value
	different from that returned by expand_expr.
	* expr.c (store_expr): Use the validity of a target MEM, rather
	than checking DECL_RTL (exp), to figure out if a copy is
	required.

From-SVN: r75273
2003-12-31 18:41:28 +00:00
Andrew Pinski
5a6159ddb9 PR C++/13429, C/11944
2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>

        PR C++/13429, C/11944
        * c-common.c (c_build_qualified_type): Return early when type is
        error_mark_node.
        (c_apply_type_quals_to_decl): Likewise.

From-SVN: r75021
2003-12-25 08:21:34 -08:00
Mark Mitchell
57702a80e8 c-common.c (flag_abi_version): Default to 2.
* c-common.c (flag_abi_version): Default to 2.
	* c-cppbuiltin.c (c_cpp_builtins): Define __GXX_ABI_VERSION
	uniformly for versions above 2.
	* doc/invoke.texi: Update documentation for -fabi-version.

	* cp-lang.c (cp_expr_size): Return zero for empty classes.

	* cp-tree.h (warn_if_uknown_interface): Remove unused function.
	* decl2.c (warn_if_unknown_interface): Likewise.

	* g++.dg/abi/macro0.C: New test.
	* g++.dg/abi/macro1.C: Likewise.
	* g++.dg/abi/macro2.C: Likewise.

	* g++.dg/abi/bitfield5.C: Add explicit -fabi-version=1 option.
	* g++.dg/abi/bitfield7.C: Likewise.
	* g++.dg/abi/dtor2.C: Likewise.
	* g++.dg/abi/mangle11.C: Likewise.
	* g++.dg/abi/mangle12.C: Likewise.
	* g++.dg/abi/mangle14.C: Likewise.
	* g++.dg/abi/mangle17.C: Likewise.
	* g++.dg/abi/vbase10.C: Likewise.
	* g++.dg/abi/vbase14.C: Likewise.
	* g++.dg/template/qualttp17.C: Likewise.

From-SVN: r74973
2003-12-23 16:53:53 +00:00
Mark Mitchell
7813d14ccc re PR c++/12862 (Conflicts Between typedefs/enums and Namespace Member Declarations)
* c-common.c (flag_external_templates): Remove.
	(flag_alt_external_templates): Likewise.
	* c-common.h (flag_external_templates): Remove.
	(flag_alt_external_templates): Likewise.
	* c-opts.c (c_common_handle_option): Unsupport
	-falt-external-templates and -ftemplates.
	* doc/invoke.texi: Remove mention of -fexternal-templates and
	-falt-external-templates.

	* decl.c (start_function): Do not check
	flag_alt_external_templates or flag_external_templates.
	* decl2.c (warn_if_unknown_interface): Likewise.
	* lex.c (extract_interface_info): Likewise.
	* pt.c (lookup_template_class): Likewise.

	PR c++/12862
	* name-lookup.c (pushdecl): Look up all namespace-scope entities
	in their corresponding namespace.

	* g++.old-deja/g++.jason/template18.C: Remove.
	* g++.old-deja/g++.jason/template37.C: Likewise.

	PR c++/12862
	* g++.dg/lookup/ns1.C: New test.

From-SVN: r74954
2003-12-22 23:57:08 +00:00
Kazu Hirata
6614fd40d2 alias.c: Fix comment formatting.
* alias.c: Fix comment formatting.
	* alloc-pool.c: Likewise.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* bt-load.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* c-pretty-print.c: Likewise.
	* caller-save.c: Likewise.
	* cfghooks.h: Likewise.
	* cgraph.c: Likewise.
	* collect2.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.h: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* final.c: Likewise.
	* function.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genemit.c: Likewise.
	* ggc.h: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* libgcc2.h: Likewise.
	* loop.c: Likewise.
	* predict.h: Likewise.
	* unwind-libunwind.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r74907
2003-12-21 14:08:35 +00:00
Mark Mitchell
4bb8ca281f re PR c++/10779 (Error cascade for unknown type in function prototype)
* c-common.h (c_parse_error): Declare it.
	* c-common.c (c_parse_error): New function.
	* c-parse.y (yyerror): Use it.

	* parser.c (struct cp_parser): Add in_template_argument_list_p.
	(cp_parser_error): Use c_parse_error.
	(cp_parser_name_lookup_error): New function.
	(cp_parser_new): Initialize it.
	(cp_parser_declarator): Add parenthesized_p parameter.
	(cp_parser_nested_name_specifier_opt): Use
	cp_parser_name_lookup_error.
	(cp_parser_parenthesized_expression_list): Improve comments.
	(cp_parser_condition): Adjust call to cp_parser_declarator.
	(cp_parser_template_parameter): Adjust call to
	cp_parser_parameter_declaration.
	(cp_parser_template_argument_list): Set
	in_template_argument_list_p.
	(cp_parser_explicit_instantiation): Adjust call to
	cp_parser_declarator.
	(cp_parser_simple_type_specifier): Remove unncessary code.
	(cp_parser_using_declaration): Use cp_parser_name_lookup_error.
	(cp_parser_init_declarator): Handle member function definitions.
	(cp_parser_direct_declarator): Adjust call to
	cp_parser_declarator.
	(cp_parser_type_id): Adjust call to cp_parser_declarator.
	(cp_parser_parameter_declaration_list): Avoid backtracking where
	possible.
	(cp_parser_parameter_declaration): Add parenthesized_p parameter.
	(cp_parser_function_definition): Remove.
	(cp_parser_member_declaration): Do not backtrack to look for
	function definitions.
	(cp_parser_exception_declaration): Adjust call to
	cp_parser_declarator.
	(cp_parser_single_declaration): Handle function definitions via
	cp_parser_init_declarator.
	(cp_parser_save_member_function_body): New function.

	PR c++/10779
	PR c++/12160
	* g++.dg/parse/error3.C: New test.
	* g++.dg/parse/error4.C: Likewise.
	* g++.dg/abi/mangle4.C: Tweak error messages.
	* g++.dg/lookup/using5.C: Likewise.
	* g++.dg/other/error2.C: Likewise.
	* g++.dg/parse/typename5.C: Likewise.
	* g++.dg/parse/undefined1.C: Likewise.
	* g++.dg/template/arg2.C: Likewise.
	* g++.dg/template/ttp3.C: Likewise.
	* g++.dg/template/type1.C: Likewise.
	* g++.old-deja/g++.other/crash32.C: Likewise.
	* g++.old-djea/g++.pt/defarg8.C: Likewise.

From-SVN: r74624
2003-12-15 06:28:23 +00:00
Kazu Hirata
d91edf86b0 ChangeLog.7: Fix comment typos.
* ChangeLog.7: Fix comment typos.
	* c-common.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cgraphunit.c: Likewise.
	* et-forest.h: Likewise.
	* expr.c: Likewise.
	* gcse.c: Likewise.
	* genautomata.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-zone.c: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* pretty-print.h: Likewise.
	* regrename.c: Likewise.
	* rtl.h: Likewise.
	* sched-rgn.c: Likewise.
	* target.h: Likewise.
	* value-prof.c: Likewise.
	* web.c: Likewise.

From-SVN: r73795
2003-11-21 06:52:23 +00:00
Matt Austern
968b41a166 c-common.c (handle_visibility_attribute): Set DECL_VISIBILITY field instead of hanging an attribute object off the decl.
* c-common.c (handle_visibility_attribute): Set DECL_VISIBILITY
	field instead of hanging an attribute object off the decl.
	* tree.h (DECL_VISIBLITY): New accessor macro for
	symbol_visibility field in struct tree_decl.
	(enum symbol_visibility): Move definition to before tree_decl.
	(struct tree_decl): Define new two-bit field, symbol_visibility.
	(decl_visibility): Remove declaration.
	* varasm.c (maybe_assemble_visibility): Use DECL_VISIBILITY
	instead of decl_visibility.
	(default_binds_local_p_1):  Use DECL_VISIBILITY	instead of
	decl_visibility.
	(decl_visibility): Remove.
	* cp/decl.c (duplicate_decls): copy DECL_VISIBILITY field.
	* cp/method.c (use_thunk): give thunk same visibility as function.
	* cp/optimize.c (maybe_clone_body): copy DECL_VISIBILITY field.

From-SVN: r73320
2003-11-06 22:08:26 +00:00
Joseph Myers
ac054e28e6 c-common.c (expand_tree_builtin): Ensure creal and cimag functions do not return lvalues.
* c-common.c (expand_tree_builtin): Ensure creal and cimag
	functions do not return lvalues.

testsuite:
	* gcc.dg/builtins-28.c: New test.

From-SVN: r72727
2003-10-20 23:03:34 +01:00
Zack Weinberg
d1d3865f99 c-common.c (registered_builtin_types): New static.
* c-common.c (registered_builtin_types): New static.
	(c_common_type_for_mode): Consult registered_builtin_types.
	(c_register_builtin_type): Add type to registered_builtin_types.
	* optabs.c (init_floating_libfuncs): Initialize libfuncs for
	all MODE_FLOAT modes, not just the ones corresponding to
	float_type_node, double_type_node, and long_double_type_node.

From-SVN: r72711
2003-10-20 18:28:27 +00:00
Steven Bosscher
1998463c54 c-common.c (c_common_truthvalue_conversion): Warn if the address of a non-weak function is used as a truth value.
gcc/
	* c-common.c (c_common_truthvalue_conversion): Warn if the
	address of a non-weak function is used as a truth value.

cp/
	* cvt.c (ocp_convert): Move warning to C common code.

testsuite/
	* gcc.dg/weak/weak-3.c: Fix for new warning.

From-SVN: r72409
2003-10-12 22:09:29 +00:00
Jason Merrill
4b011bbf6b re PR middle-end/6392 (Problems with __restrict__ type qualifier (array))
PR c++/6392
        * cp/tree.c (build_cplus_array_type): Handle all quals the same.
        (cp_build_qualified_type_real): Look through arrays first.
        * c-common.c (c_build_qualified_type): Look through arrays first.
        (c_apply_type_quals_to_decl): Look through arrays.

        * c-common.c (c_apply_type_quals_to_decl): Unset TREE_READONLY for
        types with constructors.

From-SVN: r72259
2003-10-09 04:38:46 -04:00
Ziemowit Laski
264fa2db22 MERGE OF objc-improvements-branch into MAINLINE.
2003-09-24  Ziemowit Laski  <zlaski@apple.com>

        MERGE OF objc-improvements-branch into MAINLINE.
	See 'gcc/ChangeLog' and 'gcc/testsuite/ChangeLog' for
	the gory details.

From-SVN: r71748
2003-09-25 01:26:01 +00:00
Nathan Sidwell
ff42324ea3 * c-common.c (c_common_type_for_mode): Check for VOIDmode.
From-SVN: r71732
2003-09-24 09:15:21 +00:00
Richard Henderson
3504b199c2 c-common.c (c_common_signed_or_unsigned_type): Examine mode, not precision.
* c-common.c (c_common_signed_or_unsigned_type): Examine mode,
        not precision.
	* g++.dg/opt/enum1.C: New.

From-SVN: r71677
2003-09-22 23:04:14 -07:00
Richard Henderson
ddd2d57e72 c-format.c (gcc_diag_char_table): Add %J.
* c-format.c (gcc_diag_char_table): Add %J.
        (gcc_cdiag_char_table, gcc_cxxdiag_char_table): Likewise.
        (check_format_types): Fix wanted_type name lookup.
        (init_dynamic_diag_info): Setup %J.
        * diagnostic.c (text_specifies_location): Implement %J.
        * c-common.c, c-decl.c, c-objc-common.c, c-pragma.c, calls.c,
        dwarfout.c, expr.c, function.c, stmt.c, stor-layout.c, toplev.c,
        tree-inline.c, tree-optimize.c, varasm.c, config/arm/pe.c,
        config/i386/winnt.c, config/ia64/ia64.c, config/mcore/mcore.c,
        config/v850/v850.c, objc/objc-act.c: Use %J in diagnostics.

        * tree-inline.c: Include intl.h
        (inline_forbidden_p_1): Fix i18n of inline_forbidden_reason.
        * Makefile.in (tree-inline.o): Update.
cp/
        * decl.c, decl2.c, pt.c: Use %J in diagnostics.
java/
        * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
testsuite/
        * gcc.dg/format/gcc_diag-1.c: Add tests for %J.

From-SVN: r71619
2003-09-20 22:07:20 -07:00
Roger Sayle
96123432ff tree.def (FFS_EXPR, [...]): Delete unused tree codes.
* tree.def (FFS_EXPR, CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR,
	PARITY_EXPR): Delete unused tree codes.
	* c-common.c (c_common_truthvalue_conversion): Delete references
	to FFS_EXPR and POPCOUNT_EXPR.
	* c-pretty-print.c (pp_c_postfix_expression): Remove FFS_EXPR.
	(pp_c_expression): Likewise.
	* expr.c (expand_expr): Delete RTL expansion of FFS_EXPR, CLZ_EXPR,
	CTZ_EXPR, POPCOUNT_EXPR and PARITY_EXPR.
	* fold-const.c (tree_expr_nonnegative_p): Remove FFS_EXPR, CLZ_EXPR,
	CTZ_EXPR, POPCOUNT_EXPR and PARITY_EXPR.  Add support for calls to
	BUILT_IN_FFS, BUILT_IN_PARITY and BUILT_IN_POPCOUNT and their long
	and long long variants.

	* cp/lex.c (init_operators): Remove operator_name_info for FFS_EXPR.
	* cp/class.c (instantiate_type): Remove FFS_EXPR case.

	* f/com.c (ffecom_overlap_): Remove FFS_EXPR case.
	(ffecom_tree_canonize_ref_): Likewise.
	(ffe_truthvalue_conversion): Likewise.

	* java/expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
	* java/check-init.c (check_init): Likewise.

From-SVN: r71525
2003-09-18 15:06:02 +00:00
Jason Merrill
72954a4f44 c-common.c (handle_warn_unused_result_attribute): New function.
* c-common.c (handle_warn_unused_result_attribute): New function.
	(c_common_attribute_table): Add warn_unused_result.
	(c_expand_expr): Issue warning when result of inlined function
	with warn_unused_result attribute is ignored.
	* calls.c (expand_call): Issue warning when result of function
	with warn_unused_result attribute is ignored.
	* c-common.h (STMT_EXPR_WARN_UNUSED_RESULT): Define.
	* expr.c (expr_wfl_stack): Define.
	(expand_expr) <case EXPR_WITH_FILE_LOCATION>: If ignore,
	pass const0_rtx as target.  Chain locations into expr_wfl_stack.
	* tree-inline.c (expand_call_inline): Set STMT_EXPR_WARN_UNUSED_RESULT
	bit if inlined function has warn_unused_result attribute.
	* input.h (expr_wfl_stack): Declare.
	* doc/extend.texi: Document warn_unused_result attribute.

	* gcc.dg/attr-warn-unused-result.c: New test.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r71424
2003-09-16 09:58:27 +02:00
Andreas Jaeger
c034f12167 invoke.texi (Warning Options): Describe -Wold-style-definition.
2003-09-15  Andreas Jaeger  <aj@suse.de>
            Kaveh R. Ghazi <ghazi@caip.rutgers.edu>

	* doc/invoke.texi (Warning Options): Describe -Wold-style-definition.
	* c-opts.c (c_common_handle_option): Handle OPT_Wold_style_definition.
	* c-parse.in: Warn about old-style parameter definition.
	* c-common.c: Define warn_old_style_defintion.
	* c-common.h: Declare it.
	* c.opt: Add Wold-style-defintion.

testsuite:
2003-09-15  Andreas Jaeger  <aj@suse.de>

	* gcc.dg/Wold-style-definition-1.c: New test.

From-SVN: r71400
2003-09-15 11:31:17 +02:00
Mark Mitchell
9649812aae langhooks-def.h (lhd_register_builtin_type): New function.
* langhooks-def.h (lhd_register_builtin_type): New function.
	(LANG_HOOKS_REGISTER_BUILTIN_TYPE): New macro.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): Add register_builtin_type.
	* langhooks.c (lhd_register_builtin_type): New function.
	* c-common.h (c_register_builtin_type): Declare.
	* c-common.c (c_register_builtin_type): New function.
	* c-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
	c_register_builtin_type.
	* config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Remove __fpreg,
	__float80, and __float128 macros.
	* config/ia64/ia64.c (ia64_init_builtins): Create __fpreg,
	__float80, and __float128 types.

	* cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
	c_register_builtin_type.

	* gcc.dg/ia64-types1.c: New test.
	* gcc.dg/ia64-types2.c: Likewise.

From-SVN: r71227
2003-09-09 03:35:31 +00:00
Matt Austern
47ab33b220 Correct the behavior of __func__ for C++ special member functions.
* c-common.c (fname_as_string): Use lang_hooks.decl_printable_name
	with verbosity 0, instead of DECL_NAME, for human-readable string.
	* g++.dg/ext/fnname1.C: New test. (__func__ for C++.)
	* g++.dg/ext/fnname2.C: Likewise.
	* g++.dg/ext/fnname3.C: Likewise.

From-SVN: r71088
2003-09-04 21:32:48 +00:00
Gabriel Dos Reis
12ea3302e6 pretty-print.h (pp_maybe_newline_and_indent): New macro.
* pretty-print.h (pp_maybe_newline_and_indent): New macro.
	* c-pretty-print.h (c_pretty_printer): Now typedef to the
	structure.  Be consistent with pretty-print.h abd cxx-pretty-print.h
	(struct c_pretty_print_info): Document.  Add new fields.
	(pp_type_specifier_seq): Rename from pp_c_type_specifier.
	(pp_direct_abstract_declarator): New macro.
	(pp_ptr_operator): Likewise.
	(pp_simple_type_specifier): Likewise.
	(pp_expression): Likewise.
	(pp_parameter_list): Rename from pp_parameter_declaration.
	* c-pretty-print.c (pp_c_whitespace): Now a function.
	(pp_c_left_paren): Likewise.
	(pp_c_right_paren): Likewise.
	(pp_c_dot): Likewise.
	(pp_c_ampersand): Likewise.
	(pp_c_arrow): Likewise.
	(pp_c_semicolon): Likewise.
	(pp_c_type_cast): New function.
	(pp_c_space_for_pointer_operator): Likewise.
	(pp_c_call_argument_list): Likewise.
	(pp_c_cv_qualifier): Adjust prototype.
	(pp_c_type_qualifier_list): Likewise.
	(pp_c_pointer): Likewise.  Handle REFERENCE_TYPE here.
	(pp_c_type_specifier): Rename from pp_c_simple_type_specifier.
	Adjust to follow standard grammar.
	(pp_c_specifier_qualifier_list): Adjusr prototype.  Handle
	REFERENCE_TYPE.  Tidy.
	(pp_c_parameter_type_list): Adjust prototype.  Tidy.
	(pp_c_parameter_declaration): Remove.
	(pp_c_abstract_declarator): Adjust prototype.
	(pp_c_direct_abstract_declarator): Likewise.
	(pp_c_type_id): Likewise.
	(pp_c_storage_class_specifier): Likewise.
	(pp_c_function_specifier): Likewise.
	(pp_c_declaration_specifiers): Likewise.
	(pp_c_direct_declarator): Likewise.
	(pp_c_declarator): Likewise.
	(pp_c_declarator): Likewise.
	(pp_c_declaration): Likewise.
	(pp_c_attributes): Likewise.  Tidy.
	(pp_c_function_definition): Adjust prototype.
	(pp_c_char): Likewise.
	(pp_c_string_literal): Likewise.
	(pp_c_integer_constant): Likewise.
	(pp_c_character_constant): Likewise.
	(pp_c_bool_constant): Likewise.
	(pp_c_enumeration_constant): Likewise.
	(pp_c_floating_constant): Likewise.
	(pp_c_constant): Likewise.
	(pp_c_identifier): Likewise.
	(pp_c_primary_expression): Likewise.  Remove TARGET_EXPR case.  Tidy.
	(pp_c_initializer): Adjust prototype.
	(pp_c_init_declarator): Likewise.
	(pp_c_initializer_list): Likewise.
	(pp_c_id_expression): Likewise.
	(pp_c_postfix_expression): Likewise.
	(pp_c_expression_list): Likewise.
	(pp_c_unary_expression): Likewise.
	(pp_c_cast_expression): Likewise.
	(pp_c_multiplicative_expression): Likewise.
	(pp_c_additive_expression): Likewise.
	(pp_c_shift_expression): Likewise.
	(pp_c_relational_expression): Likewise.
	(pp_c_equality_expression): Likewise.
	(pp_c_and_expression): Likewise.
	(pp_c_exclusive_or_expression): Likewise.
	(pp_c_inclusive_or_expression): Likewise.
	(pp_c_logical_and_expression): Likewise.
	(pp_c_logical_or_expression): Likewise.
	(pp_c_conditional_expression): Likewise.
	(pp_c_assignment_expression): Likewise.
	(pp_c_expression): Likewise.  Tidy.
	(pp_c_statement): Likewise.  Document.
	(pp_c_pretty_printer_init): Adjust prototype. Tidy.

	* c-lang.c (c_initialize_diagnostics): Update.
	* c-common.h (strip_pointer_operator): Declare.
	* c-common.c (strip_pointer_operator): Define.

cp/
	* cxx-pretty-print.h (pp_cxx_flag_default_argument): New flag.
	(cxx_pretty_printer): Adjust base type.
	(pp_cxx_function_specifier): Declare.
	* cxx-pretty-print.c (pp_cxx_whitespace): New macro.
	(pp_cxx_left_paren): Likewise.
	(pp_cxx_right_paren): Likewise.
	(pp_cxx_dot): Likewise.
	(pp_cxx_arrow): Likewise.
	(pp_cxx_semicolon): Likewise.
	(pp_cxx_identifier): Likewise.
	(pp_cxx_cv_qualifier_seq): Likewise.
	(pp_cxx_storage_class_specifier): Likewise.
	(pp_cxx_expression_list): Likewise.
	(pp_cxx_space_for_pointer_operator): Likewise.
	(pp_cxx_init_declarator): Likewise.
	(pp_cxx_call_argument_list): Likewise.
	(pp_cxx_nonconsecutive_character): Tidy.
	(pp_cxx_conversion_function_id): New function.
	(pp_cxx_template_id): Likewise.
	(pp_cxx_class_name): Likewise.
	(pp_cxx_template_keyword_if_needed): Likewise.
	(pp_cxx_nested_name_specifier): Likewise.
	(pp_cxx_unqualified_id): Tidy
	(pp_cxx_qualified_id): Handle more nodes.
	(pp_cxx_primary_expression): Tidy.
	(pp_cxx_postfix_expression): Likewise.
	(pp_cxx_new_expression): Tidy.
	(pp_cxx_delete_expression): Likewise.
	(pp_cxx_cast_expression): New function.
	(pp_cxx_pm_expression): Tidy.
	(pp_cxx_conditional_expression): Likewise.
	(pp_cxx_assignment_operator): New function.
	(pp_cxx_assignment_expression): Tidy.
	(pp_cxx_expression): New function.
	(pp_cxx_function_specifier): Likewise.
	(pp_cxx_decl_specifier_seq): Likewise.
	(pp_cxx_simple_type_specifier): Tidy.
	(pp_cxx_type_specifier_seq): Likewise.
	(pp_cxx_ptr_operator): New function.
	(pp_cxx_implicit_parameter_type): Likewise.
	(pp_cxx_parameter_declaration): Tidy.
	(pp_cxx_parameter_declaration_clause): New function.
	(pp_cxx_exception_specification): Likewise.
	(pp_cxx_direct_declarator): Tidy.
	(pp_cxx_declarator): Likewise.
	(pp_cxx_ctor_initializer): New function.
	(pp_cxx_function_definition): Likewise.
	(pp_cxx_abstract_declarator): Tidy.
	(pp_cxx_direct_abstract_declarator): Likewise.
	(pp_cxx_type_id): Likewise.
	(pp_cxx_exception_declaration): New function.
	(pp_cxx_statement): Likewise.
	(pp_cxx_simple_declaration): Likewise.
	(pp_cxx_template_parameter_list): Likewise.
	(pp_cxx_template_parameter): Likewise.
	(pp_cxx_template_declaration): Likewise.
	(pp_cxx_explicit_specialization): Likewise.
	(pp_cxx_explicit_instantiation): Likewise.
	(pp_cxx_declaration): Tidy.
	(pp_cxx_pretty_printer_init): Initialize more fields.

From-SVN: r70777
2003-08-25 19:10:50 +00:00
Mark Mitchell
43dc123f52 re PR target/8795 ([PPC] Altivec related bugs concerning gcc 3.3 and mainline)
PR c++/8795
	* tree.h (build_method_type_directly): Declare.
	* c-common.c (handle_vector_size_attributes): Handle METHOD_TYPEs.
	(vector_size_helper): Likewise.
	* tree.c (build_method_type_directly): New function.
	(build_method_type): Use it.

	PR c++/8795
	* cp-tree.h (build_cplus_method_type): Remove.
	* call.c (standard_conversion): Use build_method_type_directly
	instead of build_cplus_method_type.
	* class.c (build_clone): Likewise.
	(adjust_clone_args): Likewise.
	* decl.c (build_ptrmem_type): Likewise.
	(grokdeclarator): Likewise.
	(check_function_type): Likewise.
	* decl2.c (grok_method_quals): Likewise.
	(maybe_retrofit_in_chrg): Likewise.
	* pt.c (copy_default_args_to_explicit_spec): Likewise.
	(tsubst_function_type): Likewise.
	(tsubst): Likewise.
	* tree.c (build_cplus_method_type): Remove.
	* typeck.c (merge_types): Use build_method_type_directly.

	PR c++/8795
	* g++.dg/ext/altivec-1.C: New test.

From-SVN: r70773
2003-08-25 15:47:43 +00:00
Mark Mitchell
b6343a3395 re PR middle-end/11996 (Compiling libjava ICE's.)
PR java/11996
	Revert this change:
	2003-08-19  Mark Mitchell  <mark@codesourcery.com>
	* c-common.c (c_common_signed_or_unsigned_type): Correctly handle
	types with precisions other than those given by native machine
	modes.

From-SVN: r70625
2003-08-20 22:36:08 +00:00
Mark Mitchell
4b0d3cbe3e re PR c++/11946 (fun and merriment with enums as function arguments)
PR c++/11946
	* convert.c (convert_to_integer): Use CONVERT_EXPR (instead of
	NOP_EXPR) when necessary.
	* c-common.c (c_common_signed_or_unsigned_type): Correctly handle
	types with precisions other than those given by native machine
	modes.

	PR c++/11684
	* cp-tree.h (grok_op_properties): Change prototype.
	* decl.c (grok_op_properties): Add complain parameter.
	(grokfndecl): Pass it.
	* pt.c (tsubst_decl): Adjust accordingly.

	PR c++/10926
	* decl.c (start_method): Return immediately if push_template_decl
	does not like the declaration.
	* pt.c (push_template_decl_real): Disallow member template
	destructors.

	PR c++/11036.C
	* cp-tree.h (add_binding): Add prototype.
	* class.c (add_method): Set TYPE_HAS_DESTRUCTOR if appropriate.
	(maybe_warn_about_overly_private_class): Use
	CLASSTYPE_DESTRUCTORS.
	(pushclass): Adjust call to set_identifier_type_value.
	* decl.c (add_binding): Give it external linkage.
	(push_local_binding): Adjust call to add_binding.
	(push_class_binding): Likewise.
	(set_identifier_type_value_with_scope): Change prototype.  Use
	add_binding for global bindings.
	(set_identifier_type_value): Adjust accordingly.
	(pushtag): Likewise.
	(pushdecl): Use set_identifier_type_value, not
	set_identifier_type_value_with_scope.
	(pushdecl_namespace_level): Adjust calls to
	SET_IDENTIFIER_TYPE_VALUE to pass a DECL.
	(pushdecl_class_level): Likewise.
	(lookup_tag): Use select_decl.
	(select_decl): Improve comment.
	(record_builtin_type): Do not call pushdecl.
	(cxx_init_decl_processing): Do not call xref_tag for bad_alloc.
	(cp_finish_decl): Adjust call to set_identifier_type_value.
	(check_elaborated_type_specifier): Improve checks for invalid uses
	of typedefs.
	(xref_tag): Adjust call to check_elaborated_type_specifier.
	* decl2.c (grokclassfn): Do not set TYPE_HAS_DESTRUCTOR.
	* name-lookup.c (set_namespace_binding): Use add_binding.
	* parser.c (cp_parser_simple_type_specifier): Return a TYPE_DECL,
	rather than an IDENTIFIER_NODE, to represent built-in types, if
	requested by the caller.
	(cp_parser_postfix_expression): Adjust call.
	(cp_parser_type_specifier): Likewise.
	(cp_parser_elaborated_type_specifier): Adjust call to
	check_elaborated_type_specifier.
	* typeck2.c (build_functional_cast): Do not perform name lookups.

	PR c++/10717
	* decl.c (expand_static_init): Remove unncessary code.

	PR c++/10926
	* g++.dg/template/dtor2.C: New test.

	PR c++/11684
	* g++.dg/template/operator1.C: New test.
	* g++.dg/parse/operator4.C: New test.

	PR c++/11946.C
	* g++.dg/expr/enum1.C: New test.
	* gcc.dg/c99-bool-1.c: Remove bogus warning.

	PR c++/11036.C
	* g++.dg/parse/elab2.C: New test.
	* g++.dg/parse/typedef4.C: Change error message.
	* g++.old-deja/g++.robertl/eb133.C: Remove bogus error markers.
	* g++.old-deja/g++.robertl/eb133a.C: Remove bogus error markers.
	* g++.old-deja/g++.robertl/eb133b.C: Remove bogus error markers.

From-SVN: r70593
2003-08-20 07:06:47 +00:00
Kazu Hirata
a98ebe2e37 builtins.c: Fix comment typos.
* builtins.c: Fix comment typos.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloopanal.c: Likewise.
	* cgraphunit.c: Likewise.
	* cppfiles.c: Likewise.
	* dwarfout.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* gcse.c: Likewise.
	* ggc-page.c: Likewise.
	* haifa-sched.c: Likewise.
	* pretty-print.c: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* value-prof.c: Likewise.

From-SVN: r70583
2003-08-19 23:22:00 +00:00
Kazu Hirata
59e4e217ae c-common.c: Fix comment formatting.
* c-common.c: Fix comment formatting.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* cppinit.c: Likewise.
	* cpplib.h: Likewise.
	* emit-rtl.c: Likewise.
	* input.h: Likewise.
	* line-map.h: Likewise.
	* opts.c: Likewise.
	* opts.h: Likewise.
	* simplify-rtx.c: Likewise.

From-SVN: r70577
2003-08-19 21:04:38 +00:00
Andrew Pinski
02a2edc088 *** empty log message ***
From-SVN: r70573
2003-08-19 13:12:44 -07:00
Alexandre Oliva
b20d9f0c07 c.opt: Introduce -fworking-directory.
* c.opt: Introduce -fworking-directory.
* doc/cpp.texi, doc/invoke.texi, doc/cppopts.texi: Document it.
* c-common.h (flag_working_directory): Declare.
* c-common.c (flag_working_directory): Define.
* c-opts.c (c_common_handle_options): Set it.
(sanitize_cpp_opts): Set...
* cpplib.h (struct cpp_options): ... working_directory option.
(struct cpp_callbacks): Add dir_change.
* cppinit.c (read_original_filename): Call...
(read_original_directory): New.  Look for # 1 "directory//"
and process it.
(cpp_read_main_file): Call dir_change callback if working_directory
option is set.
* gcc.c (cpp_unique_options): Pass -g*.
* c-lex.c (cb_dir_change): New.
(init_c_lex): Set dir_change callback.
* toplev.c (src_pwd): New static variable.
(set_src_pwd, get_src_pwd): New functions.
* toplev.h (get_src_pwd, set_src_pwd): Declare.
* dbxout.c (dbxout_init): Call get_src_pwd() instead of getpwd().
* dwarf2out.c (gen_compile_unit_die): Likewise.
* dwarfout.c (output_compile_unit_die, dwarfout_init): Likewise.

From-SVN: r70189
2003-08-05 21:15:57 +00:00
Roger Sayle
03aa99d49f c-common.c (flag_noniso_default_format_attributes): Delete.
* c-common.c (flag_noniso_default_format_attributes): Delete.
	(built_in_attribute): Don't define/undefine DEF_FN_ATTR.
	(c_attrs_initialized): Delete.
	(c_common_nodes_and_builtins): Don't test c_attrs_initialized,
	always call c_init_attributes.
	(c_init_attributes): Don't define/undefine DEF_FN_ATTR.  Don't
	set c_attrs_initialized when done.
	(c_common_insert_default_attributes): Delete.
	* c-common.h (flag_noniso_default_format_attributes): Delete.
	(c_coomon_insert_default_attributes): Delete prototype.
	* c-opts.c (set_std_c89, set_std_c99, set_std_cxx98): Dont set
	flag_noniso_default_format_attributes.

	* c-decl.c (c_insert_default_attributes): Delete.
	* c-tree.h (c_insert_default_attributes): Delete prototype.

	* attribs.c (decl_attributes): Don't call insert_default_attributes
	langhook.  Update function description comment.
	* langhooks.h (lang_hooks): Remove insert_default_attributes field.
	* langhooks-def.h (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Delete.
	* c-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.
	* system.h: Poison LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES macro.

cp/
	* decl.c (cxx_insert_default_attributes): Delete.
	* cp-tree.h (cxx_insert_default_attributes): Don't prototype.
	* cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.

objc/
	* objc-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.

From-SVN: r70155
2003-08-04 20:44:20 +00:00
Roger Sayle
178b2b9f0f builtin-types.def (BT_SSIZE): New primitive type.
* builtin-types.def (BT_SSIZE): New primitive type.
	(BT_FN_INT_PTR_CONST_STRING_VALIST_ARG,
	BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
	BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
	BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR): New function types.
	* builtins.def (BUILT_IN_DCGETTEXT, BUILT_IN_DGETTEXT,
	BUILT_IN_FSCANF, BUILT_IN_GETTEXT, BUILT_IN_STRFMON,
	BUILT_IN_STRFTIME, BUILT_IN_VFPRINTF, BUILT_IN_VFSCANF): New builtins.
	* builtin-attrs.def: Remove DEF_FN_ATTR construct and the last
	few functions that define default attributes using it.
	* c-common.c (c_common_insert_default_attributes): Do nothing.

	* doc/extend.texi: Document these "new" builtins.

From-SVN: r70113
2003-08-03 03:23:18 +00:00
Jan Hubicka
a0c8285b03 re PR c/10320 (gcc 3.4 gets rid of static inline function that does not get inlined)
* gcse.c (insert_store): Ignore fake edges.

	* c-common.c (flag_vtable_gc): Kill.
	* c-common.g (flag_vtable_gc): Kill.
	* c-opts (c_common_handle_option): Kill.
	* c.opt (fvtable-gc): Kill.
	* final.c (final_scan_insn): Do not call assemble_vtable_entry.
	* output.h (assemble_vtable_entry, assemble_vtable_inherit): Kill.
	* varasm.c (assemble_vtable_entry, assemble_vtable_inherit): Kill.

	* invoke.texi (-ftable-gc): Kill documentation.

	PR C/10320
	* tree-inline.c (inlinable_function_p): Don't set DECL_UNINLINABLE
	just because function body is missing.

	* i386.c (pic_symbolic_operand): Properly detect RIP relative unspecs.

	* class.c (build_vtable_entry_ref): Kill.
	(build_vtbl_ref_1): Do not call build_vtable_entry_ref.
	(build_vfn_ref): Do not call build_vtable_entry_ref.
	* cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
	* cp-tree.h (prepare_assemble_variable): Kill.
	* cp-decl.c (prepare_assemble_variable): Kill.

From-SVN: r69964
2003-07-30 17:27:17 +00:00
Geoffrey Keating
18c8152070 c-common.c (allow_pch): Remove.
2003-07-29  Geoffrey Keating  <geoffk@apple.com>

	* c-common.c (allow_pch): Remove.
	* c-common.h (allow_pch): Remove.
	(c_common_no_more_pch): Declare.
	* c-lex.c (c_lex): Call c_common_no_more_pch when appropriate.
	* c-pch.c: Include hosthooks.h.
	(c_common_valid_pch): Don't check allow_pch.
	(c_common_read_pch): Clear valid_pch to prevent reading PCH files.
	(c_common_no_more_pch): New.
	* ggc-common.c: Include hosthooks.h.
	(gt_pch_save): Call gt_pch_get_address.
	(gt_pch_restore): Call gt_pch_use_address.
	* hooks.c (hook_voidp_size_t_null): New.
	(hook_bool_voidp_size_t_false): New.
	* hooks.h (hook_voidp_size_t_null): New.
	(hook_bool_voidp_size_t_false): New.
	* hosthooks-def.h (HOST_HOOKS_GT_PCH_GET_ADDRESS): New.
	(HOST_HOOKS_GT_PCH_USE_ADDRESS): New.
	(HOST_HOOKS_INITIALIZER): Add HOST_HOOKS_GT_PCH_GET_ADDRESS,
	HOST_HOOKS_GT_PCH_USE_ADDRESS.
	* hosthooks.h (struct host_hooks): Add gt_pch_get_address,
	gt_pch_use_address.
	* doc/hostconfig.texi (Host Common): Document
	HOST_HOOKS_GT_PCH_GET_ADDRESS, HOST_HOOKS_GT_PCH_USE_ADDRESS.
	* Makefile.in (c-pch.o): Depend on hosthooks.h.
	(ggc-common.o): Likewise.

	* config/rs6000/host-darwin.c (HOST_HOOKS_GT_PCH_GET_ADDRESS): Define.
	(HOST_HOOKS_GT_PCH_USE_ADDRESS): Define.
	(pch_address_space): New.
	(darwin_rs6000_gt_pch_get_address): New.
	(darwin_rs6000_gt_pch_use_address): New.

Index: cp/ChangeLog
2003-07-29  Geoffrey Keating  <geoffk@apple.com>

	* parser.c (cp_lexer_new_main): Use c_common_no_more_pch instead
	of setting valid_pch by hand.

From-SVN: r69944
2003-07-29 23:36:53 +00:00
Mark Mitchell
7b6d72fcfb re PR c++/11667 (wider-than-int enums never compare equal to 0)
PR c++/11667
	* c-common.c (shorten_compare): Take into account differences
	between C and C++ representation for enumeration types.
	* tree.h (set_min_and_max_values_for_integral_type): Declare.
	* stor-layout.c (set_min_and_max_values_for_integral_type): New
	function, broken out from ...
	(fixup_signed_type): ... here and ...
	(fixup_unsigned_type): ... here.

	PR c++/11667
	* call.c (standard_conversion): Allow all integral->enumeral
	conversions, after marking them as bad.
	* decl.c (finish_enum): Make sure that all enumerators are
	properly converted to the underlying type.
	(build_enumerator): Set DECL_CONTEXT for namespace-scope
	enumeration types.
	* pt.c (tsubst_copy): Adjust handling of CONST_DECLs accordingly.
	(tsubst_enum): Tidy.

	* Make-lang.in (typeck.o): Depend on convert.h.
	(class.o): Likewise.
	(rtti.o): Likewise.
	* call.c: Include convert.h.
	(convert_arg_to_ellipsis): Use convert_to_real.
	* class.c: Include convert.h.
	(build_base_path): Use convert_to_integer.
	* rtti.c: Include convert.h.
	(build_headof): Use convert_to_integer.
	* typeck.c: Include convert.h.
	(decay_conversion): Use convert_to_integer.
	(build_unary_op): Use build_nop.
	(get_delta_difference): Use convert_to_integer.
	(build_ptrmemfunc): Avoid unncessary conversions.

From-SVN: r69909
2003-07-29 01:14:24 +00:00
Hans-Peter Nilsson
85617eba1e c-parse.in (lineno_stmt_decl_or_labels_ending_decl): Also warn when warn_declaration_after_statement.
* c-parse.in (lineno_stmt_decl_or_labels_ending_decl): Also warn
	when warn_declaration_after_statement.  Call pedwarn_c90, not
	pedwarn.  Correct message: it's "ISO C90", not "ISO C89".
	* c-common.c (warn_declaration_after_statement): Define.
	* c-common.h (warn_declaration_after_statement): Declare.
	* c.opt (Wdeclaration-after-statement): New.
	* c-errors.c (pedwarn_c90): New function.
	* c-opts.c (c_common_handle_option) <case
	OPT_Wdeclaration_after_statement>: New.
	* c-tree.h (pedwarn_c90): Declare.
	* doc/invoke.texi (Option Summary): Document
	-Wdeclaration-after-statement.
	(Warning Options): Ditto.

Co-Authored-By: Michael Culbertson <Michael.J.Culbertson@wheaton.edu>

From-SVN: r69899
2003-07-28 20:03:25 +00:00
Roger Sayle
868b8cda7b builtins.def (BUILT_IN_PRINTF, [...]): Changed from front-end builtins to normal builtins, using DEF_LIB_BUILTIN.
* builtins.def (BUILT_IN_PRINTF, BUILT_IN_FPRINTF): Changed from
	front-end builtins to normal builtins, using DEF_LIB_BUILTIN.
	(BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_FPRINTF_UNLOCKED): Changed
	from front-end to normal builtins, using DEF_EXT_LIB_BUILTIN.
	(DEF_FRONT_END_LIB_BUILTIN): Delete.
	(DEF_EXT_FRONT_END_LIB_BUILTIN): Delete.
	(BUILT_IN_FWRITE_UNLOCKED): Wrap long line.

	* builtins.c (build_string_literal): New function to construct
	a char* pointer to a string literal.
	(expand_builtin_fputs): Change 2nd argument from "int ignore" to
	"rtx target" to be consistent with other expand_builtin_* functions.
	Change 3rd argument from "int unlocked" to "bool unlocked".
	(expand_builtin_printf): Rewrite of c_expand_builtin_printf from
	c-common.c to avoid front-end dependencies.  Optimize printf("")
	as a no-op when the result isn't required.  Handle embedded NULs
	in format string.
	(expand_builtin_fprintf): A rewrite of c_expand_builtin_fprintf
	from c-common.c to avoid front-end dependencies.  Likewise, optimize
	fprintf(fp,"") as a no-op when the result isn't required, evaluating
	fp for side-effects.  Handle embedded NULs in format string.
	(expand_builtin_sprintf): Fix typo.
	(expand_builtin): Don't expand BUILT_IN_FPRINT{,_UNLOCKED} when not
	optimizing.  Adjust calls of expand_builtin_fputs to match the API
	change. Expand BUILT_IN_PRINTF and BUILT_IN_PRINTF_UNLOCKED using
	expand_builtin_printf.  Likewise, expand BUILT_IN_FPRINTF_UNLOCKED
	and BUILT_IN_FPRINTF using expand_builtin_fprintf.

	* c-common.c (is_valid_printf_arglist): Delete.
	(c_expand_builtin): Delete.
	(c_expand_builtin_printf): Moved to builtins.c. Delete.
	(c_expand_builtin_fprintf): Moved to builtins.c.  Delete.
	(c_expand_expr): No longer treat CALL_EXPRs specially.
	(CALLED_AS_BUILT_IN): Delete.

From-SVN: r69760
2003-07-24 21:04:12 +00:00
Jason Merrill
de7df9ebdc tree.h (boolean_type_node): Move from C/C++/Java frontends.
* tree.h (boolean_type_node): Move from C/C++/Java frontends.
        (boolean_true_node, boolean_false_node): Likewise.
        (enum tree_index): Add TI_BOOLEAN_{TYPE,FALSE,TRUE}.
        * tree.c (build_common_tree_nodes): Init boolean_type_node.
        (build_common_tree_nodes_2): Init boolean_{true,false}_node.
        * stor-layout.c (set_sizetype): Handle an early BOOLEAN_TYPE.
        * c-common.h (truthvalue_type_node): Renamed from boolean_type_node.
        (truthvalue_true_node): Renamed from boolean_true_node.
        (truthvalue_false_node): Renamed from boolean_false_node.
        * c-decl.c: Just set truthvalue_* to integer_*.
        * c-*.[ch]: s/boolean/truthvalue/.  s/c_bool/boolean/.
        * cp/decl.c: Just set truthvalue_* to boolean_*.
        * java/java-tree.h: Move boolean_type_node et al to the back end.

From-SVN: r69758
2003-07-24 16:48:13 -04:00
Kazu Hirata
938d968ed3 alias.c: Fix comment formatting.
* alias.c: Fix comment formatting.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* combine.c: Likewise.
	* cpplib.c: Likewise.
	* diagnostic.c: Likewise.
	* dojump.c: Likewise.
	* final.c: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* ggc-page.c: Likewise.
	* jump.c: Likewise.
	* loop.c: Likewise.
	* mips-tfile.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.

From-SVN: r69689
2003-07-22 23:15:30 +00:00
Nathan Sidwell
c6e4cc53e5 c-common.c (handle_packed_attribute): Don't pack a struct via a typedef.
* c-common.c (handle_packed_attribute): Don't pack a struct via a
	typedef. Propagate packedness from a main variant.
testsuite:
	* gcc.dg/pack-test-3.c: New test.

From-SVN: r69668
2003-07-22 09:26:01 +00:00
Alexandre Oliva
fb5d2a87ad c-common.c (c_common_type_for_mode): Return integer types for pointer modes.
* c-common.c (c_common_type_for_mode): Return integer types for
pointer modes.

From-SVN: r69661
2003-07-22 02:26:53 +00:00
Kaveh R. Ghazi
703ad42b4b alias.c [...]: Remove unnecessary casts.
* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c
	c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in
	c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c
	collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c
	cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c
	cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c
	dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c
	fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c
	gcse.c genattr.c genattrtab.c genautomata.c genconditions.c
	genemit.c genextract.c genoutput.c genrecog.c gensupport.c
	ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c
	integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c
	loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c
	postreload.c prefix.c print-tree.c protoize.c ra-build.c
	ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c
	regmove.c regrename.c reload.c reload1.c reorg.c resource.c
	sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c
	simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c
	tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c
	varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary
	casts.

From-SVN: r69587
2003-07-19 14:47:15 +00:00
Gabriel Dos Reis
eb8221eaf2 c-common.c: Don't undefine GCC_DIAG_STYLE.
* c-common.c: Don't undefine GCC_DIAG_STYLE.
	(fname_decl): Don't use xxx_with_decl.
	(c_add_case_label): Likewise.
	(handle_section_attribute): Likewise.
	(handle_alias_attribute): Likewise.
	(handle_no_instrument_function_attribute): Likewise.
	(handle_no_limit_stack_attribute): Likewise.
	* c-objc-common.c (c_tree_printer): Print IDENTIFIER_NODEs.
	* c-format.c (gcc_cdiag_char_table): Add '%E' format-specifier.

From-SVN: r69573
2003-07-18 23:05:53 +00:00
Steven Bosscher
d944c82dce c-common.c (c_estimate_num_insns_1): Don't handle METHOD_CALL_EXPR.
2003-07-17  Steven Bosscher  <steven@gcc.gnu.org>

	* c-common.c (c_estimate_num_insns_1): Don't handle
	METHOD_CALL_EXPR.
	* expr.c (safe_from_p): Likewise.
	* gengtype.c (adjust_field_tree_exp): Likewise.
	* stmt.c (warn_if_unused_value): Likewise
	* tree.c (first_rtl_op): Likewise.
	* tree.def: Don't define METHOD_CALL_EXPR.
	* java/lang.c (java_estimate_num_insns_1): Don't handle
	METHOD_CALL_EXPR.

From-SVN: r69511
2003-07-17 13:25:21 +00:00
Andrew Pinski
d07605f570 re PR c/10962 (lookup_field is a linear search on a linked list (can be slow if large struct))
2003-07-16  Andrew Pinski  <pinskia@physics.uc.edu>
ChangeLog:
        PR c/10962
        * ggc.h: Add header guards.
        * c-decl.c (finish_struct): Sort fields if
        number greater than 15 and there are no
        anonymous structs/unions.
        * c-common.h: Include ggc.h.
        (sorted_fields_type): New struct.
        (field_decl_cmp): New prototype.
        (resort_sorted_fields): New prototype.
        (DECL_DECLARES_TYPE_NON_TEMPLATE_P): New macro.
        * c-tree.h: (lang_type): Use pointer to sorted_fields_type
        as s, removing other fields.
        * c-typeck.c (lookup_field): Use s in lang_type.
        These were mostly moved from cp/class.c:
        * c-common.c (field_decl_cmp): New static function.
        (field_decl_cmp): New function.
        (resort_sorted_fields): New function.
cp/ChangeLog:
        * class.c (field_decl_cmp): Remove.
        (resort_field_decl_cmp): Remove.
        (resort_sorted_fields): Remove.
        (add_fields_to_vec): Rename to ...
        (add_fields_to_record_type): this.
        (finish_struct_1): Change to be using
        sorted_fields_type's fields.
        * cp-tree.h (lang_decl): In lang_decl_u3
        change sorted_fields to be a pointer to
        sorted_fields_type.
        (resort_sorted_fields): Remove prototype.
        * search.c (lookup_field_1): Change to be using
        sorted_fields_type's fields.

From-SVN: r69470
2003-07-16 11:45:56 -07:00
Geoffrey Keating
2d799c0954 c-common.c (c_common_type_for_mode): Handle V4DFmode.
* c-common.c (c_common_type_for_mode): Handle V4DFmode.
	* tree.c: (build_common_tree_nodes_2): Likewise.
	* tree.h (enum tree_index): Add TI_V4DF_TYPE.
	(V4DF_type_node): New.

From-SVN: r69382
2003-07-15 05:44:30 +00:00
Geoffrey Keating
d1bd0ded61 Index: ChangeLog
2003-07-10  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (finish_decl): Handle 'used' here...
	* cgraphunit.c (cgraph_finalize_function): ... and here ...
	* c-common.c: (handle_used_attribute): ... not here.

	* configure.in (onstep): Support --enable-intermodule.
	* Makefile.in (OBJS-common): New.
	(OBJS-md): New.
	(OBJS-archive): New.
	(OBJS): Build from OBJS-common, OBJS-md, OBJS-archive.
	(OBJS-onestep): New.
	(libbackend.a): Support @onestep@.
	(libbackend.o): New.
	* configure: Regenerate.

	* c-common.h (c_reset_state): New prototype.
	(c_parse_file): New prototype.
	(finish_file): Move prototype from c-tree.h.
	* c-decl.c: Include <hashtab.h>.
	(builtin_decls): New.
	(current_file_decl): New.
	(duplicate_decls): Add extra parameter. Change all callers.  Don't
	output duplicate common symbols.
	(link_hash_hash): New.
	(link_hash_eq): New.
	(poplevel): Handle popping of the top level.
	(warn_if_shadowing): Handle TRANSLATION_UNIT_DECL.
	(pushdecl): Set DECL_CONTEXT to TRANSLATION_UNIT_DECL if appropriate.
	(pushdecl_top_level): Likewise.
	(redeclaration_error_message): Handle TRANSLATION_UNIT_DECL.
	(c_init_decl_processing): Create TRANSLATION_UNIT_DECL.
	(finish_decl): Handle TRANSLATION_UNIT_DECL.
	(merge_translation_unit_decls): New.
	(c_write_global_declarations): New.
	(c_reset_state): New.
	(implicitly_declare): Handle TRANSLATION_UNIT_DECL.
	* c-lang.c (LANG_HOOKS_WRITE_GLOBALS): New.
	* c-objc-common.c (c_cannot_inline_tree_fn): Handle
	TRANSLATION_UNIT_DECL.
	(c_objc_common_finish_file): Call merge_translation_unit_decls.
	* c-opts.c (in_fnames): Rename from in_fname.
	(c_common_decode_option): Handle multiple input filenames.
	(c_common_post_options): Likewise.
	(c_common_parse_file): Likewise; also, call c_parse_file rather than
	yyparse.
	* c-parse.in: Move cleanup code to c_parse_file.
	(free_parser_stacks): Move contents to c_parse_file.
	(c_parse_file): New.
	* c-tree.h (union lang_tree_node): Chain along TYPE_NEXT_VARIANT
	for integer types.
	(C_DECL_FILE_SCOPE): New.
	(finish_file): Move prototype to c-common.h.
	(merge_translation_unit_decls): New prototype.
	(comptypes): Add extra parameter to prototype.
	(c_write_global_declarations): New prototype.
	* c-typeck.c (tagged_types_tu_compatible_p): New.
	(function_types_compatible_p): Add extra parameter, change all callers.
	(type_lists_compatible_p): Likewise.
	(comptypes): Likewise.
	(struct tagged_tu_seen): New.
	(tagged_tu_seen_base): New.
	(build_unary_op): Handle TRANSLATION_UNIT_DECL.
	(c_mark_addressable): Remove #if 0 code.
	* calls.c (special_function_p): Handle TRANSLATION_UNIT_DECL, add
	comment explaining why it shouldn't have to.
	* cgraph.h (struct cgraph_node): Add chain_next and chain_prev GTY
	options.
	* cppinit.c (cpp_read_next_file): New.
	(cpp_read_main_file): Use it.
	* cpplib.c (undefine_macros): New.
	(cpp_undef_all): New.
	* cpplib.h (cpp_read_next_file): Prototype.
	(cpp_undef_all): Prototype.
	* langhooks-def.h (write_global_declarations): Remove prototype.
	* toplev.h (write_global_declarations): Add prototype.
	* tree.c (decl_type_context): Use switch statement, handle
	TRANSLATION_UNIT_DECL.
	* tree.def: Update documentation for TRANSLATION_UNIT_DECL.
	(TRANSLATION_UNIT_DECL): New kind of tree.
	* tree.h: Update documentation for TRANSLATION_UNIT_DECL.
	* Makefile.in (c-decl.o): Add $(HASHTAB_H) to dependencies.
	* doc/invoke.texi: Make attempt to document new functionality.

	2003-05-19  Per Bothner <bothner@apple.com>

	* gcc.c (combine_inputs): New.
	(process_command): Set combine_inputs.
	(do_spec_1): Handle combine_inputs.
	(main): Likewise.

Index: cp/ChangeLog
2003-07-10  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (cp_finish_decl): Handle 'used' attribute.

	* cp-lang.c (c_reset_state): New dummy routine.
	* cp-tree.h (finish_file): Move prototype to c-common.h.
	* parser.c (c_parse_file): Rename from yyparse; don't call finish_file.

From-SVN: r69224
2003-07-11 08:33:21 +00:00
Jan Hubicka
084c177908 java-tree.h (DECL_NUM_STMTS): Rename to...
* java-tree.h (DECL_NUM_STMTS): Rename to...
	(DECL_ESTIMATED_INSNS): ... this.
	* lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
	New static functions.
	(LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
	* parser.y (add_stmt_to_compound): Do not account statements.

	* cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New.
	* decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS.
	(start_function): Use DECL_ESTIMATED_INSNS.
	* optimize.c (maybe_clone_body): Use DECL_ESTIMATED_INSNS.

	* decl2.c (maybe_emit_vtables): Fix marking vtables as needed in
	unit-at-a-time

	* c-common.c (c_estimate_num_insns_1): New static function.
	(c_estimate_num_insns): New global function.
	* c-common.h (DECL_NUM_STMTS): Rename to...
	(DECL_ESTIMATED_INSNS): ... this.
	(c_estimate_num_insns): Declare.
	* c-decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New.
	* c-semantics.c (add_stmt): Do not account statements.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS):
	New.
	* langhooks.h (lang_hooks_for_tree_inlining): Add
	estimate_num_insns
	* params.def (max-inline-insns-auto, max-inline-insns-auto): set
	to 100.
	(max-inline-insns): set to 300.
	(min-inline-insns): set to 10.
	* tree-inline.c (struct inline_data): Rename inlined_stmts to
	inlined-insns.
	(INSNS_PER_STMT): Kill.
	(inlinable_function_p): Compute and store body size.
	(expand_call_inline): Likewise.
	(optimize_inline_calls): Likewise.

From-SVN: r69113
2003-07-09 00:31:20 +00:00
Zack Weinberg
e6cc3a24c2 cpplib.h (CPP_AT_NAME, [...]): New token types.
* cpplib.h (CPP_AT_NAME, CPP_OBJC_STRING): New token types.
	(struct cpp_options): Add narrow_charset, wide_charset,
	bytes_big_endian fields.  Remove EBCDIC field.
	(cpp_init_iconv, cpp_interpret_string): New external interfaces.

	* cpphash.h: Include <iconv.h> if we have it, otherwise
	provide a dummy definition of iconv_t.
	(struct cpp_reader): Add narrow_cset_desc and wide_cset_desc fields.
	(_cpp_valid_ucn): Update prototype.
	(_cpp_destroy_iconv): New prototype.

	* doc/cpp.texi: Document character set handling.
	* doc/cppopts.texi: Document -fexec-charset= and -fexec-wide-charset=.
	* doc/extend.texi: Delete entire section on multiline strings.
	Rewrite section on __FUNCTION__ etc now that these are
	variables in C.

	* cppucnid.tab, cppucnid.pl: New files.
	* cppucnid.h: New generated file.
	* cppcharset.c: Include cppucnid.h.  Lots of commentary added.
	(iconv_open, iconv, iconv_close): Provide dummy definitions
	if !HAVE_ICONV.
	(SOURCE_CHARSET, struct strbuf, init_iconv_desc, cpp_init_iconv,
	_cpp_destroy_iconv, convert_cset, width_to_mask, convert_ucn,
	emit_numeric_escape, convert_hex, convert_oct, convert_escape,
	cpp_interpret_string, narrow_str_to_charconst,
	wide_str_to_charconst): New.
	(ucn_valid_in_identifier): Use a binary search through the
	ucnranges table defined in cppucnid.h, not a long chain of if
	statements.
	(_cpp_valid_ucn): Add a limit pointer.  Downgrade "universal
	character names are only valid in C++ and C99" to a warning.
	Issue the "meaning of \[uU] is different in traditional C"
	warning here.  Take care not to let iconv see an invalid UCS
	value if we get a malformed UCN.  Issue an error if we don't
	have iconv.
	(cpp_interpret_charconst): Moved here from cpplex.c.  Use
	cpp_interpret_string to do the heavy lifting.

	* cppinit.c (cpp_create_reader): Initialize bytes_big_endian,
	narrow_charset, wide_charset fields of options structure.
	(cpp_destroy): Call _cpp_destroy_iconv.
	* cpplex.c (forms_identifier_p): Adjust call to _cpp_valid_ucn.
	(maybe_read_ucn, hex_digit_value, cpp_parse_escape): Delete.
	(cpp_interpret_charconst): Moved to cppcharset.c.
	* cpplib.c (dequote_string): Delete.
	(interpret_string_notranslate): New.
	(do_line, do_linemarker): Use interpret_string_notranslate.

	* Makefile.in (cppcharset.o): Depend on cppucnid.h.

	* c-common.c (fname_string, combine_strings): Delete.
	* c-common.h (fname_string, combine_strings): Delete prototypes.
	* c-lex.c (ignore_escape_flag): Delete.
	(cb_ident): Use cpp_interpret_string, not lex_string.
	(get_nonpadding_token): New function.
	(c_lex): Handle Objective-C @-prefixed identifiers and strings here.
	Adjust calls to lex_string.  Don't write *value twice.
	(lex_string): Now handles string constant concatenation.
	Most of the work handed off to cpp_interpret_string.
	Call fix_string_type here.
	* c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): Replace with
	FUNC_NAME, throughout.
	(OBJC_STRING): New token type.
	(primary:STRING): No need to call fix_string_type here.
	(primary:objc_string): Make that OBJC_STRING.
	(objc_string nonterminal): Delete.
	(yylexname): Delete code to handle fake string constants.
	(yylexstring): Delete entirely.
	(_yylex): Handle CPP_AT_NAME and CPP_OBJC_STRING.  No need
	to handle CPP_ATSIGN.

	* c.opt (-fexec-charset=, -fwide-exec-charset=): New options.
	* c-opts.c (missing_arg, c_common_handle_option): Handle
	OPT_fexec_charset_ and OPT_fwide_exec_charset_.
	(c_common_init): Set cpp_opts->bytes_big_endian, not
	cpp_opts->EBCDIC.  Call cpp_init_iconv.
	(print_help): Document -fexec-charset= and -fexec-wide-charset=.
	(TARGET_EBCDIC): Delete default definition.

	* objc/objc-act.c (build_objc_string_object): No need to
	handle string constant concatenation.

cp:
	* parser.c (cp_lexer_read_token): No need to handle string
	constant concatenation.

testsuite:
	* gcc.c-torture/execute/wchar_t-1.x: New file; XFAIL wchar_t-1.c
	everywhere.
	* gcc.dg/concat.c: Concatenation of string constants with
	__FUNCTION__ / __PRETTY_FUNCTION__ is now a hard error.
	* gcc.dg/wtr-strcat-1.c: Loosen dg-warning regexp.
	* gcc.dg/cpp/escape-2.c: Use wide character constants where
	necessary to avoid multi-character character constant warning.
	* gcc.dg/cpp/escape.c: Likewise.
	* gcc.dg/cpp/ucs.c: Likewise.
	Remove backslashes from dg-bogus comments, as they confuse Tcl.
	Fix a typo.

libstdc++-v3:
	* testsuite/22_locale/collate/compare/wchar_t/2.cc
	* testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
	* testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
	* testsuite/22_locale/collate/hash/wchar_t/2.cc
	* testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
	* testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
	* testsuite/22_locale/collate/transform/wchar_t/2.cc
	* testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
	* testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc:
	XFAIL on all targets.

From-SVN: r68952
2003-07-05 00:24:00 +00:00
Kaveh R. Ghazi
5f1989e65d c-aux-info.c: Include toplev.h after c-tree.h.
gcc:
	* c-aux-info.c: Include toplev.h after c-tree.h.
	* c-common.c: Likewise.
	(GCC_DIAG_STYLE): Undef.
	* c-semantics.c (GCC_DIAG_STYLE): Define.
	* c-tree.h (GCC_DIAG_STYLE): Likewise.
	* diagnostic.h (inform): Move prototype to toplev.h.
	* jump.c: Include diagnostic.h before toplev.h.
	* toplev.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_DIAG): Define.
	(warning, error, fatal_error, pedwarn, sorry, inform,
	error_for_asm, warning_for_asm): Mark with ATTRIBUTE_GCC_CXXDIAG.

cp:
	* cp-tree.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_CXXDIAG): Define.
	(cp_error_at, cp_warning_at, cp_pedwarn_at): Mark with
	ATTRIBUTE_GCC_CXXDIAG.

From-SVN: r68910
2003-07-04 01:55:50 +00:00
Neil Booth
37fa72e9d3 c-common.c (enum c_language_kind, flag_objc): Remove.
* c-common.c (enum c_language_kind, flag_objc): Remove.
	(fix_string_type, check_case_value, c_common_nodes_and_builtins,
	c_add_case_label, finish_label_addr_expr, boolean_increment):
	Use c_dialect_ macros.
	* c-common.h (enum c_language_kind): Extend.
	(c_dialect_cxx, c_dialect_objc): New.
	(flag_objc): Remove.
	(c_common_init_options): Update prototype.
	* c-cppbuiltin.c (define__GNUC__, c_cpp_builtins): Use c_dialect_
	macros.
	* c-decl.c (finsih_decl, grokfield, finish_struct): Use c_dialect_
	macros.
	* c-format.c (C_STD_VER, C_STD_NAME): Similarly.
	* c-lang.c (c_init_options): Remove.
	(c_language): Define.
	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
	* c-lex.c (lex_charconst): Use c_dialect_cxx().
	* c-opts.c (lang_flags): Make function-local.
	(c_common_init_options): Use c_dialect_ macros.  Handle
	C++ diagnostic requirements.
	(c_common_handle_option, c_common_post_options): Use flag_cxx.
	* c-parse.in (init_reswords): Use c_dialect_objc ().
	* c-pch.c (get_ident): Use c_language.
	* c-pretty-print.c (pp_c_bool_literal): Use c_dialect_ macros.
	* c-typeck.c (comptypes, build_c_cast): Similarly.
	* objc/objc-lang.c (c_language): Define.
	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
	(objc_init_options): Remove.
cp:
	* Make-lang.in: Update.
	* cp-lang.c (c_language): Define.
	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
	* cp-tree.h (cxx_init_options): Remove.
	* lex.c: Don't include diagnostic.h.
	(cxx_init_options): Remove.

From-SVN: r68734
2003-06-30 19:36:25 +00:00
Jan Hubicka
4d7d0451bc c-common.c (handle_used_attribute): Use mark_referenced.
* c-common.c (handle_used_attribute): Use mark_referenced.
	* varasm.c (mark_referenced): Break out from ...
	(assemble_name): ... here.
	* tree.h (mark_referenced): Declare.

From-SVN: r68500
2003-06-25 22:14:26 +00:00
Kazu Hirata
71c0e7fc96 basic-block.h: Fix comment formatting.
* basic-block.h: Fix comment formatting.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-format.c: Likewise.
	* coverage.c: Likewise.
	* cpplib.h: Likewise.
	* cpppch.c: Likewise.
	* dbxout.c: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* profile.c: Likewise.
	* real.h: Likewise.
	* sched-deps.c: Likewise.

From-SVN: r68369
2003-06-23 15:27:37 +00:00
Andreas Jaeger
a742c759f9 c-common.c: Change _Bool to bool reverting part of the last patch.
* c-common.c: Change _Bool to bool reverting part of the last
	patch.

From-SVN: r68256
2003-06-20 12:00:22 +02:00
Andreas Jaeger
35b1a6faeb c-aux-info.c: Convert to ISO C99.
* c-aux-info.c: Convert to ISO C99.
	* c-pragma.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-convert.c: Likewise.
	* c-cppbuiltin.c: Likewise.
	* c-dump.c: Likewise.
	* c-decl.c: Likewise
	* c-format.c: Likewise.
	* c-incpath.c: Likewise.
	* c-incpath.h: Likewise.

From-SVN: r68218
2003-06-19 21:43:59 +02:00
Aldy Hernandez
9f629a2191 c-common.c (handle_mode_attribute): Use VECTOR_MODE_P macro.
2003-06-13  Aldy Hernandez  <aldyh@redhat.com>

        * c-common.c (handle_mode_attribute): Use VECTOR_MODE_P macro.

        * simplify-rtx.c (simplify_subreg): Same.

        * emit-rtl.c (gen_lowpart_common): Same.

From-SVN: r67911
2003-06-13 19:27:29 +00:00
Richard Henderson
0bfa5f65bf c-common.c (handle_cleanup_attribute): New.
* c-common.c (handle_cleanup_attribute): New.
        (c_common_attributes): Add it.
        * c-decl.c (finish_decl): Honor the cleanup attribute.
        * doc/extend.texi (Variable Attributes): Document it.

        * unwind-c.c: New file.
        * Makefile.in (LIB2ADDEH): Add it.
        * config/t-darwin, config/t-linux, config/t-linux-gnulibc1,
        config/ia64/t-ia64: Likewise.

        * gcc.dg/cleanup-1.c: New.
        * gcc.dg/cleanup-2.c: New.
        * gcc.dg/cleanup-3.c: New.
        * gcc.dg/cleanup-4.c: New.
        * gcc.dg/cleanup-5.c: New.
        * gcc.dg/cleanup-6.c: New.
        * gcc.dg/cleanup-7.c: New.

From-SVN: r67449
2003-06-04 10:06:00 -07:00
Matt Austern
a01fff59e7 Add a new flag...
Add a new flag, -W(no-)invalid-offsetof, to control whether or
not the compiler warns about incorrect use of the offsetof macro
in C++.  By default the warning is on.

From-SVN: r66972
2003-05-19 19:19:46 +00:00
Neil Booth
b1822ccc44 c-common.c, c-common.h (dollars_in_ident): Remove.
* c-common.c, c-common.h (dollars_in_ident): Remove.
	* c-opts.c (DOLLARS_IN_IDENTIFIERS): Default to true.
	(c_common_init_options, c_common_decode_option): Set dollars_in_ident.
	* cpphash.h (warned_dollar): Rename warn_dollars.
	* cppinit.c (struct lang_flags, lang_defaults, cpp_set_lang)
	Permit dollars regardless of -std=.
	(post_options): Set warn_dollars.
	* cpplex.c (forms_identifier_p): Use warn_dollars.
	* config/darwin.h, config/alpha/vms.h, config/m68hc11/m68hc11.h:
	Remove redundant definitions of DOLLARS_IN_IDENTIFIERS.
	* doc/cpp.texi, doc/cppopts.texi, doc/invoke.texi, doc/tm.texi:
	Update documentation.
testsuite:
	* gcc.dg/dollar.c: New test.

From-SVN: r66911
2003-05-17 20:29:34 +00:00
Gabriel Dos Reis
f333504d46 re PR c++/689 ([diagnostic] this warning is not helpful: `class xxxx' only defines a private destructor and has no friend)
PR C++/689
	PR C++/9257
	* c-opts.c (c_common_decode_option): Don't set
	warn_ctor_dtor_privacy wen -Wall.
	* c-common.c (warn_ctor_dtor_privacy): Don't turn on by default.

From-SVN: r66684
2003-05-11 12:47:42 +00:00
Zack Weinberg
87f85ea066 re PR c/10604 (-Wall includes sign conversion warning [3.3 regression])
PR c/10604

	* c-common.c (warn_sign_compare): Initialize to -1.
	* c-opts.c (c_common_init_options): Don't set warn_sign_compare here.
	(c_common_decode_option <OPT_Wall>): Set warn_sign_compare
	for C++ only.
	(c_common_post_options): Set warn_sign_compare from extra_warnings
	if it's still -1 at this point.

	* toplev.c (maybe_warn_unused_parameter): New static variable.
	(set_Wextra): New static function.
	(W_options): Remove "extra".
	(decode_W_option): Call set_Wextra.
	(independent_decode_option): Likewise.
	(set_Wunused): Cooperate with set_Wextra in setting
	warn_unused_parameter.
	(rest_of_compilation): No need to check extra_warnings as
	well as warn_uninitialized.

	* c-typeck.c (build_binary_op, build_conditional_expr):
	No need to check extra_warnings as well as warn_sign_compare.
	(internal_build_compound_expr): No need to check extra_warnings
	as well as warn_unused_value.
	* function.c (expand_function_end): No need to check extra_warnings
	as well as warn_unused_parameter.
	* stmt.c (expand_expr_stmt_value): No need to check extra_warnings
	as well as warn_unused_value.
	* cp/typeck.c (build_x_compound_expr): No need to check
	extra_warnings as well as warn_unused_value.

	* doc/invoke.texi: Clarify documentation of -Wsign-compare.
	* gcc.dg/compare7.c, g++.dg/warn/compare1.C: New testcases.

	* Makefile.in: Disable -Werror for gengtype-lex.o.

From-SVN: r66436
2003-05-03 21:44:31 +00:00
Nathan Sidwell
070588f06e c-decl.c (pending_invalid_xref_file): Remove.
* c-decl.c (pending_invalid_xref_file): Remove.
	(pending_invalid_xref_line): Remove.
	(pending_invalid_xref_location): New.
	(lookup_label): Use location_t and input_location directly.
	(lookup_tag): Likewise.
	(pending_xref_error): Likewise.
	(c_expand_body_1): Likewise.
	* c-common.c (x_expand_start_cond): Likewise.
	* c-semantics.c (genrtl_for_stmt): Likewise.
	(find_reachable_label): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (output_inline_function): Likewise.
	* tree-inline.c (find_alloca_call): Likewise.
	(find_builtin_longjmp_call): Likewise.
	* gcc.c (input_filename): Make static.

From-SVN: r66425
2003-05-03 13:28:33 +00:00
Nathan Sidwell
d479d37f5e input.h (lineno): Rename to ...
* input.h (lineno): Rename to ...
	(input_line): ... here.
	* tree.h (lineno): Rename to ...
	(input_line): ... here.
	* scan.h (lineno): Rename to ...
	(input_line): ... here.
	* toplev.c (lineno): Rename to ...
	(input_line): ... here.
	(push_srcloc, pop_srcloc):  Rename lineno to input_line.
	* c-common.c (c_expand_start_cond, fname_decl): Likewise.
	* c-decl.c (poplevel, pop_label_level, lookup_label, lookup_tag,
	store_parm_decls, c_expand_body_1): Likewise.
	* c-errors.c (pedwarn_c99): Likewise.
	* c-format.c (status_warning): Likewise.
	* c-lex.c (fe_file_change, cb_def_pragma, c_lex): Likewise.
	* c-opts.c (c_common_post_options, c_common_parse_file): Likewise.
	* c-parse.in (save_filename, maybe_type_qual, ifc): Likwise.
	* c-semantics.c (finish_stmt_tree, build_stmt, emit_local_var,
	gentrtl_goto_stmt, genrtl_expr_stmt_value, genrtl_decl_stmt,
	genrtl_if_stmt, genrtl_while_stmt, genrtl_do_stmt,
	genrtl_return_stmt, genrtl_for_stmt, build_break_stmt,
	build_continue_stmt, genrtl_switch_stmt, genrtl_asm_stmt,
	prep_stmt, find_reachable_label, expand_unreachable_stmt): Likewise.
	* coverage.c (create_coverage): Likewise.
	* diagnostic.c (pedwarn, sorry, error, fatal_error,
	internal_error, warning, diagnostic_report_current_module,
	inform): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (expand_inline_function,
	output_inline_function): Likewise.
	* rtl-error.c (file_and_line_for_asm): Likewise.
	* tree-inline.c (find_alloca_call, find_builtin_longjmp_call,
	walk_tree): Likewise.
	* tree.c (make_node): Likewise.
	* ada, cp, f, java, objc, treelang: Likewise.

	ada
	* trans.c (build_unit_elab, set_lineno): Rename lineno to
	input_line.
	* utils.c (pushdecl, create_label_decl, begin_subprog_body,
	end_subprog_body): Likewise.
	* utils2.c (build_call_raise): Likewise.

	cp
	* class.c (finish_struct): Rename lineno to input_line.
	* decl.c (push_binding_level, pop_binding_level,
	suspend_binding_level, resume_binding_level, make_label_decl,
	use_label, start_function): Likewise.
	* decl2.c (warn_if_unknown_interface,
	start_static_initialization_or_destruction,
	generate_ctor_or_dtor_function, finish_file): Likewise.
	* error.c (cp_line_of, print_instantiation_full_context,
	print_instantiation_context): Likewise.
	* except.c (check_handlers_1, check_handlers): Likewise.
	* init.c (create_temporary_var): Likewise.
	* method.c (use_thunk, synthesize_method): Likewise.
	* parser.c (cp_lexer_set_source_position_from_token,
	cp_lexer_get_preprocessor_token): Likewise.
	* pt.c (push_tinst_level, pop_tinst_level,
	tsubst_friend_function, instantiate_class_template, tsubst_decl,
	tsubst, tsubst_expr, instantiate_decl): Likewise.
	* semantics.c (genrtl_try_block, finish_label_stmt,
	begin_class_definition, expand_body,
	genrtl_finish_function): Likewise.
	* tree.c (build_min_nt, build_min): Likewise.

	f
	* ansify.c (die_unless): Rename lineno to input_line.
	* com.c (ffecom_subscript_check_, ffecom_do_entry_,
	ffecom_gen_sfuncdef_, ffecom_start_progunit_,
	ffecom_sym_transform_, ffecom_sym_transform_assign_,
	bison_rule_pushlevel_, bison_rule_compstmt_, finish_function,
	store_parm_decls): Likewise.
	* intrin.c (ffeintrin_fulfill_generic): Likewise.
	* lex.c (ffelex_hash_, ffelex_include_, ffelex_next_line_,
	ffelex_file_fixed, ffelex_file_free): Likewise.
	* std.c (ffestd_exec_end): Likewise.
	* ste.c (ffeste_emit_line_note_, ffeste_start_block_,
	ffeste_start_stmt_): Likewise.
	* ste.h (ffeste_filelinenum, ffeste_set_line): Likewise.

	java
	* lex.h (lineno): Rename to ...
	(input_line): ... here
	* parse-scan.y (lineno): Rename to ...
	(input_line): ... here.
	(reset_report): Rename lineno to input_line.
	* check-init.c (check_init): Likewise.
	* class.c (push_class): Likewise.
	* decl.c (complete_start_java_method, end_java_method): Likewise.
	* expr.c (expand_byte_code): Likewise.
	* jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
	* jcf-write.c (generate_bytecode_insns): Likewise.
	* lex.c (java_init_lex, java_allocate_new_line,
	do_java_lex): Likewise.
	* parse.h (YYNOT_TWICE): Likewise.
	* parse.y (empty_statement, expression_statement,
	java_pop_parser_context, java_parser_context_save_global,
	yyerror, register_fields, method_header, safe_layout_class,
	find_in_imports_on_demand, create_artificial_method,
	source_end_java_method, start_complete_expand_method,
	build_thisn_assign, java_complete_lhs,
	maybe_absorb_scoping_block): Likewise.

	objc
	* objc-act.c (objc_init): Rename lineno to input_line.
	(build_module_descriptor, build_selector_translation_table,
	build_protocol_template, build_method_prototype_list_template,
	build_category_template, build_selector_table,
	build_class_template, build_super_template, build_ivar_template,
	build_ivar_list_template, build_method_list_template,
	build_method_template, add_instance_variable): Likewise.

	treelang
	* tree1.c (treelang_init): Rename lineno to input_line.

From-SVN: r66333
2003-05-01 16:13:36 +00:00
Gabriel Dos Reis
fba020b134 c-common.c (if_elt): Use location_t in lieu of "file, line" pair.
* c-common.c (if_elt): Use location_t in lieu of "file, line" pair.
        (c_expand_start_cond): Adjust.
        (c_expand_end_cond): Don't use warning_with_file_and_file.
        (shadow_warning): Likewise.

From-SVN: r66304
2003-04-30 20:27:26 +00:00
Roger Sayle
7f685e177e tree.h (DECL_BUILT_IN_NONANSI): Remove.
* tree.h (DECL_BUILT_IN_NONANSI): Remove.
	* c-common.c (builtin_function_2): Don't set DECL_BUILT_IN_NONANSI.
	* c-decl.c (duplicate_decls): Use invariant DECL_BUILT_IN_NONANSI
	implies DECL_BUILT_IN to simplify logic.
	* print-tree.c (print_node): Don't dump DECL_BUILT_IN_NONANSI.

From-SVN: r65561
2003-04-14 03:13:07 +00:00
Zack Weinberg
339a28b96a c-decl.c (struct binding_level): Add shadowed_tags and function_body...
2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (struct binding_level): Add shadowed_tags and
	function_body; remove this_block, tag_transparent, and
	subblocks_tag_transparent; update comments.
	(clear_binding_level, lookup_tag_reverse): Kill.
	(make_binding_level): Use ggc_alloc_cleared or memset.
	(lookup_tag): Remove struct binding_level* parameter.  All
	callers changed. Just look at IDENTIFIER_TAG_VALUE, and
	current_binding_level->tags if asked for thislevel_only or if
	we might have to diagnose "struct foo; union foo;"
	(pushlevel): Ignore argument.  Do not push another binding
	level on the transition from the parameters to the top level
	of the function body; just tweak the flags and proceed.
	(poplevel): Overhaul.  Clear IDENTIFIER_TAG_VALUEs; on exiting
	a function body, separate the parameter list from the
	top-level local variables.
	(set_block): Do nothing.
	(pushtag): Set IDENTIFIER_TAG_VALUE and add an entry to
	shadowed_tags if necessary.
	(warn_if_shadowing): Nuke the special case for local shadowing
	parameter.
	(pushdecl): Do not create a shadow entry if we are replacing
	an older decl in the same binding level.
	(pushdecl_function_level): Tweak for new way of indicating
	function scope.
	(shadow_tag_warned): Use TYPE_NAME, not	lookup_tag_reverse.
	(start_function): Don't set subblocks_tag_transparent.
	(finish_function): Fix up the binding_level stack for totally
	empty functions.  Otherwise, don't call poplevel.

	* c-common.c (shadow_warning): MANDATORY argument is no longer
	necessary.  Always use plain warning.
	* c-common.h: Update to match.

	* cfglayout.c (scope_to_insns_initialize): Clear block when we
	hit the FUNCTION_DECL.
	* function.c: Do not create cyclic tree structure.

2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-tree.h (struct lang_identifier): Replace global_value,
	local_value members with symbol_value, tag_value.  Kill
	implicit_decl and limbo_value.
	(IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_LOCAL_VALUE,
	IDENTIFIER_LIMBO_VALUE, IDENTIFIER_IMPLICIT_DECL,
	C_MISSING_PROTOTYPE_WARNED): Kill.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE,
	C_DECL_IMPLICIT, C_DECL_ISNT_PROTOTYPE): New.
	(C_DECL_ANTICIPATED): Rename to C_DECL_INVISIBLE.
	(implicit_decl_warning, lookup_name_current_level,
	record_function_scope_shadow): Don't prototype.
	(pushdecl_function_level): Prototype.

	* c-decl.c (truly_local_externals): New variable.
	(struct binding_level): Adjust commentary.
	(get_function_binding_level, clear_limbo_values,
	record_function_scope_shadow): Kill.
	(lookup_name_current_level, implicit_decl_warning): Are	now static.
	(any_external_decl, record_external_decl): New static functions.
	(clone_underlying type): Split out of pushdecl.
	(c_print_identifier): Update to match changes to struct
	lang_identifier.
	(poplevel): Delete #if 0 block.  Make externals invisible
	instead of clearing their IDENTIFIER_SYMBOL_VALUEs.  Don't
	call clear_limbo_values.  Refer to IDENTIFIER_SYMBOL_VALUE not
	IDENTIFIER_GLOBAL_VALUE or IDENTIFIER_LOCAL_VALUE.
	(duplicate-decls): For real parm decl after a forward decl,
	set TREE_ASM_WRITTEN here.  Allow void foo(...) followed by
	foo(...) { } with only a warning.  Say whether a previous
	declaration was implicit.
	(warn_if_shadowing): Now handles all shadowing, not just
	local-over-local.  Clarify comments.
	(pushdecl): Rewritten.  There is no longer a distinction
	between global and local symbol values; they're all
	IDENTIFIER_SYMBOL_VALUE.  Call record_external_decl on all
	DECL_EXTERNAL decls, and use any_external_decl to check
	against previous externals.  Kill #if 0 blocks.  Don't
	tolerate error_mark_node being NULL.
	(pushdecl_top_level): Handle only those cases which
	Objective C (the only user) needs.
	(pushdecl_function_level): New function.
	(implicitly_declare): Create ordinary decls with
	C_DECL_IMPLICIT set.  Recycle old decls, however they got
	created.
	(lookup_name): It's always IDENTIFIER_SYMBOL_VALUE. Return 0
	for C_DECL_INVISIBLE symbols.
	(lookup_name_current_level): Likewise.  Use chain_member.
	(c_make_fname_decl): Don't muck with DECL_CONTEXT.
	Use pushdecl_function_level.
	(builtin_function): Use C_DECL_INVISIBLE.
	(start_function): Don't muck with IDENTIFIER_IMPLICIT_DECL.
	Use C_DECL_ISNT_PROTOTYPE and C_DECL_IMPLICIT.
	(store_parm_decls): It's IDENTIFIER_SYMBOL_VALUE now.
	(identifier_global_value): Same.  Must scan
	global_binding_level in extremis.

	* c-typeck.c (undeclared_variable): New static function, split
	from build_external_ref.
	(build_external_ref): Use DECL_CONTEXT, not
	IDENTIFIER_LOCAL_VALUE, to decide whether a local hides
	an instance variable.  Restructure for clarity.
	* objc/objc-act.c: Use identifier_global_value, not
	IDENTIFIER_GLOBAL_VALUE.

cp:
	* decl.c: Update all calls to shadow_warning.

testsuite:
	* gcc.c-torture/execute/builtin-noret-2.c: New.
	* gcc.c-torture/execute/builtin-noret-2.x: New.
	XFAIL builtin-noret-2.c at -O1 and above.
	* gcc.dg/redecl.c: New.
	* gcc.dg/Wshadow-1.c: Update error regexps.

From-SVN: r65460
2003-04-11 04:26:55 +00:00
Steven Bosscher
009ed91036 c-common.h (lang_statement_code_p): Remove declaration.
2003-04-09  Steven Bosscher  <steven@gcc.gnu.org>

	* c-common.h (lang_statement_code_p): Remove declaration.
	(statement_code_p): Ditto.
	(c_common_stmt_codes): Define; list of c-common statement codes.
	(statement_code_p): New extern declaration.
	(STATEMENT_CODE_P): Define.
	(INIT_STATEMENT_CODES): Define.
	* c-common.c (statement_code_p): Kill the function, declare
	as an array of bools instead.
	(lang_statement_code_p): Remove.
	(walk_stmt_tree): Use STATEMENT_CODE_P not statement_code_p.
	(c_safe_from_p): Ditto.
	* c-objc-common.c (c_objc_common_init): Use INIT_STATEMENT_CODES
	to initialize the statement_code_p array.
	* tree-inline.c (walk_tree): Use STATEMENT_CODE_P instead of
	statement_code_p.
	(copy_tree_r): Ditto.
	* cp/cp-tree.h (cp_stmt_codes): Define; list of C++ specific
	statement tree codes.
	* cp/lex.c (cxx_init): Add missing print line break.  Use
	INIT_STATEMENT_CODES to initialize the statement_code_p array.
	* cp/parser.c (cp_parser_statement): Use STATEMENT_CODE_P
	instead of statement_code_p.
	* cp/pt.c (tsubst_expr): Ditto.
	* cp/tree.c (verify_stmt_tree_r): Ditto.
	(cp_statement_code_p): Remove.
	(init_tree): Don't set lang_statement_code_p, it's gone.

From-SVN: r65422
2003-04-10 08:07:13 +00:00
Mark Mitchell
6b6652197a re PR c++/10278 (ICE in parser)
PR c++/10278
	* c-common.c (finish_label_address_expr): Handle the
	error_mark_node.

	PR c++/10278
	* g++.dg/parse/crash2.C: New test.

From-SVN: r65116
2003-03-31 21:42:47 +00:00
Zack Weinberg
d9b2742a3d c-common.c: Include intl.h.
* c-common.c: Include intl.h.
	(shadow_warning): Rewrite to allow better diagnostic translations.
	* c-common.h: Update prototype of shadow_warning.  Declare sw_kind enum.
	* c-decl.c (warn_if_shadowing): Update calls to shadow_warning;
	use it throughout.
	* Makefile.in (c-common.o): Add intl.h.
cp:
	* decl.c: Update calls to shadow_warning.
po:
	* gcc.pot: Regenerate.

From-SVN: r64699
2003-03-22 03:28:39 +00:00
Neil Booth
cb60f38d5b Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c: Don't include real.h or except.h.
	(REGISTER_PREFIX): Remove.
	(builtin_define_std, builtin_define_with_value,
	builtin_define_with_int_value, builtin_define_with_hex_fp_value,
	builtin_define_type_max, builtin_define_type_precision,
	builtin_define_float_constants): Move to c-cppbuiltin.c.
	(c_stddef_cpp_builtins): New.
	* c-common.h (builtin_define_with_value, c_stddef_cpp_builtins): New.
	* c-cppbuiltin.c: New, extracted from c-common.c.
	(define__GNUC__): New.
	* cppspec.c (lang_specific_driver): Remove support of -no-gcc.
	* gcc.c: Remove support of %v1, %v2 and %v3 specs.
	(cpp_unique_options): Don't support no-gcc.
	(do_spec_1): Remove support of version specs.
	* doc/invoke.texi: Remove documentation of %v1, %v2 and %v3.
	* doc/passes.texi: Update.
	* doc/tm.texi: Update.
cp:
	* Make-lang.in (CXX_C_OBJS): Update.
	* lang-specs.h: Don't define __GNUG__ here.

From-SVN: r64162
2003-03-11 06:42:21 +00:00
John David Anglin
4677862a0b re PR middle-end/9986 ([HP-UX] [3.4 regression] Incorrect transformation of fputs_unlocked to fputc_unlocked)
PR middle-end/9986
	* c-common.c (c_common_nodes_and_builtins): Initialize target builtins
	after the common builtins.
	* pa-hpux.h (DONT_HAVE_FPUTC_UNLOCKED): Define.
	* pa.c (TARGET_INIT_BUILTINS): Define.
	(pa_init_builtins): New function.
	* pa.md (call, call_value, sibcall, sibcall_value): When sufficient
	space has been allocated for the outgoing arguments, set the arg
	pointer for a call emitted after virtuals have been instantiated
	using the stack pointer offset, otherwise abort.

From-SVN: r64043
2003-03-09 19:47:54 +00:00
Neil Booth
63973df350 Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c (flag_no_line_commands, flag_no_output,
	flag_dump_macros, flag_dump_includes): New.
	* c-common.h (flag_no_line_commands, flag_no_output,
	flag_dump_macros, flag_dump_includes, preprocess_file): New.
	(init_c_lex): Update prototype.
	* c-lex.c (init_c_lex): Update prototype; move some code to
	c_common_init.
	* c-opts.c (preprocess_file): Subsume into c_common_init.
	(c_common_decode_option): Update flags.
	(c_common_init): Move code from preprocess_file and init_c_lex.
	(sanitize_cpp_opts): Update.
	* c-ppoutput.c: New, cppmain.c almost verbatim.
	* cpphash.h (struct printer): Remove.
	(struct cpp_reader): Remove print.
	* cpplib.h (dump_none, dump_only, dump_names, dump_definitions,
	cpp_preprocess_file): Remove.
	(struct cpp_options): Remove no_output, no_line_commands, dump_macros
	and dump_includes.
	* cppmain.c: Remove.
	* doc/passes.texi: Update.

From-SVN: r63773
2003-03-04 07:00:39 +00:00
Roger Sayle
0829165849 re PR c++/9367 (error: nonnull argument with extern "C" snprintf prototype)
PR c++/9367
	* builtin-types.def (DEF_FUNCTION_TYPE_VAR_3): New macro.
	(BT_FN_INT_CONST_STRING_VALIST_ARG,
	BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
	BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
	BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
	BT_FN_INT_STRING_CONST_STRING_VAR,
	BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
	BT_FN_INT_STRING_SIZE_CONST_STRING_VAR): New built-in types.
	* builtin-attrs.def (ATTR_NONNULL_1, ATTR_NONNULL_2,
	ATTR_NONNULL_3): Also include the nothrow attribute.
	(sprintf, scanf, sscanf, vprintf, vsprintf, snprintf,
	vsnprintf, vscanf, vsscanf): Don't define attributes here.
	* builtins.def (putchar, puts): Make full C89 built-ins.
	(snprintf, sprintf, scanf, sscanf, vprintf, vscanf,
	vsscanf, vsnprintf, vsprintf): New built-ins.
	* c-common.c (c_common_nodes_and_builtins): Handle new macro
	DEF_FUNCTION_TYPE_VAR_3.

	* doc/extend.texi: Document these new built-in functions.

	* java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
	(initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.

	* g++.old-deja/g++.other/builtins10.C: New test for PR 9367.
	* gcc.dg/format/attr-5.c: Handle new conflicting types warning.

From-SVN: r63650
2003-03-02 01:34:34 +00:00
Richard Henderson
d7ddbe241a c-common.c (handle_used_attribute): Accept static data too.
* c-common.c (handle_used_attribute): Accept static data too.

        * gcc.dg/attr-invalid.c: Allow __used__ on static data.
        * gcc.dg/attr-used-2.c: New.

From-SVN: r63082
2003-02-18 18:07:06 -08:00
Richard Henderson
2928cd7aac [multiple changes]
2003-02-01  Richard Henderson  <rth@redhat.com>

	* optabs.c (expand_unop): Use word_mode for outmode of bit scaners.
	* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
	__popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change
	return type to Wtype.

	* libgcc-std.ver (GCC_3.4): Fix inheritance.

	* config/i386/i386.md (ffssi2): Use nonimmediate_operand for
	expander input constraint.

2003-02-01  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

        * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and
        OTI_parity.
        (clz_optab, ctz_optab, popcount_optab, parity_optab): New.
        * optabs.c (widen_clz, expand_parity): New.
        (expand_unop): Handle clz and parity.  Hardcode SImode as outmode
        for libcalls to clz, ctz, popcount, and parity.
        (init_optabs): Init clz_optab, ctz_optab, popcount_optab and
        parity_optab, and set up libfunc handlers.
        * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
        __popcountsi2, __popcountdi2, __paritysi2 __paritydi2,
        __popcount_tab): New.
        * libgcc2.h: Declare them.
        * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c.
        * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab
        and parity_optab.
        * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New.
        * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT,
        BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL,
        BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL,
        BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL,
        BUILT_IN_PARITYLL): New.
        * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs
        and add optab argument.
        (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*.
        * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New.
        * expr.c (expand_expr): Handle them.
        * fold-const.c (tree_expr_nonnegative_p): Likewise.
        * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New.
        * reload1.c (eliminate_regs): Handle them.
        (elimination_effects): Likewise.
        * function.c (instantiate_virtual_regs_1): Likewise
        * genattrtab.c (check_attr_value): Likewise.
        * simplify-rtx.c (simplify_unary_operation): Likewise.
        * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR.
        * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY.
        (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY.
        * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New.
        * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to
        __builtin_arm_clz.
        * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move...
        * mklibgcc.in (lib2funcs): ...here and merge.  Add new members.
        * doc/extend.texi (Other Builtins): Add new builtins.
        * doc/md.texi (Standard Names): Add new patterns.

From-SVN: r62252
2003-02-01 11:00:02 -08:00
Mark Mitchell
14d22dd667 c-common.c (builtin_define_float_constants): Define __<TYPE>_HAS_INFINITY__ and __<TYPE>_HAS_QUIET_NAN__.
* c-common.c (builtin_define_float_constants): Define
	__<TYPE>_HAS_INFINITY__ and __<TYPE>_HAS_QUIET_NAN__.

	* call.c (build_field_call): Use build_new_op, not build_opfncall.
	(prep_operand): New function.
	(build_new_op): Use it.  Remove dead code.
	* class.c (pushclass): Change "modify" parameter type from int to
	bool.
	(currently_open_class): Use same_type_p, not pointer equality.
	(push_nested_class): Adjust calls to pushclass, remove modify
	parameter.
	* cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
	(pushclass): Change prototype.
	(push_nested_class): Likewise.
	(grokoptypename): Remove.
	(build_opfncall): Remove.
	(value_dependent_expression_p): Declare.
	(resolve_typename_type): Likewise.
	(resolve_typename_type_in_current_instantiation): Likewise.
	(enter_scope_of): Remove.
	(tsubst): Remove.
	(tsubst_expr): Likewise.
	(tsubst_copy): Likewise.
	(tsubst_copy_and_build): Likewise.
	* decl.c (warn_about_implicit_typename_lookup): Remove.
	(finish_case_label): Return error_mark_node for erroneous labels.
	(start_decl): Adjust calls to push_nested_class.
	(grokfndecl): Call push_scope/pop_scope around call to
	duplicate_decls.
	(grokdeclarator): Do not call tsubst.
	(start_function): Adjust calls to push_nested_class.
	* decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
	(check_classfn): Use push_scope/pop_scope around type comparisions.
	(grokoptypename): Remove.
	(push_sscope): Adjust call to push_nested_class.
	* error.c (dump_type): Show cv-qualification of typename types.
	* init.c (build_member_call): Use build_new_op, not
	build_opfncall.
	* method.c (build_opfncall): Remove.
	* parser.c (cp_parser): Add allow_non_constant_expression_p and
	non_constant_expression_p.
	(cp_parser_constant_expression): Adjust prototype.
	(cp_parser_resolve_typename_type): Remove.
	(cp_parser_non_constant_expression): New function.
	(cp_parser_non_constant_id_expression): Likewise.
	(cp_parser_new): Set allow_non_constant_expression_p and
	non_constant_expression_p.
	(cp_parser_primary_expression): Reject `this' and `va_arg' in
	constant-expressions.  Note that dependent names aren't really
	constant.
	(cp_parser_postfix_expression): Reject conversions to non-integral
	types in constant-expressions.  Neither are increments or
	decrements.
	(cp_parser_unary_expression): Reject increments and decrements in
	constant-expressions.
	(cp_parser_direct_new_declarator): Adjust call to
	cp_parser_constant_expression.
	(cp_parser_cast_expression): Reject conversions to non-integral
	types in constant-expressions.
	(cp_parser_assignment_expression): Rejects assignments in
	constant-expressions.
	(cp_parser_expression): Reject commas in constant-expressions.
	(cp_parser_labeled_statement): Adjust call to
	cp_parser_constant_expression.
	(cp_parser_direct_declarator): Simplify array bounds, even in
	templates, when they are non-dependent.  Use
	resolve_typename_type, not cp_parser_resolve_typename_type.
	(cp_parser_class_head): Use resolve_typename_type, not
	cp_parser_resolve_typename_type.
	(cp_parser_member_declaration): Adjust call to
	cp_parser_constant_expression.
	(cp_parser_constant_initializer): Likewise.
	(cp_parser_constructor_declarator): Use resolve_typename_type, not
	cp_parser_resolve_typename_type.
	(cp_parser_late_parsing_default_args): Adjust call to
	push_nested_class.
	* pt.c (tsubst): Give it internal linkage.
	(tsubst_expr): Likewise.
	(tsubst_copy): Likewise.
	(tsubst_copy_and_build): Likewise.
	(push_access_scope_real): Likewise.
	(tsubst_friend_class): Likewise.
	(instantiate_class_template): Adjust call to pushclass.
	(value_dependent_expression_p): Give it external linkage.
	Robustify.
	(resolve_typename_type): New function.
	* semantics.c (finish_call_expr): Use build_new_op, not
	build_opfncall.
	(begin_constructor_declarator): Remove.
	(begin_class_definition): Adjust call to pushclass.
	(enter_scope_of): Remove.
	* typeck.c (comptypes): Resolve typename types as appropriate.
	(build_x_indirect_ref): Use build_new_op, not build_opfncall.
	(build_x_compound_expr): Likewise.
	(build_modify_expr): Likewise.
	(build_x_modify_expr): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

	* g++.dg/parser/constant1.C: New test.

	* include/std/std_limits.h (numeric_limits<float>::has_infinity):
	Use __FLT_HAS_INIFINITY__ to initialize.
	(numeric_limits<float>::has_quiet_NaN): Likewise.
	(numeric_limits<double>::has_infinity): Use __DBL_HAS_INIFINITY__
	to initialize.
	(numeric_limits<double>::has_quiet_NaN): Likewise.
	(numeric_limits<long double>::has_infinity): Use
	__LDBL_HAS_INIFINITY__ to initialize.
	(numeric_limits<long_double>::has_quiet_NaN): Likewise.

From-SVN: r62130
2003-01-30 07:24:02 +00:00
Jan Hubicka
272f51a36f builtins.c (DEF_BUILTIN): Accept 10 arguments.
* builtins.c (DEF_BUILTIN): Accept 10 arguments.
	(implicit_built_in_decls): New global array.
	(mathfn_built_in): New global function.
	(fold_trunc_transparent_mathfn): New static function
	(expand_builtin_strstr, expand_bultin_strchr,
	expand_builtin_strpbrk, expand_builtin_strcpy,
	expand_builtin_strncpy, expand_bultin_strcmp,
	expand_bultin_strncat, expand_builtin_fputs): Use
	implicint_built_in_decls.
	(fold_builtin): Fold floor/trunc/round/ceil/nearbyint.
	* builtins.def: Fix comments.
	(DEF_GCC_BUILTIN, DEF_FALLBACK_BUILTIN, DEF_EXT_FALLBACK_BUILTIN,
	DEF_LIB_BUILTIN, DEF_LIB_ALWAYS_BUILTIN, DEF_EXT_LIB_BUILTIN,
	DEF_C99_BULTIN, DEF_FRONT_END_LIB_BUILTIN,
	DEF_EXT_FRONT_END_LIB_BUILTIN): Pass implicit as needed.
	(DEF_C99_C90RES_BULTIN): New.
	(*f, *l builtins): Update.
	* c-common.c (DEF_BUILTIN): Initialize implicit array.
	(c_expand_builtin_printf, c_expand_builtin_fprintf): Update.
	* convert.c (strip_float_extensions): New global function.
	* tree.h (DEF_BUILTIN): Accept 10 arguments.
	(implicit_built_in_decls, mathfn_built_in, strip_float_extension):
	Declare.
	* java/builtins.c (define_builtin): Handle implicit.
	(DEF_BUILTIN): Update.
	* tm.texi (TARGET_C99_FUNCTIONS): Document.
	* defaults.h (TARGET_C99_FUNCTIONS): Default to 0.
	* config/linux.h (TARGET_C99_FUNCTIONS): Default to 1
	when using glibc2.

From-SVN: r61738
2003-01-24 22:07:01 +00:00
Kazu Hirata
95bd1dd72f alias.c: Fix comment typos.
* alias.c: Fix comment typos.
	* basic-block.h: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* c-pragma.c: Likewise.
	* c-pretty-print.h: Likewise.
	* cfg.c: Likewise.
	* cfganal.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgrtl.c: Likewise.
	* convert.c: Likewise.
	* cpphash.h: Likewise.
	* cpplex.c: Likewise.
	* cpplib.h: Likewise.
	* df.h: Likewise.
	* diagnostic.c: Likewise.
	* diagnostic.h: Likewise.
	* dwarf2.h: Likewise.

From-SVN: r61462
2003-01-18 02:26:43 +00:00
Geoffrey Keating
17211ab553 Merge from pch-branch.
From-SVN: r61136
2003-01-10 02:22:34 +00:00
Jason Merrill
6cce57b0d0 c-common.c (finish_fname_decls): Put the DECL_STMTs inside the outermost scope.
* c-common.c (finish_fname_decls): Put the DECL_STMTs inside the
        outermost scope.
        * c-decl.c (c_make_fname_decl): Push the decls there, too.
cp/
        * decl.c (cp_make_fname_decl): Push the decls inside the
        outermost scope.

From-SVN: r60848
2003-01-03 14:29:51 -05:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Neil Booth
b3a5a50c26 c-common.c (builtin_define_type_max): Handle unsigned types too.
* c-common.c (builtin_define_type_max): Handle unsigned
	types too.
testsuite:
	* gcc.dg/fshort-wchar: New test.

From-SVN: r60023
2002-12-11 06:36:17 +00:00
Mark Mitchell
c9f8536c5d re PR c++/8332 (strlen/template interaction causes ICE)
PR c++/8332
	PR c++/8493
	* decl.c (cxx_init_decl_processing): Use size_type_node, not
	c_size_type_node.
	* decl2.c (coerce_new_type): Likewise.
	* except.c (do_allocate_exception): Likewise.

	* builtin-types.def (BT_SIZE): Use size_type_node.
	* builtins.c (fold_builtin): Make the builtin strlen returns a
	size_t, not a sizetype.
	* c-common.c (c_sizeof_or_alignof_type): Use size_type_node, not
	c_size_type_node.
	(c_alignof_expr): Likewise.
	(c_common_nodes_and_builtins): Likewise.
	* c-common.h (CTI_C_SIZE_TYPE): Remove.
	(c_size_type_node): Likewise.
	* c-format.c (T_ST): Use size_type_node, not c_size_type_node.
	* tree.h (TI_SIZE_TYPE): New enumeral.
	(size_type_node): Likewise.

	PR c++/8332
	PR c++/8493
	* g++.dg/template/strlen1.C: New test.

From-SVN: r59689
2002-12-01 17:51:51 +00:00
Richard Henderson
25fdb4dc97 c-common.c (handle_visibility_attribute): Accept "default".
* c-common.c (handle_visibility_attribute): Accept "default".
	* tree.h (enum symbol_visibility): New.
	(decl_visibility): Declare.
	* target.h (gcc_target.visibility): Take visibility arg as integer.
	* varasm.c (default_assemble_visibility): Likewise.
	(decl_visibility): New.
	(maybe_assemble_visibility): Use it.
	* output.h (default_assemble_visibility): Update prototype.
	* config/rs6000/rs6000.c (rs6000_assemble_visibility): Take
	visibility arg as integer.

From-SVN: r59559
2002-11-26 22:13:23 -08:00
Aldy Hernandez
27bd7792bf c-common.c: Add GTY to vector_type_node_list.
2002-10-30  Aldy Hernandez  <aldyh@redhat.com>

        * c-common.c: Add GTY to vector_type_node_list.

From-SVN: r58666
2002-10-31 06:57:28 +00:00
Richard Henderson
da6eec72f5 real.c (real_to_decimal): Accept BUF_SIZE and CROP_TRAILING_ZEROS as arguments.
gcc/
        * real.c (real_to_decimal): Accept BUF_SIZE and CROP_TRAILING_ZEROS
        as arguments.  Bound DIGITS by the available buffer size.
        (real_to_hexadecimal): Likewise.
        * real.h (real_to_decimal, real_to_hexadecimal): Update prototypes.
        (REAL_VALUE_TO_DECIMAL): Remove.
        * c-common.c, c-pretty-print.c, print-rtl.c, print-tree.c,
        sched-vis.c, config/arc/arc.c, config/c4x/c4x.c, config/fr30/fr30.c,
        config/i370/i370.h, config/i386/i386.c, config/i960/i960.c,
        config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
        config/m68k/hp320.h, config/m68k/m68k.h, config/m68k/sun2o4.h,
        config/m68k/sun3.h, config/mips/mips.c, config/ns32k/ns32k.c,
        config/pdp11/pdp11.h, config/vax/vax.h: Update all callers to
        use real_to_decimal directly, and with the proper arguments.
        * doc/tm.texi (REAL_VALUE_TO_DECIMAL): Remove.

gcc/cp/
        * error.c (dump_expr): Use real_to_decimal directly, and with
        the new arguments.

gcc/f/
        * target.h (ffetarget_print_real1, ffetarget_print_real2): Use
        real_to_decimal directly, and with the new arguments.

From-SVN: r58187
2002-10-15 17:40:39 -07:00
J"orn Rennecke
7457a126c6 c-common.c (c_common_type_for_mode): Add V2HImode case.
* c-common.c (c_common_type_for_mode): Add V2HImode case.
	* tree.c (build_common_tree_nodes_2): Initialize
	unsigned_V2HI_type_node and V2HI_type_node.
	* tree.h (enum tree_index): Add TI_UV2HI_TYPE and TI_V2HI_TYPE.
	(unsigned_V2HI_type_node, V2HI_type_node): Define.

From-SVN: r58123
2002-10-14 11:36:41 +01:00
Gabriel Dos Reis
8d15eebcb0 c-common.c (cb_register_builtins): Define __WCHAR_MAX__.
* c-common.c (cb_register_builtins): Define __WCHAR_MAX__.
	* doc/cpp.texi (Common Predefined Macros): Document.

From-SVN: r57966
2002-10-09 00:13:57 +00:00
Jan Hubicka
b3dc87c570 * c-common.c (cb_register_builtins): Use really_no_inline.
From-SVN: r57844
2002-10-05 17:44:37 +00:00
Jakub Jelinek
dce81a1a59 extend.texi (tls_model): Document.
* doc/extend.texi (tls_model): Document.
	* varasm.c (decl_tls_model): New.
	* c-common.c (handle_tls_model_attribute): New.
	(c_common_attribute_table): Add tls_model.
	* config/alpha/alpha.c (alpha_encode_section_info): Use
	decl_tls_model.
	* flags.h (enum tls_model, flag_tls_default): Move...
	* tree.h (enum tls_model, flag_tls_default): ...here.
	(decl_tls_model): New prototype.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/i386/i386.c (ix86_encode_section_info): Likewise.
	* config/i386/i386.md (tls_global_dynamic, tls_local_dynamic_base):
	Allow !flag_pic.

From-SVN: r57588
2002-09-27 15:30:10 +02:00
Richard Henderson
ddf0fc7224 c-common.c (cpp_define_data_format): Remove.
* c-common.c (cpp_define_data_format): Remove.
        (cb_register_builtins): Don't define __WCHAR_BIT__, __SHRT_BIT__,
        __INT_BIT__, __LONG_BIT__, __LONG_LONG_BIT__, __FLOAT_BIT__,
        __DOUBLE_BIT__, __LONG_DOUBLE_BIT__.
        * doc/cpp.texi: Don't document them either.
        (__SCHAR_MAX__, __SHRT_MAX__, __INT_MAX__, __LONG_MAX__,
        __LONG_LONG_MAX__): Document.
        (__TARGET_FLOAT_FORMAT__): Remove.

From-SVN: r57436
2002-09-23 04:32:43 -07:00
Mark Mitchell
2d3e278d62 c-common.c (flag_abi_version): New variable.
* c-common.c (flag_abi_version): New variable.
	* c-common.h (flag_abi_version): Declare it.
	* c-opts.c (missing_arg): Add -fabi-version.
	(c_common_decode_option): Process -fabi-version.
	* doc/invoke.texi (-fabi-version): Document it.
	(-Wabi): Add information about bit-fields in unions.

	* cp/class.c (layout_virtual_bases): Do not round the size of the
	type to a multiple of the alignment before laying out virtual bases.
	(layout_class_type): Correct handling of bit-fields that are wider
	than their type inside unions.  Round the size of the type to a
	even number of bytes when computing the size without virtual
	bases.
	* cp/cp-tree.h (abi_version_at_least): New macro.

	* g++.dg/abi/bitfield6.C: New test.
	* g++.dg/abi/bitfield7.C: New test.
	* g++.dg/abi/bitfield8.C: New test.
	* g++.dg/abi/vbase11.C: New test.

From-SVN: r57432
2002-09-23 09:22:17 +00:00
John David Anglin
c219e1da0a c-common.c (preprocessing_trad_p): Define.
* c-common.c (preprocessing_trad_p): Define.
	* pa-hiux.h, pa-hpux.h, pa-hpux7.h (CPP_PREDEFINES): Delete.
	(TARGET_OS_CPP_BUILTINS, SUBTARGET_SWITCHES): Define.
	* pa-hpux10.h (TARGET_OS_CPP_BUILTINS, CPP_SPEC): Define.
	* pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Define.
	* pa-linux.h (CPP_PREDEFINES): Delete.
	(TARGET_OS_CPP_BUILTINS, CPP_SPEC): Define.
	* pa32-linux.h, pa64-linux.h (CPP_SPEC): Delete.
	* pa-osf.h, pa-pro-end.h, rtems.h (CPP_PREDEFINES): Delete.
	(TARGET_OS_CPP_BUILTINS): Define.
	* pa.h (MASK_SIO, TARGET_SIO, TARGET_PA_10): Define.
	(TARGET_SWITCHES): Reformat.  Use N_() macro.  Add SUBTARGET_SWITCHES.
	(SUBTARGET_SWITCHES): Provide default definition.
	(TARGET_OPTIONS): Reformat.  Use N_() macro.
	(CPP_PA10_SPEC, CPP_PA11_SPEC, CPP_PA20_SPEC, CPP_64BIT_SPEC,
	CPP_CPU_DEFAULT_SPEC, CPP_64BIT_DEFAULT_SPEC, SUBTARGET_EXTRA_SPECS,
	EXTRA_SPECS, CPP_SPEC, CPLUSPLUS_CPP_SPEC, CPP_PREDEFINES): Delete.
	(TARGET_CPU_CPP_BUILTINS): Define.
	(TARGET_OS_CPP_BUILTINS): Define for BSD-like systems.
	* doc/invoke.texi (msio, mwsio): Document new hppa options.
	* doc/tm.texi (TARGET_CPU_CPP_BUILTINS): Document macro
	preprocessing_trad_p().

From-SVN: r57416
2002-09-22 19:23:20 +00:00
Kazu Hirata
da7d830409 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.0: Likewise.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* FSFChangeLog.10: Likewise.
	* FSFChangeLog.11: Likewise.
	* alias.c: Likewise.
	* basic-block.h: Likewise.
	* c-aux-info.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-semantics.c: Likewise.
	* c-typeck.c: Likewise.
	* calls.c: Likewise.
	* cfganal.c: Likewise.
	* cfgloop.c: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* conflict.c: Likewise.
	* cppexp.c: Likewise.
	* cppfiles.c: Likewise.
	* cpphash.h: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* cpplib.h: Likewise.
	* cppmacro.c: Likewise.
	* cse.c: Likewise.

From-SVN: r57398
2002-09-22 02:03:17 +00:00
Richard Henderson
2a15d344d0 c-common.c (cpp_define_data_format): Remove __GCC_LITTLE_ENDIAN__...
* c-common.c (cpp_define_data_format): Remove __GCC_LITTLE_ENDIAN__,
        __GCC_BIG_ENDIAN__, __TARGET_BITS_ORDER__, __TARGET_BYTES_ORDER__,
        __TARGET_INT_WORDS_ORDER__, __TARGET_FLOAT_WORDS_ORDER__,
        __TARGET_USES_VAX_F_FLOAT__, __TARGET_USES_VAX_D_FLOAT__,
        __TARGET_USES_VAX_G_FLOAT__, __TARGET_USES_VAX_H_FLOAT__.
        * doc/cpp.texi: Don't document them.

From-SVN: r57391
2002-09-21 09:32:49 -07:00
Richard Henderson
3fdacdf9e3 c-common.c (builtin_define_float_constants): Use real_format to get the floating-point parameters.
* c-common.c (builtin_define_float_constants): Use real_format
        to get the floating-point parameters.

From-SVN: r57390
2002-09-21 09:27:40 -07:00
Nick Clifton
256e9fd21a machmode.def (V1DImode): New mode.
* machmode.def (V1DImode): New mode.  A single element vector.
* tree.h (TI_UV1DI_TYPE, TI_V1DI_TYPE): New tree_index enums.
  (unsigned_V1DI_type_node, V1D1_type_node): New type nodes.
* tree.c (build_common_tree_nodes_2): Build
  unsigned_V1DI_type_node and V1D1_type_node.
* c-common.c (c_common_type_for_mode): Return
  unsigned_V1DI_type_node or V1D1_type_node for V1DImode.
* rtl.c (class_narrowest_): Start integer vector nodes with V1DImode.

From-SVN: r57248
2002-09-17 13:03:40 +00:00
Richard Henderson
ac520ec919 c-common.c (builtin_define_float_constants): Emit __FOO_DENORM_MIN__.
gcc/
        * c-common.c (builtin_define_float_constants): Emit __FOO_DENORM_MIN__.

libstdc++/
        * include/std/std_limits.h (__glibcpp_f32_denorm_min_bytes,
        __glibcpp_f32_has_denorm, __glibcpp_f64_denorm_min_bytes,
        __glibcpp_f64_has_denorm, __glibcpp_f80_denorm_min_bytes,
        __glibcpp_f80_has_denorm, __glibcpp_f96_denorm_min_bytes,
        __glibcpp_f96_has_denorm, __glibcpp_f128_denorm_min_bytes,
        __glibcpp_f128_has_denorm, __glibcpp_float_denorm_min_bytes,
        __glibcpp_float_has_denorm, __glibcpp_double_denorm_min_bytes,
        __glibcpp_double_has_denorm, __glibcpp_long_double_denorm_min_bytes,
        __glibcpp_long_double_has_denorm): Remove.
        (__glibcpp_float_denorm_min, __glibcpp_double_denorm_min,
        __glibcpp_long_double_denorm_min): Remove.
        (std::numeric_limits<float>::has_denorm): Use __FLT_DENORM_MIN__.
        (std::numeric_limits<float>::denorm_min): Likewise.
        (std::numeric_limits<double>): Similarly.
        (std::numeric_limits<long double>): Similarly.
        * src/limits.cc (__glibcpp_float_denorm_min,
        __glibcpp_double_denorm_min, __glibcpp_long_double_denorm_min): Remove.

From-SVN: r57200
2002-09-16 09:58:42 -07:00
Richard Henderson
efdc7e19ca real.c, real.h: Rewrite from scratch.
gcc/
	* real.c, real.h: Rewrite from scratch.

	* Makefile.in (simplify-rtx.o): Depend on TREE_H.
	(paranoia): New target.
	* builtins.c (fold_builtin_inf): Use new real.h interface.
	* c-common.c (builtin_define_with_hex_fp_value): Likewise.
	* c-lex.c (interpret_float): Likewise.
	* emit-rtl.c (gen_lowpart_common): Likewise.
	* optabs.c (expand_float): Use real_2expN.
	* config/ia64/ia64.md (divsi3, udivsi3): Likewise.
	* defaults.h (INTEL_EXTENDED_IEEE_FORMAT): New.
	(FLOAT_WORDS_BIG_ENDIAN): New.
	* cse.c (find_comparison_args): Don't pass FLOAT_STORE_FLAG_VALUE
	directly to REAL_VALUE_NEGATIVE.
	* loop.c (canonicalize_condition): Likewise.
	* simplify-rtx.c: Include tree.h.
	(simplify_unary_operation): Don't handle FIX and UNSIGNED_FIX
	with floating-point result modes.
	* toplev.c (backend_init): Call init_real_once.

	* fold-const.c (force_fit_type): Don't call CHECK_FLOAT_VALUE.
	* tree.c (build_real): Likewise.
	* config/alpha/alpha.c, config/vax/vax.c (float_strings,
	float_values, inited_float_values, check_float_value): Remove.
	* config/alpha/alpha.h, config/m68hc11/m68hc11.h,
	config/m88k/m88k.h, config/vax/vax.h (CHECK_FLOAT_VALUE): Remove.
	* doc/tm.texi (CHECK_FLOAT_VALUE): Remove.

gcc/f/
	* target.c (ffetarget_real1): Don't pass FFETARGET_ATOF_
	directly to ffetarget_make_real1.
	(ffetarget_real2): Similarly.
	* target.h (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r2_,
	ffetarget_cvt_r2_to_rv_): Use new real.h interface and simplify.

gcc/java/
	* jcf-parse.c (get_constant): Runtime check for IEEE format;
	use new real.h interface.
	* jcf-write.c (find_constant_index): Use new real.h interface.
	* lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.

contrib/
	* paranoia.cc: New file.

From-SVN: r57198
2002-09-16 09:36:39 -07:00
Kazu Hirata
8d9afc4e2b ABOUT-NLS: Follow spelling conventions.
* ABOUT-NLS: Follow spelling conventions.
	* ChangeLog: Likewise.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* FSFChangeLog.10: Likewise.
	* FSFChangeLog.11: Likewise.
	* c-common.c: Likewise.
	* c-lex.c: Likewise.
	* c-objc-common.c: Likewise.
	* cppexp.c: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* doloop.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.h: Likewise.
	* ssa.c: Likewise.

From-SVN: r57188
2002-09-16 11:42:00 +00:00
Kazu Hirata
05713b80e0 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.0: Likewise.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* FSFChangeLog.10: Likewise.
	* FSFChangeLog.11: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-format.c: Likewise.
	* c-opts.c: Likewise.
	* cpplib.c: Likewise.
	* langhooks.h: Likewise.
	* real.c: Likewise.
	* reg-stack.c: Likewise.
	* toplev.c: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.md: Likewise.
	* config/arm/linux-gas.h: Likewise.
	* config/arm/netbsd.h: Likewise.
	* config/c4x/c4x.c: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/c4x/libgcc.S: Likewise.
	* config/fr30/fr30.md: Likewise.
	* config/frv/frv.md: Likewise.
	* config/ia64/ia64.md: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mn10300/mn10300.c: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/v850/v850.md: Likewise.
	* doc/extend.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/md.texi: Likewise.

From-SVN: r57166
2002-09-15 18:24:08 +00:00
Kazu Hirata
4b7e68e7d2 basic-block.h: Fix comment formatting.
* basic-block.h: Fix comment formatting.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-lex.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloop.c: Likewise.
	* defaults.h: Likewise.
	* et-forest.c: Likewise.
	* explow.c: Likewise.
	* function.h: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* gengtype.c: Likewise.
	* ifcvt.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* profile.c: Likewise.
	* ra-build.c: Likewise.
	* real.c: Likewise.
	* rtl.h: Likewise.
	* tracer.c: Likewise.
	* tree-inline.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r56952
2002-09-08 12:47:27 +00:00
Richard Henderson
77e8a0cc9d c-common.c (builtin_define_with_hex_fp_value): New.
* c-common.c (builtin_define_with_hex_fp_value): New.
        (builtin_define_float_constants): Use it.  Fix H_FLOAT mant_dig.

From-SVN: r56800
2002-09-04 10:11:32 -07:00
Richard Henderson
d57a4b98c4 Makefile.in (USER_H): Add ginclude/float.h.
* Makefile.in (USER_H): Add ginclude/float.h.
        (FLOAT_H): Remove.
        (stmp-int-hdrs, install-mkheaders): Don't handle FLOAT_H.
        (mostlyclean): Don't remove float.h intermediate files.
        (distclean): Don't remove float.h.
        * config.gcc: Remove all float_format references.
        * configure.in (float_format, float_h_file): Remove.

        * c-common.c: Include tree-inline.h.
        (builtin_define_with_int_value): New.
        (builtin_define_type_precision): Use it.
        (builtin_define_float_constants): New.
        (cb_register_builtins): Use it.  Define __FLT_RADIX__ and
        __FLT_EVAL_METHOD__.
        * defaults.h (TARGET_FLT_EVAL_METHOD): New.
        * config/i386/i386.h (TARGET_FLT_EVAL_METHOD): New.
        * config/m68k/m68k.h (TARGET_FLT_EVAL_METHOD): New.
        * doc/tm.texi (INTEL_EXTENDED_IEEE_FORMAT): Mention moto 96-bit format.
        (TARGET_FLT_EVAL_METHOD): New.

        * config/float-c4x.h, config/float-i128.h, config/float-i32.h,
        config/float-i386.h, config/float-i64.h, config/float-m68k.h,
        config/float-sh.h, config/float-sparc.h, config/float-vax.h: Remove.
        * ginclude/float.h: New.

From-SVN: r56769
2002-09-03 13:21:35 -07:00
Gabriel Dos Reis
585e661a79 c-common.c (builtin_define_type_precision): New function.
gcc/
 2002-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>

 * c-common.c (builtin_define_type_precision): New function.
 (cb_register_builtins): Use it.  Define __WCHAR_UNSIGNED__ is
 wchar_t is unsigned in C++.
 * doc/cpp.texi (Common Predefined Macros): Document
 __WCHAR_UNSIGNED__, __CHAR_BIT__, __WCHAR_BIT__, __SHRT_BIT__,
 __INT_BIT__, __LONG_BIT__, __LONG_LONG_BIT__, __FLOAT_BIT__,
 __DOUBLE_BIT__, __LONG_DOUBLE_BIT__.

libstdc++-v3/

2002-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	    * include/std/std_limits.h (__glibcpp_char_bits,
	    __glibcpp_short_bits, __glibcpp_int_bits,
	    __glibcpp_long_bits,
	    __glibcpp_long_long_bits, __glibcpp_float_bits,
	    __glibcpp_double_bits, __glibcpp_long_double_bits):
	    Remove.  Use
	    compiler predifined macros.
	    (__glibcpp_wchar_t_is_signed): Define based on compiler
	    predefined
	    __WCHAR_UNSIGNED__.

From-SVN: r56646
2002-08-28 21:41:55 +00:00
Mark Mitchell
eca7f13c69 c-common.c (warn_abi): New variable.
* c-common.c (warn_abi): New variable.
	* c-common.h (warn_abi): Likewise.
	* c-opts.c (COMMAND_LINE_OPTIONS): Add -Wabi.
	(c_common_decode_option): Handle it.
	* doc/invoke.texi:P Document -Wabi.

	* class.c (layout_virtual_bases): Warn about bugs in G++ that
	result in incorrect object layouts.
	(layout_class_type): Likewise.

	* testsuite/g++.dg/abi/bitfield5.C: New test.
	* testsuite/g++.dg/abi/vbase10.C: Likewise.

From-SVN: r56618
2002-08-27 22:14:51 +00:00
Nicola Pero
ece4ce85d8 Added -Wundeclared-selector ObjC command line option
From-SVN: r56615
2002-08-27 21:57:47 +00:00
Gabriel Dos Reis
35885eab33 c-common.c (cpp_define_data_format): New function.
* c-common.c (cpp_define_data_format): New function.
	(cb_register_builtins): Call it.

	* doc/cpp.texi (Common Predefined Macros): Document
	__TARGET_BITS_ORDER__, __TARGET_BYTES_ORDER__,
	__TARGET_INT_WORDS_ORDER__, __TARGET_FLOAT_WORDS_ORDER__,
	__TARGET_FLOAT_FORMAT__, __TARGET_USES_VAX_F_FLOAT__,
	__TARGET_USES_VAX_D_FLOAT__, __TARGET_USES_VAX_G_FLOAT__,
	__TARGET_USES_VAX_H_FLOAT__.

From-SVN: r56597
2002-08-27 09:38:05 +00:00
Stan Shebs
8aa5074e79 c-common.c (cb_register_builds): Define __NEXT_RUNTIME__ for ObjC with -fnext-runtime.
* c-common.c (cb_register_builds): Define __NEXT_RUNTIME__
	for ObjC with -fnext-runtime.
	* doc/cpp.texi: Document it.

	* objc/execute/selector-1.m: Add __NEXT_RUNTIME__ case.

From-SVN: r56390
2002-08-16 23:31:06 +00:00
Neil Booth
460bd0e32d c-common.c (STDC_0_IN_SYSTEM_HEADERS, [...]): Move to c-copts.c.
* c-common.c (STDC_0_IN_SYSTEM_HEADERS, c_common_init): Move
	to c-copts.c.
	(warn_multichar): Die.
	(cb_register_builtins): Export.
	* c-common.h (warn_multichar, preprocess_file): Remove.
	(cb_register_builtins): New.
	* c-lang.c (c_init): Remove.
	(LANG_HOOKS_INIT): Use c_objc_common_init.
	* c-lex.c (init_c_lex): Don't canonicalize filename.
	* c-opts.c (in_fname, STDC_0_IN_SYSTEM_HEADERS): New.
	(preprocess_file): Make static.  Update for cpplib.
	(c_common_decode_option): Remove warn_multichar.  Use in_fname.
	(c_common_post_options): Set some cpp options here.
	(c_common_init): Move from c-common.c.
	* cppinit.c (cpp_post_options): Don't canonicalize in_fname.
	* cpplib.h (struct cpp_options): Remove in_fname.
	(cpp_preprocess_file): Update.
	* cppmain.c (cpp_preprocess_file): Update for new prototypes.

From-SVN: r56223
2002-08-12 06:02:53 +00:00
Neil Booth
76c3e73e32 c-common.c (c_common_init): Call preprocess_file instead.
* c-common.c (c_common_init): Call preprocess_file instead.
	(c_common_finish): Move to c-opts.c.
	* c-common.h (preprocess_file): new.
	* c-opts.c (out_fname, out_stream, deps_append, preprocess_file,
	check_deps_environment_vars, c_common_finish): New.
	(c_common_decode_option): Update for out_fname and dependencies.
	* cppinit.c (init_dependency_output, output_deps): Remove.
	(cpp_destroy): Update prototype.
	(cpp_add_dependency_target): New.
	(cpp_read_main_file): Don't overlay a buffer.
	(cpp_finish): Take a deps output stream and write deps to it.
	Return the error count.
	(cpp_post_options): Don't canonicalize out_fname, or do anything
	with dependencies.
	* cpplib.h (struct cpp_options): Remove out_fname and
	preprocess_only.
	(cpp_add_dependency_target): New.
	(cpp_destroy, cpp_finish, cpp_preprocess_file): Update.
	* cppmain.c (cpp_preprocess_file): Update prototype.  Don't
	set preprocess_only.  Don't handle the output stream directly.

From-SVN: r56214
2002-08-11 22:22:28 +00:00
Ziemowit Laski
0f7866e7ba c-common.c (flag_objc): New.
2002-08-09  Ziemowit Laski  <zlaski@apple.com>

        * c-common.c (flag_objc): New.
        * c-common.h (c_language_kind): Get rid of clk_objective_c
        enum value.
        (flag_objc): New extern declaration.
        * c-decl.c (implicitly_declare): Call objc_check_decl
        instead of maybe_objc_check_decl.
        (finish_decl): Likewise.
        (grokfield): Likewise.
        (finish_struct): Likewise.
        * c-lang.c (maybe_objc_check_decl): Rename to objc_check_decl.
        (maybe_objc_comptypes): Rename to objc_comptypes.
        (maybe_building_objc_message_expr): Rename to
        objc_message_selector.
        * c-lex.c (lex_charconst): Remove uses of clk_objective_c,
        replace with flag_objc as needed.
        * c-opts.c (c_common_init_options): Likewise.
        (c_common_decode_option): Likewise.
        * c-parse.in (init_reswords): Likewise.
        * c-tree.h (maybe_objc_check_decl): Rename to objc_check_decl.
        (maybe_objc_comptypes): Rename to objc_comptypes.
        (maybe_building_objc_message_expr): Rename to
        objc_message_selector.
        * c-typeck.c (comptypes): Call objc_comptypes instead of
        maybe_objc_comptypes, and/or objc_message_selector instead of
        (comp_target_types): Likewise.
        (convert_for_assignment): Likewise.
        (warn_for_assignment): Likewise.
        * cppinit.c (init_builtins): Set __OBJC__ manifest constant
        independently of those for other languages.
        * objc/objc-act.c (maybe_objc_comptypes): Delete.
        (maybe_objc_check_decl): Delete.
        (maybe_building_objc_message_expr): Rename to
        objc_message_selector.
        * objc/objc-lang.c (objc_init_options): Use clk_c instead of
        clk_objective_c; set flag_objc flag.

From-SVN: r56173
2002-08-10 02:18:28 +00:00
Neil Booth
0b6f2917cf Makefile.in (c-opts.o, [...]): Update.
* Makefile.in (c-opts.o, c-common.o, C_AND_OBJC_OBJS): Update.
	* c-common.c: Don't include tree-inline.h.
	(c_common_init_options, c_common_post_options): Move to c-opts.c.
	* c-common.h (c_common_decode_option): New.
	* c-decl.c (c_decode_option): Remove.
	* c-lang.c (LANG_HOOKS_DECODE_OPTION): Use c_common_decode_option.
	* c-opts.c: New file.
	* c-tree.h (c_decode_option): Remove.
	* doc/passes.texi: Update.
	* objc/objc-act.c (objc_decode_option): Remove.
	* objc/objc-act.h (objc_decode_option): Remove.
	* objc/ojbc-lang.c (LANG_HOOKS_DECODE_OPTION): Use
	c_common_decode_option.
cp:
	* Make-lang.in (CXX_C_OBJS): Update.
	* cp-lang.c (LANG_HOOKS_DECODE_OPTION): Use c_common_decode_option.
	* cp-tree.h (cxx_decode_option): Remove.
	* decl2.c (compare_options, lang_f_options, unsupported_options,
	cxx_decode_option): Remove.
testsuite:
	* objc.dg/const-str-2.m: Update.
	* gcc.dg/cpp/c++98.c: Change to C extension.
	* gcc.dg/cpp/c++98-pedantic.c: Similarly.
	* gcc.dg/cpp/cpp.exp: Process .C extensions too.

From-SVN: r56105
2002-08-07 18:32:13 +00:00
Jason Merrill
f1a044c7da c-common.c (c_expand_expr): If the last expression is a VAR_DECL with RTL that matches the target...
* c-common.c (c_expand_expr) [STMT_EXPR]: If the last expression is
        a VAR_DECL with RTL that matches the target, just return that RTL.

From-SVN: r56083
2002-08-06 20:52:24 -04:00
Dale Johannesen
8d3e27d16b Mark __func__ with line number 0, to avoid confusing debuggers.
From-SVN: r56081
2002-08-06 23:36:22 +00:00
Zack Weinberg
56da7207c1 c-common.c (c_common_init): -Wtraditional also implies -Wlong-long.
* c-common.c (c_common_init): -Wtraditional also implies -Wlong-long.
	* cppinit.c (cpp_post_options): Likewise.

	* cppexp.c (cpp_classify_number): Suppress -Wtraditional
	warning about 'LL' suffix (but not 'ULL' etc) when
	-Wno-long-long is in effect.

	* cppmacro.c (_cpp_builtin_macro_text) [BT_TIME, BT_DATE]:
	Check for failing time()/localtime(), issue a warning, and
	make __TIME__ and __DATE__ expand to fallback strings.

	* doc/cpp.texi, doc/extend.texi: Document behavior of __DATE__
	and __TIME__ when the date and time cannot be determined.

From-SVN: r55969
2002-08-02 04:18:16 +00:00
Franz Sirl
a03e67c3a3 c-common.c (cb_register_builtins): Always define __GXX_ABI_VERSION.
2002-08-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* c-common.c (cb_register_builtins): Always define __GXX_ABI_VERSION.

From-SVN: r55959
2002-08-02 00:15:45 +00:00
Neil Booth
c288218ab6 * c-common.c (__GXX_ABI_VERSION): Correct spelling.
From-SVN: r55947
2002-08-01 21:10:44 +00:00
Benjamin Kosnik
43bfc248ba c-common.c (cb_register_builtins): Set __GXX_ABI_VERSION__ to 102.
2002-08-01  Benjamin Kosnik  <bkoz@redhat.com>

	* c-common.c (cb_register_builtins): Set __GXX_ABI_VERSION__ to 102.

From-SVN: r55944
2002-08-01 20:10:25 +00:00
Toon Moene
73e42cf342 c-common.c (cb_register_builtins): Set __FINITE_MATH_ONLY__ to 1 if -ffinite-math-only is given, and to 0 otherwise.
2002-08-01  Toon Moene  <toon@moene.indiv.nluug.nl>

	* c-common.c (cb_register_builtins): Set
	__FINITE_MATH_ONLY__ to 1 if -ffinite-math-only
	is given, and to 0 otherwise.
	* combine.c (simplify_if_then_else): HONOR_NANS
	implies FLOAT_MODE_P.

From-SVN: r55932
2002-08-01 09:08:38 +00:00
Neil Booth
abecfc8f7b c-common.c (cb_register_builtins): If C++, define __EXCEPTIONS, __DEPRECATED and __GXX_ABI_VERSION as appropriate.
* c-common.c (cb_register_builtins): If C++, define
	__EXCEPTIONS, __DEPRECATED and __GXX_ABI_VERSION as appropriate.
	* gcc.c (cpp_unique_options): Remove __GXX_ABI_VERSION.
cp:
	* lang-specs.h: Simplify in accordance with new code in
	c-common.c.

From-SVN: r55924
2002-08-01 06:25:06 +00:00
Neil Booth
4078b403a7 c-common.c: Define all C/ObjC/C++ warning and flag variables.
* c-common.c: Define all C/ObjC/C++ warning and flag variables.
	* c-common.h: Declare all C/ObjC/C++ warning and flag variables.
	* c-decl.c: Move all warning and flag variables to c-common.c.
	* c-format.c: Move all warning variables to c-common.c.
	* c-tree.h: Move all warning and flag declarations to c-common.h.
	* objc/objc-act.c: Move all warning variables to c-common.c.
	(flag_warn_protocol): Rename warn_protocol.
cp:
	* cp-tree.h: Move all warning and flag declarations to c-common.h.
	* decl.c: Move all warning and flag variables to c-common.c.
	* decl2.c: Move all warning and flag variables to c-common.c.
	* lex.c (flag_digraphs): Remove.
	(warn_traditional): Now in c-common.c.

From-SVN: r55923
2002-08-01 06:20:46 +00:00
Toon Moene
2e8f2e8f7d flags.h: Declare flag_finite_math_only.
2002-07-30  Toon Moene  <toon@moene.indiv.nluug.nl>

	* flags.h: Declare flag_finite_math_only.
	Use it in definition of HONOR_NANS and
	HONOR_INFINITIES.
	* c-common.c (cb_register_builtins): Emit
	__FINITE_MATH_ONLY__ when flag_finite_math_only
	is set.
	* combine.c (simplify_if_then_else): If
	flag_finite_math_only is set, a == b has a
	definite value.
	* toplev.c: Initialize flag_finite_math_only.
	(set_flags_fast_math): Set it on -ffast-math.
	(flag_fast_math_set_p): Test it.
doc:
	* invoke.texi: Document -ffinite-math-only.
f:
	* com.c (ffe_init_options): Set
	flag_finite_math_only.
	* invoke.texi: Document -fno-finite-math-only.

From-SVN: r55887
2002-07-30 22:23:26 +00:00
Roger Sayle
52bfebf091 Makefile.in: rtlanal.o now depends upon real.h.
* Makefile.in: rtlanal.o now depends upon real.h.

	* flags.h [flag_signaling_nans]: New flag.
	[HONOR_SNANS]: New macro.

	* toplev.c [flag_signaling_nans]: Initialize to false.
        (f_options): Add processing for "-fsignaling-nans".
	(set_fast_math_flags): Clear flag_signaling_nans with -ffast-math.
	(process_options): flag_signaling_nans implies flag_trapping_math.

	* c-common.c (cb_register_builtins): Define __SUPPORT_SNAN__
	when -fsignaling-nans.  First step to implementing WG14's N965.

	* fold-const.c (fold) [MULT_EXPR]: Conditionalize transforming
	1.0 * x into x, and -1.0 * x into -x on !HONOR_SNANS.
	[RDIV_EXPR]: Conditionalize x/1.0 into x on !HONOR_SNANS.

	* simplify-rtx.c (simplify_relational_operation): Conditionalize
	transforming abs(x) < 0.0 into false on !HONOR_SNANS.

	* rtlanal.c: #include real.c for TARGET_FLOAT_FORMAT definitions
	required by HONOR_SNANS.  (may_trap_p): Floating point DIV, MOD,
	UDIV, UMOD, GE, GT, LE, LT and COMPARE may always trap with
	-fsignaling_nans.  EQ and NE only trap for flag_signaling_nans
	not flag_trapping_math (i.e. HONOR_SNANS but not HONOR_NANS).

	* doc/invoke.texi: Document new -fsignaling-nans compiler option.

From-SVN: r55804
2002-07-28 02:11:05 +00:00
Gabriel Dos Reis
ea79391291 c-common.c (c_sizeof_or_alignof_type): Take a third argument for complaining.
* c-common.c (c_sizeof_or_alignof_type): Take a third argument for
	complaining.
	* c-common.h (c_sizeof): Adjust definition.
	(c_alignof): Likewise.
	* c-tree.h (c_sizeof_nowarn): Now macro.
	* c-typeck.c (c_sizeof_nowarn): Remove definition.
cp/
	* cp-tree.h (cxx_sizeof_nowarn): Now a macro.
	(cxx_sizeof_or_alignof_type): Take a third argument.
	(cxx_sizeof): Adjust definition.
	(cxx_alignof): Likewise.
	* init.c (build_delete): Use cxx_sizeof_nowarn to reflect reality.
	* typeck.c (cxx_sizeof_or_alignof_type): Take a third argument for
	complaining.
	(c_sizeof_nowarn): Remove definition.
	(build_unary_op): Use cxx_sizeof_nowarn.

From-SVN: r55744
2002-07-25 08:58:07 +00:00
Gabriel Dos Reis
fa72b06489 Fix PR/7363:
2002-07-21  Gabriel Dos Reis  <gdr@nerim.net>

        Fix PR/7363:
        * c-common.c (c_sizeof_or_alignof_type): New function.
        (c_alignof): Remove definition.
        * c-common.h (c_sizeof, c_alignof): Define as macros.
        (c_sizeof_or_alignof_type): Declare.
        (my_friendly_assert): Moved from cp/cp-tree.h
        * c-typeck.c (c_sizeof): Remove definition.

cp/

2002-07-21  Gabriel Dos Reis  <gdr@nerim.net>

        Fix PR/7363:
        * typeck.c (cxx_sizeof_or_alignof_type): New function.
        (c_sizeof): Remove definition.
        (expr_sizeof): Use cxx_sizeof.
        * decl2.c (build_expr_from_tree): Use cxx_sizeof_or_alignof_type.
        * decl.c (finish_destructor_body): Use cxx_sizeof.
        * semantics.c (finish_alignof): Likewise.
        (finish_alignof): Use cxx_alignof.
        * cp-tree.h (cxx_sizeof, cxx_alignof): New macros.
        (cxx_sizeof_or_alignof_type): Declare.
        (my_friendly_assert): Move to ../c-common.h.

From-SVN: r55678
2002-07-23 13:54:06 +00:00
Neil Booth
5351f1ca74 c-common.c (c_common_post_options): Update prototype; don't init backends if preprocessing only.
* c-common.c (c_common_post_options): Update prototype;
	don't init backends if preprocessing only.
	* langhooks-def.h (LANG_HOOKS_POST_OPTIONS): Update.
	* langhooks.h (struct lang_hooks): Update post_options to
	return a boolean.
	* toplev.c (parse_options_and_default_flags, do_compile,
	lang_independent_init): Update prototypes.  Allow the
	front end to specify that there is no need to initialize
	the back end.
	(general_init): Move call to hex_init here...
	(toplev_main): ...from here.  Pass flag for back end init
	suppression.
java:
	* lang.c (java_post_options): Update prototype.

From-SVN: r55306
2002-07-07 22:10:18 +00:00
Roger Sayle
df061a43b6 re PR c++/7099 (G++ doesn't set the noreturn attribute on std::exit and std::abort)
PR c++/7099
	* builtin-attrs.def: Define new attribute lists for use in
	builtins.def.
	* builtins.def [DEF_BUILTIN]: Modify to take an additional
	ATTRS argument, an enumerated value defined in builtin-attrs.def
	that represents the attribute list for the builtins.  Modify
	all builtin functions to pass an appropriate attribute list.
	Specify "abort", "exit", "_exit" and "_Exit" builtins here with
	their required noreturn attributes.
	* tree.h (enum_builtin_function): Ignore the additional parameter
	to DEF_BUILTIN.
	* builtins.c (built_in_names): Likewise.
	* c-common.c: (builtin_function_2): Replace the "int noreturn_p"
	argument with a tree representing the functions attribute list.
	Pass this "attrs" argument to builtin_function.  No longer handle
	the noreturn_p processing manually.
	(built_in_attributes): Move the definitions from builtin-attrs.def
	before c_common_nodes_and_builtins.
	(c_common_nodes_and_builtins): Handle the new ATTRS parameter in
	DEF_BUILTIN, passing it to both builtin_function and the changed
	builtin_function_2.

	* doc/extend.texi: Document __builtin_abort, __builtin_exit,
	__builtin__exit and __builtin__Exit.

	* java/builtins.c (initialize_builtins): Ignore the additional
	parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
	the builtins.def file.

From-SVN: r55276
2002-07-06 00:16:44 +00:00
Roger Sayle
6a2dd09a65 tree.h: Modify builtin_function interface to take an extra argument ATTRS...
* tree.h:  Modify builtin_function interface to take an extra
	argument ATTRS, which is a tree representing an attribute list.

	* c-decl.c (builtin_function): Accept additional parameter.
	* objc/objc-act.c (builtin_function): Likewise.
	* f/com.c (builtin_function): Likewise.
	* java/decl.c (builtin_function): Likewise.
	* ada/utils.c (builtin_function): Likewise.
	* cp/decl.c (builtin_function): Likewise.
	(builtin_function_1): Likewise.

	* c-common.c (c_common_nodes_and_builtins): Pass an additional
	NULL_TREE argument to builtin_function.  (builtin_function_2):
	Likewise.
	* cp/call.c (build_java_interface_fn_ref): Likewise.
	* objc/objc-act.c (synth_module_prologue): Likewise.
	* java/decl.c (java_init_decl_processing): Likewise.
	* f/com.c (ffe_com_init_0): Likewise.

	* config/alpha/alpha.c (alpha_init_builtins): Pass an additional
	NULL_TREE argument builtin_function.
	* config/arm/arm.c (def_builtin): Likewise.
	* config/c4x/c4x.c (c4x_init_builtins): Likewise.
	* config/i386/i386.c (def_builtin): Likewise.
	* config/ia64/ia64.c (def_builtin): Likewise.
	* config/rs6000/rs6000.c (def_builtin): Likewise.

From-SVN: r55161
2002-07-01 23:07:19 +00:00
Richard Henderson
74d86f4fc1 c-common.c (c_common_get_alias_set): Correctly handle characters.
* c-common.c (c_common_get_alias_set): Correctly handle characters.
        Rearrange order of expressions; don't handle vectors here.
        * alias.c (get_alias_set): Let vectors match their components.

From-SVN: r54821
2002-06-20 00:30:04 -07:00
Aldy Hernandez
cb2a532e9f simd-1.c: New.
2002-06-16  Aldy Hernandez  <aldyh@redhat.com>

	* gcc.c-torture/execute/simd-1.c: New.

	* gcc.dg/simd-1.c: New.

	* doc/extend.texi (Vector Extensions): Document that we can
	specify simd types not specifically supported by the hardware.
	Document that simd types can be used as function arguments.
	Document that signness does make a difference in SIMD types.
	Misc cleanups and revisions to the "vector extensions" section.

	* simplify-rtx.c (simplify_subreg): Simplify subregs of vector
	constants.

	* expr.c (vector_mode_valid_p): New.

	* expr.h: Add vector_mode_valid_p.

	* defaults.h (VECTOR_MODE_SUPPORTED_P): Set default.

	* emit-rtl.c (immed_double_const): Do not abort on vectors.

	* c-common.c (type_for_mode): Always build vector nodes regardless
	of VECTOR_MODE_SUPPORTED_P.
	(handle_mode_attribute): Error if we can't emulate a nonexisting
	vector mode.
	(handle_vector_size_attribute): Same.

	* optabs.c (expand_binop): Open-code vector operations.
	(expand_unop): Open-code vector unops.
	(expand_vector_binop): New.
	(expand_vector_unop): New.

	* c-typeck.c (build_binary_op): Allow vectors in binops.
	Allow vectors in conditional operatiors.
	(build_unary_op): Allow vectors in unary minus.

	* config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Conditionalize on
	TARGET_ALTIVEC.

From-SVN: r54727
2002-06-18 01:35:47 +00:00
Richard Henderson
750491fc10 c-common.c (flag_ms_extensions): Move from c++ front end.
* c-common.c (flag_ms_extensions): Move from c++ front end.
        * c-common.h (flag_ms_extensions): Declare.
        * c-decl.c (c_decode_option): Add -fms-extensions.
        (grokfield): Don't accept anonymous structures in ISO C mode;
        accept only unnamed anonymous structures in GNU C mode; accept
        Plan 9 extensions in MS mode.
        * c-parse.in (SAVE_EXT_FLAGS, RESTORE_EXT_FLAGS): Rename from
        SAVE/RESTORE_WARN_FLAGS; add flag_iso frobbing; update all callers.
        (extension): Clear flag_iso.
        * doc/invoke.texi (C Dialect Options): Add -fms-extensions.

        * cp-tree.h, decl2.c (flag_ms_extensions): Move to c-common.

        * g++.dg/ext/anon-struct1.C: New.
        * g++.dg/ext/anon-struct2.C: New.
        * g++.dg/ext/anon-struct3.C: New.
        * gcc.dg/anon-struct-1.c: New.
        * gcc.dg/anon-struct-2.c: New.
        * gcc.dg/anon-struct-3.c: New.
        * gcc.dg/20011008-1.c: Adjust warning text.
        * gcc.dg/20020527-1.c: Add -fms-extensions.

From-SVN: r54670
2002-06-16 12:09:30 -07:00
Richard Henderson
676997cfd2 c-common.c (builtin_define_type_max): New.
* c-common.c (builtin_define_type_max): New.
        (cb_register_builtins): Define __SCHAR_MAX__, __SHRT_MAX__,
        __INT_MAX__, __LONG_MAX__, __LONG_LONG_MAX__, __CHAR_BIT__.

        From Joseph S. Myers:
        * glimits.h: Rewrite to expect the double underscore definitions
        from the compiler.

        * config/alpha/unicosmk.h, config/avr/avr.h, config/h8300/h8300.h,
        config/i386/linux64.h, config/ia64/aix.h, config/ia64/hpux.h,
        config/ia64/ia64.h, config/m68hc11/m68hc11.h, config/m68hc11/m68hc12.h,
        config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
        config/pa/pa.h, config/rs6000/aix43.h, config/rs6000/aix51.h,
        config/rs6000/linux64.h, config/s390/linux.h, config/sh/sh.h,
        config/stormy16/stormy16.h: Don't define any of __SHRT_MAX__,
        __INT_MAX__, __LONG_MAX__, or __LONG_LONG_MAX__.

From-SVN: r54544
2002-06-11 20:06:30 -07:00
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Neil Booth
ceeedfc11a c-common.c (c_common_init): Override cpplib's default warn_long_long setting.
* c-common.c (c_common_init): Override cpplib's default
	warn_long_long setting.
	* c-lex.c (lex_number): Replace with interpret_integer,
	interpret_float, narrowest_unsigned_type and
	narrowest_signed_type, taking advantage of the new
	cpplib functionality.
	* cpperror.c (_cpp_begin_message): If a warning is turned
	into an error, avoid printing "warning:".
	* cppexp.c (cpp_num_sign_extend): New.
	* cppinit.c: Update comment.
	* cpplib.h (cpp_num_sign_extend): New.
	* tree.h: Update comment.
testsuite:
	* gcc.dg/wtr-int-type-1.c, gcc.dg/wtr-suffix-1.c,
	gcc.dg/cpp/paste4.c, gcc.dg/cpp/sysmac2.c:
	Update for mofified diagnostics.
	* gcc.dg/c99-intconst-1.c: No longer fail.

From-SVN: r54180
2002-06-02 19:37:34 +00:00
Neil Booth
a9da2e5b38 * c-common.c (builtin_define_std): Correct logic.
From-SVN: r54089
2002-05-31 06:01:18 +00:00
Osku Salerma
d18b1ed89e c-common.c (c_common_attribute_table): Add "may_alias" entry.
* c-common.c (c_common_attribute_table): Add "may_alias" entry.
        (c_common_get_alias_set): Handle it.
        * doc/extend.texi: Document it.

        * gcc.c-torture/execute/mayalias-1.c: New file.

From-SVN: r54074
2002-05-30 14:28:17 -07:00
Zack Weinberg
11ad4784f3 tree.h: Forward-declare struct realvaluetype.
* tree.h: Forward-declare struct realvaluetype.
	(struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not
	contain it.
	(TREE_REAL_CST_PTR): New accessor.
	(TREE_REAL_CST): Update.
	* real.h: Include machmode.h.
	(realvaluetype): Make it struct realvaluetype, not a typedef.
	(build_real): Prototype here.

	* tree.c: Include real.h.
	(build_real): Allocate the REAL_VALUE_TYPE as a separate
	object in GC memory, set TREE_REAL_CST_PTR to point to it.
	(build_real_from_int_cst): Use build_real.
	* ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a
	REAL_CST.

	* builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c,
	fold-const.c, print-tree.c, real.c, cp/mangle.c, cp/tree.c,
	f/bld.c, f/com.c, f/expr.c, f/target.c, java/decl.c,
	java/jcf-parse.c, java/parse.y, java/typeck.c: Include real.h.
	* Makefile.in, cp/Make-lang.in, f/Make-lang.in,
	java/Make-lang.in: Update dependency lists.

From-SVN: r53959
2002-05-28 17:33:14 +00:00
Roger Sayle
39f2f3c85a c-common.c: Add support for __attribute__((nothrow)) to specify that a function cannot...
* c-common.c: Add support for __attribute__((nothrow)) to specify
	that a function cannot throw an exception (using TREE_NOTHROW).
	(handle_nothrow_attribute): New function to process this attribute.

	* doc/extend.texi: Document the new nothrow function attribute.

2002-05-27  Richard Henderson  <rth@redhat.com>

	* g++.dg/ext/attrib6.C: New test case.

From-SVN: r53940
2002-05-27 21:09:38 +00:00
Neil Booth
630363b435 c-common.c (c_common_init): Always use intmax_t.
* c-common.c (c_common_init): Always use intmax_t.
testsuite:
	* gcc.dg/cpp/arith-2.c: Remove.
	* gcc.dg/cpp/arith-3.c: Don't set std=c99.

From-SVN: r53936
2002-05-27 18:04:58 +00:00
Neil Booth
d94cde01ca * c-common.c (c_common_init): Use intmax_t for now.
From-SVN: r53935
2002-05-27 17:19:44 +00:00
Neil Booth
c9220e3a83 c-common.c (c_common_init): Set CPP arithmetic precision.
* c-common.c (c_common_init): Set CPP arithmetic precision.
	* cppexp.c (cpp_num_part): Move typedef ...
	* cpphash.h: ...here; make unsigned HOST_WIDE_INT.
	* cppinit.c (cpp_create_reader): Default to host long arithmetic.
	(sanity_checks): Update.
testsuite:
	* gcc.dg/cpp/arith-2.c, gcc.dg/cpp/arith-3.c: New tests.
	* gcc.dg/cpp/if-3.c: Remove.

From-SVN: r53911
2002-05-27 05:51:14 +00:00
Neil Booth
81a75f0f43 Makefile.in (C_COMMON_H): Fix.
* Makefile.in (C_COMMON_H): Fix.
	Update other targets.
	* c-common.c: Don't include c-lex.h.
	(builtin_define_with_value): Make static and prototype.
	(builtin_define_std): Move from c-lex.h.
	* c-common.h (init_c_lex): Move from c-lex.h.
	* c-decl.c: Don't include c-lex.h.
	(make_pointer_declarator): Move from c-parse.in.
	* c-lex.c: Don't include c-lex.h.
	* c-lex.h: Remove.
	* c-parse.in: Don't include c-lex.h; include c-pragma.h.
	(make_pointer_declarator): Move to c-decl.c.
	* c-pragma.c: Don't include c-lex.h.
	* c-pragma.h (yydebug, YYDEBUG, parse_in, c_lex): Move from c-lex.h.
	* c-tree.h (make_pointer_declarator): New.
cp:
	* lex.c: Don't include c-lex.h.
	* parse.y, spew.c: Don't include c-lex.h; include c-pragma.h.
doc:
	* passes.texi, tm.texi: Update.
objc:
	* Make-lang.in: Update and correct.
	* objc-act.c: Don't include c-lex.h or cpplib.h.
treelang:
	* treetree.c: Don't include c-lex.h.
config:
	* darwin-c.c: Don't include c-lex.h.
	* c4x/c4x-c.c: Don't include c-lex.h.
	* c4x/t-c4x: Update.
	* i370/i370-c.c: Don't include c-lex.h.
	* i370/t-i370: Update.
	* i960/i960-c.c: Don't include c-lex.h.
	* i960/i960.c: Don't include cpplib.h, c-lex.h or c-pragma.h.
	* i960/t-960bare: Update.
	* i960/t-vxworks: Update.
	* rs6000/rs6000-c.c: Don't include c-lex.h; include c-pragma.h.
	* rs6000/t-darwin: Update.
	* rs6000/t-rs6000-c-rule: Update.
	* v850/v850-c.c: Don't include c-lex.h.
	* v850/v850.c: Don't include c-lex.h or cpplib.h.

From-SVN: r53876
2002-05-25 22:01:55 +00:00
Jason Thorpe
b34c788149 c-common.c (warn_nonnull): Declare.
* c-common.c (warn_nonnull): Declare.
(c_common_attribute_table): Add "nonnull" attribute.
(handle_nonnull_attribute, check_function_nonnull, nonnull_check_p,
check_nonnull_arg, get_nonnull_operand, check_function_arguments,
check_function_arguments_recurse): New functions.
* c-common.h (warn_nonnull): Declare extern.
(check_function_arguments, check_function_arguments_recurse): New
prototypes.
* c-decl.c (c_decode_option): Add -Wnonnull option.
* c-format.c (set_Wformat): Set warn_nonnull if enabling
format checking.
(format_check_context): New structure.
(check_format_info_recurse): Remove recursion and rename to...
(check_format_arg): ...this.  Update comment.
(check_format_info): Use check_function_arguments_recurse.
* c-typeck.c (build_function_call): Call check_function_arguments
instead of check_function_format.
* doc/extend.texi: Document "nonnull" attribute.
* doc/invoke.texi: Docuemnt -Wnonnull option.
* testsuite/gcc.dg/nonnull-1.c: New test.
* testsuite/gcc.dg/nonnull-2.c: New test.

From-SVN: r53790
2002-05-23 15:48:05 +00:00
J"orn Rennecke
2727afb551 * c-common.c (cb_register_builtins): Don't indent '#' of #define.
From-SVN: r53740
2002-05-22 18:39:18 +01:00
Neil Booth
e5f3b786ed re PR preprocessor/6517 (gcc hangs on C compile with multiple "-I-")
PR preprocessor/6517
	* Makefile.in: Update.
	* c-common.c (c_common_post_options): Add preprocessor
	errors to the error count.
	* c-lang.c (c_post_options): Kill.
	(LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
	* hooks.h: Add header guards.
	* langhooks-def.h: Include hooks.h.
	(LANG_HOOKS_POST_OPTIONS): Update.
	* langhooks.h (struct lang_hooks): Update post_options.
	* toplev.c (parse_options_and_default_flags): Update.
cp:
	* cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
	* cp-tree.h (cxx_post_options): Kill.
	* cp-lex.c (cxx_post_options): Kill.
objc:
	* objc-lang.c (objc_post_options): Kill.
	(LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.

From-SVN: r53724
2002-05-22 05:40:22 +00:00
Zack Weinberg
2a1dc0d87e c-common.c (c_common_init): Set options->unsigned_char from flag_signed_char.
* c-common.c (c_common_init): Set options->unsigned_char from
	flag_signed_char.
	(cb_register_builtins): Define __STRICT_ANSI__ and
	__CHAR_UNSIGNED__ here...
	* cppinit.c (init_builtins): Not here.
	(cpp_create_reader): unsigned_char option defaults to 0, not
	!DEFAULT_SIGNED_CHAR.
	(COMMAND_LINE_OPTIONS, cpp_handle_option): Lose -fsigned-char
	and -funsigned-char.

	* cpphash.h (struct spec_nodes): Kill n__STRICT_ANSI__.
	* cpphash.c (_cpp_init_hashtable): Don't set it.
	* cppmacro.c (builtin_macro) [BT_STDC]: Use the language setting
	directly.  Clarify comment.

From-SVN: r53703
2002-05-21 21:55:37 +00:00
Neil Booth
e0322d5ca5 c-common.c (preprocessing_asm): New macro.
* c-common.c (preprocessing_asm): New macro.
	* c-lex.h (builtin_define, builtin_assert): Use pfile.
doc:
	* tm.texi: Update.
config/alpha:
	* alpha.h (CPLUSPLUS_CPP_SPEC): Remove.
	(CPP_SPEC): Simplify.
	(TARGET_CPU_CPP_BUILTINS): Update.
	* freebsd.h (TARGET_OS_CPP_BUILTINS): New.
	(CPP_SPEC): Simplify.
	* linux.h (CPLUSPLUS_CPP_SPEC): Remove.
	(TARGET_OS_CPP_BUILTINS): Update.
	* osf.h (CPP_XFLOAT_SPEC): Kill.
	(TARGET_OS_CPP_BUILTINS): Update.
	(CPP_SUBTARGET_SPEC, SUBTARGET_EXTRA_SPECS): Simplify.
	* osf5.h (CPP_XFLOAT_SPEC): Kill.
	* vms.h (CPP_SUBTARGET_SPEC): Kill.
	(TARGET_OS_CPP_BUILTINS): Update.

From-SVN: r53641
2002-05-19 21:53:53 +00:00
Jason Thorpe
e964a55607 c-common.c (c_common_post_options): Warn if -Wformat-zero-length is used without -Wformat.
* c-common.c (c_common_post_options): Warn if -Wformat-zero-length
is used without -Wformat.
* c-common.h (warn_format_zero_length): Declare extern.
* c-decl.c (warn_options): Add "format-zero-length".
* c-format.c (warn_format_zero_length): Declare.
(set_Wformat): Set warn_format_zero_length for -Wformat.
(check_format_info): Only warn about zero-length formats if
warn_format_zero_length is true.  Include the format type
name in the warning message.
* doc/invoke.texi: Document -Wformat-zero-length.
* testsuite/gcc.dg/format/zero-length-1.c: New test.

From-SVN: r53592
2002-05-18 19:02:03 +00:00
Neil Booth
bdcae02bc4 c-common.c (c_common_init_options): Use C89 for Objective-C, and set the options flag.
* c-common.c (c_common_init_options): Use C89 for Objective-C,
	and set the options flag.
	* cppinit.c (lang_flags): Remove objc.
	(lang_defaults): Remove OBJC and OBJCXX.
	(set_lang): Update.
	(COMMAND_LINE_OPTIONS): Remove -+ and -lang-objc++.
	(cpp_handle_option): Remove -+ and -lang-objc++.
	For ObjC, just set a flag.
	(print_help): Update.
	* cpplib.h (enum c_lang): Remove CLK_OBJC and CLK_OBJCXX.

From-SVN: r53566
2002-05-17 19:37:43 +00:00
Neil Booth
748d29c1fc c-common.c (cb_register_builtins): Handle more built-ins here rather than in gcc.c specs.
* c-common.c (cb_register_builtins): Handle more built-ins
	here rather than in gcc.c specs.
	* gcc.c (cpp_unique_options): Move many built-ins to c-common.c.
	(cpp_options): Pass -O flags even when only preprocessing.
	* toplev.c (set_fast_math_flags): New prototype.
	(fast_math_flags_set_p): New.
	(set_no_fast_math_flags): Remove.
	(decode_f_option): Update.
	* toplev.h (set_fast_math_flags): Update.
	(fast_math_flags_set_p): New.
	(set_no_fast_math_flags): Remove.
config:
	* c4x/c4x.c (c4x_override_options): Update.

From-SVN: r53526
2002-05-16 19:09:40 +00:00
Zack Weinberg
5279d7394e c-common.c (STDC_0_IN_SYSTEM_HEADERS, [...]): Default-define here.
* c-common.c (STDC_0_IN_SYSTEM_HEADERS, REGISTER_PREFIX):
	Default-define here.
	(builtin_define_with_value): Can now wrap the expansion in
	quotation marks if such is wanted.
	(cb_register_builtins): Update calls to	builtin_define_with_value.
	Define __REGISTER_PREFIX__, __USER_LABEL_PREFIX__, and __VERSION__
	here.
	(c_common_init): Set options->stdc_0_in_system_headers.
	* c-lex.h: Update prototype of builtin_define_with_value.
	* cppdefault.h: Remove default definitions of USER_LABEL_PREFIX
	and REGISTER_PREFIX.

	* cppinit.c (VERS, ULP, C, X): Kill.
	(builtin_array): Remove entries for __VERSION__,
	__USER_LABEL_PREFIX__, __REGISTER_PREFIX__, and
	__HAVE_BUILTIN_SETJMP__.  Make __STDC__ always a builtin, not
	a constant.
	(init_builtins): Kill off a bunch of now-dead code.
	(COMMAND_LINE_OPTIONS): Remove -fleading-underscore and
	-fno-leading-underscore.
	(cpp_handle_option): Remove code to set user_label_prefix.
	(cpp_post_options): Likewise.

	* cpplib.h (struct cpp_options): Remove user_label_prefix.
	(stdc_0_in_system_headers): New.
	* cppmacro.c (builtin_macro): Check CPP_OPTION (pfile,
	stdc_0_in_system_headers) too to decide the value of __STDC__.

	* tradcpp.c (user_label_prefix): Kill.
	(main): Remove code handling -f(no-)leading-underscore.
	(initialize_builtins): Don't define __REGISTER_PREFIX__
	or __USER_LABEL_PREFIX__.
	(install_value): Wrap compound statement in dummy loop so the
	macro works properly in an if statement.

From-SVN: r53525
2002-05-16 19:03:02 +00:00
Zack Weinberg
a11eba953e c-parse.in (MODIFIED_WCHAR_TYPE): New macro.
* c-parse.in (MODIFIED_WCHAR_TYPE): New macro.
	(c_common_nodes_and_builtins): Use it.
	(builtin_define_with_value): New function.
	(cb_register_builtins): Define __SIZE_TYPE__,
	__PTRDIFF_TYPE__, __WCHAR_TYPE__, and __WINT_TYPE__ here,
	using builtin_define_with_value.  Use consistent notation when
	defining __GXX_WEAK__.
	(WCHAR_TYPE_SIZE): Don't redefine.
	(combine_strings): Don't use WCHAR_TYPE_SIZE.

	* cppdefault.h: Don't provide defaults for SIZE_TYPE,
	PTRDIFF_TYPE, WCHAR_TYPE, or WINT_TYPE.
	* cppinit.c (builtin_array): Remove entries for __SIZE_TYPE__ etc.
	* tradcpp.c (initialize_builtins): Likewise.
	* gcc.c (cpp_unique_options): Don't muck with __WCHAR_TYPE__.

	* c-lex.h (builtin_define_with_value): Prototype.
	* system.h: Poison NO_BUILTIN_SIZE_TYPE, NO_BUILTIN_WCHAR_TYPE,
	NO_BUILTIN_PTRDIFF_TYPE, and NO_BUILTIN_WINT_TYPE.
	* doc/tm.texi: Remove mention of NO_BUILTIN_SIZE_TYPE etc.

	* config/avr/avr.h, config/h8300/h8300.h, config/i386/i386.h,
	config/ia64/ia64.h, config/mips/dec-osf1.h, config/mips/iris6.h,
	config/mips/linux.h, config/mips/mips.h, config/mips/netbsd.h,
	config/mips/osfrose.h, config/mips/sni-svr4.h, config/rs6000/aix51.h,
	config/s390/linux.h, config/sh/sh.h, config/sh/sh64.h,
	config/sparc/linux64.h, config/sparc/netbsd-elf.h,
	config/sparc/sol2-bi.h, config/sparc/sparc.h:
	Do not define NO_BUILTIN_SIZE_TYPE etc.  Remove all references
	to __SIZE_TYPE__ etc from all spec strings. When this makes
	extra specs empty, delete them.

From-SVN: r53472
2002-05-15 05:30:01 +00:00
Neil Booth
12a41c224d Makefile.in (c-common.o, cppinit.o): Update.
* Makefile.in (c-common.o, cppinit.o): Update.
	* c-common.c: Include except.h.
	(cb_register_builtins): Handle __USING_SJLJ_EXCEPTIONS__.
	Call TARGET_CPU_CPP_BUILTINS and TARGET_OS_CPP_BUILTINS.
	* cppinit.c (__USING_SJLJ_EXCEPTIONS): Not here.
	* defaults.h (TARGET_OS_CPP_BUILTINS, TARGET_CPU_CPP_BUILTINS,
	CPP_PREDEFINES): Handle here.
config:
	* alpha/alpha-interix.h, alpha/gnu.h, alpha/linux.h,
	alpha/netbsd.h, alpha/openbsd.h, alpha/osf.h, alpha/unicosmk.h,
	alpha/vms.h, alpha/vxworks.h: Remove CPP_PREDEFINES, define
	TARGET_OS_CPP_BUILTINS.
	* alpha/alpha.h (TARGET_CPU_CPP_BUILTINS): Define.
	(CPP_SPEC, EXTRA_SPECS): Update.
	(CPP_AM_BWX_SPEC, CPP_AM_MAX_SPEC, CPP_AM_FIX_SPEC,
	CPP_AM_CIX_SPEC, CPP_IM_EV4_SPEC, CPP_IM_EV5_SPEC,
	CPP_IM_EV6_SPEC, CPP_CPU_EV4_SPEC, CPP_CPU_EV5_SPEC,
	CPP_CPU_EV56_SPEC, CPP_CPU_PCA56_SPEC, CPP_CPU_EV6_SPEC,
	CPP_CPU_EV67_SPEC, CPP_CPU_DEFAULT_SPEC, CPP_CPU_SPEC): Remove.
doc:
	* tm.texi (TARGET_REGISTER_CPP_BUILTINS): Remove.
	(TARGET_OS_CPP_BUILTINS, TARGET_CPU_CPP_BUILTINS): Define.

From-SVN: r53410
2002-05-13 05:57:38 +00:00
Neil Booth
3df892916c Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c (flag_iso, flag_undef, cb_register_builtins,
	builtin_define_std): New.
	(c_common_init): Register CPP builtins callback.
	* c-common.h (flag_iso, flag_undef): New.
	* c-decl.c (c_decode_option): Set flag_iso and flag_undef.
	* c-lex.c: Don't include target.h.
	(cb_register_builtins): Move to c-common.c.
	(init_c_lex): Don't register hook here.
	* c-lex.h (builtin_define, builtin_assert, builtin_define_std): New.
	(cpp_define, cpp_assert): Remove.
	* gcc.c (cc1_options): Pass -undef to front end.
	* target-def.h (TARGET_REGISTER_CPP_BUILTINS): Remove.
	(TARGET_INITIALIZER): Update.
	* target.h (struct cpp_reader): Don't predeclare.
	(struct gcc_target): Remove cpp builtin hook.
	* tree.c (default_register_cpp_builtins): Remove.
cp:
	* cp-tree.h (flag_ansi): Remove.
	* decl2.c (flag_ansi): Remove.
	(cxx_decode_option): Set flag_iso and flag_undef.
doc:
	* tm.texi: Update.

From-SVN: r53349
2002-05-09 22:48:36 +00:00
Neil Booth
44a147ad2e c-common.c (c_common_init): Set options->unsigned_wchar.
* c-common.c (c_common_init): Set options->unsigned_wchar.
	* cppinit.c (cpp_create_reader): Default unsigned_wchar,
	group target dependencies.
	(init_builtins, cpp_handle_option): Update.
	* cpplex.c (cpp_interpret_charconst): Update.
	* cpplib.h (struct cpp_options): Add unsigned_wchar, rename
	signed_char to unsigned_char, group target dependencies.
	* defaults.h (WCHAR_UNSIGNED): Remove.
	* system.h (WCHAR_UNSIGNED, MAX_CHAR_TYPE_SIZE): Poison.
config:
	* freebsd.h, interix.h, alpha/freebsd.h, arm/freebsd.h,
	i386/386bsd.h, i386/beos-elf.h, i386/bsd386.h, i386/cygwin.h,
	i386/djgpp.h, i386/freebsd-aout.h, i386/i386-interix.h,
	i386/win32.h, ia64/freebsd.h, mips/netbsd.h, rs6000/freebsd.h,
	sh/elf.h, sh/sh.h, sparc/freebsd.h: Remove WCHAR_UNSIGNED.
doc:
	* tm.texi: Remove MAX_CHAR_TYPE_SIZE.

From-SVN: r53271
2002-05-07 21:07:24 +00:00
Neil Booth
a5a49440f7 c-common.c (warn_multichar): New.
* c-common.c (warn_multichar): New.
	(c_common_init): Set CPP's warn_multichar.
	* c-common.h (warn_multichar): New.
	* c-decl.c (warn_multichar): Remove.
	* c-lex.c (lex_charconst): Update.
	* c-tree.h (warn_multichar): Remove.
	* cppexp.c (eval_token): Sign-extend charconst value.
	* cppinit.c (cpp_create_reader): Set warn_multichar.
	* cpplex.c (cpp_interpret_charconst): Don't sign-extend
	each character.  Update prototype.  Sign-extend the result.
	* cpplib.h: Fix conditions.
	(struct cpp_options): Add new warning flag.
	(cpp_interpret_charconst): Update prototype.
cp:
	* Make-lang.in (decl2.o): Update.
	* cp-tree.h (warn_multichar): Remove.
	* decl2.c: Include c-common.h.
	(warn_multichar): Remove.
doc:
	* cpp.texi: Update documentation.
testsuite:
	* gcc.dg/cpp/charconst-3.c: Correct tests accordingly.

From-SVN: r53240
2002-05-06 22:53:10 +00:00
Neil Booth
2443d4e110 c-common.c (c_common_init): Set up CPP arithmetic.
* c-common.c (c_common_init): Set up CPP arithmetic.
	* cppinit.c (cpp_create_reader): Default CPP arithmetic to
	something reasonable for the host.
	(sanity_checks): Add checks.
	(cpp_read_main_file): Call sanity_checks() from here...
	(cpp_post_options): ... not here.
	* cpplex.c (cpp_interpret_charconst): Get max_chars right.
	* cpplib.h (struct cpp_options): New member int_precision.
testsuite:
	* gcc.dg/cpp/charconst.c: Update tests.

From-SVN: r53186
2002-05-05 17:05:09 +00:00
Bernd Schmidt
fbe5eb6d0a Initial P4 SSE2 builtin support
From-SVN: r52903
2002-04-29 18:40:47 +00:00
Richard Henderson
b84a387434 c-common.c (fix_string_type): Split out of ...
* c-common.c (fix_string_type): Split out of ...
        (combine_strings): ... here.  Take a varray, not a tree list.
        (c_expand_builtin_printf): Use fix_string_type.
        * c-common.h: Update decls.
        * c-parse.in (string): Remove.  Update all uses to use STRING
        instead, and not call combine_strings.
        (yylexstring): New.
        (_yylex): Use it.
        * c-typeck.c (simple_asm_stmt): Don't call combine_strings.
        (build_asm_stmt): Likewise.
        * objc/objc-act.c (my_build_string): Use fix_string_type.
        (build_objc_string_object): Build varray for combine_strings.

        * parse.y (string): Remove.  Update all uses to use STRING
        instead, and not call combine_strings.
        * rtti.c (tinfo_name): Use fix_string_type.
        * semantics.c (finish_asm_stmt): Don't call combine_strings.
        * spew.c (yylexstring): New.
        (read_token): Use it.

	* g++.dg/parse/concat1.C: New.
	* gcc.dg/concat2.c: New.

From-SVN: r52790
2002-04-26 00:40:12 -07:00
Richard Henderson
5c5b228389 re PR c/2098 (compare with unsigned variable - no error reporting)
PR c/2098
        * c-common.c (shorten_compare): Simplfy conditions leading to
        the generation of a warning.

	* gcc.dg/compare6.c: New.

From-SVN: r52778
2002-04-25 19:15:52 -07:00
Neil Booth
349ae713cb attribs.c (c_common_attribute_table): Move table and handlers to c-common.c.
* attribs.c (c_common_attribute_table): Move table and handlers
	to c-common.c.
	(format_attribute_table, lang_attribute_table,
	lang_attribute_common): Remove.
	(init_attributes): Replace NULL pointers with pointers to the
	empty table.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_noinline_attribute, handle_always_inline_attribute,
	handle_used_attribute, handle_unused_attribute,
	handle_const_attribute, handle_transparent_union_attribute,
	handle_constructor_attribute, handle_destructor_attribute,
	handle_mode_attribute, handle_section_attribute,
	handle_aligned_attribute, handle_weak_attribute,
	handle_alias_attribute, handle_visibility_attribute,
	handle_no_instrument_function_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute,
	handle_deprecated_attribute, handle_vector_size_attribute,
	vector_size_helper): Move to c-common.c.
	* c-common.c (c_common_attribute_table,
	handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_noinline_attribute, handle_always_inline_attribute,
	handle_used_attribute, handle_unused_attribute,
	handle_const_attribute, handle_transparent_union_attribute,
	handle_constructor_attribute, handle_destructor_attribute,
	handle_mode_attribute, handle_section_attribute,
	handle_aligned_attribute, handle_weak_attribute,
	handle_alias_attribute, handle_visibility_attribute,
	handle_no_instrument_function_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute,
	handle_deprecated_attribute, handle_vector_size_attribute,
	vector_size_helper): Move from attribs.c.
	* c-common.h (c_common_attribute_table,
	c_common_format_attribute_table): New.
	* c-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Redefine.
	* langhooks-def.h (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): 3 new attribute hooks.
	* target-def.h (TARGET_ATTRIBUTE_TABLE): Default to NULL.
	* target.h: Update comment.
	* tree.c (default_target_attribute_table): Remove.
	* tree.h (default_target_attribute_table, format_attribute_table,
	lang_attribute_table, lang_attribute_common): Remove.
ada:
	* misc.c (gnat_init): Don't set lang_attribute_common.
cp:
	* cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE):
	Redefine.
	* cp-tree.h (cp_attribute_table): Rename.
	* decl.c (lang_attribute_table): Remove declaration.
	(cxx_init_decl_processing): Don't set it.
	* tree.c (cp_attribute_table): Rename.
objc:
	* objc-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Redefine.

From-SVN: r52730
2002-04-24 20:41:04 +00:00
Neil Booth
ab393bf171 builtins.c: Include langhooks.h.
* builtins.c: Include langhooks.h.
	(lang_type_promotes_to): Remove.
	(expand_builtin_va_arg): Use new hook.
	* c-common.c (c_common_nodes_and_builtins): Don't set hook.
	(simple_type_promotes_to): Move to c-typeck.c.
	* c-common.h (simple_type_promotes_to): Remove.
	* c-decl.c (duplicate_decls, grokdeclarator): Update.
	* c-format.c: Include langhooks.h.
	(check_format_types): Update.
	* c-tree.h (c_type_promotes_to): New.
	* c-typeck.c (c_type_promotes_to): Move from c-common.c.
	(type_lists_compatible_p): Update.
	* langhooks-def.h (lhd_type_promotes_to): New.
	(LANG_HOOKS_TYPE_PROMOTES_TO): New.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Update.
	* langhooks.c (lhd_type_promotes_to): New.
	* langhooks.h (struct lang_hooks_for_types): New hook.
	* tree.h (lang_type_promotes_to): Remove.
cp:
	* call.c (convert_type_from_ellipsis): Rename, update.
	* cp-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.
	* cp-tree.h (convert_type_from_ellipsis): Rename.
	* decl.c (cxx_init_decl_processing): Don't set hook.
objc:
	* objc-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.

From-SVN: r52512
2002-04-19 06:22:18 +00:00
Mark Mitchell
b2123dc0d8 c-common.h (STMT_EXPR_NO_SCOPE): New macro.
* c-common.h (STMT_EXPR_NO_SCOPE): New macro.
	* c-common.c (c_expand_expr): Respect STMT_EXPR_NO_SCOPE.
	* tree.h (expand_start_stmt_expr): Update prototype.
	* stmt.c (expand_start_stmt_expr): Add has_scope parameter.
	* tree-inline.c (expand_call_inline): Set STMT_EXPR_NO_SCOPE
	on the STMT_EXPR created for the inline function.

	* trans.c (tree_transform): Add has_scope argument to
	expand_start_stmt_expr.

	* com.c (ffecom_expr_power_integer): Add has_scope argument to
	call to expand_start_stmt_expr.

	* init.c (begin_init_stmts): Remove commented out code.
	(finish_init_stmts): Set STMT_EXPR_NO_SCOPE.
	* semantics.c (begin_gobal_stmt_expr): Adjust call to
	expand_start_stmt_expr.

From-SVN: r52395
2002-04-17 01:47:36 +00:00
Toon Moene
03f104725f c-decl.c (c_init_decl_processing): Move generation of decls for g77_integer_type_node and friends from here ...
2002-04-10  Toon Moene  <toon@moene.indiv.nluug.nl>

	* c-decl.c (c_init_decl_processing): Move generation of
	decls for g77_integer_type_node and friends from here ...
	* c-common.c (c_common_nodes_and_builtins): ... to here.

From-SVN: r52141
2002-04-10 19:49:52 +00:00
Jason Merrill
b014888471 toplev.c (flag_no_inline, [...]): Default to 2.
* toplev.c (flag_no_inline, flag_really_no_inline): Default to 2.
        (parse_options_and_default_flags): Set them appropriately.
        * c-common.c (c_common_post_options): Don't set flag_really_no_inline.

From-SVN: r51959
2002-04-06 11:57:23 -05:00
Neil Booth
78ef5b895f c-common.c (truthvalue_conversion): Rename, update.
* c-common.c (truthvalue_conversion): Rename, update.
	* c-common.h (c_common_truthvalue_conversion): New.
	* c-convert.c (convert): Update.
	* c-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
	* c-parse.in (expr_no_commas, if_prefix, select_or_iter_stmt): Update.
	* c-typeck.c (build_binary_op, build_unary_op,
	build_conditional_expr): Update.
	* fold-const.c (constant_boolean_node, fold): Use langhook.
	* langhooks-def.h (LANGHOOK_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
	* stmt.c (expand_decl_cleanup): Use langhook.
	* tree.h (truthvalue_conversion): Remove.
ada:
	* gigi.h (truthvalue_conversion): Rename.
	* misc.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
	* trans.c (tree_transform): Update.
	* utils2.c (truthvalue_conversion): Rename, update.
	(build_binary_op, build_unary_op): Update.
cp:
	* cp-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
	* cvt.c: Update comment.
	* init.c (expand_cleanup_for_base): Update.
	* semantics.c (finish_parenthesized_expr): Update.
	* typeck.c (cp_truthvalue_conversion): Update.
f:
	* com.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
	(truthvalue_conversion): Rename.  Update.  Make static.
	(ffecom_truth_value): Update.
java:
	* expr.c (truthvalue_conversion): Rename.  Update.
	(expand_compare): Update.
	* java-tree.h (java_truthvalue_conversion): New.
	* lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
objc:
	* objc-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.

From-SVN: r51880
2002-04-04 22:19:58 +00:00
Neil Booth
ceef8ce4b4 c-common.c (unsigned_conversion_warning, [...]): Use new hooks.
* c-common.c (unsigned_conversion_warning, convert_and_check,
	unsigned_type, signed_type, shorten_compare,
	c_common_get_alias_set, c_common_nodes_and_builtins): Use new hooks.
	(unsigned_type, signed_type, signed_or_unsigned_type): Rename.
	* c-common.h (unsigned_type, signed_type, signed_or_unsigned_type):
	New.
	* c-decl.c (grokdeclarator): Update.
	* c-format.c (check_format_types): Update.
	* c-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	* c-typeck.c (build_binary_op, convert_for_assignment): Update.
	* convert.c (convert_to_integer): Use new hooks.
	* expmed.c (make_tree): Use new hooks.
	* expr.c (store_expr): Use new hooks.
	* fold-const.c (operand_equal_for_comparison_p, build_range_check,
	all_ones_mask_p, unextend, fold): Use new hooks.
	* langhooks.h (struct lang_hooks_for_types): New hooks.
	* tree.h (signed_or_unsigned_type, signed_type,
	unsigned_type): Remove.
ada:
	* gigi.h (unsigned_type, signed_type, signed_or_unsigned_type):
	Rename.
	* misc.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	* trans.c (tree_transform, convert_with_check): Update.
	* utils.c (unsigned_type, signed_type, signed_or_unsigned_type):
	Rename.
cp:
	* cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	* decl.c (grokdeclarator): Update.
	* mangle.c (write_integer_cst): Update.
	* typeck.c (build_binary_op): Update.
f:
	* com.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	(unsigned_type, signed_type, signed_or_unsigned_type): Rename.
java:
	* expr.c (build_java_binop): Update.
	* java-tree.h (java_signed_type, java_unsigned_type,
	java_signed_or_unsigned_type): Update.
	* lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	* parse.y (patch_binop): Update.
	* typeck.c (signed_or_unsigned_type, unsigned_type,
	signed_type): Update.
objc:
	* objc-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.

From-SVN: r51684
2002-04-01 08:46:10 +00:00
Neil Booth
48a7a23514 c-common.c (c_unsafe_for_reeval): Rename.
* c-common.c (c_unsafe_for_reeval): Rename.
	* c-common.h (c_unsafe_for_reeval): Rename.
	* c-decl.c (finish_incomplete_decl): Rename.
	(c_init_decl_processing): Don't set langhook.
	* c-lang.c (LANG_HOOKS_FINISH_INCOMPLETE_DECL,
	LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
	* c-objc-common.c (c_objc_common_init): Don't set langhook.
	* c-tree.h (finish_incomplete_decl): Rename.
	* langhooks-def.h (lhd_unsafe_for_reeval): New.
	(LANG_HOOKS_FINISH_INCOMPLETE_DECL, LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_unsafe_For_reeval): New.
	* langhooks.h (struct langhooks): New hooks.
	* toplev.c (incomplete_decl_finalize_hook): Remove.
	(wrapup_global_declarations): Update.
	* tree.c (lang_unsafe_for_reeval): Remove.
	(unsafe_for_reeval): Update.
	* tree.h (lang_unsafe_for_reeval, incomplete_decl_finalize_hook):
	Remove.
ada:
	* gigi.h (finish_incomplete_decl): Rename.
	* misc.c (LANG_HOOKS_FINISH_INCOMPLETE_DECL): Redefine.
	* utils.c (gnat_init_decl_processing): Don't set hook.
	(finish_incomplete_decl): Rename.
cp:
	* cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
	* lex.c (cxx_init): Don't set hook.
objc:
	* objc-lang.c (LANG_HOOKS_FINISH_INCOMPLETE_DECL,
	LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.

From-SVN: r51673
2002-03-31 22:40:57 +00:00
Neil Booth
b0c4822985 Makefile.in (convert.o, [...]): Update.
* Makefile.in (convert.o, calls.o, expmed.o): Update.
	* attribs.c (handle_mode_attribute, handle_vector_size_attribute):
	Use new hooks.
	* builtin-types.def (BT_PTRMODE): Update.
	* c-common.c (type_for_size): Rename c_common_type_for_size.
	(type_for_mode): Similarly.
	(shorten_compare, pointer_int_sum, c_common_nodes_and_builtins):
	Use new hook.
	* c-bommon.h (c_common_type_for_size, c_common_type_for_mode): New.
	* c-decl.c (finish_enum, build_enumerator): Use new hooks.
	* c-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* c-typeck.c (common_type, comptypes, default_conversion):
	Use new hooks.
	* calls.c: Include langhooks.h.
	(emit_library_call_value_1): Use new hooks.  Avoid redundant
	calls.
	* convert.c: Include langhooks.h
	(convert_to_pointer, convert_to_integer): Use new hooks.
	* except.c (init_eh): Similarly.
	* expmed.c: Include langhooks.h.
	(expand_mult_add): Use new hooks.
	* expr.c (store_expr, store_constructor, expand_expr, do_jump,
	try_casesi): Similarly.
	* fold-const.c (optimize_bit_field_compare, make_range,
	decode_field_reference, fold_truthop, fold): Similarly.
	* function.c (assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack): Similarly.
	* langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE,
	LANG_HOOKS_TYPE_FOR_SIZE): New.
	(LANG_HOOKS_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New hooks.
	* stmt.c (expand_decl_cleanup, emit_case_nodes): Use new hooks.
	* tree.c (get_unwidened, get_narrower): Similarly.
	* tree.h (type_for_mode, type_for_size): Remove.
	* varasm.c (force_const_mem): Use new hooks.
ada:
	* gigi.h (type_for_size, type_for_mode): Rename.
	* misc.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* trans.c (tree_transform): Update.
	* utils.c (gnat_init_decl_processing, init_gigi_decls,
	builtin_function, float_type_for_size, signed_or_unsigned_type,
	build_vms_descriptor, unchecked_convert): Update.
	(type_for_mode, type_for_size): Rename.
	* utils2.c (nonbinary_modular_operation): Update.
cp:
	* cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
	* decl.c (finish_enum): Similarly.
	* error.c (dump_type): Similarly.
	* lex.c (cxx_init): Similarly.
	* mangle.c (write_builtin_type): Similarly.
	* typeck.c (comptypes): Similarly.
f:
	* com.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	(type_for_mode, type_for_size): Rename.
	(signed_or_unsigned_type, signed_type, truthvalue_conversion,
	unsigned_type):	Use new hooks.
java:
	* Make-lang.in (builtins.o): Update.
	* boehm.c (get_boehm_type_descriptor): Update.
	* builtins.c: Include langhooks.h.
	* decl.c (java_init_decl_processing): Update.
	* java-tree.h (java_type_for_mode, java_type_for_size): New.
	* lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.
	* typeck.c (type_for_mode, type_for_size): Update.
objc:
	* objc-act.c (handle_impent): Update.
	* objc-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.

From-SVN: r51571
2002-03-29 21:46:27 +00:00
Neil Booth
c9d892a83f c-common.c (c_expand_expr): Fix prototype.
* c-common.c (c_expand_expr): Fix prototype.
	* c-common.h (c_expand_expr): Always declare, update.
	* c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
	* c-objc-common.c (c_objc_common_init): No global hook.
	* expr.c (expand_expr): Use langhook.
	* expr.h (enum expand_modifier): Conditionally declare.
	* langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_expand_expr): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (lang_expand_expr_t, lang_expand_expr): Delete.
	(lang_independent_init): Don't default hook.
ada:
	* misc.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
	(gnat_init): Don't set hook.
	(gnat_expand_expr): Fix prototype.
cp:
	* cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
	* cp-tree.h (init_cplus_expand): Remove.
	(cxx_expand_expr): New.
	* expr.c (cplus_expand_expr): Rename cxx_expand_expr,
	fix prototype.
	(init_cplus_expand): Remove.
	* lex.c (cxx_init): Don't call init_cplus_expand.
java:
	* expr.c (java_lang_expand_expr): Rename java_expand_expr,
	fix prototype.
	* java-tree.h (java_lang_expand_expr): Similarly.
	* lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
	(java_init): Don't set hook.
objc:
	* objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.

From-SVN: r51462
2002-03-27 18:28:06 +00:00
Neil Booth
aaf9320682 Removal of separate preprocessor cpp0.
* Makefile.in (GCC_PASSES, STAGESTUFF, LIBCPP_OBJS,
	cpp0, install-common): Update.
	* c-common.c (flag_preprocess_only): New.
	(c_common_init): Preprocess for -E.
	* c-common.h (flag_preprocess_only): New.
	* c-decl.c (c_decode_option): Handle -E, and -std=c++98.
	* c-objc-common.c (c_init_decl_processing): Exit quickly
	for NULL return from c_common_init.
	* cpplib.h (cpp_preprocess_file): New.
	* cppmain.c (main, general_init, pfile, progname): Remove.
	(do_preprocessing): Rename cpp_preprocess_file, don't call
	cpp_finish.  Don't close stdout here.
	(setup_callbacks): Update prototype.
	* gcc.c (trad_capable_cpp, cpp_unique_options, default_compilers):
	Update.
	* tradcpp.c (main): Ignore -quiet.
cp:
	* decl2.c (cxx_decode_option): Handle -E.
	* lang-specs.h (default_compilers): Preprocess with cc1plus.
	* lex.c (cxx_init): Exit quickly if c_common_init returns NULL.
objc:
	* lang-specs.h (default_compilers): Preprocess with cc1obj.

Co-Authored-By: Aldy Hernandez <aldyh@redhat.com>

From-SVN: r51256
2002-03-24 12:27:45 +00:00
Aldy Hernandez
2cb921f417 langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Check flag_really_no_inline instead of optimize == 0.
2002-03-21  Aldy Hernandez  <aldyh@redhat.com>

        * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Check
        flag_really_no_inline instead of optimize == 0.

        * c-objc-common.c (c_cannot_inline_tree_fn): Same.

        * cp/tree.c (cp_cannot_inline_tree_fn): Same.

        * flags.h (flag_really_no_inline): New.

        * c-common.c (c_common_post_options): Initialzie
        flag_really_no_inline.

        * toplev.c (flag_really_no_inline): New.

From-SVN: r51146
2002-03-21 23:15:38 +00:00
Neil Booth
43577e6bd7 Makefile.in (fold-const.o, [...]): Update.
* Makefile.in (fold-const.o, stor-layout.o, stmt.o,
	sdbout.o, profile.o): Update.
	* c-common.c (c_common_nodes_and_builtins): Use pushdecl
	langhook.
	* c-common.h (gettags): Move here from tree.h.
	* c-tree.h (pushdecl, pushlevel, poplevel, set_block,
	insert_block, getdecls, kept_level_p, global_bindings_p): New.
	* dbxout.c (dbxout_init): Use getdecls langhook.
	* expr.c (expand_expr): Use insert_block langhook.
	* fold-const.c: Include langhooks.h.
	(fold_range_test, fold_binary_op_with_conditional_arg,
	fold): Use global_bindings_p langhook.
	* integrate.c (expand_inline_function): Use insert_block langhook.
	* langhooks-def.h (LANG_HOOKS_DECLS, LANG_HOOKS_PUSHLEVEL,
	LANG_HOOKS_POPLEVEL, LANG_HOOKS_GLOBAL_BINDINGS_P,
	LANG_HOOKS_INSERT_BLOCK, LANG_HOOKS_SET_BLOCK, LANG_HOOKS_PUSHDECL,
	LANG_HOOKS_GETDECLS): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_clear_binding_stack): Use global_bindings_p
	langhook.
	* langhooks.h (struct lang_hooks_for_decls): New.
	(struct lang_hooks): Update.
	* profile.c: Include langhooks.h.
	(output_func_start_profiler): Use new langhooks.
	* sdbout.c: Include langhooks.h.
	(sdbout_init, sdbout_finish): Use getdecls langhook.
	* stmt.c: Include langhooks.h.
	(expand_fixup, fixup_gotos): Use new langhooks.
	* stor-layout.c: Include langhooks.h.
	(variable_size): Use global_bindings_p langhook.
	* toplev.c (compile_file): Use getdecls langhook.
	* tree-inline.c (remap_block): Use insert_block langhook.
	* tree.h (pushdecl, pushlevel, poplevel, set_block, gettags,
	insert_block, getdecls, kept_level_p, global_bindings_p): Remove.
cp:
	* cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
	insert_block, getdecls, global_bindings_p): New.
java:
	* cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
	insert_block, getdecls, kept_level_p, global_bindings_p): New.
f:
	* cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
	insert_block, getdecls, global_bindings_p): New.

From-SVN: r51136
2002-03-21 18:39:29 +00:00
Eric Botcazou
312687cfa8 re PR c/5354 (function call with two statement expressions yields incorrect result)
PR c/5354
        * c-common.c (c_expand_expr): Preserve result of a statement
        expression if needed.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r51121
2002-03-21 01:39:18 -08:00
Neil Booth
7afff7cfb0 Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c: Include langhooks.h.
	(inline_forbidden_p): Use new hook.
	* diagnostic.c: Include langhooks.h.
	(format_with_decl, announce_function,
	default_print_error_function): Use new hook.
	* dwarf2out.c (dwarf2_name): Use new hook.
	* function.c: Include langhooks.h.
	(init_function_start): Use new hook.
	* langhooks-def.h (lhd_decl_printable_name): New.
	(LANGHOOKS_DECL_PRINTABLE_NAME): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_decl_printable_name): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (decl_name, decl_printable_name): Remove.
	(open_dump_file): Use new hook.
	(process_options): Remove old hook.
	* tree.h (decl_printable_name): Remove.
ada:
	* misc.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(gnat_init): Remove old hook.
cp:
	* cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	* cp-tree.h (lang_printable_name): Rename.
	* error.c (lang_decl_name): Use new hook.
	* lex.c (cxx_init): Remove old hook.
	* pt.c (tsubst_expr): Use new hook.
	* tree.c (lang_printable_name): Rename.
f:
	* com.c (lang_printable_name): Rename.
	(LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(ffe_init): Don't use old hook.
java:
	* decl.c (start_java_method): Use new hook.
	* lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(java_init): Remove old hook.
objc:
	* objc-act.c (objc_init): Remove old hook.
	(objc_printable_name): Export.
	* objc-act.h (objc_printable_name): New.
	* objc-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.

From-SVN: r51066
2002-03-20 07:58:41 +00:00
Mark Mitchell
6e4ae815bd c-common.c (statement_code_p): Handle CLEANUP_STMT.
* c-common.c (statement_code_p): Handle CLEANUP_STMT.
	* c-common.def (CLEANUP_STMT): New tree node.
	* c-common.h (CLEANUP_DECL): New macro.
	(CLEANUP_EXPR): Likewise.
	* c-semantics.c (expand_stmt): Handle CLEANUP_STMT.
	* tree-dump.c (dequeue_and_dump): Handle CLEANUP_STMT.
	* tree-inline.c (initialize_inlined_parameters): Clean up
	new local variables.

	* cp-tree.h (CLEANUP_DECL): Remove.
	(CLEANUP_EXPR): Likewise.
	* decl.c (destroy_local_var): Simplify.
	(maybe_build_cleanup): Tidy.
	* dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
	* semantics.c (cp_expand_stmt): Likewise.
	* cp/tree.c (cp_statement_code_p): Likewise.

	* g++.dg/opt/dtor1.C: New test.

From-SVN: r50830
2002-03-15 20:08:39 +00:00
Kaveh R. Ghazi
2f9834e805 c-common.c (c_tree_code_type, [...]): Delete.
* c-common.c (c_tree_code_type, c_tree_code_length,
	c_tree_code_name, add_c_tree_codes): Delete.
	* c-common.h (add_c_tree_codes): Delete.
	* c-lang.c (tree_code_type, tree_code_length, tree_code_name):
	Define.
	* c-objc-common.c (c_objc_common_init): Don't call
	add_c_tree_codes, instead set lang_unsafe_for_reeval.
	* objc/objc-act.c (objc_tree_code_type, objc_tree_code_length,
	objc_tree_code_name, add_objc_tree_codes): Delete.
	(objc_init): Don't call add_objc_tree_codes.
	* objc/objc-lang.c (tree_code_type, tree_code_length,
	tree_code_name): Define.
	* toplev.c (lang_independent_init): Don't set
	tree_code_length[IDENTIFIER_NODE].
	* tree.c (tree_code_type, tree_code_length, tree_code_name):
	Delete definitions, moved to language front-ends.
	* tree.def (IDENTIFIER_NODE): Hardwire the length.
	* tree.h (tree_code_type, tree_code_length, tree_code_name):
	Const-ify.
	(tree_code_length): Change type to unsigned char.

ada:
	* misc.c (gnat_tree_code_type, gnat_tree_code_length,
	gnat_tree_code_name): Delete.
	(tree_code_type, tree_code_length, tree_code_name): Define.
	(gnat_init): Don't try to copy into the various tree_code
	arrays.

ch:
	* decl.c (chill_tree_code_type, chill_tree_code_length,
	chill_tree_code_name): Delete.
	(tree_code_type, tree_code_length, tree_code_name): Define.
	(init_decl_processing): Don't try to copy into the various
	tree_code arrays.

cp:
	* cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
	Define.
	* decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
	tree_code_length.
	* lex.c (cplus_tree_code_type, cplus_tree_code_length,
	cplus_tree_code_name): Delete.
	(cxx_init): Don't call add_c_tree_codes, instead set
	lang_unsafe_for_reeval.  Don't try to copy into the various
	tree_code arrays.

f:
	* com.c (tree_code_type, tree_code_length, tree_code_name):
	Define.

java:
	* lang.c (java_tree_code_type, java_tree_code_length,
	tree_code_name): Delete.
	(tree_code_type, tree_code_length, tree_code_name): Define.
	(java_init): Don't try to copy into the various tree_code
	arrays.

From-SVN: r50705
2002-03-13 01:42:43 +00:00
Richard Sandiford
71925bc04f defaults.h (MODE_HAS_NANS, [...]): New.
* defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES): New.
	(MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): New.
	* flags.h (HONOR_NANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS): New.
	(HONOR_SIGN_DEPENDENT_ROUNDING): New.
	* builtins.c (expand_builtin_mathfn): Use HONOR_NANS.
	* c-common.c (truthvalue_conversion): Reduce x - y != 0 to x != y
	unless x and y could be infinite.
	(expand_unordered_cmp): New, mostly split from expand_tree_builtin.
	Check that the common type of both arguments is a real, even for
	targets without unordered comparisons.  Allow an integer argument
	to be compared against a real.
	(expand_tree_builtin): Use expand_unordered_cmp.
	* combine.c (combine_simplify_rtx): Use the new HONOR_... macros.
	* cse.c (fold_rtx): Likewise.  Fix indentation.
	* fold-const.c (fold_real_zero_addition_p): New.
	(fold): Use it, and the new HONOR_... macros.
	* ifcvt.c (noce_try_minmax): Use the new HONOR_... macros.
	* jump.c (reversed_comparison_code_parts): After searching for
	the true comparison mode, use HONOR_NANS to decide whether it
	can be safely reversed.
	(reverse_condition_maybe_unordered): Remove IEEE check.
	* simplify-rtx.c (simplify_binary_operation): Use the new macros
	to decide which simplifications are valid.  Allow the following
	simplifications for IEEE: (-a + b) to (b - a), (a + -b) to (a - b),
	and (a - -b) to (a + b).
	(simplify_relational_operation): Use HONOR_NANS.
	* doc/tm.texi: Document the MODE_HAS_... macros.

From-SVN: r50401
2002-03-07 11:37:16 +00:00
Zack Weinberg
f458d1d5d7 c-common.c, [...]: Delete code implementing -traditional mode.
* c-common.c, c-common.h, c-decl.c, c-lex.c, c-parse.in,
	c-tree.h, c-typeck.c, cppexp.c, cpplex.c, cpplib.c, cpplib.h,
	cppmacro.c, objc/lang-specs.h, objc/objc-act.c,
	builtin-types.def, builtins.def, dwarf2out.c, dwarfout.c,
	gcc.c, toplev.c: Delete code implementing -traditional mode.

	* ada/misc.c, ch/ch-tree.h, ch/decl.c, cp/decl2.c, f/com.c,
	f/lex.c, f/top.c, java/builtins.c, java/decl.c: Delete
	traditional-mode-related code copied from the C front end
	but not used, or used only to permit the compiler to link.

	* doc/bugreport.texi, doc/cpp.texi, doc/extend.texi,
	doc/invoke.texi, doc/standards.texi, doc/trouble.texi:
	Document removal of -traditional mode for compilation, and
	remove documentation only relevant to that mode.

	* config/nextstep.h, config/ptx4.h, config/svr4.h,
	config/convex/convex.h, config/d30v/d30v.h,
	config/i386/dgux.h, config/i386/osf1elf.h,
	config/i386/osfelf.h, config/i386/osfrose.h,
	config/i386/sco5.h, config/i386/sol2.h, config/m68k/a-ux.h,
	config/m68k/hp310.h, config/m88k/dgux.h,
	config/m88k/dguxbcs.h, config/m88k/luna.h, config/m88k/m88k.c,
	config/m88k/m88k.h, config/m88k/openbsd.h,
	config/mips/abi64.h, config/mips/osfrose.h,
	config/mips/svr4-5.h, config/mips/svr4-t.h,
	config/sparc/sol2-sld-64.h, config/sparc/sol2.h,
	config/stormy16/stormy16.h: Remove all references to
	-traditional from target specs.  Delete all mention of the
	no-longer-necessary TRADITIONAL_RETURN_FLOAT macro.  Also
	delete a couple of commented-out definitions of
	DOLLARS_IN_IDENTIFIERS, with (incorrect) commentary referring
	to -traditional.

	* system.h: Poison TRADITIONAL_RETURN_FLOAT.
	* doc/tm.texi: Remove mention of TRADITIONAL_RETURN_FLOAT macro.

	* testsuite/gcc.c-torture/execute/920730-1t.c,
	testsuite/gcc.c-torture/execute/920730-1t.x,
	testsuite/gcc.dg/ext-glob.c: Delete test cases, only relevant
	to -traditional.

From-SVN: r50110
2002-02-27 18:48:07 +00:00
Aldy Hernandez
6aa77e6c39 attr-alwaysinline.c: New.
2002-02-21  Aldy Hernandez  <aldyh@redhat.com>

        * gcc.dg/attr-alwaysinline.c: New.

        * c-common.c (c_common_post_options): Set inline trees by
        default.

        * doc/extend.texi (Function Attributes): Document always_inline
        attribute.
        Update documentation about inlining when not optimizing.

        * cp/decl.c (duplicate_decls): Merge always_inline attribute.

        * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
        unless DECL_ALWAYS_INLINE.

        * c-objc-common.c (c_cannot_inline_tree_fn): Do not inline at -O0
        unless DECL_ALWAYS_INLINE.
        (c_disregard_inline_limits): Disregard if always_inline set.

        * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
        Disregard if always_inline set.
        (lhd_tree_inlining_cannot_inline_tree_fn): Do not inline at -O0
        unless DECL_ALWAYS_INLINE.

        * attribs.c (handle_always_inline_attribute): New.
        (c_common_attribute_table): Add always_inline.

        * config/rs6000/altivec.h: Add prototypes for builtins
        requiring the always_inline attribute.

From-SVN: r49947
2002-02-22 00:09:04 +00:00
Jakub Jelinek
7552da58e1 re PR c++/4401 (Array subscript evaluation sometimes wrong for 64-bit architectures)
PR c++/4401
	* c-common.c (pointer_int_sum): Moved from...
	* c-typeck.c (pointer_int_sum): ...here.
	* c-common.h (pointer_int_sum): Add prototype.

	* typeck.c (cp_pointer_int_sum): Renamed from
	pointer_int_sum, call pointer_int_sum.

	* g++.dg/opt/ptrintsum1.C: New test.

From-SVN: r49916
2002-02-21 00:05:47 +01:00
Aldy Hernandez
69ef87e2bc i386.md ("mmx_uavgv8qi3"): Use const_vector.
2002-02-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/i386/i386.md ("mmx_uavgv8qi3"): Use const_vector.
	("mmx_uavgv4hi3"): Same.
	("pmulhrwv4hi3"): Same.

	* tree-inline.c (walk_tree): Handle vectors.

	* c-common.c (constant_expression_warning): Handle vectors.
	(overflow_warning): Same.

	* sched-deps.c (sched_analyze_2): Handle vectors.

	* rtlanal.c (rtx_unstable_p): Handle vectors.
	(rtx_varies_p): Same.
	(count_occurrences): Same.
	(regs_set_between_p): Same.
	(modified_between_p): Same.
	(modified_in_p): Same.
	(volatile_insn_p): Same.
	(volatile_refs_p): Same.
	(side_effects_p): Same.
	(may_trap_p): Same.
	(inequality_comparisons_p): Same.
	(replace_regs): Same.
	(computed_jump_p_1): Same.

	* rtl.c (DEF_MACHMODE): Change all definitions to accept 8th
	argument.
	(inner_mode_array): New.
	(copy_rtx): Handle vectors.
	(copy_most_rtx): Same.
	(rtx_equal_p): Same.
	(get_mode_alignment): Adjust for vectors.

	* resource.c (mark_referenced_resources): Handle vectors.
	(mark_set_resources): Same.

	* reload1.c (eliminate_regs): Handle vectors.
	(elimination_effects): Same.
	(scan_paradoxical_subregs): Same.

	* reload.c (subst_reg_equivs): Handle vectors.

	* regrename.c (scan_rtx): Handle vectors.

	* regclass.c (reg_scan_mark_refs): Handle vectors.

	* recog.c (find_single_use_1): Handle vectors.

	* local-alloc.c (equiv_init_varies_p): Handle vectors.
	(contains_replace_regs): Same.
	(memref_referenced_p): Same.

	* integrate.c (copy_rtx_and_substitute): Handle vectors.
	(subst_constants): Same.

	* genattrtab.c (attr_copy_rtx): Handle vectors.
	(encode_units_mask): Same.
	(clear_struct_flag): Same.
	(count_sub_rtxs): Same.

	* gcse.c (want_to_gcse_p): Handle vectors.
	(oprs_unchanged_p): Same.
	(hash_expr_1): Same.
	(oprs_not_set_p): Same.
	(expr_killed_p): Same.
	(compute_transp): Same.
	(store_ops_ok): Same.

	* function.c (purge_addressof_1): Do not allow paradoxical subregs
	of vectors.
	(fixup_var_refs_1): Same.
	(instantiate_virtual_regs_1): Same.

	* fold-const.c (operand_equal_p): Handle vectors.
	(fold): Same.
	(rtl_expr_nonnegative_p): Same.

	* flow.c (mark_used_regs): Handle vectors.

	* df.c (df_uses_record): Handle vectors.

	* cselib.c (cselib_subst_to_values): Handle vectors.
	(cselib_mem_conflict_p): Same.
	(hash_rtx): Same.

	* cse.c (canon_reg): Handle vectors.
	(fold_rt): Same.
	(cse_process_notes): Same.
	(count_reg_usage): Same.
	(canon_hash): Same.

	* alias.c (nonlocal_mentioned_p): Add case for CONST_VECTOR.

	* combine.c (mark_used_regs_combine): Add case for CONST_VECTOR.

	* emit-rtl.c (init_emit_once): Generate const0_rtx for vectors.
	(gen_rtx): Handle CONST_VECTOR.
	(gen_const_vector_0): New.
	(copy_rtx_if_shared): CONST_VECTORs can be shared.
	(reset_used_flags): Same.
	(copy_insn_1): Same.
	(initializer_constant_valid_p): Handle VECTOR_CST.

	* doc/c-tree.texi (Expression trees): Document VECTOR_CST.

	* doc/rtl.texi (Constants): Document const_vector.
	(CONST0_RTX): Update for vectors.
	(RTL sharing): Same.

	* print-tree.c (print_node): Add case for VECTOR_CST.

	* tree.h (TREE_VECTOR_CST_ELTS): New.
	(struct tree_vector): New.
	(union tree_node): Add vector node.
	(build_vector): Add prototype.

	* tree.def (VECTOR_CST): New.

	* tree.c (build_vector): New.

	* expmed.c (make_tree): Handle CONST_VECTOR.

	* rtl.h (CONSTANT_P): CONST_VECTORs are constants too.
	(CONST_VECTOR_ELT): New.
	(CONST_VECTOR_NUNITS): New.

	* machmode.h (GET_MODE_INNER): New.
	(DEF_MACHMODE): Accept 8th arg.

	* machmode.def: Add 8th argument for vector inner mode.
	Add inner vector modes for vectors.

	* rtl.def (VEC_CONST): Remove.
	(CONST_VECTOR): New.

	* expr.c (clear_storage): Allow vectors.
	(is_zeros_p): Handle VECTOR_CST.

	* varasm.c (output_constant_pool): Handle vectors.
	(rtx_const): Add veclo and vechi fields.
	(kind): Add RTX_VECTOR.
	(decode_rtx_const): Add case for vector.

	* config/rs6000/rs6000-protos.h: Add zero_constant.

	* config/rs6000/rs6000.c (rs6000_emit_move): Handle vector
	constants.  Force easy vector constants into memory.
	(easy_vector_constant): New.
	(emit_easy_vector_constant): New.
	(rs6000_legitimize_reload_address): Do not generate bad reloads on
	darwin.

	* config/rs6000/rs6000.md ("altivec_lvx"): Reflect what
	instruction does.
	("altivec_lvxl"): Same.
	(altivec_lvebx): Same.
	(altivec_lvehx): Same.
	(altivec_lvewx): Same.
	("*movv4si_const0"): New.
	("*movv4sf_const0"): New.
	("*movv8hi_const0"): New.
	("*movv16qi_const0"): New.

From-SVN: r49853
2002-02-19 02:53:41 +00:00
Alexandre Oliva
fa5322fa58 Contribute sh64-elf.
2002-02-09  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (TARGET_CANNOT_MODIFY_JUMPS_P): Define to...
(sh_cannot_modify_jumps_p): New function.
2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (TARGET_MS_BITFIELD_LAYOUT_P): Define to...
(sh_ms_bitfield_layout_p): New function.
2002-02-04  Alexandre Oliva  <aoliva@redhat.com>
	    Zack Weinberg  <zack@codesourcery.com>
* config/sh/sh.h (TRAMPOLINE_ADJUST_ADDRESS): Use
expand_simple_binop instead of expand_binop.
2002-02-03  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (OVERRIDE_OPTIONS) [! TARGET_SH5]: Disable
use of .quad and .uaquad.
* config/sh/sh.c (TARGET_ASM_UNALIGNED_DI_OP,
TARGET_ASM_ALIGNED_DI_OP): Add comment pointing to the above.
2002-01-24  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (movdi_const, movdi_const_32bit,
movdi_const_16bit): Make sure all CONSTs have modes.
(sym2PIC): Ditto, but by adjusting all callers.
* config/sh/sh.c (calc_live_regs) [TARGET_SHCOMPACT]: Set pr_live
if the prologue calls the SHmedia argument decoder or register
saver.
2002-01-24  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (TARGET_ASM_UNALIGNED_DI_OP): Define.
(TARGET_ASM_ALIGNED_DI_OP): Likewise.
(sh_expand_epilogue): Don't emit USE of return target register.
(prepare_move_operands): Legitimize DImode PIC addresses.
(sh_media_register_for_return): Skip tr0, used to initialize the
PIC register.
(sh_expand_prologue): Remove explicit USE of return register.
(nonpic_symbol_mentioned_p): PC is non-PIC.  Don't recurse in
CONST_DOUBLEs.  UNSPEC_GOTPLT is PIC.
* config/sh/sh.h (ASM_OUTPUT_DOUBLE_INT): Removed, obsolete.
(OVERRIDE_OPTIONS): Don't disable PIC on SH5.
(EXTRA_CONSTRAINT_S): Use MOVI_SHORI_BASE_OPERAND_P instead of
EXTRA_CONSTRAINT_T.
(GOT_ENTRY_P, GOTPLT_ENTRY_P, GOTOFF_P, PIC_ADDR_P): New.
(MOVI_SHORI_BASE_OPERAND_P): New.
(NON_PIC_REFERENCE_P, PIC_REFERENCE_P): New.
(EXTRA_CONSTRAINT_T): Define in terms of them.
(OUTPUT_ADDR_CONST_EXTRA): Handle UNSPEC_GOTPLT.
* config/sh/sh.md (movsi_media, movsi_media_nofpu,
movdi_media, movdi_media_nofpu): Add SIBCALL_REGS class to
alternatives supporting TARGET_REGS.
(UNSPEC_GOTPLT): New constant.
(movdi split): Move incrementing of LABEL_NUSES...
(movdi_const, movdi_const_32bit): Here.  Use
MOVI_SHORI_BASE_OPERAND_P instead of EXTRA_CONSTRAINT_T.
(movdi_const_16bit): New.
(call, call_value) [flag_pic]: Use GOTPLT.
(call_pop, call_value_pop): New expands.
(call_pop_compact, call_pop_rettramp): New insns.
(call_value_pop_compact, call_value_pop_rettramp): New insns.
(sibcall) [flag_pic]: Use GOT.
(builtint_setjmp_receiver): Remove bogus, unused expand.
(GOTaddr2picreg): Implement for SHcompact and SHmedia.
(*pt, *ptb, ptrel): New insns.
(sym2GOT): Handle DImode GOT.
(sym2GOTPLT, symGOTPLT2reg): New expands.
(sym2PIC): New expand.
(shcompact_return_tramp): Use GOTPLT to return trampoline.
(shcompact_return_tramp_i): Use return register explicitly.
* config/sh/sh.h (OVERRIDE_OPTIONS) [TARGET_SHMEDIA]: Don't
disable flag_reorder_blocks.
2002-01-19  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (sibcall_compact): Reorder return, uses and
clobbers, for clarity.
(sibcall_epilogue) [TARGET_SHCOMPACT]: Mark saving and
restoring of r0 in macl as MAYBE_DEAD.
2002-01-18  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (LONG_DOUBLE_TYPE_SIZE): Define.
* config/sh/sh.md (movv4sf_i, movv16sf_i): Fix uses of
alter_subreg all over.
(jump) [TARGET_SHMEDIA]: FAIL to create new jumps after
reload, instead of emitting instructions that would require
reloading.
(casesi_load_media): Add missing modes.
2001-11-09  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (sh_expand_prologue): Mark the PIC register
as used if the argument decoder is called.
2001-08-28  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (udivsi3, divsi3): Load libcall symbol name in
Pmode, then extend it to DImode if necessary.
2001-08-28  Stephen Clarke  <Stephen.Clarke@st.com>
* config/sh/sh.h (LEGITIMATE_CONSTANT_P): Don't accept DFmode
constants in FPU-enabled SHmedia, let them be loaded from memory.
2001-08-28  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (cmpeqdi_media, cmpgtdi_media, cmpgtudi_media):
Adjust whitespace in assembly output templates.
2001-08-28  Stephen Clarke  <Stephen.Clarke@st.com>
* config/sh/sh.md (movdicc_false, movdicc_true, movdicc): Adjust
mode of if_then_else.
2001-08-04  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh64.h (CPP_DEFAULT_CPU_SPEC): Override definition in
sh.h.
2001-07-26  Andrew Haley  <aph@cambridge.redhat.com>
	    Joern Rennecke <amylaar@redhat.com>
* config/sh/sh64.h (CPP_DEFAULT_CPU_SPEC): New.
(SUBTARGET_CPP_PTR_SPEC): New.
(SUBTARGET_CPP_SPEC): Remove.
2001-07-06  Chandrakala Chavva  <cchavva@redhat.com>
* config/sh/sh.md (movsf_media_nofpu+1, movdf_media_nofpu+1):
Fix typo in previous checkin.
2001-07-11  Chandrakala Chavva  <cchavva@redhat.com>
* config/sh/sh.h (MODES_TIEABLE_P): Fix redact indentations.
2001-07-10  Chandrakala Chavva  <cchavva@cygnus.com>
	    Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (MODES_TIEABLE_P): Don't tie modes wider than
what single FP register can hold for SHmedia target.
2001-07-06  Chandrakala Chavva  <cchavva@redhat.com>
	    Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (movsf_media_nofpu+1, movdf_media_nofpu+1):
Do not split into SUBREG.
2001-06-14  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/ushmedia.h, config/sh/sshmedia.h: Updated signatures
and added new functions as specified in SH5 ABI r9.
2001-06-04  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/lib1funcs.asm (GCC_nested_trampoline): Align to an
8-byte boundary.
2001-06-03  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (dump_table): Add const0_rtx in calls of
gen_consttable_4 and gen_consttable_8.  Emit multiple labels
and consttable_window_ends.
2001-06-03  Graham Stott  <grahams@redhat,com>
* config/sh/sh.md (movdi split): Remove unused variable last_insn.
2001-05-16  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (print_operand): Handle floating-point pair,
vector and matrix registers.
* config/sh/sh.h (REGISTER_MOVE_COST): Take floating-pointer
vector modes into account.
* config/sh/sh.md (movv2sf): Split move between registers into
movdf.
(movv4sf, movv16sf): Introduce insns that get split only after
reload.
* config/sh/shmedia.h: Fix Copyright dates.
* config/sh/ushmedia.h: Likewise.  Move loop counter
declarations into conditionals that uses them.
(sh_media_FVADD_S, sh_media_FVSUB_S): Fix off-by-one error in
loop boundary.
* config/sh/sshmedia.h: Fix Copyright dates.
(sh_media_PUTCFG): Fix constraints.
2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (TARGET_PTRMEMFUNC_VBIT_LOCATION): Define to
ptrmemfunc_vbit_in_delta for SH5.
2001-05-08  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (TARGET_SWITCHES): Document -m5-*.
* invoke.texi: Likewise.
2001-04-14  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/lib1funcs.asm (GCC_push_shmedia_regs,
GCC_push_shmedia_regs_nofpu, GCC_pop_shmedia_regs,
GCC_pop_shmedia_regs_nofpu): New global symbols.
* config/sh/t-sh64 (LIB1ASMFUNCS): Add them.
* config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): New macro.
* config/sh/sh.c (calc_live_regs): Account for PR's saving in
compact function with nonlocal labels.
(sh_expand_prologue) [SHcompact]: Push SHmedia regs if needed.
(sh_expand_epilogue) [SHcompact]: Pop them when appropriate.
(initial_elimination_offset): Account for their stack space.
* config/sh/sh.md (shmedia_save_restore_regs_compact): New insn.
* config/sh/sh.md (movsi_media, movsi_media_nofpu, movqi_media,
movhi_media, movdi_media, movdi_media_nofpu, movdf_media,
movdf_media_nofpu, movsf_media, movsf_media_nofpu): Require at
least one of the operands to be a register.
(movv2sf): Likewise.  Renamed to movv2sf_i.
(movdi, movdf, movv2sf, movv4sf, movv16sf, movsf):
prepare_move_operands() before emitting SHmedia insns.
2001-04-03  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/crti.asm (init, fini) [__SH5__ && ! __SHMEDIA__]:
Don't save nor initialize r12.  Don't mis-align the stack.
Pad the code with a nop.
* config/sh/crti.asm: Don't restore r12.  Don't mis-align the
stack.
2001-03-13  Alexandre Oliva  <aoliva@redhat.com>
* gcc/longlong.h (__umulsidi3, count_leading_zeros)
[__SHMEDIA__]: Implement.
2001-03-11  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md: Set latency of `pt' closer to reality.
(movsi_media, movsi_media_nofpu, movdi_media, movdi_media_nofpu,
movdf_media, movdf_media_nofpu, movsf_media, movsf_media_nofpu):
Set move, load and store type attributes.
* config/sh/sh.c (sh_loop_align) [TARGET_SH5]: Set to 3.
* config/sh/sh.h (OVERRIDE_OPTIONS) [TARGET_SH5]: Disable
profiling.
* config/sh/sh.h (PROMOTE_MODE): Sign-extend SImode to DImode.
* config/sh/sh-protos.h (sh_media_register_for_return): Declare.
* config/sh/sh.c (sh_media_register_for_return): New function.
(sh_expand_prologue) [TARGET_SHMEDIA]: Copy r18 to an available
branch-target register.
(sh_expand_epilogue) [TARGET_SHMEDIA]: Explicitly USE it.
* config/sh/sh.md (return_media_i): Use any call-clobbered
branch-target register.
(return_media): If r18 wasn't copied in the prologue, copy it
here.
* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE) [TARGET_SHMEDIA]:
Clear class FP0_REGS.
* config/sh/sh64.h (LINK_SPEC): Removed incorrect default copied
from elf.h.
2001-03-08  DJ Delorie  <dj@redhat.com>
* config/sh/sh.h (OVERRIDE_OPTIONS): Disable relaxing for SHMEDIA.
2001-02-09  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (sibcall_compact): Set fp_mode to single.
2001-02-07  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (INT_ASM_OP) [SHMEDIA64]: Use `.quad'.
2001-02-03  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (INIT_CUMULATIVE_ARGS): Compute size of BLKmode
return value correctly for call_cookie.
2001-02-01  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/crt1.asm (start): Modified so as to call
___setup_argv_and_call_main.
2001-01-26  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Don't count stack_regs in
SHmedia mode.
2001-01-20  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (STRIP_DATALABEL_ENCODING): New macro.
(STRIP_NAME_ENCODING): Use it.
(ASM_OUTPUT_LABELREF): Likewise.  Don't call assemble_name().
2001-01-19  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (sgeu) [! SHMEDIA]: Fix invocation of
prepare_scc_operands().
* config/sh/sh.h (SH_DATALABEL_ENCODING): Change to "#"...
(DATALABEL_SYMNAME_P): ... so that we don't need memcmp here.
2001-01-17  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (STRIP_NAME_ENCODING): Strip leading `*'.
2001-01-13  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (shcompact_incoming_args): Use R0_REG.
* config/sh/sh.md (R7_REG, R8_REG, R9_REG): Define as constants,
used in shcompact_incoming_args.
* config/sh/sh.c (sh_expand_epilogue): Fix thinko in previous
change.
* config/sh/crt1.asm (start) [SH5]: Switch to single-precision
mode.
* config/sh/lib1funcs.asm (sdivsi3_i4, udivsi3_i4, set_fpscr):
Adjust accordingly.
* config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
Simplify.  Adjust.  Add sanity check.
* config/sh/sh.h (TARGET_SWITCHES) [5-compact]: Set
FPU_SINGLE_BIT.
* config/sh/sh.md (udivsi3_i4_single, divsi3_i4_single): Match
TARGET_SHCOMPACT.
(udivsi3, divsi3): Use them.
(force_mode_for_call): New insn.
(call, call_value, sibcall_value): Emit it before SHcompact
calls.
2001-01-11  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (call, call_value, sibcall): Make sure the
call cookie is non-NULL before taking its value.
2001-01-10  Alexandre Oliva  <aoliva@redhat.com>
* config.gcc (sh64): Set target_requires_64bit_host_wide_int.
2001-01-09  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (shcompact_incoming_args): Set argument memory
block.
* config/sh/sh.h (STATIC_CHAIN_REGNUM) [SH5]: Use r1.
* config/sh/sh.c (sh_expand_prologue) [SH5]: Use r0 as
temporary for stack adjusts.  Use MACL and MACH to pass
arguments to shcompact_incoming_args.
* config/sh/sh.md (shcompact_incoming_args): Adjust.  Don't
clobber r1.
* config/sh/lib1funcs.asm (shcompact_incoming_args): Likewise.
(nested_trampoline): Load static chain address into r1.
* config/sh/sh.md (movdi_media splits): Fix sign-extension.
2001-01-07  Alexandre Oliva  <aoliva@redhat.com
* config/sh/sh.c (fpul_operand) [SHMEDIA]: Just call
fp_arith_reg_operand().
2001-01-06  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (casesi): Sign-extend the first two operands,
and use signed compares for them.
* config/sh/sh.c (dump_table): Don't emit 8-byte constants after
4-byte ones.  Instead, inter-leave them, maintaining the 8-byte
ones properly aligned.
(find_barrier): Account for extra alignment needed for 8-byte wide
constants.
(machine_dependent_reorg): Require a label for the second 4-byte
constant after an 8-byte one.
* config/sh/lib1funcs.asm (sdivsi3): Fix typo in yesterday's
change.
2001-01-05  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (machine_dependent_reorg) [SHCOMPACT]: Reset
last_float when switching float modes.
* config/sh/sh.md (movdf) [SH5]: Don't use stack-pointer
auto-increment for general-purpose registers.
* config/sh/lib1funcs.asm (sdivsi3) [SHMEDIA]: Sign-extend the
result.
* config/sh/sh.c (sh_expand_prologue) [SH5]: Use r1 as temporary
for stack adjust.
* config/sh/sh.c (sh_builtin_saveregs): Support using all
registers for varargs.
2001-01-01  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Simplify.
* config/sh/sh.h (CALL_COOKIE_STACKSEQ,
CALL_COOKIE_STACKSEQ_SHIFT, CALL_COOKIE_STACKSEQ_GET): New macros.
(CALL_COOKIE_INT_REG_SHIFT): Adjust.
(FUNCTION_ARG_ADVANCE): Use SHCOMPACT_FORCE_ON_STACK.  Adjust
call_cookie accordingly.
(FUNCTION_ARG): Test SHCOMPACT_FORCE_ON_STACK.
(SHCOMPACT_BYREF): Likewise.
(SHCOMPACT_FORCE_ON_STACK): New macro.
* config/sh/sh.c (sh_expand_prologue): Use new call_cookie format.
(sh_builtin_saveregs): Likewise.
* config/sh/lib1funcs.asm (shcompact_call_trampoline,
shcompact_incoming_args): Use new shift values.  Support
sequences of consecutive and non-consecutive pushes/pops.
* config/sh/sh.md (return): Don't explicitly use PR_REG.
2001-01-05  Hans-Peter Nilsson  <hpn@cygnus.com>
* config/sh/sh.h (TEXT_SECTION): Define.
* config/sh/elf.h (ASM_FILE_START): Output TEXT_SECTION_ASM_OP.
2001-01-05  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (INIT_CUMULATIVE_LIBCALL_ARGS): New macro.
* config/sh/sh.h (BASE_RETURN_VALUE_REG): Use FP regs for
return values on FPU-enabled SHmedia.
(FUNCTION_VALUE_REGNO_P): Mark FIRST_FP_RET_REG as used on
FPU-enabled SHmedia.
(INIT_CUMULATIVE_ARGS): Set up return trampoline only if
value is returned in a non-FP reg and is not returned by
reference.
* config/sh/sh.md (shcompact_return_tramp_i): Change type to
jump_ind.
2000-01-04  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (SH_MIN_ALIGN_FOR_CALLEE_COPY): New.
(FUNCTION_ARG_CALLEE_COPIES): Require argument to be
quad-aligned to be passed by callee-copy reference.
2001-01-03  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/elf.h (MAX_WCHAR_TYPE_SIZE): Define.
* config/sh/sh64.h (MAX_WCHAR_TYPE_SIZE): Undefine.
2001-01-02  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/lib1funcs.asm (shcompact_call_trampoline): Fix error in
copying low-numbered FP regs to r7 and r8.
* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Don't request copying of
FP regs to general-purpose regs only if the copy was passed on the
stack.
* config/sh/lib1funcs.asm (shcompact_call_trampoline): Fix typo in
copying FP reg to r9.
* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Use trampoline to
copy FP regs to general-purpose regs only in outgoing calls.
* config/sh/sh.md (movdf_media, movsf_media): Revert incorrect
change from 	2000-10-30.  Adjust for 64-bit (or 32-bit)
HOST_WIDE_INT.
* config/sh/sh.h (struct sh_args): Document all fields.
(FUNCTION_OK_FOR_SIBCALL): Functions that receive arguments
passed partially on the stack should not consider making
sibcalls.
* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Add byref regs to
stack_regs only for incoming calls.  When passing FP args,
make sure there are FP regs available before modifying
call_cookie.
(SHCOMPACT_BYREF): Pass double args in general-purpose
registers by reference.
2000-12-30  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (FUNCTION_OK_FOR_SIBCALL) [SHCOMPACT]: Don't
attempt to generate sibcalls if the caller got any arguments
by reference.
* config/sh/lib1funcs.asm (set_fpscr) [SH5]: Default to double.
* config/sh/sh.c (dump_table) [SHCOMPACT]: Align DImode and DFmode
to 8-byte boundaries.
* config/sh/sh.md (shcompact_preserve_incoming_args): New insn.
* config/sh/sh.h (CALL_COOKIE_INT_REG_GET): New macro.
* config/sh/sh.c (sh_expand_prologue): Preserve args that will be
stored in the stack.
* config/sh/lib1funcs.asm (ct_main_table, ia_main_table): Arrange
for the offsets to have the ISA bit set.
(shcompact_call_trampoline): Document.  Swap r0 and r1, to match
invocation.  Use beq instead of bgt to mark end of sequence of
loads.
(shcompact_incoming_args): Fix store of r2.  Use beq instead of
bgt to mark end of sequence of stores.
* config/sh/sh.c (arith_operand): Don't check whether
CONST_OK_FOR_J for now.
* config/sh/sh.md (movdf_media, movsf_media): Use HOST_WIDE_INT
instead of long for conversion.
2000-12-29  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.c (print_operand_address): Convert INTVAL to int
before passing it to fprintf.
2000-12-28  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/crt1.asm (start): Reset SR.FD, to enable the FP unit.
Call set_fpscr before reading/writing SR.
* config/sh/crt1.asm (start): Set SR.SZ and SR.PR, but not SR.FR.
Call set_fpscr.
* config/sh/lib1funcs.asm: Add `.align 2' directives before
SHmedia code.
(FMOVD_WORKS): Define on SH5 with FPU.
(set_fpscr): Define on SH5.  Remove separate _fpscr_values
setting.
* config/sh/t-sh64 (LIB1ASMFUNCS): Add _set_fpscr instead of
_fpscr_values.
2000-12-28  Hans-Peter Nilsson  <hpn@cygnus.com>
* config/sh/lib1funcs.asm (ct_main_table): Align contents to even
address.
(ia_main_table): Ditto.
2000-12-27  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.h (MAX_WCHAR_TYPE_SIZE): Don't define.
* config/sh/sh64.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Reinstate
the definitions from sh.h.
* config/sh/sh.h (PTRDIFF_TYPE): Define as conditional on
TARGET_SH5.
(SUBTARGET_CPP_SPEC): Arrange for __PTRDIFF_TYPE__ to be defined.
* config/sh/elf.h (PTRDIFF_TYPE): Likewise.
* config/sh/sh64.h (SUBTARGET_CPP_SPEC): Likewise.
2000-12-26  Alexandre Oliva  <aoliva@redhat.com>
* config/sh/sh.md (movdi_media split): Don't add REG_LABEL notes.
Increment LABEL_NUSES.

From-SVN: r49630
2002-02-09 03:08:08 +00:00
Jakub Jelinek
1cf537c53e c-common.c (c_expand_expr): Revert 2002-02-06 patch.
* c-common.c (c_expand_expr): Revert 2002-02-06 patch.
	* c-parse.in (compstmt): Clear last_expr_type.

	* parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
	instead of compstmt.
	(compstmt_or_stmtexpr): Renamed from compstmt.
	(compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.

	* gcc.c-torture/execute/20020206-1.c: Test whether nesting 2
	expression statements work instead.
	* gcc.dg/noncompile/20020207-1.c: New test.

From-SVN: r49609
2002-02-08 08:51:19 +01:00
Jakub Jelinek
caaf2272c0 re PR c/5420 (bad code generated with gcc3.1/ia64)
PR c/5420:
	* c-common.c (c_unsafe_for_reeval): Make COMPOUND_LITERAL_EXPR
	unsafe for reevaluation.

	* gcc.c-torture/execute/20020206-2.c: New test.

From-SVN: r49550
2002-02-06 20:37:31 +01:00
Jakub Jelinek
d512928893 re PR c/5482 (cyclone-0.2, ICE in emit_move_insn, at expr.c:2746)
PR c/5482:
	* c-common.c (c_expand_expr) [STMT_EXPR]: If last expression is not
	EXPR_STMT, but COMPOUND_STMT, recurse into it.

	* gcc.c-torture/execute/20020206-1.c: New test.

From-SVN: r49549
2002-02-06 20:32:04 +01:00
Jason Merrill
de097a2d7d c-common.def (FILE_STMT): New code.
* c-common.def (FILE_STMT): New code.
        * c-common.c (statement_code_p): It's a statement.
        * c-common.h (stmt_tree_s): Add x_last_filename.
        (FILE_STMT_FILENAME_NODE, FILE_STMT_FILENAME): New macros.
        (last_expr_filename): New macro.
        * c-semantics.c (begin_stmt_tree): Initialize it.
        (add_stmt): If the filename changed, also insert a
        FILE_STMT.
        (expand_stmt): Handle seeing one.

From-SVN: r48881
2002-01-15 17:27:07 -05:00
Jeff Law
c1e14513ed c-common.c (c_expand_start_cond): Expect the IF_STMT node to be passed in, do not build it.
* c-common.c (c_expand_start_cond): Expect the IF_STMT node to
        be passed in, do not build it.
        (c_begin_if_stmt): New function.
        (c_begin_while_stmt, c_finish_while_stmt_cond): Likewise.
        * c-common.h (c_expand_start_cond): Update prototype.
        (c_begin_if_stmt): Prototype new function.
        (c_begin_while_stmt, c_finish_while_stmt_cond): Likewise.
        * c-parse.in (if_prefix): Use c_begin_if_stmt,
        c_begin_while_stmt and c_finish_while_stmt_cond.

From-SVN: r48539
2002-01-04 11:42:56 -07:00
Kazu Hirata
173bf5be74 c-common.c: Fix formatting.
* c-common.c: Fix formatting.
	* diagnostic.c: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.

From-SVN: r48526
2002-01-04 02:00:26 +00:00
Alexandre Oliva
1574ef130f c-common.h (genrtl_expr_stmt_value): Declare.
* c-common.h (genrtl_expr_stmt_value): Declare.
* c-semantics.c (genrtl_goto_stmt): Redirect to...
(genrtl_goto_stmt_value): ... this new function.  Pass new
argument down to expand_expr_stmt_value, taking
TREE_ADDRESSABLE into account.
* c-common.c (c_expand_expr): Mark the last EXPR_STMT of a
STMT_EXPR as addressable, i.e., one whose result we want.
* expr.c (expand_expr): Don't save expression statement value
of labeled_blocks or loop_exprs.
* stmt.c (expand_expr_stmt): Redirect to...
(expand_expr_stmt_value): ... this new function.  Use new
argument to tell whether to save expression value.
(expand_end_stmt_expr): Reset last_expr_type and
last_expr_value if we don't have either.
* tree-inline.c (declare_return_variable): Mark its use
statement as addressable.
* tree.h: Document new use of TREE_ADDRESSABLE.
(expand_expr_stmt_value): Declare.

From-SVN: r48456
2002-01-02 02:31:58 +00:00
Kaveh R. Ghazi
b4c984fbec builtin-attrs.def (__builtin_printf_unlocked, [...]): Mark with the __printf__ attribute.
* builtin-attrs.def (__builtin_printf_unlocked,
	__builtin_fprintf_unlocked, printf_unlocked, fprintf_unlocked):
	Mark with the __printf__ attribute.

	* builtins.c (expand_builtin_fputs): Add an `unlocked' parameter
	and set the replacement function depending on it.
	(expand_builtin): Skip BUILT_IN_*_UNLOCKED when not optimizing.
	Handle BUILT_IN_*_UNLOCKED when optimizing.

	* builtins.def (DEF_EXT_FALLBACK_BUILTIN,
	DEF_EXT_FRONT_END_LIB_BUILTIN): New macros.
	Declare the "unlocked" stdio functions.

	* c-common.c (c_expand_builtin_printf, c_expand_builtin_fprintf):
	Add an `unlocked' parameter and set the replacement function
	depending on it.
	(c_expand_builtin): Handle BUILT_IN_PRINTF_UNLOCKED and
	BUILT_IN_FPRINTF_UNLOCKED.

	* doc/extend.texi (printf_unlocked, fprintf_unlocked,
	fputs_unlocked): Document.

testsuite:
	* gcc.dg/format/builtin-1.c: Test unlocked stdio.
	* gcc.dg/format/c90-printf-3.c: Likewise.
	* gcc.dg/format/c99-printf-3.c: Likewise.
	* gcc.dg/format/ext-1.c: Likewise.
	* gcc.dg/format/ext-6.c: Likewise.
	* gcc.dg/format/format.h: Prototype unlocked stdio.

From-SVN: r48229
2001-12-21 02:36:37 +00:00
Neil Booth
317c26c372 c-common.c, c-common.h (back_end_hook): Remove.
* c-common.c, c-common.h (back_end_hook): Remove.
	* c-lang.c (finish_file): Remove back_end_hook.
cp:
	* decl2.c (finish_file): Remove back_end_hook.

From-SVN: r48079
2001-12-16 20:42:54 +00:00
Neil Booth
9aa8a1df05 c-common.c (combine_strings): Complain if concatenating __FUNCTION__.
* c-common.c (combine_strings): Complain if concatenating
	__FUNCTION__.
	* c-parse.in (yylexname): Flag artificial strings.
	* tree.h (TREE_ARTIFICIAL_STRING_P): New.
doc:
	* extend.texi: Update.
testsuite:
	* gcc.dg/concat.c: New test.

From-SVN: r47890
2001-12-11 19:42:34 +00:00
Aldy Hernandez
0afeef64be c-common.c (type_for_mode): Handle unsigned vectors.
2001-12-10  Aldy Hernandez  <aldyh@redhat.com>

	* c-common.c (type_for_mode): Handle unsigned vectors.
	(type_for_mode): Remove redundant calls to TYPE_MODE.

	* tree.c (make_vector): New.
	(build_common_tree_nodes_2): Use make_vector for vector types.
	Add unsigned vector types.

	* tree.h (tree_index): Add unsigned types for vectors.
	(unsigned_V16QI_type_node): New.
	(unsigned_V4SI_type_node): New.
	(unsigned_V8QI_type_node): New.
	(unsigned_V8HI_type_node): New.
	(unsigned_V4HI_type_node): New.
	(unsigned_V2SI_type_node): New.

From-SVN: r47889
2001-12-11 19:33:39 +00:00
Neil Booth
26f943fd36 c-common.c (shadow_warning): New function, moved from cp/decl.c.
* c-common.c (shadow_warning): New function, moved from cp/decl.c.
	* c-common.h (shadow_warning): New.
	* c-decl.c: Include c-common.h.
	(warn_if_shadowing): New, broken out of pushdecl.
	(pushdecl): Use warn_if_shadowing.
	(store_parm_decls): Prevent duplicate -Wshadow warnings.
cp:
	* decl.c: Include c-common.h.
	(shadow_warning): Move to c-common.c.
testsuite:
	* gcc.dg/Wshadow-1.c: New test.

From-SVN: r47701
2001-12-05 23:20:00 +00:00
Joseph Myers
db3acfa547 re PR c/4787 (Different anonymous variables declared but only one allocated when the initialization is the same)
* c-common.def (COMPOUND_LITERAL_EXPR): New.
	* c-common.c (c_expand_expr): Handle COMPOUND_LITERAL_EXPR.
	(c_staticp): New function.
	* c-common.h (COMPOUND_LITERAL_EXPR_DECL): New.
	(c_staticp): Declare.
	* c-typeck.c (default_function_array_conversion, build_unary_op):
	Don't handle CONSTRUCTOR specially.
	(lvalue_p, mark_addressable): Handle COMPOUND_LITERAL_EXPR.
	* c-decl.c (build_compound_literal): New function.
	* c-tree.h (build_compound_literal): Declare.
	* c-parse.in (primary): Use build_compound_literal.
	* c-lang.c (LANG_HOOKS_STATICP): Define.
	* objc/objc-lang.c (LANG_HOOKS_STATICP): Likewise.
	* doc/c-tree.texi: Document COMPOUND_LITERAL_EXPR.
	* doc/extend.texi: Update documentation of compound literals.
	Fixes PR c/4787.

testsuite:
	* gcc.c-torture/execute/20000722-1.x,
	gcc.c-torture/execute/20010123-1.x: Remove.
	* gcc.c-torture/compile/init-3.c: Don't use a compound literal.
	* gcc.dg/c90-complit-1.c, gcc.dg/c99-complit-1.c,
	gcc.dg/c99-complit-2.c: New tests.

From-SVN: r47629
2001-12-04 22:55:40 +00:00
Alexandre Oliva
b0ca54affc Revert previous patch
From-SVN: r47612
2001-12-04 15:10:16 +00:00
Alexandre Oliva
d1bd43d950 stmt.c (expand_expr_stmt): Keep last_expr_value non-NULL iff we're interested in the result.
* stmt.c (expand_expr_stmt): Keep last_expr_value non-NULL iff
we're interested in the result.  Use it to tell whether to
ignore results of enclosed expressions.
(expand_start_stmt_expr): Added new argument, and initialize
last_expr_value accordingly.
* tree.h (expand_start_stmt_expr): Adjusted declaration.
* c-common.c (c_expand_expr): Adjust call.
* expr.c (expand_expr) [EXPR_WFL]: Pass const0_rtx down if
ignoring the result.

From-SVN: r47607
2001-12-04 10:30:04 +00:00
Neil Booth
4d6baafa31 cppfiles.c (stack_include_file): Don't optimize zero-length files.
* cppfiles.c (stack_include_file): Don't optimize zero-length
	files.
	(read_include_file): NUL-terminate read files.
	* cpplex.c (handle_newline, skip_escaped_newlines,
	get_effective_char, skip_whitespace, parse_identifier,
	parse_identifier_slow, parse_number, parse_string,
	_cpp_lex_direct): Optimize for the fact that buffers are guaranteed
	NUL-terminated.
	* cpplib.c (destringize_and_run, cpp_define, handle_assertion):
	Be sure buffers are NUL terminated.
	* cppmacro.c (warn_of_redefinition): Kill compile warning.

	* c-common.c: Include tree-inline.h.
	(c_language): Move separate definitions here.
	(c_common_init_options, c_common_post_options): New.
	(c_common_lang_init): Rename c_common_init.
	* c-common.h (c_common_lang_init): Similarly.
	(c_common_init_options, c_common_post_options): New.
	* c-lang.c (c_post_options): Move body to c_common_post_options.
	(c_init_options): Use c_common_init_options.
	(c_init): Update.
	* langhooks.def: Rearrange.
	* langhooks.h: Rearrange, and improve comments.
	* toplev.c (do_compile): New function.
	(toplev_main): Use it.
	(lang_independent_f_options, parse_options_and_default_flags,
	process_options): Remove trailing periods.
	* Makefile.in: Update.
cp:	* decl2.c (c_language): Move to c-common.c.
	* lex.c (cxx_post_options, cxx_init_options): Use c-common.c
	functions.
	(cxx_init): Update.
objc:	* objc-act.c (objc_post_options, objc_init_options): Use c-common.c
	functions.
	(ojbc_init): Update.

From-SVN: r47362
2001-11-26 23:44:54 +00:00
Neil Booth
22703ccc3f Makefile.in (c-parse.o, c-common.o): Update dependencies.
* Makefile.in (c-parse.o, c-common.o): Update dependencies.
	* c-common.c: Include diagnostic.h.
	(c_common_finish): New.
	* c-common.h (c_common_finish): New.
	* c-lang.c (LANG_HOOKS_FINISH): Override.
	* c-parse.in: Don't include diagnostic.h.
	(finish_parse): Remove.
	* langhooks.h: Update comments.
	* toplev.c (lang_dependent_init): New prototype.
	(finalize): New.
	(compile_file): Split cleanup code out to finalize.
	(lang_dependent_init): Stop if lang_hooks.init fails.
	(toplev_main): Update.
	* tree.h (finish_parse): Remove.

ada:	* misc.c (gnat_decode_option, gnat_init_options): Make definitions
	static too.
	(gnat_init): Don't return NULL.
	(finish_parse): Remove.
cp:	* lex.c (cxx_finish): Call c_common_finish.
	(finish_parse): Remove.
f:	* com.c (finish_parse): Remove.
	(ffe_finish): Move body of finish_parse.
java:	* lang.c (finish_parse): Rename to java_finish.
	(LANG_HOOKS_FINISH, java_finish): New.
objc:	* objc-act.c (LANG_HOOKS_FINISH): Override.

From-SVN: r47141
2001-11-18 11:04:53 +00:00
Joseph Myers
7d14c755ce c-common.c (struct disabled_builtin, [...]): New.
* c-common.c (struct disabled_builtin, disabled_builtins,
	disable_builtin_function, builtin_function_disabled_p): New.
	(builtin_function_2): Check for disabled built-in functions.
	* c-common.h (disable_builtin_function): Declare.
	* c-decl.c (c_decode_option): Handle -fno-builtin-FUNCTION.
	* doc/invoke.texi: Document -fno-builtin-FUNCTION.
	* doc/extend.texi: Mention -fno-builtin-FUNCTION.

testsuite:
	* gcc.dg/no-builtin-1.c: New test.

From-SVN: r47133
2001-11-18 03:30:57 +00:00
Neil Booth
f5e99456f1 c-common.c: Include c-lex.h.
* c-common.c: Include c-lex.h.
	(c_common_lang_init): Change prototype.  Call init_c_lex and
	init_pragma from here.
	* c-common.h (c_common_lang_init): Change prototype.
	* c-decl.c (init_decl_processing): Rename.  Call c_parse_init.
	* c-lang.c (c_init): Change prototype.  Update.
	(c_init_options): Update.
	* c-lex.c (cpp_filename): Remove.
	(init_c_lex): Update.  Read the main file, and get the original
	file name.
	(yyparse): Finish the command line options.
	* c-parse.in (c_parse_init): Call init_reswords here.
	(init_parse): Remove.
	* c-tree.h (c_init_decl_processing): New.
	* cpphash.c (_cpp_init_hashtable): After initializing the hash
	table, populate it.
	* cppinit.c (read_original_filename, cpp_finish_options): New.
	(cpp_create_reader): New prototype. Defer hash table initialization.
	(cpp_start_read): Rename cpp_read_main_file.  Initialize the
	hash table.  Get the original filename.
	* cpplib.h (cpp_create_reader): Update.
	(cpp_start_read): Remove.
	(cpp_read_main_file, cpp_finish_options): New.
	* cppmain.c (main, do_preprocessing): Update.
	* langhooks.h (struct langhooks): Update init prototype.
	* toplev.c (general_init, parse_options_and_default_flags,
	process_options, lang_indpendent_init, lang_dependent_init,
	init_asm_output): New; perform the bulk of initialization.
	(compile_file): Move most of initialization to above functions.
	(debug_hooks): Initialize statically.
	(set_Wunused): Relocate.
	(toplev_main): Move most of initialization to other init functions.
	Have a clear logic flow.
	* tree.h (init_parse, init_decl_processing): Remove.
ada:
	* misc.c (gnat_init): Change prototype.  Include the
	functionality of the old init_parse and init_decl_processing.
	(gnat_init_decl_processing): New prototype.
	(init_parse): Remove.
	* utils.c (init_decl_processing): Rename gnat_init_decl_processing.
cp:	* cp-tree.h (init_reswords, cxx_init_decl_processing): New.
	(cxx_init): Update prototype.
	* decl.c (init_decl_processing): Rename.  Move null node init
	to its creation time.
	* lex.c (cxx_init_options): Update.
	(cxx_init): Combine with old init_parse; also call
	cxx_init_decl_processing.
f:	* com.c (ffecom_init_decl_processing): Renamed from
	init_decl_processing.
	(init_parse): Move contents to ffe_init.
	(ffe_init): Update prototype.
java:	* decl.c (init_decl_processing): Rename java_init_decl_processing.
	* java-tree.h: New prototype.
	* lang.c (java_init): Update prototype.  Combine with old init_parse.
objc:	* objc-act.c (objc_init): Update prototype, combine with old
	init_parse.
	(objc_init_options): Update.

From-SVN: r47046
2001-11-15 10:01:10 +00:00
Joseph Myers
207bf4854d re PR c/461 (non-lvalue arrays)
* c-common.c (c_expand_expr_stmt): Apply default conversions to
	non-lvalue arrays if C99.
	* c-typeck.c (default_conversion): Split out code handling
	array-to-pointer and function-to-pointer conversions into a
	separate default_function_array_conversion function.
	(default_function_array_conversion): New function.  Keep track of
	whether any NON_LVALUE_EXPRs were stripped.  Return non-lvalue
	arrays unchanged outside C99 mode instead of giving an error for
	them.
	(build_component_ref): Use pedantic_non_lvalue when handling
	COMPOUND_EXPR.  Don't handle COND_EXPR specially.
	(convert_arguments): Use default_function_array_conversion.
	(build_unary_op): For ADDR_EXPR, take a flag indicating whether
	non-lvalues are OK.
	(unary_complex_lvalue): Likewise.
	(internal_build_compound_expr): Use
	default_function_array_conversion.  Apply default conversions to
	function in compound expression.
	(build_c_cast, build_modify_expr, digest_init, build_asm_stmt):
	Use default_function_array_conversion.
	* doc/extend.texi: Update documentation of subscripting non-lvalue
	arrays.
	Fixes PR c/461.

testsuite:
	* gcc.dg/c90-array-lval-1.c, gcc.dg/c90-array-lval-2.c,
	gcc.dg/c99-array-lval-1.c, gcc.dg/c99-array-lval-2.c: Remove
	XFAILs.  Adjust expected error texts.
	* gcc.c-torture/compile/20011106-1.c,
	gcc.c-torture/compile/20011106-2.c, gcc.dg/c90-array-lval-3.c,
	gcc.dg/c90-array-lval-4.c, gcc.dg/c90-array-lval-5.c,
	gcc.dg/c99-array-lval-3.c, gcc.dg/c99-array-lval-4.c,
	gcc.dg/c99-array-lval-5.c: New tests.

From-SVN: r46805
2001-11-06 12:39:36 +00:00
Aldy Hernandez
b63781e941 tree.h (tree_index): Add support for V16QI and V8HI.
* tree.h (tree_index): Add support for V16QI and V8HI.
	      (V8HI_type_node): New.
	(V16QI_type_node): New.

From-SVN: r46678
2001-10-31 15:28:41 +00:00
Joseph Myers
684d9f3beb ChangeLog.2, [...]: Fix spelling errors and typos.
* ChangeLog.2, ChangeLog.3, ChangeLog.4, FSFChangeLog.10,
	FSFChangeLog.11, c-common.c, c-common.def, c-common.h, c-decl.c,
	c-dump.c, c-typeck.c, except.c, sdbout.c, simplify-rtx.c,
	timevar.h, tree.h, varasm.c: Fix spelling errors and typos.

From-SVN: r46621
2001-10-29 23:01:45 +00:00
Joseph Myers
ff7cc30768 ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
	ChangeLog.5, ChangeLog, FSFChangeLog.10, FSFChangeLog.11,
	c-common.c, c-common.h, c-parse.in, c-typeck.c, cfg.c, config.gcc,
	configure, configure.in, except.c, except.h, flow.c, function.c,
	gcc.c, gcse.c, genrecog.c, libgcc2.c, loop.c, loop.h, params.def,
	predict.def, predict.h, reg-stack.c, regmove.c, sched-deps.c,
	sched-int.h, sibcall.c, ssa.c, stringpool.c, toplev.c, tree.c,
	unroll.c: Fix spelling errors.

From-SVN: r46595
2001-10-28 20:09:17 +00:00
Joseph Myers
f63d1bf775 ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
	ChangeLog.5, ChangeLog, ChangeLog.lib, FSFChangeLog.10, ONEWS,
	c-common.c, caller-save.c, cfg.c, cfgcleanup.c, cfgrtl.c,
	collect2.c, df.h, diagnostic.h, final.c, gcse.c, gthr.h,
	haifa-sched.c, jump.c, local-alloc.c, profile.c, protoize.c,
	regmove.c, reload1.c, rtlanal.c, sched-vis.c, ssa.c, stmt.c,
	system.h, toplev.c: Fix spelling errors.

From-SVN: r46580
2001-10-28 12:42:06 +00:00
Richard Kenner
8ac61af705 alias.c (can_address_p): Compnonents are not addressable if the containing type has alias set 0.
* alias.c (can_address_p): Compnonents are not addressable if
	the containing type has alias set 0.
	(get_alias_set): Rework to use STRIP_NOPS.
	Only call front-end routine on object, type, or object with
	NOPs stripped, not inner values.
	Use language hook to call front-end routine.
	* builtins.c (get_memory_rtx): Always call set_mem_attributes.
	(expand_builtin_apply): Call set_mem_align on MEMs we make.
	Don't pass alignment to emit_block_move.
	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
	(expand_builtin_memset): Likewise, but for clear_storage.
	* c-common.c (lang_get_alias_set): Renamed to c_common_alias_set
	and remove C++ specific parts.
	* c-common.h (c_common_get_alias_set): Add declaration.
	* c-lang.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	* calls.c (emit_call_1): Fix typo in sibcall_pop case.
	(save_fixed_argument_area): Call set_mem_align.
	Remove alignment in call to emit_block_move.
	(emit_library_call_value_1, store_one_arg): Likewise.
	(target_for_arg): Remove; disabled long ago.
	* emit-rtl.c (set_mem_attributes): Rework to only call get_mem_attrs
	once and similar cleanups.
	(offset_address): Use proper introductory comment.
	* expr.c (emit_block_move): Use alignment from that of MEM args, not
	from explicit operand; all callers changed.
	(clear_storage): Likewise.
	(expand_assignment): Don't call set_mem_alias_set on to_rtx.
	(store_field): Remove kludge on alias set used for to_rtx.
	(highest_pow2_factor, case *_DIV_EXPR): Never return 0.
	(expand_expr_unaligned): Call set_mem_attributes instead of
	set_mem_alias_set.
	* expr.h (emit_block_move, clear_storage): Remove ALIGN argument.
	* function.c (assign_stack_temp_for_type): Set MEM alignment.
	(expand_function_end): Track MEM attributes of trampolines.
	* ifcvt.c (noce_try_cmove_arith): Set alignment of new MEM.
	* integrate.c (copy_rtx_and_substitute, case CALL): Copy memory
	attributes from original.
	* langhooks.c (lang_hook_default_get_alias_set): New function.
	(hook_get_alias_set_0): New function.
	* langhooks.h (hook_get_alias_set_0): New declaration.
	(lang_hook_default_get_alias_set): Likewise.
	(LANG_HOOKS_GET_ALIAS_SET): New macro; add to initializer.
	* reload1.c (alter_reg): Use adjust_address_nv.
	* rtl.c (get_mode_alignment): Moved to here.
	* rtl.h (MEM_ALIGN): Take default from mode, if not BLKmode, and
	change default if unknown from 1 to BITS_PER_UNIT.
	* stor-layout.c (get_mode_alignment): Remove from here.
	* toplev.h (struct lang_hoks): Add get_alias_set field.
	* tree.h (lang_get_alias_set): Delete declaration.
	* config/arc/arc.c (arc_setup_incoming_varags): Set MEM alignment.
	* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
	(ix86_va_arg): Likewise.
	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_va_arg): Likewise.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
	(expand_block_move_mem): Remove dead code.
	* cp/cp-lang.c (cxx_get_alias_set): New function.
	Point LANG_HOOKS_GET_ALIAS_SET to it.
	* f/com.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	(lang_get_alias_set): Delete.
	* java/lang.c (lang_get_alias_set): Deleted.

From-SVN: r46440
2001-10-23 14:51:18 -04:00
Neil Booth
6c36d76bf6 c-common.c (warn_div_by_zero): New.
* c-common.c (warn_div_by_zero): New.
	* c-common.h (warn_div_by_zero): New.
	* c-decl.c (c_decode_option): Take it on the command line.
 	* c-typeck.c (build_binary_op): Warn about division by zero.
	* doc/invoke.texi: Document the new command line option, fix
	documentation of -Wmultichar.
 	* testsuite/gcc.dg/divbyzero.c: New tests.
 	* testsuite/gcc.dg/noncompile/20010524-1.c: Update.

From-SVN: r46439
2001-10-23 18:14:31 +00:00
Richard Kenner
3c5ad1ffc6 Makefile.in (print-rtl.o): Depend on TREE_H.
* Makefile.in (print-rtl.o): Depend on TREE_H.
	* alias.c (get_alias_set): Make two passes over objects to first
	see if inner object is access via restricted pointer.
	Defer allocating alias set for restricted pointer until here.
	Call find_placeholder with second arg nonzero.
	Minor cleanups.
	* c-common.c (c_apply_type_quals_to_decl): Defer getting alias
	set for restricted pointer types.
	* emit-rtl.c (set_mem_attributes): Set more attributes.
	(set_mem_align, change_address, adjust_address_1): New functions.
	(change_address_1): Now static.
	(adjust_address, adjust_address_nv): Deleted.
	(replace_equiv_address): Call change_address_1.
	* expr.c (get_inner_reference): Handle PLACEHOLDER_EXPR.
	(find_placeholder): Get starting point from PLIST arg.
	(expand_expr, case PLACEHOLDER_EXPR): Initialize find_placeholder arg.
	* expr.h (set_mem_align, change_address, adjust_address_1): New decls.
	(adjust_address, adjust_address_nv): New macros.
	* print-rtl.c (tree.h): New include.
	(print_rtx, case MEM): Print all memory attributes.

From-SVN: r46314
2001-10-17 05:40:21 -04:00