Commit Graph

998 Commits

Author SHA1 Message Date
Richard Henderson
48cc8d3b41 For real this time...
PR middle-end/18008
        * c-decl.c (finish_struct): Set DECL_MODE after resetting a
        field's type.
        * expr.c (store_field): Strip conversions to odd-bit-sized types
        if the destination field width matches.

From-SVN: r94294
2005-01-26 16:07:41 -08:00
Richard Henderson
eec6bb06c6 Revert last change.
From-SVN: r94291
2005-01-26 15:21:45 -08:00
Richard Henderson
78ef1e3d9f re PR middle-end/18008 (Duplicate mask on bitfield insertion)
PR middle-end/18008
        * c-decl.c (finish_struct): Set DECL_MODE after resetting a
        field's type.
        * expmed.c (store_fixed_bit_field): Create a paradoxical subreg
        if we don't need the bits above those present in the current mode.
        * expr.c (store_field): Strip conversions to odd-bit-sized types
        if the destination field width matches.

From-SVN: r94290
2005-01-26 15:18:14 -08:00
Andrew Pinski
f8f5c4b3aa re PR c/19152 (IMA and external inline don't get along)
2005-01-04  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c/19152
        * c-decl.c (diagnose_mismatched_decls): Accept "extern inline" declared
        after the full declaration if the are in two different TUs.

From-SVN: r92918
2005-01-04 17:41:36 -08:00
Richard Henderson
bedb9fc04b re PR c/19031 (#pragma weak handling changes in 4.0.0)
PR c/19031
        * c-decl.c (pop_file_scope): Call maybe_apply_pending_pragma_weaks.
        * c-lang.c (finish_file): Don't do it here.
        * objc/objc-act.c (objc_finish_file): Likewise.

        * cgraph.c (decl_assembler_name_equal): New.
        (cgraph_node_for_asm, cgraph_varpool_node_for_asm): New.
        (cgraph_varpool_node): Actually link up cgraph_varpool_nodes.
        * cgraph.h (struct cgraph_varpool_node): Add next.
        (cgraph_node_for_asm, cgraph_varpool_node_for_asm): Declare.
        * varasm.c (assemble_alias): Mark the target as needed.

From-SVN: r92803
2005-01-01 23:52:31 -08:00
Steven Bosscher
43e05e45bc re PR middle-end/17544 (incorrect -Wunreachable-code warning for mains with a return statement)
* emit-rtl.c (add_insn_before): Fix comment typo.

	PR middle-end/17544
	* c-decl.c (finish_function): If compiling C99, annotate the
	compiler generated return with the current file name and line 0.
	* tree-cfg.c (remove_useless_stmts_warn_notreached): Only warn if
	the source line is greater than 0.
	(remove_bb): Likewise.

cp/
	PR middle-end/17544
	* decl.c (finish_function): Fix comment.  Annotate the compiler
	generated return with the current file name and line 0.

testsuite/
	* gcc.dg/20041231-1.C: New test.
	* g++.dg/warn/Wunreachable-code-1.C: New test.

From-SVN: r92784
2005-01-01 16:15:23 +00:00
Richard Henderson
78e0d62b95 re PR middle-end/17799 (Non-optimizing compile loses 'this')
PR middle-end/17799
        * function.c (use_register_for_decl): Check DECL_IGNORED_P instead
        of DECL_ARTIFICIAL.
        (assign_parms_augmented_arg_list): Set DECL_IGNORED_P.
        * c-decl.c (build_compound_literal): Likewise.
        * dwarf2asm.c (dw2_force_const_mem): Likewise.
        * gimplify.c (create_artificial_label): Likewise.
        * tree-inline.c (expand_call_inline): Likewise.
        * var-tracking.c (vt_initialize): Likewise.
        * tree-outof-ssa.c (create_temp): Copy DECL_IGNORED_P.
cp/
        * call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P.
        * class.c (build_vtable): Don't conditionallize setting it
        based on DWARF2_DEBUG.
        (layout_class_type): Set DECL_IGNORED_P.
        * decl2.c (get_guard): Likewise.
        * rtti.c (get_tinfo_decl, build_lang_decl): Likewise.
        * tree.c (build_local_temp): Likewise.

From-SVN: r92781
2004-12-31 17:43:12 -08:00
James A. Morrison
ebef4d3044 re PR c/18963 (static and nested declarations cause an ice)
2004-12-21  James A. Morrison  <phython@gcc.gnu.org>

       PR c/18963
       * c-decl.c (pushdecl): Remove block trying to merge static function
       declarations at block scope to file scope declarations.

testsuite:
        PR c/18963
        * gcc.dg/pr18963-1.c: New test.

From-SVN: r92460
2004-12-21 17:07:06 +00:00
James A. Morrison
6f17bbcf05 re PR c/18596 (ICE in make_decl_rtl)
2004-12-19  James A. Morrison  <phython@gcc.gnu.org>

       PR c/18596
       * c-parse.in (initdcl): Don't process a declaration if start_decl fails.
       (notype_initdcl):  Don't process a declaration if start_decl fails.
       * c-decl.c (start_decl): Fail if grokdeclarator fails.
       (grokdeclarator): Fail if a function definition has an invalid storage
       class.
       * c-typeck.c (start_init): Treat error_mark_node the same as 0.

testsuite:
        PR c/18596
        * gcc.dg/funcdef-storage-1.c (foo): Remove.
        * gcc.dg/pr18596-1.c: Use dg-error.
        (dg-options): Use -fno-unit-at-a-time.
        * gcc.dg/pr18596-2.c: New test.
        * gcc.dg/pr18596-3.c: New test.

From-SVN: r92459
2004-12-21 17:01:08 +00:00
Matt Austern
b482789cca re PR c++/19044 (Alternate asm name for atan ignored when calling __builtin_atan)
PR c++/19044

	* c-common.c (set_builtin_user_assembler_name): New.
	* c-common.h (set_builtin_user_assembler_name): Declare.
	* c-decl.c (finish_decl): Use set_builtin_user_assembler_name

	* decl.c (make_rtl_for_nonlocal_decl): Use set_builtin_user_assembler_name

	* g++.dg/ext/builtin6.C: New

From-SVN: r92428
2004-12-20 20:11:41 +00:00
Richard Henderson
4744afba0f re PR middle-end/16417 (crappy code (gcc.c-torture/compile/20020210-1.c) in arguments causes ICE)
PR middle-end/16417
        * c-decl.c (store_parm_decls): Clarify get_pending_sizes insertion
        comment.
        * c-objc-common.c (c_cannot_inline_tree_fn): Remove pending sizes
        checks.
        * c-tree.h (struct lang_decl): Remove pending_sizes.
        * function.c: Include tree-gimple.h
        (assign_parm_setup_reg): Remove callee-copies code.
        (gimplify_parm_type, gimplify_parameters): New functions.
        (expand_pending_sizes): Remove.
        (expand_function_start): Don't call it.
        * gimplify.c (gimplify_expr): Examine DECL_VALUE_EXPR for PARM_DECL.
        (gimplify_body): Add do_parms argument.  Use gimplify_parameters.
        (gimplify_function_tree): Setup cfun.  Update gimplify_body call.
        * tree-gimple.h (gimplify_body): Update decl.
        * tree-inline.c (initialize_inlined_parameters): Update gimplify_body
        call.
        * tree.h (gimplify_parameters): Declare.
        * Makefile.in (function.o): Depend on TREE_GIMPLE_H.

From-SVN: r92373
2004-12-18 20:42:14 -08:00
Richard Henderson
ca6af4f857 c-decl.c (finish_struct): Add DECL_EXPR for variable sized structures seen inside functions.
* c-decl.c (finish_struct): Add DECL_EXPR for variable sized
        structures seen inside functions.

From-SVN: r92371
2004-12-18 20:07:54 -08:00
Richard Henderson
8b0b9aefd2 c-decl.c (grokdeclarator): Save variable array size before subtracting 1, rather than after.
* c-decl.c (grokdeclarator): Save variable array size before
        subtracting 1, rather than after.

From-SVN: r92370
2004-12-18 19:51:36 -08:00
Dale Johannesen
128691426d c-decl.c (diagnose_mismatched_decls): Accept mismatched function types: void with previous implicit int.
2004-12-17  Dale Johannesen  <dalej@apple.com>

	* c-decl.c (diagnose_mismatched_decls):  Accept mismatched
	function types: void with previous implicit int.

From-SVN: r92329
2004-12-17 20:05:34 +00:00
James A. Morrison
1ac0ac8b90 re PR c/18596 (ICE in make_decl_rtl)
2004-11-26  James A. Morrison  <phython@gcc.gnu.org>

        PR middle-end/18596
        * c-decl.c (grokdeclarator): Reset DECL_INTIAL to error_mark_node
        on errors.

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

From-SVN: r91504
2004-11-30 00:32:34 +00:00
Joseph Myers
72c4e4db03 c-decl.c (push_scope): Remove "\n" from end of diagnostic for too many nested scopes.
* c-decl.c (push_scope): Remove "\n" from end of diagnostic for
	too many nested scopes.

From-SVN: r90936
2004-11-19 19:54:39 +00:00
Joseph Myers
d134f39eeb re PR c/18498 (gcc allows non-integral bitfield types)
PR c/18498
	* c-decl.c (grokdeclarator): Call check_bitfield_type_and_width
	after processing the declarator.

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

From-SVN: r90696
2004-11-15 22:10:16 +00:00
Joseph Myers
40b97a2e29 builtins.c, [...]: Say "argument" instead of "arg" in diagnostics.
* builtins.c, c-common.c, c-decl.c, c-format.c: Say "argument"
	instead of "arg" in diagnostics.

testsuite:
	* gcc.dg/builtin-prefetch-1.c: Update expected diagnostic.

From-SVN: r90338
2004-11-09 10:20:12 +00:00
Joseph Myers
9e637a2679 builtins.c, [...]: Avoid "`" as left quote, using "'" or %q, %< and %> as appropriate.
* builtins.c, c-common.c, c-decl.c, c-format.c, c-format.h,
	c-parse.in, c-pch.c, c-pragma.c, collect2.c, final.c, gcc.c,
	gcov.c, opts.c, pretty-print.h, protoize.c, reg-stack.c, rtl.c,
	tlink.c, config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
	config/avr/avr.c, config/c4x/c4x.c, config/darwin.c,
	config/frv/frv.c, config/h8300/h8300.c, config/i386/i386.c,
	config/i386/winnt.c, config/ia64/ia64.c, config/ip2k/ip2k.c,
	config/iq2000/iq2000.c, config/m32r/m32r.c,
	config/m68hc11/m68hc11.c, config/m68k/m68k.c, config/m68k/m68k.h,
	config/mcore/mcore.c, config/mips/mips.c, config/mmix/mmix.c,
	config/ns32k/ns32k.c, config/rs6000/host-darwin.c,
	config/rs6000/rs6000.c, config/s390/s390.c, config/sh/sh.c,
	config/sh/symbian.c, config/stormy16/stormy16.c,
	config/v850/v850.c: Avoid "`" as left quote, using "'" or %q, %<
	and %> as appropriate.  Use %' as apostrophe in diagnostics where
	applicable.  Use %< and %> in place of '' quotes where applicable.
	Use %qs in place of %<%s%>.  Consistently quote __builtin function
	names.

ada:
	* misc.c (gnat_handle_option): Use %< and %> for quoting in
	warning message.

cp:
	* call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
	pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
	quoting in diagnostics.
	* parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
	quoting in printf format.
	* decl.c (duplicate_decls, start_decl): Use %qD instead of
	unquoted %D.

objc:
	* objc-act.c: Use %q, %< and %> for quoting in diagnostics.

testsuite:
	* gcc.dg/builtin-prefetch-1.c: Adjust expected messages.

From-SVN: r90337
2004-11-09 10:13:30 +00:00
Joseph Myers
cc0b9d525c c-decl.c (finish_struct): Use complete sentences for diagnostic for structures or unions with no members...
* c-decl.c (finish_struct): Use complete sentences for diagnostic
	for structures or unions with no members or named members.

From-SVN: r90217
2004-11-07 00:33:59 +00:00
Joseph Myers
ee0602299c re PR c/18239 (ICE in get_parm_info with werid attribute)
PR c/18239
	* c-decl.c (get_parm_info): Allow FUNCTION_DECLs to appear amongst
	parameter declarations.

testsuite:
	* gcc.dg/parm-impl-decl-1.c, gcc.dg/parm-impl-decl-2.c: New tests.

From-SVN: r89956
2004-11-01 19:49:55 +00:00
Joseph Myers
46097c7639 re PR c/16666 (dremf type conflict)
PR c/16666
	* c-decl.c (start_function): Don't check for DECL_BUILT_IN when
	determining whether to copy parameter types from a previous
	prototype declaration.

testsuite:
	* gcc.dg/dremf-type-compat-1.c, gcc.dg/dremf-type-compat-2.c,
	gcc.dg/dremf-type-compat-3.c, gcc.dg/dremf-type-compat-4.c,
	gcc.dg/old-style-prom-1.c, gcc.dg/old-style-prom-2.c,
	gcc.dg/old-style-prom-3.c: New tests.

From-SVN: r89883
2004-10-30 09:50:31 +01:00
Andrew Pinski
4c7c0c70e3 re PR middle-end/17407 (ICE in int_mode_for_mode)
2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/17407
        * c-decl.c (grokdeclarator) <case cdk_array>: Remove the call
        layout_type as it is already done by build_array_type.
        * tree.c (build_array_type): Layout the type even

2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c++/18121
        * decl.c (grokdeclarator) <case cdk_array>: Remove the call
        layout_type as it is already done by create_array_type_for_decl.

2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/17407
        * gcc.c-torture/compile/pr17407.c: New test.

        PR c++/18121
        * g++.dg/template/array8.C: New test.

From-SVN: r89533
2004-10-25 06:27:32 -07:00
Andrew Pinski
943db34743 re PR objc/17923 (const-str-[34].m fails on the mainline (next runtime))
2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

        PR objc/17923
        * tree.c (staticp): A CONST_DECL has static storage if either
        TREE_STATIC or DECL_EXTERNAL is set.
        * c-decl.c (pushdecl_top_level): Accept CONST_DECLs which can
        have null names.

2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

        PR objc/17923
        * objc-act.c (objc_build_string_object): Create a CONST_DECL
        for the NeXT runtime case.

2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

        PR objc/17923
        * objc.dg/const-str-7.m: New test.

From-SVN: r89384
2004-10-21 09:29:58 -07:00
Richard Henderson
559f2da552 re PR c/17023 (ICE with nested functions in parameter declaration)
PR c/17023
        * c-decl.c (store_parm_decls_oldstyle): Care for parameter type
        as error_mark_node.
        * c-parse.in (compstmt_primary_start): Check cur_stmt_list non-null
        instaed of current_function_decl non-null.

From-SVN: r89063
2004-10-14 16:20:58 -07:00
Joseph Myers
81da229b08 c-tree.h (enum c_typespec_kind, [...]): New.
* c-tree.h (enum c_typespec_kind, struct c_typespec,
	parser_xref_tag): New.
	(struct c_declspecs): Add tag_defined_p.  Adjust definition of
	typedef_p.
	(declspecs_add_type): Adjust prototypes.
	* c-parse.in (%union): Add tstype.
	(typespec_nonattr, typespec_attr, typespec_reserved_nonattr,
	typespec_reserved_attr, typespec_nonreserved_nonattr,
	structsp_attr, structsp_nonattr): Change to tstype.  Update
	actions.
	* c-decl.c (build_null_declspecs): Initialize tag_defined_p.
	(declspecs_add_type): Update to take struct c_typespec argument.
	Set tag_defined_p and typedef_p as appropriate.
	(xref_tag): Rename to parser_xref_tag and replace by wrapper.
	Update to return struct c_typespec.
	(shadow_tag_warned): Don't let empty declarations with qualifiers
	or storage class specifiers redeclare a tag if a previous
	declaration is visible.

testsuite:
	* gcc.dg/c99-tag-3.c, gcc.dg/declspec-14.c: New tests.

From-SVN: r89021
2004-10-14 01:34:01 +01:00
Frank Ch. Eigler
ccab73c3b7 toplev.c (compile_file): Call mudflap_finish_file from here ...
2004-10-13  Frank Ch. Eigler  <fche@redhat.com>

	* toplev.c (compile_file): Call mudflap_finish_file from here ...
	* c-decl.c (c_write_global_declarations): ... instead of here ...
	* cp/decl.c (cp_finish_file): ... and here.
	* tree-mudflap.c (mudflap_enqueue_decl): Reword a warning message.

From-SVN: r88995
2004-10-13 18:18:18 +00:00
Joseph Myers
bba5733fee re PR c/17881 (Incomplete type warning is issued even for prototypes)
PR c/17881
	* c-decl.c (grokparms): Don't warn for parameters of incomplete
	type in declarations that are not definitions except for the case
	of parameters of void type.

testsuite:
	* parm-incomplete-1.c: New test.

From-SVN: r88850
2004-10-10 20:20:35 +01:00
Joseph Myers
216a5f1b3f re PR c/17189 (bogus warning for struct Foo { int; };)
PR c/17189
	* c-decl.c (grokfield): Make diagnostic for bad cases of unnamed
	fields a pedwarn.  Pedwarn here for unnamed structs/unions if
	pedantic.
	* c-parse.in (component_decl): Don't pedwarn here for unnamed
	fields.

testsuite:
	* gcc.dg/anon-struct-5.c: New test.

From-SVN: r88834
2004-10-10 01:47:20 +01:00
Joseph Myers
7fdc3e0952 c-decl.c (declspecs_add_type): Don't pedwarn for _Complex in system headers.
* c-decl.c (declspecs_add_type): Don't pedwarn for _Complex in
	system headers.

testsuite:
	* gcc.dg/complex-2.c, gcc.dg/complex-2.h: New test.

From-SVN: r88571
2004-10-05 20:58:39 +01:00
Joseph Myers
1b36c81835 c-decl.c (pushdecl): When an extern declaration at block scope refers to a visible entity with...
* c-decl.c (pushdecl): When an extern declaration at block scope
	refers to a visible entity with internal linkage, use the old DECL
	rather than the new one.

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

From-SVN: r88570
2004-10-05 20:54:26 +01:00
Andrew Pinski
2912815478 PR c/17178, PR c/17820
2004-10-03  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c/17178, PR c/17820
        * c-decl.c (pop_scope): Do not warn about unused static
        variables as they warned in the middle-end.

2004-10-03  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c/17178
        * gcc.dg/unused-4.c: Adjust to be correct.

        PR c/17820
        * gcc.dg/unused-7.c: New test.

From-SVN: r88467
2004-10-03 17:10:07 -07:00
Joseph Myers
3f75a25471 c-aux-info.c, [...]: Follow code formatting conventions.
* c-aux-info.c, c-common.c, c-common.h, c-cppbuiltin.c, c-decl.c,
	c-format.c, c-incpath.c, c-lex.c, c-objc-common.c, c-opts.c,
	c-parse.in, c-pch.c, c-ppoutput.c, c-pragma.c, c-typeck.c: Follow
	code formatting conventions.

From-SVN: r88462
2004-10-03 21:53:05 +01:00
Jan Hubicka
0f0377f6dd c-decl.c (c_expand_body): Update call tree_rest_of_compilation.
* c-decl.c (c_expand_body): Update call tree_rest_of_compilation.
	* cgraphunit.c (cgraph_build_static_cdtor): Likewise.
	* toplev.h (tree_rest_of_compilation): Update prototype.
	* tree-optimize.c (tree_rest_of_compilation):  Kill nested_p argument.

	* misc.c (gnat_expand_body): Update call of tree_rest_of_compilation.

	* semantics.c (expand_body): Update call of tree_rest_of_compilation.

	* f95-lang.c (gfc_expand_function): Update call of
	tree_rest_of_compilation.
	* trans-decl.c (gfc_generate_constructors): Likewise.

	* java.c (java_expand_body): Update call of tree_rest_of_compilation.

	* treetree.c (treeland_expand_function): Update call of
	tree_rest_of_compilation.

From-SVN: r88396
2004-10-01 15:11:25 +00:00
Fariborz Jahanian
2587f86519 FIxed an IMA bug showed up in parse and gzip.
OKed by Richard Henderson.

From-SVN: r88312
2004-09-30 00:09:42 +00:00
Joseph Myers
302a2cc5c6 re PR c/7425 (deprecated attribute doesn't merge with multiple declarations)
PR c/7425
	* c-decl.c (merge_decls): Merge TREE_DEPRECATED.

cp:
	* decl.c (duplicate_decls): Merge TREE_DEPRECATED.

testsuite:
	* gcc.dg/deprecated-3.c, g++.dg/warn/deprecated-2.C: New tests.

From-SVN: r88303
2004-09-29 21:27:26 +01:00
Joseph Myers
ef7878226a re PR c/16409 (ICE in size_binop, at fold-const.c)
PR c/16409
	* c-decl.c (start_decl): Check for initializing incomplete array
	of VLAs.
	(build_compound_literal): Check for TYPE being error_mark_node.
	* c-parse.in (primary): Check for VLA compound literals.

testsuite:
	* gcc.dg/vla-init-2.c, gcc.dg/vla-init-3.c, gcc.dg/vla-init-4.c,
	gcc.dg/vla-init-5.c: New tests.

From-SVN: r88248
2004-09-28 20:35:26 +01:00
Joseph Myers
085e33aa0a re PR c/17188 (struct Foo { } redefinition)
PR c/17188
	* c-decl.c (diagnose_mismatched_decls): Check for duplicate
	declarations of enumerators.
	(start_struct): Check TYPE_SIZE rather than TYPE_FIELDS to check
	for redefinition.  Check for nested redefinition.
	(finish_struct): Don't check for nested redefinition.
	(start_enum): Check for nested redefinition.

testsuite:
	* gcc.dg/nested-redef-1.c, gcc.dg/pr17188-1.c: New tests.
	* gcc.dg/decl-3.c: Adjust expected message.

From-SVN: r88063
2004-09-24 18:22:20 +01:00
Mark Mitchell
1ae57298f9 c-decl.c (implicitly_declare): Call maybe_apply_renaming_pragma.
* c-decl.c (implicitly_declare): Call maybe_apply_renaming_pragma.
	(finish_decl): Likewise.

From-SVN: r87840
2004-09-22 02:24:06 +00:00
Jan Hubicka
1a94c545f0 cgraph.c (cgraph_unnest_node): New function.
* cgraph.c (cgraph_unnest_node): New function.
	(c_finalize): Rename to ....
	(c_warn_unused_result_recursivly): ... this one; do only the warning
	(finish_function): Finalize the toplevel function; do not lower nested tree.
	* cgraph.h (cgraph_unnest_node): Declare.
	* cgraphunit.c (decide_is_function_needed): Do not use cgraph
	nestedness datastructure.
	* cse.c (cse_insn): Do not cprop nonlocal LABEL_REFs.
	* reload1.c (set_label_offsets): Fix call of set_label_offsets.
	* tree-nested.c (finlize_nesting_tree_1):  Use un-nesting code.

From-SVN: r87771
2004-09-20 20:41:20 +00:00
Joseph Myers
98c3a78277 c-tree.h (enum c_typespec_keyword): New.
* c-tree.h (enum c_typespec_keyword): New.
	(struct c_declspecs): Adjust description of "type".  Remove
	specbits, explicit_int_p and explicit_char_p.  Rename
	typedef_signed_p to explicit_signed_p.  Add default_int_p, long_p,
	short_p, signed_p, unsigned_p and complex_p.
	(finish_declspecs): New.
	* c-parse.in (datadef, datadecl, setspecs, decl, component_decl,
	typename): Call finish_declspecs.
	* c-decl.c (finish_declspecs): New.
	(declspecs_add_type): Check for combinations which cannot occur in
	valid specifier lists.  Update comments.
	(shadow_tag_warned): Remove checks done in finish_declspecs.
	Don't report useless type name if type defaulted to int.
	(grokdeclarator): Remove checks and actions done in
	finish_declspecs.  Don't allow for type being NULL.  Update for
	datastructures changes.  Initialize decl_attr.
	(build_null_declspecs, quals_from_declspecs): Update for
	datastructures changes.

testsuite:
	* gcc.dg/declspec-4.c, gcc.dg/declspec-5.c, gcc.dg/declspec-6.c:
	Update expected messages.
	* gcc.dg/declspec-13.c: New test.

From-SVN: r87660
2004-09-17 19:18:05 +01:00
Kazu Hirata
b01d837fa2 basic-block.h, [...]: Fix comment typos.
* basic-block.h, c-decl.c, c-parse.in, cgraphunit.c, ddg.c,
	gimplify.c, lambda-code.c, optabs.c, predict.c,
	tree-scalar-evolution.c, tree-sra.c, tree-ssa-loop-ch.c,
	tree-ssa.c, vec.h: Fix comment typos.  Follow spelling
	conventions.

From-SVN: r87637
2004-09-17 09:14:12 +00:00
Joseph Myers
3b53cddc38 c-tree.h (struct c_declspecs): Add const_p, volatile_p and restrict_p.
* c-tree.h (struct c_declspecs): Add const_p, volatile_p and
	restrict_p.
	(struct c_declarator): Change u.array.quals and pointer_quals to
	int.  Add u.array.attrs.
	(quals_from_declspecs): New.
	* c-decl.c (quals_from_declspecs): New.
	(shadow_tag_warned): Give more specific message for useless type
	qualifiers.
	(build_array_declarator, set_array_declarator_inner,
	grokdeclarator, make_pointer_declarator, build_null_declspecs,
	declspecs_add_qual): Update for changed structures.

testsuite:
	* gcc.dg/declspec-12.c: New test.

From-SVN: r87500
2004-09-14 19:59:38 +01:00
Dale Johannesen
c1bbfd3cf8 Fix PR 17408 and PR 17409.
From-SVN: r87468
2004-09-14 00:35:02 +00:00
Joseph Myers
61f4f1cc3d c-decl.c (grokdeclarator): Correct comments about where storage class specifiers are rejected by grammar...
* c-decl.c (grokdeclarator): Correct comments about where storage
	class specifiers are rejected by grammar and add corresponding
	asserts.  Diagnose typedefs and parameters declared inline.
	Change warning for inline main to a pedwarn.  Only diagnose inline
	main if hosted.
	(declspecs_add_scspec): Allow duplicate "inline".

testsuite:
	* gcc.dg/declspec-7.c: Don't expect diagnostic for duplicate
	"inline".
	* gcc.dg/declspec-11.c: Update expected messages.
	* gcc.dg/inline-6.c, gcc.dg/inline-7.c, gcc.dg/inline-8.c,
	gcc.dg/inline-9.c, gcc.dg/inline-10.c, gcc.dg/inline-11.c,
	gcc.dg/inline-12.c: New tests.

From-SVN: r87450
2004-09-13 22:00:33 +01:00
Joseph Myers
bda6743181 c-common.c, [...]: Use %q, %< and %> for quoting in diagnostics.
* c-common.c, c-decl.c, c-lex.c, c-objc-common.c, c-opts.c,
	c-parse.in, c-pragma.c, c-typeck.c: Use %q, %< and %> for quoting
	in diagnostics.  Use %' for English apostrophes.
	* c-tree.h (ATTRIBUTE_GCC_CDIAG): Define.
	(pedwarn_c90, pedwarn_c99): Use it.
	* c-decl.c (lookup_label): Quote label name in diagnostic.
	* c-parse.in (yyprint): Use ' instead of ` for left quote.
	* c-typeck.c (warn_for_assignment): Likewise.

testsuite:
	* g++.dg/warn/Wswitch-1.C, g++.dg/warn/Wswitch-2.C,
	gcc.dg/Wswitch-2.c, gcc.dg/Wswitch-enum.c, gcc.dg/Wswitch.c,
	gcc.dg/declspec-9.c, gcc.dg/declspec-10.c, gcc.dg/declspec-11.c,
	gcc.dg/m-un-2.c, gcc.dg/noreturn-1.c, gcc.dg/wtr-conversion-1.c:
	Update expected messages.

From-SVN: r87413
2004-09-13 00:53:29 +01:00
Joseph Myers
9a26d6ee08 c-tree.h (enum c_storage_class): New.
* c-tree.h (enum c_storage_class): New.
	(struct c_declspecs): Add storage_class, inline_p and thread_p.
	* c-decl.c (shadow_tag_warned): Give errors for "inline" in empty
	declarations and "auto" or "register" in file scope empty
	declarations.  Give more specific warnings for other cases of
	storage class specifiers in empty declarations.
	(grokdeclarator): Update for new structures.  Don't check for
	multiple storage classes.  Diagnose file-scope "register" if
	pedantic.
	(build_null_declspecs): Update.
	(declspecs_add_scspec): Update.  Diagnose multiple storage class
	specifiers and invalid uses of "__thread".

testsuite:
	* gcc.dg/declspec-4.c, gcc.dg/declspec-5.c, gcc.dg/declspec-6.c,
	gcc.dg/tls/diag-2.c: Update expected messages.
	* gcc.dg/991209-1.c: Specify compilation options.  Update expected
	messages.
	* gcc.dg/pr14289-2.c, gcc.dg/pr14289-3.c: Remove.
	* gcc.dg/declspec-7.c, gcc.dg/declspec-8.c, gcc.dg/declspec-9.c,
	gcc.dg/declspec-10.c, gcc.dg/declspec-11.c, gcc.dg/tls/diag-4.c,
	gcc.dg/tls/diag-5.c: New tests.

From-SVN: r87374
2004-09-11 22:29:42 +01:00
Zack Weinberg
5d709b0013 c-common.h (struct c_fileinfo): Comment moved here from cp-tree.h.
* c-common.h (struct c_fileinfo): Comment moved here from cp-tree.h.
	(extract_interface_info): Delete prototype.
	* c-decl.c (extract_interface_info): Delete stub.
	* c-lex.c (get_fileinfo): Initialize file_info_tree here, if
	it's not already been done ...
	(init_c_lex): ... not here.
	(fe_file_change): Don't call extract_interface_info.
cp:
	* cp-tree.h (interface_only, interface_unknown): Delete declarations;
	comment explaining them moved to c-common.h.
	* lex.c (interface_only, interface_unknown, extract_interface_info):
	Delete definitions.
	(cxx_finish): Don't reset interface_unknown.
	(handle_pragma_interface): Don't set interface_only and
	interface_unknown; just the like-named fields in finfo.
	(handle_pragma_implementation): Adjust comment.
	* decl2.c (cp_finish_file): Don't reset interface_only and
	interface_unknown.
	* method.c (synthesize_method): Don't reset interface_unknown or
	call extract_interface_info.
	* pt.c (pop_tinst_level): Don't call extract_interface_info.
	* decl.c (start_cleanup_fn): Don't save or restore interface_only
	and interface_unknown.
	(make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
	and use the result instead of the interface_only/interface_unknown
	globals.
	(start_preparsed_function): Likewise.
	* lex.c (cxx_make_type): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	(expand_body): Don't call extract_interface_info.

From-SVN: r87329
2004-09-10 23:56:31 +00:00
Joseph Myers
616aeba2bb c-tree.h (struct c_declspecs): Remove typedef_decl.
* c-tree.h (struct c_declspecs): Remove typedef_decl.  Add
	typedef_p and typedef_signed_p.
	* c-decl.c (shadow_tag_warned): Check typedef_p, not typedef_decl.
	(grokdeclarator): Don't use typedef_decl for warn_deprecated_use.
	Check typedef_p and typedef_signed_p, not typedef_decl.
	(grokfield): Check typedef_p, not typedef_decl.
	(build_null_declspecs): Initialize typedef_p and typedef_signed_p,
	not typedef_decl.
	(declspecs_add_type): Set typedef_p and typedef_signed_p, not
	typedef_decl.

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

From-SVN: r87326
2004-09-11 00:10:05 +01:00
Joseph Myers
deb176fa3b re PR c/8420 (volatile after the type specifier for an unnamed structure is rejected)
PR c/8420
	* c-tree.h (struct c_declspecs): New.
	(struct c_declarator, struct c_type_name, struct c_parm): Update
	element types.
	(build_array_declarator, grokfield, shadow_tag, shadow_tag_warned,
	start_function, start_decl, build_c_parm,
	make_pointer_declarator): Update prototypes.
	(build_null_declspecs, declspecs_add_qual, declspecs_add_type,
	declspecs_add_scspec, declspecs_add_attrs): New.
	(split_specs_attrs): Remove.
	* c-parse.in (%union): Add dsptype.
	(declspecs_nosc_nots_nosa_noea, declspecs_nosc_nots_nosa_ea,
	declspecs_nosc_nots_sa_noea, declspecs_nosc_nots_sa_ea,
	declspecs_nosc_ts_nosa_noea, declspecs_nosc_ts_nosa_ea,
	declspecs_nosc_ts_sa_noea, declspecs_nosc_ts_sa_ea,
	declspecs_sc_nots_nosa_noea, declspecs_sc_nots_nosa_ea,
	declspecs_sc_nots_sa_noea, declspecs_sc_nots_sa_ea,
	declspecs_sc_ts_nosa_noea, declspecs_sc_ts_nosa_ea,
	declspecs_sc_ts_sa_noea, declspecs_sc_ts_sa_ea, declspecs_ts,
	declspecs_nots, declspecs_ts_nosa, declspecs_nots_nosa,
	declspecs_nosc_ts, declspecs_nosc_nots, declspecs_nosc, declspecs,
	maybe_type_quals_attrs): Change to dsptype.
	(struct c_declspec_stack): New.
	(current_declspecs, declspec_stack): Change type.
	(PUSH_DECLSPEC_STACK, POP_DECLSPEC_STACK): Update to new
	structures.
	(extdefs): Likewise.
	(setspecs): Likewise.
	(fndef): Use current_declspecs for empty declspecs list.
	(declspecs_nosc_nots_nosa_noea, declspecs_nosc_nots_nosa_ea,
	declspecs_nosc_nots_sa_noea, declspecs_nosc_nots_sa_ea,
	declspecs_nosc_ts_nosa_noea, declspecs_nosc_ts_nosa_ea,
	declspecs_nosc_ts_sa_noea, declspecs_nosc_ts_sa_ea,
	declspecs_sc_nots_nosa_noea, declspecs_sc_nots_nosa_ea,
	declspecs_sc_nots_sa_noea, declspecs_sc_nots_sa_ea,
	declspecs_sc_ts_nosa_noea, declspecs_sc_ts_nosa_ea,
	declspecs_sc_ts_sa_noea, declspecs_sc_ts_sa_ea): Update to new
	structures and helper functions.  Update comments.
	(typespec_nonattr): Correct comment.
	(maybe_type_quals_attrs, typename): Update to new structures.
	* c-decl.c (grokdeclarator, build_array_declarator, grokfield,
	shadow_tag, shadow_tag_warned, start_function, start_decl,
	build_c_parm, make_pointer_declarator,
	set_array_declarator_inner, groktypename): Update to new
	structures.
	(build_null_declspecs, declspecs_add_qual, declspecs_add_type,
	declspecs_add_scspec, declspecs_add_attrs): New.
	(split_specs_attrs): Remove.
	(shadow_tag_warned): Make warning for useless type names a
	pedwarn.  Give hard error for long, short, signed, unsigned or
	_Complex used with struct, union or enum in empty declaration.
	Make found_tag a bool.
	(grokdeclarator): Remove checks now done at parse time.

testsuite:
	* gcc.dg/anon-struct-4.c, gcc.dg/declspec-1.c,
	gcc.dg/declspec-2.c, gcc.dg/declspec-3.c, gcc.dg/declspec-4.c,
	gcc.dg/declspec-5.c, gcc.dg/declspec-6.c,
	gcc.dg/long-long-typespec-1.c: New tests.
	* gcc.dg/tls/diag-2.c: Update expected diagnostics

From-SVN: r87218
2004-09-09 02:25:48 +01:00
Joseph Myers
f8893e4723 c-tree.h (enum c_declarator_kind, [...]): New.
* c-tree.h (enum c_declarator_kind, struct c_arg_info, struct
	c_declarator, struct c_type_name, struct c_parm): New.
	(build_array_declarator, set_array_declarator_inner,
	get_parm_info, grokfield, groktypename, grokparm, push_parm_decl,
	start_function, start_decl, build_c_parm, build_attrs_declarator,
	build_function_declarator, make_pointer_declarator, c_cast_expr,
	store_parm_decls_newstyle, c_expr_sizeof_type): Update prototypes.
	(build_id_declarator): New.
	* c-typeck.c (c_cast_expr, c_expr_sizeof_type): Update to new
	structures.
	* c-decl.c (ARG_INFO_PARMS, ARG_INFO_TAGS, ARG_INFO_TYPES,
	ARG_INFO_OTHERS): Remove.
	(build_id_declarator): New.
	(build_array_declarator, set_array_declarator_inner, groktypename,
	start_decl, grokparm, push_parm_decl, grokparms, get_parm_info,
	grokfield, start_function, store_parm_decls_newstyle,
	store_parm_decls_oldstyle, store_parm_decls,
	build_c_parm, build_attrs_declarator, build_function_declarator,
	make_pointer_declarator, grokdeclarator): Update to new
	structures.
	* c-parse.in (%union): Add arginfotype, dtrtype, typenametype and
	parmtype.
	(declarator, notype_declarator, after_type_declarator,
	parm_declarator, parm_declarator_starttypename,
	parm_declarator_nostarttypename, array_declarator, typename,
	absdcl, absdcl1, absdcl1_ea, absdcl1_noea, direct_absdcl1,
	absdcl_maybe_attribute, parm, firstparm, parms, parmlist,
	parmlist_1, parmlist_2, parmlist_or_identifiers,
	parmlist_or_identifiers_1): Use these types.
	(primary, after_type_declarator, parm_declarator_starttypename,
	notype_declarator, component_decl, component_declarator,
	component_notype_declarator, typename, absdcl,
	absdcl_maybe_attribute, absdcl1_ea, direct_absdcl1, parmlist_1,
	parmlist_2, parmlist_or_identifiers_1): Update to new structures.

objc:
	* objc-act.c (objc_start_function, really_start_method,
	objc_get_parm_info, start_method_def): Update to new arg_info
	structures.

From-SVN: r87217
2004-09-09 02:19:15 +01:00
Joseph Myers
bc4b653be6 c-tree.h (C_DECL_USED, [...]): New.
* c-tree.h (C_DECL_USED, parser_obstack, in_alignof, in_sizeof,
	in_typeof, record_maybe_used_decl, pop_maybe_used,
	c_expr_sizeof_expr, c_expr_sizeof_type): New.
	* c-decl.c (parser_obstack): New.
	(c_init_decl_processing): Initialize parser_obstack.
	(c_write_global_declarations_1): Check for used but undefined
	static functions.
	* c-parse.in (%union): Add otype.
	(save_obstack_position): New.
	(extdefs): Use it.
	(unary_expr): Update in_sizeof and in_alignof.  Use
	c_expr_sizeof_expr and c_expr_sizeof_type.
	(sizeof): Update in_sizeof.
	(alignof): Update in_alignof.
	(typeof): Update in_typeof.
	(typespec_nonreserved_nonattr): Call pop_maybe_used.
	* c-typeck.c (in_alignof, in_sizeof, in_typeof, struct
	maybe_used_decl, maybe_used_decls, record_maybe_used_decl,
	pop_maybe_used, c_expr_sizeof_expr, c_expr_sizeof_type): New.
	(build_external_ref): Set C_DECL_USED or call
	record_maybe_used_decl if appropriate.
	* toplev.c (check_global_declarations): Check TREE_NO_WARNING.

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

From-SVN: r87216
2004-09-09 02:16:16 +01:00
Ziemowit Laski
06f624bab8 c-decl.c (groktypename_in_parm_context): Remove function.
[gcc/ChangeLog]
2004-09-07  Ziemowit Laski  <zlaski@apple.com>

        * c-decl.c (groktypename_in_parm_context): Remove function.
        * c-tree.h (groktypename_in_parm_context): Remove prototype.

From-SVN: r87169
2004-09-08 01:24:26 +00:00
Nathan Sidwell
366de0ce7d c-aux-info.c (gen_type): Use gcc_assert or gcc_unreachable.
* c-aux-info.c (gen_type): Use gcc_assert or gcc_unreachable.
	* c-common.c (c_type_hash, c_common_nodes_and_builtins,
	c_expand_expr, boolean_increment, nonnull_check_p,
	check_function_arguments_recurse, fold_offsetof_1): Likewise.
	* c-cppbuiltin.c (define__GNUC__, builtin_define_stdint_macros,
	builtin_define_type_max): Likewise.
	* c-decl.c (bind, pop_scope, merge_decls, pushdecl_top_level,
	implicit_decl_warning, builtin_function, build_compound_literal,
	complete_array_type, grokdeclarator, get_parm_info,
	start_function, store_parm_decls_oldstyle,
	c_write_global_declarations): Likewise.
	* c-format.c (get_constant, decode_format_attr,
	maybe_read_dollar_number, get_flag_spec, check_format_arg,
	check_format_types, format_type_warning,
	find_char_info_specifier_index, init_dynamic_asm_fprintf_info,
	init_dynamic_diag_info, handle_format_attribute): Likewise.
	* c-gimplify.c (push_context, pop_context, finish_bc_block):
	* c-lex.c (c_lex_with_flags, lex_string): Likewise.
	* c-objc-common.c (c_tree_printer): Likewise.
	* c-pch.c (pch_init): Likewise.
	* c-pragma.c (maybe_apply_pragma_weak): Likewise.
	* c-pretty-print.c (pp_c_tree_decl_identifier): Likewise.
	* c-typeck.c (c_incomplete_type_error, composite_type,
	common_pointer_type, common_type, same_translation_unit_p,
	tagged_types_tu_compatible_p, finish_init, pop_init_level,
	set_designator, set_nonincremental_init_from_string,
	process_init_element, c_finish_if_stmt): Likewise.
	* caller-save.c (init_caller_save, save_call_clobbered_regs,
	insert_restore, insert_save, insert_one_insn): Likewise.
	* calls.c (emit_call_1, compute_argument_block_size,
	precompute_arguments, expand_call, emit_library_call_value_1,
	store_one_arg): Likewise.

From-SVN: r87140
2004-09-07 10:19:00 +00:00
Kazu Hirata
8c27b7d4d1 c-common.c, [...]: Fix comment formatting.
* c-common.c, c-decl.c, combine.c, defaults.h, fold-const.c,
	gimplify.c, gthr-nks.h, hooks.c, lambda-code.c, lambda-mat.c,
	stor-layout.c, target.h, tree-cfg.c, tree-chrec.c,
	tree-if-conv.c, tree-inline.c, tree-into-ssa.c,
	tree-mudflap.c, tree-optimize.c, tree-scalar-evolution.c,
	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-dce.c,
	tree-ssa-pre.c, tree-vectorizer.c, tree-vectorizer.h, tree.h,
	vec.h: Fix comment formatting.

From-SVN: r87105
2004-09-05 16:05:06 +00:00
Ziemowit Laski
d4e43dffb7 c-decl.c (store_parm_decls_newstyle): Make static.
[gcc/ChangeLog]
2004-09-02  Ziemowit Laski  <zlaski@apple.com>

        * c-decl.c (store_parm_decls_newstyle): Make static.
        (store_parm_decls_from): New function.
        * c-tree.h (store_parm_decls_newstyle): Remove prototype.
        (store_parm_decls_from): New prototype.

From-SVN: r87022
2004-09-03 02:07:18 +00:00
Ziemowit Laski
3041390da7 c-decl.c (store_parm_decls_newstyle): Make externally visible.
[gcc/ChangeLog]
2004-09-02  Ziemowit Laski  <zlaski@apple.com>

        * c-decl.c (store_parm_decls_newstyle): Make externally visible.
        * c-tree.h (store_parm_decls_newstyle): New prototype.

From-SVN: r86998
2004-09-02 23:13:43 +00:00
Richard Kenner
ec8465a533 re PR c/15224 (Attribute mode causes ICE when applied to enums)
PR c/15224
	* c-common.c (handle_mode_attribute): Handle ENUMERAL_TYPE.
	* c-decl.c (finish_enum): Check for user-specified precision too small.

From-SVN: r86926
2004-09-01 16:09:16 -04:00
Ziemowit Laski
bc09584679 c-common.h (lookup_interface): Remove prototype.
[gcc/ChangeLog]
2004-09-01  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h (lookup_interface): Remove prototype.
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.
	(get_current_scope): Rename to objc_get_current_scope.
	* c-decl.c (get_current_scope): Rename to objc_get_current_scope.
	* c-parse.in (parmlist_or_identifiers_1): Get rid of unused variable.
	(yylexname): Call objc_is_class_name() instead of is_class_name().
	* c-typeck.c (build_external_ref): Call objc_lookup_ivar()
	instead of lookup_objc_ivar().
	* stub-objc.c (lookup_interface): Remove stub.
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.

[gcc/objc/ChangeLog]
2004-09-01  Ziemowit Laski  <zlaski@apple.com>

	* objc-act.c (lookup_interface): Make function 'static' and add a
	local prototype.
	(objc_check_decl, get_class_reference, objc_declare_alias,
	objc_declare_class, objc_is_object_ptr): Call objc_is_class_name()
	instead of is_class_name().
	(get_super_receiver, objc_clear_super_receiver): Call
	objc_get_current_scope() instead of get_current_scope().
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.

From-SVN: r86879
2004-09-01 07:55:39 +00:00
Joseph Myers
f7b0fb680c attribs.c (strip_attrs): Remove.
* attribs.c (strip_attrs): Remove.
	(split_specs_attrs): Move ...
	* c-decl.c: ... to here.
	* tree.h (split_specs_attrs, strip_attrs): Remove.
	* c-tree.h (split_specs_attrs): Declare.

From-SVN: r86823
2004-08-31 09:29:24 +01:00
Geoffrey Keating
ff164b22d3 re PR c/12738 (Missing function with 'static' block-scope declaration; unit-at-a-time; and IMA.)
2004-08-30  Geoffrey Keating  <geoffk@apple.com>

	PR 12738
	PR 17205
	Radar 3460526
	Radar 3775729
	* c-decl.c (grokdeclarator): Produce error for 'static' on local
	function declaration.

Index: testsuite/ChangeLog
2004-08-30  Geoffrey Keating  <geoffk@apple.com>

	* gcc.dg/funcdef-storage-1.c: New.
	* gcc.c-torture/compile/920625-2.c: Don't use 'static' to declare
	an extern function in local scope.
	* gcc.c-torture/execute/20010605-1.c: Don't use 'static inline' to
	declare an 'auto inline' function in local scope.
	* gcc.dg/20011130-1.c: Likewise.
	* gcc.c-torture/execute/nest-stdar-1.c: Don't use 'static' to declare
	an 'auto' function in local scope.
	* gcc.dg/20021014-1.c: Likewise.
	* gcc.dg/20030331-2.c: Likewise.

From-SVN: r86807
2004-08-30 22:19:24 +00:00
Joseph Myers
7b1124877b c-tree.h (struct language_function): Add arg_info element.
* c-tree.h (struct language_function): Add arg_info element.
	* c-decl.c (current_function_arg_info): New.
	(grokdeclarator, store_parm_decls): Use it instead of
	DECL_ARGUMENTS.
	(c_push_function_context, c_pop_function_context): Save and
	restore it.

From-SVN: r86798
2004-08-30 20:21:48 +01:00
Joseph Myers
0b410f0b88 re PR c/13801 (Decls should regain old type at end of scope)
PR c/13801
	* c-decl.c (struct c_binding): Add type and inner_comp fields.
	(bind): Set type and inner_comp fields.
	(pop_scope): Restore type of decl to the correct type from an
	outer scope.  Give error when popping file scope for incomplete
	arrays completed incompatibly with default initialization in an
	inner scope.
	(diagnose_mismatched_decls): Handle externs with initializers at
	block scope.
	(pushdecl): Set type of external declaration at block scope based
	only on the visible declarations.  Save type when changing the
	type of a declaration.  Merge an external declaration at block
	scope with a visible static declaration at file scope.
	(implicitly_declare): Give recycled old declaration the new type
	except for incompatible declarations of built-in functions, saving
	the old type.

testsuite:
	* gcc.dg/redecl-3.c, gcc.dg/redecl-4.c, gcc.dg/redecl-6.c,
	gcc.dg/redecl-7.c, gcc.dg/redecl-8.c, gcc.dg/redecl-9.c,
	gcc.dg/redecl-10.c, gcc.dg/debug/redecl-1.c,
	gcc.dg/debug/redecl-2.c, gcc.dg/debug/redecl-3.c,
	gcc.dg/debug/redecl-4.c, gcc.dg/debug/redecl-5.c: New tests.

From-SVN: r86636
2004-08-26 22:30:26 +01:00
Ziemowit Laski
c34be55ec5 c-decl.c (grokparm): New function.
[gcc/ChangeLog]
2004-08-25  Ziemowit Laski  <zlaski@apple.com>

        * c-decl.c (grokparm): New function.
        * c-tree.h (grokparm): New prototype.

From-SVN: r86587
2004-08-25 23:39:11 +00:00
Nathan Sidwell
7d60be94d6 tree.h (build_int_cst): New, sign extended constant.
* tree.h  (build_int_cst): New, sign extended constant.
	(build_int_cstu): New, zero extended constant.
	(build_int_cst_wide): Renamed from build_int_cst.
	* tree.c (build_int_cst, build_int_cstu): New.
	(build_int_cst_wide): Renamed from build_int_cst.
	(make_vector_type, build_common_tree_nodes,
	build_common_tree_nodes_2): Adjust build_int_cst calls.
	* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
	expand_builtin_strpbrk, expand_builtin_fputs,
	build_string_literal, expand_builtin_printf,
	expand_builtin_sprintf, fold_builtin_classify_type,
	fold_builtin_lround, fold_builtin_bitop, fold_builtin_isascii,
	fold_builtin_toascii, fold_builtin_isdigit,
	simplify_builtin_strstr, simplify_builtin_strpbrk,
	fold_builtin_fputs, simplify_builtin_sprintf): Likewise.
	* c-common.c (start_fname_decls, fix_string_type, shorten_compare,
	DEF_ATTR_INT): Likewise.
	* c-decl.c (complete_array_type, check_bitfield_type_and_width):
	Likewise.
	* c-lex.c (interpret_integer, lex_charconst): Likewise.
	* c-parse.in (primary) <TYPES_COMPATIBLE_P> Likewise.
	* c-pretty-print.c (pp_c_integer_constant): Likewise.
	* c-typeck.c (really_start_incremental_init, push_init_level,
	set_nonincremental_init_from_string): Likewise.
	* calls.c (load_register_parameters): Likewise.
	convert.c (convert_to_pointer): Likewise.
	coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
	build_fn_info_type, build_fn_info_value, build_ctr_info_value,
	build_gcov_info): Likewise.
	* except.c (init_eh, assign_filter_values): Likewise.
	* expmed.c (store_fixed_bit_field, extract_bit_field,
	extract_fixed_bit_field, extract_split_bit_field, expand_shift,
	expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
	expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
	* expr.c (convert_move, emit_group_load, emit_group_store,
	expand_assignment, store_constructor, store_field,
	expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
	fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
	invert_truthvalue, optimize_bit_field_compare,
	decode_field_reference, all_ones_mask_p, constant_boolean_node,
	fold_div_compare, fold, fold_read_from_constant_string,
	fold_negate_const, fold_abs_const, fold_not_const, round_up,
	round_down): Likewise.
	* function.c (assign_parm_setup_block): Likewise.
	* stmt.c (shift_return_value, expand_case, estimate_case_costs):
	Likewise.
	* stor-layout.c (layout_type, initialize_sizetypes,
	set_min_and_max_values_for_integral_type): Likewise.
	* tree-chrec.c (chrec_fold_multiply_poly_poly,
	reset_evolution_in_loop): Likewise.
	* tree-chrec.h (build_polynomial_chrec): Likewise.
	* tree-complex.c (build_replicated_const): Likewise.
	* tree-eh.c (honor_protect_cleanup_actions,
	lower_try_finally_onedest, lower_try_finally_copy,
	lower_try_finally_switch): Likewise.
	* tree-mudflap.c (mf_build_string, mx_register_decls,
	mudflap_register_call, mudflap_enqueue_constant): Likewise.
	* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
	Likewise.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
	* tree-ssa-loop-niter.c (number_of_iterations_cond,
	loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
	Likewise.
	* tree-ssa-loop-ivcanon.c (create_canonical_iv,
	canonicalize_loop_induction_variables): Likewise.
	* tree-vectorizer.c (vect_create_index_for_array_ref,
	vect_transform_loop_bound, vect_compute_data_ref_alignment):
	Likewise.

	* config/alpha/alpha.c (alpha_initialize_trampoline, alpha_va_start,
	alpha_gimplify_va_arg_1): Likewise.
	* config/arm/arm.c (arm_get_cookie_size): Likewise.
	* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
	* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
	mips_gimplify_va_arg_expr): Likewise.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
	add_compiler_branch_island): Likewise.
	* config/s390/s390.c (s390_va_start): Likewise.
	* config/sh/sh.c (sh_va_start): Likewise.
	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
	Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start,
	xtensa_gimplify_va_arg_expr): Likewise.

	* objc/objc-act.c (build_objc_string_object,
	build_objc_symtab_template, init_def_list, init_objc_symtab,
	init_module_descriptor, generate_static_references,
	build_selector_translation_table, get_proto_encoding,
	build_typed_selector_reference, build_selector_reference,
	build_next_objc_exception_stuff,
	build_method_prototype_list_template, generate_descriptor_table,
	generate_protocols, build_protocol_initializer,
	build_ivar_list_template, build_method_list_template,
	build_ivar_list_initializer, generate_ivars_list,
	generate_dispatch_table, generate_protocol_list,
	build_category_initializer, build_shared_structure_initializer,
	generate_shared_structures, handle_impent,
	generate_objc_image_info): Likewise.

2004-04-25  Paolo Bonzini  <bonzini@gnu.org>

	* cfglayout.c (duplicate_insn_chain): Remove references to
	NOTE_INSN_LOOP_VTOP and NOTE_INSN_LOOP_CONT.
	* cfgloop.h (struct loop): Remove fields vtop, cont and cont_dominator.
	* cfgrtl.c (rtl_delete_block): Remove handling of NOTE_INSN_LOOP_CONT.
	* final.c (final_scan_insn): Remove references to NOTE_INSN_LOOP_VTOP
	and NOTE_INSN_LOOP_CONT.
	* insn-notes.def (NOTE_INSN_LOOP_VTOP, NOTE_INSN_LOOP_CONT): Remove.
	* jump.c (squeeze_notes): Remove references to NOTE_INSN_LOOP_VTOP
	and NOTE_INSN_LOOP_CONT.
	* loop.c (scan_loops, find_and_verify_loops, for_each_insn_in_loop,
	check_dbra_loop, loop_dump_aux): Remove references to removed notes
	and fields.
	* reorg.c (mostly_true_jump): Do not rely on NOTE_INSN_LOOP_VTOPs.
	* unroll.c (unroll_loop, copy_loop_body, loop_iterations): Remove
	references to removed notes and fields.
	(subtract_reg_term, ujump_to_loop_cont): Remove.

From-SVN: r86544
2004-08-25 09:52:54 +00:00
Nathan Sidwell
8c1d6d62a6 c-decl.c (c_init_decl_processing): Adjust build_common_tree_nodes call.
* c-decl.c (c_init_decl_processing): Adjust
	build_common_tree_nodes call.
	* expmed.c (const_mult_add_overflow_p): Use
	build_distinct_type_copy.
	* stor-layout.c (early_type_list): Remove.
	(layout_type): Don't append to early_type_list.
	(initialize_sizetypes): Add signed_p argument.
	(set_sizetype): Overwrite the stub type nodes directly.
	* tree.c (copy_node_stat): Clear a type's value cache here ...
	(build_distinct_type): ... not here.
	(build_common_tree_nodes): Add signed_sizetype argument. Adjust.
	* tree.h (initialize_sizetypes): Add signed_p argument.
	(build_common_tree_nodes): Likewise.

	* ada/utils.c (gnat_init_decl_processing): Adjust
	build_common_tree_nodes call.

	* cp/decl.c (cxx_init_decl_processing): Adjust
	build_common_tree_nodes call.

	* fortran/f95-lang.c (gfc_init_decl_processing): Adjust
	build_common_tree_nodes call.

	* java/decl.c (java_init_decl_processing): Adjust
	initialize_sizetypes call.

	* objc/objc-act.c (get_static_reference): Use
	build_variant_type_copy.
	(get_protocol_reference): Likewise.
	* objc/objc-act.h (TREE_STATIC_TEMPLATE): Use TREE_PRIVATE.

	* treelang/treetree.c (treelang_init_decl_processing): Adjust
	build_common_tree_nodes call.

From-SVN: r86493
2004-08-24 16:39:43 +00:00
Nathan Sidwell
8dd16ecc7d tree.h (build_distinct_type_copy): New.
* tree.h (build_distinct_type_copy): New.
	(build_type_copy): ... here.  Rename to ...
	(build_variant_type_copy): ... here.
	* tree.c (build_qualified_type): Rename build_type_copy call.
	(build_distinct_type_copy): New, broken out of ...
	(build_type_copy): ... here.  Rename to ...
	(build_variant_type_copy): ... here.  Use
	build_distinct_type_copy.
	(build_common_tree_nodes_2): Rename build_type_copy call.
	* c-common.c (c_common_nodes_and_builtins): Rename build_type_copy
	call.
	(handle_packed_attribute, handle_unused_attribute,
	handle_transparanet_union_attribute, handle_aligned_attribute,
	handle_deprecated_attribute): Likewise.
	* c-decl.c (clone_underlying_type, store_parm_decls_oldstyle):
	Likewise.
	* config/arm/arm.c (arm_handle_isr_attribyte): Likewise.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Use
	build_distinct_type_copy.

	* cp/name-lookup.c (pushdecl): Rename build_type_copy call.
	* cp/tree.c (cp_build_qualified_type_real,
	build_exception_variant, handle_java_interface_attribute): Likewise.

From-SVN: r86421
2004-08-23 08:41:57 +00:00
Joseph Myers
00325bce05 c-decl.c (set_array_declarator_type): Rename to set_array_declarator_inner.
* c-decl.c (set_array_declarator_type): Rename to
	set_array_declarator_inner.
	(build_c_parm, build_attrs_declarator, build_function_declarator):
	New functions.
	(make_pointer_declarator): Call build_attrs_declarator.
	* c-tree.h (set_array_declarator_type): Rename to
	set_array_declarator_inner.
	(build_c_parm, build_attrs_declarator, build_function_declarator):
	New prototypes.
	* c-parse.in (after_type_declarator,
	parm_declarator_starttypename, parm_declarator_nostarttypename,
	notype_declarator, absdcl_maybe_attribute, direct_absdcl1, parm,
	firstparm): Use these functions

From-SVN: r86367
2004-08-21 23:49:46 +01:00
Joseph Myers
60919bce32 c-decl.c (build_array_declarator, [...]): Change boolean parameters to type bool.
* c-decl.c (build_array_declarator, set_array_declarator_type,
	start_decl, grokdeclarator, grokparms): Change boolean parameters
	to type bool.
	* c-tree.h (build_array_declarator, set_array_declarator_type,
	start_decl): Update prototypes.
	* c-decl.c, c-parse.in: All callers changed.

From-SVN: r86366
2004-08-21 23:47:32 +01:00
Joseph Myers
580b395826 c-decl.c (grokdeclarator): Allow for function definition where innermost declarator has attributes.
* c-decl.c (grokdeclarator): Allow for function definition where
	innermost declarator has attributes.

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

From-SVN: r86075
2004-08-16 21:35:21 +01:00
Nathan Sidwell
4a90aeeb51 tree.h (build_int_cst): New.
.:	* tree.h (build_int_cst): New.
	(build_int_2): Remove.
	* tree.c (build_int_2): Remove.
	(build_int_cst): New.
	(make_vector_type, build_common_tree_nodes,
	build_common_tree_nodes_2): Use build_int_cst.
	* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
	expand_builtin_strpbrk, expand_builtin_fputs,
	build_string_literal, expand_builtin_printf,
	expand_builtin_sprintf, fold_builtin_lround, fold_builtin_bitop,
	fold_builtin_bitop, fold_builtin_isascii, fold_builtin_toascii,
	fold_builtin_isdigit, simplify_builtin_strstr,
	simplify_builtin_strpbrk, fold_builtin_fputs,
	simplify_builtin_sprintf): Use build_int_cst.
	* c-common.c (start_fname_decls, fix_string_type,
	c_common_nodes_and_builtins, c_init_attributes,
	shorten_compare): Likewise.
	* c-decl.c (complete_array_type,
	check_bitfield_type_and_width): Likewise.
	* c-lex.c (interpret_integer, lex_charconst): Likewise.
	* c-parse.in (primary): <TYPES_COMPATIBLE_P> Likewise.
	* c-pretty-print.c (pp_c_integer_constant): Likewise.
	* c-typeck.c (really_start_incremental_init, push_init_level,
	set_nonincremental_init_from_string): Likewise.
	* calls.c (load_register_parameters): Likewise.
	* convert.c (convert_to_pointer): Likewise.
	* coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
	build_fn_info_type, build_ctr_info_value, build_gcov_info):
	Likewise.
	* except.c (init_eh, assign_filter_values, assign_filter_values):
	Likewise.
	* expmed.c (store_fixed_bit_field, extract_bit_field,
	extract_fixed_bit_field, extract_split_bit_field, expand_shift,
	expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
	expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
	* expr.c (convert_move, emit_group_load, emit_group_store,
	expand_assignment, store_constructor, store_field,
	expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
	* fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
	invert_truthvalue, optimize_bit_field_compare,
	decode_field_reference, all_ones_mask_p, constant_boolean_node,
	fold_div_compare, fold, fold_read_from_constant_string,
	fold_negate_const, fold_abs_const, fold_not_const): Likewise.
	* function.c (assign_parm_setup_block): Likewise.
	* stmt.c (shift_return_value, expand_end_case_type,
	estimate_case_costs): Likewise.
	* stor-layout.c (layout_type, initialize_sizetypes,
	set_min_and_max_values_for_integral_type): Likewise.
	* tree-chrec.c (chrec_fold_multiply_poly_poly,
	reset_evolution_in_loop): Likewise.
	* tree-chrec.h (build_polynomial_chrec): Likewise.
	* tree-complex.c (build_replicated_const): Likewise.
	* tree-eh.c (honor_protect_cleanup_actions,
	lower_try_finally_onedest, lower_try_finally_copy,
	lower_try_finally_switch): Likewise.
	* tree-mudflap.c (mf_build_string, mx_register_decls,
	mudflap_register_call, mudflap_enqueue_constant): Likewise.
	* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
	Likewise.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
	* tree-ssa-loop-niter.c (number_of_iterations_cond,
	loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
	Likewise.

	* config/alpha/alpha.c (alpha_initialize_trampoline,
	alpha_va_start, alpha_gimplify_va_arg_1): Use build_int_cst.
	* config/arm/arm.c (arm_get_cookie_size): Likewise.
	* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/i860/i860.c (i860_va_start): Likewise.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
	* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
	mips_gimplify_va_arg_expr): Likewise.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
	add_compiler_branch_island): Likewise.
	* config/s390/s390.c (s390_va_start): Likewise.
	* config/sh/sh.c (sh_va_start): Likewise.
	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
	Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start,
	xtensa_gimplify_va_arg_expr): Likewise.

	* objc/objc-act.c (build_objc_string_object,
	build_objc_symtab_template, init_def_list, init_objc_symtab,
	init_module_descriptor, generate_static_references,
	build_selector_translation_table, get_proto_encoding,
	build_typed_selector_reference, build_selector_reference,
	build_next_objc_exception_stuff,
	build_method_prototype_list_template, generate_descriptor_table,
	generate_protocols, build_protocol_initializer,
	build_ivar_list_template, build_method_list_template,
	build_ivar_list_initializer, generate_ivars_list,
	generate_dispatch_table, generate_protocol_list,
	build_category_initializer, build_shared_structure_initializer,
	generate_shared_structures, handle_impent,
	generate_objc_image_info): Use build_int_cst.
ada:
	* cuintp.c (UI_To_gnu): Use build_int_cst..
	* trans.c (Exception_Handler_to_gnu_sjlj, gnat_to_gnu): Likewise.
	* utils.c (init_gigi_decls): Likewise.
	* utils2.c (build_call_raise): Likewise.
cp:
	* call.c (convert_class_to_reference,
	build_user_type_conversion_1, convert_like_real,
	build_java_interface_fn_ref, build_special_member_call): Use
	build_int_cst.
	* class.c (build_vtbl_initializer): Likewise.
	* cp-gimplify.c (cp_gimplify_expr): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	* decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
	* decl2.c (start_static_initialization_or_destruction,
	generate_ctor_or_dtor_function): Likewise.
	* except.c (build_throw): Likewise.
	* lex.c (cxx_init): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* rtti.c (build_headof, get_tinfo_decl_dynamic,
	build_dynamic_cast_1, ptr_initializer, ptm_initializer,
	get_pseudo_ti_init): Likewise.
	* search.c (get_dynamic_cast_base_type): Likewise.
	* tree.c (build_shared_int_cst): Likewise.
fortran:
	* trans-array.c (gfc_trans_array_constructor_value): Use
	build_int_cst.
	* trans-const.c (gfc_build_string_const,
	gfc_init_constants, gfc_conv_mpz_to_tree,
	gfc_conv_constant_to_tree): Likewise.
	* trans-decl.c (gfc_get_symbol_decl): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_ibits,
	gfc_conv_intrinsic_len, prepare_arg_info): Likewise.
	* trans-io.c (add_case, set_error_locus, build_dt,
	transfer_expr): Likewise.
	* trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause,
	gfc_trans_stop, gfc_trans_character_select): Likewise.
	* trans-types.c (gfc_init_types, gfc_get_dtype): Likewise.
	* trans.c (gfc_trans_runtime_check): Likewise.
java:
	* boehm.c (get_boehm_type_descriptor): Use build_int_cst.
	* class.c (build_utf8_ref, build_static_field_ref,
	make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table): Likewise.
	* constants.c (get_tag_node,  build_ref_from_constant_pool,
	build_constants_constructor): Likewise.
	* decl.c (java_init_decl_processing): Likewise.
	* expr.c (build_java_array_length_access, build_newarray,
	expand_java_multianewarray, expand_java_pushc, expand_iinc,
	build_java_binop, build_field_ref, expand_java_add_case,
	expand_java_call, build_known_method_ref, build_invokevirtual,
	build_invokeinterface, build_jni_stub): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* jcf-parse.c (get_constant): Likewise.
	* lex.c (do_java_lex): Likewise.
	* parse.y (patch_binop, patch_unaryop, patch_cast,
	build_null_of_type, patch_newarray): Likewise.
	* resource.c (compile_resource_data): Likewise.
	* typeck.c (build_prim_array_type): Likewise.

From-SVN: r86022
2004-08-15 15:45:33 +00:00
Roger Sayle
53fb4de375 c-common.c (shorten_compare, [...]): Replace calls to build with calls to buildN.
* c-common.c (shorten_compare, pointer_int_sum,
	c_common_truthvalue_conversion, boolean_increment): Replace calls
	to build with calls to buildN.
	* c-decl.c (complete_array_type, grokdeclarator): Likewise.
	* c-gimplify.c (c_build_bind_expr, gimplify_c_loop,
	gimplify_switch_stmt): Likewise.
	* c-typeck.c (default_function_array_conversion,
	build_component_ref, build_array_ref, build_function_call,
	pointer_diff, build_unary_op, build_conditional_expr,
	build_compound_expr, build_modify_expr, c_finish_goto_label,
	c_finish_goto_ptr, c_finish_return, c_finish_loop,
	c_finish_bc_stmt, c_finish_stmt_expr, c_end_compound_stmt,
	build_binary_op): Likewise.

From-SVN: r86018
2004-08-15 02:24:41 +00:00
Richard Henderson
174283a3c2 c-common.h (STATEMENT_LIST_HAS_LABEL): New.
* c-common.h (STATEMENT_LIST_HAS_LABEL): New.
        * c-semantics.c (add_stmt): Set it.
        * c-decl.c (finish_decl): Use it to create a new BIND_EXPR
        before instantiating a variable sized type.

From-SVN: r85849
2004-08-11 21:09:57 -07:00
Mark Mitchell
b2ca370228 tree.c (handle_dll_attribute): Move here from i383/winnt.c.
* tree.c (handle_dll_attribute): Move here from i383/winnt.c.
	Replace use of DECL_INLINE with DECL_DECLARED_INLINE_P.  Set
	DECL_VISIBLITY.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* tree.h (handle_dll_attribute): Declare.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* c-common.h (c_determine_visibility): Declare.
	* c-common.c (c_determine_visibility): New function.
	* c-decl.c (finish_decl): Use it.
	(finish_function): Likewise.
	* defaults.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to
	zero, by default.  Use #if, not	#ifdef, to test it.
	* config/arm/arm.c (arm_attribute_table): Use
	handle_dll_attribute.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with
	#if.
	* config/arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1.
	* config/i386/cygming.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	to 1.
	* config/i386/i386-protos.h (ix86_handle_dll_attribute): Remove.
	* config/i386/i386.c (ix86_attribute_table): Use
	handle_dll_attribute for dllimport/dllexport.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* config/i386/winnt.c (ix86_handle_dll_attribute): Remove.
	* config/mcore/mcore.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* config/mcore/mcore.c (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Test it
	with #if.
	* config/sh/symbian-pre.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* doc/extend.texi (dllexport): Clarify and correct documentation.
	(dllimport): Likewise.
	* doc/tm.texi (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Mention
	handle_dll_attribute.

	* decl.c (start_preparsed_function): Move determine_visibility
	call.
	* decl2.c (determine_visibility): Incorporate dllexport testing.

	* g++.dg/ext/visibility/assign1.C: Use scan-hidden and
	dg-require-visiblity.
	* g++.dg/ext/visibility/fvisibility-inlines-hidden.C: Likewise.
	* g++.dg/ext/visibility/fvisibility.C: Likewise.
	* g++.dg/ext/visibility/memfuncts.C: Likewise.
	* g++.dg/ext/visibility/new1.C: Likewise.
	* g++.dg/ext/visibility/pragma.C: Likewise.
	* g++.dg/ext/visibility/staticmemfuncts.C: Likewise.
	* g++.dg/ext/visibility/virtual.C: Likewise.
	* g++/dg/ext/visibility/visibility-1.C: Likewise.
	* g++/dg/ext/visibility/visibility-2.C: Likewise.
	* g++/dg/ext/visibility/visibility-3.C: Likewise.
	* g++/dg/ext/visibility/visibility-4.C: Likewise.
	* g++/dg/ext/visibility/visibility-5.C: Likewise.
	* g++/dg/ext/visibility/visibility-6.C: Likewise.
	* g++/dg/ext/visibility/visibility-7.C: Likewise.
	* g++/dg/ext/visibility/visibility-8.C: New test.
	* gcc.c-torture/compile/dll.x: Remove.
	* gcc.dg/dll-2.c: Use dg-require-dll
	* gcc.dg/visibility-10.c: New test.
	* lib/gcc-dg.exp (dg-require-dll): Add Symbian to list of targets
	supporting DLLs.
	* testsuite/lib/scanasm.exp (scan_hidden): New function.
	(scan_not_hidden): Likewise.

From-SVN: r85621
2004-08-06 02:03:29 +00:00
Geoffrey Keating
0e6df31e19 re PR c/14516 (-fleading-underscore does not work correctly for file static variables)
2004-08-04  Geoffrey Keating  <geoffk@apple.com>

	PR 14516
	* c-common.c (c_expand_decl): Don't special-case static VAR_DECLs.
	* c-common.h (make_rtl_for_local_static): Delete.
	* c-decl.c (shadow_tag_warned): Clean up comment.
	(finish_decl): Clean up spacing.  Use set_user_assembler_name when
	appropriate.  Don't pass asmspec to rest_of_decl_compilation.
	* c-semantics.c (make_rtl_for_local_static): Delete.
	* expr.c (init_block_move_fn): Use set_user_assembler_name.
	(init_block_clear_fn): Likewise.
	* passes.c (rest_of_decl_compilation): Remove asmspec parameter,
	expect it to be in DECL_ASSEMBLER_NAME.  Update callers in many files.
	* toplev.h (rest_of_decl_compilation): Remove asmspec parameter.
	* tree.h (make_decl_rtl): Remove second parameter.
	(set_user_assembler_name): New.
	* varasm.c (set_user_assembler_name): New.
	(make_decl_rtl): Remove second parameter.  Update callers in many
	files.

Index: cp/ChangeLog
2004-08-04  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
	than passing it as a parameter to rest_of_decl_compilation.
	* decl2.c (grokfield): Use set_user_assembler_name.

From-SVN: r85593
2004-08-05 05:52:01 +00:00
Zack Weinberg
ca0433930a re PR target/14680 (reload_cse_simplify_operands triggers internal error on sparc64 when compiling netpbm)
PR 14680
	* c-decl.c (record_builtin_type): Call debug_hooks->type_decl
	on the new decl.

From-SVN: r85545
2004-08-04 06:33:07 +00:00
Joseph Myers
9cbe78fbeb c-decl.c (implicitly_declare): Diagnose incompatible implicit declarations.
* c-decl.c (implicitly_declare): Diagnose incompatible implicit
	declarations.

testsuite:
	* gcc.dg/redecl-5.c: New test.
	* gcc.dg/format/attr-6.c: Expect warning for implicit declaration
	of scanf.

From-SVN: r85509
2004-08-03 23:09:13 +01:00
Joseph Myers
558d1f815d c-decl.c (diagnose_mismatched_decls): Give error for external redeclaration of identifier declared with no linkage...
* c-decl.c (diagnose_mismatched_decls): Give error for external
	redeclaration of identifier declared with no linkage, not just
	warning with -Wtraditional.  Do not check DECL_CONTEXT to give
	error for redeclaration with no linkage.

testsuite:
	* gcc.dg/redecl-2.c: New test.

From-SVN: r85386
2004-07-31 18:21:27 +01:00
Nathan Sidwell
91683ccda0 c-decl.c (complete_array_type): Don't gratuitously copy maxindex.
* c-decl.c (complete_array_type): Don't gratuitously copy
	maxindex.  Check it always has a type.

From-SVN: r85288
2004-07-29 08:42:55 +00:00
Bernardo Innocenti
1ad463f493 c-common.c (disable_builtin_function): Rename variable n to new_disabled_builtin.
* c-common.c (disable_builtin_function): Rename variable n to
	new_disabled_builtin.
	* c-decl.c (duplicate_decls): Rename parameter decl to new_decl.
	Rename local variable old to old_decl.
	* gensupport.c (shift_output_template): Rename parameter old to src.
	* simplify-rtx.c (simplify_replace_rtx): Rename parameter oldx to
	old_rtx and newx to new_rtx.

From-SVN: r85175
2004-07-26 02:38:05 +02:00
Niall Douglas
d7afec4b07 re PR c++/9283 (__attribute__((visibility ("hidden"))) not supported for class/struct)
PR c++/9283
	PR c++/15000
	* c-common.c (c_common_attribute_table): Allow
	handle_visibility_attribute to be called for types.
	(handle_visibility_attribute) When given a type, set the visibility
	bits on the TYPE_NAME.  When given a decl, don't set no_add_attrs
	so that we can check later whether the attribute was present. Added
	warning if attribute applied to non class type.
	* c-decl.c (diagnose_mismatched_decls): Updated rules for merging
	decls and checking that they are consistent.
	* common.opt: Added -fvisibility.
	* c.opt, c-opts.c: Added -fvisibility-inlines-hidden.
	* c-pragma.h, c-pragma.c: Added handle_pragma_visibility().
	* flags.h, tree.h: Added assorted support defines for overall patch
	* opts.c: Added parsing support for -fvisibility.
	* tree.c (build_decl): Set visibility for all decls to be whatever
	is in force at that time.
	* varasm.c (default_binds_local_p_1): Reworked logic determining
	when to make a symbol locally bound.
	* doc/invoke.texi: Added documentation for -fvisibility and
	-fvisibility-inlines-hidden.

	PR c++/15000
	PR c++/9283
	* class.c (check_field_decls): Apply hidden visibility if
	-fvisibility-inlines-hidden and inlined unless otherwise specified
	(build_vtable): Set vtable visibility to class visibility.
	(check_field_decls): Default static member visibility to class
	visibility.
	(check_methods): Default method visibility to class visibility.
	* cp-tree.h: Added CLASSTYPE_VISIBILITY and
	CLASSTYPE_VISIBILITY_SPECIFIED macro.
	* decl.c (duplicate_decls): New logic for merging definition decls
	with declaration decls. Added ignore & warning when non default
	applied to global operator new or delete.
	* method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
	wherever VISIBILITY was changed
	* rtti.c (get_tinfo_decl): Set typeinfo visibility to class
	visibility.
	(tinfo_base_init): Set typeinfo name visibility to class visibility.

	PR c++/9283
	PR c++/15000
	* gcc.dg/visibility-9.c, gcc.dg/visibility-a.c: New tests.
	* g++.dg/ext/visibility/: New directory.
	* g++.dg/ext/visibility-1.C, g++.dg/ext/visibility-2.C
	g++.dg/ext/visibility-3.C, g++.dg/ext/visibility-4.C,
	g++.dg/ext/visibility-5.C, g++.dg/ext/visibility-6.C,
	g++.dg/ext/visibility-7.C: Move to g++.dg/ext/visibility/.
	* g++.dg/ext/visibility/fvisibility.C,
	g++.dg/ext/visibility/fvisibility-inlines-hidden.C,
	g++.dg/ext/visibility/fvisibility-override1.C
	g++.dg/ext/visibility/fvisibility-override2.C
	g++.dg/ext/visibility/memfuncts.C
	g++.dg/ext/visibility/noPLT.C
	g++.dg/ext/visibility/pragma.C
	g++.dg/ext/visibility/pragma-override1.C
	g++.dg/ext/visibility/pragma-override2.C
	g++.dg/ext/visibility/staticmemfuncts.C
	g++.dg/ext/visibility/virtual.C: New tests.

Co-Authored-By: Brian Ryner <bryner@brianryner.com>

From-SVN: r85167
2004-07-25 22:52:22 +00:00
Bernardo Innocenti
28dab13236 basic-block.h (reorder_block_def): Rename to reorder_block_def_p.
* basic-block.h (reorder_block_def): Rename to reorder_block_def_p.
	* c-common.c: Add missing casts from void * to other types.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-lex.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* defaults.h: Likewise.
	* genconstants.c: Likewise.
	* gengtype-lex.l: Likewise.
	* genmodes.c: Likewise.
	* read-rtl.c: Likewise.
	* rtl.c: Likewise.

From-SVN: r85166
2004-07-26 00:17:02 +02:00
Bernardo Innocenti
5d038c4cb1 bitmap.c: Use type-safe memory allocation macros from libiberty.
* bitmap.c: Use type-safe memory allocation macros from libiberty.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-lang.c: Likewise.
	* c-lex.c: Likewise.
	* c-opts.c: Likewise.
	* c-parse.in: Likewise.
	* c-typeck.c: Likewise.
	* genconditions.c: Likewise.
	* gengtype-lex.l: Likewise.
	* gengtype-yacc.y: Likewise.
	* gengtype.c: Likewise.
	* genmodes.c: Likewise.
	* gensupport.c: Likewise.
	* read-rtl.c: Likewise.
	* read-rtl.c (read_constants): Use INSERT instead of TRUE in call to
	htab_find_slot().

From-SVN: r85163
2004-07-25 22:43:23 +02:00
Bernardo Innocenti
89658955e5 c-decl.c (groktypename, [...]): Rename variable typename to type_name.
* c-decl.c (groktypename, groktypename_in_param_context): Rename
	variable typename to type_name.
	* c-lex.c (interpret_float): Likewise.

From-SVN: r85161
2004-07-25 21:32:47 +02:00
Bernardo Innocenti
53ed1a12d3 c-common.c: Rename all identifiers named `new'.
* c-common.c: Rename all identifiers named `new'.
	* c-decl.c: Likewise.
	* gensupport.c: Likewise.
	* simplify-rtx.c: Likewise.

From-SVN: r85159
2004-07-25 21:09:36 +02:00
Joseph Myers
bbbcb2e1c4 re PR c/15360 (c99: extern w/initializer; extern w/internal linkage)
PR c/15360
	* c-decl.c (start_decl): Do not set DECL_EXTERNAL for initialized
	declarations until after calling pushdecl.
	(grokdeclarator): Set DECL_EXTERNAL for variables based on use of
	"extern" and not on whether the declaration is initialized.

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

From-SVN: r85156
2004-07-25 19:42:24 +01:00
Bernardo Innocenti
e3a64162f5 c-common.c: Rename all identifiers named class' to cl'.
* c-common.c: Rename all identifiers named `class' to `cl'.
	* c-decl.c: Likewise.
	* c-common.h: Likewise.
	* c-parse.in: Likewise.
	* c-typeck.c: Likewise.
	* genmodes.c: Likewise.
	* real.c: Likewise.
	* real.h: Likewise.
	* recog.c: Likewise.
	* recog.h: Likewise.
	* regrename.c: Likewise.
	* tree.h: Likewise.

From-SVN: r85153
2004-07-25 19:57:24 +02:00
Richard Henderson
b785f485ec c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P on the RESULT_DECL.
* c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P
        on the RESULT_DECL.
        * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
        * integrate.c (copy_decl_for_inlining): Copy DECL_ARTIFICIAL and
        DECL_IGNORED_P to new decl.
ada/
        * utils.c (create_subprog_decl): Set DECL_ARTIFICIAL and
        DECL_IGNORED_P on RESULT_DECL.
cp/
        * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
        DECL_IGNORED_P on RESULT_DECL.
        * semantics.c (finalize_nrv): Copy them too.
fortran/
        * trans-decl.c (gfc_build_function_decl): Set DECL_ARTIFICIAL
        and DECL_IGNORED_P on RESULT_DECL.
        (gfc_generate_constructors): Likewise.
java/
        * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.

From-SVN: r85145
2004-07-25 01:10:28 -07:00
Zack Weinberg
c5e36c09e5 Zack Weinberg <zack@codesourcery.com
2004-07-24  Alexander Kabaev  <kan@freebsd.org>
	    Zack Weinberg  <zack@codesourcery.com

	PR 16684
	* c-decl.c (diagnose_mismatched_decls): Don't issue a
	redundant-declaration warning the first time a builtin is
	declared explicitly.
testsuite:
	* gcc.dg/Wredundant-decls-1.c: New test case.

From-SVN: r85140
2004-07-25 03:58:50 +00:00
Bernardo Innocenti
e18476eb94 c-common.c: Convert ATTRIBUTE_UNUSED to ARG_UNUSED in parameter lists.
* c-common.c: Convert ATTRIBUTE_UNUSED to ARG_UNUSED in parameter
	lists.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-lex.c: Likewise.
	* c-opts.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* gencheck.c: Likewise.
	* genconditions.c: Likewise.
	* genconfig.c: Likewise.
	* genflags.c: Likewise.
	* gengtype.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-none.c: Likewise.
	* langhooks.c: Likewise.
	* statistics.h: Likewise.
	* stub-objc.c: Likewise.
	* java/decl.c: Likewise.

From-SVN: r85128
2004-07-25 02:13:01 +02:00
Joseph Myers
7eb01bd829 c-decl.c (start_function): Form composite type of function types rather than copying type from previous...
* c-decl.c (start_function): Form composite type of function types
	rather than copying type from previous prototype declaration.

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

From-SVN: r85093
2004-07-23 20:22:13 +01:00
Joseph Myers
e508a0190b re PR c/15052 (gcc frontend accepts mismatched function declaration/defintion)
PR c/15052
	* c-decl.c (grokdeclarator): Only pedwarn for qualified void
	return type on function definitions.  Move other warnings for
	qualified return type to -Wreturn-type.  Do not condition any such
	warnings on -pedantic.  Update comments.
	(start_function): Only copy function type from previous prototype
	declaration if return types are compatible.
	* c-typeck.c (function_types_compatible_p): Don't condition
	warning for incompatibility of volatile qualifiers on the return
	type on -pedantic.  Update comment.
	* doc/invoke.texi (-Wreturn-type, -Wextra): Update.

testsuite:
	* gcc.dg/noreturn-5.c: Test qualifiers on function type instead of
	on return type.
	* gcc.dg/qual-return-1.c: Use -Wreturn-type.  Update expected
	messages.
	* gcc.dg/qual-return-2.c: Update expected messages.
	* gcc.dg/qual-return-3.c, gcc.dg/qual-return-4.c: New tests.

From-SVN: r85024
2004-07-22 01:00:47 +01:00
Eric Christopher
caf93cb0d5 builtins.c (expand_builtin_setjmp_receiver): Fix comment for code removal.
2004-07-21  Eric Christopher  <echristo@redhat.com>

	* builtins.c (expand_builtin_setjmp_receiver): Fix comment for code
	removal.
	* c-decl.c (pop_scope): Ditto.
	* calls.c (expand_call): Remove call to current_nesting_level,
	update comment accordingly. Remove calls to expand_start_target_temps
	and expand_end_target_temps.
	* cfgexpand.c (construct_init_block): Remove call to
	expand_start_bindings_and_block.
	(construct_exit_block): Remove call to expand_end_bindings.
	* expr.c (safe_from_p): Remove BIND_EXPR handling.
	(expand_expr_real_1): Ditto. Fix formatting.
	(expand_vars): Delete.
	* stmt.c (POPSTACK): Remove block_stack.
	(stmt_status): Remove x_block_stack.
	(block_stack): Delete.
	(expand_start_bindings_and_block): Ditto.
	(expand_start_target_temps): Ditto.
	(expand_end_target_temps): Ditto.
	(current_nesting_level): Ditto.
	(warn_about_unused_variables): Ditto.
	(expand_end_bindings): Ditto.
	* tree.h: Remove declarations for above.

2004-07-21  Eric Christopher  <echristo@redhat.com>

	* decl.c (poplevel): Inline unused variable checking.
	Change formatting.

From-SVN: r85019
2004-07-21 19:23:03 +00:00
Frank Ch. Eigler
35b6fdcfc2 * Fix for g++/15861
2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* cgraphunit.c (cgraph_build_static_cdtor): Add priority argument.
	* cgraph.h: Update declaration.
	* c-decl.c (build_cdtor): Update call with default priority.
	* coverage.c (create_coverage): Ditto.
	* tree-mudflap.c (mf_init_fndecl): New tree.
	(mudflap_init): Set it.
	(mudflap_register_call): Arrange to call __mf_init before the first
	__mf_register call.
	(mudflap_finish_file): Mark the mudflap static initializer as extra
	high priority, to beat all C++ static constructors.

2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* jcf-parse.c (java_emit_static_constructor): Specify default
	priority.

From-SVN: r84760
2004-07-15 17:33:01 +00:00
Zack Weinberg
9affb2c7e4 c-opts.c (c_common_post_options): Force unit-at-a-time mode on when we have more than one input file.
2004-07-09  Zack Weinberg  <zack@codesourcery.com>
	    Andrew Pinski  <apinski@apple.com>

	* c-opts.c (c_common_post_options): Force unit-at-a-time mode
	on when we have more than one input file.
	(c_common_parse_file): Restore loop over all input files.
	Clarify diagnostic for -dy when YYDEBUG wasn't defined.

	* c-decl.c (set_type_context): New function.
	(pop_scope): Use it to set context of types.  When we
	encounter a TYPE_DECL, set the context of the attached type too.
	(pop_file_scope): Don't call cpp_undef_all here.
	(diagnose_mismatched_decls): Do not complain about a second
	definition of an 'extern inline' function if it's not in the
	same translation unit.  Do not complain about inline
	declaration after use if the use was in a different
	translation unit.
	(merge_decls): Don't clobber olddecl's DECL_CONTEXT.
	(pushdecl): Do not put DECL_EXTERNAL, !TREE_PUBLIC decls in
	the external scope.
	(pushdecl_top_level): Likewise.
	(grokdeclarator): Clarify what is going on with setting
	DECL_EXTERNAL on function types, a little.
	(c_write_global_declarations): Don't do anything if
	-fsyntax-only or errors have been encountered.

testsuite:
	* gcc.dg/noncompile/init-4.c: Remove bogus dg-error marker.

From-SVN: r84402
2004-07-09 21:30:35 +00:00
Zack Weinberg
36c1b0def4 c-decl.c (static_ctors, [...]): Make static.
* c-decl.c (static_ctors, static_dtors): Make static.
	(pop_file_scope): Call c_common_write_pch and
	cgraph_finalize_compilation_unit here.
	(build_cdtor): Moved here from c-objc-common.c; simplify.
	(c_write_global_declarations_1): Clarify comment.
	(c_write_global_declarations): Close the external scope before
	doing anything else.  Call build_cdtor, cgraph_optimize, and
	mudflap_finish_file here.
	* c-lang.c (finish_file): Don't call c_objc_common_finish_file.
	Clarify comment.
	* c-objc-common.c: No need to include cgraph.h.
	(build_cdtor): Moved to c-decl.c.
	(c_objc_common_finish_file): Delete.
	* c-tree.h: Update to match.
	* objc/objc-act.c (finish_file): Don't call c_objc_common_finish_file.
	(generate_static_references): Set TREE_USED before calling finish_decl.
	Eliminate unnecessary dummy declaration.  Call rest_of_decl_compilation
	on the static_instances_decl.

From-SVN: r84307
2004-07-08 19:50:17 +00:00
Zack Weinberg
5b02f0e004 c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope decls when...
* c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope
	decls when there is only one input translation unit.
	* langhooks.c (lhd_set_decl_assembler_name): Partially revert
	change of 2004-07-05; do not treat declarations with
	DECL_CONTEXT a TRANSLATION_UNIT_DECL specially.
	* opts.c (cur_in_fname): Delete.
	* opts.h: Likewise.
	* tree.c: Revert changes of 2004-07-05; no special treatment
	for TRANSLATION_UNIT_DECLs.
	* Makefile.in (tree.o): Update dependencies.

From-SVN: r84306
2004-07-08 19:49:08 +00:00
Joseph Myers
bc15d0efe4 re PR c/2511 (-pedantic not warning about bitfield overflow)
2004-07-08  Joseph S. Myers  <jsm@polyomino.org.uk>
            Neil Booth  <neil@daikokuya.co.uk>

	PR c/2511
	PR c/3325
	* c-decl.c (finish_struct): Ensure bit-fields are given the
	correct type.
	* c-common.c (c_common_signed_or_unsigned_type): For C, require
	the precision to match as well as the mode.
	* expr.c (reduce_to_bit_field_precision): New function.
	(expand_expr_real_1): Reduce expressions of bit-field type to
	proper precision.
	* langhooks.h (reduce_bit_field_operations): New hook.
	* langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
	Define.
	* c-lang.c, objc/objc-lang.c
	(LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define.
	* objc/objc-act.c (check_ivars): Convert types to bit-field types
	before checking.
	* tree.c (build_nonstandard_integer_type): New function.
	* tree.h (build_nonstandard_integer_type): New prototype.
	* tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't treat
	conversions between integer and boolean types as useless.

testsuite:
	* gcc.c-torture/execute/bitfld-1.x: Remove.
	* gcc.c-torture/execute/bitfld-3.c: New test.
	* gcc.dg/bitfld-2.c: Remove XFAILs.

Co-Authored-By: Neil Booth <neil@daikokuya.co.uk>

From-SVN: r84279
2004-07-08 09:45:05 +01:00
Richard Kenner
5377d5ba39 langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.
* langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.
	* langhooks.h (var_mod_type_p): Likewise.
	* c-decl.c (finish_decl): Add extra arg to variably_modified_type_p.
	* expr.c (count_type_elements): Properly handle return from
	array_type_nelts and properly test for overflow.
	* gimplify.c (gimplify_init_constructor): Properly handle return
	from array_type_nelts.
	(gimplify_addr_expr): Remove redundant clear of TREE_SIDE_EFFECTS.
	* integrate.c (copy_decl_for_inlining): Correct comments.
	* tree-inline.c (remap_decl): Update comments, remove dead code,
	and copy DECL_FIELD_OFFSET and DECL_QUALIFIER, if they exist.
	(remap_type): Only remap if variably modified by vars in function
	being inlined.
	(copy_body_r): Use compatible_type langhooks to see when can fold.
	(setup_one_parameter): Don't remap type.
	(inline_forbidden_p_1): Add arg to variably_modified_type_p.
	* tree.c (recompute_tree_invarant_for_addr_expr): Properly
	compute TREE_INVARIANT for decl case.
	(find_var_from_fn): New function.
	(variably_modified_type_p): Add arg and call new function.
	* tree.h (variably_modified_type_p): Add extra arg.

	* cp/cp-lang.c (cp_var_mod_type_p): Add extra arg.
	* cp/decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
	* cp/pt.c (check_instantiated_args, unify): Likewise.

From-SVN: r84144
2004-07-05 22:20:16 -04:00
Joseph Myers
8f99553ff6 c-decl.c, [...]: Don't check TARGET_MEM_FUNCTIONS.
* c-decl.c, config/m32r/m32r.c, expr.c, optabs.c: Don't check
	TARGET_MEM_FUNCTIONS.
	* system.h: Poison TARGET_MEM_FUNCTIONS.
	* libfuncs.h (LTI_bcopy, LTI_bcmp, LTI_bzero, bcopy_libfunc,
	bcmp_libfunc, bzero_libfunc): Remove.
	* optabs.c (init_obtabs): Don't set bcopy_libfunc, bcmp_libfunc or
	bzero_libfunc.
	* doc/tm.texi (TARGET_MEM_FUNCTIONS): Remove.
	* doc/standards.texi: Don't mention calling BSD string functions.
	* doc/invoke.texi: Likewise.  Mention that memmove may be called.
	* config/vax/t-memfuncs: New.
	* config/memcmp.c, config/memcpy.c, config/memmove.c,
	config/memset.c: New.
	* config/pdp11/t-pdp11 (LIB2FUNCS_EXTRA): Use these files.
	* config.gcc (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*): Use
	vax/t-memfuncs.
	* config/alpha/alpha.h, config/arc/arc.h, config/arm/arm.h,
	config/avr/avr.h, config/c4x/c4x.h, config/cris/aout.h,
	config/elfos.h, config/gnu.h, config/h8300/h8300.h,
	config/i386/gas.h, config/ia64/ia64.h, config/interix.h,
	config/ip2k/ip2k.h, config/lynx-ng.h, config/m32r/m32r.h,
	config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h,
	config/netbsd.h, config/openbsd.h, config/pa/pa.h,
	config/rs6000/rs6000.h, config/rtems.h, config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
	config/svr3.h: Don't define TARGET_MEM_FUNCTIONS.

From-SVN: r84130
2004-07-05 20:49:20 +01:00
Zack Weinberg
6de6668085 langhooks.c: Don't include gt-langhooks.h.
* langhooks.c: Don't include gt-langhooks.h.
	(var_labelno): Delete.
	(lhd_set_decl_assembler_name): Do not append a distinguishing
	number to file-scope internal-linkage declarations for the first
	input file, even if they have DECL_CONTEXT set.  Use DECL_UID of
	the declaration itself (if at block scope), or its containing
	TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing
	number.

	* opts.c (cur_in_fname): New global.
	* opts.h: Declare it.
	* tree.c: Include opts.h.
	(make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it
	DECL_UID equal to cur_in_fname.
	(copy_node_stat): Do not change DECL_UID when copying a
	TRANSLATION_UNIT_DECL.
	(build_common_tree_nodes): Adjust next_decl_uid to reserve the
	range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs.

	* c-decl.c (c_static_assembler_name): Delete.
	* c-tree.h (c_static_assembler_name): Delete prototype.
	* c-lang.c, objc/objc-lang.c: Don't override
	LANG_HOOKS_SET_DECL_ASSEMBLER_NAME.

	* Makefile.in (tree.o): Update dependencies.
	(GTFILES): Remove langhooks.c.

cp:
	* decl.c (cxx_init_decl_processing): Call
	build_common_tree_nodes before creating the global NAMESPACE_DECL.

From-SVN: r84123
2004-07-05 17:28:37 +00:00
Zack Weinberg
9aaabf8aa7 c-decl.c (struct c_binding): Remove contour field; add depth, invisible, nested fields.
* c-decl.c (struct c_binding): Remove contour field; add
	depth, invisible, nested fields.
	(B_IN_SCOPE, B_IN_CURRENT_SCOPE, B_IN_FILE_SCOPE)
	(B_IN_EXTERNAL_SCOPE): New convenience macros.
	(bind): Add invisible and nested arguments. Initialize
	new fields of struct c_binding; adjust loop scanning for
	insertion point.
	(free_binding_and_advance): Clear structure with memset.
	(pop_scope): Adjust to match.  Set DECL_CONTEXT on everything
	in file scope, even if it's in external scope too.
	(pushdecl): Adjust to match.  Create invisible file-scope
	declarations for block-scope forward declarations of static functions.
	(pushtag, warn_if_shadowing, pushdecl_top_level, implicitly_declare)
	(undeclared_variable, lookup_label, declare_label, define_label)
	(lookup_tag, lookup_name, lookup_name_in_scope, builtin_function)
	(c_make_fname_decl, store_parm_decls_newstyle, identifier_global_value)
	(store_parm_decls_oldstyle): Adjust to match.
	(diagnose_mismatched_decls): Correct handling of linkage clashes.
	(merge_decls): No need to copy C_DECL_IN_EXTERNAL_SCOPE.

	* c-tree.h (C_DECL_IN_EXTERNAL_SCOPE): Delete.
	(C_DECL_DECLARED_BUILTIN, C_DECL_REGISTER): Slide down one.

From-SVN: r84046
2004-07-03 02:35:05 +00:00
Richard Henderson
82c8274320 c-decl.c (grokdeclarator): Don't frob current_function_decl around variable_size.
* c-decl.c (grokdeclarator): Don't frob current_function_decl
        around variable_size.
        (set_decl_nonlocal): Remove.
        (store_parm_decls): Add stmts for pending sizes.
        * calls.c (calls_function, calls_function_1): Remove.
        (precompute_arguments): Don't call it.
        * cfgexpand.c (set_save_expr_context): Remove.
        (tree_expand_cfg): Don't call it.
        * dwarf2out.c (add_bound_info): Don't handle SAVE_EXPR.
        (dwarf2out_finish): Likewise.
        * expr.c (emit_block_move): Adjust addresses to BLKmode.
        (store_constructor): Don't pre-evaluate SAVE_EXPR.
        (safe_from_p): Don't queue SAVE_EXPRs.
        (expand_expr_real_1 <case SAVE_EXPR>): Rewrite to expect,
        or build plain VAR_DECLs.
        * fold-const.c (twoval_comparison_p): Don't look at SAVE_EXPR_RTL.
        (fold): Likewise.
        (fold_checksum_tree): Don't special-case SAVE_EXPR.
        * function.c (free_after_compilation): Don't clear x_save_expr_regs.
        (put_var_into_stack): Don't handle SAVE_EXPR.
        (gen_mem_addressof): Likewise.
        * function.h (struct function): Remove x_save_expr_regs.
        (save_expr_regs): Remove.
        * gengtype.c (adjust_field_tree_exp): Don't special-case SAVE_EXPR.
        * print-tree.c (print_node): Don't dump SAVE_EXPR_NOPLACEHOLDER.
        * stor-layout.c (variable_size): Don't set it.
        (force_type_save_exprs, force_type_save_exprs_1): Remove.
        * tree-inline.c (remap_save_expr): Remove fn argument.  Update
        all callers.  Don't set SAVE_EXPR_CONTEXT.
        * tree-inline.h (remap_save_expr): Update decl.
        * tree.c (save_expr): Update build size.
        (first_rtl_op): Don't handle SAVE_EXPR.
        (unsave_expr_1, contains_placeholder_p): Likewise.
        (decl_function_context): Likewise.
        * tree.def (SAVE_EXPR): Remove args 1 and 2.
        * tree.h (SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL): Remove.
        (SAVE_EXPR_NOPLACEHOLDER, SAVE_EXPR_PERSISTENT_P): Remove.
cp/
        * tree.c (cp_unsave_r): Update remap_save_expr call.
java/
        * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.

From-SVN: r84036
2004-07-02 17:15:50 -07:00
Richard Henderson
4025c040c5 function.h (struct function): Remove x_whole_function_mode_p.
* function.h (struct function): Remove x_whole_function_mode_p.
        * c-decl.c (store_parm_decls): Don't set it.
        * tree-optimize.c (tree_rest_of_compilation): Likewise.
        * passes.c (rest_of_compilation): Don't check it.
        * stmt.c (expand_fixup): Likewise.
        * function.c (fixup_var_refs_insn): Remove unused variable.
fortran/
        * trans-decl.c (gfc_generate_function_code): Don't set
        x_whole_function_mode_p.
        (gfc_generate_constructors): Likewise.

From-SVN: r83947
2004-06-30 18:12:19 -07:00
Richard Henderson
6a0bec2ce1 tree.h (immediate_size_expand): Delete.
* tree.h (immediate_size_expand): Delete.
        * stor-layout.c (immediate_size_expand): Delete.
        (variable_size): Don't look at it.
        * c-decl.c (push_parm_decl): Don't frob immediate_size_expand.
        (start_function): Likewise.
        * cfgexpand.c (construct_exit_block): Likewise.
        * function.c (init_function_start, expand_function_end): Likewise.
        * tree-optimize.c (tree_rest_of_compilation): Likewise.
cp/
        * decl.c (start_preparsed_function): Don't set immediate_size_expand.
        * method.c (use_thunk): Likewise.
fortran/
        * trans-decl.c (gfc_generate_function_code): Don't set
        immediate_size_expand.
        (gfc_generate_constructors): Likewise.

From-SVN: r83946
2004-06-30 17:38:38 -07:00
Per Bothner
3c20847b83 Conditionally compile support for --enable-mapped_location.
* basic-block.h (struct edge_def):  Use new source_locus typedef.
	* c-common.c (fname_decl):  Update save/clear/store of input_location.
	(c_do_switch_warnings):  Update for USE_MAPPED_LOCATION case.
	* c-decl.c:  Likewise.
	* c-dump.c (dump_stmt):  Likewise.
	* c-gimplify.c (c-gimplify.c):  Generalize using SET_EXPR_LOCATION.
	* c-lex.c (cb_line_change):  If USE_MAPPED_LOCATION use token's	src_loc
	to set input_location direction, rather than using linemap_lookup.
	(fe_file_change, cb_def_pragma):  Again use source_location directly.
	* c-opts.c (saved_lineno):  Remove static variable.
	(c_common_post_options, c_common_init):  Don't bothner to save,
	clear and restore input_Location - now handled by lang_dependent_init.
	* function.c (init_function_start):  Use new DECL_IS_BUILTIN macro.
	* xcoffout.c (xcoff_assign_fundamental_type_number):  Likewise.

From-SVN: r83919
2004-06-30 11:05:07 -07:00
Andrew Pinski
1f4f60fc3f re PR c/14963 (Unknown types cause ICE in function declarations)
2004-06-27  Andrew Pinski  <pinskia@physics.uc.edu>

        PR c/14963
        * c-decl.c (start_decl): Check for null types.

From-SVN: r83744
2004-06-27 13:47:14 -07:00
Richard Kenner
350fae6628 c-common.c (c_safe_from_p, [...]): Deleted.
2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

        * c-common.c (c_safe_from_p, c_walk_subtrees): Deleted.
        * c-common.def (DECL_STMT): Remove.
        * c-common.h (DECL_STMT_DECL): Deleted.
        (COMPOUNT_LITERAL_EXPR_DECL): Use DECL_EXPR_DECL.
        (c_safe_from_p, c_walk_subtrees): Deleted.
        * c-decl.c, c-parse.in, c-pretty-print.c: DECL_STMT now DECL_EXPR.
        * c-dump.c (c_dump_tree, case DECL_STMT): Deleted.
        * c-gimplify.c (gimplify_decl_stmt): Deleted.
        (gimplify_compound_literal_expr): Use DECL_EXPR_DECL
        and gimplify_and_add.
        (c_gimplify_expr, case DECL_EXPR): New case.
        (c_gimplify_expr, case DECL_STMT): Deleted.
        * c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise.
        (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
        * expr.c (safe_from_p, case 's'): New case.
        * gimplify.c (gimplify_decl_expr): New function.
        (gimplify_expr, case DECL_EXPR): New case.
        * tree-inline.c (walk_tree): Walk into all fields of a type and
        decl only if they are in a DECL_EXPR.
        (mark_local_for_remap_r): Minor code cleanup.
        * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else.
        * tree.c (has_cleanups, case DECL_EXPR): New case.
        * tree.def (DECL_EXPR): New code.
        * tree.h (DECL_EXPR_DECL): New macro.

        * objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.

From-SVN: r83721
2004-06-26 17:11:23 -04:00
Richard Henderson
506e271035 c-decl.c (c_in_iteration_stmt, [...]): Remove.
* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove.
	(c_break_label, c_cont_label): New.
	(start_function): Update initializations.
	(c_push_function_context): Update saves.
	(c_pop_function_context): Update restores.
	* c-parse.in: Update expected conflicts.
	(stmt_count, compstmt_count): Remove.  Remove all updates.
	(if_prefix, simple_if, do_stmt_start): Remove.
	(lineno_labeled_stmt): Remove.
	(lineno_labels): New.
	(c99_block_lineno_labeled_stmt): Use it.
	(lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling
	annotate_with_locus.
	(select_or_iter_stmt): Replace by ...
	(condition, if_statement_1, if_statement_2, if_statement,
	start_break, start_continue, while_statement, do_statement,
	for_cond_expr, for_incr_expr, for_statement, switch_statement): New.
	(stmt): Split out ...
	(stmt_nocomp): ... this.  Use c_finish_bc_stmt, c_finish_goto_label,
	c_finish_goto_ptr.
	* c-semantics.c (add_stmt): Don't add line numbers to labels.
	* c-tree.h: Update prototypes.
	(struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt;
	add x_break_label, x_cont_label, x_switch_stack.
	(c_switch_stack): Declare.
	* c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New.
	(c_finish_return): Return the statement.
	(c_switch_stack): Rename from switch_stack; export.
	(if_elt, if_stack, if_stack_space, if_stack_pointer): Remove.
	(c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else,
	c_finish_else): Remove.
	(c_finish_if_stmt): Rewrite to perform the entire operation.
	(c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt,
	c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
	c_finish_for_stmt_incr, c_finish_for_stmt): Remove.
	(c_finish_loop): New.
	(c_finish_bc_stmt): New.
	(c_finish_expr_stmt): Return the statement.  Split out...
	(c_process_expr_stmt): ... this.  Don't add locus to error marks.
	* gimplify.c (gimplify_cond_expr): Accept NULL type statements.
	* tree-gimple.c (is_gimple_stmt): Likewise.
	* tree-pretty-print.c (dump_generic_node <COND_EXPR>): Likewise.
	(print_struct_decl): Delete empty compound statement.
	* objc/objc-act.c (objc_build_throw_stmt): Return the statement.
	* objc/objc-act.h: Update decl.

From-SVN: r83620
2004-06-24 16:12:30 -07:00
Ulrich Weigand
bb2d400f61 c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN.
* c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN.
	* system.h (DEFAULT_MAIN_RETURN): Poison.
	* doc/tm.texi (DEFAULT_MAIN_RETURN): Remove documentation.

From-SVN: r83592
2004-06-24 12:09:44 +00:00
Andrew Pinski
f6bf7bb617 Radar #: 3701874
2004-06-21  Andrew Pinski  <apinski@apple.com>

        Radar #: 3701874
        * c-decl.c (push_file_scope): Return early if we already
        have a file scope.

2004-06-21  Andrew Pinski  <apinski@apple.com>

        * gcc.dg/pch/struct-1.c: New.
        * gcc.dg/pch/struct-1.hs: New.

From-SVN: r83483
2004-06-22 00:23:25 -07:00
Richard Kenner
44de5aeb00 alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset.
* alias.c (adjust_offset_for_component_ref): Use
	component_ref_field_offset.
	* c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
	* c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
	(gimplify_decl_stmt): Call gimplify_type_sizes for type.
	For decl, call gimplify_one_sizepos and use statement list.
	(gimplify_compound_literal_expr): New arg PRE_P.
	Add statement to PRE_P list and return DECL.
	(c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
	gimplify_compound_literal_expr.
	* c-tree.h (getdecls): Deleted.
	* c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
	(build_array_ref): Add two operands for ARRAY_REF.
	(build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
	COMPOUND_LITERAL_EXPR.
	* coverage.c (tree_coverage_counter_ref): Add new operands
	for ARRAY_REF.
	* emit-rtl.c (component_ref_for_mem_expr): Add new operand
	for COMPONENT_REF.
	(set_mem_attributes_minus_bitpos): Use array_ref_low_bound
	and array_ref_element_size.
	(widen_memory_access):Use component_ref_field_offset.
	* explow.c (update_nonlocal_goto_save_area): Add two operands
	for ARRAY_REF.
	* expr.c (array_ref_element_size, array_ref_low_bound): New functions.
	(component_ref_field_offset): Likewise.
	(get_inner_reference): Use them.
	(expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
	* fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
	(fold_read_from_constant_string): Use array_ref_low_bound.
	Verify that result is a character type.
	(build_fold_indirect_ref): Add two operands for ARRAY_REF.
	* function.c (expand_function_start): Likewise.
	* gimple-low.c (expand_var_p): Delete duplicated line.
	* gimplify.c: Add static decls for local functions.
	(cgraph.h): Now included.
	(create_tmp_var): Remove check for ARRAY_TYPE.
	(copy_if_shared_r): Look at bounds and sizes of types.
	(build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
	(gimplify_exit_expr, shortcut_cond_expr): Likewise.
	(gimplify_save_expr, gimple_push_cleanup): Likewise.
	(gimplify_init_constructor): Likewise.
	WANT_VALUE now bool.
	If empty list with no result wanted, return GS_UNHANDLED.
	Add additional operands for ARRAY_REF and COMPONENT_REF.
	(canonicalize_component_ref): Convert to &array[L].
	(gimplify_array_ref_to_plus): Use array_ref_element_size and
	array_ref_lower_bound.
	(build_addr_expr_with_type, build_addr_expr): New functions.
	(gimplify_compound_lval): WANT_LVALUE now bool.
	Major rework to allow handle_component_p and initialize and
	gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
	COMPONENT_REF.
	(gimplify_array_ref): Deleted.
	(gimplify_self_mod_expr): WANT_VALUE now bool.
	(gimplify_modify_expr): Gimplify to_p and from_p later.
	Factor out code into gimplify_modify_expr_rhs and call twice.
	Move variable-size code earlier and handle PLACEHOLDER_EXPR.
	(gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
	(gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
	(gimplify_expr, case ARRAY_REF): Delete special case.
	Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
	IMAGPART, and REALPART the same way.
	(gimplify_expr, case VIEW_CONVERT_EXPR): New case.
	(gimplify_expr): Call gimplify_variable_sized_compare if applicable.
	Call alloc_stmt_list instead of build_empty_stmt.
	Deal with _REF that's volatile.
	(gimplify_type_sizes, gimplify_one_sizepos): New functions.
	(unshare_body, unvisit_body): New functions.
	(gimplify_body): Call them.
	* stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
	* stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
	* tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
	* tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
	like ARRAY_REF.
	(verify_expr, case ADDR_EXPR): Use handled_component_p.
	* tree-dfa.c (get_virtual_var): Likewise.
	* tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
	New cases to dump new operands; likewise for ARRAY_RANGE_REF.
	* tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
	* tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
	and INDIRECT_REF.
	(get_base_address): Use handled_component_p.
	* tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
	* tree-line.c (walk_tree): Walk more things for types and decls.
	* tree-mudflap.c (mf_build_check_statement_for): Add new operands
	for ARRAY_REF and COMPONENT_REF.
	(mx_xform_derefs_1): Clean up usage of decl sizes.
	* tree-nested.c (build_addr): Use handled_component_p.
	(walk_stmts, case CATCH_EXPR): Add missing "break".
	(get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
	(finalize_nesting_tree_1): Likewise.
	(convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
	and process additional operands.
	(convert_local_reference): Likewise.
	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
	ARRAY_RANGE_REF similarly to ARRAY_REF.
	* tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
	like RECORD_TYPE.
	(dump_generic_node, case COMPONENT_REF): Print offset operand.
	(dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
	and print lower bound and element size for both.
	(op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
	* tree-sra.c (csc_build_component_ref): Add new operand.
	(scalarize_call_expr): Use get_base_address.
	* tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
	(maybe_fold_offset_to_array_ref): Rework to handle input having an
	ARRAY_REF, refine handling of lower bound, and add new operands
	for ARRAY_REF.
	(maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
	(maybe_fold_stmt_indirect): Only fold *&B to B if types match.
	(maybe_fold_stmt_addition): Only handle constant lower bound.
	* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
	Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
	Look at new offset operand of COMPONENT_REF.
	* tree-ssa.c (set_is_used): Use handled_component_p.
	* tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
	(stabilize_reference, case COMPONENT_REF): Likewise.
	(stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
	(recompute_tree_invariant_for_addr_expr): Completely rework to
	be more precise.  Also set TREE_SIDE_EFFECTS.
	(build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
	(build2_stat, build3_stat, build4_stat): For references,
	propagate TREE_THIS_VOLATILE.
	(get_unwidened): Add new operand for COMPONENT_REF.
	(get_narrower): Likewise; use host_integerp for DECL_SIZE.
	* tree.def (COMPONENT_REF): Add new operand.
	(ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
	* tree.h (array_ref_element_size, array_ref_low_bound): New decls.
	(component_ref_field_offset): Likewise.
	* config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
	(alpha_gimplify_va_arg): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
	* config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
	* config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
	Likewise.
	* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
	* config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
	* config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
	Likewise.
	(xstormy16_expand_builtin_va_arg): Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.

	* cp/call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
	(build_new_method_call): Likewise.
	* cp/decl.c (local_variable_p_walkfn): Don't walk into types.
	* cp/decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
	(build_anon_union_vars): Add new operand for COMPONENT_REF.
	* cp/init.c (buld_new): Add new operand for ARRAY_REF.
	* cp/method.c (do_build_copy_constructor): New op for COMPONENT_REF.
	(do_build_assign_ref): Likewise.
	* cp/parser.c (cp_parser_direct_new_declarator): Add new operands
	for ARRAY_REF.
	(cp_parser_direct_declarator): Likewise.
	* cp/pt.c (tsubst): Likewise.
	(tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
 	for COMPONENT_REF.
	* cp/semantics.c (finish_non_static_data_member): Add new operand
	for COMPONENT_REF.
	* cp/typeck.c (build_class_member_access_expr): Likewise.
	(build_class_member_access_expr, finish_class_member_access_expr):
	Likewise.
	(build_ptrmemfunc_access_expr): Likewise.
	(build_array_ref): Add new operands for ARRAY_REF.
	* cp/typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
	* cp/tree.c (count_trees_r, no_linkage_helper): Don't walk in types.

	* fortran/f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted.
	* fortran/trans-array.c (gfc_conv_descriptor_data): Add operand
	for COMPONENT_REF.
	(gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise.
	(gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise.
	(gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise.
	* fortran/trans-common.c (create_common): Likewise.
	* fortran/trans-expr.c (gfc_conv_component_ref): Likewise.
	* fortran/trans-io.c (set_parameter_value): Likewise.
	(set_parameter_ref, set_string, set_flag, io_result): Likewise.
	(transfer_expr): Likewise.
	* fortran/trans-decl.c (gfc_trans_auto_character_variable):
	Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified.
	(gfc_simplify_function): New function.
	(gfc_generate_function-code): Properly handle nested functions.
	* fortran/trans.c (gfc_build_array_ref): Add two new operands
	for ARRAY_REF.

	* java/class.c (build_class_ref): Add new operand for COMPONENT_REF.
	(build_static_field_ref): Likewise and add new operands for ARRAY_REF.
	* java/constants.c (build_ref_from_constant_pool): Likewise.
	* java/expr.c (build_java_array_length_access): Likewise.
	(build_get_class, build_field_ref, build_known_method_ref): Likewise.
	(invoke_build_dtable, build_invokevirtual): Likewise.
	(build_invokeinterface, java_expand_expr): Likewise.
	(emit_init_test_initialization): Likewise.
	* java/java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* java/parse.y (make_qualifed_name, build_array_ref): Likewise.

	* objc/ojbc-act.c (generate_static_references): Add additional
	operands to ARRAY_REF.
	(generate_strings, build_method_prototype_list_template): Likewise.
	(generate_protocol_list): Likewise.

From-SVN: r83474
2004-06-21 23:07:05 -04:00
Richard Henderson
5088b05874 c-common.def (RETURN_STMT): Remove.
* c-common.def (RETURN_STMT): Remove.
        * c-common.h (RETURN_STMT_EXPR): Remove.
        (c_expand_return, build_return_stmt): Remove.
        (c_common_stmt_codes): Remove RETURN_STMT.
        * c-dump.c (dump_next_stmt): Remove.
        (c_dump_tree): Remove RETURN_STMT.
        * c-decl.c (finish_function): Use c_finish_return.
        * c-parse.in (stmt): Likewise.
        * c-gimplify.c (gimplify_return_stmt): Remove.
        (c_gimplify_expr): Remove RETURN_STMT.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-semantics.c (build_return_stmt): Remove.
        * c-tree.h (c_finish_return): Declare.
        * c-typeck.c (c_finish_return): Rename from c_expand_return.
        Return void.  Build RETURN_EXPR directly.
        * tree-dump.h (dump_next_stmt): Remove.
cp/
        * dump.c (cp_dump_tree): Don't use dump_next_stmt.
        * parser.c (cp_parser_jump_statement): Update commentary.
        * pt.c (tsubst_expr): Use RETURN_EXPR.
        * semantics.c (finish_return_stmt): Likewise.
        (finalize_nrv_r): Likewise.
        * typeck.c, typeck2.c: Update file start commentary.

From-SVN: r83461
2004-06-21 16:30:30 -07:00
Zack Weinberg
0b4da8a182 c-decl.c (start_function): Don't call make_decl_rtl.
* c-decl.c (start_function): Don't call make_decl_rtl.  Don't
	look at TREE_ADDRESSABLE of symbol name.

From-SVN: r83460
2004-06-21 23:04:49 +00:00
Richard Henderson
543a0daa84 c-common.h (add_decl_stmt): Move to cp-tree.h.
* c-common.h (add_decl_stmt): Move to cp-tree.h.
        * c-decl.c (finish_decl): Don't use add_decl_stmt.
        * c-parse.in: Likewise.
        * c-gimplify.c (gimplify_expr_stmt): Don't build CLEANUP_POINT_EXPR.
        (gimplify_c_loop, gimplify_return_stmt, gimplify_decl_stmt): Likewise.
        * c-semantics.c (add_decl_stmt): Move to cp/semantics.c.
cp/
        * cp-tree.h (add_decl_stmt): Declare.
        * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
        * semantics.c (maybe_cleanup_point_expr): New.
        (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
        finish_for_expr, finish_switch_cond): Use it.
        (finalize_nrv_r): Don't build an EXPR_STMT.  Don't frob TREE_CHAIN.

From-SVN: r83409
2004-06-20 03:10:02 -07:00
Zack Weinberg
84b8b0e04d c-common.h (has_c_linkage): New interface.
* c-common.h (has_c_linkage): New interface.
	* c-cppbuiltin.c: Include target.h.
	(c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and
	__PRAGMA_EXTERN_PREFIX when appropriate.
	* c-pragma.c: Include target.h.
	Document clarified semantics of symbol-renaming #pragmas.
	(handle_pragma_redefine_extname, handle_pragma_extern_prefix)
	(maybe_apply_renaming_pragma): Rewrite according to clarified
	semantics.  Always recognize, but do not necessarily execute.
	(init_pragma): Unconditionally register symbol-renaming pragmas.
	* system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME
	and HANDLE_PRAGMA_EXTERN_PREFIX.
	* target.h (struct gcc_target): Add handle_pragma_redefine_extname
	and handle_pragma_extern_prefix flags.
	* target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
	and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX.
	* Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies.
	* config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME,
	not HANDLE_PRAGMA_REDEFINE_EXTNAME.
	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME.
	(TRANSFER_FROM_TRAMPOLINE): Prototype mprotect.
	* config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,
	not HANDLE_PRAGMA_EXTERN_PREFIX.
	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX.
	* doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine
	into one section "Symbol-Renaming Pragmas"; clarify; document
	adjusted semantics.

	* builtins.c (expand_builtin): Do not issue error for a builtin
	with no special case code and no DECL_ASSEMBLER_NAME; just do the
	library call.
	* c-decl.c (builtin_function): Don't call make_decl_rtl.
	* c-objc-common.c (has_c_linkage): Stub implementation.
	* cgraphunit.c (cgraph_expand_function)
	(cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS.

cp:
	* cp-lang.c (has_c_linkage): Implement.

	* cp-tree.h (set_mangled_name_for_decl): Don't prototype.
	* decl.c (duplicate_decls): Use COPY_DECL_RTL.
	(builtin_function_1): Don't call make_decl_rtl.
	(build_cp_library_fn): Don't call set_mangled_name_for_decl.
	(grokvardecl): Don't call mangle_decl.
	* except.c (nothrow_libfn_p): Look at DECL_NAME, not
	DECL_ASSEMBLER_NAME.
	* method.c (set_mangled_name_for_decl): Delete.
	* name-lookup.c (pushdecl): When a local extern shadows a
	file-scope declaration of the same object, give both DECLs the
	same DECL_UID.
	* typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
	on DECL_ASSEMBLER_NAME.

testsuite:
	* g++.dg/expr/enum1.C, g++.dg/opt/const3.C: Declare abort with
	extern "C".
	* g++.dg/other/pragma-re-1.C: Add comments.

From-SVN: r83405
2004-06-20 08:34:54 +00:00
Richard Henderson
093c715302 c-common.c (flag_objc_sjlj_exceptions): New.
* c-common.c (flag_objc_sjlj_exceptions): New.
	* c-common.h (flag_objc_sjlj_exceptions): Declare.
	* c-opts.c (c_common_handle_option): Set it.
	(c_common_post_options): Handle interation of different
	objective-c exception and runtime switches.
	* c-decl.c (c_eh_initialized_p): New.
	(finish_decl): Use it instead of local eh_initialized_p.
	* c-parse.in (nested_function, notype_nested_function): Record
	the result of compstmt.
	(compstmt_or_error): Likewise.
	(compstmt): Don't add_stmt the result.
	(stmt): Don't return anything.  Rewrite objc try and sync rules.
	(objc_try_stmt, objc_catch_list): Remove.
	(objc_catch_block, objc_finally_block): Remove.
	(objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New.
	(objc_try_catch_clause, objc_finally_clause): New.
	(objc_try_catch_stmt): Rewrite.
	* c-tree.h (c_eh_initialized_p): Declare.
	* c-opt (fobjc-sjlj-exceptions): New.
	* except.c (output_function_exception_table): Don't call cgraph
	on non-decls.
	* objc/objc-act.c (UTAG_EXCDATA_VAR, UTAG_CAUGHTEXC_VAR,
	UTAG_RETHROWEXC_VAR, UTAG_EVALONCE_VAR, struct val_stack,
	catch_count_stack, exc_binding_stack, if_nesting_count,
	blk_nesting_count, objc_enter_block, objc_exit_block,
	objc_declare_variable, val_stack_push, val_stack_pop,
	objc_build_try_enter_fragment, objc_build_extract_expr,
	objc_build_try_exit_fragment, objc_build_extract_fragment,
	objc_build_try_prologue, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_catch_epilogue,
	objc_build_finally_prologue, objc_build_finally_epilogue,
	objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
	objc_build_synchronized_epilogue): Remove.
	(objc_create_temporary_var, struct objc_try_context, cur_try_context,
	objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr,
	next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp,
	next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
	next_sjlj_build_try_catch_finally, objc_begin_try_stmt,
	objc_begin_catch_clause, objc_finish_catch_clause,
	objc_build_finally_clause, objc_finish_try_stmt,
	objc_build_synchronized): New.
	(objc_is_object_id, objc_is_class_id): New.
	(objc_comptypes): Use them.
	(build_next_objc_exception_stuff): Break NeXT sjlj out from
	build_objc_exception_stuff.
	(synth_module_prologue): Update to match.
	(objc_build_throw_stmt): Use cur_try_context to decide if
	we're in a @catch.
	* objc/objc-act.h: Update prototypes.
	(OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove.
testsuite/
        * objc.dg/sync-1.m: New.
        * objc.dg/try-catch-1.m: Don't force next runtime.
        * objc.dg/try-catch-3.m, objc.dg/try-catch-4.m: Likewise.
        * objc.dg/try-catch-2.m: Likewise.  Enable everywhere.  Remove
        shadowed catch clause.
        * objc.dg/try-catch-5.m: New.

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

From-SVN: r83221
2004-06-15 18:21:38 -07:00
Joseph Myers
132da1a5aa c-typeck.c (comptypes, [...]): Remove flags parameter.
* c-typeck.c (comptypes, tagged_types_tu_compatible_p,
	function_types_compatible_p, type_lists_compatible_p): Remove
	flags parameter.
	* c-tree.h (comptypes): Likewise.
	(COMPARE_STRICT): Remove.
	* c-decl.c, c-lang.c, c-parse.in, c-typeck.c, objc/objc-act.c: All
	callers changed.

From-SVN: r83061
2004-06-13 18:14:09 +01:00
Eric Christopher
118a3a8ba8 c-decl.c (diagnose_mismatched_decls): Improve error message.
2004-06-13  Eric Christopher  <echristo@redhat.com>

	* c-decl.c (diagnose_mismatched_decls): Improve error message.
	Remove unused code.
	* c-typeck.c (comptypes): Add location in standard we're checking.

2004-06-13  Eric Christopher  <echristo@redhat.com>

	* gcc.dg/noncompile/redecl-1.c: Fix error message.

From-SVN: r83060
2004-06-13 16:24:52 +00:00
Alexandre Oliva
0b395e1959 re PR middle-end/15666 ([unit-at-a-time] Gcc abort on valid code)
PR middle-end/15666
* c-decl.c (finish_decl): Use change_decl_assembler_name for the
builtin decl as well.

From-SVN: r82706
2004-06-07 19:06:28 +00:00
Joseph Myers
10bc1b1bec re PR c/13519 (typeof(nonconst+const) is const)
PR c/13519
	* c-typeck.c (composite_type, common_pointer_type): New functions.
	(common_type): Split parts into composite_type and
	common_pointer_type.  Ensure that arithmetic operations return
	unqualified types without attributes.  Don't make composite type
	of signed enum and compatible integer be unsigned.
	(build_conditional_expr, build_binary_op): Use
	common_pointer_type.
	* c-decl.c (merge_decls): Use composite_type.
	* c-tree.h (composite_type): Declare.

testsuite:
	* gcc.c-torture/enum-3.c, gcc.dg/pr13519-1.c: New tests.

From-SVN: r82671
2004-06-06 16:21:59 +01:00
Joseph Myers
ec3e68358f re PR c/15749 (--pedantic-errors behaves differently from --pedantic with C-compiler on Linux)
PR c/15749
	* c-decl.c (grokdeclarator, finish_struct): Don't pedwarn for
	misuses of structures with flexible array members if
	in_system_header.

testsuite:
	* gcc.dg/pr15749-1.c, gcc.dg/pr15749-1.h: New test.

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

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

From-SVN: r82469
2004-05-30 16:53:32 -07:00
Aldy Hernandez
0d0bc03606 function.cc: New.
* testsuite/g++.dg/charset/function.cc: New.

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

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

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

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

From-SVN: r82381
2004-05-28 21:56:59 +00:00
Zack Weinberg
bb9a388dad * cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
	(cgraph_varpool_node):
	Use DECL_UID for the key, not DECL_ASSEMBLER_NAME.
	(cgraph_function_possibly_inlined_p): Use the decl itself for
	the key, not DECL_ASSEMBLER_NAME.
	(change_decl_assembler_name): No need to muck with the hash tables.
	(cgraph_node_for_identifier, cgraph_varpool_node_for_identifier):
	Delete.
	* cgraphunit.c (cgraph_mark_inline_edge): Use the decl itself
	for the key, not DECL_ASSEMBLER_NAME.
	* cgraph.h: Remove prototypes of deleted functions.
	* varasm.c (mark_referenced): Just set TREE_SYMBOL_REFERENCED.
	(mark_decl_referenced): New function.
	* tree.h: Prototype mark_decl_referenced.
	* final.c (output_addr_const) <case SYMBOL_REF>: Call
	mark_decl_referenced before assemble_name.
	* c-decl.c (finish_decl): Use mark_decl_referenced.
cp:
	* decl.c (cp_finish_decl): Use mark_decl_referenced.
	* decl2.c (maybe_make_one_only): Likewise.
	* method.c (use_thunk): Likewise.

From-SVN: r82015
2004-05-19 01:28:56 +00:00
Diego Novillo
eadf906f46 tree-gimple.c: Rename from tree-simple.c.
* tree-gimple.c: Rename from tree-simple.c.
	* tree-gimple.h: Rename from tree-simple.h.
	* c-gimplify.c: Rename from c-simplify.c
	* Makefile.in, c-decl.c, gimple-low.c, gimplify.c,
	langhooks.c, tree-alias-ander.c, tree-alias-common.c,
	tree-complex.c, tree-dfa.c, tree-flow.h, tree-inline.c,
	tree-into-ssa.c, tree-iterator.c, tree-mudflap.c,
	tree-nested.c, tree-nomudflap.c, tree-outof-ssa.c, tree-sra.c,
	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copyrename.c,
	tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-pre.c, tree-ssa.c:
	Update.

cp/ChangeLog

	* cp-gimplify.c: Rename from cp-simplify.c.
	* Make-lang.in, optimize.c: Update.

fortran/ChangeLog

	* Make-lang.in, f95-lang.c, trans-array.c, trans-decl.c,
	trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c,
	trans.c: Rename tree-simple.[ch] to tree-gimple.[ch].

java/ChangeLog

	* Make-lang.in, expr.c, java-gimplify.c: Rename
	tree-simple.[ch] to tree-gimple.[ch].

From-SVN: r81829
2004-05-13 22:29:32 -04:00
Diego Novillo
6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Zack Weinberg
3358cae044 c-decl.c (store_parm_decls_newstyle): Correct test for a nested function.
* c-decl.c (store_parm_decls_newstyle): Correct test for a
	nested function.

From-SVN: r81677
2004-05-10 19:18:44 +00:00
Zack Weinberg
eecec6986c re PR c/15007 (crash when including precompiled header with -include)
PR 15007
	* c-decl.c (current_file_decl): Rename to all_translation_units,
	adjust comment.
	(pop_scope): If popping file_scope, construct a
	TRANSLATION_UNIT_DECL and make it the context of all the
	symbols in the scope.
	(push_file_scope): Don't construct a TRANSLATION_UNIT_DECL here.
	(pushdecl): Clarify comment.  Do not set DECL_CONTEXT of
	anything to current_file_decl.
	(pushdecl_top_level): Likewise.
	(store_parm_decls_newstyle): Adjust check for nested function.
	(c_write_global_declarations): Update for renamed variable.

From-SVN: r81655
2004-05-09 21:26:58 +00:00
Richard Earnshaw
56141a6ad7 c-decl.c (get_parm_info): Use the correct tag keywords when warning about type declarations in prototypes.
* c-decl.c (get_parm_info): Use the correct tag keywords when
warning about type declarations in prototypes.

From-SVN: r81287
2004-04-29 13:49:54 +00:00
Richard Kenner
1c9766da11 c-decl.c (finish_decl): Make a decl_stmt for a variable-sized TYPE_DECL.
* c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
	TYPE_DECL.
	* c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL.
	* stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN.
	* stor-layout.c (variable_size): Don't check for MINUS_EXPR.
	Use skip_simple_arithmetic to find SAVE_EXPR.
	(force_type_save_exprs, force_type_save_exprs_1): New functions.
	* tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE):
	Properly chain multiple pointers.
	(copy_tree_r): Copy a TYPE_DECL.
	* tree.c (variably_modified_type_p): Add some missing tests and
	make some other minor changes.
	* tree.h (force_type_save_exprs): New declaration.
	* gcc.c-torture/execute/20040411-1.c: New test.

From-SVN: r80629
2004-04-12 17:25:55 -04:00
Richard Kenner
4f976745b7 c-decl.c (build_compound_literal): Use TYPE_READONLY.
* c-decl.c (build_compound_literal): Use TYPE_READONLY.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
	* objc/objc-act.c (adorn_decl, gen_declspecs): Likewise.
	* c-typeck.c (decl_constant_value): Don't access DECL_INITIAL of a
	PARM_DECL.
	* calls.c (flags_from_decl_or_type): Use TYPE_READONLY and do so only
	for a type.
	* print-tree.c (print_node): Properly handle side-effects, readonly,
	and constant flags.
	* tree.c (build1_stat, build_expr_wfl): Only look at TREE_SIDE_EFFECTS
	and TREE_CONSTANT if not a type.
	* tree.h (IS_NON_TYPE_CODE_CLASS): New macro.
	(IS_EXPR_CODE_CLASS): Write 'E', not 'e'.
	(NON_TYPE_CHECK): New macro.
	(TREE_SIDE_EFFECT, TREE_READONLY, TREE_CONSTANT: Add check.

	* cp/init.c (decl_constant_value): Don't look at DECL_INITIAL
	of PARM_DECL.
	* cp/tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
	or TREE_SIDE_EFFECTS of a type.

	* ada/decl.c (gnat_to_gnu_entity): Use TYPE_READONLY.
	* ada/utils.c (create_field_decl): Likewise.
	* ada/utils2.c (build_unary_op, gnat_build_constructor): Likewise.

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

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

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

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

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

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

From-SVN: r80287
2004-03-31 22:50:43 -05:00
Zack Weinberg
1431042ef1 gengtype.c (create_option): New function.
* gengtype.c (create_option): New function.
	* gengtype.h: Prototype it.
	* gengtype-yacc.y (stringseq): New rule.
	(option): Use create_option.  Add new bare ID production.  Use
	stringseq, not STRING directly.

	* alias.c, bitmap.c, c-decl.c, cgraph.h, cpplib.h, cselib.h
	* dwarf2out.c, emit-rtl.c, function.h, lists.c, tree.h
	* varray.h, config/alpha/alpha.c, cp/name-lookup.c, cp/parser.c
	* f/com.c, java/builtins.c, java/expr.c, java/jcf.h, java/parse.h:
	Use new shorter form of GTY markers.

	* doc/gty.texi: Rewrite.

From-SVN: r80091
2004-03-30 19:19:06 +00:00
Zack Weinberg
18d5f9820c re PR c/14734 (Error recovery problem with undeclared array bounds)
* c-decl.c: Verify that C_SIZEOF_STRUCT_LANG_IDENTIFIER is correct.
	(struct c_binding, struct c_scope): Add chain_next
	attributes to GTY markers.
	(struct lang_identifier, struct lang_tree_node): Define
	here...
	* c-tree.h: ... not here.  No longer need to declare struct
	c_binding either.  Do define C_SIZEOF_STRUCT_LANG_IDENTIFIER.
	* c-lang.c, objc/objc-lang.c: Set LANG_HOOKS_IDENTIFIER_SIZE
	to C_SIZEOF_STRUCT_LANG_IDENTIFIER.

	PR 14734, 11944
	* c-decl.c (get_parm_info): If error_mark_node is encountered
	in the bindings chain, unbind and discard it; don't abort.
	* testsuite/gcc.dg/noncompile/undeclared-2.c: New test.

From-SVN: r80042
2004-03-28 17:45:57 +00:00
Joseph Myers
5baeaac067 c-tree.h (C_DECL_REGISTER): New.
* c-tree.h (C_DECL_REGISTER): New.
	* c-aux-info.c (gen_decl), c-decl.c (objc_mark_locals_volatile,
	finish_decl, grokdeclarator, get_parm_info), c-typeck.c
	(build_array_ref, c_mark_addressable): Set and use it.
	* c-decl.c (grokdeclarator), c-typeck.c (c_mark_addressable):
	Allow structures with volatile fields to be declared register.
	Don't check TREE_ADDRESSABLE before warning about taking address
	of register.
	* c-decl.c (finish_decl): Don't allow structures with volatile
	fields to be placed in named register.
	* doc/trouble.texi: Remove reference to structures with volatile
	fields in registers.

testsuite:
	* gcc.dg/940409-1.c: Remove XFAIL.
	* gcc.dg/reg-vol-struct-1.c: New test.

From-SVN: r80037
2004-03-28 00:31:41 +00:00
Zack Weinberg
f75fbaf754 PR 12267, 12391, 12560, 13129, 14114, 14113
* c-tree.h: Forward declare struct c_binding.  Declare
	c_override_bindings_to_false.  Update prototypes.
	(struct lang_identifier): Update comments.  Change fields to be
	struct c_binding *.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE)
	(IDENTIFIER_LABEL_VALUE, C_DECL_INVISIBLE)
	(KEEP_NO, KEEP_YES, KEEP_MAYBE): Delete.
	(C_DECL_IN_EXTERNAL_SCOPE, C_DECL_DECLARED_BUILTIN): New.
	* c-common.h: Update prototypes.
	* c-decl.c (struct c_scope): Update commentary.  Remove names,
	names_last, parms, parms_last, tags, and shadowed fields.  Add
	bindings and depth fields.
	(scope_freelist): Move to more appropriate location.
	(c_print_identifier): Update for changes to struct lang_identifier.
	(objc_mark_locals_volatile): Update for new bindings structures.
	(global_bindings_p): Honor c_override_global_bindings_to_false.
	(pushlevel): Rename to push_scope; take no arguments; use the
	scope_freelist; initialize scope->depth and check for overflow.
	(poplevel): Rename to pop_scope; totally rewritten for new bindings
	structures.
	(diagnose_mismatched_decls): Use C_DECL_DECLARED_BUILTIN, not
	C_DECL_INVISIBLE, for certain decisions.  Adjust some diagnostics.
	Improve some commentary.  Adjust handling of forward parm decls.
	(merge_decls): Set C_DECL_DECLARED_BUILTIN when appropriate.
	Preserve C_DECL_IN_EXTERNAL_SCOPE.
	(warn_if_shadowing): Correct indentation.  Improve diagnostics.
	(pushdecl): Remove unnecessary assertion.  Short-circuit anonymous
	decls.  Rewrite for new bindings structures.  Improve commentary.
	Eliminate the copy_node call.
	(implicit_decl_warning): Use the "diag" idiom (as seen in
	locate_old_decl) to reduce code duplication; call locate_old_decl
	if appropriate.  Relocate to remove need for forward declaration.
	(implicitly_declare): Adjust for new bindings structures.  Kludge
	around Objective-C not-really-builtin functions.
	(undeclared_variable): Improve diagnostics.  If current_function_decl
	is nonnull but current_function_scope is null, use current_scope.
	Use bind.
	(lookup_tag): Adjust for new bindings structures.  Kludge around
	Objective-C's tag declarations that wind up in the external scope.
	(lookup_name): Adjust for new bindings structures.  Kludge around
	c-common.c's pseudo-typedefs that wind up in the external scope.
	(lookup_name_current_level): Rename lookup_name_in_scope; take a
	second argument indicating the scope to examine; rewrite for
	new bindings structures.
	(c_init_decl_processing): Adjust for renamed functions.  Do not
	initialize current_file_decl, first_builtin_decl, last_builtin_decl.
	First scope pushed is the external scope, not the global scope.
	(builtin_function): Use bind, not pushdecl.  Adjust other bits
	for new data structures.  Keep track of builtins that should be
	made visible automatically.
	(start_decl): Adjust diagnostics.  Remove unnecessary call to
	expand_decl.
	(grokparms): Return 0 if arg_types is error_mark_node.
	(get_parm_info): Rename "void_at_end" argument to "ellipsis", with
	reversed sense.  Rewrite for new bindings structures.  Do not
	leave any decls in the scope, to prevent pop_scope from doing
	contradictory things with them.
	(finish_struct, finish_enum): Remove redundant diagnostics.
	(build_enumerator): Don't cascade diagnostics for error_mark_node.
	Mark location where -pedantic changes the meaning of the program.
	(store_parm_decls_newstyle, store_parm_decls_oldstyle): Load the
	parameter decls into the function's scope structure using bind.
	Warn here about function definitions in the wrong style.
	Adjust diagnostics.
	(store_parm_decls): Correct the determination of whether a
	function was defined with a prototype.
	(c_write_global_declarations): Operate on all file decls and on
	the external scope.  Split body of the loop to...
	(c_write_global_declarations_1): ... this new function, to avoid
	code duplication.
	(truly_local_externals, first_builtin_decl, last_builtin_decl)
	(make_scope, pop_scope, in_parm_level_p, set_block)
	(any_external_decl, record_external_decl, bind_label, getdecls)
	(link_hash_hash, link_hash_eq, merge_translation_unit_decls)
	(c_reset_state): Delete.
	(visible_builtins, c_override_global_bindings_to_false)
	(c_binding, I_SYMBOL_BINDING, I_SYMBOL_DECL, I_TAG_BINDING)
	(I_TAG_DECL, I_LABEL_BINDING, I_LABEL_DECL, file_scope)
	(external_scope, binding_freelist, bind, free_binding_and_advance)
	(push_file_scope, pop_file_scope): New.
	(pushtag, pushdecl_top_level, lookup_label, declare_label)
	(define_label, c_make_fname_decl, finish_decl)
	(mark_forward_parm_decls, build_compound_literal)
	(grokdeclarator, start_function, check_for_loop_decls)
	(identifier_global_value, record_builtin_type): Minor adjustments
	for new bindings structures.  Improve diagnostics and commentary.
	* c-objc-common.c (start_cdtor, finish_cdtor): Adjust calls to
	pushlevel/poplevel respectively.
	(c_objc_common_finish_file): Don't call merge_translation_unit_decls.
	* c-opts.c (c_common_parse_file): Remove spurious ATTRIBUTE_UNUSED.
	Warn about YYDEBUG not being defined only if -dy.  Remove no-longer-
	correct loop over multiple translation units; call fatal_error if
	requested to compile more than one file at once.  (This disables
	IMA temporarily - an up-front error being preferable to a crash.)
	* c-parse.in (pushlevel, poplevel rules): Rename push_scope, pop_scope.
	(all actions): Adjust calls to pushlevel/poplevel.
	(parsing_iso_function_signature): Delete.
	(extdef_1): Fold into extdef.
	(old_style_parm_decls_1): Fold into old_style_parm_decls.  Don't
	warn here about function definitions in the wrong style.
	(after_tyle_declarator, parm_declarator_starttypename)
	(parm_declarator_nostarttypename, notype_declarator): Remove
	commented-out productions.
	(parmlist_1, parmlist_2): Use make_node, not tree_cons, to create
	an empty TREE_LIST node.  Adjust calls to get_parm_info.
	(parmlist_2 : ELLIPSIS): Tag the arg-info block with error_mark_node
	to suppress -Wold-style-definition after this error.
	(c_parse_file): Don't clear the binding stack or call
	finish_fname_decls here.  Correct comment.
	* c-typeck.c (same_translation_unit_p): Export.
	(common_type): Use c_override_global_bindings_to_false, not
	pushlevel/poplevel/declare_parm_level.
	* c-lang.c: Override LANG_HOOKS_CLEAR_BINDING_STACK,
	LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK,
	and LANG_HOOKS_GETDECLS with do-nothing stubs.
	* objc/objc-lang.c: Likewise.
	* objc/objc-act.c: Adjust all calls to pushlevel, poplevel,
	get_parm_info.
	(OBJC_VOID_AT_END): Delete; replace all uses
	with void_list_node.
	(generate_forward_declaration_to_string_table): Delete.
	* objc/objc-act.h (OCTI_STRG_DECL, UOBJC_STRINGS_decl): Delete.

	* coverage.c (create_coverage): Don't pushdecl anything.
	* langhooks.c (lhd_clear_binding_stack): Call
	lang_hooks.decls.poplevel, not poplevel.
	* tree.c (list_length): If ENABLE_TREE_CHECKING, abort on a
	circular list rather than going into an infinite loop.

cp:
	* cp-lang.c (c_reset_state): Delete.
	(push_file_scope, pop_file_scope): New stubs.
	* parser.c (c_parse_file): Call sorry() here if called more than once.

testsuite:
	* gcc.dg/Wold-style-definition-1.c, gcc.dg/builtins-30.c
	* gcc.dg/unused-4.c, gcc.dg/noncompile/label-1.c
	* gcc.dg/noncompile/label-lineno-1.c, objc.dg/naming-1.m:
	Adjust error regexps.
	* gcc.dg/Wshadow-2.c, gcc.dg/noncompile/incomplete-3.c
	* gcc.dg/noncompile/undeclared-1.c: New test cases.
	* gcc.dg/decl-5.c, gcc.dg/redecl-1.c: Remove XFAIL.
	* gcc.dg/local1.c: Add explanatory comment.

From-SVN: r79883
2004-03-23 23:47:53 +00:00
Jakub Jelinek
d915eec0db re PR c/14069 (This input file lets gcc crash)
PR c/14069
	* c-decl.c (finish_struct): Change type of incorrect flexible array
	field into error_mark_node.

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

From-SVN: r79832
2004-03-22 16:28:06 +01:00
Kazu Hirata
245f1bfacf bb-reorder.c, [...]: Replace calls via (*targetm.foo) () with targetm.foo ().
* bb-reorder.c, bt-load.c, c-decl.c, cfgcleanup.c, coverage.c,
	dwarf2asm.c, ifcvt.c, stor-layout.c, varasm.c: Replace calls
	via (*targetm.foo) () with targetm.foo ().

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

From-SVN: r79729
2004-03-20 04:52:59 +00:00
Mark Mitchell
4ada538bd6 c-decl.c (grokdeclarator): Do not complain about redeclaring visible "static" identifiers "extern" in a...
* c-decl.c (grokdeclarator): Do not complain about redeclaring
	visible "static" identifiers "extern" in a local scope.

	* dwarf2out.c (loc_descriptor_from_tree): Handle pre- and
	post-increments/decrements.

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

	* gcc.dg/debug/dwarf2/c99-typedef1.c: New test.

From-SVN: r79634
2004-03-18 18:58:08 +00:00
Richard Henderson
28fca7e467 re PR c/14517 (change in behaviour wrt duplicate qualifiers)
PR c/14517
        * c-decl.c (grokdeclarator): Don't warn for duplicate qualifiers
        except for pedantic c90 mode.

From-SVN: r79286
2004-03-10 16:45:37 -08:00
Zack Weinberg
77dbdb5745 * c-decl.c (last_function_parms, last_function_parm_tags)
(last_function_parm_others, current_function_parms)
	(current_function_parm_tags, current_function_parm_others):
	Delete.
	(ARG_INFO_PARMS, ARG_INFO_TAGS, ARG_INFO_TYPES, ARG_INFO_OTHERS):
	New macros.
	(grokdeclarator): For function definitions, save the arg-info
	block from the declarator in DECL_ARGUMENTS.
	(grokparms): Do not write to last_function_parm*.  Use ARG_INFO_*
	macros to operate on arg-info block.  Can assume ARG_INFO_PARMS
	contains only PARM_DECLs.  Improve diagnostics.
	(get_parm_info): Use ARG_INFO_* macros.  Improve comments and
	diagnostics.  Disable some expensive checks if not ENABLE_CHECKING.
	(store_parm_decls_newstyle): Take the function to operate on,
	and an arg-info block, as arguments; don't get anything from
	current_function_* globals.
	(store_parm_decls_oldstyle): Likewise.
	(store_parm_decls): Pass fndecl and its arg-info block down to
	store_parm_decls_newstyle/oldstyle.  Send functions with empty
	argument lists through store_parm_decls_newstyle to reduce
	overhead.
	(pushdecl): Comment on the problems with the call to copy_node.
	Clear DECL_ARGUMENTS of the old node after copying it, if it
	is an arg-info block instead of a chain of decls.
	(start_function): Do not manipulate current_function_parm* or
	last_function_parm*.

	* testsuite/gcc.dg/noncompile/incomplete-2.c: Move dg-error to
	proper line.

From-SVN: r79206
2004-03-09 23:39:16 +00:00
Zack Weinberg
3205a71e4c re PR c/13728 (Duplicate parameter names not detected)
PR 13728
	* c-decl.c (diagnose_mismatched_decls): Issue an error for two
	parameters with the same name, unless one is a forward decl.
	Do not issue a redundant-redeclaration warning for forward
	decls of parameters.
	* gcc.dg/decl-4.c: New testcase.

From-SVN: r78888
2004-03-04 05:49:06 +00:00
Kazu Hirata
a110561799 c-decl.c, [...]: Fix comment typos and formatting.
* c-decl.c, c-ppoutput.c, combine.c, cppfiles.c, dwarf2out.c,
	expr.c, fold-const.c, gcc.c, haifa-sched.c, loop-iv.c,
	params.def, read-rtl.c, rtl.c, rtlanal.c, toplev.c: Fix
	comment typos and formatting.  Follow spelling conventions.

From-SVN: r78555
2004-02-27 07:09:43 +00:00
Kazu Hirata
17fd9cb97c c-decl.c (c_expand_deferred_function): Remove.
* c-decl.c (c_expand_deferred_function): Remove.
	* c-tree.h: Remove the corresponding prototype.

From-SVN: r78528
2004-02-26 23:25:15 +00:00
Steven Bosscher
1da326c335 (c-decl.c, [...]): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
* (c-decl.c, c-semantics.c, calls.c, cgraph.c, cgraphunit.c,
        function.c, integrate.c, print-tree.c, toplev.c, tree-optimize.c,
        tree.h): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
        * ada/utils.c: Likewise.
        * cp/decl.c: Likewise.
        * f/com.c: Likewise.
        * java/class.c: Likewise.

From-SVN: r77985
2004-02-17 21:33:43 +00:00
Kazu Hirata
9ac9746067 c-decl.c, [...]: Fix comment formatting.
* c-decl.c, c-ppoutput.c, cpphash.h, cpplib.h, dbxout.c,
	line-map.c, line-map.h, var-tracking.c: Fix comment
	formatting.

From-SVN: r77888
2004-02-16 14:20:10 +00:00
Zack Weinberg
21d13d8372 debug.h (struct gcc_debug_hooks): Add type_decl field.
* debug.h (struct gcc_debug_hooks): Add type_decl field.
	(debug_nothing_tree_int): Prototype.
	(dwarf_debug_hooks): Delete, unused.
	* debug.c (do_nothing_debug_hooks): Update.
	(debug_nothing_tree_int): New function.
	* langhooks.h (struct lang_hooks_for_decls):
	Remove builtin_type_decls field.
	* langhooks-def.h (LANG_HOOKS_BUILTIN_TYPE_DECLS): Delete.
	(LANG_HOOKS_DECLS): Update.
	* toplev.c (rest_of_decl_compilation, rest_of_type_compilation):
	Use debug_hooks->type_decl.
	* dbxout.c (preinit_symbols): New static.
	(dbx_debug_hooks, xcoff_debug_hooks): Update.
	(dbxout_init): Don't call DBX_OUTPUT_STANDARD_TYPES or
	lang_hooks.decls.builtin_type_decls.  Do scan preinit_symbols
	for symbols to output.
	(dbxout_type_decl): New function.
	(dbxout_symbol): If called before dbxout_init has run, queue
	the symbol for later.  Apply DBX_ASSIGN_FUNDAMENTAL_TYPE_NUMBER
	to TYPE_DECLs before emitting them.
	* xcoffout.c (assign_type_number): Delete.
	(xcoff_type_numbers): New static table.
	(xcoff_assign_fundamental_type_number): New function.
	* xcoffout.h: Define DBX_ASSIGN_FUNDAMENTAL_TYPE_NUMBER, not
	DBX_OUTPUT_STANDARD_TYPES.  Remove unnecessary #ifdefs.
	* sdbout.c: Include varray.h.
	(deferred_global_decls): New static.
	(sdb_debug_hooks): Update.
	(sdbout_global_decl): If we can't emit something right now,
	remember it in deferred_global_decls.
	(sdbout_finish): Just scan deferred_global_decls; don't call getdecls.
	(sdbout_init): Initialize deferred_global_decls.
	* Makefile.in: Update dependencies of sdbout.o.
	* dwarf2out.c (dwarf2out_type_decl): New function.
	(dwarf2_debug_hooks): Update.
	* vmsdbgout.c (vmsdbg_debug_hooks): Update.
	* c-decl.c (getdecls): Just return 0.
	(check_for_loop_decls): Don't use getdecls.
	(record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
	* c-objc-common.c (c_objc_common_finish_file): Don't use getdecls.
cp:
	* cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
	* cp-tree.h: Don't declare cxx_builtin_type_decls.
	* decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
	(record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.

From-SVN: r77730
2004-02-12 21:42:28 +00:00