Commit Graph

998 Commits

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

From-SVN: r77475
2004-02-08 01:59:11 +00:00
Kaveh R. Ghazi
1c62e7b282 system.h (CHAR_BITFIELD): Delete.
* system.h (CHAR_BITFIELD): Delete.
	(BOOL_BITFIELD): New.
	* c-decl.c (c_scope): Use BOOL_BITFIELD.
	* gengtype-lex.l: Recognize BOOL_BITFIELD instead of CHAR_BITFIELD.
cp:
	* cp-tree.h (language_function, lang_type_header): Use
	BOOL_BITFIELD.
	* name-lookup.h (cp_binding_level): Likewise.

From-SVN: r76686
2004-01-27 02:33:22 +00:00
Kazu Hirata
1f52178b3a c-common.h: Fix comment typos.
* c-common.h: Fix comment typos.
	* c-decl.c: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* et-forest.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* postreload.c: Likewise.
	* varray.c: Likewise.

From-SVN: r76539
2004-01-25 03:52:42 +00:00
Zack Weinberg
04b8f97f29 re PR c/18314 (Abnormal behavior in optimization)
PR 18314
	* c-decl.c (diagnose_mismatched_decls): Also discard a
	built-in if we encounter an old-style definition with the
	same name.
testsuite:
	* gcc.dg/builtins-30.c: New testcase.

From-SVN: r76441
2004-01-23 18:13:55 +00:00
Zack Weinberg
1ef82ef2e4 c-decl.c (merge_decls): Kill different_binding_level and different_tu arguments; simplify throughout.
* c-decl.c (merge_decls): Kill different_binding_level and
	different_tu arguments; simplify throughout.
	(duplicate_decls): Likewise.
	(pushdecl, merge_translation_unit_decls): Update calls to
	duplicate_decls.
testsuite:
	* gcc.dg/noncompile/20020213-1.c: Add another dg-warning line.

From-SVN: r76269
2004-01-21 10:32:10 +00:00
Joseph Myers
53cd18ec8e c-decl.c (c_init_decl_processing): Set pedantic_lvalues to true unconditionally.
* c-decl.c (c_init_decl_processing): Set pedantic_lvalues to
	true unconditionally.
	* c-typeck.c (unary_complex_lvalue, pedantic_lvalue_warning):
	Remove.
	(build_unary_op, build_modify_expr): Don't handle extended
	lvalues.
	(build_component_ref, build_conditional_expr): Call non_lvalue
	instead of pedantic_non_lvalue.
	(build_c_cast): Don't condition use of non_lvalue on pedantic.
	* fold-const.c (fold): Don't check pedantic directly for
	COMPOUND_EXPR.  Ensure that results for COMPOUND_EXPR are
	passed to pedantic_non_lvalue.
	* doc/extend.texi: Remove documentation of extended lvalues.

testsuite:
	* gcc.c-torture/compile/981022-1.c: Remove.
	* gcc.dg/array-5.c: Remove XFAIL.
	* gcc.dg/sequence-pt-1.c: Remove test using extended lvalues.
	* gcc.dg/cast-lvalue-1.c, gcc.dg/compound-lvalue-1.c,
	gcc.dg/cond-lvalue-1.c: Update.
	* gcc.dg/cast-lvalue-2.c: New test.

From-SVN: r76192
2004-01-20 01:38:27 +00:00
Zack Weinberg
bc298aa711 re PR c/13656 (ICE after redeclaring size_t in the system headers)
PR 13656
	* c-decl.c (diagnose_mismatched_decls): Whenever newtype or
	oldtype is set, set *newtypep or *oldtypep too.  Do not set
	them at the very end.
	(validate_proto_after_old_defn): Restructure for comprehensibility;
	make error messages clearer.
testsuite:
	* gcc.dg/typedef-redecl.c: New test case.
	* gcc.dg/typedef-redecl.h: New support file.

From-SVN: r75787
2004-01-13 02:52:37 +00:00
Jan Hubicka
0bb03c1105 c-decl.c (diagnose_mismatched_decls): Fix warning calls.
* c-decl.c (diagnose_mismatched_decls):  Fix warning calls.

	* cgraphunit.c (cgraph_optimize_function):  Always do
	optimize_inline_calls when there is always_inline callee.
	(cgraph_decide_inlining): Fix formating.
	* tree-inline.c (inlinable_function_p): Do sorry for alwaysinline
	functions.
	(expand_call_inline): Likewise.
	* toplev.h (sorry): Fix prototype.

From-SVN: r75782
2004-01-13 01:37:15 +00:00
Zack Weinberg
d4968a1116 c-decl.c (diagnose_arglist_conflict): Add missing space to diagnostic messages.
* c-decl.c (diagnose_arglist_conflict): Add missing space to
	diagnostic messages.

From-SVN: r75691
2004-01-11 22:40:47 +00:00
Zack Weinberg
3c6e6fbf11 c-decl.c (duplicate_decls): Break apart into...
* c-decl.c (duplicate_decls): Break apart into...
	(diagnose_arglist_conflict, validate_proto_after_old_defn)
	(locate_old_defn, diagnose_mismatched_decls, merge_decls):
	... these new functions.  Restructure for comprehensibility.
	Remove various archaic special cases.  Always report the
	location of the previous declaration when a diagnostic is issued.
	(redeclaration_error_message): Fold into diagnose_mismatched_decls.
	(match_builtin_function_types): Delete unnecessary forward declaration.
testsuite:
	* gcc.dg/Wshadow-1.c, gcc.dg/attr-noinline.c, gcc.dg/decl3.c
	* gcc.dg/redecl-1.c, gcc.dg/visibility-7.c, gcc.dg/wtr-static-1.c
	* gcc.dg/noncompile/20020220-1.c, objc.dg/method-1.m:
	Update dg-error regexps.

From-SVN: r75667
2004-01-11 01:18:58 +00:00
Joseph Myers
85b58ca564 re PR c/12165 (Typedef'ed variables ignore typedef's const qualifier)
PR c/12165
	* c-decl.c (grokdeclarator): Take type qualifiers of typedefed
	array type from the array element type.

testsuite:
	* gcc.dg/array-quals-1.c, gcc.dg/c90-idem-qual-3.c,
	gcc.dg/c99-idem-qual-3.c: New tests.

From-SVN: r75514
2004-01-07 19:40:03 +00:00
Jan Hubicka
b684a3df8e re PR rtl-optimization/13473 (cc1 segfault w/-march=pentium4)
PR opt/13473
	* recog.c (validate_replace_rtx_1):  Take care for RTL sharing inside
	ASM input operands

	PR opt/12617
	* toplev.c (dump_file_index): Reorder ce3 and bbro.
	(dump_file): Likewise.
	(rest_of_compilation): Likewise.

	PR debug/13367
	* cgraph.c (cgraph_function_possibly_inlined):  Even with
	flag_really_no_inline we inline always_inline functions.
	* cgraphunit.c (cgraph_analyze_function): Clear inlinable flag
	for non-always_inline functions when there is flag_really_no_inline.
	(cgraph_decide_inlining): Limit work done when not inlining.
	(cgraph_decide_inlining_incrementally): Likewise.
	(cgraph_optimize_function): Check whether something got inlined.
	* c-objc-common.c (c_disregard_inline_limits): Do not always inline
	extern inline functions when not inlining.

	* opts.c (decode_options):  Disable crossjumping at -O1
	* invoke.texi (-O1): Document change.

	* gcc.dg/debug/20031231-1.c: New.
	* gcc.c-torture/compile/20040101-1.c: New.
	* gcc.dg/dwarf-die-[1-7].c: New.

From-SVN: r75303
2004-01-01 13:59:02 +00:00
Andrew Pinski
67b288631b c-decl.c (finish_function): Change order of checks.
2003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-decl.c (finish_function): Change order of checks.
	(c_expand_body): Likewise.

From-SVN: r74941
2003-12-22 11:06:24 -08:00
Andrew Pinski
af3fbed110 re PR c/9163 (ICE in genrtl_compound_stmt at c-semantics.c:776 with c99 mode and checking enabled)
2003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c/9163
        * c-decl.c (poplevel): Only set DECL_INITIAL of a current function
        if it is non-null.
        (finish_function): Check for error_mark_node or null on DECL_RESULT and
        DECL_RESULT of fndecl.
        (c_expand_body): Only expand when DECL_INITIAL of fndecl is not
        error_mark_node and not null.

2003-12-22  Andrew Pinski  <pinskia@physics.uc.edu>

       PR c/9163
       * gcc.dg/20031222-1.c: New test.

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

From-SVN: r74907
2003-12-21 14:08:35 +00:00
Richard Henderson
a3bf324c46 c-decl.c (check_bitfield_type_and_width): Remove enum special case suppression of pedwarn.
* c-decl.c (check_bitfield_type_and_width): Remove enum special
        case suppression of pedwarn.
        * system.h (ENUM_BITFIELD): Use __extension__.
        (CHAR_BITFIELD): Likewise.
cp/
        * cp-tree.h (struct lang_type_header): Remove __extension__.
testsuite/
        * gcc.dg/bitfld-1.c: Expect warnings for enum bitfields.

From-SVN: r74797
2003-12-18 13:03:24 -08:00
Joseph Myers
2ff7cce4f2 re PR c/3347 (Too large bitfields should be errors)
2003-12-17  Neil Booth  <neil@daikokuya.co.uk>
            Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/3347
	* c-decl.c (enum_decl_context): Remove BITFIELD.
	(grokdeclarator): Take bit-field width as an input.
	Perform bit-field width validation with
	check_bitfield_type_and_width rather than waiting for
	finish_struct.
	(groktypename, groktypename_in_parm_context, start_decl,
	push_parm_decl, grokfield, start_function): Update calls to
	grokdeclarator.
	(check_bitfield_type_and_width): New function.
	(finish_struct): Move bit-field validation to grokdeclarator
	and check_bitfield_type_and_width.

testsuite:
	* gcc.dg/bitfld-8.c: New test.

From-SVN: r74725
2003-12-17 00:25:24 +00:00
Matt Austern
facef326df re PR c/13134 (Visibility attribute is ignored)
PR c/13134
* c--decl.c (duplicate_decls): Copy visibility flag when appropriate.
* cp/decl.c (duplicate_decls): Copy visibility flag when appropriate.
* testsuite/lib/gcc-dg.exp (dg-require-visibility): Define.
* testsuite/lib/target-supports (check_visibility_available): Define.
* testsuite/gcc.dg/visibility-1.c: New test.
* testsuite/gcc.dg/visibility-2.c: Likewise.
* testsuite/gcc.dg/visibility-3.c: Likewise.
* testsuite/gcc.dg/visibility-4.c: Likewise.
* testsuite/gcc.dg/visibility-5.c: Likewise.
* testsuite/gcc.dg/visibility-6.c: Likewise.
* testsuite/g++.dg/ext/visibility-1.C: Likewise.
* testsuite/g++.dg/ext/visibility-2.C: Likewise.
* testsuite/g++.dg/ext/visibility-3.C: Likewise.
* testsuite/g++.dg/ext/visibility-4.C: Likewise.
* testsuite/g++.dg/ext/visibility-5.C: Likewise.
* testsuite/g++.dg/ext/visibility-6.C: Likewise.

From-SVN: r74487
2003-12-10 06:34:46 +00:00
Eric Christopher
e13e48e707 re PR c/13014 (if shortcut misses required diagnostics)
2003-11-24  Eric Christopher  <echristo@redhat.com>

	PR C/13014
	* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): New.
	(start_function): Use.
	(c_push_function_context): Ditto.
	(c-pop_function_context): Ditto.
        (language_function): Move...
	* c-tree.h: ... here. Add x_in_iteration_stmt, and
	x_in_case_stmt.
	* c-parse.in (do_stmt_start, select_or_iter_stmt, stmt): Use
	c_in_iteration_stmt, c_in_case_stmt for parser state. Move
	check for valid break or continue statment here...
	* c-semantics.c (genrtl_break_stmt, genrtl_continue_stmt): From
	here. Change original errors to abort.

From-SVN: r73887
2003-11-24 20:12:06 +00:00
Jan Hubicka
fccc4eb240 re PR rtl-optimization/12275 ([unit-at-a-time] ICE in htab_clear_slot)
PR opt/12275
	* c-decl.c (finish_decl): Use change_decl_assembler_name.
	* c-pragma.c (handle_pragma_redefine_extname): Likewise.
	* varasm.c (make_decl_rtl): Likewise.
	* cgraph.c (change_decl_assembler_name): New function.
	* tree.h (set_decl_assembler_name): Kill dead declaration.
	(change_decl_assembler_name): Declare.

	* decl.c (make_rtl_for_nonlocal_decl): Use change_decl_assembler_name.
	* decl2.c (make_rtl_for_nonlocal_decl): Use change_decl_assembler_name.

From-SVN: r73532
2003-11-13 02:07:57 +00:00
Zack Weinberg
40fe4dd5a8 * c-decl.c (pushdecl): Clarify comment.
From-SVN: r72998
2003-10-28 01:05:12 +00:00
Jan Hubicka
1bb17c2144 re PR debug/12389 ([testcase needed] ICE in gen_subprogram_die for nested function)
PR debug/12389
	* Makefile.in (dwarf2out.o): Depend on cgraph.h.
	* cgraph.c (cgraph_function_possibly_inlined_p): New function.
	* cgraph.h (cgraph_function_possibly_inlined_p): Declare.
	(cgraph_global_info): Add flag inlined
	* dwarf2out.c (gen_subprogram_die, gen_decl_die): Use
	cgraph_function_possibly_inded_p
	* cgraphunit.c (mark_inline): Set inlined flag.
	* toplev.c (rest_of_decl_compilation): Call outlining_inline_function
	only for possibly inlined functions.
	* c-decl.c (duplicate_decls): Never output abstract DIE representing old
	body of function.

From-SVN: r72795
2003-10-22 11:58:10 +00:00
Fariborz Jahanian
b68a40b280 retain DECL_COMMON of old declaration
Reviewed by Geoffrey Keating.

From-SVN: r72094
2003-10-04 16:49:26 +00:00
Richard Henderson
436fac170a c-decl.c (duplicate_decls): Copy DECL_SOURCE_LOCATION, not file and line separately.
* c-decl.c (duplicate_decls): Copy DECL_SOURCE_LOCATION, not
        file and line separately.

f/
        * com.c (duplicate_decls): Copy DECL_SOURCE_LOCATION, not
        file and line separately.
java/
        * check-init.c (check_init): Save and restore input_location
        instead of file and line separately.
        * decl.c (java_expand_body): Likewise.
        * jcf-write.c (generate_bytecode_insns): Likewise.
        * parse.y (safe_layout_class): Likewise.
        * jcf-parse.c (read_class, parse_class_file): Likewise.
        (java_parse_file): Use %H for warning locator.

From-SVN: r71886
2003-09-28 15:18:33 -07:00
Andreas Jaeger
edaf3e0357 c-decl.c (finish_function): Convert definition to ISO C90.
* c-decl.c (finish_function): Convert definition to ISO C90.
	* ifcvt.c (mark_loop_exit_edges): Likewise.
	* ra-rewrite.c (emit_colors): Likewise.

For cp:

	* decl.c (cxx_builtin_type_decls): Convert to ISO C90 function
	definition.
	* init.c (push_base_cleanups): Likewise.
	* decl2.c (finish_file): Likewise.
	* mangle.c (init_mangle): Likewise.
	(dump_substitution_candidates): Likewise.
	* search.c: Likewise.

From-SVN: r71872
2003-09-28 06:37:41 +02:00
Ziemowit Laski
264fa2db22 MERGE OF objc-improvements-branch into MAINLINE.
2003-09-24  Ziemowit Laski  <zlaski@apple.com>

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

From-SVN: r71748
2003-09-25 01:26:01 +00:00
Richard Henderson
f31686a322 Revert DECL_SOURCE_LOCATION -> TREE_LOCUS change.
From-SVN: r71641
2003-09-21 22:09:32 -07:00
Richard Henderson
7e2af53a14 tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
* tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
	(TREE_FILENAME, TREE_LINENO): Likewise.
	(set_tree_locus, copy_tree_locus, set_tree_file_line): New.
	(TREE_LOCUS_SET_P): New.
	* c-aux-info.c, c-decl.c, c-parse.in, coverage.c, dbxout.c,
	diagnostic.c, dwarf2out.c, dwarfout.c, function.c, integrate.c,
	print-tree.c, stmt.c, toplev.c, tree-dump.c, tree-inline.c,
	tree-optimize.c, tree.c, tree.def, xcoffout.c, config/alpha/alpha.c,
	config/mips/mips.c, doc/c-tree.texi, objc/objc-act.c: Update to match.

ada/
	* trans.c, utils.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

cp/
	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
	method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
	DECL_SOURCE_LOCATION rename and change to const.

f/
	* com.c, ste.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

java/
	* class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
	resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.

treelang/
	* treetree.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

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

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

From-SVN: r71619
2003-09-20 22:07:20 -07:00
Richard Henderson
6b00c969c4 cgraphunit.c (cgraph_finalize_function): Add nested arg.
* cgraphunit.c (cgraph_finalize_function): Add nested arg.
        Tweek tests for function already generated.
        (cgraph_expand_function): Don't double announce in !unit-at-a-time.
        * cgraph.h (cgraph_finalize_function): Update for extra arg.
        * c-decl.c (finish_function): Likewise.

        * semantics.c (expand_or_defer_fn): Update for new
        cgraph_finalize_function argument.

        * parse.y (source_end_java_method): Update for new
        cgraph_finalize_function argument.

From-SVN: r71298
2003-09-11 00:14:12 -07:00
Joe Buck
dd5c7759f3 * c-decl.c (poplevel): Eliminate use of |= in function_body assignment.
From-SVN: r71297
2003-09-10 23:45:20 -07:00
Richard Henderson
39adabaf32 cgraphunit.c (cgraph_finalize_function): Remove unused argument.
* cgraphunit.c (cgraph_finalize_function): Remove unused argument.
        * cgraph.h (cgraph_finalize_function): Update.
        * c-decl.c (finish_function): Update.
cp/
        * semantics.c (expand_or_defer_fn): Update call to
        cgraph_finalize_function.
java/
        * parse.y (source_end_java_method): Update call to
        cgraph_finalize_function.

From-SVN: r71263
2003-09-09 20:06:32 -07:00
Richard Henderson
c1f927e84e c-decl.c (c_expand_body_1): Push and pop function context here.
gcc/
        * c-decl.c (c_expand_body_1): Push and pop function context here.
        * tree-optimize.c (tree_rest_of_compilation): ... not here.  Take
        nested argument instead of computing nesting ourselves.

gcc/cp/
        * decl.c (finish_function): Clear current_function_decl.
        * decl2.c (mark_used): Don't push/pop gc context.
        * optimize.c (optimize_function): Likewise.
        * tree.c (cp_cannot_inline_tree_fn): Likewise.
        * pt.c (instantiate_decl): Inc/dec function_depth instead.
        * semantics.c (expand_body): Update for tree_rest_of_compilation
        nested argument.

From-SVN: r71208
2003-09-08 08:56:27 -07:00
Steven Bosscher
03845b47e6 re PR c/9862 (spurious warnings with -W -finline-functions)
PR c/9862
	* c-decl.c (c_expand_body_1): Move return warning from here...
	(finish_function): ...to here.

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

From-SVN: r71134
2003-09-06 13:34:00 +00:00
DJ Delorie
61f71b3447 targhooks.c: New file.
* targhooks.c: New file.
	* targhooks.h: New file.
	* Makefile.in: Add targhooks.o support.
	(function.o): Depend on$(TARGET_H).
	(stmt.o): Likewise.
	(combine.o): Depend on $(TREE_H) and $(TARGET_H).
	* builtins.c (apply_args_size, expand_builtin_apply_args_1,
	expand_builtin_apply): Convert to calls.struct_value_rtx hook.
	(expand_builtin_saveregs): Convert to
	calls.expand_builtin_saveregs hook.
	* c-decl.c (start_decl): Handle new calls.promote_prototypes hook
	here, instead of ...
	(get_parm_info) ... here.
	(store_parm_decls_oldstyle): Convert to calls.promote_prototypes
	hook.
	(finish_function): Handle calls.promote_prototypes hook here too.
	* c-typeck.c (convert_arguments): Convert to
	calls.promote_prototypes hook.
	(c_convert_parm_for_inlining): Likewise.
	* calls.c (initialize_argument_information): Convert to
	calls.promote_function_args hook.
	(expand_call): Convert to calls.struct_value_rtx,
	calls.strict_argument_naming,
	calls.pretend_outgoing_varargs_named, and
	calls.promote_function_return hooks.  Pass fndecl to
	aggregate_value_p.  Initialize CUMULATIVE_ARGS before calling
	hooks, so they can use that.
	(emit_library_call_value_1): Likewise.
	* combine.c (setup_incoming_promotions): Convert to
	calls.promote_function_args hook.
	* emit-rtl.c: Convert to calls.struct_value_rtx hook.
	* expr.c (expand_assignment): Pass call to aggregate_value_p.
	(expand_expr): Likewise.
	* expr.h: Remove support for SETUP_INCOMING_VARARGS,
	STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED,
	RETURN_IN_MEMORY macro defaults.
	* final.c (profile_function): Convert to calls.struct_value_rtx
	hook.
	* function.c (aggregate_value_p): Accept function type tree as
	second parameter; try to deduce fntype from it.  Convert to
	calls.return_in_memory hook.
	(assign_parms): Convert to calls.setup_incoming_varargs,
	calls.strict_argument_naming, calls.promote_function_args,
	calls.pretend_outgoing_varargs_named hooks.  Pass fndecl to
	aggregate_value_p.
	(expand_function_start): Likewise.  Convert to
	calls.struct_value_rtx hook.
	(expand_function_end): Convert to calls.promote_function_return hook.
	(allocate_struct_function): Pass fndecl to aggregate_value_p.
	* hard-reg-set.h: Update comments to new hook names.
	* integrate.c (expand_inline_function): Pass fndecl to aggregate_value_p.
	* reg-stack.c (stack_result): Likewise.
	* rtl.h (struct_value_rtx, struct_value_incoming_rtx): Delete.
	* stmt.c (expand_value_return): Convert to
	calls.promote_function_return hook.
	* target-def.h: Add TARGET_PROMOTE_FUNCTION_ARGS,
	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
	TARGET_STRUCT_VALUE_RTX, TARGET_RETURN_IN_MEMORY,
	TARGET_EXPAND_BUILTIN_SAVEREGS, TARGET_SETUP_INCOMING_VARARGS,
	TARGET_STRICT_ARGUMENT_NAMING,
	TARGET_PRETEND_OUTGOING_VARARGS_NAMED, and TARGET_CALLS.
	* target.h: Likewise.
	* tree.h (aggregate_value_p): Also takes a tree to deduce function
	attributes from (for target hooks).
	* doc/tm.texi (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN,
	PROMOTE_PROTOTYPES, RETURN_IN_MEMORY, STRUCT_VALUE_REGNUM,
	STRUCT_VALUE, STRUCT_VALUE_INCOMING_REGNUM, STRUCT_VALUE_INCOMING,
	EXPAND_BUILTIN_SAVEREGS, SETUP_INCOMING_VARARGS,
	STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED): Convert
	to hooks.

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Pass function
	to aggregate_value_p.
	* config/arm/arm.c (arm_init_cumulative_args,
	arm_output_mi_thunk): Likewise.
	* config/i386/i386.c (ix86_return_pops_args, x86_this_parameter):
	Likewise.
	* config/mips/mips.c (mips_save_reg_p, mips_expand_prologue,
	mips_can_use_return_insn): Likewise.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/s390/s390.c (s390_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Pass function to
	aggregate_value_p.
	* config/story16/stormy16.c (xstormy16_asm_output_mi_thunk): Pass
	function to aggregate_value_p.
	* objc/objc-act.c (generate_struct_by_value_array): Pass NULL to
	aggregate_value_p.

	* config/sh/sh-protos.h (sh_builtin_saveregs): Remove.
	(sh_attr_renesas_p, sh_cfun_attr_renesas_p, sh_function_arg,
	sh_function_arg_advance, sh_pass_in_reg_p): New.  * config/sh/sh.c
	(sh_handle_renesas_attribute, sh_promote_prototypes,
	sh_struct_value_rtx, sh_return_in_memory, sh_builtin_saveregs,
	sh_setup_incoming_varargs, sh_strict_argument_naming,
	sh_pretend_outgoing_varargs_named): New decls.
	(targetm): Add new hooks.
	(calc_live_regs): Save MACL and MACH if the function has the
	renesas attribute.
	(sh_expand_prologue): Support renesas attribute.
	(sh_builtin_saveregs): Make static.
	(sh_build_va_list): Support renesas attribute.
	(sh_va_start): Likewise.
	(sh_va_arg): Likewise.
	(sh_promote_prototypes): New.
	(sh_function_arg): New, moved from sh.h.  Support renesas
	attribute.
	(sh_function_arg_advance): Likewise.
	(sh_return_in_memory): Likewise.
	(sh_strict_argument_naming): Likewise.
	(sh_pretend_outgoing_varargs_named): Likewise.
	(sh_struct_value_rtx): New.
	(sh_attribute): Add renesas attribute.
	(sh_handle_renesas_attribute): New.
	(sh_attr_renesas_p, sh_cfun_attr_renesas_p): New.
	(sh_ms_bitfield_layout_p): Support renesas attribute also.
	(sh_output_mi_thunk): Pass function to aggregate_value_p.  *
	config/sh/sh.h (TARGET_SWITCHES): Add -mrenesas as an alias for
	-mhitachi.
	(STRUCT_VALUE_REGNUM, STRUCT_VALUE, RETURN_IN_MEMORY): Moved to
	target hooks.
	(sh_args): Add renesas_abi flag.
	(INIT_CUMULATIVE_ARGS): Set it.  Pass fndecl to aggregate_value_p.
	(FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Move to sh.c.
	(PASS_IN_REG_P): Support renesas attribute.  Pass DF and TF on the
	stack for the renesas abi.
	(STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED,
	SETUP_INCOMING_VARARGS, EXPAND_BUILTIN_SAVEREGS,
	PROMOTE_PROTOTYPES): Moved to sh.c.  * config/sh/sh.md (call): Set
	call cookie to indicate renesas calls.

	* decl.c (finish_function): Pass fndecl to aggregate_value_p.

	* misc.c (default_pass_by_ref): Convert to calls.return_in_memory
	hook.

From-SVN: r71048
2003-09-03 23:18:05 -04:00
Jan Hubicka
4a46cbfb11 Makefile.in (c-objc-common.o): Kill gt-c-objc-common.h dependency.
* Makefile.in (c-objc-common.o): Kill gt-c-objc-common.h dependency.
	* c-decl.c (finish_function):  Kill arguments, always use cgraph path.
	* c-objc-common.c: Kill include of gt-c-objc-common.h
	(expand_deferred_fns, deffer_fn): Kill function.
	(deferred_fns): Kill variable.
	(finish_cdtor): Update finish_function call.
	(c_objc_common_finish_file): Always call cgraph code.
	* c-parse.c: Regenerate.
	* c-parse.y: Regenerate.
	* c-tree.h (finish_function): Update prototype.

	* objc-acct.c (build_module_descriptor, finish_method_def):
	Update call of finish_function.

	* cgraphunit.c (cgraph_default_inline_p, cgraph_analyze_function): Add
	forward prototype.
	(cgraph_finalize_function): In non-unit-at-a-time mode analyze the
	function and assemble it if needed.
	(cgraph_finalize_compilation_unit): Do nothing in non-unit-at-a-time
	mode.
	(cgraph_optimize): Likewise.
	(cgraph_expand_function): In non-unit-at-a-time mode keep function body
	even when it has no inline callees.
	* c-parse.in: Update calls to finish_function.

From-SVN: r71028
2003-09-03 14:57:29 +00:00
Zack Weinberg
130a1080ce c-decl.c (pushdecl): Don't put variables on C_TYPE_INCOMPLETE_VARS of a type unless...
* c-decl.c (pushdecl): Don't put variables on
	C_TYPE_INCOMPLETE_VARS of a type unless that type is itself
	incomplete.

From-SVN: r70976
2003-09-01 17:32:18 +00:00
Zack Weinberg
766beae187 c-tree.h: Delete COMPARE_DIFFERENT_TU from enumeration.
* c-tree.h: Delete COMPARE_DIFFERENT_TU from enumeration.
	* c-typeck.c (same_translation_unit_p): New function.
	(comptypes): Use it instead of flags parameter to identify
	structure types from different translation units.
	* c-decl.c (duplicate_decls): Always call comptypes with
	COMPTYPE_STRICT flags argument.
	(c_reset_state): Set BLOCK_SUPERCONTEXT of the block formed
	to file_scope_decl.

From-SVN: r70953
2003-08-30 21:24:19 +00:00
Zack Weinberg
bf7a697f0a c-tree.h (C_TYPE_INCOMPLETE_VARS): New macro.
* c-tree.h (C_TYPE_INCOMPLETE_VARS): New macro.
	* c-decl.c (struct c_scope): Remove "incomplete" field.
	(pushdecl): Attach variables with incomplete types to
	the TYPE_MAIN_VARIANT of the incomplete type in question.
	(finish_struct): Look at C_TYPE_INCOMPLETE_VARS for variables
	to complete, not at current_scope->incomplete.  All such
	variables do need completion.

From-SVN: r70952
2003-08-30 21:21:40 +00:00
Richard Henderson
4985cde3ef tree-optimize.c: New file.
gcc/
        * tree-optimize.c: New file.
        * Makefile.in (OBJS-archive): Add tree-optimize.o.
        (tree-optimize.o): New.
        * c-decl.c (store_parm_decls): Use allocate_struct_function.
        (finish_function): Don't free_after_parsing or free_after_compilation.
        (set_save_expr_context): Move to tree-optimize.c.
        (c_expand_body_1): Use tree_rest_of_compilation.
        * c-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): New.
        * objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): New.
        * c-objc-common.c (expand_deferred_fns): Don't emit unused inlines;
        iterate until closure.
        * langhooks-def.h (LANG_HOOKS_RTL_EXPAND_START,
        LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END): New.
        (LANG_HOOKS_RTL_EXPAND_INITIALIZER): New.
        * langhooks.h (struct lang_hooks_for_rtl_expansion): New.
        * toplev.h (tree_rest_of_compilation): Declare it.

gcc/cp/
        * cp-lang.c (LANG_HOOKS_RTL_EXPAND_START): New.
        (LANG_HOOKS_RTL_EXPAND_STMT): New.
        * cp-tree.h (cxx_expand_function_start): Declare.
        * decl.c (start_function): Use allocate_struct_function.
        Move stmts_are_full_exprs_p assertion from expand_body.
        Do not free_after_parsing or free_after_compilation.
        (cxx_push_function_context): Move code to set struct function
        data from genrtl_start_function.
        * optimize.c (optimize_function): Don't inc/dec function_depth.
        * semantics.c (expand_body): Use tree_rest_of_compilation.
        (cxx_expand_function_start): Rename from genrtl_start_function,
        omit bits done by tree_rest_of_compilation.
        (genrtl_finish_function): Remove.
        (clear_decl_rtl): Move to ../tree-optimize.c.

Co-Authored-By: Jason Merrill <jason@redhat.com>

From-SVN: r70933
2003-08-29 16:21:13 -07:00
Richard Henderson
4b1e44bee1 c-tree.h (C_DECL_FILE_SCOPE): Move ...
* c-tree.h (C_DECL_FILE_SCOPE): Move ...
        * tree.h (DECL_FILE_SCOPE_P): ... here, and rename.
        * c-decl.c, c-objc-common.c, c-typeck.c: Update to match.

From-SVN: r70925
2003-08-29 14:57:05 -07:00
Jakub Jelinek
61c234ce87 c-decl.c (pushdecl): Only put decls which finish_struct will do something about onto incomplete chain.
* c-decl.c (pushdecl): Only put decls which finish_struct will do
	something about onto incomplete chain.
	(finish_struct): If not removing type from incomplete
	list, update prev.

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

From-SVN: r70752
2003-08-24 00:18:54 +02:00
Kazu Hirata
beb235f896 c-decl.c: Fix comment formatting.
* c-decl.c: Fix comment formatting.
	* cfgrtl.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* fold-const.c: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-common.c: Likewise.
	* mips-tfile.c: Likewise.
	* regmove.c: Likewise.

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

From-SVN: r70583
2003-08-19 23:22:00 +00:00
Kazu Hirata
02fa63cdf7 c-decl.c: Follow spelling conventions.
* c-decl.c: Follow spelling conventions.
	* cppfiles.c: Likewise.

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

From-SVN: r70577
2003-08-19 21:04:38 +00:00
Per Bothner
3d93cdfa88 * c-decl.c (SCOPE_LIST_APPEND): Remove bogus line continuation.
From-SVN: r70278
2003-08-09 14:59:02 -07:00
Zack Weinberg
fdc49e10e6 c-decl.c (builtin_decls): Replace with first_builtin_decl and last_builtin_decl.
* c-decl.c (builtin_decls): Replace with first_builtin_decl
	and last_builtin_decl.
	(c_init_decl_processing): Initialize both.
	(c_reset_state): Iterate from first_builtin_decl to
	last_builtin_decl inclusive to reintroduce builtins.

From-SVN: r70218
2003-08-07 03:12:09 +00:00
Steven Bosscher
b3c3af2f63 tree.h (DID_INLINE_FUNC): Remove macro.
2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>

	* tree.h (DID_INLINE_FUNC): Remove macro.
	(DECL_DECLARED_INLINE_P): Move from c-tree.h and cp/cp-tree.h,
	add tree check for FUNCTION_DECL.
	(DECL_ESTIMATED_INSNS): Move from c-common.h and java/java-tree.h.
	(struct tree_decl): Rename inlined_function_flag to
	declared_inline_flag.
	* c-common.h (c_lang_decl): Remove.
	(DECL_ESTIMATED_INSNS): Remove.
	* c-tree.h (struct lang_decl): Don't include c_lang_decl.
	(DECL_DECLARED_INLINE_P): Remove.
	* c-decl.c (grokdeclarator): Update comment.  With -finline-functions,
	do not reset DECL_DECLARED_INLINE_P.  Don't use DID_INLINE_FUNC.
	(finish_function): Make uninlinable a bool.  Fixup call to
	tree_inlinable_function_p() and fix some code style issues.
	* cgraph.h (disgread_inline_limits): Fix spelling: `disregard'.
	* cgraph.c (dump_cgraph): Likewise.
	* cgraphunit.c (cgraph_decide_inlining): Likewise
	(cgraph_finalize_compilation_unit): Likewise.
	Also update call to tree_inlinable_function_p().
	(cgraph_default_inline_p): Don't use DID_INLINE_FUNC.  Instead
	look at DECL_DECLARED_INLINE and reverse logic.
	* print-tree.c (print_node): Likewise.
	* toplev.c (rest_of_handle_inlining): Don't use DID_INLINE_FUNC.
	* tree-inline.h (tree_inlinable_function_p): Make a bool.  Update
	prototype.
	* tree-inline.c (inlinable_function_p): Split up in this function to
	check for basic inlining inhibiting conditions, and new
	limits_allow_inlining() function.  Warn if inlining is impossible
	because the inline candidate calls alloca or uses sjlj exceptions.
	(limits_allow_inlining): this new function to check if the inlining
	limits are satisfied.  Throttle from currfn_max_inline_insns, not from
	MAX_INLINE_INSNS_SINGLE.  The latter only makes sense if
	MAX_INLINE_INSNS_AUTO and MAX_INLINE_INSNS_SINGLE are equal.
	Update prototypes.
	(tree_inlinable_function_p): Make a bool.  Update call to
	inlinable_function_p
	(expand_call_inline): Use limits_allow_inlining() when not in
	unit-at-a-time mode to decide on inlining.  Don't use DID_INLINE_FUNC,
	instead see if the function was declared `inline'.

cp/
	* cp-tree.h (struct lang_decl): Don't include c_lang_decl.
	(DECL_DECLARED_INLINE_P): Remove.
	* decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P
	if decl is a FUNCTION_DECL.  This never made sense, but now it is
	required to avoid a tree check failure.
	* decl.c (grokfndecl): Don't touch DID_INLINE_FUNC.
	* optimize.c (maybe_clone_body): Likewise.

java/
	* java-tree.h (DECL_ESTIMATED_INSNS): Remove.

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

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

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

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

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

From-SVN: r70155
2003-08-04 20:44:20 +00:00
Zack Weinberg
f91f41b294 c-decl.c (gettags, [...]): Delete.
* c-decl.c (gettags, pushdecl_function_level): Delete.
	(last_function_parm_vars): Rename last_function_parm_others.
	(current_function_parm_vars): Rename current_function_parm_others.
	(struct c_scope): Rewrite comment explaining this data structure.
	Add names_last, blocks_last, parms_last fields.  Rename
	incomplete_list to incomplete.
	(SCOPE_LIST_APPEND, SCOPE_LIST_CONCAT): New macros.
	(poplevel): Ignore second argument.  No need to nreverse
	anything.  Restructure such that each list is processed
	exactly once.  Use 'const location_t *locus' syntactic sugar
	variable where useful.  Issue unused variable warnings
	ourselves, do not rely on function.c.
	(insert_block, pushdecl, bind_label): Use SCOPE_LIST_APPEND.
	(pushdecl_top_level): Likewise.  Don't call duplicate_decls.
	(implicitly_declare): decl cannot be error_mark_node.
	(undeclared_variable): Manipulate scope structure directly.
	(c_make_fname_decl): Likewise.
	(getdecls, c_init_decl_processing): Fix comment.
	(mark_forward_parm_decls): Use SCOPE_LIST_CONCAT.  No need
	for 'last' variable.
	(grokparms): No need to nreverse parms list.
	(store_parm_decls_newstyle): Set up the parms_last and
	names_last fields of the new scope too.
	(store_parm_decls_oldstyle): Can assume DECL_WEAK is not set
	on parms to begin with; check this under ENABLE_CHECKING.  Set
	up parms_last.
	(check_for_loop_decls): Refer directly to current_scope->tags.
	Use consistent quote style in diagnostics.
	(c_write_global_declarations): The names list is not backward.

	* c-common.h: Don't prototype gettags.
	* c-parse.in: Call poplevel with second argument 0 always.

From-SVN: r70061
2003-08-01 18:41:40 +00:00
Per Bothner
40e941afc1 opts.c (in_fnames, [...]): Moved here from c-opts.
* opts.c (in_fnames, num_in_fnames):  Moved here from c-opts.
	(add_input_filename):  New function.
	(handle_options):  Call add_input_filename directly instead of
	with a lang hook.
	* opts.h (in_fnames, num_in_fnames):  Moved here.
	(add_input_filename):  Declare.
	* c-decl.c:  Need to #include opts.h.
	* Makefile.in (c-decl.o):  Also depends on opts.h.
	* c-opts.c (in_fnames, num_in_fnames):  Moved to opts.c.
	(c_common_handle_filename):  Replaced by add_input_filename.
	* c-common.h (in_fnames, num_in_fnames, c_common_handle_filename):
	Remove.
	* langhooks.h (struct lang_hooks):  Remove handle_filename hook.
	* langhooks-def.h (LANG_HOOKS_HANDLE_FILENAME):  Remove macro.
	(LANG_HOOKS_INITIALIZER):  Remove use of LANG_HOOKS_HANDLE_FILENAME.
	* c-lang.c (LANG_HOOKS_HANDLE_FILENAME):  Remove macro.

From-SVN: r70012
2003-07-31 12:26:17 -07:00
Zack Weinberg
55d54003b6 c-decl.c (last_function_parm_vars, [...]): New static variables.
* c-decl.c (last_function_parm_vars, current_function_parm_vars):
	New static variables.
	(struct c_scope): Add parms and warned_forward_parm_decls
	fields; remove parm_order.
	(storedecls, storetags): Delete.
	(poplevel): Also clear bindings on the parms chain.
	(pushdecl): Handle forward declarations of parameters, and
	chain PARM_DECLs on the parms list, not the names list.
	(lookup_name_current_level): Check for PARM_DECLs on the parms
	list too.
	(push_parm_decl): Don't update parm_order.
	(clear_parm_order): Rename mark_forward_parm_decls.  Issue the
	warning, only once per parameter list, and set TREE_ASM_WRITTEN
	on the decls here.  Then move the forward decls to the names list.
	(grokparms): Set last_function_parm_vars.
	(get_parm_info): Don't use gettags or getdecls.  No need to
	extract non-parms from the parms list, or reorganize the parms
	list.  Feed nonparms back in the TREE_TYPE of the list node
	returned.  Issue only one error per parameter list for "void"
	appearing more than once in said parameter list.  Collapse
	parmlist_tags_warning into this function to avoid double scan
	of tags list.
	(start_function): Set current_function_parm_vars.
	(store_parm_decls_newstyle): Bypass pushdecl, manipulate scope
	directly.  Get non-parms from current_function_parm_vars; no
	need to extract them from the parms chain.  Properly bind tags
	in the new scope.
	(store_parm_decls_oldstyle): No need to extract non-parameters
	from the parms chain, nor to store them back afterward.  Move
	declaration to top of function, restructure code reordering
	DECL_ARGUMENTS.
	(store_parm_decls): No need to save and restore warn_shadow.
	* c-parse.in: Don't call parmlist_tags_warning nor
	clear_parm_order.  Call mark_forward_parm_decls when forward
	parm decls are encountered.
	* c-tree.h: Prototype mark_forward_parm_decls; not
	clear_parm_order or parmlist_tags_warning.

testsuite:
	* gcc.dg/struct-in-proto-1.c: New test.

From-SVN: r69945
2003-07-29 23:58:08 +00:00
Geoffrey Keating
5f0eabcc4d c-decl.c (c_expand_body_1): Use C_DECL_FILE_SCOPE to detect main function.
* c-decl.c (c_expand_body_1): Use C_DECL_FILE_SCOPE to detect
	main function.

From-SVN: r69913
2003-07-29 04:14:48 +00:00
Zack Weinberg
14077d68ba c-decl.c: Update commentary, adjust blank lines throughout.
* c-decl.c: Update commentary, adjust blank lines throughout.
	(struct c_scope): Fix indentation.  Reorder members so
	outer-context pointers come first, booleans last.
	(duplicate_decls, define_label): Use a 'locus' variable for
	diagnostic locations in a few more places.
	(warn_if_shadowing): Un-split a conditional that fits on one line.
	(c_init_decl_processing): No need to clear current_scope and
	current_function_scope.
	(start_decl): Merge if/else if statements with same action.
	(push_parm_decl): Rename old_immediate_size_expand to use
	save_foo convention; save/restore around entire function.
	(grokdeclarator): Remove unnecessary braces.

From-SVN: r69903
2003-07-28 22:19:46 +00:00
Zack Weinberg
a8ccdffedc c-decl.c (struct c_scope): Remove keep_if_subblocks field.
* c-decl.c (struct c_scope): Remove keep_if_subblocks field.
	(keep_next_if_subblocks): Rename next_is_function_body.
	(pushlevel): Adjust commentary.  Always set ->keep on the
	outermost level of a function.  Don't set ->keep_if_subblocks.
	(poplevel): Adjust commentary.  Don't look at ->keep_if_subblocks.
	(store_parm_decls): Adjust to match.
	(finish_function): Adjust to match.
	Call poplevel with all three arguments zero.

From-SVN: r69865
2003-07-28 00:12:32 +00:00
Zack Weinberg
66db6b6259 c-decl.c (store_parm_decls_newstyle, [...]): New functions split out of store_parm_decls.
* c-decl.c (store_parm_decls_newstyle, store_parm_decls_oldstyle):
	New functions split out of store_parm_decls.
	Avoid unnecessary work. Use local variables consistently.
	(store_parm_decls): Likewise.

	(finish_function): No need to set functionbody flag on call to
	poplevel.
	(struct language_function): Remove scope field.
	(c_push_function_context, c_pop_function_context): No need to
	save and restore current_scope.

From-SVN: r69862
2003-07-27 20:07:04 +00:00
Roger Sayle
cc42f5f54c builtins.def (DEF_FALLBACK_BUILTIN): Delete.
* builtins.def (DEF_FALLBACK_BUILTIN): Delete.
	(DEF_EXT_FALLBACK_BUILTIN): Delete.
	(BUILT_IN_BZERO, BUILT_IN_BCOPY, BUILT_IN_BCMP): Declare using
	the regular DEF_EXT_LIB_BUILTIN macro.
	(BUILT_IN_FPUTC, BUILT_IN_FPUTS, BUILT_IN_FWRITE): Declare using
	the regular DEF_LIB_BUILTIN macro.
	(BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTS_UNLOCKED,
	BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS_UNLOCKED,
	BUILT_IN_FWRITE_UNLOCKED): Declare using the regular
	DEF_EXT_LIB_BUILTIN macro.

	* c-decl.c (duplicate_decls): Remove code to handle builtin
	functions prototyped without an argument list.

From-SVN: r69814
2003-07-26 13:27:20 +00:00
Geoffrey Keating
863d3dfb5a * c-decl.c (c_static_assembler_name): Remove TREE_STATIC test.
From-SVN: r69808
2003-07-26 07:16:48 +00:00
Jason Merrill
de7df9ebdc tree.h (boolean_type_node): Move from C/C++/Java frontends.
* tree.h (boolean_type_node): Move from C/C++/Java frontends.
        (boolean_true_node, boolean_false_node): Likewise.
        (enum tree_index): Add TI_BOOLEAN_{TYPE,FALSE,TRUE}.
        * tree.c (build_common_tree_nodes): Init boolean_type_node.
        (build_common_tree_nodes_2): Init boolean_{true,false}_node.
        * stor-layout.c (set_sizetype): Handle an early BOOLEAN_TYPE.
        * c-common.h (truthvalue_type_node): Renamed from boolean_type_node.
        (truthvalue_true_node): Renamed from boolean_true_node.
        (truthvalue_false_node): Renamed from boolean_false_node.
        * c-decl.c: Just set truthvalue_* to integer_*.
        * c-*.[ch]: s/boolean/truthvalue/.  s/c_bool/boolean/.
        * cp/decl.c: Just set truthvalue_* to boolean_*.
        * java/java-tree.h: Move boolean_type_node et al to the back end.

From-SVN: r69758
2003-07-24 16:48:13 -04:00
Roger Sayle
6907ddd3ba c-decl.c (match_builtin_function_types): New subroutine of duplicate_decls to test whether a redeclaration of a builtin...
* c-decl.c (match_builtin_function_types): New subroutine of
	duplicate_decls to test whether a redeclaration of a builtin
	function is suitably close, i.e. the return type and all of
	the argument types have the same modes as the builtin expects.
	(duplicate_decls): Fuzzy type matching for builtin functions
	moved to match_builtin_function_types.

From-SVN: r69757
2003-07-24 20:44:01 +00:00
Zack Weinberg
f8521984ee c-decl.c: Search-and-replace change 'binding level' to 'scope' in commentary.
* c-decl.c: Search-and-replace change 'binding level' to
	'scope' in commentary.
	(struct binding_level): Now struct c_scope.
	(current_binding_level): Now current_scope.
	(free_binding_level): Now scope_freelist.
	(current_function_level): Now current_function_scope.
	(global_binding_level): Now global_scope.
	(make_binding_level): Now make_scope.
	(pop_binding_level): Now pop_scope.

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

From-SVN: r69689
2003-07-22 23:15:30 +00:00
Geoffrey Keating
d05cc98eaf c-decl.c (start_decl): Don't call maybe_apply_pragma_weak here.
* c-decl.c (start_decl): Don't call maybe_apply_pragma_weak here.
	(finish_decl): Call maybe_apply_pragma_weak here.
	(grokdeclarator): Check that DECL_ASSEMBLER_NAME isn't set before
	TREE_PUBLIC and TREE_STATIC are decided.
	(start_function): Move call to maybe_apply_pragma_weak.  Check that
	DECL_ASSEMBLER_NAME isn't set too early.

From-SVN: r69660
2003-07-22 02:23:27 +00:00
Geoffrey Keating
48873ed202 c-common.h (num_in_fnames): Declare.
* c-common.h (num_in_fnames): Declare.
	(c_static_assembler_name): Move from here...
	* c-tree.h (c_static_assembler_name): ... to here.
	* c-opts.c: Don't include langhooks-def.h.
	(c_static_assembler_name): Move to c-decl.c.
	(num_in_fnames): Make externally visible.
	* c-decl.c: Include langhooks-def.h.
	(c_static_assembler_name): Move from c-opts.c.
	* Makefile.in (c-decl.o): Add $(LANGHOOKS_DEF_H).
	(c-opts.o): Remove $(LANGHOOKS_DEF_H).

From-SVN: r69650
2003-07-21 21:25:47 +00:00
Zack Weinberg
14e33ee856 * c-decl.c (named_labels, shadowed_labels, label_level_chain)
(push_label_level, pop_label_level): Kill.
	(struct binding_level): Rename level_chain to outer.
	Add outer_function field.  Change parm_flag, function_body,
	keep, keep_if_subblocks to 1-bit bitfields of type bool.
	(current_function_level): New variable.
	(keep_next_level_flag, keep_next_if_subblocks): Change type to bool.
	(keep_next_level, declare_parm_level, warn_if_shadowing):
	Update to match.
	(struct language_function): Kill named_labels, shadowed_labels fields.
	(c_init_decl_processing, start_function, c_push__function_context)
	(c_pop_function_context): No need to muck with named_labels nor
	shadowed_labels.

	(make_binding_level): No need to clear the structure here.
	(pop_binding_level): Always operate on current_binding_level.
	Update current_function_level if necessary.
	(pushlevel): Don't clear named_labels.  Update current_function_level
	if necessary.  Use "true" and "false" where appropriate.
	(poplevel): Diagnose labels defined but not used, or vice
	versa, and clear out label-meanings leaving scope, while
	walking down the decls list, for all binding levels.
	Handle LABEL_DECLs appearing in the shadowed list.
	pop_binding_level takes no arguments.
	(pushdecl_function_level): Use current_function_level.

	(make_label, bind_label): New static functions.
	(declare_label): New exported function.
	(lookup_label, define_label): Rewritten for new data structure.
	(shadow_label): Kill.

	* c-tree.h: Prototype declare_label; don't prototype
	push_label_level, pop_label_level, nor shadow_label.
	* c-parse.in: Remove all calls to push_label_level and
	pop_label_level.  Use declare_label for __label__ decls.

	* doc/extend.texi: Clarify that __label__ can be used to
	declare labels with local scope in any nested block, not
	just statement expressions.  Cross-reference nested functions
	section from local labels section.

testsuite:
	* gcc.dg/noncompile/label-1.c: New comprehensive test case for
	diagnostics of ill-formed constructs involving labels.
	* gcc.dg/noncompile/label-lineno-1.c: Add error regexp for
	the new 'previously defined here' message.

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

From-SVN: r69587
2003-07-19 14:47:15 +00:00
Gabriel Dos Reis
435ab23636 c-decl.c (c_finish_incomplete_decl): Don't use xxx_with_decl.
* c-decl.c (c_finish_incomplete_decl): Don't use xxx_with_decl.
	(pop_label_level): Likewise.
	(duplicate_decls): Likewise.
	(implicitly_declare): Likewise.
	(shadow_label): Likewise.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	(grokdeclarator): Likewise.
	(get_parm_info): Likewise.
	(detect_field_duplicates): Likewise.
	(finish_struct): Likewise.
	(start_function): Likewise.
	(store_parm_decls): Likewise.
	(finish_function): Likewise.
	(c_expand_body_1): Likewise.
	(check_for_loop_decls): Likewise.
	(merge_translation_unit_decls): Likewise.

From-SVN: r69582
2003-07-19 10:19:19 +00:00
Zack Weinberg
9cd51ef68e c-decl.c (pushdecl_function_level): Make static, return nothing.
* c-decl.c (pushdecl_function_level): Make static, return nothing.
	(kept_level_p): Fold into poplevel.
	(undeclared_variable): Moved here from c-typeck.c.  Export.
	* c-tree.h (KEEP_YES, KEEP_NO, KEEP_MAYBE): New #defines.
	(undeclared_variable): Prototype here.  Don't prototype
	kept_level_p nor pushdecl_function_level.
	* c-parse.in: Change first argument to poplevel from
	"kept_level_p()" to "KEEP_MAYBE".
	* c-typeck.c (undeclared_variable): Moved to c-decl.c.

From-SVN: r69540
2003-07-18 03:39:42 +00:00
Zack Weinberg
eb1dfbb2fb c-decl.c: Fix typos in several comments.
* c-decl.c: Fix typos in several comments.  Remove all
	#if 0 blocks; reindent as needed.  Remove unused argument
	to declare_parm_level; all callers changed.
	* c-parse.in: Update calls to declare_parm_level.  Avoid
	issuing a double warning in some circumstances.
	* c-typeck.c: Update calls to declare_parm_level.
	* c-tree.h: Update prototype of declare_parm_level.

	* c-pragma.c (apply_pragma_weak): Don't complain about a
	redundant #pragma weak.

	* objc/objc-act.c (forward_declare_categories,
	build_selector_reference_decl, build_class_reference_decl,
	build_objc_string_decl, synth_forward_declarations,
	build_protocol_reference): Set TREE_PUBLIC on synthetic
	forward decl to 0, consistent with eventual definition.
	Correct comments to match.

cp:
	* pt.c (get_bindings): Make definition consistent with
	forward declaration.

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

From-SVN: r69470
2003-07-16 11:45:56 -07:00
Andreas Jaeger
9d4a30f2c1 c-decl.c (link_hash_hash): Avoid warning about casting pointer to integer of different size.
* c-decl.c (link_hash_hash): Avoid warning about casting pointer
	to integer of different size.

From-SVN: r69302
2003-07-13 22:21:24 +02:00
Geoffrey Keating
d1bd0ded61 Index: ChangeLog
2003-07-10  Geoffrey Keating  <geoffk@apple.com>

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

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

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

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

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

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

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

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

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

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

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

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

From-SVN: r69113
2003-07-09 00:31:20 +00:00
Kaveh R. Ghazi
75b6f3fd3a bitmap.c (debug_bitmap_file): Merge uses of HOST_PTR_PRINTF with adjacent stdio calls.
gcc:
	* bitmap.c (debug_bitmap_file): Merge uses of HOST_PTR_PRINTF with
	adjacent stdio calls.
	* c-decl.c (c_print_identifier): Likewise.
	* mips-tfile.c (write_varray, write_object, allocate_cluster): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* system.h (HOST_PTR_PRINTF): Ensure we have a literal string.

	* configure.in (AC_COMPILE_CHECK_SIZEOF): Check for `void *'.
	* config.in, configure: Regenerated.

cp:
	* decl.c (print_binding_level, print_other_binding_stack,
	print_binding_stack): Merge uses of HOST_PTR_PRINTF with adjacent
	stdio calls.
	* ptree.c (cxx_print_decl, cxx_print_binding): Likewise.

From-SVN: r69061
2003-07-08 00:35:52 +00:00
Nathan Sidwell
5b030314af c-tree.h (define_label): Replace filename and lineno arguments with a location_t.
* c-tree.h (define_label): Replace filename and lineno arguments
	with a location_t.
	* c-decl.c (poplevel): Adjust define_label call.
	(pop_label_level): Likewise.
	(define_label): Replace filename and lineno arguments with a
	location_t.
	(store_parm_decls): Use DECL_SOURCE_LOCATION.
	* c-parse.in (label): Adjust define_label call.

	* cp/cp-tree.h (define_label): Replace filename and lineno
	arguments with a location_t.
	* cp/decl.c (pop_label): Adjust define_label call.
	(define_label): Replace filename and lineno arguments with a
	location_t.
	* cp/semantics.c (finish_label): Adjust define_label call.

	* java/decl.c (poplevel): Adjust define_label call.

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

From-SVN: r68734
2003-06-30 19:36:25 +00:00
Nathan Sidwell
4714db5aef c-decl.c (c_init_decl_processing): Use a location_t.
* c-decl.c (c_init_decl_processing): Use a location_t. Set input
	filename to <internal>.
	* tree.c (make_node): Just copy the current location.

From-SVN: r68667
2003-06-29 11:28:00 +00:00
Nathan Sidwell
bc4721b87e c-tree.h (grokfield): Remove unused filename and line parameters.
* c-tree.h (grokfield): Remove unused filename and line parameters.
	* c-decl.c (grokfield): Remove unused filename and line	parameters.
	* c-parse.in (component_decl): Adjust field grokking rules, adjust
	grokfield calls.
	(component_declarator): Likewise.
	(component_notype_declarator): Likewise.
	* objc/objc-act.c (build_module_descriptor): Adjust grokfield
	calls.
	(build_protocol_template, build_method_prototype_list_template,
	build_method_prototype_template, build_category_template,
	build_selector_template, build_class_template,
	build_super_template, build_ivar_template,
	build_ivar_list_template, build_method_list_template,
	build_method_template, add_instance_variable): Likewise.

From-SVN: r68560
2003-06-27 09:05:45 +00:00
Neil Booth
e01cc6dc62 c-decl.c (store_parm_decls): Make saved_warn_shadow boolean.
* c-decl.c (store_parm_decls): Make saved_warn_shadow boolean.
	* common.opt: Add remaining -W options and -g.
	* diagnostic.c (warnings_are_errors): Remove.
	* flags.h: Make most warning flags boolean.
	* opts.c (common_handle_option): Handle remaining -W options, and -g.
	Move many warning flags from toplev.c, making them boolean.
	* toplev.c: Remove many warning flags.
	(decode_W_option): Remove.
	(decode_g_option): Make extern.  Error on unknown switch.
	(lang_independent_W_options): Use warn_dummy.
	(independent_decode_option): Just handle -f switches now.
	* toplev.h (decode_g_option): New.

From-SVN: r68287
2003-06-20 22:56:36 +00:00
Nathan Sidwell
1f9cc6db1b tree.h (expand_function_end): Remove all parameters.
* tree.h (expand_function_end): Remove all parameters.
	* function.c (expand_function_end): Remove all parameters.
	Use input_location. Never expand_end_bindings.
	* c-decl.c (c_expand_body_1): Adjust expand_function_end call.
	* coverage.c (create_coverage): Likewise.

	* ada/utils.c (end_subprog_body): Adjust expand_function_end
	call.

	* cp/semantics.c (genrtl_finish_function): Adjust
	expand_function_end call.

	* f/com.c (finish_function): Adjust expand_function_end call.

	* java/class.c (push_class): Use a location_t to save place.
	(emit_register_classes): Set input_location. Adjust
	expand_function_end call.
	* java/resource.c (write_resource_constructor): Likewise.
	* java/decl.c (end_java_method): Adjust expand_function_end call.
	* java/parse.y (source_end_java_method): Likewise.

	* treelang/treetree.c (tree_code_create_function_wrapup): Adjust
	expand_function_end call.

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

From-SVN: r68218
2003-06-19 21:43:59 +02:00
Nathan Sidwell
ee6b0296b8 tree.h (init_function_start): Remove filename and line paramters.
* tree.h (init_function_start): Remove filename and line paramters.
	* function.c (init_function_start): Remove filename and line
	parameters. Use DECL_SOURCE_LOCATION.
	* c-decl.c (store_parm_decls): Adjust init_function_start call.
	(c_expand_body_1): Likewise.
	* coverage.c (create_coverage): Likewise.

	* ada/utils.c (begin_subprog_body): Adjust init_function_start
	call.

	* cp/decl.c (start_function): Adjust init_function_start call.
	* cp/method.c (use_thunk): Likewise.
	* cp/semantics.c (genrtl_start_function): Likewise.

	* f/com.c (stor_parm_decls): Adjust init_function_start call.

	* java/class.c (emit_register_classes): Adjust init_function_start
	call.
	* java/decl.c (complete_start_java_method): Likewise.
	* java/resource.c (write_resource_constructor): Likewise.

	* objc/objc-act.c (build_tmp_function_decl): Set line number to
	zero.
	(hack_method_prototype): Adjust init_function_start call.

	* treelang/treetree.c (tree_code_create_function_initial): Adjust
	init_function_start call.

From-SVN: r67953
2003-06-14 17:33:32 +00:00
Kazu Hirata
6356f89288 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.2: Likewise.
	* c-decl.c: Likewise.
	* cfgloop.h: Likewise.
	* cgraph.c: Likewise.
	* coverage.c: Likewise.
	* cppcharset.c: Likewise.
	* cpphash.h: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* dbxout.c: Likewise.
	* df.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* explow.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gengtype.c: Likewise.
	* ggc.h: Likewise.
	* opts.c: Likewise.
	* real.c: Likewise.
	* reload.c: Likewise.
	* stmt.c: Likewise.

From-SVN: r67849
2003-06-12 19:01:08 +00:00
J"orn Rennecke
e3091a5f95 c-decl.c (c_init_decl_processing): Clear input_file_name while building common nodes.
* c-decl.c (c_init_decl_processing): Clear input_file_name
	while building common nodes.
	* dwarf2out.c (gen_compile_unit_die, dwarf2out_finish):
	Don't add working directory for strings like <built-in> .

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

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

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

From-SVN: r67449
2003-06-04 10:06:00 -07:00
Richard Kenner
2949599469 * c-decl.c (duplicate_decls): Test DECL for ERROR_MARK.
From-SVN: r67096
2003-05-22 15:39:13 -04:00
J"orn Rennecke
52a8b7b838 c-decl.c (finish_decl): When setting the DECL_ASSEMBLER_NAME of a function using ASMSPEC, prepend a star.
* c-decl.c (finish_decl): When setting the DECL_ASSEMBLER_NAME
	of a function using ASMSPEC, prepend a star.

From-SVN: r66965
2003-05-19 17:41:47 +01:00
Richard Henderson
2306d91c5c c-decl.c (duplicate_decls): Re-invoke make_decl_rtl if the old decl had instantiated DECL_RTL.
* c-decl.c (duplicate_decls): Re-invoke make_decl_rtl if
        the old decl had instantiated DECL_RTL.

From-SVN: r66798
2003-05-13 22:40:12 -07:00
Richard Henderson
66ea6f4cce re PR c/10675 (Compile time increases quadratically with struct size)
PR c/10675
        * c-decl.c: Include hashtab.h.
        (detect_field_duplicates): New.
        (finish_struct): Use it.
        * Makefile.in (c-decl.o): Update.
        * c-parse.in (structsp_attr): Nreverse component_decl_list results.
        (component_decl_list, component_decl_list2,
        components, components_notype): Build list in reverse order.
        (enumlist): Clarify docs.  Use TREE_CHAIN not chainon.
        * tree.c (chainon): Special case op2 null as well.
        Reorg for clarity.

From-SVN: r66710
2003-05-11 20:25:38 -07:00
Gabriel Dos Reis
95035b6fb7 c-decl.c (define_label): Tidy.
* c-decl.c (define_label): Tidy.  Don't use any of
	error_with_file_and_line or warning_with_file_and_file.
	(pending_xref_error): Likewise.
	(store_parm_decls): Likewise.
	(current_function_prototype_locus): New object.  Package from
	current_function_prototype_file and current_function_prototype_line.
	(start_function): Use it.
	(current_function_prototype_file): Remove.
	(current_function_prototype_line): Remove;

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

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

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

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

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

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

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

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

From-SVN: r66333
2003-05-01 16:13:36 +00:00
Jakub Jelinek
9661b15f95 c-decl.c (finish_decl): When prototype with asmspec is found for built-in...
* c-decl.c (finish_decl): When prototype with asmspec is found
	for built-in, adjust built_in_decls as well as expr.c decls.
	* expr.c (init_block_move_fn, init_block_clear_fn): New functions.
	(emit_block_move_libcall_fn, clear_storage_libcall_fn): Use it.
	* expr.c (init_block_move_fn, init_block_clear_fn): New prototypes.

	* gcc.c-torture/execute/string-opt-asm-1.c: New test.
	* gcc.c-torture/execute/string-opt-asm-2.c: New test.

From-SVN: r66181
2003-04-28 21:58:52 +02:00
Alexander Sotirov
38a314251e re PR c/9177 (-fdump-translation-unit: C front end deletes function_decl AST nodes and breaks debugging dumps.)
PR c/9177
	* c-decl.c (c_expand_body): Don't garbage collect the function
	body if we are going to dump it later.

From-SVN: r65787
2003-04-18 19:39:29 +00:00
Roger Sayle
220a35cc8e re PR c/10375 (Function-local external decls of builtins don't get attributes)
2003-04-17  Roger Sayle  <roger@eyesopen.com>

	PR c/10375
	* c-decl.c (duplicate_decls): Preserve "const" and "noreturn"
	function attributes.

	* cp/decl.c (duplicate_decls): Preserve "const", "noreturn"
	and "nothrow" function attributes.

	* f/com.c (duplicate_decls): Preserve "const" and "noreturn"
	function attributes.

From-SVN: r65753
2003-04-17 21:27:37 +00:00
Mark Mitchell
c8b718bae9 c-decl.c (implicitly_declare): Copy declarations that are going to be placed in a local scope.
* c-decl.c (implicitly_declare): Copy declarations that are going
	to be placed in a local scope.

From-SVN: r65646
2003-04-15 16:35:52 +00:00
Mark Mitchell
f4e929877c c-decl.c (grokdeclarator): Reject extern redeclarations of static variables.
* c-decl.c (grokdeclarator): Reject extern redeclarations of
	static variables.

	* gcc.c-torture/execute/scope-2.c: Move to ...
	* gcc.dg/noncompile/scope.c: .... here.

From-SVN: r65615
2003-04-15 01:37:03 +00:00
Roger Sayle
7f685e177e tree.h (DECL_BUILT_IN_NONANSI): Remove.
* tree.h (DECL_BUILT_IN_NONANSI): Remove.
	* c-common.c (builtin_function_2): Don't set DECL_BUILT_IN_NONANSI.
	* c-decl.c (duplicate_decls): Use invariant DECL_BUILT_IN_NONANSI
	implies DECL_BUILT_IN to simplify logic.
	* print-tree.c (print_node): Don't dump DECL_BUILT_IN_NONANSI.

From-SVN: r65561
2003-04-14 03:13:07 +00:00
Roger Sayle
1331d16fd4 builtin-types.def (BT_FN_STRING_CONST_STRING): New builtin type.
* builtin-types.def (BT_FN_STRING_CONST_STRING): New builtin type.
	(BT_FN_PTR_SIZE_SIZE): Likewise.
	* builtins.def (BUILT_IN_MALLOC, BUILT_IN_CALLOC, BUILT_IN_STRDUP):
	New built-in functions for malloc, calloc and strdup respectively.
	* calls.c (special_function_p): No need to handle malloc-like
	functions any longer.  ECF_MALLOC is set via built-in attributes.

	* c-decl.c (duplicate_decls): Preserve pure and malloc attributes.
	* cp/decl.c (duplicate_decls): Preserve pure and malloc attributes.
	* f/com.c (duplicate_decls): Preserve pure and malloc attributes.

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

	* gcc.dg/builtins-13.c: New test case.
	* gcc.dg/builtins-14.c: New test case.

From-SVN: r65560
2003-04-14 02:55:31 +00:00
Zack Weinberg
339a28b96a c-decl.c (struct binding_level): Add shadowed_tags and function_body...
2003-04-10  Zack Weinberg  <zack@codesourcery.com>

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

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

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

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

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

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

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

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

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

From-SVN: r65460
2003-04-11 04:26:55 +00:00
Jason Merrill
78d55cc86e stor-layout.c (do_type_align): New fn, split out from...
* stor-layout.c (do_type_align): New fn, split out from...
        (layout_decl): ...here.  Do all alignment calculations for
        FIELD_DECLs here.
        (update_alignment_for_field): Not here.
        (start_record_layout, debug_rli): Remove unpadded_align.
        * tree.h (struct record_layout_info_s): Remove unpadded_align.
        * c-decl.c (finish_enum): Don't set DECL_SIZE, DECL_ALIGN
        or DECL_MODE on the CONST_DECLs.
        (finish_struct): Don't mess with DECL_ALIGN.
        * cp/class.c (build_vtable): Set DECL_ALIGN here.
        (get_vtable_decl): Not here.
        (layout_vtable_decl): Or here.
        (create_vtable_ptr): Or here.
        (layout_class_type): Or here.
        (check_bitfield_decl): Don't mess with field alignment.
        * ada/misc.c (gnat_adjust_rli): #if 0.

From-SVN: r65207
2003-04-03 13:23:04 -05:00
Mark Mitchell
46e33d43a2 re PR middle-end/9936 (ICE with local function and variable-length 2d array)
PR c/9936
	* c-decl.c (grokdeclarator): Clear SAVE_EXPR_CONTEXT for
	variably-sized arrays in parameters.
	(set_save_expr_context): New function.
	(c_expand_body): Use it, via walk_tree.

	PR c/9936
	* gcc.dg/20030331-2.c: New test.

From-SVN: r65128
2003-04-01 07:35:11 +00:00
Jason Merrill
adff28c38d re PR java/10145 (java and c++ disagree about class layout)
PR java/10145
        * stor-layout.c (update_alignment_for_field): Respect
        DECL_USER_ALIGN for zero-length bitfields, too.
        * c-decl.c (finish_struct): Don't set DECL_ALIGN for normal
        fields.
        * cp/class.c (check_field_decl): Don't set DECL_ALIGN.

From-SVN: r65103
2003-03-31 15:25:11 -05:00
Richard Henderson
3684a055a0 c-decl.c (finish_function): Always defer if DECL_DECLARED_INLINE_P.
* c-decl.c (finish_function): Always defer if DECL_DECLARED_INLINE_P.
	* gcc.dg/inline-4.c: New.

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

From-SVN: r64699
2003-03-22 03:28:39 +00:00
Zack Weinberg
6970c06a4e c-tree.h (struct lang_identifier): Remove error_locus field.
* c-tree.h (struct lang_identifier): Remove error_locus field.
	(IDENTIFIER_ERROR_LOCUS): Kill.
	(record_function_scope_shadow): New prototype.
	* c-typeck.c (build_external_ref): Don't complain if
	decl is error_mark_node.  When not at file scope, bind the
	decl's local value to error_mark_node to suppress further
	warnings, instead of setting IDENTIFIER_ERROR_LOCUS.

	* c-decl.c (get_function_binding_level): New static function.
	(record_function_scope_shadow): New exported function.
	(c_make_fname_decl): Use get_function_binding_level.

From-SVN: r64504
2003-03-17 21:16:07 +00:00
Eric Botcazou
8a7d6cb3d8 re PR c/9928 (ICE on duplicate enum declaration)
PR c/9928
	* c-decl.c (duplicate_decls): Discard the initializer of the new decl
	only if it is a VAR_DECL.

From-SVN: r64235
2003-03-12 09:54:38 +00:00
Jan Hubicka
18d13f3417 inline-3.c: New test.
* gcc.dg/inline-3.c: New test.

	* c-decl.c: (finish_function): Update call of tree_inlinable_function_p.
	* cgraph.h: (cgraph_local_info): Add can_inline_once
	(cgraph_global_info): Add inline_once.
	(cgraph_node): Add previous.
	(cgraph_remove_node): New.
	* cgraphunit.c (cgraph_mark_functions_to_inline_once): New static
	function.
	(cgraph_optimize): Call it.
	(cgraph_finalize_function):  Set inlinable flags.
	(cgraph_finalize_compilation_unit):  Actually remove the reclaimed nodes.
	(cgraph_mark_functions_to_output):  Use new inlining heuristics flags.
	(cgraph_expand_function): Likewise.
	* cgraph.c
	(cgraph_node): Put nodes into doubly linked chain.
	(cgraph_remove_node): New function.
	* flags.h (flag_inline_functions_called_once): Declare.
	* tree-inline.c: Include cgraph.h
	(inlinable_functions_p): Add extra argument to bypass limits.
	(expand_call_inline):  Obey cgraph flag.
	* tree-inline.h (tree_inlinable_function_p): Update prototype.

From-SVN: r63983
2003-03-08 13:26:37 +00:00
Kurt Garloff
bc52247263 params.def: Introduce parameter max-inline-insns-rtl for a separate limit for the RTL inliner.
2003-03-02  Kurt Garloff  <garloff@suse.de>

	* params.def: Introduce parameter max-inline-insns-rtl for
	a separate limit for the RTL inliner.
	* params.h: Likewise.
	* integrate.c (function_cannot_inline_p): Use it.
	* toplev.c (decode_f_option): Set multiple parameters
	controlling inlining with -finline-limit.
	* params.def: Fix orthographic and typographic errors.
	* doc/invoke.texi: Document parameters controlling inlining
	and the way -finline-limit sets multiple of them.

	* tree.h (struct tree_decl): Introduce inlined_function_flag,
	recording whether the function became eligible for inlining
	by a compiler flag rather than the declaration.
	Provide DID_INLINE_FUNC macro to access it.
	* c-decl.c (grokdeclarator): Set DID_INLINE_FUNC.
	* cp/decl.c (grokfndecl): Likewise.
	* toplev.c (rest_of_compilation): Likewise.
	* cp/optimize (maybe_clone_body): Copy DID_INLINE_FUNC.
	* print-tree.c (print_node): Report it.
	* params.def: Introduce new max-inline-insns-auto limit.
	* params.h: Likewise.
	* tree-inline.c (inlinable_function_p): Apply it to functions
	with DID_INLINE_FUNC set.
	* toplev.c (decode_f_option): Initialize it from -finline-limit
	value.
	* doc/invoke.texi: Document new parameter.

From-SVN: r63688
2003-03-02 21:18:16 +00:00
Jan Hubicka
0d446150c2 objc-act.c: Include cgraph.h
* objc-act.c: Include cgraph.h
	(mark_referenced_methods): New function.
	(objc_init): Call it.
	* objc-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Set.

	* c-decl.c (finish_function): Honor can_defer_p even in unit-at-a-time
	mode.

	* optabs.c (expand_fix): Do not widen the input operand.

	* expr.c (emit_group_store):  Fix crash when converting single
	register into complex register.

	* Makefile.in (jump.o, regclass.o, alias.o): Add dependency on timevar.h
	* alias.c: Include timevar.h
	(init_alias_analysis):  Set timevar
	* jump.c: Include timevar.h
	(rebuild_jump_labels):  Set timevar
	* regcalss.c: Include timevar.h
	(reg_scan):  Set timevar
	* timevar.def (TV_ALIAS_ANALYSIS, TV_REG_SCAN, TV_REBUILD_JUMP): New

From-SVN: r63464
2003-02-26 11:09:33 +00:00
Jan Hubicka
764c441479 * c-decl.c (c_expand_body_1): Fix.
From-SVN: r63283
2003-02-22 11:42:58 +00:00
Jan Hubicka
1c4a429ab0 expmed.c (expand_divmod): Undo sign extensions for unsigned operands
* expmed.c (expand_divmod): Undo sign extensions for unsigned operands

	* cfgcleanup.c (try_forward_edges):  Don't check loop structures
	when not optimizing.
	(cleanup_cfg): Do not iterate trought delete_trivially_dead_insns
	when not expensive.
	* toplev.c (rest_of_compilation):  Duplicate loop headers only when
	optimizing;  Delete trivially dead insns early; fix optimize check.

	* Makefile.in (c-decl.o, c-objc-common.o, cgraph.o, tree-inline.o): Add
	dependency on cgraph.h
	* c-decl.c: Include cgraph.h
	(finish_function): Update call of tree_inlinable_function_p.
	* c-objc-common.c: Include cgraph.h
	* cgraph.h: New file.
	* cgraphunit.c: New file.
	* cgraph.c (cgraph_node, cgraph_edge): Move into cgraph.h
	(cgraph_nodes, cgraph_n_nodes): Globalize.
	(cgraph_finalize_function, cgraph_finalize_compilation_unit
	cgraph_create_edges, cgraph_optimize, cgraph_mark_needed_node):
	Move into cgraphunit.c
	* tree-inline.c: Include cgraph.h
	* tree-inline.c: Include cgraph.h

From-SVN: r63281
2003-02-22 10:02:31 +00:00
Jan Hubicka
e72fcfe8e4 Makefile.in (CRTSTUFF_CFLAGS): Add -fno-unit-at-a-time
* Makefile.in (CRTSTUFF_CFLAGS): Add -fno-unit-at-a-time
	(OBJS): Add callgraph.o
	(callgraph.o): New.
	* c-decl.c (expand_body_1): Break out from ...
	(expand_body): This one;  change calling convention
	(finish_function): Move some of expand_body logic here.
	(c_expand_deferred_function): Update call of expand_body
	(c_expand_stmt): Use c_expand_body_1.
	* c-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
	* c-objc-commin.c (c_objc_common_finish_file): Use callgraph code.
	* c-tree.h (c_expand_body): Declare.
	* callgraph.c: New file.
	* flags.h (flag_unit_at_a_time): Declare.
	* langhooks.h (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION,
	LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION,
	LANG_HOOKS_CALLGRAPH_INITIALIZER): New macros.
	* langhooks.h (struct lang_hooks_for_callgraph): New.
	(struct lang_hooks): Add callgraph field.
	* toplev.c (flag_unit_at_a_time): New.
	(lang_independent_options): Add flag_unit_at_a_time.
	(process_options): Disable unit-at-a-time mode for frontends not
	supporting callgraph.
	* tree-inline.c (typedef struct inline_data): Add "decl"
	(expand_call_inline): Update callgraph.
	(optimize_inline_calls): Set id.decl.
	* tree.h (cgraph_finalize_function, cgraph_finalize_compilation_unit,
	cgraph_create_edges, dump_cgraph, cgraph_optimize, cgraph_remove_call
	cgraph_calls_p): Declare.
	* invoke.texi (-funit-at-a-time): Document

From-SVN: r62789
2003-02-12 21:48:59 +00:00
Eric Botcazou
ecf92f8227 re PR c/7741 (ICE on conflicting types (make_decl_rtl at varasm.c:834))
PR c/7741
	* c-decl.c (duplicate_decls): Discard the initializer of the
	new decl when the types are conflicting.

Co-Authored-By: Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>

From-SVN: r62631
2003-02-10 12:45:54 +00:00
Phil Edwards
65ca2d606c Rename -W to -Wextra.
2003-01-24  Phil Edwards  <pme@gcc.gnu.org>

	Rename -W to -Wextra.
	* c-decl.c:  Update comments.
	* c-typeck.c:  Likewise.
	* flags.h:  Likewise.
	* function.c:  Likewise.
	* stmt.c:  Likewise.
	* toplev.c:  Update comments.
	(W_options):  Add 'extra'.
	(display_help):  Remove '-W'.
	(decode_W_option):  Special warn_uninitialized treatment in the case
	of -Wextra.
	* doc/invoke.texi:  Update with new entries.

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

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

From-SVN: r60848
2003-01-03 14:29:51 -05:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Kazu Hirata
09da15320b c-decl.c: Fix a comment typo.
* c-decl.c: Fix a comment typo.
	* cfg.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgrtl.c: Likewise.
	* c-typeck.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2asm.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* genautomata.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise.
	* output.h: Likewise.
	* profile.c: Likewise.
	* ra.h: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* sched-rgn.c: Likewise.
	* stmt.c: Likewise.
	* tree.h: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r60085
2002-12-13 00:17:22 +00:00
Nathan Sidwell
5326cd3d22 * c-decl.c: (start_struct): Commonize flag setting.
From-SVN: r59527
2002-11-26 17:36:14 +00:00
Eric Botcazou
02a362d982 re PR c/8518 (ICE when compiling mplayer)
PR c/8518
	* c-decl.c (duplicate_decls): Outline the second definition
	of an extern inline function in all cases.

From-SVN: r59302
2002-11-20 10:37:08 +00:00
Joseph Myers
04e6db94f8 c-decl.c (grokdeclarator): Make error for duplicate type qualifiers into a pedwarn, disabled for C99.
* c-decl.c (grokdeclarator): Make error for duplicate type
	qualifiers into a pedwarn, disabled for C99.

testsuite:
	* gcc.dg/c90-idem-qual-2.c, gcc.dg/c99-idem-qual-2.c: New tests.

From-SVN: r58983
2002-11-10 16:24:26 +00:00
Zack Weinberg
4a7510cb22 c-decl.c, decl.c (start_decl): Point users of the old initialized- typedef extension at __typeof__.
* c-decl.c, cp/decl.c (start_decl): Point users of the old initialized-
	typedef extension at __typeof__.

From-SVN: r58297
2002-10-19 03:14:11 +00:00
Zack Weinberg
95f79357c5 c-decl.c (start_decl): Unconditionally issue error for 'typedef foo = bar'.
gcc:
	* c-decl.c (start_decl): Unconditionally issue error for
	'typedef foo = bar'.
	(finish_decl): Remove special case for TYPE_DECL with initializer.

	* doc/extend.texi: Delete "Naming Types" section.  Change all
	cross-references to that section to refer to "Typeof" instead.
	Add the useful safe-max()-macro example from "Naming Types" to
	"Typeof", rewritten using that extension.

gcc/cp:
	* decl.c (start_decl): Unconditionally issue error for
	'typedef foo = bar'.
	(cp_finish_decl): Remove special case for TYPE_DECL with initializer.
	(grokdeclarator): Remove redundant error for 'typedef foo = bar'.

gcc/testsuite:
	* g++.dg/ext/typedef-init.C: New test.
	* gcc.dg/typedef-init.c: New test.

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

From-SVN: r57398
2002-09-22 02:03:17 +00:00
Joseph Myers
b462d4abc6 re PR c/4319 (short accepted on typedef'd char)
* c-decl.c (grokdeclarator): Make invalid combinations with long,
	short, signed or unsigned into hard errors.  Fixes PR c/4319.
	Also make duplicate modifiers such as "short short" into hard
	errors.

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

From-SVN: r56492
2002-08-21 17:31:36 +01:00
Joseph Myers
2984fe6496 c-decl.c (flexible_array_type_p): New function.
* c-decl.c (flexible_array_type_p): New function.
	(grokdeclarator, finish_struct): Use it.
	* doc/extend.texi: Document constraints on use of structures with
	flexible array members.

testsuite:
	* gcc.dg/c90-flex-array-1.c, gcc.dg/c99-flex-array-3.c,
	gcc.dg/c99-flex-array-4.c: New tests.

From-SVN: r56411
2002-08-17 15:48:28 +01:00
Ziemowit Laski
0f7866e7ba c-common.c (flag_objc): New.
2002-08-09  Ziemowit Laski  <zlaski@apple.com>

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

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

From-SVN: r56105
2002-08-07 18:32:13 +00:00
Aldy Hernandez
1ae0ccb63f c-decl.c (duplicate_decls): Error out for incompatible TLS declarations.
* c-decl.c (duplicate_decls): Error out for incompatible TLS
        declarations.

        * testsuite/gcc.dg/tls/diag-3.c: New.

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

From-SVN: r55923
2002-08-01 06:20:46 +00:00
Roger Sayle
c2ef6d3492 builtins.def [...]: Require an explicit ATTRS argument.
* builtins.def [DEF_GCC_BUILTIN]: Require an explicit ATTRS
	argument.  Mark BUILT_IN_RETURN, BUILT_IN_EH_RETURN,
	BUILT_IN_LONGJMP and BUILT_IN_TRAP as noreturn, the ISO C99
	floating point unordered comparisons (e.g. __builtin_isgreater)
	as const, and leave the remaining GCC_BUILTINs unchanged.

	* c-decl.c (builtin_function): No need to explicitly mark
	BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn.

	* cp/decl.c (builtin_function_1): No need to explicitly mark
	BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn.

From-SVN: r55805
2002-07-28 05:34:04 +00:00
Neil Booth
2d6154445d c-decl.c (c_decode_option): No need to handle switches cpplib handles.
* c-decl.c (c_decode_option): No need to handle switches
	cpplib handles.
cp:
	* decl2.c (cxx_decode_option): Similarly.

From-SVN: r55737
2002-07-25 06:56:11 +00:00
Jakub Jelinek
e96eb21529 * c-decl.c (build_compound_literal): Set decl TREE_READONLY from TYPE.
From-SVN: r55646
2002-07-22 12:15:49 +02:00
Jakub Jelinek
cf3c4f5609 c-decl.c (build_compound_literal): Defer compound literal decls until until file end to emit them only if...
* c-decl.c (build_compound_literal): Defer compound literal decls
	until until file end to emit them only if they are actually used.

	* gcc.dg/gnu89-init-2.c: New test.

From-SVN: r55645
2002-07-22 12:11:16 +02:00
Gabriel Dos Reis
565083069d c-decl.c (build_array_declarator): Say 'ISO C90', not 'ISO C89'.
2002-07-21  Gabriel Dos Reis  <gdr@nerim.net>

        * c-decl.c (build_array_declarator): Say 'ISO C90', not 'ISO C89'.
        (grokdeclarator): Likewise.
        * c-format.c (C_STD_NAME): Likewise.
        * c-lex.c (interpret_integer): Likewise.
        * c-typeck.c (build_array_ref): Likewise.
        * cpplex.c (_cpp_lex_direct): Likewise.
        * toplev.c (documented_lang_options): Likewise.

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

        * gcc.dg/c90-arraydecl-1.c: Change C89 too C90.

From-SVN: r55629
2002-07-21 21:35:17 +00:00
Zack Weinberg
6c535c69ee varargs.h: Replace with stub which issues #error.
* ginclude/varargs.h: Replace with stub which issues #error.
	* ginclude/stdarg.h: __builtin_stdarg_start is renamed
	__builtin_va_start.

	* builtins.def (BUILT_IN_VARARGS_START): Delete.
	(BUILT_IN_VA_START): New.
	* builtins.c (expand_builtin_va_start): Eliminate first
	argument and code to implement pre-ISO varargs.
	(std_expand_builtin_va_start): Ignore first argument; it is
	always 1.
	(expand_builtin): Handle BUILT_IN_VA_START and
	BUILT_IN_STDARG_START identically.  Delete
	BUILT_IN_VARARGS_START case.

	* function.c (assign_parms): Delete hide_last_arg and all
	its uses.
	(mark_varargs): Delete function.
	* function.h (struct function): Delete 'varargs' bit.
	(current_function_varargs): Delete macro.
	* tree.h: Don't declare mark_varargs.

	* c-decl.c (c_function_varargs, c_mark_varargs): Delete.
	(c_expand_body): Don't call mark_varargs.
	* c-objc-common.c: Handle BUILT_IN_VA_START and
	BUILT_IN_STDARG_START identically.  Delete
	BUILT_IN_VARARGS_START case.
	* c-tree.h: Don't declare c_mark_varargs.
	* c-parse.in: Remove grammar rules for '&...' (which has been
	commented out since before 2.7.2) and for '...' in K+R
	argument declarations.

	* builtins.c, function.c, integrate.c, sibcall.c,
	config/alpha/unicosmk.h, config/arc/arc.c, config/arc/arc.h,
	config/avr/avr.c, config/cris/cris.c, config/fr30/fr30.c,
	config/i960/i960.c, config/i960/i960.md, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m88k/m88k.c, config/m88k/m88k.h,
	config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h,
	config/mn10300/mn10300.c, config/pa/som.h, config/s390/s390.c,
	config/sh/sh.c, config/sh/sh.h, config/sparc/sparc.h,
	config/stormy16/stormy16.c: Delete all references to
	current_function_varargs, and code predicated on that flag.

	* config/alpha/alpha.c (alpha_va_start),
	config/arc/arc.c (arc_va_start),
	config/i386/i386.c (ix86_va_start),
	config/mips/mips.c (mips_va_start),
	config/mn10300/mn10300.c (mn10300_va_start),
	config/rs6000/rs6000.c (rs6000_va_start),
	config/s390/s390.c (s390_va_start),
	config/sh/sh.c (sh_va_start),
	Ignore first argument; it is always 1.

	* config/c4x/c4x-protos.h, config/c4x/c4x.c: Delete c4x_va_start.
	* config/ia64/ia64-protos.h, config/ia64/ia64.c: Delete ia64_va_start.
	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c:
	Delete m68hc11_va_start.
	* config/c4x/c4x.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h:
	No need to define EXPAND_BUILTIN_VA_START.

	* doc/invoke.texi, doc/sourcebuild.texi, doc/tm.texi,
	doc/trouble.texi: Remove references to GCC-provided <varargs.h>.

testsuite:
	* c-torture/execute/991216-3.c, c-torture/execute/strct-varg-1.c,
	c-torture/execute/va-arg-7.c, c-torture/execute/va-arg-8.c,
	c-torture/execute/va-arg-15.c, c-torture/execute/va-arg-16.c,
	c-torture/execute/va-arg-17.c, c-torture/execute/va-arg-19.c:
	Convert to use <stdarg.h>.
	* c-torture/execute/va-arg-3.c, c-torture/execute/va-arg-3.x:
	Delete.
	* gcc.dg/va-arg-2.c: New.
	* lib/gcc.exp, lib/objc.exp: Remove code to set -DNO_VARARGS.

From-SVN: r55472
2002-07-16 02:16:47 +00:00
Roger Sayle
e65a2d65e0 c-decl.c (duplicate_decls): Preserve the noreturn attribute on non-ANSI builtin functions.
* c-decl.c (duplicate_decls): Preserve the noreturn attribute on
	non-ANSI builtin functions.

	* gcc.c-torture/execute/builtin-noret-1.c: Test non-ANSI functions.

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

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

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

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

From-SVN: r55161
2002-07-01 23:07:19 +00:00
Kaveh R. Ghazi
62c71f4bc2 utils.c (init_gigi_decls): Use ARRAY_SIZE in lieu of explicit array size calculation.
ada:
	* utils.c (init_gigi_decls): Use ARRAY_SIZE in lieu of explicit
	array size calculation.

gcc:
	* c-decl.c (c_decode_option): Use ARRAY_SIZE in lieu of explicit
	array size calculation.
	* gengtype.c (NUM_BASE_FILES, create_file, write_gc_root):
	Likewise.

cp:
	* spew.c (remove_last_token): Use ARRAY_SIZE in lieu of explicit
	array size calculation.

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

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

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

From-SVN: r54670
2002-06-16 12:09:30 -07:00
Jakub Jelinek
85d490584b re PR c/6660 (Typedeffed unnamed structs/unions do not compile with gcc-3.1)
PR c/6660
	* c-decl.c (grokfield): Allow user defined types if they declare
	structs or unions for unnamed fields.

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

From-SVN: r54466
2002-06-10 23:52:43 +02:00
Zack Weinberg
09e77dee59 cppinit.c (COMMAND_LINE_OPTIONS): Give all relevant -W options their own entries.
* cppinit.c (COMMAND_LINE_OPTIONS): Give all relevant -W
	options their own entries.
	(parse_option): Clarify comment.
	(cpp_handle_option): Remove 'ignore' parameter and OPT_W
	special case.  Replace if/strcmp chain for -W options with
	use of new OPT_* entries for them.
	(cpp_handle_options): Update to match.
	* cpplib.h: Remove last parameter to cpp_handle_option from prototype.
	* c-decl.c, cp/decl2.c: Update call to cpp_handle_option.

From-SVN: r54352
2002-06-07 22:24:30 +00:00
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Stan Shebs
8b496ceb13 c-decl.c (struct binding_level): Change int field n_incomplete to tree list incomplete_list.
2002-05-31  Stan Shebs  <shebs@apple.com>
            Turly O'Connor  <turly@apple.com>

        * c-decl.c (struct binding_level): Change int field n_incomplete
        to tree list incomplete_list.
        (clear_binding_level): Init field with NULL.
        (pushdecl): Add incomplete type to list.
        (mark_binding_level): Mark the incomplete list.
        (finish_struct): Scan the incomplete list for types instead
        of all decls in the current binding level.

Co-Authored-By: Turly O'Connor <turly@apple.com>

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

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

From-SVN: r53790
2002-05-23 15:48:05 +00:00
Richard Henderson
3d78f2e96e c-common.h (enum rid): Add RID_THREAD.
* c-common.h (enum rid): Add RID_THREAD.
        * c-decl.c (start_decl): Do not set DECL_COMMON for tls variables.
        (grokdeclarator): Grok __thread.
        * c-parse.in (reswords): Add __thread.
        (rid_to_yy): Add RID_THREAD.
        * cp/lex.c (rid_to_yy): Add RID_THREAD.

        * tree.h (DECL_THREAD_LOCAL): New.
        (struct tree_decl): Add thread_local_flag.
        * print-tree.c (print_node): Dump DECL_THREAD_LOCAL.
        * tree.c (staticp): TLS variables are not static.

        * target-def.h (TARGET_HAVE_TLS): New.
        * target.h (have_tls): New.
        * output.h (SECTION_TLS): New.
        * varasm.c (assemble_variable): TLS variables can't be common for now.
        (default_section_type_flags): Handle .tdata and .tbss.
        (default_elf_asm_named_section): Handle SECTION_TLS.
        (categorize_decl_for_section): Handle DECL_THREAD_LOCAL.

        * flags.h (flag_tls_default): Declare.
        * toplev.c (flag_tls_default): Define.
        (display_help): Display help for it.
        (decode_f_option): Set it.

        * doc/extend.texi (Thread-Local): New node describing language-level
        thread-local storage.
        * doc/invoke.texi (-ftls-model): Document.

        * fixinc/inclhack.def (thread_keyword): New.
        * fixinc/fixincl.x: Rebuild.

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

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

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

From-SVN: r53240
2002-05-06 22:53:10 +00:00
Jason Merrill
609688f3c4 defaults.h (BOOL_TYPE_SIZE): Move default here from cp/decl.c.
* defaults.h (BOOL_TYPE_SIZE): Move default here from cp/decl.c.
        * c-decl.c (c_init_decl_processing): Use it.
        * config/rs6000/darwin.h (BOOL_TYPE_SIZE): Define to INT_TYPE_SIZE.
        * config/i960/i960.h (BOOL_TYPE_SIZE): Don't define.
        * config/mcore/mcore.h (BOOL_TYPE_SIZE): Don't define.

From-SVN: r53089
2002-05-03 08:09:35 -04:00
Franz Sirl
45806a3fd4 re PR c/6343 (attribute((weak)) not working on second declaration)
2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR c/6343
	* c-decl.c (duplicate_decls): Call merge_weak.
	* c-pragma.c (apply_pragma_weak): Warn about misuse.
	* output.h (merge_weak): Prototype merge_weak.
	* varasm.c (merge_weak): New function.
	(declare_weak): Make sure we don't give an error on VAR_DECLs.
	Mark RTL with SYMBOL_REF_WEAK.

cp:
	* decl.c (duplicate_decls): Call merge_weak.

testsuite:
	* gcc.dg/weak-[2-7].c: New tests.

From-SVN: r52844
2002-04-28 18:31:34 +00:00
Eric Botcazou
45c42d7db5 c-decl.c (grokdeclarator): Remove outdated ??? note on invalid declaration of flexible array members.
* c-decl.c (grokdeclarator): Remove outdated ??? note
        on invalid declaration of flexible array members.

From-SVN: r52772
2002-04-25 17:22:23 -07:00
Richard Henderson
2d1b5436c8 c-decl.c (grokdeclarator): Don't pedwarn variable sized arrays for c99.
* c-decl.c (grokdeclarator): Don't pedwarn variable sized arrays
        for c99.

	* gcc.dg/c90-vla-1.c, gcc.dg/c99-vla-1.c: New.

From-SVN: r52738
2002-04-24 15:26:10 -07:00
Neil Booth
b03e38e17e Makefile.in: Update.
* Makefile.in: Update.
	* decl.c (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-objc-common.c (c_objc_common_init): Langhooks set elsewhere.
	* c-tree.h (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* function.c (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	(push_function_context_to, pop_function_context_from,
	free_after_parsing, prepare_function_start, ggc_mark_struct_function):
	Update.
	* function.h (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	* langhooks-def.h (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK,
	LANG_HOOKS_FUNCTION_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	(lhd_do_nothing_f): New.
	* langhooks.h (struct lang_hooks_for_functions): New.
	(struct lang_hooks): New hooks.
	* langhooks.c (lhd_do_nothing_f): New.
cp:
	* cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
	cxx_mark_function_context): New.
	* decl.c (push_cp_function_context, pop_cp_function_context,
	mark_cp_function_context): Rename for consistency.
	(cxx_init_decl_processing): Don't set old hooks.
objc:
	* objc-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.

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

From-SVN: r52512
2002-04-19 06:22:18 +00:00
Toon Moene
03f104725f c-decl.c (c_init_decl_processing): Move generation of decls for g77_integer_type_node and friends from here ...
2002-04-10  Toon Moene  <toon@moene.indiv.nluug.nl>

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

From-SVN: r52141
2002-04-10 19:49:52 +00:00
Neil Booth
dffd7eb68a c-decl.c (grokdeclarator): Update.
* c-decl.c (grokdeclarator): Update.
	* c-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	* c-tree.h (c_mark_addressable): New.
	* c-typeck.c (default_function_array_conversion, build_unary_op,
	build_array_ref, convert_for_assignment): Update.
	(mark_addressable): Rename.
	* calls.c (try_to_integrate, expand_call): Use langhook.
	* expr.c (expand_expr): Use langhook.
	* langhooks-def.h (LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
	* stmt.c (expand_asm_operands): Use langhook.
	* tree.h (mark_addressable): Remove.
ada:
	* decl.c (gnat_to_gnu_entity): Update.
	* gigi.h (mark_addressable): Rename.
	* misc.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	* trans.c (tree_transform): Update.
	* utils.c (create_var_decl): Update.
	* util2.c (build_binary_op, build_unary_op,
	fill_vms_descriptor): Update.
	(mark_addressable): Rename, update.
cp:
	* call.c (build_addr_func): Update.
	* class.c (resolve_address_of_overloaded_function): Update.
	* cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	* cp-tree.h (cxx_mark_addressable): New.
	* decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update.
	* decl2.c (build_cleanup): Update.
	* except.c (build_throw): Update.
	* init.c (resolve_offset_ref): Update.
	* pt.c (convert_nontype_argument): Update.
	* semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update.
	* typeck.c (decay_conversion, build_array_ref, build_unary_op,
	unary_complex_lvalue): Update.
	(mark_addressable): Rename.
f:
	* com.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	(mark_addressable): Rename.
	(ffecom_arrayref_, ffecom_1): Update.
java:
	* java-tree.h (java_mark_addressable): New.
	* lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	* typeck.c (mark_addressable): Rename, update.
objc:
	* objc-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.

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

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

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

From-SVN: r51571
2002-03-29 21:46:27 +00:00
Richard Henderson
619708cce2 c-decl.c (finish_function): New arg can_defer_p.
* c-decl.c (finish_function): New arg can_defer_p.  Pass it
        on to c_expand_body.
        * c-tree.h (finish_function): Update decl.
        * c-objc-common.c, c-parse.in, objc/objc-act.c: Update calls.

From-SVN: r51518
2002-03-28 10:51:49 -08:00
Neil Booth
7ffb4fd2da Makefile.in (attribs.o): Update.
* Makefile.in (attribs.o): Update.
	* attribs.c: Include langhooks.h.
	(decl_attributes): Use langhook.
	* c-decl.c (insert_default_attributes): Rename.
	* c-tree.h (c_insert_default_attributes): New.
	* langhooks-def.h (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES):New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
	* tree.h (insert_default_attributes): Remove.
ada:
	* misc.c (insert_default_attributes): Remove.
cp:
	* cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.
	* cp-tree.h (cxx_insert_default_attributes): New.
	* decl.c (insert_default_attributes): Rename.
objc:
	* objc-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.

From-SVN: r51488
2002-03-27 23:16:17 +00:00
Neil Booth
4f0ade925d Makefile.in (ggc-common.o): Update.
* Makefile.in (ggc-common.o): Update.
	* c-decl.c (lang_mark_tree): Rename c_mark_tree.
	* c-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
	* c-tree.h (c_mark_tree): New.
	* ggc-common.c: Include langhooks.h.
	(gcc_mark_trees): Use new langhook.
	* ggc-callbacks.c: Delete file.
	* ggc.h (lang_mark_tree): Remove.
	* langhooks-def.h (LANG_HOOKS_MARK_TREE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
ada:
	* misc.c (LANG_HOOKS_MARK_TREE): Redefine.
	(lang_mark_tree): Make static, rename.
cp:
	* cp-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
	* cp-tree.h (cxx_mark_tree): New.
	* decl.c (lang_mark_tree): Rename cxx_mark_tree.
f:
	* com.c (LANG_HOOKS_MARK_TREE): Redefine.
	(lang_mark_tree): Rename ffe_mark_tree, make static.
java:
	* decl.c (lang_mark_tree): Rename java_mark_tree.
	* java-tree.h (java_mark_tree): New.
	* java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
objc:
	* objc-lang.c (LANG_HOOKS_MARK_TREE): Redefine.

From-SVN: r51369
2002-03-26 07:16:01 +00:00
Neil Booth
c88770e9df c-decl.c (maybe_build_cleanup): Remove.
* c-decl.c (maybe_build_cleanup): Remove.
	* expr.c (expand_expr): Use langhook.
	* langhooks-def.h (lhd_return_null_tree,
	LANG_HOOKS_MAYBE_BUILD_CLEANUP): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_return_null_tree): New.
	* langhooks.h (struct lang_hooks): New hook.
	* tree-inline.c (initialize_inlined_parameters): Use langhook.
	* tree.h (maybe_build_cleanup): Remove.
ada:
	* misc.c (maybe_build_cleanup): Remove.
cp:
	* cp-tree.h (cxx_maybe_build_cleanup): New.
	* decl.c (destroy_local_var, hack_incomplete_structures): Update.
	(maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
	* tree.c (build_target_expr): Update.
f:
	* com.c (maybe_build_cleanup): Remove.
java:
	* decl.c (maybe_build_cleanup): Remove.

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

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

From-SVN: r51256
2002-03-24 12:27:45 +00:00
Richard Henderson
41c643948c c-pragma.c (maybe_apply_renaming_pragma): New.
* c-pragma.c (maybe_apply_renaming_pragma): New.
        (handle_pragma_redefine_extname, pending_redefine_extname): New.
        (handle_pragma_extern_prefix, pragma_extern_prefix): New.
        (init_pragma): Register them.
        * c-pragma.h (maybe_apply_renaming_pragma): Declare.
        * c-decl.c (finish_decl): Call it.
        * cp/decl.c (cp_finish_decl): Likewise.
        * doc/extend.texi: Document the new pragmas.

        * config/alpha/osf.h (CPP_SUBTARGET_SPEC): Add __EXTERN_PREFIX.
        (HANDLE_PRAGMA_EXTERN_PREFIX): New.

        * config/i386/sol2.h (CPP_PREDEFINES): Add __PRAGMA_REDEFINE_EXTNAME.
        (HANDLE_PRAGMA_REDEFINE_EXTNAME): New.
        * config/sparc/sol2.h: Likewise.

        * g++.dg/other/pragma-re-1.C: New.
        * g++.dg/other/pragma-ep-1.C: New.
        * gcc.dg/pragma-re-1.c, gcc.dg/pragma-re-2.c: New.
        * gcc.dg/pragma-ep-1.c, gcc.dg/pragma-ep-2.c: New.
        * gcc.dg/pragma-ep-3.c: New.

From-SVN: r51200
2002-03-22 14:51:48 -08:00
Richard Henderson
ecb0eecefb c-decl.c: Include c-pragma.h.
* c-decl.c: Include c-pragma.h.
        (start_decl, start_function): Invoke maybe_apply_pragma_weak.
        (finish_function): Tidy.
        * c-pragma.c: Include c-common.h.
        (pending_weaks, apply_pragma_weak, maybe_apply_pragma_weak): New.
        (handle_pragma_weak): Use them.
        (init_pragma): Register pending_weaks.
        * c-pragma.h (maybe_apply_pragma_weak): Declare.
        * print-tree.c (print_node): Print DECL_WEAK.
        * varasm.c (mark_weak_decls): Remove.
        (remove_from_pending_weak_list): Remove.
        (add_weak): Remove.
        (asm_emit_uninitialised): Call globalize_decl for weak commons.
        (weak_decls): Make a tree_list.
        (declare_weak): Cons weak_decls directly.
        (globalize_decl): Remove weak_decls elements directly.
        (weak_finish): Simplify weak_decls walk.  Don't weaken unused
        symbols.  Don't pretend to handle aliases.
        (init_varasm_once): Update weak_decls registry.
	* Makefile.in: Update dependencies.

        * cp/decl.c: Include c-pragma.h.
        (start_decl, start_function): Invoke maybe_apply_pragma_weak.
	* cp/Make-lang.in: Update dependencies.

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

From-SVN: r50797
2002-03-14 23:11:14 -08:00
Geoffrey Keating
75227a33f7 toplev.c (documented_lang_options): Document more language-specific options.
* toplev.c (documented_lang_options): Document more
	language-specific options.
	* doc/invoke.texi (Warning Options): Correct documentation for
	-Wno-multichar, -Wno-div-by-zero, and -Wsystem-headers.
	* c-decl.c (c_decode_option): Use a table to handle warning options.

From-SVN: r50299
2002-03-05 02:34:07 +00:00
Richard Henderson
cc2c33286f * c-decl.c (start_decl): Initialized variables are not common.
From-SVN: r50250
2002-03-03 01:00:51 -08:00
Jason Merrill
46cfb1010d c-decl.c (finish_function): Only warn about missing return statement with -Wreturn-type.
* c-decl.c (finish_function): Only warn about missing return
        statement with -Wreturn-type.
        * cp/decl.c (finish_function): Only warn about missing return
        statement with -Wreturn-type.

From-SVN: r50132
2002-02-28 08:30:04 -05:00
Neil Booth
63e1b1c4b0 Makefile.in (integrate.o): Update.
* Makefile.in (integrate.o): Update.
	* c-decl.c (copy_lang_decl): Rename.
	* c-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
	* integrate.c: Include langhooks.h.
	(copy_decl_for_inlining): Update to use langhook.
	* langhooks-def.h (lhd_do_nothing_t,
	LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_do_nothing_t): New.
	* langhooks.h (struct lang_hooks): Add dup_lang_specific_decl.
	* tree.h (copy_lang_decl): Remove.
ada:
	* misc.c (copy_lang_decl): Remove.
cp:
	* class.c (build_clone): Update.
	* cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
	* cp-tree.h (cxx_dup_lang_specific_decl): New.
	* lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
	(copy_decl): Update.
	* method.c (make_thunk): Update.
f:
	* com.c (copy_lang_decl): Delete.
java:
	* decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
	* java-tree.h (java_dup_lang_specific_decl): New.
	* lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
objc:
	* objc-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.

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

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

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

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

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

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

From-SVN: r50110
2002-02-27 18:48:07 +00:00
Alexandre Oliva
3704ef744f c-decl.c (pushdecl): If no global declaration is found for an extern declaration in block scope...
* c-decl.c (pushdecl): If no global declaration is found for an
extern declaration in block scope, try a limbo one.

From-SVN: r49917
2002-02-20 23:10:36 +00:00
Jakub Jelinek
00fae85dcb re PR c++/5713 (Redeclaration causes ice in in make_decl_rtl, at varasm.c:835)
PR c++/5713
	* c-decl.c (duplicate_decls): Return 0 if issued error about
	redeclaration.

	* decl.c (duplicate_decls): Return 0 if issued error about
	redeclaration.

	* gcc.dg/noncompile/20020220-1.c: New test.

From-SVN: r49915
2002-02-20 23:59:35 +01:00
Richard Sandiford
ee96ce90ca * c-decl.c (grokdeclarator): Prevent a segfault on unnamed decls.
From-SVN: r49791
2002-02-15 16:08:21 +00:00
Jakub Jelinek
d76e68001b re PR c/5503 (GCC ignores prototype)
PR c/5503:
	* c-decl.c (duplicate_decls): If builtin type has TYPE_ARG_TYPES NULL,
	use arguments from newtype.

	* gcc.dg/noncompile/20020213-1.c: New test.

From-SVN: r49763
2002-02-14 11:22:53 +01:00
Jason Merrill
5ce89b2ef0 c-decl.c (finish_function): Warn about a non-void function with no return statement and no abnormal exit.
* c-decl.c (finish_function): Warn about a non-void function with
        no return statement and no abnormal exit.
        (current_function_returns_abnormally): New variable.
        (start_function): Clear it.
        (struct c_language_function): Add returns_abnormally.
        (push_c_function_context): Save it.
        (pop_c_function_context): Restore it.
        (builtin_function): Set TREE_THIS_VOLATILE on return fns.
        (grokdeclarator): Set C_FUNCTION_IMPLICIT_INT on functions without
        an explicit return type.
        * c-tree.h: Declare current_function_returns_abnormally.
        (C_FUNCTION_IMPLICIT_INT): New macro.
        * c-typeck.c (build_function_call): Set it.
        (c_expand_return): Set current_function_returns_value even if the
        value is erroneous.

From-SVN: r49551
2002-02-06 15:40:18 -05:00
Alexandre Oliva
f913c102a4 target.h (struct gcc_target): Added ms_bitfield_layout_p.
* target.h (struct gcc_target): Added ms_bitfield_layout_p.
* target-def.h (TARGET_MS_BITFIELD_LAYOUT_P): New.  Added to...
(TARGET_INITIALIZER): this.
* doc/tm.texi (TARGET_MS_BITFIELD_LAYOUT_P): Document.
(BITFIELD_NBYTES_LIMITED): Markup fix.
* tree.h (default_ms_bitfield_layout_p): Declare.
(record_layout_info): Added prev_field.
* tree.c (default_ms_bitfield_layout_p): New fn.
* c-decl.c (finish_struct): Disregard EMPTY_FIELD_BOUNDARY and
PCC_BITFIELD_TYPE_MATTERS for MS bit-field layout.
* stor-layout.c: Include target.h.
(start_record_layout): Initialize prev_field.
(place_field): Handle MS bit-field layout, and disregard
EMPTY_FIELD_BOUNDARY, BITFIELD_NBYTES_LIMITED and
PCC_BITFIELD_TYPE_MATTERS in this case.  Update prev_field.
* Makefile.in (stor-layout.o): Adjust dependencies.

From-SVN: r49526
2002-02-05 17:56:34 +00:00
Neil Booth
dfd48d76f7 c-decl.c, [...]: Revert bitfield patch.
* c-decl.c, tree.c, tree.h, objc/objc-act.c: Revert bitfield
	patch.
	* gcc.dg/bitfld-1.c: Update.
	* gcc.dg/bitfld-2.c: Update.
	* gcc.c-torture/execute/bitfld-1.x: New.

From-SVN: r49420
2002-02-02 00:14:41 +00:00
Zack Weinberg
bebc7e8b3d c-lex.c (yyparse): Call debug_hooks->start_source_file for the primary source file...
* c-lex.c (yyparse): Call debug_hooks->start_source_file for
	the primary source file; this has not been done yet.
	* c-decl.c (c_expand_body): Reset input_filename from
	DECL_SOURCE_FILE (fndecl) before calling init_function_start.

From-SVN: r49383
2002-02-01 00:11:30 +00:00
Joseph Myers
6169e5fdd8 c-decl.c (grokdeclarator): Handle type being a typedef for an invalid type.
* c-decl.c (grokdeclarator): Handle type being a typedef for an
	invalid type.

testsuite:
	* gcc.dg/noncompile/20020130-1.c: New test.

From-SVN: r49352
2002-01-31 01:01:02 +00:00
Neil Booth
8469e54e14 re PR c/3325 (cast of bit-field to same type gets discarded)
PR c/3325
	* c-decl.c (enum_decl_context): Remove BITFIELD.
	(grokdeclarator): Take bitfield width as an input.
	Ensure bitfields are given the correct type.  Perform
	bitfield width validation with build_bitfield_integer_type
	rather than waiting for finish_struct.
	(grok_typename, grok_typename_in_parm_context, start_decl,
	push_parmdecl, grokfield, start_function): Update calls to
	grokdeclarator.
	(build_bitfield_integer_type): New function.
	(finish_struct): Move bitfield validation to grokdeclarator
	and build_bitfield_integer_type.
	* tree.c (build_nonstandard_integer_type): New function.
	* tree.h (build_nonstandard_integer_type): New prototype.
objc:
	* objc-act.c (objc_copy_list): Remove DECL_INITIAL kludge.
testsuite:
	* gcc.c-torture/compile/20000224-1.c: Update.
	* gcc.c-torture/execute/bitfld-1.c: New tests.
	* gcc.dg/bitfld-1.c, bitfld-2.c: Diagnostic tests.
	* gcc.dg/uninit-A.c: Update.

From-SVN: r49321
2002-01-29 17:19:58 +00:00
Jakub Jelinek
ffdeea47b9 re PR other/1502 (Nonexistent -W options not diagnosed)
PR other/1502:
	* cppinit.c (cpp_handle_option): Add ignore argument, if it is zero,
	don't ignore unrecognized -W* options.
	(cpp_handle_options): Pass 1 as last argument to cpp_handle_option.
	* cpplib.h (cpp_handle_option): Adjust prototype.
	* c-decl.c (c_decode_options): Pass 0 as last argument to
	cpp_handle_option.

	PR c/2896:
	* gcc.c (cpp_unique_options): Split from cpp_options.
	(cpp_options): Source cpp_unique_options.
	(default_compilers): Use cpp_unique_options instead of cpp_options
	when used together with cc1_options.
	(static_specs): Add cpp_unique_options.
	* objc/lang-specs.h: Use cpp_unique_options instead of cpp_options
	when used together with cc1_options.

	* decl2.c (cxx_decode_option): Pass 0 as last argument to
	cpp_handle_option.
	* lang-specs.h: Use cpp_unique_options instead of cpp_options
	when used together with cc1_options.

From-SVN: r49315
2002-01-29 13:09:37 +01:00
Richard Kenner
995b590439 builtins.c (expand_builtin_strncpy): Use integer_zerop instead of compare_tree_int.
* builtins.c (expand_builtin_strncpy): Use integer_zerop instead
	of compare_tree_int.
	(expand_builtin_strncat): Likewise.
	* c-decl.c (finish_struct): Use tree_low_cst.
	* tree.h (compare_tree_int): Arg is unsigned HOST_WIDE_INT.
	* tree.c (compare_tree_int): Likewise.

From-SVN: r49222
2002-01-25 15:45:48 -05:00
Ira Ruben
e23bd2185f Added __attribute__((deprecated)) patches.
From-SVN: r48743
2002-01-10 18:51:24 +00:00
Richard Henderson
c28abdf00d c-decl.c (c_expand_body): Don't call outlining_inline_function.
* c-decl.c (c_expand_body): Don't call outlining_inline_function.
        * integrate.c (output_inline_function): Likewise.
        * toplev.c (rest_of_compilation): Do it here instead.  Move call
        to remove_unnecessary_notes after emitting abstract instance.
        Force an emitted nested function to have its parent emited as well.
        * dwarf2out.c (loc_descriptor_from_tree): Read mode after checking
        for null.
        (rtl_for_decl_location): Do not look at reload data structures
        before reload has run.

        * semantics.c (expand_body): Revert last change.

From-SVN: r48572
2002-01-05 19:51:13 -08:00
Jason Merrill
a420065799 c-decl.c (c_expand_body): Call outlining_inline_function when emitting an inline function out of line.
* c-decl.c (c_expand_body): Call outlining_inline_function when
        emitting an inline function out of line.

        * semantics.c (expand_body): Call outlining_inline_function when
        emitting an inline function out of line.

From-SVN: r48479
2002-01-02 10:28:43 -08:00
Richard Henderson
b79d521356 re PR debug/5163 (Internal compiler error in add_abstract_origin_attribute, at dwarf2out.c:9296)
PR c/5163:
        * c-decl.c (duplicate_decls): As needed, set DECL_INLINE when
        we have a function body associated.  Minor cleanups.
        (grokdeclarator): Do not set DECL_INLINE without a function body.

        * gcc.dg/20011223-1.c: New.
        * gcc.dg/inline-1.c: New.

From-SVN: r48302
2001-12-24 00:45:59 -08:00
Joseph Myers
8d37a5c0db re PR c/5105 (compound literal patch broken with inlining)
* c-common.def (COMPOUND_LITERAL_EXPR): Contain a DECL_STMT, not
	a DECL directly.
	* c-common.h (COMPOUND_LITERAL_EXPR_DECL_STMT): New.
	(COMPOUND_LITERAL_EXPR_DECL): Adjust definition.
	* c-decl.c (build_compound_literal): Put the decl inside a
	DECL_STMT.
	* doc/c-tree.texi (COMPOUND_LITERAL_EXPR): Update documentation.
	Fixes PR c/5105.

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

From-SVN: r48085
2001-12-17 01:18:41 +00:00
Aldy Hernandez
d3b4cd6f89 c-parse.in (typename): Do not split attributes.
* c-parse.in (typename): Do not split attributes.
        Remove unsupported attributes warning.

        * c-decl.c (groktypename): Apply attributes.

From-SVN: r48032
2001-12-15 04:06:05 +00:00
Richard Henderson
4b7b9007a3 * c-decl.c (c_language): Remove duplicate.
From-SVN: r47776
2001-12-07 14:19:47 -08:00
Neil Booth
26f943fd36 c-common.c (shadow_warning): New function, moved from cp/decl.c.
* c-common.c (shadow_warning): New function, moved from cp/decl.c.
	* c-common.h (shadow_warning): New.
	* c-decl.c: Include c-common.h.
	(warn_if_shadowing): New, broken out of pushdecl.
	(pushdecl): Use warn_if_shadowing.
	(store_parm_decls): Prevent duplicate -Wshadow warnings.
cp:
	* decl.c: Include c-common.h.
	(shadow_warning): Move to c-common.c.
testsuite:
	* gcc.dg/Wshadow-1.c: New test.

From-SVN: r47701
2001-12-05 23:20:00 +00:00
Richard Kenner
37a08a298f attribs.c (handle_no_check_memory_usage_atribute): Deleted.
* attribs.c (handle_no_check_memory_usage_atribute): Deleted.
	(c_com): Delete its reference.
	* builtins.c: Delete memory checking code.
	* calls.c, expr.c, function.c, stmt.c: Likewise.
	* builtins.c (expand_builtin_arg_info): Remove reference to
	EXPAND_MEMORY_USE_* modifiers.
	* explow.c (expr_size): Likewise.
	* expr.c (expand_expr, expand_increment): Likewise.
	* expr.h (ARGS_SIZE_RTX): Likewise.
	* function.c (assign_parms, expand_pending_sizeso): Likewise.
	* c-decl.c (duplicate_decls): Don't handle DECL_NO_CHECK_MEMORY_USAGE.
	* expr.c (in_check_memory_usage): Delete.
	(get_push_address, get_memory_usage_from_modifier): Delete.
	(expand_assigment): Use EXPAND_WRITE on destination.
	(expand_expr): Delete ro_modifier.
	* expr.h (expand_modifier): Delete EXPAND_MEMORY_* entries and
	add EXPAND_WRITE.
	(memory_use_mode): Delete.
	* flags.h (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	* function.c (expand_function_start): Don't set
	current_function_check_memory_usage.
	* function.h (check_memory_usage): Delete.
	* libfuncs.h, optabs.c: Delete chkr_* stuff.
	* stmt.c (expand_asm_opernd): Change EXPAND_MEMORY_USE_WO to
	EXPAND_WRITE.
	* toplev.c (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	(f_options, process_options): Delete references to above.
	* tree.h (DECL_NO_CHECK_MEMORY_USAGE): Deleted.
	* varasm.c (CHKR_PREFIX): Deleted.
	(make_decl_rtl): Remove flag_prefix_function_name handling.
	(assemble_name): Likewise.
	* doc/extend.texi: Remove no_check_memory_usage attribute.
	* doc/invoke.texi: Remove -fcheck-memory-usage
	and -fprefix-function-name.
	* cp/decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.

From-SVN: r47697
2001-12-05 17:37:41 -05:00
Jakub Jelinek
f79349c75c c-decl.c (pushdecl): Only increase n_incomplete if pushed decl's type is RECORD_TYPE...
* c-decl.c (pushdecl): Only increase n_incomplete if pushed decl's
	type is RECORD_TYPE, UNION_TYPE or ARRAY_TYPE thereof.
	(finish_struct): Break the loop if n_incomplete went to 0.
	For ARRAY_TYPE, if it is not TYPE_DECL, layout the decl too.

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

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

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

From-SVN: r47629
2001-12-04 22:55:40 +00:00
Alexandre Oliva
23700f6508 c-decl.c (duplicate_decls): Revert rth's patch.
* c-decl.c (duplicate_decls): Revert rth's patch.  If newdecl
is in a different binding level, get its abstract origin to be
olddecl.
* tree-inline.c (expand_call_inline): Move DECL_INITIAL sanity
check earlier.
* tree.c (get_callee_fndecl): Follow DECL_ABSTRACT_ORIGIN if
DECL_INITIAL is NULL.

From-SVN: r47610
2001-12-04 10:34:40 +00:00
Neil Booth
c725bd79e7 c-decl.c (grokdeclarator): Use ISO word.
* c-decl.c (grokdeclarator): Use ISO word.
	* cppinit.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* diagnostic.c: Similarly.
	* emit-rtl.c: Similarly.
	* final.c: Similarly.
	* gcc.c: Similarly.
	* tradcpp.c: Similarly.
	* config/arm/arm.c: Similarly.
	* config/arm/arm.h: Similarly.
	* config/avr/avr.c: Similarly.
	* config/avr/avr.h: Similarly.
	* config/c4x/c4x.c: Similarly.
	* config/cris/cris.c: Similarly.
	* config/cris/cris.h: Similarly.
	* config/d30v/d30v.c: Similarly.
	* config/dsp16xx/dsp16xx.c: Similarly.
	* config/dsp16xx/dsp16xx.h: Similarly.
	* config/h8300/h8300.c: Similarly.
	* config/i386/i386.c: Similarly.
	* config/i386/xm-djgpp.h: Similarly.
	* config/i960/i960.h: Similarly.
	* config/m32r/m32r.c: Similarly.
	* config/m68hc11/m68hc11.c: Similarly.
	* config/m88k/m88k.c: Similarly.
	* config/m88k/m88k.h: Similarly.
	* config/mcore/mcore.c: Similarly.
	* config/mcore/mcore.h: Similarly.
	* config/mips/mips.c: Similarly.
	* config/mmix/mmix.c: Similarly.
	* config/pa/pa.c: Similarly.
	* config/rs6000/rs6000.c: Similarly.
	* config/rs6000/sysv4.h: Similarly.
	* config/s390/s390.c: Similarly.
	* config/sparc/sparc.c: Similarly.
	* config/v850/v850-c.c: Similarly.
	* config/v850/v850.c: Similarly.
ch:
	* actions.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* decl.c: Similarly.
	* expr.c: Similarly.
	* inout.c: Similarly.
	* lang.c: Similarly.
	* loop.c: Similarly.
	* nloop.c: Similarly.
	* parse.c: Similarly.
	* satisfy.c: Similarly.
	* tasking.c: Similarly.
	* tree.c: Similarly.
	* typeck.c: Similarly.
cp:
	* typeck2.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
f:
	* com.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* g77spec.c: Similarly.
	* lex.c: Similarly.
java:
	* expr.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* jcf-io.c: Similarly.
	* jcf-parse.c: Similarly.
	* jv-scan.c: Similarly.
	* jvspec.c: Similarly.
	* mangle.c: Similarly.

From-SVN: r47558
2001-12-03 19:15:19 +00:00
Richard Henderson
385d4094a4 * c-decl.c (duplicate_decls): Conditionalize DECL_SAVED_TREE copy.
From-SVN: r47535
2001-12-02 11:18:22 -08:00
Neil Booth
1f978f5f7e c-decl.c (duplicate_decls, [...]): Remove leading capital from diagnostics.
* c-decl.c (duplicate_decls, push_parm_decl): Remove leading
	capital from diagnostics.
	* c-lex.c (cb_file_change): Similarly.
	* c-parse.in : Similarly.
	* cfgrtl.c (verify_flow_info): Similarly.
	* collect2.c: Similarly.
	* cppfiles.c (find_include_file): Similarly.
	* cppinit.c (cpp_handle_option): Similarly.
	* cpplex.c (cpp_spell_token): Similarly.
	* cppmain.c (do_preprocessing): Similarly.
	* gcc.c (translate_options, process_command, do_spec1,
	main, pfatal_execute): Similarly.
	* genattr.c (main): Similarly.
	* genattrtab.c (check_attr_test, operate_exp, simplify_test_exp,
	write_test_expr, main): Similarly.
	* gencodes.c (main): Similarly.
	* genconfig.c (main): Similarly.
	* genconstants.c (main): Similarly.
	* genemit.c (main): Similarly.
	* genextract.c (main): Similarly.
	* genflags.c (main): Similarly.
	* genopinit.c (main): Similarly.
	* genoutput.c (process_template, main): Similarly.
	* genpeep.c (main): Similarly.
	* genrecog.c (main): Similarly.
	* gensupport.c (is_predicable, identify_predicable_attribute,
	alter_predicate_for_insn, init_md_reader_args, main): Similarly.
	* ggc-page.c (alloc_anon): Similarly.
	* mips-tfile.c (add_string, add_procedure, add_file, read_line,
	parse_begin, parse_bend, parse_def, parse_end, parse_file,
	parse_stabs_common, parse_stabs, write_varray, write_object,
	read_seek, copy_object, main, error): Similarly.
	* profile.c (compute_branch_probabilities): Similarly.
	* reg-stack.c (check_asm_stack_operands): Similarly.
	* reload.c (find_reloads): Similarly.
	* reload1.c (spill_failure, failed_reload): Similarly.
	* rtl-error.c (_fatal_insn_not_found): Similarly.
	* toplev.c (read_integral_parameter, crash_signal,
	decode_f_option, set_target_switch, parse_options_and_default_flags)
	: Similarly.
	* tradcif.y (parse_number, yylex): Similarly.
	* tradcpp.c (main, fancy_abort): Similarly.
	* tree.c (tree_check_failed): Similarly.
	* varray.c (varray_check_failed): Similarly.
	* xcoffout.c (xcoff_output_standard_types): Similarly.
cp:
	* call.c (build_java_interface_fn_ref): Similarly.
	* except.c (is_admissible_throw_operand): Similarly.
	* init.c (build_java_class_ref): Similarly.
	* xref.c (open_xref_file): Similarly.
objc:
	* objc-act.c (get_object_ref, lookup_and_install_protocols,
	build_objc_string_object, objc_declare_alias, build_ivar_chain,
	finish_message_expr, build_protocol_expr, is_public,
	start_class): Similarly.
testsuite:
	* objc.dg/alias.m: Update.
	* objc.dg/class-1.m: Update.
	* objc.dg/const-str-1.m: Update.
	* objc.dg/fwd-proto-1.m: Update.
	* objc.dg/id-1.m: Update.
	* objc.dg/super-class-1.m: Update.

From-SVN: r47518
2001-12-02 00:04:36 +00:00
Neil Booth
357351e5a7 c-decl.c (duplicate_decls, [...]): Remove trailing period from diagnostics.
* c-decl.c (duplicate_decls, parmlist_tags_warning): Remove
	trailing period from diagnostics.
	* c-lex.c (cb_file_change): Similarly.
	* cppmacro.c (check_trad_stringification): Similarly.
	* gcc.c (do_spec_1): Similarly.
	* genattr.c (main): Similarly.
	* genattrtab.c (main, operate_exp, make_length_attrs): Similarly.
	* gencodes.c (main): Similarly.
	* genconfig.c (main): Similarly.
	* genconstants.c (main): Similarly.
	* genemit.c (main): Similarly.
	* genextract.c (main): Similarly.
	* genopinit.c (main): Similarly.
	* genoutput.c (main): Similarly.
	* genpeep.c (main): Similarly.
	* genrecog.c (main): Similarly.
	* mips-tfile.c (add_file, error): Similarly.
	* profile.c (init_branch_prob): Similarly.
	* reload1.c (spill_failure): Similarly.
	* stmt.c (parse_output_constraint): Similarly.
	* varasm.c (assemble_variable): Similarly.
cp:
	* class.c (finish_struct): Similarly.
	* decl.c (check_tag_decl): Similarly.
	* lex.c (cxx_set_yydebug): Similarly.
	* typeck2.c (friendly_abort): Similarly.
java:
	* expr.c (expand_byte_code): Similarly.
	* jcf-parse.c (load_class, jcf_parse): Similarly.
	* jcf-write.c (generate_classfile): Similarly.
	* lex.c (java_lex): Similarly.

From-SVN: r47517
2001-12-01 18:42:49 +00:00
Richard Henderson
dd6bdc62bf * c-decl.c (duplicate_decls): Copy DECL_SAVED_TREE.
From-SVN: r47494
2001-11-30 13:53:44 -08:00
Joseph Myers
a1f300c0f1 ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog,
	FSFChangeLog.10, c-decl.c, cppfiles.c, cppinit.c, cpplex.c,
	cpplib.c, cppmain.c, cse.c, df.c, diagnostic.c, dominance.c,
	dwarf2out.c, dwarfout.c, emit-rtl.c, errors.c, except.c, except.h,
	explow.c, function.c, gcse.c, genrecog.c, predict.c, regmove.c,
	sched-rgn.c, ssa-ccp.c, stmt.c, toplev.c: Fix spelling errors.

From-SVN: r47279
2001-11-23 02:05:19 +00:00
Jakub Jelinek
83dea45d59 c-decl.c (c_expand_deferred_function): Only call c_expand_body if fndecl is still DECL_INLINE and has DECL_RESULT.
* c-decl.c (c_expand_deferred_function): Only call c_expand_body
	if fndecl is still DECL_INLINE and has DECL_RESULT.

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

From-SVN: r47240
2001-11-21 12:09:01 +01:00
Joseph Myers
aa99bd0979 c-decl.c (c_decode_option): Give deprecation warning for -traditional.
* c-decl.c (c_decode_option): Give deprecation warning for
	-traditional.
	* doc/invoke.texi (-traditional): Note that this option is
	deprecated.

testsuite:
	* gcc.dg/cpp/assert_trad1.c, gcc.dg/cpp/tr-paste.c,
	gcc.dg/cpp/tr-str.c: Use -traditional-cpp instead of -traditional.
	* gcc.dg/ext-glob.c: Expect -traditional deprecation warning.

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

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

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

From-SVN: r47046
2001-11-15 10:01:10 +00:00
Jan Hubicka
497786446b cfglayout.c (fixup_fallthru_exit_predecesor): New static function.
* cfglayout.c (fixup_fallthru_exit_predecesor): New static function.
	(cfg_layout_finalize): Use it.
	* bb-reorder.c (HAVE_epilogue): Remove.
	(make_reorder_chain): Do not care special placement of
	last basic block.

	* predict.c (expected_value_to_br_prob): Delete the note
	once transformed.

	* c-decl.c (c_expand_body): Fix TV_EXPAND nesting problem;
	measure integration time separately.

From-SVN: r47019
2001-11-14 19:36:17 +00:00
Alexandre Oliva
8b0e9a7297 Makefile.in (c-lang.o): Depend on $(VARRAY_H).
* Makefile.in (c-lang.o): Depend on $(VARRAY_H).
* c-decl.c (c_expand_body): Take argument can_defer_p.  Use it
to decide whether to defer a function.
(finish_function): Adjust.
(c_expand_deferred_function): New function.
* c-lang.c (deferred_fns): New variable.
(c_init): Initialize it, and mark it as a root.
(defer_fn): New function.
(finish_file): Expand all deferred functions.
* c-tree.h (defer_fn): Declare.
(c_expand_deferred_function): Likewise.
* objc/Make-lang.in (objc-act.o): Depend on $(VARRAY_H).
* objc-act.c (deferred_fns): New variable.
(objc_init): Initialize it, and mark it as a root.
(defer_fn): New function.
(finish_file): Expand all deferred functions.

From-SVN: r46933
2001-11-12 00:02:36 +00:00
Neil Booth
5d69f816bc Makefile.in: Update.
* Makefile.in: Update.
	* c-decl.c (print_lang_decl, print_lang_type): Remove.
	(print_lang_identifier): Rename c_print_identifier.
	* c-lang.c (LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): New.
	(print_lang_statistics, lang_print_xnode): Remove.
	* c-parse.in (set_yydebug): Rename c_set_yydebug.
	* c-tree.h (c_set_yydebug, c_print_identifier): New.
	* langhooks-def.h (lhd_print_tree_nothing, lhd_set_yydebug): New.
	LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
	LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New members.
	(lang_print_tree_hook): New.
	* langhooks.c (lhd_print_tree_nothing, lhd_set_yydebug): New.
	* print-tree.c: Include langhooks.h.
	(print_node): Update.
	* toplev.c (decode_d_option): Update.
	* tree.c: Include langhooks.h.
	(dump_tree_statistics): Update.
	* tree.h (print_lang_statistics, print_lang_decl, print_lang_type,
	print_lang_identifier, set_yydebug, lang_print_xnode): Remove.
ada:
	* misc.c (gnat_print_decl, gnat_print_type): Renamed.
	(LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE): Override.
	(print_lang_statistics, lang_print_xnode, print_lang_identifier,
	set_yydebug): Remove.
cp:
	* cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
	LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
	* cp-tree.h (print_class_statistics): Remove.
	(cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
	cxx_print_identifier, cxx_set_yydebug): New.
	* lex.c (set_yydebug): Rename c_set_yydebug.
	* ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
	lang_print_xnode): Rename.
	* tree.c (print_lang_statistics): Rename.
f:
	* com.c (ffe_print_identifier): Rename.
	(LANG_HOOKS_PRINT_IDENTIFIER): Override.
	(lang_print_xnode, print_lang_decl, print_lang_statistics,
	print_lang_type, set_yydebug): Remove.
java:
	* java-tree.h (java_set_yydebug): New.
	* jcf-parse.c (set_yydebug): Rename java_set_yydebug.
	* lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
	(print_lang_decl, print_lang_type, print_lang_identifier,
	print_lang_statistics, lang_print_xnode): Remove.
objc:
	* objc-act.c (LANG_HOOKS_PRINT_IDENTIFIER,
	LANG_HOOKS_SET_YYDEBUG): Override.
	(lang_print_xnode, print_lang_statistics): Remove.

From-SVN: r46907
2001-11-09 23:30:44 +00:00
Neil Booth
2916c08508 c-decl.c (pushdecl): Remove file and line.
* c-decl.c (pushdecl): Remove file and line.
	* c-typeck.c (pop_init_level): Remove size.

From-SVN: r46838
2001-11-07 22:52:30 +00:00
Neil Booth
e6ec164c8d c-decl.c (delete_block): Remove.
* c-decl.c (delete_block): Remove.
	* c-tree.h (delete_block): Remove.

From-SVN: r46795
2001-11-05 23:21:35 +00:00
Neil Booth
234f46aead c-decl.c (pushdecl): Move block inside if conditional to remove possibility of a segfault.
* c-decl.c (pushdecl): Move block inside if conditional to remove
	possibility of a segfault.  Lookup block-level extern
	variables in enclosing scopes correctly.

	* testsuite/gcc.c-torture/compile/20001018-1.x: Remove XFAIL.

From-SVN: r46726
2001-11-03 00:00:01 +00:00
Paolo Bonzini
53fcdc7677 Localization fixes.
2001-10-30  Paolo Bonzini  <bonzini@gnu.org>

	Localization fixes.
	* c-decl.c (parmlist_tags_warning, start_struct,
	check_for_loop_decls): Separate messages for struct, union and
	enum cases to allow for languages in which they have different
	genders.
	* c-format.c (scanf_flag_specs): Separate short and long name of
	the assignment suppression feature.
	(check_format_types): Localize "pointer" and "different types"
	strings.
	* c-lex.c (lex_number): Localize "an unsigned long int" and
	related strings.
	(lex_string) [MULTIBYTE_CHARS]: Use initial lowercase letter on
	warning message.
	* c-typeck.c (build_unary_up): Separate messages for increment and
	decrement cases to allow for languages in which they use different
	articles.  Localize the strings "increment" and "decrement" in one
	case.

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

From-SVN: r46621
2001-10-29 23:01:45 +00:00
Jakub Jelinek
c0a4369a23 c-decl.c (finish_decl): Don't add DECL_STMTs for nested function prototypes.
* c-decl.c (finish_decl): Don't add DECL_STMTs for nested function
	prototypes.

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

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

From-SVN: r46439
2001-10-23 18:14:31 +00:00
Jan Hubicka
b932f770f7 basic-block.h (find_sub_basic_blocks): Use sbitmap parameter.
* basic-block.h (find_sub_basic_blocks): Use sbitmap parameter.
	* cfgbuild.c (find_bb_boundaries, compute_outgoing_frequencies):
	Break out from ...
	(find_sub_basic_blocks): ... here;
	(find_many_sub_basic_blocks): New.
	* recog.c (split_all_insns): Update find_sub_basic_blocks call.

	* i386.h (ASM_PREFERRED_EH_DATA_FORMAT): Define sdata4.

	* i386.c (ix86_va_arg): Kill indirect_p handling; fix aliasing issues.:

	* i386.c (split_di, split_ti): Revamp to use simplify_subreg.

	* timevar.def (TV_LIFE, TV_LIFE_UPDATE, TV_MODE_SWITCH): new.
	* flow.c (update_life_info): Measure time.
	* c-decl.c: Include timevar.h
	(c_expand_body): Measure time.
	* toplev.c (rest_of_compilation): Measure time of mode switching
	separately.
	* Makefile.in (c-decl.o, cfgcleanup.o): Add dependancy.

	* toplev.c (flag_asynchronous_unwind_tables): New global variable.
	(lang_independent_options): Add asynchronous-unwind-tables
	(toplev_main): flag_asynchronous_unwind_tables implies
	flag_unwind_tables.
	* flags.h (flag_asynchronous_unwind_tables): Declare.
	* dwarf2out.c (dwarf2out_stack_adjust): Take into account
	flag_asynchronous_unwind_tables.
	(output_call_frame_info): Likewise.
	* invoke.texi (-fasynchronous-unwind-tables): Document.
	* i386.c (optimization_options): Enable
	flag_asynchronous_unwind_tables.

	* i386.c (ix86_expand_setcc):  Always expect target to be QImode.
	* i386.md (s* expanders): Destination is QImode.

	* toplev.c (rest_of_compilation): Do not call clear_log_links.
	* rtl.h (clear_log_links): Kill.
	* flow.c (clear_log_links): Make static; accept blocks parameter;
	do no clear life info.
	(update_life_info): Call clear_log_links.

	* cfganal.c (forwarder_block_p): Avoid active_insn_p calls.

From-SVN: r46374
2001-10-20 10:04:00 +00:00
Alexandre Oliva
9162542e3d attribs.c (handle_noinline_attribute): New function.
* attribs.c (handle_noinline_attribute): New function.
(handle_used_attribute): Likewise.
(c_common_attribute_table): Added noinline and used.
* doc/extend.texi (Function Attributes): Document them.
* c-decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
Warn when merging inline with attribute noinline.
(start_decl, start_function): Warn if inline and attribute
noinline appear in the same declaration.

From-SVN: r46334
2001-10-18 18:29:02 +00:00
Stan Shebs
b36948478c alias.c: Remove uses of "register" specifier in declarations of arguments and local...
2001-10-10  Stan Shebs  <shebs@apple.com>

        * alias.c: Remove uses of "register" specifier in declarations
        of arguments and local variables.
        * c-common.c: Ditto.
        * c-convert.c: Ditto.
        * c-decl.c: Ditto.
        * c-format.c: Ditto.
        * c-semantics.c: Ditto.
        * c-typeck.c: Ditto.
        * caller-save.c: Ditto.
        * calls.c: Ditto.
        * cfg.c: Ditto.
        * cfgbuild.c: Ditto.
        * cfgrtl.c: Ditto.
        * collect2.c: Ditto.
        * combine.c: Ditto.
        * convert.c: Ditto.
        * cppexp.c: Ditto.
        * cppfiles.c: Ditto.
        * cse.c: Ditto.
        * dbxout.c: Ditto.
        * defaults.h: Ditto.
        * df.c: Ditto.
        * dwarf2out.c: Ditto.
        * dwarfout.c: Ditto.
        * emit-rtl.c: Ditto.
        * explow.c: Ditto.
        * expmed.c: Ditto.
        * expr.c: Ditto.
        * final.c: Ditto.
        * fix-header.c: Ditto.
        * floatlib.c: Ditto.
        * flow.c: Ditto.
        * fold-const.c: Ditto.
        * function.c: Ditto.
        * gcc.c: Ditto.
        * gcse.c: Ditto.
        * gen-protos.c: Ditto.
        * genattrtab.c: Ditto.
        * gencheck.c: Ditto.
        * genconfig.c: Ditto.
        * genemit.c: Ditto.
        * genextract.c: Ditto.
        * genflags.c: Ditto.
        * gengenrtl.c: Ditto.
        * genoutput.c: Ditto.
        * genpeep.c: Ditto.
        * genrecog.c: Ditto.
        * gensupport.c: Ditto.
        * global.c: Ditto.
        * gmon.c: Ditto.
        * graph.c: Ditto.
        * haifa-sched.c: Ditto.
        * hard-reg-set.h: Ditto.
        * hash.c: Ditto.
        * integrate.c: Ditto.
        * jump.c: Ditto.
        * lists.c: Ditto.
        * local-alloc.c: Ditto.
        * loop.c: Ditto.
        * mips-tdump.c: Ditto.
        * mips-tfile.c: Ditto.
        * optabs.c: Ditto.
        * prefix.c: Ditto.
        * print-rtl.c: Ditto.
        * read-rtl.c: Ditto.
        * real.c: Ditto.
        * recog.c: Ditto.
        * reg-stack.c: Ditto.
        * regclass.c: Ditto.
        * regmove.c: Ditto.
        * reload.c: Ditto.
        * reload1.c: Ditto.
        * reorg.c: Ditto.
        * resource.c: Ditto.
        * rtl.c: Ditto.
        * rtlanal.c: Ditto.
        * scan.c: Ditto.
        * sched-deps.c: Ditto.
        * sched-rgn.c: Ditto.
        * sdbout.c: Ditto.
        * simplify-rtx.c: Ditto.
        * stmt.c: Ditto.
        * stor-layout.c: Ditto.
        * toplev.c: Ditto.
        * tradcif.y: Ditto.
        * tradcpp.c: Ditto.
        * tree.c: Ditto.
        * unroll.c: Ditto.
        * varasm.c: Ditto.
        * xcoffout.c: Ditto.

From-SVN: r46173
2001-10-11 03:16:15 +00:00
Kazu Hirata
6d2f888735 calls.c: Fix formatting.
* calls.c: Fix formatting.
	* c-decl.c: Likewise.
	* cfgcleanup.c: Likewise.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* dwarf2out.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-page.c: Likewise.
	* integrate.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* sched-rgn.c: Likewise.
	* sdbout.c: Likewise.
	* stmt.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r46145
2001-10-10 11:33:39 +00:00
DJ Delorie
3e96a2fd0c c-decl.c (grokfield): Make sure the only unnamed fields we're allowing are either structs or unions.
* c-decl.c (grokfield): Make sure the only unnamed fields
we're allowing are either structs or unions.
* doc/extend.texi: Add documentation for the unnamed field
extension.

From-SVN: r46088
2001-10-08 15:44:53 -04:00
Richard Henderson
31ed8fea3d c-common.h (struct c_lang_decl): Add declared_inline.
* c-common.h (struct c_lang_decl): Add declared_inline.
        * c-tree.h (DECL_DECLARED_INLINE_P): New.
        * c-lang.c (c_disregard_inline_limits): Use it.
        * c-decl.c (duplicate_decls): Likewise.
        (pushdecl, redeclaration_error_message): Likewise.
        (pushdecl): Allocate DECL_LANG_SPECIFIC if needed.
        (grokdeclarator): Likewise.  Set DECL_DECLARED_INLINE_P.
        Set DECL_INLINE if -finline-functions.
        (store_parm_decls): Don't allocate DECL_LANG_SPECIFIC here.

        * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
        (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.

From-SVN: r46079
2001-10-08 09:37:06 -07:00
Joseph Myers
cc712abf04 acinclude.m4: Fix spelling error of "separate" as "seperate".
config:
	* acinclude.m4: Fix spelling error of "separate" as "seperate".

gcc:
	* ChangeLog.2, c-decl.c, config/i386/i386.md, doc/gcc.texi, gcc.c,
	genmultilib, toplev.c: Fix spelling errors of "separate" as
	"seperate", and corresponding spelling errors of related words.

gcc/ada:
	* 5oosinte.adb: Fix spelling error of "separate" as "seperate".

gcc/testsuite:
	* gcc.c-torture/unsorted/unsorted.exp, lib/file-format.exp: Fix
	spelling errors of "separate" as "seperate".

libffi:
	* src/x86/ffi.c: Fix spelling error of "separate" as "seperate".

libjava:
	* defineclass.cc, java/awt/image/ColorModel.java,
	java/awt/image/SampleModel.java, java/lang/Package.java,
	java/security/cert/X509Extension.java: Fix spelling errors of
	"separate" as "seperate", and corresponding spelling errors of
	related words.

libstdc++-v3:
	* docs/html/22_locale/locale.html, docs/html/faq/index.html: Fix
	spelling errors of "separate" as "seperate", and corresponding
	spelling errors of related words.
	* docs/html/faq/index.txt: Regenerate.

From-SVN: r46063
2001-10-07 19:02:46 +01:00
Alexandre Oliva
4838c5ee55 Makefile.in (c-decl.o): Depend on tree-inline.h.
* Makefile.in (c-decl.o): Depend on tree-inline.h.
(c-lang.o): Likewise, as well as insn-config.h and integrate.h.
* c-decl.c: Include tree-inline.h.
(c_expand_body): Call optimize_inline_calls. Determine whether
a function is inlinable upfront, and only clear
DECL_SAVED_TREE, DECL_INITIAL and DECL_ARGUMENTS if it isn't.
* c-lang.c: Include tree-inline.h, insn-config.h and integrate.h.
(c_disregard_inline_limits): New function.
(inline_forbidden_p, c_cannot_inline_tree_fn): Likewise.
(c_post_options): Enable tree inlining if inlining is enabled.
Don't inline trees when instrumenting functions.
(c_init): Initialize lang_disregard_inline_limits and
lang_cannot_inline_tree_fn.
* tree-inline.c (initialize_inlined_parameters): Handle calls
with fewer arguments than declared parameters, and fewer
parameters than passed arguments.  Don't assume value is a
DECL.
(declare_return_variable): Convert return value back to the
original type, if it was promoted.
(tree_inlinable_function_p): New function.
(inlinable_function_p): Don't look at DECL_INLINE if we're
inlining all functions.  Make it work with a NULL id.
Re-check DECL_UNINLINABLE after language-specific checks.
(varargs_function_p): Move back to cp/tree.c.
* tree-inline.h (tree_inlinable_function_p): Declare it.
(varargs_function_p): Removed declaration.
* integrate.h (function_attribute_inlinable_p): Declare it.
* integrate.c (function_attribute_inlinable_p): Export it.
(save_for_inline): Don't bother to prepare argvec when not
inlining.
* cse.c (check_for_label_ref): Don't check deleted labels.

From-SVN: r46025
2001-10-05 04:20:27 +00:00
Joseph Myers
80a497e4e9 c-common.c (c_format_attribute_table): Make format and format_arg attributes apply to function types rather than to decls.
* c-common.c (c_format_attribute_table): Make format and
	format_arg attributes apply to function types rather than to
	decls.
	(is_valid_printf_arglist): Construct an attribute list and pass
	that to check_function_format rather than a name.
	* c-common.h (check_function_format): Adjust prototype.
	* c-decl.c (duplicate_decls): Preserve attributes from type of
	built-in decl when allowing for harmless conflict in types.
	* c-format.c (record_function_format,
	record_international_format, function_format_list,
	international_format_info, international_format_list): Remove.
	(function_format_info): Remove next, name and assembler_name.
	Make format_num and first_arg_num be unsigned HOST_WIDE_INT.
	(decode_format_attr): New.
	(handle_format_attribute): Handle receiving a type rather than a
	decl.  Call decode_format_attr.  Store format information in a
	function_format_info.
	(handle_format_arg_attribute): Correct comment.  Handle receiving
	a type rather than a decl.  Use unsigned HOST_WIDE_INT for
	arg_num.
	(check_format_info_recurse, check_format_info_main): Take argument
	numbers as unsigned HOST_WIDE_INT.
	(check_function_format): Take a list of attributes from the
	function type rather than a name or assembler name.  Check for
	format attributes in that list and the attributes on the type of
	the current function rather than looking through
	function_format_list.
	(check_format_info): Use unsigned HOST_WIDE_INT for argument
	numbers.
	(check_format_info_recurse): Take format_arg attributes from the
	type of the function calls rather than using
	international_format_list.  Allow for multiple format_arg
	attributes.
	* c-typeck.c (build_function_call): Pass type attributes to
	check_function_format rather than name or assembler name.  Don't
	require there to be a name or assembler name to check formats.

cp:
	* call.c (build_over_call), typeck.c (build_function_call_real):
	Pass type attributes to check_function_format rather than name or
	assembler name.  Don't require there to be a name or assembler
	name to check formats.

testsuite:
	* g++.dg/warn/format2.C, gcc.dg/format/attr-7.c,
	gcc.dg/format/multattr-1.c, gcc.dg/format/multattr-2.c,
	gcc.dg/format/multattr-3.c: New tests.
	* gcc.dg/format/attr-3.c: Update expected error texts.  Remove
	tests for format attributes on function pointers being rejected.

From-SVN: r45945
2001-10-02 08:19:47 +01:00
Joseph Myers
6431177a55 attribs.c (decl_attributes): Possibly call insert_default_attributes to insert default attributes on...
* attribs.c (decl_attributes): Possibly call
	insert_default_attributes to insert default attributes on
	functions in a lazy manner.
	* builtin-attrs.def: New file; define the default format and
	format_arg attributes.
	* c-common.c (c_format_attribute_table): Move to earlier in the
	file.
	(c_common_nodes_and_builtins): Initialize format_attribute_table.
	(enum built_in_attribute, built_in_attributes,
	c_attrs_initialized, c_init_attributes,
	c_common_insert_default_attributes): New.
	(c_common_lang_init): Don't initialize format_attribute_table.  Do
	call c_init_attributes.
	* Makefile.in (c-common.o): Depend on builtin-attrs.def.
	* c-common.h (init_function_format_info): Don't declare.
	(c_common_insert_default_attributes): Declare.
	* c-decl.c (implicitly_declare, builtin_function): Call
	decl_attributes.
	(init_decl_processing): Don't call init_function_format_info.
	(insert_default_attributes): New.
	* c-format.c (handle_format_attribute,
	handle_format_arg_attribute): Be quiet about inappropriate
	declaration when applying default attributes.
	(init_function_format_info): Remove.
	* tree.h (enum attribute_flags): Add ATTR_FLAG_BUILT_IN.
	(insert_default_attributes): Declare.

cp:
	* decl.c (init_decl_processing): Don't call
	init_function_format_info.  Initialize lang_attribute_table
	earlier.
	(builtin_function): Call decl_attributes.
	(insert_default_attributes): New.

testsuite:
	* gcc.dg/format/attr-5.c, gcc.dg/format/attr-6.c: New tests.

From-SVN: r45942
2001-10-02 08:12:25 +01:00
Joseph Myers
91d231cb91 Table-driven attributes.
* c-decl.c, config/alpha/alpha.c, config/arc/arc.c,
	config/arm/arm.c, config/arm/pe.c, config/avr/avr.c,
	config/avr/avr.h, config/d30v/d30v.h, config/fr30/fr30.h,
	config/h8300/h8300.c, config/i386/cygwin.h, config/i386/winnt.c,
	config/m32r/m32r.c, config/mcore/mcore.c, config/sh/sh.c,
	config/stormy16/stormy16.h, config/v850/v850.c, doc/c-tree.texi,
	doc/tm.texi, ggc-common.c, integrate.c, print-tree.c, tree.c,
	tree.h: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* tree.h (struct tree_decl): Change machine_attributes to
	attributes.
	* doc/c-tree.texi: Document that all attributes are now attached
	to decls and types.
	* c-common.c (add_attribute, attrtab, attrtab_idx,
	default_valid_lang_attribute, valid_lang_attribute): Remove.
	(attribute_tables, attributes_initialized,
	c_common_attribute_table, default_lang_attribute_table): New
	variables.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_unused_attribute, handle_const_attribute,
	handle_transparent_union_attribute, handle_constructor_attribute,
	handle_destructor_attribute, handle_mode_attribute,
	handle_section_attribute, handle_aligned_attribute,
	handle_weak_attribute, handle_alias_attribute,
	handle_no_instrument_function_attribute,
	handle_no_check_memory_usage_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute): New
	functions.
	(init_attributes, decl_attributes): Rewrite to implement
	table-driven attributes.
	* c-common.h (enum attribute_flags): Move to tree.h.
	* c-format.c (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Rename to
	handle_format_attribute and handle_format_arg_attribute.  Update
	for table-driven attributes.
	* c-common.h (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Remove prototypes.
	(handle_format_attribute, handle_format_arg_attribute): Add
	prototypes.
	* c-decl.c (grokdeclarator): Handle attributes nested inside
	declarators.
	* c-parse.in (setattrs, maybe_setattrs): Remove.
	(maybe_type_quals_setattrs): Rename to maybe_type_quals_attrs.
	Update to handle nested attributes properly.
	(maybe_resetattrs, after_type_declarator,
	parm_declarator_nostarttypename, notype_declarator, absdcl1_noea,
	absdcl1_ea, direct_absdcl1): Update to handle nested attributes
	properly.
	(make_pointer_declarator): Update to handle nested attributes
	properly.
	* doc/extend.texi: Update documentation of limits of attributes
	syntax.  Warn about problems with attribute semantics in C++.
	* target.h (struct target): Remove valid_decl_attribute and
	valid_type_attribute.  Add attribute_table and
	function_attribute_inlinable_p.
	* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
	TARGET_VALID_TYPE_ATTRIBUTE): Remove.
	(TARGET_ATTRIBUTE_TABLE, TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P):
	Add.
	(TARGET_INITIALIZER): Update.
	* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): Remove default
	definition.
	(function_attribute_inlinable_p): New function.  Check for the
	presence of any machine attributes before using
	targetm.function_attribute_inlinable_p.
	(function_cannot_inline_p): Update.
	* Makefile.in (integrate.o): Update dependencies.
	* doc/tm.texi: Update documentation of target attributes and
	example definition of TARGET_VALID_TYPE_ATTRIBUTE.
	* tree.c (default_valid_attribute_p, valid_machine_attribute):
	Remove.
	(default_target_attribute_table,
	default_function_attribute_inlinable_p): New.
	(lookup_attribute): Update comment to clarify handling of multiple
	attributes with the same name.
	(merge_attributes, attribute_list_contained): Allow multiple
	attributes with the same name but different arguments to appear in
	the same attribute list.
	* tree.h (default_valid_attribute_p): Remove prototype.
	(struct attribute_spec): New.
	(default_target_attribute_table): Declare.
	(enum attribute_flags): Move from c-common.h.  Add
	ATTR_FLAG_TYPE_IN_PLACE.
	(default_function_attribute_inlinable_p): Declare.
	* config/alpha/alpha.c (vms_valid_decl_attribute_p): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(vms_attribute_table): New.
	* config/arc/arc.c (arc_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arc_attribute_table, arc_handle_interrupt_attribute): New.
	* config/arm/arm.c (arm_valid_type_attribute_p,
	arm_valid_decl_attribute_p, arm_pe_valid_decl_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(arm_attribute_table, arm_handle_fndecl_attribute,
	arm_handle_isr_attribute): New.
	* config/avr/avr.c (avr_valid_type_attribute,
	avr_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE, TARGET_VALID_TYPE_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(avr_attribute_table, avr_handle_progmem_attribute,
	avr_handle_fndecl_attribute): New.
	* config/c4x/c4x.c (c4x_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(c4x_attribute_table, c4x_handle_fntype_attribute): New.
	* config/h8300/h8300.c (h8300_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(h8300_attribute_table, h8300_handle_fndecl_attribute,
	h8300_handle_eightbit_data_attribute,
	h8300_handle_tiny_data_attribute): New.
	* config/i386/i386-protos.h (ix86_valid_type_attribute_p,
	i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p):
	Remove prototypes.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New
	declarations.
	* config/i386/i386.c (ix86_valid_type_attribute_p: Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
	define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ix86_attribute_table, ix86_handle_cdecl_attribute,
	ix86_handle_regparm_attribute): New.
	* config/i386/winnt.c (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Remove.
	(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New.
	* config/ia64/ia64.c (ia64_valid_type_attribute): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ia64_attribute_table): New.
	* config/m32r/m32r.c (m32r_valid_decl_attribute, interrupt_ident1,
	interrupt_ident2, model_ident1, model_ident2): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(init_idents): Update.
	(m32r_attribute_table, m32r_handle_model_attribute): New.
	* config/m68hc11/m68hc11.c (m68hc11_valid_type_attribute_p):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(m68hc11_attribute_table, m68hc11_handle_fntype_attribute): New.
	* config/mcore/mcore.c (mcore_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(mcore_attribute_table, mcore_handle_naked_attribute): New.
	* config/ns32k/ns32k.c (ns32k_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(ns32k_attribute_table, ns32k_handle_fntype_attribute): New.
	* config/rs6000/rs6000.c (rs6000_valid_type_attribute_p): Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(rs6000_attribute_table, rs6000_handle_longcall_attribute): New.
	* config/sh/sh.c (sh_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(sh_attribute_table, sh_handle_interrupt_handler_attribute,
	sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
	New.
	* config/stormy16/stormy16.c (stormy16_valid_type_attribute):
	Remove.
	(TARGET_VALID_TYPE_ATTRIBUTE): Don't define
	(TARGET_ATTRIBUTE_TABLE): Define.
	(stormy16_attribute_table, stormy16_handle_interrupt_attribute):
	New.
	* config/v850/v850.c (v850_valid_decl_attribute): Remove.
	(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
	(TARGET_ATTRIBUTE_TABLE): Define.
	(v850_attribute_table, v850_handle_interrupt_attribute,
	v850_handle_data_area_attribute): New.
	* config/v850/v850-c.c (mark_current_function_as_interrupt):
	Return void.  Call decl_attributes instead of
	valid_machine_attribute.

cp:
	Table-driven attributes.
	* decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
	* decl2.c (cplus_decl_attributes): Only take one attributes
	parameter.
	* cp-tree.c (cplus_decl_attributes): Update prototype.
	* class.c (finish_struct), decl.c (start_decl, start_function),
	decl2.c (grokfield), friend.c (do_friend), parse.y
	(parse_bitfield): Update calls to cplus_decl_attributes.
	* decl.c (grokdeclarator): Take a pointer to a single ordinary
	attribute list.
	* decl.h (grokdeclarator): Update prototype.
	* decl2.c (grokfield): Take a single ordinary attribute list.
	* friend.c (do_friend): Likewise.
	* decl.c (shadow_tag, groktypename, start_decl,
	start_handler_parms, grokdeclarator, grokparms, start_function,
	start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
	parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
	(process_template_parm, do_decl_instantiation): Pass single
	ordinary attribute lists around.
	* decl.c (grokdeclarator): Correct handling of nested attributes.
	Revert the patch
	1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
		* decl.c (grokdeclarator): Embedded attrs bind to the right,
		not the left.
	.
	* cp-tree.h (cp_valid_lang_attribute): Remove declaration
	(cp_attribute_table): Declare.
	* decl.c (valid_lang_attribute): Don't define.
	(lang_attribute_table): Define.
	(init_decl_processing): Initialize lang_attribute_table instead of
	valid_lang_attribute.
	* tree.c (cp_valid_lang_attribute): Remove.
	(handle_java_interface_attribute, handle_com_interface_attribute,
	handle_init_priority_attribute): New functions.
	(cp_attribute_table): New array.
	* decl2.c (import_export_class): Don't use
	targetm.valid_type_attribute.

testsuite:
	Table-driven attributes.
	* g++.dg/ext/attrib1.C: New test.

From-SVN: r45718
2001-09-21 02:27:06 +01:00
Kaveh R. Ghazi
27c38fbec7 c-common.c (c_tree_code_name): Const-ification.
* c-common.c (c_tree_code_name): Const-ification.
	* c-decl.c (c_decode_option): Likewise.
	* c-typeck.c (warn_for_assignment): Likewise.
	* collect2.c (libexts, is_ctor_dtor, main, ignore_library):
	Likewise.
	* cppinit.c (output_deps): Likewise.
	* dependence.c (dependence_string, direction_string): Likewise.
	* dwarf2out.c (output_ranges): Likewise.
	* fixinc/fixfixes.c (emit_gnu_type): Likewise.
	* fixinc/gnu-regex.c (re_error_msgid): Likewise.
	* gcc.c (standard_exec_prefix, standard_exec_prefix_1,
	standard_startfile_prefix, standard_startfile_prefix_1,
	standard_startfile_prefix_2, tooldir_base_prefix,
	standard_bindir_prefix, find_a_file): Likewise.
	* genattrtab.c (make_length_attrs): Likewise.
	* gencheck.c (tree_codes): Likewise.
	* genemit.c (gen_split): Likewise.
	* genrecog.c (special_mode_pred_table): Likewise.
	* graph.c (graph_ext): Likewise.
	* protoize (default_include): Likewise.
	* reload.c (reload_when_needed_name): Likewise.
	* sched-vis.c (visualize_stall_cycles): Likewise.
	* tlink.c (recompile_files): Likewise.
	* toplev.c (decode_g_option): Likewise.
	* tradcpp.c (output_deps): Likewise.
	* varasm.c (decode_reg_name): Likewise.

	* arm.c (arm_condition_codes, strings_fpa, thumb_condition_code):
	Const-ification.
	* arm.md: Likewise.
	* avr.c (avr_regnames, encode_section_info): Likewise.
	* c4x.c (float_reg_names): Likewise.
	* darwin.h (ASM_GLOBALIZE_LABEL): Likewise.
	* elfos.h (const_section): Likewise.
	* i386.c (ix86_comp_type_attributes): Likewise.
	* i386/win32.h (STRIP_NAME_ENCODING): Likewise.
	* ia64/aix.h (UNIQUE_SECTION): Likewise.
	* ia64.c (type_names): Likewise.
	* m68hc11.c (reg_class_names): Likewise.
	* m88k.c (m_options): Likewise.
	* mips.c (mips_output_conditional_branch, mips_unique_section):
	Likewise.
	* rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
	* sparc.c (sparc_flat_function_prologue, sparc_flat_function_epilogue,
	ultra_code_names): Likewise.
	* sparc.h (OVERRIDE_OPTIONS): Likewise.

From-SVN: r45567
2001-09-12 17:18:03 +00:00
Diego Novillo
a8231a01c1 c-decl.c (c_decode_option): Skip '-f' prefix before calling dump_switch_p.
* c-decl.c (c_decode_option): Skip '-f' prefix before calling
	dump_switch_p.

From-SVN: r45323
2001-08-31 12:34:44 -04:00
Lars Brinkhoff
1322177dbd Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
	bitmap.h, builtin-types.def, builtins.c, builtins.def,
	c-aux-info.c, c-common.c, c-common.def, c-common.h,
	c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
	c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
	c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
	caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
	conditions.h, config.gcc, configure.frag, configure.in,
	conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
	cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
	dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
	doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
	dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
	emit-rtl.c, errors.c, errors.h, except.c, except.h,
	exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
	fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
	function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
	gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
	gencheck.c, gencodes.c, genconfig.c, genemit.c,
	genextract.c, genflags.c, gengenrtl.c, genmultilib,
	genopinit.c, genoutput.c, genpeep.c, genrecog.c,
	gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
	ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
	graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
	gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
	gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
	hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
	integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
	libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
	machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
	mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
	mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
	params.h, predict.c, predict.def, predict.h, prefix.c,
	prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
	read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
	regclass.c, regmove.c, regrename.c, regs.h, reload.c,
	reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
	rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
	sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
	sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
	ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
	stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
	tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
	tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
	unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
	unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
	xcoffout.h: replace "GNU CC" with "GCC".

From-SVN: r45105
2001-08-22 14:35:51 +00:00
Richard Henderson
2cc07db4b0 Move constructor/destructor handling into target hooks.
From-SVN: r44747
2001-08-09 15:33:35 -07:00
Richard Henderson
47907859fd varasm.c (assemble_constructor): Take a symbol_ref and a priority instead of a bare string.
* varasm.c (assemble_constructor): Take a symbol_ref and a
        priority instead of a bare string.  Move priority handling
        here from cp/decl2.c.
        * output.h: Update decls.

        * c-decl.c (c_expand_body): Update calls to assemble_constructor
        and assemble_destructor.
        * profile.c (output_func_start_profiler): Likewise.
        * objc/objc-act.c (finish_objc): Likewise.
        (build_module_descriptor): Return the symbol not the symbol name.

        * ch/grant.c (chill_finish_compile): Pass a symbol_ref and priority
        to assemble_constructor.

        * cp/decl2.c (finish_objects): Pass a symbol_ref and priority to
        assemble_{constructor,destructor}.  Remove priority handling.

        * java/class.c (emit_register_classes): Pass a symbol_ref and priority
        to assemble_constructor.

From-SVN: r44678
2001-08-06 17:13:35 -07:00
Kazu Hirata
ec5c56db8b alias.c: Fix comment formatting.
* alias.c: Fix comment formatting.
	* bitmap.c: Likewise.
	* builtins.c: Likewise.
	* calls.c: Likewise.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-dump.c: Likewise.
	* c-lex.c: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* conflict.c: Likewise.
	* cppfiles.c: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* cppspec.c: Likewise.
	* c-pragma.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* cselib.c: Likewise.
	* c-semantics.c: Likewise.
	* c-typeck.c: Likewise.

From-SVN: r44547
2001-08-01 17:57:27 +00:00
Neil Booth
e1772ac058 Makefile.in (emit-rtl.o, c-decl.o): Depend on debug.h.
* Makefile.in (emit-rtl.o, c-decl.o): Depend on debug.h.
	(final.o): Don't depend on xcoffout.h, dbxout.h or sdbout.h.
	(toplev.o): Don't depend on xcoffout.h.
	* c-decl.c: Include debug.h
	(duplicate_decls): Use debug hook.
	* dbxout.c (dbxout_source_file, dbxout_args): Make static.
	(dbx_debug_hooks, xcoff_debug_hooks): Update.
	(dbxout_types): Remove.
	* dbxout.h (dbxout_source_file, dbxout_types, dbxout_args): Remove.
	* debug.c (do_nothing_debug_hooks): Update.
	(debug_true_tree, debug_nothing_rtx): New.
	* debug.h (struct rtx_def): New.
	(struct gcc_debug_hooks): New hooks ignore_block,
	outlining_inline_function and label.
	(debug_true_tree, debug_nothing_rtx, dwarf2out_frame_init,
	dwarf2out_frame_finish): New.
	* dwarf2out.c (dwarf2out_ignore_block, dwarf2out_abstract_function):
	Make static, update prototype.
	(dwarf2_debug_hooks): Update.
	* dwarf2out.h (dwarf2out_ignore_block, dwarf2out_abstract_function,
	dwarf2out_frame_init, dwarf2out_frame_finish): Remove.
	* dwarfout.c (dwarf_debug_hooks): Update.
	* emit-rtl.c: Include debug.h.
	(remove_unnecessary_notes): Use debug hook.
	* final.c: Don't include dbxout.h, xcoffout.h or sdbout.h.
	(final_scan_insn): Use debug hook.
	* integrate.c (output_inline_function): Use debug hook.
	* sdbout.c (sdbout_toplevel_data, sdbout_label): Make static.
	(sdb_debug_hooks): Update.
	* sdbout.h (sdbout_label, sdbout_toplevel_data): Remove.
	* toplev.c: Don't include xcoffout.h.
	(note_outlining_of_inline_function, debug_ignore_block): Remove.
	* toplev.h (note_outlining_of_inline_function, debug_ignore_block):
	Remove.
	* tree.h (dwarf2out_do_frame): Remove.

From-SVN: r44163
2001-07-19 21:17:09 +00:00
Joseph Myers
59387d2e31 c-common.c (decl_attributes): Take a pointer to the node to which attributes are to be attached...
* c-common.c (decl_attributes): Take a pointer to the node to
	which attributes are to be attached, and a flags argument.
	* c-common.h (enum attribute_flags): New.
	(decl_attributes): Update prototype.
	* c-decl.c (start_decl, push_parm_decl, finish_struct,
	finish_enum, start_function): Update calls to decl_attributes.
	* c-parse.in (component_declarator, component_notype_declarator,
	label): Update calls to decl_attributes.

cp:
	* decl2.c (cplus_decl_attributes): Take a pointer to the node to
	which attributes are to be attached, and a flags argument.  Update
	call to decl_attributes.
	(grokfield): Update call to decl_attributes.
	* class.c (finish_struct): Update call to cplus_decl_attributes.
	* cp-tree.h (cplus_decl_attributes): Update prototype.
	* decl.c (start_decl, grokdeclarator, start_function): Update
	calls to decl_attributes and cplus_decl_attributes.
	* friend.c (do_friend): Update call to cplus_decl_attributes.
	* parse.y (parse_bitfield): Update call to cplus_decl_attributes.

From-SVN: r43995
2001-07-13 21:40:43 +01:00
Jan van Male
ae0ed63adc regmove.c (replace_in_call_usage): Fix warnings.
2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
	* regmove.c (replace_in_call_usage): Fix warnings.
	* sched-deps.c (add_dependence): Fix warnings.
	* simplify-rtx.c (simplify_subreg): Likewise.
	Return NULL_RTX instead of NULL.

	* reg-stack.c (emit_swap_insn): Eliminate warnings.
	(subst_asm_stack_regs): Likewise.

	* combine.c (num_sign_bit_copies): Cast bitwidth to int to avoid
	warnings.

	* dwarf2out.c (output_call_frame_info): Declare i as int.
	(build_abbrev_table): Declare n_alloc as int.
	(dwarf2out_finish): Initialize die.
	* except.c: Declare sjlj_funcdef_number as unsigned.
	(connect_post_landing_pads): Declare j as unsigned.
	(convert_to_eh_region_ranges): Initialize call_site.
	(output_function_exception_table): Initialize tt_format_size.
	* expr.c (move_by_pieces_1): Initialize to1.
	(store_constructor): Initialize minelt and maxelt.
	* flow.c (mark_regs_live_at_end): Declare i as unsigned.
	* function.c (instantiate_decls): Avoid signed/unsigned warning.

	* c-decl.c (combine_parm_decls): Unused, remove.
	* c-tree.h: Remove prototype for combine_parm_decls.

	* reload.c (push_reload): Fix warning.
	(regno_clobbered_p): Likewise.
	* reload1.c (replace_pseudos_in_call_usage): Likewise.
	(reload_combine): Likewise.

	* bitmap.c: Rename bitmap_zero to bitmap_zero_bits to fix warnings.
	* bitmap.h: Rename bitmap_zero to bitmap_zero_bits to fix
	warnings.
	* bitmap.c (bitmap_operation): Change user.
	* bitmap.h (EXECUTE_IF_AND_COMPL_IN_BITMAP): Likewise.
For cp/:
2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* call.c (build_op_delete_call): Initialize fn.
	(convert_like_real): Delete conditional.
	(joust): Initialize *w and *l.
	* class.c: Add prototype for binfo_ctor_vtable.
	(get_primary_binfo): Initialize result.
	* init.c (build_java_class_ref): Initialize name.

	* typeck.c (unary_complex_lvalue): Do not duplicate the
	argument to modify, pre-, or post-increment when used as an
	lvalue and when the argument has side-effects.

For ch/:
2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* ch-tree.h: Remove prototype for combine_parm_decls, unused
	function.

From-SVN: r43893
2001-07-10 12:38:10 +02:00
Joseph Myers
12a68f1f08 target.h (struct gcc_target): Add insert_attributes.
* target.h (struct gcc_target): Add insert_attributes.
	* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
	(TARGET_INITIALIZER): Update.
	* tree.c, tree.h (default_insert_attributes): New function.
	Update comments on other default functions to refer to targetm,
	not target.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
	TARGET_INSERT_ATTRIBUTES.
	(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
	* c-common.c (decl_attributes): Use targetm.insert_attributes.
	Don't use PRAGMA_INSERT_ATTRIBUTES.
	* Makefile.in (c-common.o): Depend on $(TARGET_H).
	* c-decl.c (start_decl, start_function): Don't call
	SET_DEFAULT_DECL_ATTRIBUTES.
	* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
	declare.
	* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
	(c4x_check_attribute): Avoid modifying attribute list itself.
	(c4x_set_default_attributes): Rename to c4x_insert_attributes.
	Make static.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
	* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
	declare.
	* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
	(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
	Make static.
	* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
	declare.
	* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
	(v850_set_default_decl_attr): Rename to v850_insert_attributes.
	Adjust parameters.  Make static.

cp:
	* decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
	(start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
	cplus_decl_attributes even if attrs is NULL.
	* friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.

From-SVN: r43851
2001-07-08 21:05:17 +01:00
Joseph Myers
f7a4cec096 c-common.c (decl_attributes): Only take a single attributes parameter.
* c-common.c (decl_attributes): Only take a single attributes
	parameter.
	* c-common.h (decl_attributes): Update prototype.
	* c-decl.c (start_decl, start_function): Only take a single
	attributes parameter.  Update calls to decl_attributes.
	(finish_struct, finish_enum): Update calls to decl_attributes.
	(push_parm_decl): Expect unified list of attributes.  Update call
	to decl_attributes.
	* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
	notype_nested_function, component_declarator,
	component_notype_declarator, label): Update calls to
	decl_attributes.
	(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
	lists that are passed to push_parm_decl.
	* c-tree.h (start_function, start_decl): Update prototypes.
	* config/sh/sh-protos.h, config/sh/sh.c
	(sh_pragma_insert_attributes): Only take a single attributes
	parameter.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update.
	* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
	build_module_descriptor, generate_static_references,
	generate_strings, build_selector_translation_table,
	generate_descriptor_table, generate_protocols,
	generate_ivars_list, generate_dispatch_table,
	generate_protocol_list, generate_category,
	generate_shared_structures, really_start_method, add_objc_decls,
	generate_classref_translation_entry): Update calls to start_decl
	and start_function.
	(build_tmp_function_decl, start_method_def): Unify attribute lists
	that are passed to push_parm_decl.

cp:
	* decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
	calls to decl_attributes.

testsuite:
	* gcc.c-torture/compile/20010701-1.c,
	g++.old-deja/g++.ext/attrib6.C: New tests.

From-SVN: r43850
2001-07-08 20:58:19 +01:00
Stan Shebs
f6897b10e1 target.h (targetm): Rename global from "target", so as not to conflict with local variables.
* target.h (targetm): Rename global from "target", so as not to
        conflict with local variables.
        * c-decl.c: Ditto.
        * c-typeck.c: Ditto.
        * final.c: Ditto.
        * tree.c: Ditto.
        * cp/decl.c: Ditto.
        * cp/decl2.c: Ditto.
        * cp/typeck.c: Ditto.
        * 1750a/1750a.c: Ditto.
        * a29k/a29k.c: Ditto.
        * arc/arc.c: Ditto.
        * arm/arm.c: Ditto.
        * avr/avr.c: Ditto.
        * clipper/clipper.c: Ditto.
        * convex/convex.c: Ditto.
        * d30v/d30v.c: Ditto.
        * dsp16xx/dsp16xx.c: Ditto.
        * elxsi/elxsi.c: Ditto.
        * fr30/fr30.c: Ditto.
        * h8300/h8300.c: Ditto.
        * i370/i370.c: Ditto.
        * i386/i386.c: Ditto.
        * i860/i860.c: Ditto.
        * i960/i960.c: Ditto.
        * ia64/ia64.c: Ditto.
        * m32r/m32r.c: Ditto.
        * m68hc11/m68hc11.c: Ditto.
        * m68k/m68k.c: Ditto.
        * m88k/m88k.c: Ditto.
        * mips/mips.c: Ditto.
        * ns32k/ns32k.c: Ditto.
        * pa/pa.c: Ditto.
        * pdp11/pdp11.c: Ditto.
        * romp/romp.c: Ditto.
        * rs6000/rs6000.c: Ditto.
        * sh/sh.c: Ditto.
        * sparc/sparc.c: Ditto.
        * vax/vax.c: Ditto.
        * we32k/we32k.c: Ditto.
        * doc/tm.texi: Update the manual to match.

From-SVN: r43831
2001-07-07 01:07:22 +00:00
Neil Booth
672a6f42e9 Makefile.in (TARGET_H, [...]): New.
* Makefile.in (TARGET_H, TARGET_DEF_H): New.
	(c-decl.o, tree.o, c-typeck.o, $(out_object_file)): Update.
	* c-decl.c (duplicate_decls): Use function pointer.
	* c-typeck.c (common_type): Similarly.
	* tree.c (valid_machine_attribute): Similarly.
	(merge_machine_type_attributes): Rename merge_type_attributes.
	(merge_machine_decl_attributes): Rename merge_decl_attributes.
	(merge_dllimport_decl_attributes): New function.
	* tree.h (merge_machine_type_attributes): Rename merge_type_attributes.
	(merge_machine_decl_attributes): Rename merge_decl_attributes.
	(merge_dllimport_decl_attributes): New prototype.
	* target.h: New.
	* target-def.h: New.

doc:	(Joseph Myers)
	* doc/gcc.texi, doc/tm.texi: Update documentation.

cp:	Make-lang.in: Update dependencies.
	* spew.c: Include target.h.
	(duplicate_decls): Call target function.
	* decl2.c: include target.h
	(import_export_class): Use existence of target function pointer.
	* typeck.c: Include target.h.
	(qualify_type_recursive): Rename variable.  Call target function.
	(type_after_usual_arithmetic_conversions): Similarly.
	(common_type): Similarly.

config:	* 1750a/1750a.c, a29k/29k.c, alpha/alpha.c, arc/arc.c, arm/arm.c,
	avr/avr.c, c4x/c4x.c, clipper/clipper.c, convex/convex.c,
	d30v/d30v.c, dsp16xx/dsp16xx.c, elxsi/elxsi.c, fr30/fr30.c,
	i370/i370.c, i386/i386.c, i860/i860.c, i960/i960.c, ia64/ia64.c,
	m32r/m32r.c, m68hc11/m68hc11.c, m68k/m68k.c, m88k/m88k.c,
	mips/mips.c, mn10200/mn10200.c, mn10300/mn10300.c, ns32k/ns32k.c,
	pa/pa.c, pdp11/pdp11.c, pj/pj.c, romp/romp.c, rs6000/rs6000.c,
	sh/sh.c, sparc/sparc.c,	v850/v850.c, vax/vax.c, we32k/we32k.c)
	: Include target.h and target-def.h.  Define target.

	* arc/arc-protos.h (arc_valid_machine_decl_attribute): Remove.
	* arc/arc.c (arc_valid_machine_decl_attribute): Rename
	arc_valid_decl_attribute, make static.
	* arc/arc.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* arm/arm-protos.h (arm_valid_machine_decl_attribute,
	arm_valid_type_attribute_p, arm_pe_valid_machine_decl_attribute,
	arm_pe_merge_machine_decl_attributes): Remove.
	* arm/arm.c (arm_valid_machine_decl_attribute_p): Rename
	arm_valid_decl_attribute_p, make static.
	(arm_pe_valid_decl_attribute_p): Move from pe.c.
	* arm/pe.c (arm_pe_valid_machine_decl_attribute_p): Move to arm.c.
	(arm_pe_merge_machine_decl_attributes): Move to tree.c.
	* arm/arm.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* arm/coff.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* arm/elf.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): New.
	(VALID_MACHINE_TYPE_ATTRIBUTE, VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* avr/avr-protos.h (valid_machine_type_attribute,
	valid_machine_decl_attribute): Remove.
	* avr/avr.c (valid_machine_type_attribute,
	valid_machine_decl_attribute): Rename and make static.
	* avr/avr.h (VALID_MACHINE_TYPE_ATTRIBUTE,
	VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* c4x/c4x-protos.h (c4x_valid_type_attribute_p): Remove.
	* c4x/c4x.c (c4x_valid_type_attribute_p): Make static.
	* c4x/c4x.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* d30v/d30v.h: Remove obsolete comments.
	* h8300/h8300-protos.h (h8300_valid_machine_decl_attribute): Remove.
	* h8300/h8300.c (h8300_valid_machine_decl_attribute): Rename, make
	static.
	* h8300/h8300.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* i386/cygwin.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define.
	(i386_pe_merge_decl_attributes, MERGE_MACHINE_DECL_ATTRIBUTES,
	i386_pe_valid_type_attributes_p): Remove.
	* i386/i386-protos.h (ix86_valid_decl_attribute_p,
	ix86_valid_type_attribute_p): Remove.
	* i386/i386.c (ix86_valid_decl_attribute_p): Remove.
	(ix86_valid_type_attribute_p): Make static.
	* i386/i386.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* i386/winnt.c (i386_pe_merge_decl_attributes): Move to tree.c.
	* ia64/ia64-protos.h (ia64_valid_type_attribute): Remove.
	* ia64/ia64.c (ia64_valid_type_attribute): Make static.
	* ia64/ia64.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* m32r/m32r-protos.h (m32r_valid_machine_decl_attribute): Remove.
	* m32r/m32r.c (m32r_valid_decl_attribute): Make static.
	* m32r/m32r.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* m68hc11/m68hc11-protos.h (m68hc11_valid_decl_attribute_p,
	m68hc11_valid_type_attribute_p): Remove.
	* m68hc11/m68hc11.c (m68hc11_valid_decl_attribute_p): Remove.
	(m68hc11_valid_type_attribute_p): Make static.
	* m68hc11/m68hc11.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* mcore/mcore-protos.h (mcore_valid_machine_decl_attribute,
	mcore_merge_machine_decl_attribute): Remove.
	* mcore/mcore.c (mcore_valid_machine_decl_attribute): Rename,
	make static.
	(mcore_merge_machine_decl_attributes): Move to tree.c.
	* mcore/mcore.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	(TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define.
	* ns32k/ns32k-protos.h (ns32k_valid_decl_attribute_p,
	ns32k_valid_type_attribute_p): Remove.
	* ns32k/ns32k.c (ns32k_valid_decl_attribute_p): Remove.
	(ns32k_valid_type_attribute_p): Make static.
	* ns32k/ns32k.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* rs6000/rs6000-protos.h (rs6000_valid_decl_attribute_p,
	rs6000_valid_type_attribute_p): Remove.
	* rs6000/rs6000.c (rs6000_valid_decl_attribute_p): Remove.
	(rs6000_valid_type_attribute_p): Make static.
	* rs6000/rs6000.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* sh/sh-protos.h (sh_valid_machine_decl_attribute): Remove.
	* sh/sh.c (sh_valid_machine_decl_attribute): Rename, make static.
	* sh/sh.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* v850/v850-protos.h (v850_valid_machine_decl_attribute): Remove.
	* v850/v850.c (v850_valid_machine_decl_attribute): Rename, make static.
	* v850/v850.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.

From-SVN: r43585
2001-06-26 18:09:27 +00:00
Kaveh R. Ghazi
2c1a24210c c-decl.c (grokdeclarator): Use INTEGRAL_TYPE_P.
* c-decl.c (grokdeclarator): Use INTEGRAL_TYPE_P.

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

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

From-SVN: r43257
2001-06-12 12:15:46 +00:00
Joseph Myers
1552f87457 re PR c/3116 (Bug with using oldstyle prototype declarations)
* c-decl.c (store_parm_decls): When comparing types in an
	old-style function declaration with those from a previous
	prototype, compare the unqualified versions of parameter types.
	Fixes PR c/3116.

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

From-SVN: r43186
2001-06-11 14:26:19 +01:00
Joseph Myers
f18b70f587 c-decl.c (xref_tag): Don't return previous tags of wrong type.
* c-decl.c (xref_tag): Don't return previous tags of wrong type.

testsuite:
	* gcc.dg/c99-tag-1.c: Add more tests.

From-SVN: r43179
2001-06-11 12:50:29 +01:00
Mark Mitchell
0f38b81142 c-decl.c (grokdeclarator): Make the TREE_TYPE for declarations accurately reflect its cv-qualification.
* c-decl.c (grokdeclarator): Make the TREE_TYPE for declarations
	accurately reflect its cv-qualification.
	* c-typeck.c (type_lists_compatible_p): Ignore the top-levl
	cv-qualifiers on function types.

From-SVN: r43056
2001-06-08 22:33:46 +00:00
Mark Mitchell
7b2b3f29e5 c-semantics.c (genrtl_scope_stmt): Write out nested inline functions here, instead of ...
* c-semantics.c (genrtl_scope_stmt): Write out nested inline
	functions here, instead of ...
	* c-decl.c (c_expand_body): ... here.

From-SVN: r42930
2001-06-06 03:08:21 +00:00
Nathan Sidwell
b7442fb555 c-common.h (flag_dump_translation_unit): Remove.
* c-common.h (flag_dump_translation_unit): Remove.
	(enum tree_dump_index): Define.
	(TDF_ADDRESS, TDF_SLIM): New #defines.
	(dump_node_to_file): Remove.
	(dump_node): Make extern. Add flags.
	(dump_flag, dump_enabled_p, dump_begin, dump_end,
	dump_switch_p): Prototype.
	* c-common.c (flag_dump_translation_unit): Remove.
	* c-decl.c (c_decode_option): Remove -fdump-translation-unit
	logic. Use dump_switch_p.
	* c-dump.h (struct dump_info): Add node and user fields.
	(dump_pointer): Declare.
	* c-dump.c (dump_node): Make extern. Add flags.
	(SOL_COLUMN, EOL_COLUMN, COLUMN_ALIGNMENT): New #defines.
	(dump_new_line, dump_maybe_newline): Use them.
	(dump_pointer): New function.
	(dequeue_and_dump): Check TDF_SLIM before dumping a _DECL's
	chain or function's body. Dump address, if TDF_ADDRESS set.
	(dump_flag): Define.
	(dump_node_to_file): Remove.
	(struct dump_file_info): New struct.
	(dump_files): New array.
	(dump_begin, dump_end, dump_enabled_p, dump_switch_p): Define.
	* c-lang.c (finish_file): Adjust dumping.
	* toplev.h (dump_base_name): Make extern.
	* invoke.texi: Document new flags.
cp:
	* class.c (maybe_indent_hierarchy): New function.
	(dump_class_hierarchy_r): Add flags. Dump extra binfo
	information, if enabled. Use maybe_indent_hierarchy. Adjust
	output format.
	(dump_class_hierarchy): Adjust prototype. Adjust output format.
	(dump_array, dump_vtable, dump_vtt): New functions.
	(finish_struct_1): Adjust hierarchy dumping.
	(initialize_vtable): Call dump_vtable.
	(build_vtt): Call dump_vtt.
	(build_ctor_vtbl_group): Call dump_vtable.
	* decl2.c (flag_dump_class_layout): Remove.
	(cxx_decode_option): Remove dump translation unit
	and dump class hierarchy check. Call dump_switch_p.
	(finish_file): Adjust dumping.
	(dump.c): Only dump base classes if not TDF_SLIM.
	Only dump namespace members if not TDF_SLIM.
	* optimize.c (dump_function): New function.
	(optimize_function): Call dump_function.
	* semantics.c (expand_body): Use dump_enabled_p.

From-SVN: r42896
2001-06-05 08:03:45 +00:00
Mark Mitchell
1f7317498d c-tree.h (lang_decl): Add pending_sizes fields.
* c-tree.h (lang_decl): Add pending_sizes fields.
	* c-decl.c (store_parm_decls): Save pending_sizes away for nested
	functions.
	(c_expand_body): Expand them.
	(lang_mark_tree): Mark lang_decl:pending_sizes.
	* function.c (expand_pending_sizes): New function, broken out
	from ...
	(expand_function_start): ... here.
	* tree.h (expand_pending_sizes): Declare it.

From-SVN: r42892
2001-06-05 06:51:02 +00:00
John David Anglin
b6d6aa84df c-decl.c (get_parm_info): Use INTEGRAL_TYPE_P.
* c-decl.c (get_parm_info): Use INTEGRAL_TYPE_P.
	(store_parm_decls): Likewise.
	* c-typeck.c (convert_arguments): Likewise.

From-SVN: r42882
2001-06-04 20:26:16 +00:00
Neil Booth
84b7783609 c-decl.c (init_decl_processing): Don't call start_identifier_warnings.
* c-decl.c (init_decl_processing):
	 Don't call start_identifier_warnings.
	* flags.h (warn_id_clash, id_clash_len): Remove.
	* stringpool.c: Don't include flags.h.
	(scan_for_clashes, do_identifier_warnings,
	start_identifier_warnings): Remove.
	* toplev.c (warn_id_clash, id_clash_len): Remove.
	(display_help): Don't document -Wid-clash.
	(decode_W_option): Print warning on -Wid-clash.
	* tree.h (start_identifier_warnings): Remove.
	* invoke.texi: Remove documentation of -Wid-clash.

From-SVN: r42665
2001-05-27 21:04:28 +00:00
Mark Mitchell
1084128584 builtins.def: Encode additional information, such as names and types, here.
* builtins.def: Encode additional information, such as names and
	types, here.
	* builtin-types.def: New file.
	* builtins.c (built_in_names): Adjust use of DEF_BUILTIN.
	(built_in_decls): Likewise.  Don't explicitly initialize global
	data to NULL.
	(expand_builtin_mathfn): Handle float and long double variants of
	math builtins.
	(expand_builtin): Likewise.
	* c-common.c (c_common_nodes_and_builtins): Make it table-driven.
	(expand_tree_builtin): Handle long, long long, float, and long
	double variants of math functions.
	* c-common.h (c_tree_index): Remove some unused nodes.
	(void_ftype): Remove.
	(void_type_ptr): Likewise.
	(int_ftype_int): Likewise.
	(ptr_ftype_sizetype): Likewise.
	* c-decl.c (init_decl_processing): Remove creation of DWARF
	builtins.
	* defaults.h (MD_INIT_BUILTINS): Provide default definition.
	* tree.h (built_in_function): Adjust definition of DEF_BUILTIN.
	* Makefile.in (c-common.o): Depend on builtin-types.def.

	* decl.c (init_decl_processing): Tweak.

From-SVN: r42583
2001-05-25 20:00:59 +00:00
Joseph Myers
0e03329a6f c-parse.in (array_declarator): New.
* c-parse.in (array_declarator): New.  Handle C99 constructs.
	Don't restrict [*] declarators to C only.
	(after_type_declarator, parm_declarator_starttypename,
	parm_declarator_nostarttypename, notype_declarator,
	direct_absdcl1): Use it.
	* c-decl.c (build_array_declarator, set_array_declarator_type):
	New functions.  Warn that [*] isn't properly implemented; pedwarn
	for [*] outside C99 mode if pedantic rather than giving a hard
	error.
	(grokdeclarator): Handle static and type qualifiers in parameter
	array declarators.
	* c-tree.h (build_array_declarator, set_array_declarator_type):
	Declare.
	* extend.texi (Attribute Syntax): Document attributes in parameter
	array declarators.

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

From-SVN: r42574
2001-05-25 12:12:47 +01:00
Mark Mitchell
0adc3c1971 c-decl.c (finish_decl): Don't set DECL_C_HARD_REGISTER for non-register variables.
* c-decl.c (finish_decl): Don't set DECL_C_HARD_REGISTER for
	non-register variables.
	* extend.texi: Document that asm-specifications do not make sense
	for non-static local variables.

From-SVN: r42403
2001-05-21 18:36:57 +00:00
Kaveh R. Ghazi
6496a589df bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".
* bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* combine.c: Likewise.
	* rs6000.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* objc/objc-act.c: Likewise.
	* recog.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.c: Likewise.
	* reload1.c: Likewise.
	* simplify-rtx.c: Likewise.
	* stmt.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r41722
2001-05-01 12:11:35 +00:00
Richard Henderson
d72040f508 c-common.c (c_promoting_integer_type_p): New function, from the corpse of old macro.
* c-common.c (c_promoting_integer_type_p): New function, from the
        corpse of old macro.  Properly promote too-small enumerations and
        booleans.  Adjust all callers.
        * c-common.h (C_PROMOTING_INTEGER_TYPE_P): Remove.
        (c_promoting_integer_type_p): Declare.
        * c-decl.c: Adjust C_PROMOTING_INTEGER_TYPE_P invocations.
        * c-typeck.c: Likewise.
        (default_conversion): Remove now redundant boolean check.

        * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
        * decl.c: Likewise.

From-SVN: r41709
2001-04-30 16:59:10 -07:00
Nathan Sidwell
0ba8a114c7 Lazy __FUNCTION__ generation.
gcc:
	Lazy __FUNCTION__ generation.
	* c-common.h (RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME,
	RID_C99_FUNCTION_NAME): New _RIDs.
	(CTI_FUNCTION_ID, CTI_PRETTY_FUNCTION_ID, CTI_FUNC_ID): Remove.
	(CTI_FUNCTION_NAME_DECL, CTI_PRETTY_FUNCTION_NAME_DECL,
	CTI_C99_FUNCTION_NAME_DECL, CTI_SAVED_FUNCTION_NAME_DECLS): New
	global tree slots.
	(function_id_node, pretty_function_id_node, func_id_node): Remove.
	(c99_function_name_decl_node, function_name_decl_node,
	pretty_function_name_decl_node, saved_function_name_decls):
	Declare.
	(struct language_function): Remove x_function_name_declared_p.
	(make_fname_decl): Remove a parameter.
	(declare_function_names): Remove prototype.
	(start_fname_decls, finish_fname_decls): Prototype.
	(fname_as_string): Likewise.
	(fname_string, fname_decl): Likewise.
	* c-common.c (make_fname_decl): Adjust.
	(struct fname_var_t): New struct.
	(fname_vars): New static array.
	(declare_function_name): Remove.
	(start_fname_decls, finish_fname_decls): New functions.
	(fname_as_string): New function from remnants of
	declare_function_name.
	(fname_string, fname_decl): New functions.

	* c-decl.c (c_function_name_declared_p): Remove.
	(init_decl_processing): Don't generate __FUNCTION__ et al ids,
	don't call declare_function_name. Call start_fname_decls.
	(c_make_fname_decl): Adjust parameters. Generate the name. Don't
	clobber the line number. Call finish_decl.
	(start_function): Call start_fname_decls.
	(finish_function): Call finish_fname_decls.
	Remove c_function_name_declared_p.
	(push_c_function_context): Don't push c_function_name_declared_p.
	(pop_c_function_context): Don't pop c_function_name_declared_p.
	(c_begin_compound_stmt): Don't check c_function_name_declared_p.
	* c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): New tokens.
	(program): Call finish_fname_decls for C.
	(primary): Add VAR_FUNC_NAME.
	(reswords): Add slots for __FUNCTION__ et al.
	(rid_to_yy): Add mappings for __FUNCTION__ et al.
	(yylexname): If it's a STRING_FUNC_NAME generate the function name
	now. Don't look for VAR_DECLs containing __FUNCTION__ et al.
	* c-semantics.c (prune_unused_decls): Remove.
	(finish_stmt_tree): Don't call prune_unused_decls.
	(genrtl_decl_stmt): Don't prune unused decls here.
cp:
	Lazy __FUNCTION__ generation.
	* cp-tree.def (FUNCTION_NAME): Remove.
	* cp-tree.h (function_name_declared_p): Remove.
	(cp_fname_init): Prototype.
	* decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
	don't call declare_function_name. Call start_fname_decls.
	(cp_make_fname_decl): Adjust parameters. Generate the name. Don't
	clobber the line number.
	(cp_fname_init): New function.
	(start_function): Call start_fname_decls.
	(finish_function): Call finish_fname_decls.
	* lex.c (reswords): Add slots for __FUNCTION__ et al.
	(rid_to_yy): Add mappings for __FUNCTION__ et al.
	* optimize.c (maybe_clone_body): Remove function_name_declared_p.
	* parse.y (VAR_FUNC_NAME): New token.
	(primary): Add VAR_FUNC_NAME.
	* pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
	generation.
	(tsubst, FUNCTION_NAME case): Remove.
	(tsubst_copy, FUNCTION_NAME case): Remove.
	(tsubst_expr, DECL_STMT case): Be careful with a
	DECL_PRETTY_FUNCTION_P.
	(instantiate_decl): Remove function_name_declared_p.
	* semantics.c (begin_compound_statement): Don't call
	declare_function_name here.
	(setup_vtbl_ptr). Don't save & restore function_name_declared_p.
	(finish_translation_unit): Call finish_fname_decls.
	(expand_body): Remove function_name_declared_p.
	* typeck2.c (digest_init): Allow any ERROR_MARK.
testsuite:
	* gcc.dg/c99-func-2.c: Remove xfail.
	* gcc.dg/c99-func-3.c: Remove xfail.
	* gcc.dg/c99-func-4.c: Remove xfail.

From-SVN: r41520
2001-04-24 08:22:06 +00:00
Richard Henderson
52a11cbfcf IA-64 ABI Exception Handling.
From-SVN: r40924
2001-03-28 03:04:51 -08:00
Mark Mitchell
b850de4faa c-common.h (DECL_NUM_STMTS): New macro.
* c-common.h (DECL_NUM_STMTS): New macro.
	* c-decl.c (duplicate_decls): Copy DECL_NUM_STMTS, not
	DECL_FRAME_SIZE.
	(pushdecl): Likewise.
	* c-semantics.c (add_stmt): Update DECL_NUM_STMTS.
	* integrate.c (expand_inline_function): Don't check
	DECL_FRAME_SIZE.
	* print-tree.c (print_node): Don't print it.
	* toplev.c (rest_of_compilation): Don't try to inline when
	flag_no_inline is on.
	* tree.h (DECL_FRAME_SIZE): Remove.
	(tree_decl): Adjust accordingly.

	* Makefile.in (optimize.o): Depend on params.h.
	(duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
	(init_decl_processing): Set flag_no_inline when doing
	inlining-on-trees.
	* optimize.c: Include params.h.
	(struct inline_data): Improve documentation of FNS.  Add
	FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
	(INSNS_PER_STMT): New macro.
	(remap_block): Use CLONING_P.
	(inlinable_function_p): Don't inline big functions.
	(expand_call_inline): Keep track of how much inlining we've done.
	(optimize_function): Set FIRST_INLINED_FN.
	(maybe_clone_body): Set CLONING_P.
	* semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
	tree nodes.
	(genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
	rest_of_compilation.  Clear DECL_RTL for local variables
	afterwards.
	(clear_decl_rtl): New function.

	* com.c (duplicate_decls): Don't copy DECL_FRAME_SIZE.

	* parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.

From-SVN: r40859
2001-03-27 02:17:48 +00:00
Mark Mitchell
92643fea93 Compute DECL_ASSEMBLER_NAME lazily.
* tree.h (DECL_ASSEMBLER_NAME): Compute it lazily.
	(DECL_ASSEMBLER_NAME_SET_P): New macro.
	(SET_DECL_ASSEMBLER_NAME): Likewise.
	(COPY_DECL_ASSEMBLER_NAME): Likewise.
	(set_decl_assembler_name): Declare.
	(lang_set_decl_assembler_name): Likewise.
	* tree.c (lang_set_decl_assembler_name): New variab.e
	(set_decl_assembler_name): New function.
	(init_obstacks): Set lang_set_decl_assembler_name.
	(build_decl): Don't set DECL_ASSEMBLER_NAME.
	* c-decl.c (duplicate_decls): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(builtin_function): Likewise.
	(finish_decl): Likewise.
	* dbxout.c (dbxout_type_methods): Likewise.
	* ggc-common.c (ggc_mark_trees): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* varasm.c (make_decl_rtl): Likewise.

	* class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(add_method): Remove optimization involving comparison of
	DECL_ASSEMBLER_NAME.
	(build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(check_methods): Likewise.
	(build_clone): Likewise.
	(built_vtt): Likewise.
	* cp-tree.h (DECL_NEEDED_P): Likewise.
	* decl.c (pushtag): Likewise.
	(duplicate_decls): Likewise.
	(pushdecl): Likewise.
	(builtin_function): Likewise.
	(build_library_fn_1): Set DECL_LANGUAGE for library functions.
	(build_cp_library_fn): Likewise.
	(maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(grokfndecl): Likewise.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	(start_function): Likewise.
	(cp_missing_return_ok_p): Likewise.
	* decl2.c (grokclassfn): Likewise.
	(check_classfn): Likewise.
	(finish_static_data_member_decl): Likewise.
	(grokfield): Likewise.
	* error.c (GLOBAL_IORD_P): Remove.
	(dump_global_iord): Improve output.
	(dump_decl): Avoid using DECL_ASSEMBLER_NAME.
	* except.c (nothrow_libfn_p): Summarily reject any function not in
	namespace-scope.
	* init.c (build_java_class_ref): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	* mangle.c (mangle_decl_string): Handle extern "C" functions.
	(mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
	* method.c (set_mangled_name_for_decl): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	(make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
	IDENTIFIER_GLOBAL_VALUE for the thunk.
	* pt.c (set_mangled_name_for_template_decl): Remove.
	(check_explicit_specialization): Don't use it.
	(looup_template_class): Don't set DECL_ASSEMBLER_NAME.
	(tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
	* rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(tinfo_base_init): Likewise.
	(create_real_tinfo_var): Likewise.
	* search.c (looup_field_1): Likewise.
	* semantics.c (finish_named_return_value): Likewise.
	* tree.c (init_tree): Set lang_set_decl_assembler_name.

	* com.c (builtin_function): Use SET_DECL_ASSEMBLER_NAME.

	* class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
	(layout_class): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* decl.c (builtin_function): Likewise.
	(give_name_to_locals): Likewise.

From-SVN: r40642
2001-03-19 23:50:04 +00:00
Mark Mitchell
19e7881c81 varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME...
* varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME, not the
	contents of the RTL, to determine the name of the object.

	* tree.h (DECL_RTL): Allocate RTL lazily.
	(SET_DECL_RTL): New macro.
	(DECL_RTL_SET_P): Likewise.
	(COPY_DECL_RTL): Likewise.
	(DECL_RTL_IF_SET): Likewise.
	* varasm.c (make_decl_rtl): Add assertions about the kind of
	declaration we are processing.
	* c-decl.c (duplicate_decls): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	* c-semantics.c (emit_local_var): Likewise.
	* calls.c (expand_call): Likewise.
	* dbxout.c (dbxout_symbol): Likewise.
	* emit-rtl.c (unshare_all_rtl): Likewise.
	(unshare_all_decls): Likewise.
	(reset_used_decls): Likewise.
	* expr.c (store_constructor): Likewise.
	(safe_from_p): Likewise.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(instantiate_decls_1): Likewise.
	(assign_parms): Likewise.
	(expand_function_start): Likewise.
	(expand_function_end): Likewise.
	* ggc-common.c (gcc_mark_trees): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	(copy_decl_for_inlining): Likewise.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.
	(integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* reg-stack.c (stack_result): Likewise.
	* stmt.c (label_rtx): Likewise.
	(expand_return): Likewise.
	(expand_decl): Likewise.
	(expand_decl_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	* toplev.c (check_global_declarations): Likewise.
	(rest_of_decl_compilation): Likewise.
	* tree.c (simple_cst_equal): Likewise.
	* objc/objc-act.c (generate_static_references): Likewise.

	* class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* cp-tree.h (DECL_IN_MEMORY_P): Likewise.
	* decl.c (duplicate_decls): Likewise.
	(builtin_function): Likewise.
	(build_library_fn): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(cp_finish_decl): Likewise.
	* decl2.c (grokfield): Likewise.
	(grok_function_init): Remove #if 0'd code.
	(finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* friend.c (do_friend): Likewise.
	* init.c (get_temp_regvar): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Likewise.
	* semantics.c (genrtl_named_return_value): Likewise.
	(expand_body): Likewise.
	(genrtl_finish_function): Likewise.
	* tree.c (cp_tree_equal): Likewise.

	* com.c (ffecom_member_phase_2): Use COPY_DECL_RTL,
	DECL_RTL_SET_P, etc.
	(duplicate_decls): Likewise.
	(start_decl): Likewise.

	* class.c (build_static_field_ref): Likewise.
	(make_method_value): Likewise.
	(get_dispatch_table): Likewise.

	* decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.

From-SVN: r40482
2001-03-15 02:51:03 +00:00
John David Anglin
dbbbbf3b8d print-rtl.c (print_rtx): Cast enums to int for comparison.
* print-rtl.c (print_rtx): Cast enums to int for comparison.
	* c-decl.c (grokdeclarator): Cast enums to int for comparison and
	shifts.
	* c-format.c (C_STD_VER): Cast to int for comparisons.
	(check_function_format): Cast various enums to int for &.
	(maybe_read_dollar_number): Likewise.
	(check_format_info): Likewise.
	(check_format_info_main): Likewise.
	* expr.c (emit_move_insn_1): Cast enums to unsigned int for comparison.
	(safe_from_p): Likewise.
	* varasm.c (const_hash): Cast enum to int for %.
	* emit-rtl.c (init_emit_once): Use int loop variable to work around
	pcc enum problems with < and ++ operators.
	* regclass.c (init_reg_sets_1): Cast enums for comparison.
	(choose_hard_reg_mode): Use unsigned int to iterate over CCmodes.
	(regclass_init): Change enum class to int to iterate over reg_classes.
	* genrecog.c (merge_trees): Cast enums for comparison.
	* rtl.h (GET_CODE): Cast to enum rtx_code.
	(PUT_CODE): Cast to ENUM_BITFIELD(rtx_code).
	(GET_MODE): Cast to enum machine_mode.
	(PUT_MODE): Cast to ENUM_BITFIELD(machine_mode).
	(GET_NOTE_INSN_NAME): Cast enum to int.
	* tree.h (TREE_CODE): Cast to enum tree_code.
	(TREE_SET_CODE): Cast VALUE to ENUM_BITFIELD(tree_code).
        * timevar.c (timevar_print): Change loop variable id from enum to
	unsigned int.
	* fixinc/fixincl.c (VLEVEL): Cast enums in comparison to unsigned int.
	* config/i386/i386.md: Use PUT_MODE for mode assignment.
	* toplev.c (compile_file): Cast enum DFI to int.
	(decode_d_option): Likewise.

From-SVN: r40193
2001-03-02 21:41:37 +00:00
Jason Merrill
8cf8d8a27b c-decl.c (finish_decl): Set DECL_DEFER_OUTPUT on tentative file-scope definitions.
* c-decl.c (finish_decl): Set DECL_DEFER_OUTPUT on tentative file-scope
        definitions.
        * toplev.c (rest_of_decl_compilation): Check DECL_DEFER_OUTPUT to
        recognize a tentative definition.  Lose obsolete code.

        * toplev.c (wrapup_global_declarations): Don't emit DECL_COMDAT
        variables unless necessary, either.

From-SVN: r40066
2001-02-26 06:11:38 -05:00
Richard Kenner
9b58f73986 c-decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
* c-decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
	* ch/decl.c, f/com.c, java/decl.c: Likewise.

From-SVN: r40010
2001-02-23 15:38:58 -05:00
Jason Merrill
5daf7c0a17 tree.h (DECL_UNINLINABLE): Move from C++ frontend.
* tree.h (DECL_UNINLINABLE): Move from C++ frontend.
        (struct tree_decl): Add uninlinable bitfield.
        * c-decl.c (duplicate_decls): Set it.
        * integrate.c (function_cannot_inline_p): Check it.
        * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
        (DECL_UNINLINABLE): Move to middle-end.

        * dwarf2out.c (add_name_and_src_coords_attributes): Don't add
        DW_AT_MIPS_linkage_name to abstract methods.
        (dwarf2out_abstract_function): Emit class context before calling
        set_decl_abstract_flags.  Don't clear DECL_ABSTRACT.
        (gen_subprogram_die): Remove obsolete code.
        (gen_member_die): Don't include clones in the member list.
        (gen_decl_die): Emit abstract info for clone origin.
        * dwarfout.c (output_type): Don't include clones in the member list.
        * dbxout.c (dbxout_type_methods): Ignore abstract methods.
        * toplev.c (note_deferral_of_defined_inline_function): Don't clear
        DECL_ABSTRACT on a function that already has it set.
        * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
        * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
        * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
        * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
        parms and outer BLOCK.  note_deferral_of_defined_inline_function.

        * dwarf2out.c (gen_formal_types_die): Also accept a FUNCTION_DECL.
        (get_subprogram_die): Pass it in.
        * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
        second parm of op=.

From-SVN: r39945
2001-02-21 09:42:27 -05:00
Jason Merrill
1edf43d63f dwarf2out.c (add_bound_info): Don't crash if SAVE_EXPR_RTL is NULL.
* dwarf2out.c (add_bound_info): Don't crash if SAVE_EXPR_RTL is
        NULL.
        (gen_subprogram_die): Don't abort on seeing a second definition if
        the previous one was abstract.  Don't replace an abstract instance
        in the lookup table.

        * dwarf2out.c (dwarf2out_abstract_function): Rename from
        gen_abstract_function.
        * dwarf2out.h: Declare it.
        * toplev.c (note_outlining_of_inline_function): New fn.
        * toplev.h: Declare it.
        * integrate.c (output_inline_function): Call it.
        * c-decl.c (duplicate_decls): Call it when redefining an extern
        inline.  Don't inline the new defn.

From-SVN: r39763
2001-02-16 08:03:10 -05:00
Joseph Myers
f43b27955c c-decl.c (grokdeclarator): In C99 mode...
* c-decl.c (grokdeclarator): In C99 mode, give the more specific
	"return type defaults" warning for functions with return type
	defaulting to int.
	* c-lang.c (c_init): In C99 mode, enable warnings for implicit
	function declarations by default rather than only when pedantic.

testsuite:
	* gcc.dg/c99-impl-int-1.c: Use stricter error string for implicit
	return type.
	* gcc.dg/cpp/digraphs.c: Declare puts.

From-SVN: r39608
2001-02-12 17:31:42 +00:00
Jakub Jelinek
1ada4cd094 c-decl.c (finish_enum): Revert part of 2000-01-05 change.
* c-decl.c (finish_enum): Revert part of 2000-01-05 change.

	* gcc.dg/20010202-1.c: New test.
	* gcc.dg/991209-1.c: Compile on whole ia32 family, not just i386.

From-SVN: r39527
2001-02-07 23:04:10 +01:00
Joseph Myers
0aca1a4fd3 c-parse.in (structsp): Pedwarn when "enum foo" refers to an incomplete type.
* c-parse.in (structsp): Pedwarn when "enum foo" refers to an
	incomplete type.
	(typename): Call pending_xref_error after parsing typed_typespecs.
	* c-decl.c (lookup_tag): Give error immediately rather than
	leaving it pending if the tag of the wrong type is in the same
	binding level.
	(xref_tag): Don't pedwarn for forward declarations of enum types
	here.
	* gcc.texi (Actual Bugs): Remove entry for misuse of struct, union
	and enum tags.

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

From-SVN: r39372
2001-01-31 10:24:40 +00:00
Neil Booth
e9770d5120 c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type) is not NULL.
* c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type)
        is not NULL.
        * toplev.c (decode_W_option): Update warn_larger_than
        unconditionally for each processed switch.
        * testsuite/gcc.dg/Wlarger-than.c: New test.

From-SVN: r39352
2001-01-30 19:19:40 +00:00
Kaveh R. Ghazi
c913b6f18e configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.
* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.

	* Makefile.in: Remove all dependencies on defaults.h.
	* builtins.c: Don't include defaults.h.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* i386.c: Likewise.
	* frame-ia64.c: Likewise.
	* cppexp.c: Likewise.
	* crtstuff.c: Likewise.
	* dbxout.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* frame-dwarf2.c: Likewise.
	* libgcc2.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* sdbout.c: Likewise.
	* toplev.c: Likewise.
	* tradcif.y: Likewise.
	* tree.c: Likewise.
	* varasm.c: Likewise.

ch:
	* Makefile.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* timing.c: Likewise.

cp:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* call.c: Don't include defaults.h.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

f:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* com.c: Don't include defaults.h.

java:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* expr.c: Likewise.
	* parse.y: Likewise.

From-SVN: r39308
2001-01-28 01:50:22 +00:00
J"orn Rennecke
91239b939c c-decl.c (duplicate_decls): If different_binding_level is nonzero...
* c-decl.c (duplicate_decls): If different_binding_level is nonzero,
	olddecl has argument types and newdecl has none, use the argument
	types from olddecl.

From-SVN: r39254
2001-01-25 02:03:14 +00:00
Richard Kenner
757e6639b9 c-decl.c (start_function): Don't warn if old prototype is builtin that's not in C's namespace.
* c-decl.c (start_function): Don't warn if old prototype is builtin
	that's not in C's namespace.
	* libgcc2.c (_varargs): Update definition of __builtin_saveregs.
	(_bb): Add prototype for ctime.
	* config/alpha/osf.h (TRANSFER_FROM_TRAMPOLINE): Add missing protos.

From-SVN: r38980
2001-01-13 07:34:02 -05:00
Mark Mitchell
6c41818449 output.h (make_function_rtl): Remove prototype.
* output.h (make_function_rtl): Remove prototype.
	(make_decl_rtl): Likewise.
	* varasm.c (make_function_rtl): Remove.
	(make_decl_rtl): Determine top-levelness from DECL_CONTEXT, rather
	than from a third parameter.
	* tree.h (make_decl_rtl): Remove last parameter.
	* c-decl.c (builtin_function): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(start_function): Likewise.
	* except.c (call_get_eh_context): Likewise.
	* expr.c (emit_block_move): Likewise.
	(clear_storage): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* toplev.c (rest_of_decl_compilation): Likewise.
	* objc/objc-act.c (create_builtin_decl): Likewise.
	(synth_module_prologue): Likewise.
	(generate_static_reference): Likewise.
	(build_selector_reference_decl): Likewise.
	(build_class_reference_decl): Likewise.
	(build_objc_string_decl): Likewise.
	(build_protocol_reference): Likewise.

	* class.c (finish_struct_1):  Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	* decl.c (builtin_function): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(start_function): Likewise.
	* decl2.c (finish_anon_union): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_java_class_ref): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	* semantics.c (expand_body): Likewise.

	* com.c (ffecom_init_zero_):  Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(ffecom_lookup_label_): Likewise.
	(builtin_function): Likewise.
	(start_function): Likewise.

	* class.c (build_utf8_ref): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(build_class_ref): Likewise.
	(build_static_field_ref): Likewise.
	(get_dispatch_table): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* constants.c (build_constant_data_ref): Likewise.
	* decl.c (builtin_function): Likewise.
	(create_primitive_vtable): Likewise.
	* expr.c (build_known_method_def): Likewise.
	(build_jni_stub): Likewise.
	(java_lang_expand_expr): Likewise.

From-SVN: r38884
2001-01-10 23:06:30 +00:00
Kaveh R. Ghazi
18f988a06b builtins.def (BUILT_IN_FPRINTF): New entry.
* builtins.def (BUILT_IN_FPRINTF): New entry.

	* c-common.c (c_expand_builtin_fprintf): New function.
	(init_function_format_info): Handle __builtin_fprintf.
	(c_common_nodes_and_builtins): Declare fprintf/__builtin_fprintf.
	(c_expand_builtin): Handle BUILT_IN_FPRINTF.

	* c-decl.c (duplicate_decls): Adjust comment.

	* extend.texi (fprintf): Document new builtin.

testsuite:
	* gcc.c-torture/execute/stdio-opt-3.c: New test.

From-SVN: r38788
2001-01-07 23:15:47 +00:00
Richard Henderson
ffc5c6a984 c-decl.c (finish_struct): Detect flexible array members used in an inappropriate context.
* c-decl.c (finish_struct): Detect flexible array members
        used in an inappropriate context.
        * c-typeck.c (really_start_incremental_init): Special case
        constructor_max_index for zero length arrays.
        (pop_init_level): Allow initialization of flexible array
        members.  Deprecate initialization of zero length arrays.
        Don't issue missing initializer warning for flexible array
        members or zero length arrays.
        (process_init_element): Don't dereference null DECL_SIZE.
        * varasm.c (array_size_for_constructor): Return a HOST_WIDE_INT.
        Don't abort for empty constructors.  Use size_binop
        (output_constructor): Add commentary regarding zero length
        array futures.  Abort if we try to initialize an array of
        unspecified length with a non-empty constructor in the middle
        of a structure.

        * extend.texi (Zero Length): Update and clarify documentation
        on static initialization.

From-SVN: r38705
2001-01-04 21:58:23 -08:00
Joseph Myers
eaa7c03f50 c-common.c (SIZE_TYPE, WCHAR_TYPE): Define.
* c-common.c (SIZE_TYPE, WCHAR_TYPE): Define.
	(flag_short_double, flag_short_wchar): Define.
	(c_common_nodes_and_builtins): Create many tree nodes shared
	between C and C++ here instead of in cp/decl.c and ...
	* c-decl.c (init_decl_processing): ... here.
	(SIZE_TYPE, WCHAR_TYPE): Don't define.
	(flag_short_double, flag_short_wchar): Don't define.
	(record_builtin_type): New function.
	(build_void_list_node): New function.
	* c-common.h (flag_short_double, flag_short_wchar,
	record_builtin_type, build_void_list_node): Declare.

cp:
	* decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
	(record_builtin_type): Make non-static.
	(flag_short_double): Don't declare.
	(init_decl_processing): Remove the creation of many tree nodes now
	in c_common_nodes_and_builtins.
	(build_void_list_node): New function.
	* decl2.c (flag_short_double, flag_short_wchar): Don't define.
	* cp-tree.h (flag_short_wchar): Don't declare.

From-SVN: r38695
2001-01-04 23:53:54 +00:00
Richard Henderson
584ef5fea5 c-decl.c (grokdeclarator): Give zero-length arrays size zero.
* c-decl.c (grokdeclarator): Give zero-length arrays size zero.
        Remove dead code.
        * c-typeck.c (push_init_level): Move checks for flexible array
        members and zero length arrays ...
        (pop_init_level): ... here.  Silently discard empty initializations.
        Remove dead code.
        * varasm.c (output_constructor): Update for sizeof change to
        zero-length arrays.

        * extend.texi (Zero Length): Clarify semantics.

        * gcc.dg/940510-1.c: Update expected error wording.
        * gcc.dg/array-2.c, gcc.dg/array-3.c, gcc.dg/array-4.c: New.

From-SVN: r38678
2001-01-03 17:14:16 -08:00
Richard Kenner
6d1c15cc4c * c-decl.c (start_function): Don't warn on third parameter to main.
From-SVN: r38625
2001-01-02 10:58:16 -05:00
Andreas Jaeger
21c7361e40 c-decl.c (c_decode_option): Remove support of -Wmissing-noreturn.
* c-decl.c (c_decode_option): Remove support of
	-Wmissing-noreturn.

	* toplev.c (documented_lang_options): Remove -Wmissing-noreturn.
	(W_options): Add -Wmissing-noreturn here.

	* flow.c: Define lang_missing_noreturn_ok_p.
	(check_function_return_warnings): Use it.

	* c-common.h: Declare lang_missing_noreturn_ok_p.

	* c-lang.c (c_missing_noreturn_ok_p): New function.
	(lang_init): Set lang_missing_noreturn_ok_p.

	* invoke.texi (Warning Options): Document this.

From-SVN: r38612
2001-01-02 08:00:49 +01:00
Alexandre Oliva
6894017546 c-decl.c (grokdeclarator): Prevent crash in case of overflow in array size.
* c-decl.c (grokdeclarator): Prevent crash in case of overflow in
array size.

From-SVN: r38526
2000-12-29 08:03:56 +00:00
DJ Delorie
54d7f9aa04 c-decl.c (grokdeclarator): preserve previous alignments when rebuilding array types.
* c-decl.c (grokdeclarator): preserve previous alignments when
rebuilding array types.

From-SVN: r38122
2000-12-07 20:10:40 -05:00
Joseph Myers
c907e68489 c-common.c (warn_format_security): New variable.
* c-common.c (warn_format_security): New variable.
	(check_format_info): Warn about non-literal formats with no format
	arguments if either -Wformat-nonliteral or -Wformat-security is
	specified.
	(set_Wformat): Set warn_format_security for settings other than 1.
	* c-common.h (warn_format_security): Declare.
	* c-decl.c (c_decode_option): Decode -Wformat-security and
	-Wno-format-security.
	* invoke.texi: Document -Wformat-security.
	* toplev.c (documented_lang_options): Include -Wformat-security
	and -Wno-format-security.

cp:
	* decl2.c (lang_decode_option): Handle -Wformat-security.

testsuite:
	* format-sec-1.c: New test.

From-SVN: r38106
2000-12-07 07:56:44 +00:00
Bernd Schmidt
0884b60c60 Make alpha build again.
From-SVN: r37950
2000-12-02 10:50:27 +00:00
Joseph Myers
4d80892796 c-common.c (warn_format, [...]): Define.
* c-common.c (warn_format, warn_format_y2k,
	warn_format_extra_args, warn_format_nonliteral): Define.
	(check_format_info): Check warn_format_nonliteral and
	warn_format_extra_args.
	(check_format_info_main): Check warn_format_y2k.
	(set_Wformat): New function.
	* c-common.h (warn_format_y2k, warn_format_extra_args,
	warn_format_nonliteral, set_Wformat): Declare.
	* c-decl.c (warn_format): Remove definition.
	(c_decode_option): Handle -Wformat-nonliteral,
	-Wno-format-extra-args and -Wno-format-y2k, and negated versions.
	Use set_Wformat.
	* invoke.texi: Document these new options and -Wformat=2.
	* toplev.c (documented_lang_options): Add these new options.

cp:
	* decl2.c (warn_format): Remove definition.
	(lang_decode_option): Handle -Wformat-nonliteral,
	-Wno-format-extra-args and -Wno-format-y2k.  Use set_Wformat.

testsuite:
	* gcc.dg/format-no-exargs-1.c, gcc.dg/format-no-y2k-1.c,
	gcc.dg/format-nonlit-1.c, gcc.dg/format-nonlit-2.c: New tests.

From-SVN: r37933
2000-12-01 22:43:33 +00:00
Joseph Myers
5fd8e53691 c-common.c: Include "defaults.h".
* c-common.c: Include "defaults.h".
	(WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Define.
	(c_common_nodes_and_builtins): Create string_type_node,
	const_string_type_node, wint_type_node, intmax_type_node,
	uintmax_type_node, default_function_type, ptrdiff_type_node and
	unsigned_ptrdiff_type_node.
	* c-common.h (identifier_global_value): Declare.
	* c-decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
	(init_decl_processing): Don't create string_type_node,
	const_string_type_node, wint_type_node, intmax_type_node,
	uintmax_type_node, default_function_type, ptrdiff_type_node and
	unsigned_ptrdiff_type_node.
	(identifier_global_value): New function.

cp:
	* decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
	(init_decl_processing): Don't create string_type_node,
	const_string_type_node, wint_type_node, intmax_type_node,
	uintmax_type_node, default_function_type, ptrdiff_type_node and
	unsigned_ptrdiff_type_node.  Adjust position of call to
	c_common_nodes_and_builtins.
	(identifier_global_value): New function.

From-SVN: r37931
2000-12-01 22:25:43 +00:00
Joseph Myers
c7b828331c c-decl.c (grokdeclarator): If pedantic, warn about arrays with incomplete element type.
* c-decl.c (grokdeclarator): If pedantic, warn about arrays with
	incomplete element type.
	(grokparms): Before checking for incomplete parameter type, check
	the type isn't error_mark_node.

testsuite:
	* gcc.dg/c99-array-nonobj-1.c: No longer XFAIL.

From-SVN: r37920
2000-12-01 19:21:44 +00:00
Neil Booth
0eaed3c665 c-decl.c (c_decode_option): Don't handle -lang-objc.
* c-decl.c (c_decode_option): Don't handle -lang-objc.
        * objc/lang-options.h: Remove -lang-objc.
        * objc/lang-specs.h: Don't pass -lang-objc to cc1obj.
        * objc/objc-act.c (lang_init_options): Set c_language.

From-SVN: r37859
2000-11-29 22:19:28 +00:00
Neil Booth
eaf299c6ca c-common.h: Remove flag_digraphs.
* c-common.h: Remove flag_digraphs.
        * c-decl.c: Remove flag_digraphs.
        (c_decode_option): Don't set it.
        * c-lex.c (init_c_lex): Don't do anything for digraphs.

From-SVN: r37834
2000-11-28 23:07:29 +00:00
Neil Booth
cf44ea5231 c-lex.h (parse_in): Change parse_in to a cpp_reader *.
* c-lex.h (parse_in): Change parse_in to a cpp_reader *.
	* c-decl.c (c_decode_option): Update to match.
	* c-lex.c (init_c_lex, yyparse): Update to match.
	* c-lang.c (lang_init_options): Use cpp_create_reader.
	* cppinit.c (cpp_init): Rename initialize.
	(cpp_reader_init): Rename cpp_create_reader.  Create the
	reader.  Initialize cpplib if appropriate.
	* cpplib.h (cpp_create_reader) New prototype.
	(cpp_init, cpp_reader_init): Delete prototypes.
	* cppmain.c (general_init, setup_callbacks): New functions.
	(main): Use them.
	* fix-header.c (scan_in): Change type to cpp_reader *.
	(read_scan_file): Update for new cpplib interface and scan_in type.

	* cp/decl.c (parse_in): Change to cpp_reader *.
	(lang_decode_option): Update.
	* cp/lex.c (lang_init_options): Use new cpplib interface.
	(init_cp_pragma, finish_parse, handle_pragma_implementation): Update.
	* cp/spew.c (read_token): Update.
	* objc/objc-act.c (lang_init_options): Update new cpplib interface.

From-SVN: r37826
2000-11-28 21:13:35 +00:00
Neil Booth
056487e747 Makefile.in: Remove MAYBE_CPPLIB and maybe_cpplib.
* Makefile.in: Remove MAYBE_CPPLIB and maybe_cpplib.
        * c-decl.c: Remove parse_in declaration.
        * c-lang.c: Similarly.
        * c-lex.c: Similarly.
        * c-parse.in: Similarly.
        * c-pragma.c: Similarly.
        * configure.in: Similarly.
        * cp/Make-lang.in: Similarly.
        * cp/spew.c: Similarly.
        * cp/decl2.c: Remove check for lang-c++ option.
        * cp/lang-specs.h: Remove -lang-c++ from cc1plus command line.
        * cp/lex.c (lang_init_options): With cpp_reader_init, default to C++.
        * c-lex.h: Add declaration of parse_in.
        * cppinit.c: Call set_lang after allocating pfile->pending.
        * configure: Regenerate.

From-SVN: r37754
2000-11-26 10:48:50 +00:00
Richard Henderson
3645c4dc1c c-common.h (DECL_C_HARD_REGISTER): New.
* c-common.h (DECL_C_HARD_REGISTER): New.
        * c-decl.c (finish_decl): Set it for asm register variables.
        * c-semantics.c (emit_local_var): Test it when instantiating one.

From-SVN: r37748
2000-11-25 16:40:46 -08:00
Richard Henderson
a17a58505d c-decl.c (c_expand_body): Use DECL_SOURCE_LINE rather than lineno for the start of the function.
* c-decl.c (c_expand_body): Use DECL_SOURCE_LINE rather than
        lineno for the start of the function.

From-SVN: r37747
2000-11-25 16:16:18 -08:00
Neil Booth
a32f2771a5 c-common.c: Remove USE_CPPLIB conditional inclusions.
* c-common.c: Remove USE_CPPLIB conditional inclusions.
        * c-common.h: Similarly.
        * c-decl.c: Similarly.
        * c-lang.c: Similarly.
        * c-lex.c: Similarly.
        * c-parse.in: Similarly.
        * c-pragma.c: Similarly.
        * c-pragma.h: Similarly.
        * gcc.c: Similarly.
        * toplev.c: Similarly.
        * cp/cp-tree.h: Similarly.
        * cp/decl2.c: Similarly.
        * cp/lang-specs.h: Similarly.
        * cp/lex.c: Similarly.
        * cp/lex.h: Similarly.
        * cp/spew.c: Similarly.
        * java/lang-options.h: Similarly.
        * objc/lang-specs.h: Similarly.
        * objc/objc-act.c: Similarly.

        * configure.in: Remove configure option.
        * config.in: Regenerate.
        * configure: Regenerate.

From-SVN: r37742
2000-11-25 19:28:44 +00:00
Richard Henderson
a25f12118f c-decl.c (grokdeclarator): Support flexible array members.
* c-decl.c (grokdeclarator): Support flexible array members.
        Use open-ended ranges for these and zero-length arrays.
        * c-typeck.c (push_init_level): Validate the context of
        initialization of a zero-length array.
        * tree.c (int_fits_type_p): Be prepared for missing bounds.
        * varasm.c (array_size_for_constructor): New.
        (output_constructor): Use it for arrays of unspecified length.
        * extend.texi (Zero Length): Mention C99 flexible array members.
        Document initialization in a top-level struct as valid.

From-SVN: r37576
2000-11-19 15:40:37 -08:00
Richard Henderson
967e627adc c-decl.c (grokdeclarator): Special case the creation of an index for a zero-length array.
* c-decl.c (grokdeclarator): Special case the creation of an
        index for a zero-length array.
        * tree.c (build_index_type): Revert Oct 20 change.

From-SVN: r37558
2000-11-19 00:36:18 -08:00
Joseph Myers
77c4d6c06a c-decl.c (check_for_loop_decls): New function.
* c-decl.c (check_for_loop_decls): New function.
	* c-parse.in (for_init_stmt): New.
	(select_or_iter_stmt): Use for_init_stmt.
	* c-tree.h (check_for_loop_decls): New declaration.

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

From-SVN: r37549
2000-11-18 23:18:36 +00:00
Zack Weinberg
520a57c81c stringpool.c: New file.
* stringpool.c: New file.
	* ggc-common.c (ggc_mark_string_ptr, ggc_add_string_root): Delete.
	(ggc_alloc_string): Now in stringpool.o.
	* ggc-page.c, ggc-simple.c: Do not define or allocate empty_string.
	* ggc.h: Delete prototype of ggc_add_string_root.  #define
	ggc_add_string_root and ggc_mark_string to nothing.  Prototype
	init_stringpool and stringpool_statistics.
	(ggc_alloc_string): Returns a const char *.
	* tree.c (hash_table, do_identifier_warnings): Delete.
	(init_obstacks): Don't initialize the identifier hash table.
	(get_identifier, maybe_get_identifier, start_identifier_warnings,
	set_identifier_size): Now in stringpool.c.
	* tree.h (struct tree_string): Constify pointer field.
	(approx_sqrt): Prototype.

	* Makefile.in (stringpool.o): Add rule, mention in OBJS.

	* toplev.c (approx_sqrt): New function.
	(compile_file): Call stringpool_statistics if mem_report is on.
	(main): Call init_stringpool.

	* builtins.c (c_strlen), c-decl.c (finish_decl), c-lex.c
	(process_directive), c-typeck.c (constructor_asmspec, struct
	initializer_stack, start_init), except.c (create_rethrow_ref),
	stmt.c (digit_strings), toplev.c (decode_f_option), tree.c
	(built_in_filename), varasm,c (in_named_name,
	assemble_static_space, struct constant_descriptor, struct
	deferred_string, struct pool_constant, force_const_mem),
	i386.c (pic_label_name, global_offset_table_name), rs6000.c
	(rs6000_emit_prologue, rs6000_emit_epilogue) : Constify a char *.

	* c-common.c (combine_strings): Combine strings in scratch
	buffer, then pass to build_string.
	* optabs.c (init_libfuncs), profile.c (init_edge_profiler,
	output_func_start_profiler), stmt.c (init_stmt), alpha.c
	(alpha_need_linkage), arm.c (arm_encode_call_attribute),
	i386.c (load_pic_register), ia64.c (ia64_encode_section_info),
	rs6000.c (rs6000_encode_section_info): Create string in
	scratch buffer, then pass to ggc_alloc_string.

	* stmt.c (expand_asm_operands): If we must adjust the
	constraint strings, do so by creating a new one, not by
	modifying the old one in place.  Constify some char *s.
	* config/pa/pa.c (hppa_encode_label): Drop unnecessary second
	argument.  Create string in scratch buffer, then pass to
	ggc_alloc_string.
	* config/pa/pa-protos.h: Update prototype.
	* config/pa/elf.h, config/pa/pa.h, config/pa/som.h:
	hppa_encode_label takes only one argument.

	* c-parse.in (if_prefix): Find the filename and line number at
	$-2 and $-1 respectively.
	* diagnostic.c (error_recursion): Add missing newline, use
	fputs, translate string.

cp:
	* lex.c (struct impl_files, internal_filename): Constify a char *.
java:
	* jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
	Create string in scratch buffer, then pass to build_string.

From-SVN: r37514
2000-11-17 06:05:31 +00:00