Skip to content
Snippets Groups Projects
  • Zack Weinberg's avatar
    f75fbaf7
    PR 12267, 12391, 12560, 13129, 14114, 14113 · f75fbaf7
    Zack Weinberg authored
    	* 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
    f75fbaf7
    History
    PR 12267, 12391, 12560, 13129, 14114, 14113
    Zack Weinberg authored
    	* 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