Commit Graph

707 Commits

Author SHA1 Message Date
Mark Mitchell
67673f5c5b c-common.c (back_end_hook): New variable.
* c-common.c (back_end_hook): New variable.
	* c-common.h (back_end_hook): Declare it.
	* c-lang.c (finish_file): Use it.

	* emit-rtl.c (init_emit_once): Initialize the const_int_htab
	earlier.

	* cp-tree.h (back_end_hook): Remove declaration.
	* decl2.c (back_end_hook): Remove definition.

	* dump.c (dequeue_and_dump): Dump TREE_USED.

From-SVN: r36928
2000-10-18 05:45:37 +00:00
Joseph Myers
b691cb00a8 c-common.c (FMT_FLAG_DOLLAR_MULTIPLE): Define.
* c-common.c (FMT_FLAG_DOLLAR_MULTIPLE): Define.
	(format_types): Use it for printf.
	(maybe_read_dollar_number): Add parameter for the kind of format
	involved.  Warn for multiple use for arguments if this is
	inappropriate for the kind of format involved.
	(check_format_info_main): Update calls to maybe_read_dollar_number.

testsuite:
	* gcc.dg/format-xopen-1.c: Update comments; adjust for checking
	for multiple use of arguments with scanf formats; add tests for
	multiple use of arguments.

From-SVN: r36905
2000-10-17 19:16:15 +01:00
Bernd Schmidt
2683ed8d12 Improved sequence point warnings
From-SVN: r36901
2000-10-17 09:34:21 +00:00
Joseph Myers
74ff46299b c-common.h (warn_missing_format_attribute): New variable.
* c-common.h (warn_missing_format_attribute): New variable.
	* c-decl.c (warn_missing_format_attribute): New variable.
	(c_decode_option): Decode -Wmissing-format-attribute and
	-Wno-missing-format-attribute.
	* c-common.c (check_function_format): If
	-Wmissing-format-attribute, give a warning where a vprintf or
	vscanf function is called by a function without its own printf or
	scanf attribute.
	* toplev.c (documented_lang_options): Add
	-Wmissing-format-attribute.
	* invoke.texi: Document -Wmissing-format-attribute.

cp:
	* decl2.c (warn_missing_format_attribute): New variable.
	(lang_decode_option): Decode -Wmissing-format-attribute.

testsuite:
	* gcc.dg/format-miss-1.c: New test.

From-SVN: r36897
2000-10-17 07:52:06 +01:00
Joseph Myers
6d2e14543b c-common.c (format_check_results): New structure.
* c-common.c (format_check_results): New structure.
	(finish_dollar_format_checking): Adjust to take a
	format_check_results * parameter.
	(check_format_info, check_format_info_recurse,
	check_format_info_main): Split check_format_info into three
	functions, the main checking going in check_format_info_main.
	Recurse when any reduction of the format string argument towards a
	string literal is done; go down both branches of a conditional
	expression.  Don't warn for extra format arguments or empty format
	strings if they only occur in some branches of a conditional
	expression.

testsuite:
	* gcc.dg/format-branch-1.c: New test.

From-SVN: r36883
2000-10-16 17:16:57 +01:00
Alexandre Oliva
f58e0b0ca7 * c-common.c (c_expand_builtin): PARAMS-ize prototype.
From-SVN: r36863
2000-10-13 19:28:07 +00:00
Joseph Myers
9fa8f75dc9 c-common.c (decl_attributes): Don't allow strftime formats with first_arg_num nonzero.
* c-common.c (decl_attributes): Don't allow strftime formats with
	first_arg_num nonzero.
	(check_format_info): Set wanted_type and wanted_type_name to zero
	before they are possibly assigned and used.

testsuite:
	* gcc.dg/format-attr-1.c: New test.

From-SVN: r36845
2000-10-12 10:28:52 +01:00
Joseph Myers
4831bc8477 c-common.c (scanf_flag_specs): Add flags ' and I.
* c-common.c (scanf_flag_specs): Add flags ' and I.
	(strftime_flag_pairs): Disallow any pair of the _, - and 0 flags,
	or the ^ and # flags together.
	(scan_char_table): Handle the ' and I flags.
	(format_types): Add ' and I flags for scanf.

testsuite:
	* gcc.dg/c99-scanf-2.c, gcc.dg/format-ext-2.c: Test ' and I
	scanf flags.
	* gcc.dg/format-ext-3.c: Test mutually exclusive pairs of strftime
	flags.

From-SVN: r36842
2000-10-12 08:29:01 +01:00
Joseph Myers
2f7026a014 c-common.c (print_char_table): Use the unpromoted type for lengths "h" and "hh" with conversions dioxXu.
* c-common.c (print_char_table): Use the unpromoted type for
	lengths "h" and "hh" with conversions dioxXu.
	(check_format_types): Apply the default argument promotions where
	the wanted type is not a pointer target.

From-SVN: r36841
2000-10-12 08:26:20 +01:00
Kaveh R. Ghazi
1092710d9c c-common.c (c_expand_builtin_printf): Set the TREE_TYPE of a new STRING_CST by calling combine_strings.
* c-common.c (c_expand_builtin_printf): Set the TREE_TYPE of a new
	STRING_CST by calling combine_strings.

From-SVN: r36810
2000-10-09 16:30:43 +00:00
Joseph Myers
b15ad71257 tm.texi (INTMAX_TYPE, [...]): Define.
* tm.texi (INTMAX_TYPE, UINTMAX_TYPE): Define.
	* c-common.h (enum c_tree_index): Add CTI_INTMAX_TYPE and
	CTI_UINTMAX_TYPE.
	(intmax_type_node, uintmax_type_node): Define.
	* c-common.c (decl_attributes): If pedantic, warn if `mode'
	attributes create a type wider than intmax_t.
	(T_IM, T_UIM): Define properly.
	* c-decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
	defined.
	(init_decl_processing): Initialize intmax_type_node and
	uintmax_type_node.
	* c-lex.c (lex_number): When pedantic and warning for integer
	constants that are too large, in C99 mode warn for those that have
	a type wider than long long.

cp:
	* decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
	defined.
	(init_decl_processing): Initialize intmax_type_node and
	uintmax_type_node.

testsuite:
	* gcc.dg/c99-printf-1.c, gcc.dg/c99-scanf-1.c,
	gcc.dg/c90-printf-2.c, gcc.dg/c90-scanf-2.c: Define intmax_t and
	uintmax_t using <limits.h> to emulate the compiler's internal
	logic.  No longer XFAIL %j tests.

From-SVN: r36791
2000-10-08 22:20:45 +01:00
Joseph Myers
2588e44e00 c-common.c (FMT_FLAG_ARG_CONVERT, [...]): Define.
* c-common.c (FMT_FLAG_ARG_CONVERT, FMT_FLAG_SCANF_A_KLUDGE,
	FMT_FLAG_FANCY_PERCENT_OK): Define.
	(format_char_info): Add flag "4" to comment.
	(format_flag_spec, format_flag_pair): New structures.
	(format_kind_info): Add additional fields to control format
	checking.
	(printf_flag_specs, printf_flag_pairs, scanf_flag_specs,
	scanf_flag_pairs, strftime_flag_specs, strftime_flag_pairs): New
	arrays.
	(time_char_table): Use "4" flag to handle %Ey.
	(format_types): Add entries for new fields.
	(get_flag_spec): New function.
	(check_format_info): Increase size of flag_chars[] to 256.
	Control format checking using the new fields of a format_kind_info
	and the new tables; remove all conditionals on printf_format_type,
	scanf_format_type or strftime_format_type.  Handle all details of
	bad combinations of flags (including width, precision and strftime
	modifiers) through data rather than ad hoc code.  Handle all
	details of standard versions in which flags appeared through
	data.  Use the "4" flag.

testsuite:
	* gcc.dg/c90-printf-1.c, gcc.dg/c90-scanf-1.c,
	gcc.dg/c99-printf-1.c, gcc.dg/c99-scanf-1.c,
	gcc.dg/c99-strftime-1.c, gcc.dg/format-ext-3.c: Adjust error
	regexps and details of expected handling of some bad formats.
	* gcc.dg/format-xopen-1.c: Add test for $ format with assignment
	suppression.

From-SVN: r36790
2000-10-08 22:12:33 +01:00
Kaveh R. Ghazi
c70eaeafa0 builtins.c (is_valid_printf_arglist, [...]): Move functions from here ...
* builtins.c (is_valid_printf_arglist, expand_builtin_printf):
	Move functions from here ...

	* c-common.c (is_valid_printf_arglist, c_expand_builtin_printf):
	... to here.
	(c_expand_builtin): New function.
	(init_function_format_info): Don't set `check_function_format_ptr'.
	(c_common_nodes_and_builtins): Set built_in_class type for
	printf/__builtin_printf to BUILT_IN_FRONTEND.
	(c_expand_expr): Handle CALL_EXPRs that are front-end builtins.

	* c-common.h (build_function_call): Declare.

	* expr.c (expand_expr): Pass builtins with class BUILT_IN_FRONTEND
	to `lang_expand_expr' rather than `expand_builtin'.

	* tree.c (check_function_format_ptr): Delete.

	* tree.h (check_function_format_ptr): Likewise.

From-SVN: r36758
2000-10-06 14:59:56 +00:00
Joseph Myers
0e00b68b77 c-common.c (format_char_info): Add flags2; update comments.
* c-common.c (format_char_info): Add flags2; update comments.
	(print_char_table, scan_char_table, time_char_table): Split some
	flags out into flags2.
	(check_format_info): Use flags2 for those flags, for identifying
	the initial character of a scanf scanset, and for identifying
	printf formats where the '0' flag is ignored with precision.

From-SVN: r36623
2000-09-25 18:04:45 +01:00
Joseph Myers
c5412f0646 c-common.c (check_format_info): Warn for a wide character string used as a non-wide format argument.
* c-common.c (check_format_info): Warn for a wide character string
	used as a non-wide format argument.

testsuite:
	* gcc.dg/c90-printf-1.c: Add test for wide string format.

From-SVN: r36586
2000-09-24 10:52:53 +01:00
Joseph Myers
1c44c45dbf builtins.def (BUILT_IN_LLABS): Add.
* builtins.def (BUILT_IN_LLABS): Add.
	* builtins.c (expand_builtin): Also abort on BUILT_IN_LLABS.
	* c-common.c (c_common_nodes_builtins): Create builtin functions
	__builtin_llabs, and plain llabs unless no_nonansi_builtins
	outside of C99 mode.
	(expand_tree_builtin): Handle BUILT_IN_LLABS.

From-SVN: r36585
2000-09-24 10:50:30 +01:00
Kaveh R. Ghazi
0732816781 builtins.c (expand_builtin_fputs): Also expand when length!=1.
* builtins.c (expand_builtin_fputs): Also expand when length!=1.
	(expand_builtin): Handle BUILT_IN_FWRITE.

	* builtins.def (BUILT_IN_FWRITE): New entry.

	* c-common.c (c_common_nodes_and_builtins): Declare __builtin_fwrite.

From-SVN: r36556
2000-09-21 01:59:07 +00:00
Kaveh R. Ghazi
ad3fd36f73 builtins.c (is_valid_printf_arglist, [...]): New functions.
* builtins.c (is_valid_printf_arglist, expand_builtin_printf): New
	functions.
	(expand_builtin_fputs): Set `target' parameter for `expand_expr'.
	(expand_builtin): Handle BUILT_IN_PUTCHAR, BUILT_IN_PUTS and
	BUILT_IN_PRINTF.

	* builtins.def (BUILT_IN_PUTCHAR, BUILT_IN_PUTS, BUILT_IN_PRINTF):
	New entries.

	* c-common.c (init_function_format_info): Handle __builtin_printf.
	Set `check_function_format_ptr'.
	(c_common_nodes_and_builtins): Set `puts_ftype' and
	`printf_ftype'.  Declare __builtin_putchar, __builtin_puts,
	__builtin_printf and printf.

	* tree.c, tree.h (check_function_format_ptr): Declare.

testsuite:
	* g++.old-deja/g++.other/virtual8.C: Declare printf correctly.

From-SVN: r36540
2000-09-19 18:19:44 +00:00
Kaveh R. Ghazi
3f80e6acb1 Makefile.in (c-common.o): Depend on diagnostic.h.
* Makefile.in (c-common.o): Depend on diagnostic.h.

	* c-common.c: Include diagnostic.h.
	(tfaff): Delete.
	(status_warning): New function.
	(check_format_info, maybe_read_dollar_number, check_format_types,
	finish_dollar_format_checking, check_function_format): Accept a
	`status' parameter.  All callers changed.

	* c-common.h (check_function_format): Accept a `status' parameter.

	* c-typeck.c: Update call to `check_function_format'.

cp:
	* cp-tree.h (check_function_format): Accept a `status' parameter.

	* call.c, typeck.c: Updates calls to `check_function_format'.

From-SVN: r36524
2000-09-19 03:26:11 +00:00
Joseph Myers
fc6df7e10b c-common.c (check_format_info): Properly save the argument number and parameter for $ operand number formats in...
* c-common.c (check_format_info): Properly save the argument
	number and parameter for $ operand number formats in case width
	and precision arguments are also used.  Allow printf width and
	precision arguments to have operand numbers even if none was
	specified for the main format, since this is OK for %*.*m.  Only
	object to missing $ operand number if the format used requires an
	argument.

testsuite:
	* gcc.dg/format-ext-1.c: Add tests for mixing %m with $ formats.
	* gcc.dg/format-xopen-1.c: Fix error in one $ format test.  Add
	more $ format tests.

From-SVN: r36493
2000-09-18 17:34:35 +01:00
Joseph Myers
effa554103 c-common.c (format_char_info): Add 'W' flag to comment.
* c-common.c (format_char_info): Add 'W' flag to comment.
	(print_char_table, scan_char_table): Use it.
	(check_format_info): Use the 'W' flag to determine whether a
	format argument is written into.

From-SVN: r36492
2000-09-18 17:31:07 +01:00
Joseph Myers
99303ae4cc c-common.c (check_format_types): Reorganise and clean up...
* c-common.c (check_format_types): Reorganise and clean up,
	checking earlier for ERROR_MARKs and making cur_type into its
	TYPE_MAIN_VARIANT where convenient.

From-SVN: r36490
2000-09-18 17:27:16 +01:00
Mark Mitchell
8f17b5c5cb splay-tree.c (splay_tree_predecessor): Fix typo in comment.
* splay-tree.c (splay_tree_predecessor): Fix typo in comment.

	Convert the C front-end to use function-at-a-time mode.
	* c-common.h: Include splay-tree.h.
	(C_DECLARED_LABEL_FLAG): New macro.
	(struct language_function): Add x_scope_stmt_stack and
	x_function_name_declared_p.
	(RECHAIN_STMTS): Move definition.
	(lang_statment_code_p): Likewise.
	(lang_expand_stmt): Likewise.
	(lang_expand_decl_stmt): New variable.
	(lang_expand_function_end): Likewise.
	(current_scope_stmt_stack): New function.
	(add_decl_stmt): Likewise.
	(add_scope_stmt): Likewise.
	(mark_stmt_tree): Likewise.
	(struct c_lang_decl): New structure.
	(DECL_SAVED_TREE): Define.
	(c_mark_lang_decl): New function.
	(c_expand_start_cond): Change prototype.
	(c_finish_then): New function.
	(c_finish_else): Likewise.
	(current_function_name_declared): Remove.
	(set_current_function_name_declared): Likewise.
	(mark_c_language_function): Declare.
	(case_compare): Likewise.
	(c_add_case_label): Likewise.
	(c_expand_expr): Likewise.
	(c_safe_from_p): Likewise.
	* c-common.c (lang_expand_function_end): New variable.
	(struct if_elt): Add if_stmt.
	(c_expand_start_cond): Add the if-statement to the statement-tree,
	rather than generating RTL.
	(c_finish_then): New function.
	(c_expand_start_else): Don't generate RTL.
	(c_finish_else): New function.
	(c_expand_expr_stmt): Don't generate RTL.
	(statement_code_p): Add SCOPE_STMT.
	(case_compare): New function.
	(c_add_case_label): Likewise.
	(mark_stmt_tree): Likewise.
	(c_mark_lang_decl): Likewise.
	(mark_c_language_function): Likewise.
	(c_expand_expr): Likewise.
	(c_safe_from_p): Likewise.
	* c-decl.c (c_stmt_tree): New variable
	(c_scope_stmt_stack): Likewise.
	(c_function_name_declared_p): Likewise.
	(lang_expand_expr_stmt): Remove.
	(poplevel): Don't call output_inline_function for nested
	functions.
	(pushdecl): Don't set DECL_CONTEXT for a local declaration of an
	`extern' function.
	(redeclaration_error_message): Change means of computing whether
	or not a function is nested.
	(lookup_label): Don't call label_rtx.
	(init_decl_processing): Add more GC roots.
	(start_decl): Add DECL_STMTs to the statement-tree, rather than
	calling rest_of_decl_compilation.
	(finish_decl): Don't call expand_decl.
	(store_parm_decls): Begin the statement-tree, but don't generate
	RTL.
	(finish_function): Tie off the statement-tree.  Call c_expand_body
	if appropriate.
	(c_expand_body): New function.
	(push_c_function_context): Save more information.
	(pop_c_function_contxt): Likewise.
	(copy_lang_decl): Now that we use DECL_LANG_SPECIFIC, copy it.
	(lang_mark_tree): Mark it.
	(current_stmt_tree): Adjust.
	(current_scope_stmt_stack): New function.
	(do_case): Remove.
	(set_current_name_declared): Likewise.
	(c_begin_compound_stmt): Define.
	(c_expand_decl_stmt): Likewise.
	* c-lang.c: Include rtl.h and expr.h.
	(lang_init): Set more language-specific hooks.
	* c-lex.c: Include expr.h.
	* c-parse.in: Changes throughout to add statements to the
	statement-tree, rather than generating RTL after every statement.
	* c-semantics.c (lang_expand_decl_stmt): Define.
	(add_decl_stmt): New function.
	(add_scope_stmt): Likewise.
	(finish_stmt_tree): Tweak.
	(genrtl_expr_stmt): Likewise.
	(genrtl_decl_stmt): Handle local labels, and call
	lang_expand_decl_stmt if required.
	(genrtl_for_stmt): Fix line-number handling.
	(genrtl_case_label): Handle cleanups.
	(genrtl_asm_stmt): Don't call combine_strings.
	(genrtl_compound_stmt): Simplify.
	(expand_stmt): Handle SCOPE_STMTs.
	* c-tree.h (struct lang_decl): New structure.
	(C_DECLARED_LABEL_FLAG): Remove.
	(c_begin_compound_stmt): Declare.
	(c_expand_decl_stmt): Likewise.
	(c_expand_start_case): Rename to c_start_case.
	(c_finish_case): New function.
	* c-typeck.c (start_init): Tweak setting of
	constructor_incremental.
	(c_expand_asm_operands): Tweak error-handling.  Add to the
	statement-tree.
	(c_expand_return): Add to the statement-tree.
	(c_expand_start_case): Rename to ...
	(c_start_case): ... this.
	(struct c_switch): New type.
	(switch_stack): New variable.
	(do_case): Simplify.
	(c_finish_case): New function.
	* dependence.c: Include expr.h.
	(enum dependence_type): Change spelling of enumerals.
	(check_node_dependence): Adjust.
	* expr.h (lang_safe_from_p): Declare.
	(safe_from_p): Likewise.
	* expr.c (lang_safe_from_p): New variable.
	(safe_from_p): Give it external linkage.  Use lang_safe_from_p.
	* stmt.c (expand_expr_stmt): Avoid clobberring of last_expr_type.
	* toplev.c (rest_of_decl_compilation): Robustify.
	* tree.c (contains_placeholder_p): Likewise.
	* Makefile.in: Update dependencies.
	* objc/objc-act.h: Adjust calculation of value for dummy_tree_code.
	* objc/objc-act.c: Include rtl.h, expr.h, and c-common.h.
	(objc_expand_function_end): New function.
	(finish_method_def): Use it.
	(init_objc): Initialize more language-specific hooks.
	* objc/Make-lang.in: Update dependencies.

	* cp-tree.h (struct cp_language_function): Remove
	x_scope_stmt_stack and name_declared.
	(current_scope_stmt_stack): Remove.
	(function_name_declared_p): New macro.
	(struct lang_decl_flags): Use c_lang_decl as a base class.
	(context): Remove.
	(struct lang_decl): Replace saved_tree with context.
	(DECL_FRIEND_CONTEXT): Adjust accordingly.
	(SET_DECL_FRIEND_CONTEXT): Likewise.
	(DECL_VIRTUAL_CONTEXT): Likewise.
	(DECL_SAVED_TREE): Remove.
	(C_DECLARED_LABEL_FLAG): Likewise.
	(cplus_expand_expr_stmt): Don't declare.
	(add_decl_stmt): Likewise.
	(add_scope_stmt): Likewise.
	* decl.c (mark_stmt_tree): Remove.
	(case_compare): Likewise.
	(finish_case_label): Use c_add_case_label.
	(init_decl_processing): Set more language-specific hooks.
	(build_enumerator): Fix typo in comment.
	(cplus_expand_expr_stmt): Remove.
	(mark_lang_function): Use mark_c_language_function.
	(lang_mark_tree): Use c_mark_lang_decl.
	* decl2.c: Change order of inclusion.
	* except.c: Likewise.
	* expr.c (cplus_expand_expr): Remove handling of STMT_EXPR.  Fall
	back on c_expand_expr.
	* friend.c: Include expr.h.
	* init.c: Change order of inclusion.
	* Makefile.in: Update dependencies.
	* lex.h (free_lang_decl_chain): Remove.
	* optimize.c (maybe_clone_body): Use function_name_declared_p.
	* pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
	it doesn't exist.
	(instantiate_decl): Use function_name_declared_p.
	* semantics.c (lang_expand_expr_stmt): Remove.
	(set_current_function_name_declared): Likewise.
	(current_function_name_declared): Likewise.
	(begin_compound_stmt): Use function_name_declared_p.
	(add_decl_stmt): Remove.
	(setup_vtbl_ptr): Use function_name_declared_p.
	(add_scope_stmt): Remove.
	(current_scope_stmt_stack): New function.
	(cp_expand_stmt): Don't handle SCOPE_STMTs.
	(expand_body): Use function_name_declared_p.
	* tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
	* typeck.c: Change order of includes.
	(convert_sequence): Remove.

From-SVN: r36464
2000-09-17 07:38:23 +00:00
Joseph Myers
6a357625bd c-common.c (format_wanted_type): New structure.
* c-common.c (format_wanted_type): New structure.
	(check_format_types): New function.
	(check_format_info): Pass all checking of types of format
	arguments, including width and precision arguments, to this new
	function.

From-SVN: r36446
2000-09-15 22:16:31 +01:00
Kaveh R. Ghazi
3ff5f682dc builtins.c (built_in_decls): New array.
* builtins.c (built_in_decls): New array.
	(expand_builtin_fputs): New function.
	(expand_builtin): Handle BUILT_IN_FPUTC and BUILT_IN_FPUTS.

	* builtins.def (BUILT_IN_FPUTC, BUILT_IN_FPUTS): New members.

	* c-common.c (c_common_nodes_and_builtins): Handle fputc/fputs.

	* tree.h (built_in_decls): New array.

From-SVN: r36363
2000-09-12 15:10:50 +00:00
Mark Mitchell
56cb97339b c-common.h (add_stmt): Change prototype.
* c-common.h (add_stmt): Change prototype.
	(RECHAIN_STMTS): New macro.
	(CASE_LABEL_DECL): Likewise.
	(genrtl_case_label): Change prototype.
	(c_expand_start_case): Remove prototype.
	(build_case_label): Change prototype.
	(decl_constant_value): Declare.
	* c-common.c (check_case_value): Handle C++'s extensions to C
	semantics.
	* c-commnon.def (CASE_LABEL): Add room for the CASE_LABEL_DECL
	field.
	* c-parse.in (stmt): Adjust handling of return statements and case
	laels.
	* c-semantics.c (add_stmt): Return the new statement.
	(genrtl_return_stmt): Take the RETURN_STMT as input, not the
	returned expression.  Directly generate RTL, rather than calling
	c_expand_return.
	(genrtl_switch_stmt): Don't call c_expand_start_case.
	(build_case_label): Take the LABEL_DECL as input, too.
	(genrtl_case_label): Just call add_case_node.
	(expand_stmt): Adjust calls to genrtl_return_stmt and
	genrtl_case_label.
	* c-tree.h (c_expand_start_case): Declare.
	* c-typeck.c (decl_constant_value): Give it external linkage.
	(c_expand_return): Don't call expand_return or expand_null_return;
	use genrtl_return_stmt instead.
	* stmt.c (struct nesting): Remove num_ranges field.
	(add_case_node): Give it external linkage.
	(expand_start_case): Don't set num_ranges.
	(expand_start_case_dummy): Don't clear it.
	(pushcase): Rely on add_case_node to handle `default' labels.
	(add_case_node): Handle `default' labels.
	* tree.c (tree_int_cst_compare): New function.
	* tree.h (tree_int_cst_compare): Declare.
	(add_case_node): Likewise.

	* cp-tree.h (push_switch): Change prototype.
	(check_cp_case_value): Remove declaration.
	(decl_constant_value): Likewise.
	* decl.c (struct cp_switch): Add switch_stmt and cases.
	(case_compare): New function.
	(push_switch): Set switch_stmt.  Initialize cases.
	(pop_switch): Clean up cases.
	(define_case_label): Rename to ...
	(finish_case_label): ... this.  Do semantic analysis for case
	labels here.
	(start_function): Correct comment.
	* decl2.c (check_cp_case_value): Remove.
	* expr.c (do_case): Remove.
	* pt.c (tsubst_expr): Adjust call to finish_case_label.
	* semantics.c (genrtl_do_poplevel): Remove declaration.
	(RECHAIN_STMTS): Remove.
	(finish_break_stmt): Use build_break_stmt.
	(finish_continue_stmt): Use build_continue_stmt.
	(finish_switch_cond): Adjust condition here, rater than in
	c_expand_start_case.
	(finish_case_label): Remove.
	* typeck.c (c_expand_return): Remove.
	(c_expand_start_case): Likewise.

From-SVN: r36305
2000-09-10 21:34:41 +00:00
Joseph Myers
2496f0b583 c-common.c (time_char_table): Allow %#b and %#h.
* c-common.c (time_char_table): Allow %#b and %#h.

testsuite:
	* gcc.dg/format-ext-3.c: Test %#b and %#h as formats that should
	be accepted.

From-SVN: r36241
2000-09-07 18:20:04 +01:00
Mark Mitchell
ae499ccea4 Move statement-tree facilities from C++ to C front-end.
* c-common.h (c_tree_index): Add CTI_VOID_ZERO.
	(void_zero_node): New macro.
	(struct stmt_tree_s): New type.
	(stmt_tree): New typedef.
	(struct language_function): New type.
	(last_tree): New macro.
	(last_expr_type): Likewise.
	(walk_tree_fn): New typedef.
	(current_stmt_tree): New function.
	(begin_stmt_tree): Likewise.
	(add_stmt): Likewise.
	(finish_stmt_tree): Likewise.
	(statement_code_p): Likewise.
	(lang_statement_code_p): New variable.
	(walk_stmt_tree): New function.
	(STMT_IS_FULL_EXPR_P): New macro.
	* c-common.c (lang_statement_code_p): New variable.
	(c_common_nodes_and_builtins): Initialize void_zero_node.
	(statement_code_p): New function.
	(walk_stmt_tree): Likewise.
	* c-decl.c (language_function): Rename to ...
	(c_language_function): ... this.  Include language_function.
	(push_c_function_context): Adjust accordingly.
	(pop_c_function_context): Likewise.
	(mark_c_function_context): Likewise.
	(current_stmt_tree): Define.
	* c-semantics.c (begin_stmt_tree): New function.
	(add_stmt): Likewise.
	(prune_unused_decls): Likewise.
	(finish_stmt_tree): Likewise.

	Move statement-tree facilities from C++ to C front-end.
	* cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
	(void_zero_node): Remove.
	(stmt_tree): Likewise.
	(scope_chain): Adjust.
	(language_function): Rename to cp_language_function.
	(cp_function_chain): Adjust.
	(current_stmt_tree): Remove.
	(last_tree): Likewise.
	(last_expr_type): Likewise.
	(struct lang_decl): Adjust.
	(STMT_IS_FULL_EXPR_P): Remove.
	(add_tree): Remove.
	(begin_stmt_tree): Likewise.
	(finish_stmt_tree): Likewise.
	(walk_tree_fn): Likewise.
	(walk_stmt_tree): Likewise.
	* class.c (finish_struct): Replace use of add_tree with add_stmt.
	* decl.c (mark_stmt_tree): Adjust type.
	(init_decl_processing): Don't build void_zero_node.
	(initialize_local_var): Adjust usage of current_stmt_tree.
	(finish_enum): Use add_stmt, not add_tree.
	(save_function_data): Adjust use of language_function.
	(finish_constructor_body): Use add_stmt, not add_tree.
	(finish_destructor_body): Likewise.
	(push_cp_function_context): Adjust use of language_function.
	(pop_cp_function_context): Likewise.
	(mark_lang_function): Likewise.
	(mark_cp_function_context): Likewise.
	* init.c (build_aggr_init): Adjust use of current_stmt_tree.
	(build_vec_init): Likewise.
	* semantics.c (SET_LAST_STMT): Remove.
	(RECHAIN_STMTS): Don't use it.
	(stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
	(current_stmt_tree): Define.
	(add_tree): Remove.
	(finish_goto_stmt): Use add_stmt, not add_tree.
	(finish_expr_stmt): Likewise.
	(begin_if_stmt): Likewise.
	(finish_then_clause): Likewise.
	(begin_while_stmt): Likewise.
	(begin_do_stmt): Likewise.
	(finish_return_stmt): Likewise.
	(begin_for_stmt): Likewise.
	(finish_break_stmt): Likewise.
	(finish_continue_stmt): Likewise.
	(begin_switch_stmt): Likewise.
	(finish_case_label): Likewise.
	(begin_try_block): Likewise.
	(begin_function_try_block): Likewise.
	(begin_handler): Likewise.
	(begin_catch_block): Likewise.
	(begin_compound_stmt): Likewise.
	(begin_asm_stmt): Likewise.
	(finish_asm_stmt): Likewise.
	(finish_label_stmt): Likewise.
	(add_decl_stmt): Likewise.
	(finish_subobject): Likewise.
	(finish_decl_cleanup): Likewise.
	(finish_named_return_value): Likewise.
	(setup_vtbl_ptr): Likewise.
	(add_scope_stmt): Likewise.
	(finish_stmt_expr): Likewise.
	(prune_unused_decls): Remove.
	(begin_stmt_tree): Likewise.
	(finish_stmt_tree): Likewise.
	(prep_stmt): Adjust use of current_stmt_tree.
	(lang_expand_stmt): Likewise.
	* tree.c (statement_code_p): Remove.
	(cp_statement_code_p): New function.
	(walk_stmt_tree): Remove.
	(init_tree): Set lang_statement_code_p.

From-SVN: r36221
2000-09-07 01:36:11 +00:00
Zack Weinberg
0e5921e8a0 Integrated preprocessor.
top level:
	* Makefile.in: Remove all references to c-parse.gperf,
	c-gperf.h, and c-parse.h.  Remove -d from yacc command line
	generating c-parse.c.  Update dependencies.
	* c-parse.gperf, c-gperf.h: Delete.

	* c-common.c: Don't define parse_options, cpp_token, yy_cur,
	yy_lim, or yy_get_token.  Don't define get_directive_line if
	USE_CPPLIB.
	* c-common.h: Add multiple include guard.  Define RID values
	for every keyword in C, C++, and Objective C.  Put all the
	modifiers first.
	(struct c_fileinfo, get_fileinfo, dump_time_statistics): New.
	* c-decl.c (c_decode_option): Handle -lang-objc here.
	(print_lang_identifier): Handle C_IS_RESERVED_WORD case.
	(grokdeclarator): Adjust for new RID scheme.
	(extract_interface_info): New stub.
	* c-lang.c: Don't declare yy_cur or parse_options.
	(lang_init_options): Call cpp_init.  Don't call
	cpp_options_init.
	(lang_init): Don't call check_newline if USE_CPPLIB.

	* c-lex.c: Don't include c-parse.h.  Do include timevar.h.
	Elide lots of unnecessary code if USE_CPPLIB.  Delete code
	rendered unnecessary by new architecture.  Move routines not
	shared with C++ to c-parse.in.  Maintain a local idea of the
	line number.    Handle C++ as well as C.
	[USE_CPPLIB]: Declare and register callbacks for #ident and
	for entering/leaving files.
	(init_c_lex, c_lex): Are now the entry points to this file.
	(check_newline): Break out directive handling to
	process_directive.
	(read_ucs, is_extended_char, utf8_extend_token): Moved here
	from C++ front end.
	(readescape, parse_float): Overhaul.
	(lex_number, lex_string, lex_charconst): Break out of c_lex
	(n'ee yylex).
	(get_fileinfo, update_header_times, dump_one_header,
	dump_time_statistics): New and/or moved here from C++.
	Support per-file data needed by C++ and per-header timing
	statistics (C++ only, at the moment).
	* c-lex.h: Update prototypes.  Add multiple include guard.
	* c-tree.h (struct lang_identifier): Add rid_code field.
	(C_IS_RESERVED_WORD, C_RID_CODE): New.

	* c-parse.in: Include c-pragma.h. Remove unnecesary calls to
	reinit_parse_for_function and/or position_after_white_space.
	(save_filename, save_lineno): Look ahead before saving.
	(label -> identifier ':'): Save file and line before shifting ':'.
	(reservedwords): No need to call get_identifier.
	(init_parse, finish_parse, yyerror, yylex, yyprint,
	make_pointer_declarator): Are now here for C/ObjC.
	(rid_to_yy): Conversion table from RID constants to Yacc codes.

	* c-pragma.c: Rewrite parsing logic to fit with cpplib's
	#pragma registry.  Provide dummy implementation of that
	interface if !USE_CPPLIB.
	* c-pragma.h: Update to match.

	* flags.h: Add multiple include guard.
	(flag_detailed_statistics): Moved here from C++.
	* toplev.c: Define flag_detailed_statistics.

	* gcc.c (C specs): Use %(trad_capable_cpp) for -E|-M|-MM case
	#if USE_CPPLIB.
	* timevar.def (TV_CPP, TV_LEX): New.
	* timevar.h: Add multiple include guard.

	* objc/lang-specs.h: Use %(trad_capable_cpp) for -E|-M|-MM case
	#if USE_CPPLIB.
	* objc/objc-act.c: Don't mention yy_cur or parse_options.
	Initialize cpplib properly.  Force lineno to 0 after first
	call to check_newline.  Don't handle -lang-objc here.
	Move forget_protocol_qualifiers and remember_protocol_qualifiers here.

cp:
	* Make-lang.in, Makefile.in: Remove all references to input.c,
	gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
	* gxx.gperf, hash.h, input.c: Delete.
	* lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
	initialized properly.

	* class.c (fixup_pending_inline): Take a tree, not a
	struct pending_inline *.  All callers changed.
	(init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
	RID_PROTECTED entries in ridpointers[] array here.
	* decl.c (duplicate_decls): Do not refer to struct
	pending_inline.
	(record_builtin_type, init_decl_processing): Use RID_MAX not
	CP_RID_MAX.
	(grokdeclarator): Use C_IS_RESERVED_WORD.
	* decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
	cpplib.
	(grok_x_components): Do not inspect pending_inlines chain.

	* cp-tree.h (struct lang_identifier): Add rid_code entry.
	(C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
	(flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
	(DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
	TIME_IDENTIFIER_FILEINFO): Kill.
	Update prototypes.
	* lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
	single 32-bit word.
	* parse.y: Call do_pending_inlines unconditionally.
	reinit_parse_for_method is now snarf_method.  fn.defpen is no
	longer necessary.  Remove unnecessary <itype> annotation on
	SCOPE.  Do not refer to end_of_file or struct pending_inline.
	* semantics.c (begin_inline_definitions): Call
	do_pending_inlines unconditionally.

	* lex.c: Remove all code now shared with C front end.
	Initialize cpplib properly if USE_CPPLIB.  Put reserved words
	into the get_identifier table.  Rewrite pragma handling to
	work with the registry.  Move code to save tokens for later
	processing to spew.c.

	* spew.c: Rewrite everything in terms of token streams instead
	of text.  Move routines here from lex.c / input.c as
	appropriate.  GC-mark trees hanging off the pending inlines
	chain.

testsuite:
	* g++.old-deja/g++.benjamin/13478.C: Put meaningful tags on
	ERROR markers.
	* g++.old-deja/g++.brendan/crash8.C: Move ERROR marker up one line.
	* gcc.dg/c99-array-nonobj-1.c: Don't expect func[] cases to fail.
	* gcc.dg/wtr-label-1.c: Don't use unconstrained .* in error regexps.
	* gcc.dg/wtr-suffix-1.c: Correct error regexps.
	* gcc.dg/cpp/unc1.c, gcc.dg/cpp/unc2.c, gcc.dg/cpp/unc3.c:
	Preprocess only.
	* gcc.dg/cpp/unc4.c: Adjust line number in dg-error line.
	* gcc.dg/noncompile/const-ll-1.c: Generalize error regexp.

From-SVN: r36216
2000-09-07 00:37:14 +00:00
Joseph Myers
3c786c6945 c-common.h (enum c_tree_index): Add CTI_C_SIZE_TYPE.
* c-common.h (enum c_tree_index): Add CTI_C_SIZE_TYPE.
	(c_size_type_node): Define.
	* c-decl.c (init_decl_processing): Initialize c_size_type_node.
	* c-common.c (enum format_lengths, enum format_std_version,
	format_length_info, format_type_detail, BADLEN, NOLENGTHS,
	format_kind_info, printf_length_specs, scanf_length_specs, T89_I,
	T99_I, T89_L, T99_LL, TEX_LL, T89_S, T89_UI, T99_UI, T89_UL,
	T99_ULL, TEX_ULL, T89_US, T89_F, T99_F, T89_D, T99_D, T89_LD,
	T99_LD, T89_C, T99_SC, T99_UC, T89_V, T94_W, TEX_W, T94_WI,
	TEX_WI, T99_ST, T99_SST, T99_PD, T99_UPD, T99_IM, T99_UIM,
	format_types): Define.
	(format_char_info, print_char_table, scan_char_table,
	time_char_table): Rearrange for new organization of information
	about format length modifiers and standard versions.
	(T_ST): Redefine to use c_size_type_node.
	(check_format_info): Obtain information about length modifiers and
	standard versions from tables.  Adjust warning message wordings.
	Use the name from the user's program for `ll' and `hh' length
	modifiers in warning messages.  Use more informative names for
	wanted types where available (for wchar_t, wint_t, size_t, signed
	size_t, ptrdiff_t, unsigned ptrdiff_t, intmax_t and uintmax_t).

testsuite:
	* gcc.dg/format-diag-1.c: New test.

From-SVN: r36106
2000-09-01 23:09:55 +01:00
Zack Weinberg
63ad61edae top level:
* c-common.c (declare_function_name): Use func_id_node,
	function_id_node, and pretty_function_id_node.  Do not make
	__func__ visible at file scope.
	* c-common.h (c_tree_index): Add CTI_FUNCTION_ID,
	CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID.
	(function_id_node, pretty_function_id_node, func_id_node): New
	macros.
	* c-decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	(c_make_fname_decl): Correct comment.

	* tree.h (struct tree_identifier): Constify pointer member.

	* c-decl.c (pushdecl, implicit_decl_warning): Constify a char *.
	* c-pragma.h (struct weak_syms): Constify name and value members.
	(add_weak): Constify arguments.

	* calls.c (special_function_p): Constify a char *.
	(expand_call): Remove variable which is initialized and then
	never used.
	* dependence.c (struct def_use, struct induction, struct subscript):
	Constify 'variable' member.
	(get_low_bound, have_induction_variable): Constify char * argument.
	(find_induction_variable): Add braces to avoid dangling else.
	(classify_dependence): Constify char * arrays.
	* profile.c (output_func_start_profiler): Constify a char *.
	* stor-layout.c (finalize_record_size): Constify a char *.
	* tree.c (is_attribute_p): Constify a char *.
	* varasm.c (add_weak, remove_from_pending_weak_list): Constify argument.

	* varasm.c (make_function_rtl, make_decl_rtl): Rearrange code
	for comprehensibility.  Do not call get_identifier if we did
	not change the DECL_ASSEMBLER_NAME of the decl.  Use alloca to
	create temporary string constants, not ggc_alloc_string.  No
	need to copy result of ASM_FORMAT_PRIVATE_NAME.  Use const
	char * to hold IDENTIFIER_POINTERs.
ch:
	* inout.c (add_enum_to_list): Use DECL_NAME directly, don't get
	its IDENTIFIER_POINTER and immediately call get_identifier on it.
	* lex.c (yywrap): Constify a char *.
cp:
	* class.c (build_secondary_vtable): Constify a char *.
	* decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	* input.c (struct input_source): Constify 'str'.
	(feed_input): Constify first argument.
	* mangle.c (write_identifier): Constify argument.
	* pt.c (mangle_class_name_for_template): Constify argument.
f:
	* ansify.c: Use #line, not # <number>.
java:
	* jcf-parse.c (set_source_filename): Constify a char *.
	* jcf-write.c (append_innerclasses_attribute,
	make_class_file_name): Constify a char *.  Don't recycle a
	variable for an unrelated purpose.
	* parse.y: (build_alias_initializer_parameter_list): Constify a char *.
	(breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.

From-SVN: r36055
2000-08-29 21:39:49 +00:00
Joseph Myers
343b7260c6 c-common.c (time_char_table): Don't allow width and flags with "z" format.
* c-common.c (time_char_table): Don't allow width and flags with
	"z" format.

testsuite:
	* gcc.dg/format-ext-3.c, gcc.dg/format-ext-4.c,
	gcc.dg/format-ext-5.c: New tests.

From-SVN: r35984
2000-08-25 16:27:57 +01:00
Jim Wilson
aee3c6b038 Fix ia64-linux setjmp failures due to attribute aligned on typedef bug.
* c-common.c (decl_attributes, case A_ALIGN): Revert last change.
	Copy type in a TYPE_DECL, just like pushdecl does.

From-SVN: r35966
2000-08-24 16:48:25 -07:00
Greg McGary
5b47282c68 tree.h (enum tree_index): New member `TI_MAIN_IDENTIFIER'.
* tree.h (enum tree_index): New member `TI_MAIN_IDENTIFIER'.
	(MAIN_NAME_P, main_identifier_node): New macros.
	* c-common.c (c_common_nodes_and_builtins): Init main_identifier_node.
	* c-decl.c (start_decl, grokdeclarator, start_function,
	store_parm_decls, finish_function): Use MAIN_NAME_P.
	* config/avr/avr.c (function_prologue, function_epilogue): Likewise.
	* config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
	* config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
	* config/pdp11/pdp11.c (output_function_prologue): Likewise.

From-SVN: r35945
2000-08-24 20:09:27 +00:00
Joseph Myers
4894ecce4d c-common.c (time_char_table): Don't allow width with %F.
* c-common.c (time_char_table): Don't allow width with %F.
	(check_format_info): Don't allow "Z" length with scanf.

testsuite:
	* gcc.dg/c99-scanf-2.c: Remove test for scanf "Z" length.
	* gcc.dg/format-ext-2.c: New test.

From-SVN: r35940
2000-08-24 17:14:55 +01:00
Joseph Myers
d8eceea40c c-common.c (print_char_table): Allow 'I' flag with %d, %i and %u.
* c-common.c (print_char_table): Allow 'I' flag with %d, %i and
	%u.
	(check_format_info): Support printf 'I' flag; warn about it with
	-pedantic.

testsuite:
	* gcc.dg/c99-printf-2.c, gcc.dg/format-xopen-1.c: Add some more
	tests.
	* gcc.dg/format-ext-1.c: New test.

From-SVN: r35917
2000-08-23 18:32:50 +01:00
Joseph Myers
23e4d0281a c-common.c (check_format_info): Give the 'some locales' warning for strftime %Ey rather than the unconditional...
* c-common.c (check_format_info): Give the 'some locales' warning
	for strftime %Ey rather than the unconditional 'only last 2 digits
	of year' one.

testsuite:
	* gcc.dg/c90-strftime-2.c, gcc.dg/c99-strftime-1.c,
	gcc.dg/c99-strftime-2.c: New tests.

From-SVN: r35874
2000-08-22 15:06:57 +01:00
Joseph Myers
5804a754e5 c-common.c (init_dollar_format_checking, [...]): New functions.
* c-common.c (init_dollar_format_checking,
	maybe_read_dollar_number, finish_dollar_format_checking): New
	functions.
	(dollar_arguments_used, dollar_arguments_count,
	dollar_first_arg_num, dollar_max_arg_used, dollar_format_warned):
	New variables.
	(check_format_info): Support $ formats for scanf and printf width
	and precision.  Always increment format_chars to advance past the
	'*' of precision, not just when the format parameters are
	available to check.

testsuite:
	* gcc.dg/c90-printf-3.c, gcc.dg/c90-scanf-2.c,
	gcc.dg/c90-scanf-3.c, gcc.dg/c90-scanf-4.c,
	gcc.dg/c90-strftime-1.c, gcc.dg/c99-printf-3.c,
	gcc.dg/c99-scanf-1.c, gcc.dg/c99-scanf-2.c, gcc.dg/c99-scanf-3.c,
	gcc.dg/format-xopen-1.c: New tests.

From-SVN: r35856
2000-08-21 20:38:35 +01:00
Joseph Myers
93e2382f2c c-tree.h (flag_hosted): Move declaration from here...
* c-tree.h (flag_hosted): Move declaration from here...
	* c-common.h (flag_hosted): ... to here.
	(flag_noniso_default_format_attributes): New declaration.
	* c-decl.c (flag_noniso_default_format_attributes): New variable.
	(c_decode_option): Set it appropriately for options choosing
	language standard variant.
	* c-common.c (init_function_format_info): Only provide default
	format attributes if flag_hosted.  Only provide the gettext
	formats if flag_noniso_default_format_attributes.  Update
	comments.
	(check_format_info): Disable treatment of %a as a scanf flag in
	C99 mode.

cp:
	* decl.c (flag_hosted, flag_noniso_default_format_attributes): New
	variables.
	* decl2.c (lang_decode_option): Disable gettext attributes for
	-ansi.

From-SVN: r35843
2000-08-21 15:30:38 +01:00
Joseph Myers
f3d360aad1 c-common.c (scan_char_table): Add 'w' to flags for all formats except 'n'.
* c-common.c (scan_char_table): Add 'w' to flags for all formats
	except 'n'.
	(check_format_info): Set 'wide' for scanf format widths.  Warn for
	a zero scanf width.  Make the check for writing into a constant
	object at the first level of indirection; at later levels, warn if
	any type qualifiers are encountered.

testsuite:
	* gcc.dg/c90-scanf-1.c, gcc.dg/c94-scanf-1.c: New tests.

From-SVN: r35842
2000-08-21 15:22:44 +01:00
Joseph Myers
89abf8d1d7 c-common.c (combine_strings, [...]): Refer to ISO C or ISO C89 instead of ANSI C.
* c-common.c (combine_strings, check_format_info): Refer to ISO C
	or ISO C89 instead of ANSI C.
	* c-decl.c (grokdeclarator, xref_tag, finish_struct,
	build_enumerator, do_case): Likewise.
	* c-lex.c (parse_float, yylex): Likewise.
	* c-parse.in: Likewise.
	* c-typeck.c (common_type, build_array_ref, build_binary_op,
	build_unary_op, pedantic_lvalue_warning, build_conditional_expr,
	build_c_cast, convert_for_assignment, set_init_index,
	set_init_label, c_expand_start_case): Likewise.
	* toplev.c (documented_lang_options, display_help): Likewise.

From-SVN: r35576
2000-08-09 00:19:11 +01:00
Joseph Myers
cd7324181a c-common.h (enum c_tree_index): Add CTI_SIGNED_SIZE_TYPE and CTI_UNSIGNED_PTRDIFF_TYPE.
* c-common.h (enum c_tree_index): Add CTI_SIGNED_SIZE_TYPE and
	CTI_UNSIGNED_PTRDIFF_TYPE.
	(signed_size_type_node): Define.
	(unsigned_ptrdiff_type_node): Define.
	* c-decl.c (init_decl_processing): Create the
	signed_size_type_node and unsigned_ptrdiff_type_node types.
	* c-common.c (T_SC): Define.
	(T_SST): Define.
	(T_UPD): Define.
	(print_char_table): Use T_SST for %zd, %zi, %zn.  Use T_UPD for
	%to, %tu, %tx, %tX.  Allow %hhn (T_SC).  Add "c" to the flags for
	%s and %p.
	(scan_char_table): Use T_SC for %hhd, %hhi, %hhn.  Use T_SST for
	%zd, %zi, %zn.  Use T_UPD for %to, %tu, %tx, %tX.  Add "c" to the
	flags for %c, %s and %[.
	(check_format_info): Only allow leniency for signedness of targets
	of character pointers (when pedantic) for formats flagged with
	"c", so for strings but not for %hh formats.  When pedantic, don't
	allow character pointers to substitute for void pointers if a
	second level of indirection is present.

testsuite:
	* gcc.dg/c99-printf-1.c: New test.

From-SVN: r35530
2000-08-06 19:12:49 +01:00
Joseph Myers
c16dc93614 c-common.c (print_char_table): Add entries for the X/Open ' format flag (print decimals with locale's...
* c-common.c (print_char_table): Add entries for the X/Open '
	format flag (print decimals with locale's thousands grouping
	character).  Make %C expect wint_t.
	(check_format_info): If pedantic, warn when the %n$ operand
	number form is used.  Allow for the ' flag; warn about it if
	pedantic.

From-SVN: r35507
2000-08-05 19:31:15 +01:00
Joseph Myers
4e1e54607b c-common.c (time_char_table): Mark up formats added in C99 and make other corrections.
* c-common.c (time_char_table): Mark up formats added in C99 and
	make other corrections.  %D and %g were added in C99.  %Og is an
	extension.  %EX is permitted.  %R, %T, %n, %r, %t were added in
	C99.  %e was added in C99.  %Oj is an extension.  %G and %z are in
	C99 rather than GNU extensions, but %OG and %Oz are extensions.
	%h was added in C99.  %C was added in C99.  %OY and %OC are
	extensions.  Add the C99 format %F.
	(check_format_info): If pedantic and not in C99 mode, warn for C99
	formats, %E and %O.

From-SVN: r35496
2000-08-05 00:03:21 +01:00
Joseph Myers
b8458e3e8b c-common.h (flag_isoc94): Declare.
* c-common.h (flag_isoc94): Declare.
	* c-decl.c (flag_isoc94): Define.
	(c_decode_option): Set flag_isoc94 as appropriate.
	* c-common.c (T_PD, T_IM, T_UIM): Define.
	(format_char_info): Add tlen and jlen.
	(print_char_table): Add entries for %t and %j.  Allow %zn.  Allow
	%F.  Allow %lf.
	(scan_char_table): Add entries for %t and %j.  Allow %F.  Allow
	%l[.
	(time_char_table): Add NULL entries for %t and %j.
	(check_format_info): Allow for %t and %j.  Warn for %F if pedantic
	and not C99.  Warn for %lc, %ls and %l[ if pedantic and not C94.
	Warn for printf %lf if pedantic and not C99.  Don't warn for empty
	precision.  Allow precision argument to be unsigned int.  If
	pedantic, warn for %p passed an argument not a pointer to possibly
	qualified void or a possibly qualified character type, and for
	pointer targets of the wrong sign, except for character pointers.

cp:
	* decl.c (flag_isoc94): New variable.

testsuite:
	* gcc.dg/c90-printf-1.c, gcc.dg/c94-printf-1.c: New tests.

From-SVN: r35482
2000-08-04 17:10:14 +01:00
Joseph Myers
c5ab7f9110 stddef.h: Don't declare wint_t unless __need_wint_t.
* ginclude/stddef.h: Don't declare wint_t unless __need_wint_t.
	* c-common.h (enum c_tree_index): Add CTI_WINT_TYPE.
	(wint_type_node): Define.
	* c-decl.c (WINT_TYPE): Define.
	(init_decl_processing): Create the wint_type_node type.
	* c-common.c (T_WI): Define.
	(print_char_table): Use T_WI for %lc format.

From-SVN: r35481
2000-08-04 17:00:48 +01:00
Joseph Myers
980d86e9b4 c-common.c (init_function_format_info): Add C99 format functions in C99 mode.
* c-common.c (init_function_format_info): Add C99 format functions
	in C99 mode.

From-SVN: r35380
2000-07-31 08:00:34 -06:00
Joseph Myers
e21239a3df c-common.c (scan_char_table): Allow "z" length modifiers on diouxXn formats.
* c-common.c (scan_char_table): Allow "z" length modifiers on
	diouxXn formats.
	(check_format_info): Use TYPE_DOMAIN on the type matched against
	for "z" formats, to retrieve the language size_t rather than the
	internal one.

From-SVN: r35083
2000-07-17 03:07:08 -06:00
Chip Salzenberg
2c492eef0d c-common.c (shorten_compare): Quiet warnings about unsigned comparisons with zero when...
* c-common.c (shorten_compare): Quiet warnings about unsigned
        comparisons with zero when they occur in a system header.

From-SVN: r35077
2000-07-17 02:33:55 -06:00
Joseph Myers
bed10af2a4 c-common.c (check_format_info): Do not make a pedantic objection to the 'L' length modifier if...
* c-common.c (check_format_info): Do not make a pedantic objection
	to the 'L' length modifier if used with a floating point type
	character.

From-SVN: r35076
2000-07-17 02:31:15 -06:00
Kaveh R. Ghazi
1326a48bac c-common.c (combine_strings): Emit a pedantic warning when a string length is greater than the minimum ANSI C...
* c-common.c (combine_strings): Emit a pedantic warning when a
	string length is greater than the minimum ANSI C is required
	to support.

From-SVN: r34999
2000-07-12 21:03:29 +00:00
Mark Mitchell
f09f1de5cf Makefile.in (c-common.o): Don't depend on c-tree.h or c-lex.h.
* Makefile.in (c-common.o): Don't depend on c-tree.h or c-lex.h.
	* c-common.c (ridpointers): Declare.
	* c-common.h (enum rid): Declare.
	(NORID): Likewise.
	(ridpointers): Likewise.
	* c-lex.c (ridpointers): Don't declare.
	(init_lex): Initialize ridpointers.
	* c-lex.h (enum rid): Don't declare.
	(NORID): Likewise.
	(RID_FIRST_MODIFIER): Likewise.
	(ridpointers): Likewise.

	* cp-tree.h (ridpointers): Don't declare.
	* decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
	(record_builtin_java_type): Likewise.
	(init_decl_processing): Likewise.
	* lex.c: Move inclusion of lex.h.
	(ridpointers): Don't define.
	(init_parse): Initialize ripdointers.  Use CP_RID_MAX instead of
	RID_MAX.
	* lex.h (enum rid): Rename to ...
	(enum cp_rid): ... this.
	(ridpointers): Don't declare.
	* parse.y: Move inclusion of lex.h.
	* parse.c: Regenerated.
	* spew.c: Move inclusion of lex.h.

	* cp-tree.h (struct language_function): Remove temp_name_counter.
	(temp_name_counter): Remove.
	(get_temp_name): Change prototype.
	(get_guard): New function.
	(get_guard_cond): Likewise.
	(set_guard): Likewise.
	* cvt.c (build_up_reference): Adjust call to get_temp_name.
	* decl.c (expand_static_init): Use get_guard and friends to
	implement guard variables.
	* decl2.c (get_temp_name): Assume that the variables created are
	always static.
	(get_sentry): Rename to ...
	(get_guard): ... this.  Implement new ABI guard	variables.
	(get_guard_bits): New function.
	(get_guard_cond): Likewise.
	(set_guard): Likewise.
	(start_static_initialization_or_destruction): Use them.
	(do_static_initialization): Replace sentry with guard throughout.
	(do_static_destruction): Likewise.
	* init.c (create_temporary_var): Add comment.

From-SVN: r34815
2000-06-30 18:20:42 +00:00
Catherine Moore
af80d48991 c-common.c (decl_attributes): Differentiate between types and type decls for alignment.
* c-common.c (decl_attributes):  Differentiate between
        types and type decls for alignment.

From-SVN: r34810
2000-06-30 10:59:10 -04:00
Mark Mitchell
ab76ca54bb c-common.c: Include c-common.h, not c-lex.h or c-tree.h.
* c-common.c: Include c-common.h, not c-lex.h or c-tree.h.
	* c-common.h (flag_const_strings): Declare.
	(warn_format): Likewise.
	(flag_traditional): Likewise.
	(flag_isoc99): Likewise.
	(warn_parentheses): Likewise.
	(warn_conversion): Likewise.
	(C_TYPE_OBJECT_P): Likewise.
	(C_TYPE_INCOMPLETE_P): Likewise.
	(C_TYPE_FUNCTION_P): Likewise.
	(C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise.
	(C_EXP_ORIGINAL_CODE): Likewise.
	(build_unary_op): Likewise.
	(build_binary_op): Likewise.
	(lvalue_p): Likewise.
	(default_conversion): Likewise.
	(common_type): Likewise.
	* c-tree.h (C_TYPE_OBJECT_P): Remove.
	(C_TYPE_INCOMPLETE_P): Likewise.
	(C_TYPE_FUNCTION_P): Likewise.
	(C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise.
	(C_EXP_ORIGINAL_CODE): Likewise.
	(common_type): Likewise.
	(default_conversion): Likewise.
	(build_binary_op): Likewise.
	(build_unary_op): Likewise.
	(lvalue_p): Likewise.
	(flag_const_strings): Likewise.
	(warn_format): Likewise.
	(warn_conversion): Likewise.
	(flag_traditional): Likewise.
	(flag_isoc99): Likewise.
	(warn_parentheses): Likewise.

	* cp-tree.h (flag_const_strings): Remove.
	(warn_parentheses): Likewise.
	(warn_format): Likewise.
	(common_type): Likewise.
	(default_conversion): Likewise.
	(build_binary_op): Likewise.
	(cp_build_binary_op): New macro.
	* call.c (build_new_op): Use cp_build_binary_op instead of
	build_binary_op.
	* class.c (build_vtable_entry_ref): Likewise.
	* decl.c (expand_static_init): Likewise.
	(compute_array_index_type): Likewise.
	(build_enumerator): Likewise.
	* decl2.c (delete_sanity): Likewise.
	(start_static_initialization_or_destruction): Likewise.
	* error.c (dump_type_suffix): Likewise.
	* init.c (resolve_offset_ref): Likewise.
	(build_new): Likewise.
	(build_new_1): Likewise.
	(build_vec_delete_1): Likewise.
	(build_vec_init): Likewise.
	(build_delete): Likewise.
	* rtti.c (synthesize_tinfo_fn): Likewise.
	(synthesize_tinfo_var): Likewise.
	* search.c (expand_upcast_fixups): Likewise.
	(fixup_all_virtual_upcast_offsets): Likewise.
	* typeck.c (build_array_ref): Likewise.
	(get_member_function_from_ptrfunc): Likewise.
	(build_binary_op): Add parameter.
	(pointer_int_sum): Use cp_build_binary_op.
	(pointer_diff): Likewise.
	(build_modify_expr): Likewise.
	(get_delta_difference): Likewise.
	(build_ptrmemfunc): Likewise.

From-SVN: r34796
2000-06-30 00:26:03 +00:00
Bernd Schmidt
4061f623a6 Vector support: type node creation & debugging support
From-SVN: r34696
2000-06-25 17:27:28 +00:00
Kaveh R. Ghazi
5538e30f19 * c-common.c (add_c_tree_codes): Fix definition for traditional C.
From-SVN: r34588
2000-06-18 13:09:26 +00:00
Benjamin Chelf
c7d87c0a58 c-common.c (c_tree_code_type): New array.
* c-common.c (c_tree_code_type): New array.
        (c_tree_code_length): Likewise.
	(c_tree_code_name): Likewise.
	(add_c_tree_codes): New function.

        * c-common.h (add_c_tree_codes): Declare.
        (enum c_tree_code): New enum.

	* c-lex.c (init_parse): Added call to add_c_tree_codes.

        * cp/cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
	CP_DUMMY_TREE_CODE. Remove #include "c-common.def".

	* cp/lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
        (cplus_tree_code_length[]): Likewise.
        (cplus_tree_code_name[]): Likewise.
	(init_parse): Added call to add_c_tree_codes. Changed
	LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.

From-SVN: r34577
2000-06-16 19:37:23 -07:00
Jakub Jelinek
11cf4d1831 tree.h (TYPE_USER_ALIGN, [...]): Define.
* tree.h (TYPE_USER_ALIGN, DECL_USER_ALIGN): Define.
	(struct tree_type, struct tree_decl): Add user_align member.
	* stor-layout.c (layout_decl): Set DECL_USER_ALIGN.
	(place_union_field): If BIGGEST_FIELD_ALIGNMENT is defined
	and DECL_USER_ALIGN 0, cap alignment to this value.
	(place_field): Likewise.
	(finalize_type_size): Set TYPE_USER_ALIGN.
	(layout_type): Likewise.
	(initialize_sizetypes): Likewise.
	* c-common.c (decl_attributes): Set TYPE_USER_ALIGN resp.
	DECL_USER_ALIGN to 1.
	* c-decl.c (duplicate_decls): Set DECL_USER_ALIGN.
	(xfer_tag): Set TYPE_USER_ALIGN.
	(finish_struct): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(finish_enum): Likewise.
	* stmt.c (expand_decl): Set DECL_USER_ALIGN.
	(expand_anon_union_decl): Likewise.
	* tree.c (make_node): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(build_index_type): Set TYPE_USER_ALIGN.
	(build_range_type): Likewise.
	(build_common_tree_nodes_2): Likewise.
	* tm.texi (BIGGEST_FIELD_ALIGNMENT): Document the changed meaning.

ch/:
	* decl.c (init_decl_processing): Set TYPE_USER_ALIGN.
	(layout_enum): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	* typeck.c (layout_chill_range_type): Set TYPE_USER_ALIGN.
	(apply_chill_field_layout): Set DECL_USER_ALIGN.
	(layout_chill_struct_type): Set TYPE_USER_ALIGN.

cp/:
	* class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
	(check_bitfield_decl, check_field_decl): Likewise.
	(build_vtbl_or_vbase_field, build_base_field): Likewise.
	(layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
	* decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
	(xfer_tag, finish_enum): Likewise.
	* decl2.c (finish_builtin_type): Likewise.
	* init.c (init_init_processing): Likewise.
	* pt.c (instantiate_class_template): Likewise.
	* rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
	* cp-tree.h (struct lang_type): Add user_align member.
	(CLASSTYPE_USER_ALIGN): Define.

f/:
	* com.c (ffecom_transform_common_): Set DECL_USER_ALIGN.
	(ffecom_transform_equiv_, ffecom_decl_field): Likewise.
	(ffecom_init_0): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(duplicate_decls): Set DECL_USER_ALIGN.

java/:
	* typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
	* parse.y (java_complete_class): Set DECL_USER_ALIGN.
	* parse.c: Rebuilt.

From-SVN: r34541
2000-06-14 07:30:09 +02:00
Mark Mitchell
f6f8291af0 * c-common.c (lang_get_alias_set): Fix typo.
From-SVN: r34500
2000-06-12 19:14:08 +00:00
Mark Mitchell
5b2abab835 c-common.h (c_language_kind): New type.
* c-common.h (c_language_kind): New type.
	(c_language): New variab.e
	* c-common.c (lang_get_alias_set): Don't put structures in
	non-zero alias sets in C++.
	* c-decl.c (c_language): Define it.
	* c-lex.c (doing_objc_thang): Remove.
	* c-tree.h (doing_objc_thang): Make it a macro.
	* objc/objc-act.c (lang_decode_option): Set c_language, not
	doing_objc_thang.

	* decl2.c (c_language): Define.

From-SVN: r34439
2000-06-06 21:54:54 +00:00
Richard Henderson
2e761e4919 alias.c (lang_get_alias_set): Remove.
gcc/
	* alias.c (lang_get_alias_set): Remove.
	(get_alias_set): Call it directly, not indirectly.
	* c-common.c (lang_get_alias_set): Rename from c_get_alias_set.
	* c-common.h (c_get_alias_set): Don't declare.
	* c-decl.c (init_decl_processing): Don't set lang_get_alias_set.
	* expr.h (lang_get_alias_set): Declare as function, not pointer.

gcc/ch/
	* lang.c (lang_get_alias_set): New.

gcc/cp/
	* decl.c (init_decl_processing): Don't set lang_get_alias_set.

gcc/f/
	* com.c (lang_get_alias_set): New.

gcc/java/
	* lang.c (lang_get_alias_set): New.

From-SVN: r34368
2000-06-02 17:33:00 -07:00
Jakub Jelinek
8f215dcec4 c-common.c (c_get_alias_set): Check whether signed_type did not return its argument before calling...
* c-common.c (c_get_alias_set): Check whether signed_type did not
	return its argument before calling get_alias_set on the result.

From-SVN: r34356
2000-06-02 14:50:08 +02:00
Richard Kenner
f824e5c36e alias.c (get_alias_set): Don't call language-specific routine more than is needed and clean up code a bit.
* alias.c (get_alias_set): Don't call language-specific routine more
	than is needed and clean up code a bit.
	* c-common.c (c_get_alias_set): All references whose type
	is char get alias set 0, but character types need not.
	* varasm.c (make_function_rtl): Don't call set_mem_attributes.
	(make_decl_rtl): Don't call it for FUNCTION_DECL.

From-SVN: r34341
2000-06-01 12:18:18 -04:00
Richard Kenner
3bdf5ad138 Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
	* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
	(REG_BASE_VALUE): Remove unneeded cast to unsigned.
	(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
	(find_base_decl): New function, from c_find_base_decl in c-common.c.
	(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
	(get_alias_set): Likewise.
	Major rework to do more things and allow language-specific code
	to just handle special-cases.
	(record_alias_subset): Args are HOST_WIDE_INT.
	(record_component_alias): Local vars are HOST_WIDE_INT.
	Don't handle COMPLEX_EXPR.
	(get_varargs_alias_set): Moved from builtins.c.
	(get_frame_alias_set): New function.
	* builtins.c (expand_builtin_return_address): Use frame alias set.
	(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
	for setjmp buffer.
	(get_memory_rtx): Rework to use set_mem_attributes.
	(get_varargs_alias_set): Deleted from here.
	* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
	(c_find_base_decl): Deleted from here.
	(c_get_alias_set): Remove many cases and rework to just handle
	C-specific cases.
	* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
	* c-decl.c (rtl.h, expr.h): Now included.
	(init_decl_processing): Call record_component_aliases on array types.
	(grokdeclarator): Likewise.
	Set TREE_ADDRESSABLE for all fields that are not bitfields.
	* c-typeck.c (common_type): Call record_component_aliases for array.
	* caller-save.c (setup_save_areas): Rework register loop for unsigned.
	Set all save areas to the frame alias set.
	* calls.c (initialie_argument_information): Call set_mem_attributes.
	(compute_argument_addresses, expand_call): Likewise.
	* explow.c (set_mem_attributes): New function.
	(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
	* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
	LEN and OFFSET now HOST_WIDE_INT.
	(clear_by_pieces): Similar changes.
	(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
	(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
	(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
	(clear_by_pieces_1): Likewise.
	(emit_push_insn): Call set_mem_attributes.
	(expand_expr, case INDIRECT_REF): Likewise.
	(expand_expr, case VAR_DECL): Call change_address.
	* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
	tree_low_cst.
	(get_varargs_alias_set, get_frame_alias_set): New decls.
	(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
	(new_alias_set, set_mem_attributes): Likewse.
	* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
	(assign_stack_temp_for_type): Likewise.
	Can split slot even if alias set since can copy.
	Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
	(assign_temp): Use host_integerp and tree_low_cst.
	(put_var_into_stack): Properly handle SAVE_EXPR.
	(put_addressof_into_stack): Likewise.
	(assign_parms): Call set_mem_attributes.
	Delete #if 0 code.
	(fix_lexical_address): Put reference to chain into frame alias set.
	(expand_function_start): Call set_mem_attributes.
	* integrate.c (expand_inline_function): Likewise.
	* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
	* regmove.c (try_apply_stack_adjustment): Likewise.
	* reload.c (push_reload, make_memloc): Likewise.
	* reload1.c (alter_reg): Make alias sets for spilled pseudos.
	* rtl.def (MEM): Update comment.
	* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
	(move_by_pieces): Change length to HOST_WIDE_INT.
	(record_base_value, record_alias_subset): Delete from here.
	* stmt.c (expand_decl): Call set_mem_attributes.
	* stor-layout.c (finish_record_layout): Call record_component_aliases.i
	* toplev.c (compile_file): Call init_alias_once earlier.
	* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
	from here: now in alias.c.
	* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
	(struct tree_decl): Likewise.
	(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
	* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
	(output_constant_def, force_const_mem): Likewise.
	* cp/Makefile.in (decl.o): Include ../expr.h.
	* cp/decl.c (expr.h): Include.
	(init_decl_processing): Call record_component_aliases for arrays.
	(grokdeclarator): Likewise.
	Set TREE_ADDRESSABLE for fields that aren't bitfields.
	* cp/tree.c (build_cplus_array_type_1): Call record_component_aliases.

From-SVN: r34305
2000-05-31 14:37:31 -04:00
Richard Kenner
8d5e6e2527 tree.h (TREE_CODE_LENGTH): New macro.
* tree.h (TREE_CODE_LENGTH): New macro.
	* c-common.c (c_find_base_decl): Use it.
	* expr.c (safe_from_p): Likewise.
	* print-tree.c (print_node): Likewise.
	* tree.c (make_node, copy_node, get_identifier): Likewie.
	(first_rtl_op, contains_placeholder_p, substitute_in_expr): Likewise.
	(build, build_nt, build_parse_node, simple_cst_equal): Likewise.
	* fold-const.c (make_range): Likewise.
	(fold): Likewise; also use first_rtl_op.
	* c-iterate.c (collect_iterators): Use first_rtl_op.
	* calls.c (calls_function_1): Likewise; also rename TYPE to CLASS.
	Use IS_EXPR_CODE_CLASS.
	(preexpand_calls): Likewise.
	* ggc-common.c (ggc_mark_trees): Rework to use first_rtl_op
	and TREE_CODE_LENGTH.
	* stmt.c (warn_if_unused_value): If no operands, no unused value.
	* ch/lang.c (deep_const_expr): Use first_rtl_op.
	* ch/satisfy.c (satisfy): Use TREE_CODE_LENGTH.
	* cp/method.c (mangle_expression): Use TREE_CODE_LENGTH.
	* cp/tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
	(built_min, cp_tree_equal): Likewise.

From-SVN: r34203
2000-05-27 11:21:17 -04:00
Richard Kenner
dc1618bcad alias.c (aliases_everything_p): Don't special-case QImode here.
* alias.c (aliases_everything_p): Don't special-case QImode here.
	* c-common.c (c_get_alias_set): Do it here.
	Handle BIT_FIELD_REF by getting alias info for arg.
	Use POINTER_TYPE_P.

From-SVN: r34050
2000-05-20 09:28:13 -04:00
Catherine Moore
d20a70b4f6 c-common.c (decl_attributes): For TYPE_DECLs attach the attribute to the decl.
* c-common.c (decl_attributes):  For TYPE_DECLs attach the
        attribute to the decl.
        * c-decl.c (pushdecl): Propagate the USED attribute to the
        type copy.

From-SVN: r33716
2000-05-05 14:16:49 -04:00
Mark Mitchell
a649660541 c-commom.c (c_apply_type_quals_to_decl): REFERENCE_TYPES are always TREE_READONLY.
* c-commom.c (c_apply_type_quals_to_decl): REFERENCE_TYPES are
	always TREE_READONLY.

From-SVN: r33500
2000-04-28 02:04:00 +00:00
Zack Weinberg
06a50fff5b c-common.c (decl_attributes): Set TREE_USED on the object pointed to.
* c-common.c (decl_attributes) [A_ALIAS]: Set TREE_USED on the
	object pointed to.

From-SVN: r33284
2000-04-20 16:09:27 +00:00
Richard Henderson
994a57cd28 builtins.c (expand_builtin_expect): New.
* builtins.c (expand_builtin_expect): New.
        (expand_builtin): Call it.
        * builtins.def (BUILT_IN_EXPECT): New.
        * c-common.c (c_common_nodes_and_builtins): Declare __builtin_expect.
        * extend.texi: Document it.

        * predict.c (expected_value_to_br_prob): New.
        (find_expected_value): New.
        * basic-block.h (expected_value_to_br_prob): Declare.
        * toplev.c (rest_of_compilation): Invoke it.

        * rtl.h (NOTE_EXPECTED_VALUE): New.
        (NOTE_INSN_EXPECTED_VALUE): New.
        * rtl.c (note_insn_name): Update.
        * print-rtl.c (print_rtx): Reorg NOTE_LINE_NUMBER special
        cases; handle NOTE_INSN_EXPECTED_VALUE.

From-SVN: r33211
2000-04-17 09:49:00 -07:00
Jan Hubicka
2a8f6b90c1 alias.c (nonlocal_reference_p): Take a care for CALL_INSNS's fusage field.
* alias.c (nonlocal_reference_p): Take a care for
	CALL_INSNS's fusage field.
	* calls.c (ECF_PURE): New flag.
	(emit_call_1): Handle ECF_PURE calls.
	(initialize_argument_information): Unset ECF_PURE flag too.
	(precompute_arguments): Precompute for ECF_PURE too.
	(expand_call): Handle ECF_PURE calls too.
	(emit_library_call_value_1): Rename no_queue argument to
	fn_type, accept value of 2 as pure function.
	(emit_library_call_value, emit_library_call): Rename no_queue argument
	to fn_type.
	* optabs.c (prepare_cmp_insn): Pass fn_type 2 to memcmp call.

	* tree.h (DECL_IS_PURE): New macro.
	(struct tree_decl): Add pure_flag.
	* c-common.c (enum attrs): Add attribute "pure".
	(init_attributes): Initialize attribute "pure"
	(decl_attributes): Handle attribute "pure".
	* extend.texi (Attribute "pure"): Document.
	* calls.c (expand_call): Add (mem:BLK (scratch)) to "equal from"
	in pure function.
	(flags_from_decl_or_type): Support attribute "pure".

From-SVN: r33138
2000-04-13 13:59:00 +00:00
Geoff Keating
9f720c3eba c-common.c (c_common_nodes_and_builtins): The first parameter to __builtin_va_start and __builtin_va_copy is now either a...
* c-common.c (c_common_nodes_and_builtins): The first parameter to
__builtin_va_start and __builtin_va_copy is now either a 'va_list'
or a reference to a va_list.
* builtins.c (stabilize_va_list): Simplify now we don't have to
work around C array address decay.
* c-typeck.c (convert_for_assignment): Handle assignment to
a reference parameter by taking the address of the RHS.
* ginclude/stdarg.h (va_start): Don't take address of first parameter.
(va_copy): Likewise.
(__va_copy): Likewise.
* ginclude/varargs.h (va_start): Likewise.
(__va_copy): Likewise.

From-SVN: r32821
2000-03-30 00:03:14 +00:00
Kaveh R. Ghazi
dc1c86cbfd c-common.c (c_common_nodes_and_builtins): Don't special case cplus_mode when declaring builtin bzero/bcmp...
* c-common.c (c_common_nodes_and_builtins): Don't special case
	cplus_mode when declaring builtin bzero/bcmp, always avoid
	prototype arguments.

From-SVN: r32805
2000-03-29 16:24:07 +00:00
Kaveh R. Ghazi
e3a709be4d builtins.c (expand_builtin_bzero): New function.
* builtins.c (expand_builtin_bzero): New function.
	(expand_builtin): Handle bzero.

	* builtins.def: Add BUILT_IN_BZERO.

	* c-common.c (c_common_nodes_and_builtins): Provide builtin
	prototype & function for bzero.

From-SVN: r32727
2000-03-24 20:20:56 +00:00
Kaveh R. Ghazi
4b2a62db33 builtins.c (expand_builtin): Handle bcmp.
* builtins.c (expand_builtin): Handle bcmp.

	* builtins.def: Add BUILT_IN_BCMP.

	* c-common.c (c_common_nodes_and_builtins): Provide builtin
	prototype & function for bcmp.

From-SVN: r32715
2000-03-23 21:32:10 +00:00
Theodore Papadopoulo
2f939d9406 builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros.
* builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros.
	* c-common.c (decl_attributes,check_format_info,truthvalue_conversion,
	  c_get_alias_set): Likewise.
	* c-decl.c (duplicate_decls): Likewise.
	* c-typeck.c (default_conversion,build_unary_op): Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* dwarf2out.c (decl_class_context,add_abstract_origin_attribute):
	Likewise.
	* dwarfout.c (decl_class_context,output_type): Likewise.
	* expr.c (get_inner_reference): Likewise.
	* fold-const.c (simple_operand_p,fold): Likewise.
	* function.c (aggregate_value_p): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* varasm.c (named_section): Likewise.

	* call.c (check_dtor_name,build_new_method_call): Likewise.
	* decl.c (push_class_binding,poplevel,pushtag,lookup_namespace_name,
	make_typename_type,check_initializer,cp_finish_decl,xref_tag): Likewise.
	* decl2.c (grokfield,build_expr_from_tree,build_expr_from_tree,
	decl_namespace,arg_assoc_template_arg,arg_assoc,
	validate_nonmember_using_decl,do_class_using_decl): Likewise.
	* error.c (dump_template_argument,dump_expr,cp_file_of,cp_line_of,
	args_to_string): Likewise.
	* friend.c (is_friend): Likewise.
	* lex.c (note_got_semicolon,note_list_got_semicolon,is_global): Likewise.
	* method.c (build_overload_nested_name,build_overload_value,
	build_qualified_name,build_qualified_name,hack_identifier): Likewise.
	* parse.y (typename_sub,typename_sub1): Likewise.
	* pt.c (push_inline_template_parms_recursive,check_template_shadow,
	process_partial_specialization,convert_template_argument,
	template_args_equal,add_pending_template,lookup_template_class,
	for_each_template_parm_r,maybe_fold_nontype_arg,
	tsubst,instantiate_template,type_unification_real,unify,
	instantiate_pending_templates,set_mangled_name_for_template_decl):
	Likewise.
	* repo.c (repo_get_id,repo_template_used): Likewise.
	* search.c (lookup_field_1): Likewise.
	* tree.c (walk_tree,get_type_decl,cp_tree_equal,member_p): Likewise.
	* xref.c (classname): Likewise.

From-SVN: r32698
2000-03-23 00:41:05 +00:00
Mark Mitchell
b8de2d021a c-common.c (c_expand_expr_stmt): Use COMPLETE_TYPE_OR_VOID_P...
* c-common.c (c_expand_expr_stmt): Use COMPLETE_TYPE_OR_VOID_P,
	not COMPLETE_TYPE_P, to check the type of the expression.

From-SVN: r32674
2000-03-21 19:33:42 +00:00
Nathan Sidwell
d0f062fbb3 tree.h (COMPLETE_TYPE_P): New macro.
gcc
	* tree.h (COMPLETE_TYPE_P): New macro.
	(COMPLETE_OR_VOID_TYPE_P): New macro.
	(COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro.
	* stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE.
	* c-aux-info.c (gen_type): Use them.
	* c-common.c (c_expand_expr_stmt): Likewise.
	* c-decl.c (poplevel, pushdecl, start_decl, finish_decl,
	grokdeclarator, grokparms, finish_struct, start_function,
	store_parm_decls, combine_parm_decls): Likewise.
	* c-parse.y (cast_expr): Likewise.
	* c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn,
	c_size_in_bytes, c_alignof, build_component_ref,
	build_indirect_ref, build_array_ref, convert_arguments,
	build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* convert.c (convert_to_integer): Likewise.
	* dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise.
	* dwarfout.c (location_or_const_value_attribute,
	output_enumeration_type_die, output_structure_type_die,
	output_union_type_die, output_type): Likewise.
	* expr.c (safe_from_p, expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	* sdbout.c (sdbout_symbol, sdbout_one_type): Likewise.
	* tree.c (build_array_type, build_function_type,
	build_method_type, build_offset_type, build_complex_type): Likewise.
	* c-parse.c, c-parse.h: Regenerated.
gcc/cp
	* typeck.c (require_complete_type, complete_type,
	complete_type_or_else, c_sizeof, c_sizeof_nowarn,
	build_array_ref, convert_arguments, pointer_diff,
	build_x_unary_op, build_unary_op, build_c_cast,
	build_modify_expr): Use COMPLETE_TYPE_P etc.
	* call.c (is_complete, convert_like_real,
	build_new_method_call): Likewise.
	* class.c (build_vbase_pointer_fields, check_bases,
	build_base_field, finish_struct_1, pushclass): Likewise.
	* cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
	* decl.c (maybe_process_template_type_declaration, pushtag,
	pushdecl, redeclaration_error_message, start_decl, start_decl_1,
	layout_var_decl, check_initializer, cp_finish_decl,
	grokdeclarator, require_complete_types_for_parms,
	grok_op_properties, xref_tag, xref_basetypes,
	check_function_type): Likewise.
	* decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_offset_ref): Likewise.
	* parse.y (structsp): Likewise.
	* pt.c (maybe_process_partial_specialization,
	tsubst_friend_function, instantiate_class_template, tsubst,
	do_type_instantiation, instantiate_pending_templates): Likewise.
	* repo.c (repo_get_id): Likewise.
	* rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
	synthesize_tinfo_var, emit_support_tinfos): Likewise.
	* search.c (lookup_fnfields_1, lookup_conversions): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	* tree.c (build_cplus_method_type): Likewise.
	* typeck2.c (digest_init, build_functional_cast,
	add_exception_specifier): Likewise.
	* parse.h, parse.c: Regenerated.

From-SVN: r32671
2000-03-21 18:10:48 +00:00
Nathan Sidwell
2ce07e2d92 c-common.h (make_fname_decl): Declare.
gcc:
	* c-common.h (make_fname_decl): Declare.
	* c-common.c (make_fname_decl): Define.
	(declare_hidden_char_array): Remove.
	(declare_function_name): Use make_fname_decl.
	* c-decl.c (c_make_fname_decl): New function.
	(init_decl_processing): Set make_fname_decl.

gcc/cp:
	* decl.c (cp_make_fname_decl): New function.
	(wrapup_globals_for_namespace): Don't emit unused static vars.
	(init_decl_processing): Remove comment about use of
	array_domain_type. Set make_fname_decl.
	(cp_finish_decl): Remove __FUNCTION__ nadgering.
	* semantics.c (begin_compound_stmt): Remove
	current_function_name_declared flagging.
	(expand_stmt): Don't emit unused local statics.
	* typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
	specially.

From-SVN: r32418
2000-03-08 11:21:28 +00:00
Richard Kenner
05bccae2ef tree.h (INT_CST_LT, [...]): Remove unneeded casts.
* tree.h (INT_CST_LT, INT_CST_LT_UNSIGNED): Remove unneeded casts.
	(struct tree_int_cst): int_cst_low is now unsigned HOST_WIDE_INT.
	(attribute_hash_list, type_hash_canon): hashcode is now unsigned.
	(type_hash_lookup, type_hash_add, type_hash_list): Likewise.
	(min_precision): Result is unsignd.
	(add_double, neg_double, mul_double): Low word is unsigned.
	(lshift_double, rshift_double, lrotate_double): Likewise.
	(rrotate_double, div_and_round_double): Likewise.
	(tree_floor_log2, compare_tree_int): New functions.
	(preserve_rtl_expr_temps): New declaration.
	* c-common.c (declare_hidden_char_array): Use compare_tree_int.
	(decl_attributes): Use tree_log2 to find alignment.
	Check for TREE_INT_CST_HIGH for format args.
	(min_precision): Now unsigned.
	Use tree_floor_log2.
	(truthvalue_conversion): Delete long-disabled code.
	* c-decl.c (finish_struct): Clean up tests on field width.
	(finish_function): Use compare_tree_int.
	* c-pragma.c (handle_pragma_token): Use tree_log2 for alignment.
	* c-typeck.c (comptypes): Use tree_int_cst_equal.
	(default_conversion, digest_init): Use compare_tree_int.
	(build_binary_op): Use integer_all_onesp and compare_tree_int.
	Fix type errors in forming masks.
	* calls.c (initialize_argument_information): Use compare_tree_int.
	* dbxout.c (dbxout_type): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* except.c (expand_eh_region_start_tree): Use compare_tree_int.
	* expr.c (is_zeros_p, case INTEGER_CST): Use integer_zerop.
	(store_field): Use compare_tree_int.
	(expand_expr, case CONSTRUCTOR): Use TYPE_SIZE_UNIT.
	(expand_expr, case ARRAY_REF): Use compare_tree_int.
	(do_jump, case BIT_AND_EXPR): Use tree_floor_log2.
	(do_store_flag): Use compare_tree_int.
	* fold-const.c (encode, decode): Low part is always unsigned.
	(force_fit_type, add_double, neg_double, mul_double): Likewise.
	(lshift_double, rshift_double, lrotate_double): Likewise.
	(rrotate_double, div_and_round_double, int_const_binop): Likewise.
	(fold_convert): Use compare_tree_int.
	(operand_equal_p, case INTEGER_CST): Use tree_int_cst_equal.
	(invert_truthvalue, case INTEGER_CST): Likewise.
	(fold): Use compare_tree_int; add casts for unsigned TREE_INT_CST_LOW.
	* mkdeps.c (deps_dummy_targets): Make I unsigned.
	* rtl.h (add_double, neg_double, mul_double): Low words are unsigned.
	(lshift_double, rshift_double, lrotate_double, rrotate_double):
	Likewise.
	* stmt.c (expand_decl): Use compare_tree_int and mode_for_size_tree.
	(expand_end_case): Use compare_tree_int.
	(estimate_case_costs): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size_tree): Use compare_tree_int.
	(layout_decl): Likewise.
	(layout_record, layout_union): Make sizes unsigned.
	(layout_type, case VOID_TYPE): TYPE_SIZE must be bitsizetype.
	(layout_type, case QUAL_UNION_TYPE): Use compare_tree_int.
	* tree.c (struct type_hash): hashcode is unsigned.
	(build_type_attribute_variant, type_hash_list): Likewise.
	(type_hash_lookup, type_hash_add, type_hash_canon): Likewise.
	(attribute_hash_list, build_array_type, build_method_type): Likewise.
	(build_complex_type): Likewise.
	(real_value_from_int_cst): Remove unneeded casts.
	(integer_all_onesp): Add casts.
	(tree_floor_log2, compare_tree_int): New functions.
	(build_index_type): Use tree_int_cst_sgn.
	* varasm.c (assemble_variable): Use compare_tree_int.
	* ch/actions.c (chill_convert_for_assignment): INDEX is unsigned
	HOST_WIDE_INT.
	* ch/ch-tree.h (DECL_NESTING_LEVEL): Use TREE_INT_CST_HIGH
	since unsigned.
	* ch/except.c (chill_handle_on_labels): ALTERNATIVE is unsigned.
	Use compare_tree_int.
	(expand_goto_except_cleanup): Likewise.
	* cp/class.c (dfs_modify_vtables): I is now unsigned.
	(check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
	(build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
	* cp/error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
	* cp/init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* cp/method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
	* cp/typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
	Call integer_all_onesp.
	* cp/typeck2.c (process_init_constructor): Use compare_tree_int.
	* f/com.c (ffecom_f2c_set_lio_code_): Use compare_tree_int.
	(ffecom_sym_transform_, ffecom_transform_common_): Likewise.
	(ffecom_transform_equiv_): Likewise.
	* java/decl.c (emit_init_test_initialization): Mark KEY as unused.
	* java/expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	(build_anewarray): Likewise.
	* java/parse.y (patch_newarray): Likewise.
	* java/parse.c: Regenerated.

From-SVN: r32383
2000-03-07 06:41:32 -05:00
Richard Kenner
21318741bb c-common.c (c_common_nodes_and_builtins): Make sizetype_endlink reference the language-equivalent of sizetype.
* c-common.c (c_common_nodes_and_builtins): Make sizetype_endlink
	reference the language-equivalent of sizetype.
	* c-typeck.c (comptypes): Treat sizetype like its language equivalent.
	* fold-const.c (size_binop, size_diffop): Put back checks.
	* gcse.c (dump_hash_table): Fix minor error in last change.
	* stor-layout.c (set_sizetype): Set TYPE_DOMAIN of sizetype.
	Clear TYPE_{NEXT,MAIN}_VARIANT and TYPE_{POINTER,REFERENCE}_to of
	all sizetypes.
	* cp/typeck.c (comptypes): Treat sizetype like its language equivalent.

From-SVN: r32291
2000-03-02 13:29:56 -05:00
Zack Weinberg
23dfa477ce tree.h (TREE_SET_PERMANENT): New macro.
* tree.h (TREE_SET_PERMANENT): New macro.  Document conditions
	under which TREE_PERMANENT will be set.
	* tree.c (make_node, copy_node, make_tree_vec, tree_cons,
	build1): Use TREE_SET_PERMANENT.
	* print-tree.c (print_node): Don't report value of
	TREE_PERMANENT if ggc_p is true.

	* c-common.c (c_get_alias_set): Don't use TREE_PERMANENT to
	decide whether to give a type a new alias set.
	* objc/objc-act.c (build_objc_string_object): Never copy the string.
	* tree.c (make_node): Set DECL_IN_SYSTEM_HEADER irrespective
	of value of 'obstack'.

	* f/com.c (ffecom_type_permanent_copy_): Delete unused function.
        (finish_decl): Don't change TREE_PERMANENT (DECL_INITIAL (decl)).

From-SVN: r32128
2000-02-24 04:04:06 +00:00
Richard Kenner
06ceef4e7b c-common.c (decl_attributes): Set DECL_SIZE_UNIT.
* c-common.c (decl_attributes): Set DECL_SIZE_UNIT.
	* c-decl.c (duplicate_decls, finish_enum): Likewise.
	(finish_decl): Remove -Wlarger-than code from here.
	* flags.h (id_clash_len): Now int.
	(larger_than_size): Now HOST_WIDE_INT.
	* fold-const.c (size_int_wide): No more HIGH parm; NUMBER is signed.
	Clean up checking to see if in table.
	(make_bit_field_ref): Remove extra parm to bitsize_int.
	* ggc-common.c (ggc_mark_tree_children): Mark DECL_SIZE_UNIT.
	* print-tree.c (print_node): Print DECL_SIZE_UNIT and TYPE_SIZE_UNIT.
	* stmt.c (expand_decl): Use DECL_SIZE_UNIT for stack checking size
	and for computing size of decl.
	* stor-layout.c (layout_decl): Set DECL_SIZE_UNIT.
	Move -Wlarger-than code to here.
	(layout_record): Remove extra arg to bitsize_int.
	Set TYPE_BINFO_SIZE_UNIT.
	(layout_union): Remove extra arg to bitsize_int.
	Use proper type for size of QUAL_UNION.
	(layout_type): Remove extra arg to bitsize_int.
	* toplev.c (id_clash_len): Now int.
	(larger_than_size): Now HOST_WIDE_INT.
	(decode_W_option): Clean up id-clash and larger-than- cases.
	* tree.c (get_identifier, maybe_get_identifier): Remove unneeded casts.
	(expr_align, case FUNCTION_DECL): DECL_ALIGN is not defined.
	* tree.h (BINFO_SIZE_UNIT, TYPE_BINFO_SIZE_UNIT, DECL_SIZE_UNIT): New.
	(struct tree_decl): New field size_unit.
	(size_int_wide): No HIGH operand; NUMBER is now signed.
	(size_int_2): Deleted.
	(size_int, bitsize_int): Don't use it and rework args.
	* varasm.c (assemble_variable, output_constructor): Use DECL_SIZE_UNIT.
	* ch/decl.c (layout_enum): Set DECL_SIZE_UNIT.
	* ch/satisfy.c (safe_satisfy_decl): Likewise.
	* cp/class.c (build_primary_vtable, layout_vtable_decl): Likewise.
	(avoid_overlap, build_base_field): Likewise.
	(build_base_field, build_base_fields, is_empty_class):
	Test DECL_SIZE with integer_zero.
	(layout_class_type): Set CLASSTYPE_SIZE_UNIT.
	* cp/cp-tree.h (struct lang_type): New field size_unit.
	(CLASSTYPE_SIZE_UNIT): New macro.
	* cp/decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
	(cp_finish_decl): Delete -Wlarger-than processing.
	* cp/optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
	* cp/pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
	* cp/tree.c (make_binfo): binfo vector is one entry longer.
	(walk_tree): Walk DECL_SIZE_UNIT.
	* f/com.c (ffecom_sym_transform): Use DECL_SIZE_UNIT.
	(ffecom_transform_common_, ffecom_transform_equiv_): Likewise.
	(duplicate_decls): Likewise.
	(ffecom_tree_canonize_ptr_): Delete extra arg to bitsize_int.
	(finish_decl): Delete -Wlarger-than processing.
	* java/class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
	* java/constants.c (build_constants_constructor): Likewise.

From-SVN: r32068
2000-02-19 20:11:00 -05:00
Kaveh R. Ghazi
c69916605c Makefile.in (c-common.o): Depend on $(EXPR_H).
* Makefile.in (c-common.o): Depend on $(EXPR_H).

	* c-common.c: Include expr.h.

	* c-pragma.c (mark_align_stack): Add prototype.

	* caller-save.c (add_stored_regs): Likewise.

	* combine.c (record_promoted_value): Likewise.

	* i386.c (ix86_sched_reorder_pentium, ix86_sched_reorder_ppro):
	Likewise.

	* cppinit.c (new_pending_define): Likewise.

	* cpplib.c (skip_block_comment, skip_line_comment): Likewise.

	* dwarf2out.c (save_rtx, splice_child_die, reverse_die_lists,
	AT_class, AT_flag, AT_int, AT_unsigned, AT_string, AT_ref, AT_loc,
	AT_addr, AT_lbl, get_AT_ref, free_AT, free_die, local_scope_p,
	class_scope_p): Likewise.

	* dwarf2out.h (dwarf2out_set_demangle_name_func,
	dwarf2out_add_library_unit_info): Likewise.

	* ggc.h (ggc_page_print_statistics): Likewise.

	* haifa-sched.c (propagate_deps): Likewise.

	* reg-stack.c (next_flags_user, record_label_references): Likewise.

	* rtl.h (set_stack_check_libfunc): Likewise.

	* toplev.h (set_fatal_function): Likewise.

	* toplev.c (set_fatal_function): Delete prototype.

	* diagnostic.c: Deconstify functions returning malloc'ed ptrs.

From-SVN: r31810
2000-02-06 03:40:46 +00:00
Ulrich Drepper
1d682cca6e c-decl.c (c_decode_option): Accept optional numeric argument to -Wformat and set warn_format.
* c-decl.c (c_decode_option): Accept optional numeric argument to
        -Wformat and set warn_format.
        * c-common.c: Don't emit warning about non-constant printf format
        string unless warn_format > 1.

From-SVN: r31706
2000-01-31 03:31:26 +00:00
Ulrich Drepper
3194854770 Adjust variable names, comments, help strings to c99.
From-SVN: r31689
2000-01-29 18:59:40 +00:00
Zack Weinberg
4dd7201eac c-common.c, [...]: Remove all references to obstack functions obsoleted by GC...
* c-common.c, c-decl.c, c-lang.c, c-lex.c, c-parse.in, c-pragma.c,
	c-typeck.c, objc/objc-act.c: Remove all references to obstack
	functions obsoleted by GC, such as push_obstacks_nochange,
	end_temporary_allocation, savealloc, saveable_tree_cons, etc.
	and code which existed only to decide whether or not to call
	them.  Remove now-unused NESTED argument from start_function;
	all callers changed.  Do not change behavior based on ggc_p.
	The use of the ixp_obstack in c-iterate.c and the util_obstack
	in objc/objc-act.c remain; these are not obsoleted by garbage
	collection.
	* c-tree.h: Update prototype for start_function.

	* c-parse.y, c-parse.c, objc/objc-parse.c, objc/objc-parse.y: Rebuild.

From-SVN: r31611
2000-01-25 17:13:14 +00:00
Richard Henderson
5eda3d66aa builtins.c (expand_tree_builtin): Move ...
* builtins.c (expand_tree_builtin): Move ...
        * c-common.c (expand_tree_builtin): ... here.

From-SVN: r31598
2000-01-24 16:45:14 -08:00
Richard Henderson
1eb8759b1b rtl.def: Add unordered fp comparisions.
* rtl.def: Add unordered fp comparisions.
        * tree.def: Likewise.
	* tree.h: Add ISO C 9x unordered fp comparision builtins.

	* builtins.c (expand_tree_builtin): New function.
	* c-typeck.c (build_function_call): Use it.
	(build_binary_op): Support unordered compares.
	* c-common.c (c_common_nodes_and_builtins): Add unordered compares.

	* combine.c (known_cond): Handle reverse_condition returning UNKNOWN.
	(reversible_comparison_p): Allow UNORDERED/ORDERED to be reversed.
	* cse.c (fold_rtx): Check FLOAT_MODE_P before reversing.
	(record_jump_equiv): Handle reverse_condition returning UNKNOWN.
	* jump.c (reverse_condition): Don't abort for UNLE etc, but
	return UNKNOWN.
	(swap_condition): Handle unordered compares.
	(thread_jumps): Check can_reverse before reversing.
	* loop.c (get_condition): Likewise.  Allow UNORERED/ORDERED to be
	reversed for FP.

	* optabs.c (can_compare_p): New argument CODE.  Verify branch or
	setcc is present before acking for cmp_optab.  Update all callers.
	(prepare_float_lib_cmp, init_optabs): Handle UNORDERED.
	* expmed.c (do_cmp_and_jump): Update for can_compare_p.
	* expr.c (expand_expr): Likewise.  Support unordered compares.
	(do_jump, do_store_flag): Likewise.
	* expr.h (enum libfunc_index): Add unordered compares.

	* Makefile.in (FPBIT_FUNCS): Add _unord_sf.
	(DPBIT_FUNCS): Add _unord_df.
	* config/fp-bit.c (_unord_f2): New.
	* fp-test.c (main): Try unordered compare builtins.

	* alpha-protos.h (alpha_fp_comparison_operator): Declare.
	* alpha.c (alpha_comparison_operator): Check mode properly.
	(alpha_swapped_comparison_operator): Likewise.
	(signed_comparison_operator): Likewise.
	(alpha_fp_comparison_operator): New.
	(alpha_emit_conditional_branch): Handle unordered compares.
	* alpha.h (PREDICATE_CODES): Update.
	* alpha.md (fp compares): Use alpha_fp_comparison_operator.
	(bunordered, bordered): New.

	* cp/call.c (build_over_call): Use expand_tree_builtin.
	* cp/typeck.c (build_function_call_real): Likewise.
	(build_binary_op_nodefault): Handle unordered compares.

	* gcc.c-torture/execute/ieee/fp-cmp-4.c: New.

From-SVN: r31591
2000-01-24 12:10:04 -08:00
Martin v. Löwis
101e59f492 c-parse.in (SAVE_WARN_FLAGS): Create an INTEGER_CST.
* c-parse.in (SAVE_WARN_FLAGS): Create an INTEGER_CST.
	(RESTORE_WARN_FLAGS): Unpack it.
	Change semantic type of extension to ttype.
	* c-common.c (split_specs_attrs): Expect an INTEGER_CST.
	* c-parse.y, c-parse.c, objc/objc-parse.y,
	objc/objc-parse.c: Regenerate.

From-SVN: r31478
2000-01-18 00:01:06 +00:00
Jason Merrill
512b62fb1b configure.in (i?86-*-beos{pe,elf,}*): Recognize.
* configure.in (i?86-*-beos{pe,elf,}*): Recognize.
        * i386/t-beos, i386/x-beos, i386/xm-beos.h: New files.
        * i386/beos-elf.h, i386/beos-pe.h: New files.

        * Makefile.in (CROSS_SYSTEM_HEADER_DIR): New.
        * cross-make (SYSTEM_HEADER_DIR): Define using
        CROSS_SYSTEM_HEADER_DIR.

        * gcc.c (LIBRARY_PATH_ENV): Provide default.
        (process_command): Use it.
        (main): Likewise.  Kill trailing = from env vars.
        (build_search_list): Put it back.
        * collect2.c (main): Use LIBRARY_PATH_ENV.

        * configure.in (GCC_NEED_DECLARATIONS): Add environ.
        * toplev.c: Use NEED_DECLARATION_ENVIRON.

        * tm.texi (Frame Layout): Document SMALL_STACK.
        * c-common.c (c_common_nodes_and_builtins): Check it.

        * system.h: Undef alloca after including glibc's <stdlib.h>,
        if USE_C_ALLOCA is defined.

        * gcc.c (set_input): New fn.
        (main): After all input files are compiled, reset the input file
        info to the first.

        * aclocal.m4 (rindex, index): If already defined, don't attempt
        to redefine.

        * ginclude/varargs.h: (__va_list__): Define ifndef.
        * ginclude/stdarg.h: Likewise.

        * ginclude/stddef.h (__WCHAR_TYPE__) [BEOS]: Use int
        instead of unsigned char.

        * hash.h (true, false, boolean): Undef before enum.

From-SVN: r31366
2000-01-12 19:37:06 -05:00
Kaveh R. Ghazi
6e090c767a c-common.c: PROTO -> PARAMS.
* c-common.c: PROTO -> PARAMS.
        * c-common.h: Likewise.
        * c-decl.c: Likewise.
        * c-iterate.c: Likewise.
        * c-lang.c: Likewise.
        * c-lex.c: Likewise.
        * c-lex.h: Likewise.
        * c-parse.in: Likewise.
        * c-pragma.c: Likewise.
        * c-pragma.h: Likewise.
        * c-tree.h: Likewise.
        * c-typeck.c: Likewise.
        * objc/objc-act.c: Likewise.
        * objc/objc-act.h: Likewise.

From-SVN: r31362
2000-01-12 22:47:13 +00:00
Kaveh R. Ghazi
7bdb32b97e Makefile.in (optabs.o): Depend on real.h
* Makefile.in (optabs.o): Depend on real.h
	(resource.o): Depend on insn-attr.h

	* builtins.c (result_vector): Wrap prototype in macro conditions
	governing definition and use.

	* c-common.c: Include tm_p.h.

	* c-lex.c: Likewise.

	* elfos.h: Constify a char*.

	* final.c (align_fuzz): Wrap prototype in macro HAVE_ATTR_length.
	(get_attr_length, shorten_branches, profile_after_prologue): Mark
	parameter with ATTRIBUTE_UNUSED.

	* fold-const.c (exact_real_inverse): Wrap variable `i' in
	CHECK_FLOAT_VALUE.

	* haifa-sched.c (schedule_insns): Mark parameter with
	ATTRIBUTE_UNUSED.

	* optabs.c: Include real.h.

	* real.h (ereal_atof): Add prototype arguments.

	* resource.c: Include insn-attr.h.

	* sdbout.c (sdbout_queue_anonymous_type,
	sdbout_dequeue_anonymous_types): Wrap in macro
	SDB_ALLOW_FORWARD_REFERENCES.
	(sdbout_init, sdbout_start_new_source_file): Mark parameter with
	ATTRIBUTE_UNUSED.

	* stmt.c (expand_return): Wrap variable `op0' in macro HAVE_return.

	* stupid.c: Include tm_p.h.

	* tree.c (real_value_from_int_cst): Mark parameter with
	ATTRIBUTE_UNUSED.

cp:
	* lex.c: Include tm_p.h.

ch:
	* lex.c: Include tm_p.h.

From-SVN: r31308
2000-01-10 23:48:03 +00:00
Jeff Law
b0a246396f Update copyrights.
From-SVN: r31193
2000-01-04 00:58:40 -07:00
Ulrich Drepper
e316d10779 (time_char_table): Revert change; this was not intended.
From-SVN: r31189
2000-01-03 21:51:13 +00:00
Ulrich Drepper
d125d26857 (format_char_info): Update comment.
(format_char_info): Update comment.  (check_format_info): Recognize 'z'
modifier in the same way 'Z' was recognized.  Emit warning for formats
new in ISO C99 only if flag_isoc9x is not set.

From-SVN: r31188
2000-01-03 21:48:49 +00:00
Gavin Romig-Koch
29ae8f1027 c-common.c (c_common_nodes_and_builtins): Create __builtin_ptrdiff_t and __builtin_size_t.
* c-common.c (c_common_nodes_and_builtins):
	Create __builtin_ptrdiff_t and __builtin_size_t.

From-SVN: r30855
1999-12-10 04:26:06 +00:00
Geoff Keating
a157febd0c c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
* c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
(init_attributes): Add A_NO_LIMIT_STACK.
(decl_attributes): Handle A_NO_LIMIT_STACK.
* c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK.
* explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]:
Handle stack bounds checking.
* flags.h (flag_stack_check): Use the word 'probe' rather than
'check', because the flag doesn't actually cause any checking to
be done.
* function.c (expand_function_start): Set
current_function_limit_stack.
* function.h (struct function): Add limit_stack.
(current_function_limit_stack): Define.
* invoke.texi (Code Gen Options): Document new options.
* rtl.h: Declare stack_limit_rtx.
* toplev.c (stack_limit_rtx): New variable.
(decode_f_option): Handle new options -fstack-limit-register=REG,
-fstack-limit-symbol=IDENT, -fno-stack-limit.
(main): Add stack_limit_rtx as GC root.
* tree.h (DECL_NO_LIMIT_STACK): New macro.
(struct tree_decl): New member no_limit_stack.

* config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle
stack_limit_rtx.
* config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx.
(conditional_trap+1): Get new mnemonic correct.
(conditional_trap+2): New pattern for DImode traps.

* config/m68k/m68k.c (output_function_prologue): Handle
stack_limit_rtx.
* config/m68k/m68k.md (trap): New insn.
(conditional_trap): New insn.
* md.texi (Standard Names): Document `trap' and
`conditional_trap'.
* optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
so a cc0 setter doesn't get emitted at some random place in the
function.

* config/i960/i960.md (trap): New insn.
(conditional_trap): New expander.
(conditional_trap+1, conditional_trap+2): New insns for signed
and unsigned cases.
* config/i960/i960.c (i960_function_prologue): Use
STARTING_FRAME_OFFSET.  Handle stack_limit_rtx.

Co-Authored-By: Greg McGary <gkm@gnu.org>

From-SVN: r30771
1999-12-04 03:00:04 +00:00
Anthony Green
140592a013 tree.h (struct tree_decl): Add malloc_flag.
* tree.h (struct tree_decl): Add malloc_flag.
	(DECL_IS_MALLOC): Define.
	* c-common.c (attrs): Add A_MALLOC attribute.
	(init_attributes): Add this attribute to the table.
	(decl_attributes): Handle malloc attribute.
	* calls.c (special_function_p): Check for the malloc attribute.
	* extend.texi (Function Attributes): Document malloc attribute.

From-SVN: r30689
1999-11-28 20:45:34 +00:00
Kaveh R. Ghazi
913d08334a c-common.c (check_format_info): Don't call a variadic function with a non-literal format string.
* c-common.c (check_format_info): Don't call a variadic function
	with a non-literal format string.

	* c-decl.c (grokdeclarator, start_struct, finish_struct): Likewise.

	* c-typeck.c (build_component_ref, build_unary_op, lvalue_or_else,
	pedantic_lvalue_warning, error_init, pedwarn_init, warning_init):
	Likewise.

	* cccp.c (check_macro_name, do_xifdef, vwarning_with_line):
	Likewise.

	* collect2.c (collect_wait): Likewise.

	* dbxout.c (dbxout_type): Likewise.

	* gcc.c (do_spec_1): Likewise.

	* genemit.c (gen_insn, gen_expand): Likewise.

	* genrecog.c (write_switch, write_subroutine): Likewise.

	* mips-tfile.c (catch_signal, botch): Likewise.

	* print-rtl.c (print_rtx): Likewise.

	* toplev.c (default_print_error_function, report_error_function,
	_fatal_insn): Likewise.

From-SVN: r30666
1999-11-25 16:58:32 +00:00
Richard Kenner
14a774a9d2 [multiple changes]
Fri Oct 29 15:25:07 1999  Arnaud Charlet  <charlet@ACT-Europe.FR>

	* gcov.c (DIR_SEPARATOR): Provide default.
	(output_data): Add test for MS-DOS format absolute filename.
	(fancy_abort): Correct program name.
	(open_files): Open all files in binary mode.
	* libgcc2.c (__bb_exit_func): Likewise.

	* profile.c (init_branch_prob): Specify binary when opening files.

	* flags.h (flag_unwind_tables): New decl.
	* toplev.c (flag_unwind_table): New definition.
	(f_options): Add -funwind-tables.
	(decode_g_option): Clarify warning when unknown -g option is given.
	(rest_of_compilation): If inside an inlined external function,
	pretend we are just being declared.

	* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
	(dwarf2out_frame_finish): Likewise.

Fri Oct 29 06:32:44 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* flow.c (propagate_block): When the last reference to a label
 	before an ADDR_VEC is deleted because the reference is a dead
 	store, delete the ADDR_VEC.

Fri Oct 29 07:44:26 1999  Vasco Pedro  <vp@di.fct.unl.pt>

	* fold-const.c (merge_ranges): In not in0, but in1, handle
	upper bounds equal like subset case.

Thu Oct 28 19:22:24 1999  Douglas Rupp <rupp@gnat.com>

	* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
	passed in a register but moved to the stack.

Thu Oct 28 19:12:57 1999  Sam Tardieu  <tardieu@act-europe.fr>

	* gcc.c (pass_exit_codes, greatest_status): New variables.
	(struct option_map): Add entry for "--pass-exit-codes".
	(execute): Update greatest_status if error.
	(display_help): Add documentation for -pass-exit-codes.
	(process_command): Handle -pass-exit-codes.
	(main): Look at pass_exit_codes and greatest_status on call to exit.

Thu Oct 28 18:06:50 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (find_reloads): Refine test for no input reload
	case to not includes reloads emitted after insn.

	* function.c (find_temp_slots_from_address): Handle sum involving
	a register that points to a temp slot.
	(update_temp_slot_address): Make recursive call if both old and
	new are PLUS with a common operand.
	* calls.c (expand_call): Mark temp slot for result as having
	address taken.

	* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.

	* gcc.c (process_command): Add standard_exec_prefix with "GCC"
	component as well as "BINUTILS".

	* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
	All callers changed.
	* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.

	* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
	gdb extensions, write size of type; also be more consistent
	in using references when this is a subtype.

	* pa.md (extv, extzv, insv): Use define_expand to reject constant
	that is out of range.

	* loop.c (unknown_constant_address_altered): New variable.
	(prescan_loop): Initialize it.
	(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
	(invariant_p, case MEM): Remove handling for volatile and readony;
	check new variable if readonly.
	(check_dbra_loop): Chdeck unknown_constant_address_altered.

	* cse.c (canon_hash, case MEM): Do not record if BLKmode.
	(addr_affects_sp_p): Removed from note_mem_written and only
	define #ifdef AUTO_INC_DEC.

	* alpha.c (input_operand, case ADDRESSOF): Treat as REG.

	* regclass.c (record_reg_classes): Properly handle register move
	directions.

	* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
	Don't think valid if both operands are invalid.
	(struct constant_descriptor): New field RTL.
	(mark_const_hash_entry): Mark it.
	(record_constant{,_rtx}): Initialize it.
	(output_constant_def): Allocate RTL in permanent obstack and
	save in table.
	({record,compare}_constant_1): Modes must match for
	CONSTRUCTOR of ARRAY_TYPE.

	* c-common.h (initializer_constant_valid_p): Delete decl from here.
	* output.h (initializer_constant_valid_p): Move decl to here.
	* c-common.c (initializer_constant_valid_p): Delete function from here.
	* varasm.c (initializer_constant_valid_p): Move function to here.

	* tree.h (STRIP_SIGN_NOPS): New macro.
	* fold-const.c (optimize_minmax_comparison): New function.
	(invert_truthvalue, case WITH_RECORD_EXPR): New case.
	(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
	(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
	cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
	widening conversions.
	(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
	to look at size of mode, not precision of type; also add missing cases.
	(optimize_bit_field_compare, decode_field_reference): Don't try to
	optimize COMPONENT_REF of a PLACEHOLDER_EXPR.

	* dwarf2out.c (ctype.h): Include.
	(dwarf2out_set_demangle_name_func): New function.
	(size_of_line_info): Deleted.
	(output_line_info): Compute size of line info table from difference
	of labels.
	(base_type_die, add_name_attribute): Call demangle function, if any.
	(field_byte_offset): Use bits per word for variable length fields.
	(gen_array_type_die): Add array name.
	(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
	(dwarf2out_add_library_unit_info): New function.

	* explow.c (set_stack_check_libfunc): New function.
	(stack_check_libfunc): New static variable.
	(probe_stack_range): Allow front-end to set up a libfunc to call.

	* combine.c (simplify_comparison): When making comparison in wider
	mode, check for having commuted an AND and a SUBREG.
	(contains_muldiv): New function.
	(try_combine): Call it when dividing a PARALLEL.
	(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
	(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
	a PLUS.
	(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
	use one of the CLOBBERs instead.
	(if_then_else_cond): If comparing against zero, just return thing
	being compared.

	* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
	Don't generate shifts and subtract if have conditional arithmetic.

	* rtl.h (delete_barrier): New declaration.
	* jump.c (jump_optimize): Set up to handle conditional call.
	In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
	(delete_barrier): New function.

	* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.

	* recog.c (nonmemory_operand): Accept ADDRESSOF.

	* tree.c (build_type_attribute_variant): Push to obstack of
	ttype around type_hash_canon call.

	* expr.c (placeholder_list): Move decl to file scope.
	(expand_expr): Don't force access to volatile just because its
	address is taken.
	If ignoring reference operations, just expand the operands.
	(expand_expr, case COMPONENT_REF): Propagate
	EXPAND_CONST_ADDRESS to recursive call when expanding inner.
	Refine test for using bitfield operations vs pointer punning.
	(expand_expr, case CONVERT_EXPR): If converting to
	BLKmode UNION_TYPE from BLKmode, just return inner object.
	Use proper mode in store_field call.
	Properly set sizes of object to store and total size in store_field
	call for convert to union.
	(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
	memory (like for ADDR_EXPR).  Also, don't put constant in register if
	we'll want it in memory.
	(readonly_fields_p): New function.
	(expand_expr, case INDIRECT_REF): Call it if LHS.
	(expand_assignment): Handle a RESULT_DECL where
	DECL_RTL is a PARALLEL.
	(do_jump, case WITH_RECORD_EXPR): New case.
	(get_inner_reference): Always go inside a CONVERT_EXPR
	and NOP_EXPR if both modes are the same.
	(store_field): Use bitfield operations if size of bitsize is not same
	as size of RHS's type.
	Check for bitpos not a multiple of alignment in BLKmode case.
	Do block move in largest possible alignment.
	(store_constructor): Set BITSIZE to -1 for variable size and properly
 	in case of array of BLKmode.
	(expand_expr_unaligned): New function.
	(do_compare_and_jump): Call it.

	* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
	* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
	does not include 'o'.

	* function.c (instantiate_virtual_regs_1, case SET): Handle case where
	both SET_DEST and SET_SRC reference a virtual register.
	(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.

	* integrate.c (expand_inline_function): Handle case of setting
	virtual stack vars register (from built in setjmp); when parameter
	lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
	(subst_constant): Add new parm, MEMONLY.
	(expand_inline_function, integrate_parm_decls): Pass new parm.
	(integrate_decl_tree): Likewise.
	(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
	(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
	(copy_rtx_and_substitute, case SET): Add explicit calls to
	copy_rtx_and_substitute for both sides.

	* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
	constraints.
	(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
	within INDEX_TYPE, instead of before.
	(fixup_gotos): Use f->target_rtl, not the next insn,
	since latter may be from a later fixup.
	(expand_value_return): Correctly convert VAL when promoting function
	return; support RETURN_REG being a PARALLEL.
	(expand_return): When checking for result in regs and having
	cleanup, consider PARALLEL in DECL_RTL as being in regs.

From-SVN: r30299
1999-10-31 20:11:22 -05:00
Kaveh R. Ghazi
3014521537 c-common.c (check_format_info): Avoid non-literal format string warnings when `first_arg_num' is zero.
* c-common.c (check_format_info): Avoid non-literal format string
       warnings when `first_arg_num' is zero.

From-SVN: r30240
1999-10-28 10:53:12 +00:00
Ken Raeburn
ba80674579 c-common.c (check_format_info): Warn if format string isn't a string literal.
* c-common.c (check_format_info): Warn if format string isn't a
        string literal.

From-SVN: r29881
1999-10-09 23:17:41 -06:00
Bernd Schmidt
26db82d823 Allow to distinguish between three classes of builtin functions
From-SVN: r29653
1999-09-24 10:07:04 +00:00
Jason Merrill
12a39b1264 toplev.c (documented_lang_options): Add -fshort-wchar.
* toplev.c (documented_lang_options): Add -fshort-wchar.
	* c-decl.c (c_decode_option): Likewise.
	(init_decl_processing): If -fshort-wchar, use 'short unsigned int'
	for wchar_t.
	* c-common.c, c-lex.c: Get WCHAR_TYPE_SIZE from wchar_type_node.
	* gcc.c (default_compilers): If -fshort-wchar,
	override __WCHAR_TYPE__.
	* tm.texi (C Dialect Options): Add -fshort-wchar.

From-SVN: r29638
1999-09-23 17:03:53 -04:00
Bernd Schmidt
81b3411cdf Move declarations and building code for common tree nodes to tree.[ch]
From-SVN: r29266
1999-09-10 10:36:02 +00:00
Linas Vepstas
f3ad1f9c0d Linas Vepstas <linas@linas.org>
* c-common.c: Use ISGRAPH, ISLOWER, toupper.
        * c-lex.c, cccp.c, cexp.c, cexp.y, cppexp.c, dwarf2out.c, genattr.c,
        genattrtab.c, genemit.c, genextract.c, genpeep.c, tree.c: Likewise.
        * system.h (IN_CTYPE_DOMAIN): Define to 1 if HOST_EBCDIC.
        * defaults.h (TARGET_ESC): Add default.

From-SVN: r29192
1999-09-07 23:51:23 -07:00
Richard Henderson
c530479e15 c-typeck.c (type_lists_compatible_p): Use simple_type_promotes_to.
* c-typeck.c (type_lists_compatible_p): Use simple_type_promotes_to.
        (self_promoting_type_p): Delete.
        (self_promoting_args_p): Move ...
        * c-common.c: ... here.
        (c_common_nodes_and_builtins): Initialize lang_type_promotes_to.
        (simple_type_promotes_to): New.
        * builtins.c (lang_type_promotes_to): New.
        (expand_builtin_va_arg): Use it to give diagnostic for illegal types.
        * c-tree.h (C_PROMOTING_INTEGER_TYPE_P): Move ...
        * c-common.h: ... here.
        (self_promoting_args_p, simple_type_promotes_to): Declare.
        * c-decl.c (duplicate_decls): Use simple_type_promotes_to.
        (grokdeclarator): Likewise.
        * tree.h (lang_type_promotes_to): Declare.

        * cp-tree.h (C_PROMOTING_INTEGER_TYPE_P): Delete.
        * typeck.c (self_promoting_args_p): Delete.

        * gcc.dg/va-arg-1.c: New.

From-SVN: r29180
1999-09-07 21:51:16 -07:00
Bernd Schmidt
1526a0606b Makefile.in (C_AND_OBJC_OBJS): Remove ggc-callbacks.o.
* Makefile.in (C_AND_OBJC_OBJS): Remove ggc-callbacks.o.
	(c-parse.o, c-decl.o, c-lang.o, c-lex.o, c-common.o,
	$(out_object_file)): Depend on ggc.h.
	* c-common.c: Include "ggc.h".
	(combine_strings): If doing GC, use ggc_alloc_string.
	* c-decl.c: Include "ggc.h".
	(ggc_p): Define with value 0.
	(mark_binding_level): New function.
	(init_decl_processing): Add GC roots.
	(mark_c_function_context): New function.
	(lang_mark_false_label_stack): New function.
	(lang_mark_tree): New function.
	(lang_cleanup_tree): New function.
	* c-lang.c: Include "ggc.h".
	(lang_init): Call c_parse_init.
	* c-lex.c: Include "ggc.h".
	(check_linenum): If doing GC, don't copy filenames to permanent
	obstack.
	* c-parse.in: Include "ggc.h".
	(c_parse_init): New function.
	* c-tree.h (c_parse_init, mark_c_function_context): Declare.
	* objc/Make-lang.in (objc-parse.o): Depend on ggc.h.

	* except.c (mark_eh_state): Mark more state.
	* function.c (mark_function_state): Likewise.
	* ggc-simple.c (ggc_alloc_rtvec): Bring in sync with non-gc version.
	(ggc_alloc_string) [GGC_DUMP]: Fix typo.
	* toplev.c (mark_file_stack): New function.
	(compile_file): If doing GC, use ggc_alloc_string on input filename.
	(main): Add root for input_file_stack.

	* i386.c: Include "ggc.h".
	(ix86_mark_machine_status): New function.
	(override_options): Set mark_machine_status.

From-SVN: r29143
1999-09-06 21:28:22 +00:00
Jason Merrill
ccd4c83283 * c-common.c (combine_strings): Always set TREE_CONSTANT.
From-SVN: r28873
1999-08-25 17:05:16 -04:00
Mark Mitchell
b61148dd4f * c-common.c (c_get_alias_set): Update comment.
From-SVN: r28780
1999-08-20 21:57:38 +00:00
Mike Stump
02af3af651 c-common.c (c_get_alias_set): Fix support for poitners and references.
* c-common.c (c_get_alias_set): Fix support for poitners and
	references.

Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r28768
1999-08-19 21:39:04 +00:00
Richard Henderson
7e8176d778 c-typeck.c (initializer_constant_valid_p): Move ...
* c-typeck.c (initializer_constant_valid_p): Move ...
        * c-common.c (initializer_constant_valid_p): ... here.  Use
        FOO_TYPE_P instead of tests against TREE_CODE.  Allow subtraction
        of label addresses.
        * c-common.h (initializer_constant_valid_p): Declare.
        * c-tree.h (initializer_constant_valid_p): Remove.

From-SVN: r28349
1999-07-30 18:13:08 -07:00
Richard Henderson
daf68dd71f builtins.c (stabilize_va_list): Don't INDIRECT_REF through an ARRAY_TYPE.
* builtins.c (stabilize_va_list): Don't INDIRECT_REF through
        an ARRAY_TYPE.
        (std_expand_builtin_va_start): Back out one word if !stdarg_p.
        (expand_builtin_va_end): Evaluate arg for side effects.
        * c-common.c (c_common_nodes_and_builtins): Construct a
        va_list_arg_type_node to handle array decomposition to pointer.

From-SVN: r28283
1999-07-26 22:43:56 -07:00
Richard Henderson
d3707adb79 builtins.c (expand_builtin_saveregs): Remove static, remove exp and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
* builtins.c (expand_builtin_saveregs): Remove static, remove exp
        and ignore arguments, bail if no EXPAND_BUILTIN_SAVEREGS.
        (expand_builtin_next_arg): Accept ARGLIST not EXP.
        (stabilize_va_list): New function.
        (std_expand_builtin_va_start): New function.
        (expand_builtin_va_start): New function.
        (get_varargs_alias_set): New function.
        (std_expand_builtin_va_arg): New function.
        (expand_builtin_va_arg): New function.
        (expand_builtin_va_end): New function.
        (expand_builtin_va_copy): New function.
        (expand_builtin): Call them.
        * c-common.c (c_common_nodes_and_builtins): Build __builtin_va_list,
        __builtin_{varargs_start,stdarg_start,end,copy}.
        (build_va_arg): New function.
        * c-common.h (CTI_PTR_TYPE, ptr_type_node): Delete.
        (build_va_arg): Declare.
        * c-decl.c (ptr_type_node, va_list_type_node): New.
        * c-parse.gperf (__builtin_va_arg): New.
        * c-parse.in (VA_ARG): New token.
        (unary_expr): Recognize it.
        * expr.c (expand_expr): Expand VA_ARG_EXPR.
        * expr.h (std_expand_builtin_va_start): Declare.
        (std_expand_builtin_va_arg): Declare.
        (expand_builtin_va_arg): Declare.
        (get_varargs_alias_set): Declare.
        * tree.def (VA_ARG_EXPR): New.
        * tree.h (BUILT_IN_VARARGS_START): New.
        (BUILT_IN_STDARG_START, BUILT_IN_VA_END): New.
        (ptr_type_node, va_list_type_node): Declare.
        * tm.texi (EXPAND_BUILTIN_SAVEREGS): Kill unused ARGLIST argument.
        * m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
        * m88k.h, m88k.c: Likewise.
        * mn10300.h, mn10300.c: Likewise.
        * pa.h, pa.c: Likewise.
        * rs6000.h, rs6000.c: Likewise.
        * sh.h, sh.c: Likewise.
        * sparc.h, sparc.c: Likewise.

        * emit-rtl.c (operand_subword): Copy alias set.
        (change_address): Likewise.

From-SVN: r28243
1999-07-25 18:21:03 -07:00
Jason Merrill
3773a46b93 gcc.c (default_compilers, cpp-output): Pass -fpreprocessed.
* gcc.c (default_compilers, cpp-output): Pass -fpreprocessed.
	* toplev.c (documented_lang_options): Add -fpreprocessed.
	* cpplib.h (struct cpp_buffer): Add preprocessed.
	* cppinit.c (cpp_handle_option): Handle -fpreprocessed.
	(cpp_start_read): Don't expand macros or emit an initial #line
	directive if -fpreprocessed.

	* cpplib.h (struct cpp_buffer): Added manual_pop for
	better C++ tokenization.
	* cpplib.c (cpp_get_token): Return CPP_EOF if manual_pop.
	Also, support C++ tokenization for ->*, .*, <?, and >? operators.
	* c-common.c (cpp_token): Make non-static.

From-SVN: r28190
1999-07-20 15:13:01 -04:00
Bernd Schmidt
7f4edbcba6 c-common.h: New file.
* c-common.h: New file.
	* c-common.c (permanent_obstack): Delete unused declaration.
	(c_global_trees): New array.
	(c_common_nodes_and_builtins): New function; split off common code
	from init_decl_processing in both c-decl.c and cp/decl.c.
	* c-tree.h: Delete lots of declarations of tree nodes; replaced by
	c_global_trees and accessor macros defined in c-common.h.
	Include c-common.h.
	* c-decl.c: Delete definitions for tree nodes that were replaced by
	c_global_trees.
	(init_decl_processing): Build void_list_node.
	Call c_common_nodes_and_builtins; delete code to generate the common
	builtins here.

	* objc/objc-act.c (build_module_descriptor): Rename variable
	void_list_node to avoid clash with c-common.h.

	* cp/cp-tree.h: Delete lots of declarations of tree nodes; replaced by
	c_global_trees and accessor macros defined in c-common.h.
	(cp_tree_index): New enumeration.
	(cp_global_trees): Declare new array.  Add accessor macros for it, and
	delete declarations of tree nodes replaced by it.
	(builtin_function): Delete macro, add declaration for new function.
	Include c-common.h.
	* cp/decl.c: Delete definitions for tree nodes that were replaced by
	cp_global_trees and c_global_trees.
	(init_decl_processing): Call c_common_nodes_and_builtins; delete code
	to generate the common builtins here.
	(builtin_function): New function.
	* cp/decl2.c (abort_fndecl): Delete declaration.
	* cp/except.c (expand_builtin_return_address): Delete declaration.
	(builtin_return_address_fndecl): Delete variable.
	(const_ptr_type_node): Delete declaration.
	* cp/lex.c (cons_up_default_function): Delete declaration of
	void_list_node.
	* cp/parse.y (void_list_node): Delete declaration.
	* cp/rtti.c (type_info_type_node, tinfo_fn_id, tinfo_fn_type):
	Delete variables.
	(const_string_type_node): Delete declaration.
	* cp/search.c (abort_fndecl): Delete declaration.

	* Makefile.in: Update dependencies.
	* objc/Make-lang.in: Likewise.
	* cp/Makefile.in: Likewise.

From-SVN: r28188
1999-07-20 10:41:10 +00:00
Gavin Romig-Koch
693a61283b For gcc:
* c-common.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Merged from c-typeck.c and cp/typeck.c.
	* c-typeck.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Merged into c-common.
For gcc/cp:
	* typeck.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Merged into c-common.

From-SVN: r27956
1999-07-06 12:34:50 +00:00
Gavin Romig-Koch
835f9b4dad For gcc:
* c-decl.c (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
	(init_decl_processing): Handle/use the two new types.
	* c-common.c (type_for_size,type_for_mode) : Same.
	* c-lex.c (yylex) : Same.
	* c-typeck.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Same.
	* c-tree.h (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
For gcc/cp:
	* cp-tree.h (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
	* decl.c (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
	(init_decl_processing): Handle/use the two new types.
	* lex.c (real_yylex): Same.
	* typeck.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Same.

From-SVN: r27923
1999-07-02 10:30:01 +00:00
Jason Merrill
adfaf194f3 c-common.c (default_valid_lang_attribute): New fn.
* c-common.c (default_valid_lang_attribute): New fn.
	(valid_lang_attribute): New callback ptr.
	(decl_attributes): Call it.  Move init_priority support into
	C++ frontend.

From-SVN: r26419
1999-04-13 17:04:06 -04:00
Jason Merrill
09a076233d c-common.c (decl_attributes, [...]): Allow arrays of classes, too.
* c-common.c (decl_attributes, A_INIT_PRIORITY): Allow arrays
	of classes, too.

From-SVN: r26312
1999-04-09 08:43:24 -04:00
Mumit Khan
b27d2bd5fe cppfiles.c (INO_T_EQ): Handle UWIN.
* cppfiles.c (INO_T_EQ): Handle UWIN.
        * c-common.c (decl_attributes): Flag unrecognized attribute
        functions as warnings instead of as errors.
        Support for i386-pc-uwin.
        * i386/uwin.h: New file.
        * i386/xm-uwin.h: New file.
        * i386/t-uwin: New file.
        * i386/uwin.asm: New file.
        * configure.in (i[3456]86-*-uwin*): Define.
        Add Workaround for vfork bug when hosted on uwin.
        * configure: Regenerate.
        * cccp.c (INO_T_EQ): Undefine. UWIN has inodes.
        (absolute_filename): UWIN uses POSIX pathnames only.
        * libgcc2.c (getpagesize): Do not define for UWIN.
        (mprotect): Likewise.
        * protoize.c (dirent.h): Conditionally include.
        (fputc): Prototype only if it's not a macro.

From-SVN: r25696
1999-03-10 17:58:01 -07:00
Kaveh R. Ghazi
dff01034e5 c-aux-info.c (data_type, [...]): Qualify a char* with the `const' keyword.
* c-aux-info.c (data_type, affix_data_type, gen_decl,
        gen_formal_list_for_type, gen_formal_list_for_func_def, gen_type):
        Qualify a char* with the `const' keyword.
        * c-common.c (declare_hidden_char_array, add_attribute, if_elt,
        declare_function_name, decl_attributes, format_char_info,
        check_format_info, binary_op_error): Likewise.
        * cexp.y (yyerror, error, pedwarn, warning, token): Likewise.
        * gcse.c (dump_hash_table): Likewise.
        * integrate.c (function_cannot_inline_p): Likewise
        * optabs.c: Include insn-config.h earlier.
        (init_libfuncs, init_integral_libfuncs, init_floating_libfuncs):
        Qualify a char* with the `const' keyword.
        * real.c (asctoe24, asctoe53, asctoe64, asctoe113, asctoe,
        asctoeg, mtherr, ereal_atof): Likewise.
        * real.h (ereal_atof): Likewise.
        * sbitmap.c (dump_sbitmap_vector): Likewise.
        * sbitmap.h (dump_sbitmap_vector): Likewise.
        * stmt.c (nesting, n_occurrences, expand_start_case): Likewise.
        * toplev.c (rest_of_compilation): Likewise.
        * tree.h (function_cannot_inline_p, expand_start_case): Likewise.

From-SVN: r25614
1999-03-06 05:34:26 +00:00
Charles G Waldman
8bbd56856d c-common.c (shorten_compare): Get the min/max value from the underlying type of an enumeration...
* c-common.c (shorten_compare): Get the min/max value from the
        underlying type of an enumeration, not the enumerated type itself.

From-SVN: r25228
1999-02-15 17:41:58 -07:00
Zack Weinberg
4d9a1b48f9 c-common.c (UNGETC [USE_CPPLIB=1]): Do nothing if c is EOF.
1999-02-15 16:59 -0500  Zack Weinberg  <zack@midnite.ec.rhno.columbia.edu>
	* c-common.c (UNGETC [USE_CPPLIB=1]): Do nothing if c is EOF.
	* c-lex.c: Likewise.
	* cpplib.c (cpp_push_buffer, cpp_pop_buffer): Use a linked
	list in malloced memory for the buffer stack.
	(cpp_get_token): Don't pop the last buffer off the stack.
	Calls after CPP_EOF has been returned produce CPP_EOF with no
	state change.
	(cpp_finish): Pop last buffer here.
	(do_line): Don't free ip->last_nominal_fname if it is equal to
	ip->fname.
	(special_symbol): If a T_CONST is the empty string, push a
	single `@ ' escape instead.
	(macroexpand): Special symbol buffers have escapes too.
	* cpplib.h (struct cpp_buffer): Remove unused fields, add prev
	buffer pointer.
	(struct cpp_reader): Remove buffer_stack.  Add
	buffer_stack_depth.
	(CPP_PREV_BUFFER, CPP_NULL_BUFFER): Buffer stack is now a
	linked list.

From-SVN: r25218
1999-02-15 14:04:21 +00:00
Benjamin Kosnik
4c4e4fd61b c-common.c (decl_attributes): Fix reserved space for init_priority.
�
Fri Feb  5 11:49:49 1999  Benjamin Kosnik  <bkoz@loony.cygnus.com>
	* c-common.c (decl_attributes): Fix reserved space for init_priority.
	* tree.h (MAX_RESERVED_INIT_PRIORITY): New macro.

From-SVN: r25046
1999-02-05 11:46:14 +00:00
Jeffrey A Law
ab87f8c8d1 Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details.

From-SVN: r24879
1999-01-26 18:43:17 -07:00
Jeff Law
ad83f53748 Fix copyrights.
From-SVN: r24529
1999-01-06 12:48:38 -07:00
Kaveh R. Ghazi
736b02fdfa c-common.c (decl_attributes): Allow applying attribute `unused' on a LABEL_DECL.
* c-common.c (decl_attributes): Allow applying attribute `unused'
        on a LABEL_DECL.
        * c-parse.in (label): Parse attributes after a label, and call
        `decl_attributes' to handle them.
        * gansidecl.h (ATTRIBUTE_UNUSED_LABEL): Define.
        * genrecog.c (OUTPUT_LABEL, write_tree_1, write_tree): When
        generating labels, mark them with ATTRIBUTE_UNUSED_LABEL.
        * invoke.texi: Note that labels can be marked `unused'.

From-SVN: r24478
1999-01-04 07:48:37 +00:00
Ulrich Drepper
6f4d72224e c-common.c (declare_function_name): Declare predefinied variable `__func__'.
* c-common.c (declare_function_name): Declare predefinied variable
        `__func__'.
        * c-decl.c (flag_isoc9x): Set to 1 by default.
        (c_decode_option): Handle -std= option.  Remove -flang-isoc9x.
        (grokdeclarator): Always emit warning about implicit int for ISO C 9x.
        * c-parse.in: Allow constructors in ISO C 9x.
        Rewrite designator list handling.
        Allow [*] parameters.
        Don't warn about comma at end of enum definition for ISO C 9x.
        * cccp.c (c9x): New variable.
        (rest_extension): New variable.
        (print_help): Document new -std= option.
        (main): Recognize -std= option.  Set c9x appropriately.
        (create_definition): Recognize ISO C 9x vararg macros.
        * gcc.c (default_compilers): Adjust specs for -std options.
        (option_map): Add --std.
        (display_help): Document -std.
        * toplev.c (documented_lang_options): Add -std and remove
        -flang-isoc9x.
        * c-lex.c (yylex): Recognize hex FP constants and call REAL_VALUE_ATOF
        or REAL_VALUE_HTOF based on base of the constants.
        * fold-const.c (real_hex_to_f): New function.  Replacement function
        for hex FP conversion if REAL_ARITHMETIC is not defined.
        * real.c (asctoeg): Add handling of hex FP constants.
        * real.h: Define REAL_VALUE_HTOF if necessary using ereal_atof or
        real_hex_to_f.

Co-Authored-By: Richard Henderson <rth@cygnus.com>
Co-Authored-By: Stephen L Moshier <moshier@world.std.com>

From-SVN: r24049
1998-12-01 13:05:17 -08:00
Zack Weinberg
07be2a2372 c-common.c: Change warning messages to say comparison is always true' or comparison is...
* c-common.c: Change warning messages to say `comparison is
        always true' or `comparison is always false' instead of the
        confusing `is always 0', `is always 1'.

From-SVN: r23723
1998-11-19 12:40:56 -07:00
Mark Mitchell
08bc243195 c-common.c (c_get_alias_set): Allow all type-punning through unions.
�
        * c-common.c (c_get_alias_set): Allow all type-punning through
        unions.  Don't get confused about the type of a bit-field, despite
        the antics of build_modify_expr.

From-SVN: r23481
1998-10-31 13:44:46 -07:00
Kaveh R. Ghazi
bf39dde3b1 Reinstall Apr 24th fix, lost during May 6th gcc2 merge:
* c-common.c (check_format_info): Don't check for the 'x'
        format character twice, instead check for 'x' and 'X'

From-SVN: r23472
1998-10-31 07:50:34 +00:00
Jim Wilson
1e2800358a Fix for sparc va_arg macro aliasing problem.
* c-common.c (c_get_alias_set): Handle ARRAY_REF of union field.

From-SVN: r23427
1998-10-29 04:40:21 -08:00
Mark Mitchell
6946bc60bf c-common.c (c_apply_type_quals_to_decl): Don't crash when `restrict' is applied to a non-pointer variable.
* c-common.c (c_apply_type_quals_to_decl): Don't crash when
	`restrict' is applied to a non-pointer variable.

From-SVN: r23213
1998-10-21 09:59:32 +00:00
Mark Mitchell
3932261a55 invoke.texi: Document -flang-isoc9x.
* invoke.texi: Document -flang-isoc9x.
	* Makefile.in (OBJS): Add splay-tree.o.
	(c-common.o): Depend on rtl.h.
	(splay-tree.o): List dependencies and provide build rule.
	* rtl.h (record_alias_subset): New function.
	* alias.c: Include splay-tree.h.
	(alias_set_entry): New type.
	(CHECK_ALIAS_SETS_FOR_CONSISTENCY): Remove.
	(DIFFERENT_ALIAS_SETS_P): Use mem_in_disjoint_alias_sets_p.
	(mems_in_disjoin_alias_sets_p): New function.
	(alias_set_compare): Likewise.
	(insert_subset_children): Likewise.
	(get_alias_set_entry): Likewise.
	* tree.h (TYPE_RESTRICT): New macro.
	(TYPE_UNQUALIFIED): New manifest constant.
	(TYPE_QUAL_CONST): Likewise
	(TYPE_QUAL_VOLATILE): Likewise.
	(TYPE_QUAL_RESTRICT): Likewise.
	(tree_type): Add restrict_flag.  Reduce count of free bits.
	(DECL_POINTER_ALIAS_SET): New macro.
	(DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
	(tree_decl): Add pointer_alias_set.
	(build_qualified_type): New function.
	(build_type_variant): Define in terms of build_qualified_type.
	* tree.c (set_type_quals): New function.
	(make_node): Initializae DECL_POINTER_ALIAS_SET.
	(build_type_attribute_variant): Use build_qualified_type and
	set_type_quals.
	(build_type_variant): Rename, and modify, to become...
	(build_qualified_type): New function.
	(build_complex_type): Use set_type_quals.
	* c-tree.h (C_TYPE_OBJECT_P): New macro.
	(C_TYPE_FUNCTION_P): Likewise.
	(C_TYPE_INCOMPLETE_P): Likewise.
	(C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise.
	(c_apply_type_quals_to_decl): New function.
	(c_build_qualified_type): New function.
	(c_build_type_variant): Define in terms of c_build_qualified_type.
	(flag_isoc9x): Declare.
	* c-typeck.c (qualify_type): Use c_build_qualified_type.
	(common_type): Change to use TYPE_QUALS.
	(comptypes): Likewise.
	(convert_for_assignment): Likewise.
	* c-aux-info.c (gen_type): Likewise.  Deal with `restrict'.
	* c-decl.c (flag_isoc9x): Define.
	(c_decode_option): Handle -flang-isoc9x.
	(grokdeclarator): Update to handle restrict.  Use TYPE_QUALS,
	c_build_qualified_type, etc.  Use c_apply_type_quals_to_decl.
	* c-lex.c (init_lex): Deal with restrict.
	(init_lex): Don't treat restrict as a reserved word in
	-traditional mode, or without -flang-isoc9x.
	* c-lex.h (rid): Add RID_RESTRICT.
	* c-parse.gperf (restrict, __restrict, __restrict__): Make
	equivalent to RID_RESTRICT.
	* c-parse.in (TYPE_QUAL): Update comment.
	* c-common.c: Include rtl.h.
	(c_find_base_decl): New function.
	(c_build_type_variant): Rename, and modify, to become ...
	(c_build_qualified_type): New function.
	(c_apply_type_quals_to_decl): Likewise.
	(c_get_alias_set): For INDIRECT_REFs, check to see if we can find
	a particular alias set for the reference.
	* toplev.c (documented_lang_options): Add -flang-isoc9x.

From-SVN: r23212
1998-10-21 09:53:40 +00:00
Kaveh R. Ghazi
c84e271261 Warning fixes:
* Makefile.in (gencheck.o): Depend on gansidecl.h.
	* c-common.c (print_char_table): Add missing initializers.
	(scan_char_table): Likewise.
	(time_char_table): Likewise.
	* c-decl.c (c_decode_option): Mark parameter `argc' with
	ATTRIBUTE_UNUSED.
	(declare_parm_level): Mark parameter `definition_flag' with
	ATTRIBUTE_UNUSED.
	* c-lex.c (readescape): Use `(unsigned)1' in shift.
	(yylex): Likewise.  Cast `sizeof' to an (int) when comparing
	against one.
	* calls.c (store_one_arg): Remove unused parameter `fndecl'.  All
	callers changed.
	(emit_call_1): Mark parameters `fndecl' and `funtype' with
	ATTRIBUTE_UNUSED.
	(expand_call): Cast result of MIN() to (unsigned int) when
	comparing against an unsigned value.
	* cccp.c (pcfinclude): Remove unused parameter `limit'.  All
	callers changed.
	(make_definition): Remove unused parameter `op'.  All callers
	changed.
	(create_definition): Cast REST_EXTENSION_LENGTH to (long) when
	comparing against the result of pointer arithmetic.
	* config/mips/mips.h (FUNCTION_ARG_BOUNDARY): Cast to (unsigned)
	when comparing against one.
	* dwarf2out.c (dwarf2out_frame_debug): Cast REGNO() and
 	HARD_FRAME_POINTER_REGNUM to (unsigned) when comparing against
 	one.
	(output_die): Move variable `i' into the scope in which it is
	used.  Change its type to `unsigned'.
	(output_die): Cast the result of `strlen' to (int) when passing it
	to ASM_OUTPUT_ASCII().
	(output_pubnames): Likewise.
	(output_line_info): Likewise.
	* emit-rtl.c (global_rtl): Add missing initializers.
	* explow.c (promote_mode): Mark parameter `for_call' with
	ATTRIBUTE_UNUSED.
	* expmed.c (expand_shift): Cast the result of GET_MODE_BITSIZE to
 	`unsigned HOST_WIDE_INT' when comparing against one.
	(synth_mult): Change type of variable `cost' to int.
	(emit_store_flag): Use `(unsigned HOST_WIDE_INT) 1' in shift.
	* expr.c (copy_blkmode_from_reg): Cast BITS_PER_WORD to (unsigned)
	when comparing against one.
	(get_inner_reference): Change variable `alignment' to unsigned.
	(expand_expr): Cast the result of GET_MODE_ALIGNMENT to (unsigned
	int) when comparing against one.
	(expand_builtin_setjmp): Change type of variable `i' to size_t.
	* fold-const.c (div_and_round_double): Cast BASE to
	(HOST_WIDE_INT) when comparing against one.
	* gencheck.c: Include gansidecl.h.
	(main): Mark parameter `argv' with ATTRIBUTE_UNUSED.
	* optabs.c (gen_cond_trap): Mark parameters `code', `op2' and
	`tcode' with ATTRIBUTE_UNUSED.
	* real.c (edivm): Cast constant value to (unsigned long) in
	expression compared against an unsigned value.
	* stmt.c (expand_return): Cast BITS_PER_WORD to (unsigned) when
	comparing against one.
	(expand_end_case): Cast CASE_VALUES_THRESHOLD to (unsigned int)
	when comparing against one.
	* stor-layout.c (mode_for_size): Cast MAX_FIXED_MODE_SIZE to
	(unsigned int) when comparing against one.  Likewise for
	GET_MODE_BITSIZE.
	(smallest_mode_for_size): Likewise.
	(save_storage_status): Mark parameter `p' with ATTRIBUTE_UNUSED.
	(restore_storage_status): Likewise.
	* toplev.c (debug_args): Add missing initializer.
	(f_options): Spelling correction.  Add missing initializers.
	(documented_lang_options): Likewise.
	(debug_end_source_file): Mark parameter `lineno' with
	ATTRIBUTE_UNUSED.
	* tree.c (valid_machine_attribute): Mark parameters `attr_args',
	`decl' and `type' with ATTRIBUTE_UNUSED.
	* varasm.c (decode_reg_name): Cast `sizeof' expression to (int)
	when comparing against one.
	(assemble_variable): Mark parameter `top_level' with
	ATTRIBUTE_UNUSED.
	(assemble_external_libcall): Mark parameter `fun' with
	ATTRIBUTE_UNUSED.
	(output_constant_pool): Mark parameters `fnname' and `fndecl' with
	ATTRIBUTE_UNUSED.

From-SVN: r23054
1998-10-13 15:25:25 +00:00
Ken Raeburn
7d384cc0b3 Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage attribute.
Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage
attribute.  Misc minor bugfixes and tests for it too.

From-SVN: r22983
1998-10-11 02:21:54 +00:00
Jeff Law
21a9616b39 c-common.c (type_for_mode): Only return TItype nodes when HOST_BITS_PER_WIDE_INT is >= 64 bits.
* c-common.c (type_for_mode): Only return TItype nodes when
        HOST_BITS_PER_WIDE_INT is >= 64 bits.
        * c-decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
        when HOST_BITS_PER_WIDE_INT is >= 64 bits.
        (init_decl_processing): Only create TItype nodes when
        HOST_BITS_PER_WIDE_INT is >= 64 bits.
        * c-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
        when HOST_BITS_PER_WIDE_INT is >= 64 bits.

From-SVN: r22912
1998-10-07 22:37:30 -06:00
Nick Clifton
e2af664c2d Add support for #pragma pack(push,<n>) and #pragma pack(pop).
From-SVN: r22710
1998-10-01 10:50:15 +00:00
Mark Mitchell
ece320145f c-common.c (c_get_alias_set): Tighten slightly for FUNCTION_TYPEs and ARRAY_TYPEs.
* c-common.c (c_get_alias_set): Tighten slightly for FUNCTION_TYPEs
	and ARRAY_TYPEs.  Tidy up.  Improve support for type-punning.
	* expr.c (store_field): Add alias_set parameter.  Set the
	MEM_ALIAS_SET accordingly, if the target is a MEM.
	(expand_assignment): Use it.
	(store_constructor_field): Pass 0.
	(expand_expr): Likewise.

From-SVN: r22620
1998-09-28 07:44:12 +00:00
Per Bothner
7e2231e759 Makefile.in (LIBS): Link in libiberty.a.
* Makefile.in (LIBS):  Link in libiberty.a.
        * c-common.c, gcc.c, toplev.c:  Repalce (some) bcopy calls by memcpy.

From-SVN: r22508
1998-09-20 17:54:10 -06:00
Richard Henderson
2ba573431e tree.c (new_alias_set): New function.
* tree.c (new_alias_set): New function.
        * tree.h (new_alias_set): Declare it.
        * c-common.c (c_get_alias_set): Use it.

From-SVN: r22504
1998-09-20 12:02:58 -07:00
Nick Clifton
f09db6e0ca Change HANDLE_PRAGMA macro so that it will work with USE_CPPLIB.
Add INSERT_ATTRIBUTES macro.

From-SVN: r22165
1998-09-02 09:59:57 +00:00
Jason Merrill
d9cf7c8245 c-common.c (combine_strings): Also set TREE_READONLY.
* c-common.c (combine_strings): Also set TREE_READONLY.
	Change warn_write_strings to flag_const_strings.
	* c-decl.c, c-tree.h: Likewise.
cp/
	* tree.c (lvalue_type): Fix for arrays.
	* typeck.c (string_conv_p): New fn.
	(convert_for_assignment): Use it.
	(build_unary_op): Use lvalue_type.
	* call.c (standard_conversion, convert_like): Use string_conv_p.
	(add_function_candidate): Use lvalue_type.
	* cvt.c (convert_to_reference): Likewise.
	* decl2.c (lang_decode_option): Ignore -traditional.
	* decl.c (init_decl_processing): flag_writable_strings inhibits
	flag_const_strings.
	* lang-options.h (lang_options): Add fconst-strings to the list
	of valid options.
	* decl2.c (lang_f_options, lang_decode_option): Likewise.

From-SVN: r21928
1998-08-23 22:08:45 -04:00
Richard Henderson
2004545263 c-common.c (decl_attributes): Issue an error if the argument to alias is not a string.
* c-common.c (decl_attributes): Issue an error if the argument
to alias is not a string.

From-SVN: r21824
1998-08-18 05:40:52 -07:00
Jason Merrill
2ce3c6c615 tree.h: De-conditionalize init_priority code.
* tree.h: De-conditionalize init_priority code.
	* mips.h (NM_FLAGS): Change from -Bp to -Bn.
	* collect2.c (NM_FLAGS): Change from -p to -n.
	* configure.in: Turn on collect2 for mipstx39-elf.
	Handle use_collect2=no properly.
	* c-common.c: De-conditionalize init_priority code.
	* collect2.c (extract_init_priority, sort_ids): New fns.
	(main): Call sort_ids.
	Move sequence_number to file scope.
	* configure.in: Handle --enable-init-priority.
	* c-common.c (attrs): Add A_INIT_PRIORITY.
	(init_attributes, decl_attributes): Likewise.
	* tree.h (DEFAULT_INIT_PRIORITY, MAX_INIT_PRIORITY): New macros.
	* tree.c (get_file_function_name_long): Split out...
	(get_file_function_name): ...from here.
cp/:
	* lang-options.h: Add -finit-priority.
	* decl2.c: Likewise.  Check flag_init_priority instead of
	USE_INIT_PRIORITY.
	* decl2.c (setup_initp): New fn.
	(start_objects, finish_objects, do_ctors): Handle init_priority.
	(do_dtors, finish_file): Likewise.

From-SVN: r21701
1998-08-13 13:29:30 -04:00
Ken Raeburn
07417085a1 Function entry/exit profiling instrumentation:
* expr.h (profile_function_entry_libfunc, profile_function_exit_libfunc):
Declare new variables.
* optabs.c: Define them here.
(init_optabs): Initialize them.
* tree.h (struct tree_decl): New flag no_instrument_function_entry_exit.
(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT): New accessor macro.
* c-decl.c (duplicate_decls): Merge it.
* c-common.c (enum attrs): New value A_NO_INSTRUMENT_FUNCTION.
(init_attributes): Use it for "no_instrument_function".
(decl_attributes): Handle it, for functions that have not yet been compiled.
Set decl flag.
* flags.h (flag_instrument_function_entry_exit): Declare new variable.
* toplev.c (flag_instrument_function_entry_exit): Define it here.
(f_options): New option "instrument-functions".
* function.h (struct function): New field instrument_entry_exit.
* function.c (current_function_instrument_entry_exit): New variable.
(push_function_context_to, pop_function_context_from): Save and restore.
(expand_function_start): Set current_ variable, maybe emit return label and
entry profile call.
(expand_function_end): Maybe emit exit profile call.
Testsuite:
* gcc.c-torture/special/eeprof-1.c: New test, for -finstrument-functions.
* gcc.c-torture/special/special.exp: Run it.

From-SVN: r21495
1998-07-30 10:38:22 +00:00
Mark Mitchell
41472af877 invoke.texi (-fstrict-aliasing): Document.
* invoke.texi (-fstrict-aliasing): Document.
	* rtl.texi (MEM_ALIAS_SET): Document.
	* flags.h (flag_strict_aliasing): Declare.
	* toplev.c (flag_strict_aliasing): Define.
	(f_options): Add -strict-aliasing.
	(main): Set flag_strict_aliasing if -O2 or higher.
	* tree.h (tree_type): Add alias_set field.
	(TYPE_ALIAS_SET): New macro.
	(TYPE_ALIAS_SET_KNOWN_P): Likewise.
	(get_alias_set): Declare.
	* tree.c (lang_get_alias_set): Define.
	(make_node): Initialize TYPE_ALIAS_SET.
	(get_alias_set): New function.
	* print-tree.c (print_node): Dump the alias set for a type.
	* c-tree.h (c_get_alias_set): Declare.
	* c-common.c (c_get_alias_set): New function.
	* c-decl.c (init_decl_processing): Set lang_get_alias_set.
	* expr.c (protect_from_queue): Propogage alias sets.
	(expand_assignment): Calculate alias set for new MEMs.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(put_reg_into_stack): Likewise.
	(gen_mem_addressof): Likewise.
	(assign_parms): Likewise.
	* stmt.c (expand_decl): Likewise.
	* varasm.c (make_decl_rtl): Eliminate redundant clearing of
	DECL_RTL.  Calculate alias set for new MEMs.
	* rtl.def (REG): Add dummy operand.
	(MEM): Add extra operand to store the MEM_ALIAS_SET.
	* rtl.h (MEM_ALIAS_SET): New macro.
	(gen_rtx_MEM): Declare.
	* emit-rtl.c (gen_rtx_MEM): New function.
	* gengenrtl.c (sepcial_rtx): Make MEMs special.
	* alias.c (CHECK_ALIAS_SETS_FOR_CONSISTENCY): New macro.
	(DIFFERENT_ALIAS_SETS_P): Likewise.
	(canon_rtx): Propogate the alias set to the new MEM.
	(true_dependence): Check the alias sets.
	(anti_dependence): Likewise.
	(output_dependence): Likewise.
	* explow.c (stabilize): Progoate alias sets.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* final.c (alter_subreg): Make sure not to leave MEM_IN_STRUCT_P
	in an unpredictable state.  Propogate alias sets.
	* reload1.c (reload): Clear MEM_ALIAS_SET for new MEMs about which
	we have no alias information.

From-SVN: r20719
1998-06-25 15:14:41 +00:00
Jeffrey A Law
f67aab2c6f c-common.c (check_format_info): Initialize length_char and fci to keep -Wall quiet.
* c-common.c (check_format_info): Initialize length_char and
        fci to keep -Wall quiet.

From-SVN: r20627
1998-06-19 17:52:13 -06:00
Andreas Schwab
f0b8d9aab4 c-common.c (truthvalue_conversion): Protect side effects in the expression when splitting a complex value.
* c-common.c (truthvalue_conversion): Protect side effects in the
	expression when splitting a complex value.
	* fold-const.c (fold): Likewise.

From-SVN: r20580
1998-06-19 01:46:50 +00:00
Andreas Schwab
bc516719ec c-common.c (check_format_info): Put back check for C9x `hh' length modifier.
* c-common.c (check_format_info): Put back check for C9x `hh'
	length modifier.  Warn about %n format writing into const.  Remove
	obsolete comment.
	(format_char_info): Fix comments.

From-SVN: r20207
1998-06-03 02:13:21 +00:00
Dave Brolley
c87248620c configure.in (extra_c_objs): add prefix.o.
Thu May 21 11:51:15 1998  Dave Brolley  <brolley@cygnus.com>
	* configure.in (extra_c_objs): add prefix.o.
	(extra_cxx_objs): extra objects for C++ with cpplib.
	* configure: Regenerate.
	* c-tree.h: (get_directive_line): Different prototype for cpplib.
	(GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
	* c-lex.h: (get_directive_line): Not needed here for cpplib.
	* c-lex.c: (yy_cur,yy_lim,yy_get_token): Move to c-common.c.
	(GET_DIRECTIVE_LINE): Move to c-common.c and rename to get_directive_line.
	* c-common.c (parse_in,parse_options,cpp_token): Declare for cpplib.
	(yy_cur,yy_lim,yy_get_token,get_directive,line): Moved here from c-lex.c

From-SVN: r19926
1998-05-21 04:54:04 -04:00
Kaveh R. Ghazi
d6f4ec5199 Warning fixes:
* Makefile.in (c-lang.o): Depend on c-tree.h, c-lex.h and toplev.h.
	(c-lex.o): Depend on output.h.
	(c-common.o): Likewise.
	(stmt.o): Likewise.
	(calls.o): Likewise.
	(integrate.o): Depend on toplev.h.
	(regclass.o): Depend on output.h.
	(final.o): Depend on reload.h.
	* c-common.c: Include output.h.
	(check_format_info): Remove unused variable `integral_format'.
	* c-decl.c (print_lang_decl): Mark parameters `file', `node' and
	`indent' with ATTRIBUTE_UNUSED.
	(print_lang_type): Likewise.
	(maybe_build_cleanup): Likewise for parameter `decl'.
	(copy_lang_decl): Likewise for parameter `node'.
	* c-lang.c: Include c-tree.h, c-lex.h and toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
 	with ATTRIBUTE_UNUSED.
	(lookup_interface): Likewise for parameter `arg'.
	(is_class_name): Likewise.
	(maybe_objc_check_decl): Likewise for parameter `decl'.
	(maybe_objc_comptypes): Likewise for parameters `lhs', `rhs' and
	`reflexive'.
	(maybe_objc_method_name): Likewise for parameter `decl'.
	(build_objc_string): Likewise for parameters `len' and `str'.
	* c-lex.c: Include output.h.
	* c-lex.h (position_after_white_space): Correct typo in prototype.
	* c-tree.h (finish_file, c_expand_start_cond, c_expand_start_else,
 	c_expand_end_cond, init_iterators): Add prototypes.
	* caller-save.c (set_reg_live): Mark parameters `reg' and `setter'
	with ATTRIBUTE_UNUSED.
	* calls.c: Include output.h.
	* cccp.c (pipe_closed): Mark parameter `signo' with
 	ATTRIBUTE_UNUSED.
	* combine.c: Move inclusion of expr.h to after insn-config.h.
	* iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Don't define
	as empty, rather define as ((void)0).
	* sparc.c (sparc_check_64): Add braces around ambiguous `else'.
	Add parentheses around assignment used as truth value.
	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
 	replace with `size_t i' at each location where it is used.
	(cplus_demangle_opname): change type of `i' from int to size_t.
	* cppexp.c (right_shift): Mark parameter `pfile' with
	ATTRIBUTE_UNUSED.
	* cpphash.c (cpp_lookup): Likewise.
	(cpp_hash_cleanup): Likewise.
	* cpplib.c (parse_name): Add a prototype and make it static.
	(null_underflow): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
	(null_cleanup): Likewise for parameters `pbuf' and `pfile'.
	(macro_cleanup): Likewise for parameter `pfile'.
	(file_cleanup): Likewise.
	* cpplib.h (cpp_reader_init, cpp_options_init, cpp_start_read,
 	cpp_read_check_assertion, skip_rest_of_line): Add prototypes.
	* crtstuff.c (force_to_data, __CTOR_LIST__, force_to_data,
	__DTOR_END__, __FRAME_END__): Mark with ATTRIBUTE_UNUSED.
	* cse.c (cse_check_loop_start): Mark parameter `set' with
 	ATTRIBUTE_UNUSED.
	* dbxout.c (flag_minimal_debug, have_used_extensions,
	source_label_number): Move inside macro wrapper check against
	defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO).
	* dwarf2out.c (gen_entry_point_die): Hide prototype and definition.
	* except.h (doing_eh): Provide prototype.
	* expr.c: Move inclusion of expr.h to after insn-config.h.
	* final.c: Include reload.h.
	(shorten_branches): Cast the first argument of bzero to char *.
	* fix-header.c (cpp_print_containing_files): Mark parameter
 	`pfile' with ATTRIBUTE_UNUSED.
	(cpp_fatal): Likewise.
	* flow.c (find_basic_blocks_1): Cast the first argument of bzero
	to char *.
	* genattrtab.c (make_length_attrs): Change the type of variable
	`i' from int to size_t.
	(zero_fn): Mark parameter `exp' with ATTRIBUTE_UNUSED.
	(one_fn): Likewise.
	* genextract.c (main): When generating insn-extract.c, mark
	variable `junk' with ATTRIBUTE_UNUSED.
	* gengenrtl.c (gencode): When generating genrtl.c, cast the first
	argument of bzero to char*.
	* integrate.c: Include toplev.h.
	* libgcc2.c: Wrap `struct exception_table' and
	`find_exception_handler' in macro DWARF2_UNWIND_INFO.
	* objc/Make-lang.in (objc-act.o): Depend on toplev.h.
	* objc/objc-act.c: Include toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
	with ATTRIBUTE_UNUSED.
	(finish_protocol): Likewise for parameter `protocol'.
	* output.h (declare_weak): Add prototype.
	(decode_reg_name): Don't wrap with TREE_CODE macro.
	(assemble_alias): Add prototype.
	* regclass.c: Include output.h.
	* reload.h (reloads_conflict): Add prototype.
	* rtl.h (print_rtl_single, mark_elimiation, reg_class_subset_p,
	output_func_start_profiler): Add prototypes.
	* rtlanal.c (reg_set_p_1): Mark parameters `x' and `pat' with
 	ATTRIBUTE_UNUSED.
	* scan-decls.c: Include scan.h.
	* scan.h (recognized_function, recognized_extern): Add prototypes.
	* stmt.c: Include output.h.
	* toplev.c (error_for_asm, warning_for_asm): Remove prototypes.
	(output_lang_identify): Hide prototype and definition.
	(float_signal): Mark parameter `signo' with ATTRIBUTE_UNUSED.
	(pipe_closed): Likewise.
	* toplev.h (count_error, strip_off_ending, error_for_asm,
 	warning_for_asm): Add prototypes.

From-SVN: r19712
1998-05-13 12:40:39 +00:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
Kaveh R. Ghazi
e9a780ecec c-common.c: Convert to using ctype macros defined in system.h.
* c-common.c: Convert to using ctype macros defined in system.h.
        * c-lex.c: Likewise.
        * cccp.c: Likewise.
        * collect2.c: Likewise.
        * rs6000.c: Likewise.
        * cpplib.c: Likewise.
        * fix-header.c: Likewise.
        * gcc.c: Likewise.
        * gen-protos.c: Likewise.
        * pexecute.c: Likewise.
        * protoize.c: Likewise.
        * rtl.c: Likewise.
        * scan.c: Likewise.
        * stmt.c: Likewise.
        * tlink.c: Likewise.
        * toplev.c: Likewise.

From-SVN: r19579
1998-05-06 12:56:58 +00:00
Robert Lipe
5f6da3024b toplev.h: New file.
Wed May  6 06:35:38 1998  Robert Lipe  <robertl@dgii.com>
        * toplev.h: New file.   Protypes for functions in toplev.c.
        * tree.h, rtl.h: Deleted protos for functions in toplev.c.
        * c-common.c, c-convert.c, c-decl.c, c-iterate.c, c-lex.c,
        c-parse.in, c-parse.y, c-pragma.c, c-typeck.c, calls.c,
        convert.c, dwarf2out.c, except.c, expr.c, final.c, fold-const.c,
        function.c, hash.c, profile.c, real.c, reg-stack.c, regclass.c,
        reload.c, reload1.c, stmt.c, stor-layout.c, tlink.c, tree.c,
        varasm.c: include it.

From-SVN: r19563
1998-05-06 04:45:47 +00:00
Jeff Law
f5963e6170 * Check in merge from gcc2. See ChangeLog.12 for details.
From-SVN: r19553
1998-05-05 17:18:02 -06:00
Jim Wilson
c6a9dea8d5 Fix old -pedantic error I noticed while reviewing patch from Ulrich.
* c-common.c (scan_char_table): Separate 's' and 'c'.  'c' does not
	accept 'a' flag.  'S' does accept 'a' flag.
	(check_format_info): When pedantic, warn for m/C/S/a/A formats,
	and `a' flag.

From-SVN: r19545
1998-05-05 08:37:37 -07:00
Ulrich Drepper
b57062ca3d (format_char_info): Add new field hhlen.
(print_char_table, scan_char_table, time_char_table): Initialize
hhlen field appropriately.
(char_format_info): Recognize hh modifier and lookup correct char
table entry.

From-SVN: r19532
1998-05-04 20:19:33 +00:00
Kaveh R. Ghazi
753a73c846 Fix a typo:
* c-common.c (check_format_info): Don't check for the 'x' format
	character twice, instead check for 'x' and 'X'

From-SVN: r19396
1998-04-24 06:27:03 +00:00
Jeffrey A Law
a6d7e15639 c-common.c (type_for_mode): Handle TI types.
* c-common.c (type_for_mode): Handle TI types.
        * c-decl.c (intTI_type_node, unsigned_int_TI_type_node): Define.
        (init_decl_processing): Handle TI types.
        * c-tree.h (intTI_type_node, unsigned_int_TI_type_node): Declare.

From-SVN: r19355
1998-04-21 07:25:56 -06:00
Mark Mitchell
a62e870c5b c-common.c (declare_hidden_char_array): Use TYPE_DOMAIN to get the length of an array, not TREE_TYPE.
1998-04-15  Mark Mitchell  <mmitchell@usa.net>
	* c-common.c (declare_hidden_char_array): Use TYPE_DOMAIN to get
	the length of an array, not TREE_TYPE.

From-SVN: r19233
1998-04-16 00:12:43 +00:00
Jason Merrill
72f54004c0 fix merge breakage
From-SVN: r19196
1998-04-13 07:05:58 -04:00
Paul Eggert
bb72a0843b This change is from an idea suggested by Arthur David Olson.
* c-common.c (decl_attributes, record_function_format,
	check_format_info, init_function_format_info):
	Add support for strftime format checking.
	(enum format_type): New type.
	(record_function_format): Now static, and takes value of type
	enum format_type instead of int.
	(time_char_table): New constant.
	(struct function_format_info): format_type member renamed from is_scan.
	(check_format_info): Use `warning' rather than sprintf followed by
	`warning', to avoid mishandling `%' in warnings.
	Change `pedwarn' to `warning', since these warnings do not necessarily
	mean the program does not conform to the C Standard, as the code
	need not be executed.
	* c-tree.h (record_function_format): Remove decl; no longer extern.
	* extend.texi: Add documentation for strftime format checking.

From-SVN: r19151
1998-04-12 13:52:16 -06:00
Jeff Law
e5e809f419 * Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12
for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18984
1998-04-04 06:32:39 -07:00
Jim Wilson
a16b4c9c69 Fix bug reported by David C Binderman, accept 'L' when pedantic with FP format.
* c-common.c (check_format_info): Initialize type, is_type.  New local
	integral_format.  Don't warn for 'L' when pedantic.  Do warn for 'L'
	when pedantic if used with integral format specifier.

From-SVN: r18827
1998-03-25 05:42:05 -08:00
Kaveh R. Ghazi
670ee92097 Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
        c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
        caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
        dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
        expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
        integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
        prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
        reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
        rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
        tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
        on system.h.
        * alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
        c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
        caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
        dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
        expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
        integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
        prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
        reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
        rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
        stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
        xcoffout.c: Include system.h.  Organize include ordering so
        that stdarg/varargs comes before other system headers.  Remove
        spurious casts of functions assured of a prototype in system.h.

From-SVN: r18726
1998-03-20 14:58:42 +00:00
Brendan Kehoe
d9525bec09 tree.h (merge_machine_{type,decl}_attributes): Declare.
./ChangeLog:	* tree.h (merge_machine_{type,decl}_attributes): Declare.
	(split_specs_attrs, strip_attrs): Add prototypes.
	* tree.c (merge_machine_{type,decl}_attributes): New functions.
	* c-decl.c (duplicate_decls): Call merge_machine_decl_attributes.
	Update olddecl's attributes too.
	* c-common.c (strip_attrs): New function.
	* c-typeck.c (common_type): Call merge_machine_type_attributes.
	* varasm.c (make_function_rtl): New target macro REDO_SECTION_INFO_P.
	(make_decl_rtl): Likewise.
	* c-decl.c (shadow_tag_warned): Call split_specs_attrs.
./cp/ChangeLog:	* decl.c (duplicate_decls): Call merge_machine_decl_attributes.
	Update olddecl's attributes too.
	(strip_attrs): Remove function.
	* typeck.c (common_type): Call merge_machine_type_attributes.

From-SVN: r18065
1998-02-18 05:38:57 -05:00
Bernd Schmidt
0a7ed33c87 c-common.c (c_expand_start_cond, [...]): Don't warn about non-ambiguous else even if braces are missing.
* c-common.c (c_expand_start_cond, c_expand_end_cond,
        c_expand_start_else): Don't warn about non-ambiguous else even if
        braces are missing.

From-SVN: r18055
1998-02-17 15:28:23 -07:00
Robert Lipe
ccd043a956 c-common.c: Include <stdlib.h> and <string.h>/<strings.h>.
* c-common.c: Include <stdlib.h> and <string.h>/<strings.h>.
        * calls.c (expand_call): Remove unused variables funtree,
        n_regs, and tmpmode.
        * dbxout.c, except.c: Include <string.h>/<strings.h>.
        * explow.c: (plus_constant_for_output_wide) Removed unused
        variable all_constant.
        * c-decl.c, genattr.c, genattrtab.c, getconfig.c, genemit.c
        genextract.c, genflags.c, genopinit.c genoutput.c, genpeep.c,
        genrecog.c, global.c, integrate.c , stupid.c : Include
        <stdlib.h>.
        * genextract.c: (walk_rtx) Remove unused variable link.
        * genrecog.c: (concat) Remove unreferenced static function.
        * prefix.c: Include <string.h>/<strings.h>, <stdlib.h>
        * stmt.c: Include <stdlib.h>.
        (expand_asm_operands): Remove unused variable val1.
        (expand_return): Remove unused variable block.
        (pushcase): Remove unused variables l and n.
        (pushcaserange): Likewise.
        * unroll.c (unroll_loop): Remove unused variable temp.

From-SVN: r17766
1998-02-07 15:55:54 -07:00
Mumit Khan
6d819282d0 c-common.c (decl_attributes): Flag unrecognized attribute functions as warnings instead of as errors.
* c-common.c (decl_attributes): Flag unrecognized attribute
        functions as warnings instead of as errors.

From-SVN: r17672
1998-02-05 13:54:49 -07:00
Richard Kenner
3ab1999b99 (c_build_type_variant): Don't futz with main type variant of array since C...
(c_build_type_variant): Don't futz with main type variant of array
since C Standard requires main type variant of array-of-const also be
array-of-const.

From-SVN: r14195
1997-06-09 18:37:37 -04:00
Richard Kenner
f9dcab5273 (check_format_info): Correct handling of the 'a' flag which adds
another pointer level.

From-SVN: r14176
1997-06-09 09:09:05 -04:00
Jason Merrill
a1d7ffe39c x
From-SVN: r13652
1997-02-16 10:05:43 +00:00
Richard Kenner
e78a3b4249 (skip_evaluation): Likewise.
(overflow_warning, unsigned_conversion_warning): Don't warn about
potential runtime errors when skipping evaluation.

From-SVN: r13233
1996-12-07 17:51:24 -05:00
Richard Kenner
5d9dd5a55a (decl_attributes, case A_ALIAS): Add missing parens.
From-SVN: r13162
1996-11-15 12:11:24 -05:00
Richard Kenner
800f4153ad (split_specs_attrs): New function.
From-SVN: r12925
1996-10-09 07:35:43 -04:00
Richard Kenner
f4ca236c56 (decl_attribtes, case A_SECTION): Allow for static local variable.
From-SVN: r12774
1996-09-22 21:06:39 -04:00
Richard Kenner
31837ce2fc (record_function_format): Define as static.
From-SVN: r12391
1996-07-03 18:21:37 -04:00
Mike Stump
0f41302f47 formatting tweaks
From-SVN: r12390
1996-07-03 22:07:53 +00:00
Richard Kenner
e5ee0060c6 (check_format_info): Change text of message about use of `0' with
precision.

From-SVN: r12277
1996-06-11 17:50:55 -04:00
Richard Kenner
62b1077c62 (decl_attributes, case A_T_UNION): Don't look at fields of union if
there aren't any.

From-SVN: r12256
1996-06-10 11:29:39 -04:00
Richard Kenner
0161e8dace (enum attrs): Add A_FORMAT_ARG.
(init_attribute): Initialize it.
(decl_attributes, case A_FORMAT): Clean up error messages.
(decl_attributes, case A_FORMAT_ARG): New case.
(struct international_format_info): New structure and typedef.
(international_format_list): New variable.
(record_international_format): New function.
(init_format_info): Call it for gettext, dcgettext, and dcgettext.
(check_format_info): See if format arg is call to internationalization
function.

From-SVN: r12241
1996-06-08 13:35:57 -04:00
Stan Cox
17c1a44f75 (decl_attributes): Chain multiple attributes correctly.
From-SVN: r11942
1996-05-06 20:58:44 +00:00
Richard Kenner
fc0c675f04 (truthvalue_conversion, case ADDR_EXPR): Don't treat address of
external decl as always nonzero.

From-SVN: r11941
1996-05-06 15:41:35 -04:00
Jason Merrill
2786cbadc7 -fno-common change
From-SVN: r11940
1996-05-06 18:36:48 +00:00
Richard Kenner
80d390a260 Install latest version of last patch.
From-SVN: r11293
1996-02-18 19:26:39 -05:00
Richard Kenner
15cf7c831e (check_format_info): Warn about `L' if -pedantic.
From-SVN: r11291
1996-02-18 13:29:45 -05:00
Richard Kenner
f33f79c0fd (overflow_warning): Fix typo in warning message.
From-SVN: r11268
1996-02-13 18:16:06 -05:00
Richard Kenner
69c3716d7c (check_format_info): Handle missing type in format when terminated by
a new `%'.

From-SVN: r11203
1996-02-11 08:44:40 -05:00
Doug Evans
05a81fe58a c-lex.c (check_newline): Pass character after `#pragma' to HANDLE_PRAGMA.
* c-lex.c (check_newline): Pass character after `#pragma' to
	HANDLE_PRAGMA.  Don't call get_directive_line if at end of line.
	* c-common.c (get_directive_line): Watch for EOF.
	* h8300/h8300.h (HANDLE_PRAGMA): New argument `c'.
	Must issue `return' now.
	* i960/i960.h (HANDLE_PRAGMA): Likewise.
	* sh/sh.h (HANDLE_PRAGMA): Likewise.
	* nextstep.h (HANDLE_PRAGMA): Likewise.
	* h8300/h8300.c (handle_pragma): New argument `ch'.
	Simplify pragma processing.  Delete support for `#pragma section'.
	* i960/i960.c (process_pragma): New argument `c'.  Change result to
	terminating character.
	* nextstep.c (handle_pragma): Likewise.
	* sh/sh.c (handle_pragma): Likewise.  Also simplified.

From-SVN: r10999
1996-01-15 22:25:24 +00:00
Richard Kenner
54630035ff (decl_attributes): Fix default alignment: BIGGEST_ALIGNMENT is a
number of bits, not bytes.

From-SVN: r10929
1996-01-01 16:15:08 -05:00
Jim Wilson
fef610bec3 (WCHAR_TYPE_SIZE): Add a default definition.
From-SVN: r10806
1995-12-18 16:13:24 -08:00
Jim Wilson
41bbd14edc (combine_strings): Add support for WCHAR_TYPE as short.
From-SVN: r10622
1995-11-29 11:05:42 -08:00
Richard Kenner
39b751ce5a (check_format_info): Make test for null pointer more general.
From-SVN: r10479
1995-10-19 19:18:59 -04:00
Richard Kenner
8741664047 (check_format_info): Don't warn about format type mismatch if the
argument is an ERROR_MARK.

From-SVN: r10401
1995-09-26 16:36:10 -04:00
Richard Kenner
1bcf5b08b0 (decl_attribute, case A_PACKED): Check is_type first.
(decl_attribute, case A_T_UNION): Likewise.
Don't access TYPE_FIELDS if DECL is zero.

From-SVN: r10292
1995-08-29 19:15:19 -04:00
Richard Kenner
06aa52de3c (decl_attributes, case A_ALIGNED): Handle is_type case properly.
From-SVN: r10146
1995-07-18 19:11:10 -04:00
Richard Kenner
1a16a053da (decl_attributes, case A_CONSTRUCTOR, A_DESTRUCTOR): Set TREE_USED.
From-SVN: r10064
1995-06-27 16:42:57 -04:00
Richard Kenner
940d9d638b Update FSF address.
From-SVN: r9959
1995-06-15 07:33:25 -04:00
Richard Kenner
2a13575e8a (format_char_info, case 'm'): Set type to void.
(check_format_info): If type is void, ignore operand.

From-SVN: r9954
1995-06-14 17:39:03 -04:00
Richard Kenner
3438dff9b0 (decl_attributes): Fix typo in size passed to alloca.
From-SVN: r9874
1995-06-05 08:14:46 -04:00
Richard Kenner
58cee64304 (truthvalue_conversion, BIT_AND_EXPR): Make sure that the result has
boolean_type_node.

From-SVN: r9844
1995-05-31 07:31:46 -04:00
Jason Merrill
1180eb1042 *** empty log message ***
From-SVN: r9801
1995-05-24 19:41:29 +00:00
Richard Kenner
868fc7506b (convert_and_check): Don't diagnose overflow in constant expression
merely because conversion overflowed.

From-SVN: r9626
1995-05-11 18:48:51 -04:00
Jason Merrill
d2eb08764b (declare_hidden_char_array): Mark decl artificial.
From-SVN: r9594
1995-05-09 10:06:32 +00:00
Richard Kenner
1c4fadec37 (enum attrs): Add A_UNUSED.
(init_attributes): Initialize it.
(decl_attributes, case A_UNUSED): New case.

From-SVN: r9545
1995-04-30 07:13:38 -04:00
Doug Evans
6eaba4a70a (decl_attributes): Always continue if attribute not found.
From-SVN: r9522
1995-04-28 01:09:12 +00:00
Richard Kenner
a89ca5c67e (init_attributes): Don't require decl for A_PACKED.
(decl_attributes, case A_PACKED): Set TYPE_PACKED for type.

From-SVN: r9485
1995-04-26 17:23:10 -04:00
Jason Merrill
4b8af8d984 attributes weak and alias
From-SVN: r9391
1995-04-16 06:14:00 +00:00
Richard Kenner
bbb1ae016c (enum attrs): New attribute, A_NOCOMMON.
(init_attribute): Initialize it.
(decl_attributes): Implement it.

From-SVN: r9347
1995-04-10 08:20:09 -04:00
Richard Kenner
d161fae48b (init_attributes): A_FORMAT is only for decls.
From-SVN: r9271
1995-03-31 07:26:28 -05:00
Richard Kenner
5306559682 (enum attrs): New enum class.
(attrtab, attrtab_idx): New variables.
(add_attribute, init_attributes): New functions.
(decl_attributes): Major rewrite.

From-SVN: r9261
1995-03-30 08:59:11 -05:00
Richard Kenner
515f0e729a (decl_attributes): Clean up test for __mode__.
From-SVN: r9241
1995-03-29 06:47:28 -05:00
Richard Kenner
d3e0f18932 (decl_attributes): Allow alignment for TYPE_DECLs.
From-SVN: r9195
1995-03-16 17:24:31 -05:00
Richard Kenner
eed328336c (decl_attributes): Handle prefix and suffix attributes the same way.
From-SVN: r9152
1995-03-09 21:33:58 -05:00
Richard Kenner
1228e2a6b2 (decl_attributes): Add third argument prefix_attributes.
(valid_machine_attribute): Deleted; moved to tree.c.

From-SVN: r8993
1995-02-21 17:55:41 -05:00
Jason Merrill
a311b52c43 (type_for_*): Check integer_type_node first.
From-SVN: r8840
1995-01-31 00:40:42 +00:00
Jason Merrill
a360da3a3d Use boolean_* instead of integer_* where appropriate.
From-SVN: r8768
1995-01-17 21:43:40 +00:00
Doug Evans
767880cde6 Add 1995 to copyright.
From-SVN: r8760
1995-01-14 06:27:58 +00:00
Doug Evans
23c97802de (decl_attributes): Fix typo in packed ignored warning.
Fix unrecognized mode warning.  Make string comparisons consistent.
Support machine attributes with arguments.  Make noreturn/volatile
warnings consistent with others.

From-SVN: r8757
1995-01-14 06:20:26 +00:00
Jason Merrill
2c5f4139a9 __attribute__ ((constructor))
From-SVN: r8747
1995-01-14 01:09:01 +00:00
Richard Kenner
caab5771c8 (decl_attribute): Allow special names (e.g, `word') for mode
attribute.

From-SVN: r8582
1994-11-30 15:48:00 -05:00
Richard Kenner
4cc00c5a1c (print_char_table): Allow L' for u'.
From-SVN: r8477
1994-11-17 11:06:36 -05:00
Richard Kenner
ca854c0526 (decl_attributes): Add double-underscore version of printf and scanf
for format type.

From-SVN: r8426
1994-11-11 17:07:25 -05:00
Richard Kenner
55960f52ea (decl_attributes): Check for attributes with leading and trailing
double underscores.

From-SVN: r8412
1994-11-10 18:02:50 -05:00
Richard Kenner
2cedb812b4 ({print,scan}_char_table): Allow `L' modifier for integer output formats.
(check_format_info): Treat `ll' like `q'.

From-SVN: r8409
1994-11-10 15:55:49 -05:00
Charles Hannum
2314fb7008 Add format checking for `q' (quad) modifier.
From-SVN: r8093
1994-09-19 12:46:40 +00:00
Jason Merrill
6acfe908e3 (min_precision): Move from c-decl.c
From-SVN: r8020
1994-09-02 23:40:51 +00:00
Richard Kenner
5af6001b5e (shorten_compare): Don't issue warning if both operands constants and the...
(shorten_compare): Don't issue warning if both operands constants and
the signedness doesn't affect the comparison results.

From-SVN: r7981
1994-08-25 17:43:46 -04:00
Richard Kenner
ec83f2b381 (decl_attribute): Handle "transparent_union" attribute.
From-SVN: r7947
1994-08-19 17:32:52 -04:00
Richard Earnshaw
20250c072b (decl_attributes): If TREE_TYPE for the DECL is updated,
then update TYPE as well.

From-SVN: r7662
1994-07-06 09:07:10 +00:00
Richard Kenner
084b6d7b05 (c_build_type_variant): Remove last change; instead, copy TYPE if not
in old obstack.

From-SVN: r7618
1994-06-30 06:24:28 -04:00
Doug Evans
f58e9815f7 (decl_attributes): Fix section attribute breakage.
From-SVN: r7440
1994-06-03 22:12:54 +00:00
Richard Kenner
ba5ce70d08 (c_build_type_variant): Don't change TYPE_MAIN_VARIANT of new type.
From-SVN: r7427
1994-06-02 17:31:34 -04:00
Jason Merrill
fb48b1f0d3 (truthvalue_conversion): If expr is a BIT_AND_EXPR
where one of the operands is integer_onep, just return expr.

From-SVN: r7293
1994-05-13 20:30:24 +00:00
Richard Kenner
389da36245 (decl_attributes): Revert to identifiers for mode attributes.
From-SVN: r7281
1994-05-12 15:48:11 -04:00
Richard Kenner
a2cd7b4554 (decl_attributes): Move the attribute recognition and rejection here from c-parse.in.
(decl_attributes): Move the attribute recognition and rejection here from
c-parse.in.
(decl_attributes): Use VALID_MACHINE_ATTRIBUTE macro.

From-SVN: r7256
1994-05-06 18:32:17 -04:00
Richard Stallman
838e9ea20d (decl_attributes): `mode' attribute now takes string arg.
From-SVN: r6914
1994-03-28 01:28:04 +00:00
Richard Kenner
c4e8f305b4 (truthvalue_conversion): Remove decl of unused CODE.
From-SVN: r6871
1994-03-25 13:55:26 -05:00
Jim Wilson
597681f6d1 (shorten_compare): When simplify compare against
zero, check for restype_ptr unsigned instead of primop0 unsigned.

From-SVN: r6806
1994-03-17 15:39:11 -08:00
Richard Kenner
18c0f6759f (TRUTH_*_EXPR): Convert to integer_type_node.
From-SVN: r6772
1994-03-13 21:16:59 -05:00
Richard Kenner
c05f751c24 (constant_expression_warning, overflow_warning): Handle REAL_CST and
COMPLEX_CST.

From-SVN: r6769
1994-03-13 08:31:27 -05:00
Richard Kenner
700942a0c6 (declare_hidden_char_array): Build new type if warn_larger_than.
From-SVN: r6654
1994-02-27 15:20:28 -05:00
Richard Kenner
89c78d7d37 (binary_op_error): Initialize OPNAME.
From-SVN: r6636
1994-02-27 10:42:51 -05:00
Richard Kenner
a0b25e45b7 (decl_attributes): Warn if attribute will be ignored.
Allow `noreturn', `volatile', and `const' on object of type pointer to
function.
Always give decl with error or warning.

From-SVN: r6610
1994-02-23 07:29:42 -05:00
Doug Evans
5289b66589 (decl_attributes): Decode section attribute.
From-SVN: r6582
1994-02-17 22:48:50 +00:00
Richard Kenner
09e3dd7232 (decl_attributes): Allow format attributes on old style
(non-prototype) function declarations.

From-SVN: r6463
1994-02-01 18:56:12 -05:00
Richard Kenner
6f38f669d0 (decl_attribute): Verify that alignment and format argument numbers are all integer constants.
(decl_attribute): Verify that alignment and format argument numbers are all
integer constants.
Continue on to next attribute if one is in error.

From-SVN: r6300
1993-12-24 07:38:37 -05:00
Richard Kenner
df8a401ad5 (T_ST): Fix typo in last change.
From-SVN: r6284
1993-12-23 17:19:33 -05:00
Richard Kenner
af3c5588ab (T_ST): New macro.
(scan_char_table): With s, c and [, allow `a' flag.
(print_char_table): Accept Z and m codes.
(check_format_info): Handle the `a' flag.

From-SVN: r6258
1993-12-22 07:11:59 -05:00
Richard Stallman
b7c9c707a6 (shorten_compare): Correct typo from last change.
From-SVN: r6157
1993-11-24 23:14:43 +00:00
Richard Kenner
f577532561 (check_format_info): When we have INTEGER_TYPEs...
(check_format_info): When we have INTEGER_TYPEs, save result of
signed_type or unsigned_type for later comparison with the various
forms of char types.

From-SVN: r6146
1993-11-23 17:32:21 -05:00
Richard Stallman
309ffab61f (check_format_info): Make warning nicer for mismatch of int vs long, etc.
Don't warn if field width is an unsigned int.

From-SVN: r5981
1993-11-03 20:09:12 +00:00
Richard Stallman
94dccd9d27 (shorten_compare): Undo previous change.
Instead, just suppress warnings if both args are constant.

From-SVN: r5957
1993-10-31 20:19:31 +00:00
Richard Stallman
8396a8d6fa (shorten_compare): Do nothing if both args constant.
From-SVN: r5954
1993-10-31 03:13:52 +00:00
Richard Stallman
22ba338b8f (convert_and_check): Don't warn converting 0xff
to a signed char, etc., unless pedantic.

From-SVN: r5944
1993-10-30 08:34:05 +00:00
Richard Kenner
60e02b1e4e (check_format_info): Consider "char", "signed char", and "unsigned
char" types as equivalent.

From-SVN: r5849
1993-10-20 21:44:35 -04:00
Richard Kenner
9b69f523a7 (check_format_info): Support X/Open formats like "%1$d".
From-SVN: r5707
1993-10-10 08:56:49 -04:00
Richard Stallman
4215e49850 (check_format_info): Avoid ?: conditional for function to be called.
From-SVN: r5704
1993-10-10 05:28:35 +00:00
Richard Kenner
95216deccf (check_function_format): Correct error in last change.
From-SVN: r5680
1993-10-08 10:40:59 -04:00
Richard Kenner
1ccf251f97 Include <ctype.h>; avoid home-grown ISDIGIT.
(decl_attributes): Call record_function_format with DECL_NAME and also
DECL_ASSEMBLER_NAME.
(struct format_char_info): Moved here from c-typeck.c.
(print_char_table): Likewise; renamed from print_table.
(scan_char_table): Likewise; renamed from scan_table.
(struct function_format_info): Likewise; add assembler_name.
(function_format_list): Make list, not array.
(init_function_format_info): Likewise; renamed from init_format_info_table.
(record_function_format): Likewise; renamed from record_format_info;
record assembler_name.
(check_format_info): Likewise; renamed from check_format.
(check_function_format): New interface that does not require knowledge of
struct function_format_info.

From-SVN: r5607
1993-10-05 15:14:50 -04:00
Richard Kenner
90b5a681ce (c_build_type_variant): Allocate new type in same obstack as old one.
From-SVN: r5278
1993-09-07 19:11:15 -04:00
Richard Kenner
b839fb3fe9 (truthvalue_conversion): A complex value is nonzero if either part is
nonzero, not if both parts are nonzero.

From-SVN: r5259
1993-09-04 11:16:10 -04:00
Richard Stallman
4724b3dea0 (declare_hidden_char_array): New function to factor out duplicate code in declare_function_name.
(declare_hidden_char_array): New function to
factor out duplicate code in declare_function_name.
Don't set DECL_EXTERNAL (which is illegal without TREE_PUBLIC)
to prevent output; instead, set TREE_ASM_WRITTEN.

(declare_function_name): Use declare_hidden_char_array.

From-SVN: r5161
1993-08-15 09:30:20 +00:00
Richard Stallman
34d6bae3ee (declare_function_name): Set DECL_EXTERNAL in the decls.
From-SVN: r5106
1993-08-08 08:33:48 +00:00
Richard Stallman
3550617cd5 (decl_attributes): Support attributes `volatile'
with alias `noreturn', and `const'.

From-SVN: r5082
1993-08-06 01:08:12 +00:00
Paul Eggert
90c939d4ee (unsigned_conversion_warning): Just use `warning',
not `pedwarn'; these diagnostics are not required by Standard C.

From-SVN: r4909
1993-07-12 21:10:27 +00:00
Paul Eggert
7193bce22f (constant_expression_warning, overflow_warning,
convert_and_check): Distinguish between TREE_OVERFLOW, which is just
for warnings, and TREE_CONSTANT_OVERFLOW, which is for required
pedantic diagnostics.

From-SVN: r4827
1993-07-02 01:26:01 +00:00
Richard Stallman
68a91d8d3a (decl_attributes): If first_arg_num is 0, no error for it.
From-SVN: r4720
1993-06-24 03:36:08 +00:00
Richard Stallman
14aadfe88a (constant_expression_warning)
(overflow_warning, convert_and_check): Change pedwarn to warning.

From-SVN: r4529
1993-05-21 19:31:40 +00:00
Richard Stallman
d7c837272e (truthvalue_conversion): Turn off Apr 29 change.
From-SVN: r4356
1993-05-06 15:58:59 +00:00
Jim Wilson
f87550e01b (truthvalue_conversion): Don't optimize subtract of reals when target uses
IEEE arithmetic.

From-SVN: r4311
1993-05-03 16:33:42 -07:00
Richard Stallman
257e61ed70 (truthvalue_conversion): Specific error message when the "truthvalue" of a struct...
(truthvalue_conversion):  Specific error message when the
"truthvalue" of a struct, union, or array type operand is needed.

From-SVN: r4293
1993-05-01 04:09:06 +00:00
Jim Wilson
677ff44144 (decl_attributes...
(decl_attributes, format case): Error if num_arg does
not point to a string type argument, or if first_arg_num not the
anonymous argument.

From-SVN: r4032
1993-04-06 12:30:45 -07:00
Richard Stallman
1bb8e5b1b8 #include "obstack.h".
From-SVN: r3811
1993-03-21 18:58:22 +00:00
Richard Stallman
f0b996c50c (truthvalue_conversion): Fix handling of COMPLEX_EXPR.
Handle all complex values specially.

From-SVN: r3645
1993-03-04 20:34:56 +00:00
Richard Stallman
766f6c304d (truthvalue_conversion): Handle COMPLEX_EXPR.
From-SVN: r3638
1993-03-04 19:36:42 +00:00
Richard Stallman
d74154d508 (constant_expression_warning): Suppress duplicate warnings.
(convert_and_check, overflow_warning, unsigned_conversion_warning):
New functions.  Prototypes added to c-tree.h.

From-SVN: r3405
1993-02-02 04:40:43 +00:00
Niklas Hallqvist
0b73773ce6 c-common.c (c_build_type_variant): Moved here from c-decl.c.
* c-common.c (c_build_type_variant): Moved here from c-decl.c.
	Redirected the TYPE_MAIN_VARIANT to the "real" main variant.
	Build the possibly new array type on the permanent obstack if it
        the original type was permanent.
	(permanent_obstack): Added extern declaration.

From-SVN: r3388
1993-01-30 06:06:09 +00:00
Richard Kenner
97d17ac21c (declare_function_name): If char_array_type_node isn't large enough
for the name, make a larger type.

From-SVN: r3368
1993-01-27 19:21:01 -05:00
Richard Kenner
9379fac9a2 (truthvalue_conversion): Handle TRUTH_XOR_EXPR.
From-SVN: r2993
1992-12-30 06:01:57 -05:00
Richard Stallman
b9a24ad42e (declare_function_name): __FUNC__ variables
are compiler-created, so set DECL_SOURCE_LINE to zero.

From-SVN: r2300
1992-10-01 19:01:26 +00:00
Richard Stallman
6152f87688 (declare_function_name): Allow for anonymous function.
From-SVN: r2095
1992-09-10 05:33:47 +00:00
Brendan Kehoe
9657188305 Moved constant_expression_warning into c-common.c.
From-SVN: r2076
1992-09-07 19:42:39 -04:00
Richard Stallman
bc690db148 (check_case_value): Call constant_expression_warning.
From-SVN: r2070
1992-09-07 06:07:30 +00:00
Richard Stallman
e2aab13d8a (truthvalue_conversion): Optionally warn if an
unparenthesized assignment is used as a truth value.

From-SVN: r1853
1992-08-14 23:45:09 +00:00
Richard Stallman
ef57b1e9f0 (decl_attributes): Call layout_decl with two arguments.
From-SVN: r1711
1992-07-29 03:46:49 +00:00
Richard Stallman
1394aabdaa Renamed TREE_INLINE...
Renamed TREE_INLINE, TREE_NONLOCAL, TREE_REGDECL, TREE_EXTERNAL
to DECL_INLINE, DECL_NONLOCAL, DECL_REGISTER, DECL_EXTERNAL.

From-SVN: r1569
1992-07-12 02:56:45 +00:00
Richard Stallman
8493738bcc (check_case_value): Strip the new nops with STRIP_TYPE_NOPS.
From-SVN: r1549
1992-07-10 01:50:20 +00:00
Richard Kenner
18a799ccb1 Changes to support 64-bit hosts: Remove definition of NULL.
From-SVN: r1494
1992-07-06 22:02:07 -04:00
Richard Stallman
176e81ebf9 > (declare_function_name): For __FUNCTION__ and __PRETTY_FUNCTION__...
> (declare_function_name): For __FUNCTION__ and __PRETTY_FUNCTION__,
set DECL_IN_SYSTEM_HEADER instead  of TREE_USED to supress `unused' warnings.

From-SVN: r1491
1992-07-07 01:46:27 +00:00
Richard Stallman
9b4e97b0d0 (decl_attributes): Don't set DECL_PACKED on VAR_DECL.
From-SVN: r1480
1992-07-06 20:45:11 +00:00
Richard Stallman
3fc7e39030 (type_for_size): If no ANSI type matches, check for matches with built-in mode-related types.
(type_for_size):  If no ANSI type matches, check for
matches with built-in mode-related types.
(type_for_mode):  Likewise.

From-SVN: r1397
1992-07-03 06:41:07 +00:00
Richard Stallman
4db3b35d80 fix typo in last change.
From-SVN: r1380
1992-07-01 21:44:28 +00:00
Richard Stallman
f3ee8ad133 (decl_attributes): For `packed' on VAR_DECL, set DECL_PACKED and DECL_ALIGN.
From-SVN: r1354
1992-06-30 02:25:17 +00:00
Richard Stallman
53e9d52c51 entered into RCS
From-SVN: r1090
1992-05-26 19:22:26 +00:00
Richard Kenner
101777b6cb *** empty log message ***
From-SVN: r1059
1992-05-22 18:08:21 -04:00
Richard Stallman
b032c74c6f *** empty log message ***
From-SVN: r1053
1992-05-22 20:41:45 +00:00
Richard Stallman
7da551a2e8 *** empty log message ***
From-SVN: r1052
1992-05-22 20:33:20 +00:00
Richard Stallman
1e307bd81a *** empty log message ***
From-SVN: r1008
1992-05-18 07:50:10 +00:00
Richard Stallman
1e276c4acc *** empty log message ***
From-SVN: r940
1992-05-08 21:25:25 +00:00
Richard Stallman
9a631e8e94 *** empty log message ***
From-SVN: r832
1992-04-25 01:51:43 +00:00
Richard Stallman
047de90b9e *** empty log message ***
From-SVN: r682
1992-04-04 19:11:28 +00:00
Richard Stallman
2525c78282 *** empty log message ***
From-SVN: r633
1992-03-30 03:20:11 +00:00
Richard Stallman
b30f223b0d Initial revision
From-SVN: r278
1992-02-04 19:51:11 +00:00