diff options
author | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-05 17:28:37 +0000 |
---|---|---|
committer | zack <zack@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-05 17:28:37 +0000 |
commit | 0366834b3bcc38ed3a5d6261017dd8683f4a3c90 (patch) | |
tree | 3123dea64dc9e9124841c660cee9869693ee9f00 | |
parent | 662f41e425fd6d5af06b128767e8e9bc10c5e174 (diff) | |
download | gcc-0366834b3bcc38ed3a5d6261017dd8683f4a3c90.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84123 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 43 | ||||
-rw-r--r-- | gcc/Makefile.in | 4 | ||||
-rw-r--r-- | gcc/c-decl.c | 16 | ||||
-rw-r--r-- | gcc/c-lang.c | 2 | ||||
-rw-r--r-- | gcc/c-tree.h | 1 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 25 | ||||
-rw-r--r-- | gcc/cp/decl.c | 4 | ||||
-rw-r--r-- | gcc/langhooks.c | 36 | ||||
-rw-r--r-- | gcc/objc/objc-lang.c | 2 | ||||
-rw-r--r-- | gcc/opts.c | 1 | ||||
-rw-r--r-- | gcc/opts.h | 4 | ||||
-rw-r--r-- | gcc/tree.c | 16 |
12 files changed, 96 insertions, 58 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e6d474f43cc..3d06b8874ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,32 @@ +2004-07-05 Zack Weinberg <zack@codesourcery.com> + + * 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. + 2004-07-05 Roger Sayle <roger@eyesopen.com> * fold-const.c (fold) <TRUNC_MOD_EXPR>: Optimize unsigned modulus @@ -30,13 +59,13 @@ (walk_type_fields): New function. (walk_tree): Use it. * tree-nested.c (create_tmp_var_for): Show seen in BIND_EXPR. - + * tree-sra.c (struct sra_walk_fns): Init function now returns bool. (sra_walk_modify_expr): Allow init function to fail. (scan_init): Now returns bool. (generate_element_init): If can't understand INIT, return false. (scalarize_init): Return false if generate_element_init does. - + * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly print bounds. @@ -79,7 +108,7 @@ (make_tree_binfo_stat): Declare. (make_tree_binfo): New. (enum tree_node_kind): Add binfo_kind. - + * objc/objc-act.c (start_class, objc_declare_protocols, start_protocols): Use TYPE_LANG_SLOT_1. * objc/objc-act.h (CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): Rename @@ -123,7 +152,7 @@ (struct assign_parm_data_one): New. (assign_parms_initialize_all, assign_parms_augmented_arg_list, assign_parm_find_data_types, assign_parms_setup_varargs, - assign_parm_find_entry_rtl, assign_parm_is_stack_parm, + assign_parm_find_entry_rtl, assign_parm_is_stack_parm, assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl, assign_parm_adjust_stack_rtl, assign_parm_setup_block_p, assign_parm_setup_block, assign_parm_setup_reg, @@ -137,7 +166,7 @@ (bitmap_insert_into_set): No point in inserting the value if it's invariant. (bitmap_set_contains): New function. - (bitmap_set_replace_value): Add comment on why we do it + (bitmap_set_replace_value): Add comment on why we do it this way. (set_contains): Removed. (bitmap_set_subtract_from_value_set): New name of @@ -282,7 +311,7 @@ gen_mem_addressof, flush_addressof, put_addressof_into_stack, purge_bitfield_addressof_replacements, purge_addressof_replacements, purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp, - struct insns_for_mem_walk_info, insns_for_mem_walk, + struct insns_for_mem_walk_info, insns_for_mem_walk, compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect, setjmp_protect_args): Remove. (push_function_context_to): Don't handle var_refs_queue. @@ -344,7 +373,7 @@ (walk_tree, case POINTER_TYPE): Deal with mutually recursive pointers. * tree-sra.c (generate_element_init): Remove any useless conversions. - + * gimplify.c (gimplify_conversion): Remove stripping useless conversions from here. (gimplify_expr): Put it here, in place of call to STRIP_MAIN_TYPE_NOPS. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 491e58a47d6..5da0f951f4b 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1569,7 +1569,7 @@ langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) gt-langhooks.h diagnostic.h tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) function.h \ toplev.h $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \ - real.h gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) + real.h gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) opts.h tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(C_TREE_H) $(FLAGS_H) langhooks.h toplev.h output.h c-pragma.h $(RTL_H) \ $(GGC_H) $(EXPR_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) tree-iterator.h @@ -2337,7 +2337,7 @@ GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \ $(srcdir)/fold-const.c $(srcdir)/function.c \ $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \ $(srcdir)/profile.c $(srcdir)/ra-build.c $(srcdir)/regclass.c \ - $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/langhooks.c \ + $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \ $(srcdir)/sdbout.c $(srcdir)/stmt.c $(srcdir)/stor-layout.c \ $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \ $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \ diff --git a/gcc/c-decl.c b/gcc/c-decl.c index b6abc3ccc94..56351512ff4 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -6576,22 +6576,6 @@ make_pointer_declarator (tree type_quals_attrs, tree target) return build1 (INDIRECT_REF, quals, itarget); } -/* A wrapper around lhd_set_decl_assembler_name that gives static - variables their C names if they are at file scope and only one - translation unit is being compiled, for backwards compatibility - with certain bizarre assembler hacks (like crtstuff.c). */ - -void -c_static_assembler_name (tree decl) -{ - if (num_in_fnames == 1 - && !TREE_PUBLIC (decl) && DECL_CONTEXT (decl) - && TREE_CODE (DECL_CONTEXT (decl)) == TRANSLATION_UNIT_DECL) - SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl)); - else - lhd_set_decl_assembler_name (decl); -} - /* Perform final processing on file-scope data. */ static void c_write_global_declarations_1 (tree globals) diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 14ffea6972b..f58a8990587 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -76,8 +76,6 @@ enum c_language_kind c_language = clk_c; #define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval #undef LANG_HOOKS_STATICP #define LANG_HOOKS_STATICP c_staticp -#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME -#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME c_static_assembler_name #undef LANG_HOOKS_NO_BODY_BLOCKS #define LANG_HOOKS_NO_BODY_BLOCKS true #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL diff --git a/gcc/c-tree.h b/gcc/c-tree.h index ad731d422a4..6083b1fbafa 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -189,7 +189,6 @@ extern tree start_struct (enum tree_code, tree); extern void store_parm_decls (void); extern tree xref_tag (enum tree_code, tree); extern int c_expand_decl (tree); -extern void c_static_assembler_name (tree); extern tree make_pointer_declarator (tree, tree); /* in c-objc-common.c */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a760aa96beb..77aaf45568b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-07-05 Zack Weinberg <zack@codesourcery.com> + + * decl.c (cxx_init_decl_processing): Call + build_common_tree_nodes before creating the global NAMESPACE_DECL. + 2004-07-05 Giovanni Bajo <giovannibajo@gcc.gnu.org> PR c++/2518 @@ -197,12 +202,12 @@ 2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net> - PR c++/14123 + PR c++/14123 * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put paranthesis in case of pointers to array members. * error.c (dump_type_prefix): Likewise. (dump_type_suffix): Maybe issue a whitespace when printing - ARRAY_TYPE. + ARRAY_TYPE. 2004-06-27 Mark Mitchell <mark@codesourcery.com> @@ -219,12 +224,12 @@ (pp_non_consecutive_character): Likewise. (dump_scope): Use pp_cxx_colon_colon. (dump_template_parameter): Use pp_cxx_identifier, - pp_cxx_tree_identifier and pp_cxx_whitespace. + pp_cxx_tree_identifier and pp_cxx_whitespace. (dump_templat_bindings): Replace use of pp_string with sequence of pp_cxx_whitespace and pp_equal. (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier, pp_cxx_colon_colon, pp_cxx_whitespace throughout. Don't set - padding here. + padding here. (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier. (dump_type_prefix): Don't set padding. Use pp_cxx_whitespace, pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout. @@ -234,17 +239,17 @@ (dump_template_decl): Likewise. (dump_function_decl): Likewise. Set padding as appropriate. (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and - pp_cxx_right_paren. + pp_cxx_right_paren. (dump_exception_spec): Likewise. (dump_function_name): Use pp_cxx_tree_identifier and - pp_cxx_identifier. + pp_cxx_identifier. (dump_template_parms): Use pp_cxx_begin_template_argument_list and pp_cxx_end_template_argument_list. (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren, pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and - pp_cxx_whitespace throughout. + pp_cxx_whitespace throughout. (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and - pp_cxx_right_paren. + pp_cxx_right_paren. (dump_unary_op): Likewise. (reinit_cxx_pp): New function. (type_as_string); Use it. @@ -399,8 +404,8 @@ (cp_parser_set_decl_spec_type): Likewise. * pt.c: Do not include lex.h. * semantics.c: Likewise. - (finish_member_class_template): Remove. - + (finish_member_class_template): Remove. + 2004-06-23 Roger Sayle <roger@eyesopen.com> * call.c (build_cxx_call): Don't call expand_tree_builtin. No diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e591a257846..bee0402b954 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2887,6 +2887,8 @@ cxx_init_decl_processing (void) tree void_ftype; tree void_ftype_ptr; + build_common_tree_nodes (flag_signed_char); + /* Create all the identifiers we need. */ initialize_predefined_identifiers (); @@ -2926,8 +2928,6 @@ cxx_init_decl_processing (void) /* Initially, C. */ current_lang_name = lang_name_c; - build_common_tree_nodes (flag_signed_char); - error_mark_list = build_tree_list (error_mark_node, error_mark_node); TREE_TYPE (error_mark_list) = error_mark_node; diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 13be0aaf24c..1b2a84e20ed 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -157,11 +157,6 @@ lhd_warn_unused_global_decl (tree decl) return true; } -/* Number for making the label on the next - static variable internal to a function. */ - -static GTY(()) int var_labelno; - /* Set the DECL_ASSEMBLER_NAME for DECL. */ void lhd_set_decl_assembler_name (tree decl) @@ -184,18 +179,33 @@ lhd_set_decl_assembler_name (tree decl) Can't use just the variable's own name for a variable whose scope is less than the whole compilation. Concatenate a - distinguishing number. */ - if (!TREE_PUBLIC (decl) && DECL_CONTEXT (decl)) + distinguishing number. If the decl is at block scope, the + number assigned is the DECL_UID; if the decl is at file + scope, the number is the DECL_UID of the surrounding + TRANSLATION_UNIT_DECL, except for the T_U_D with UID 0. + Those (the file-scope internal-linkage declarations from the + first input file) get no suffix, which is consistent with + what has historically been done for file-scope declarations + with internal linkage. */ + if (TREE_PUBLIC (decl) + || DECL_CONTEXT (decl) == NULL_TREE + || (TREE_CODE (DECL_CONTEXT (decl)) == TRANSLATION_UNIT_DECL + && DECL_UID (DECL_CONTEXT (decl)) == 0)) + SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl)); + else { const char *name = IDENTIFIER_POINTER (DECL_NAME (decl)); char *label; - - ASM_FORMAT_PRIVATE_NAME (label, name, var_labelno); - var_labelno++; + unsigned int uid; + + if (TREE_CODE (DECL_CONTEXT (decl)) == TRANSLATION_UNIT_DECL) + uid = DECL_UID (DECL_CONTEXT (decl)); + else + uid = DECL_UID (decl); + + ASM_FORMAT_PRIVATE_NAME (label, name, uid); SET_DECL_ASSEMBLER_NAME (decl, get_identifier (label)); } - else - SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl)); } else /* Nobody should ever be asking for the DECL_ASSEMBLER_NAME of @@ -581,5 +591,3 @@ lhd_make_node (enum tree_code code) { return make_node (code); } - -#include "gt-langhooks.h" diff --git a/gcc/objc/objc-lang.c b/gcc/objc/objc-lang.c index b59a47b1bc0..fde6cbd0907 100644 --- a/gcc/objc/objc-lang.c +++ b/gcc/objc/objc-lang.c @@ -73,8 +73,6 @@ enum c_language_kind c_language = clk_objc; #define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval #undef LANG_HOOKS_STATICP #define LANG_HOOKS_STATICP c_staticp -#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME -#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME c_static_assembler_name #undef LANG_HOOKS_NO_BODY_BLOCKS #define LANG_HOOKS_NO_BODY_BLOCKS true #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL diff --git a/gcc/opts.c b/gcc/opts.c index 5a4873c80ce..b54a63fc45a 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -92,6 +92,7 @@ static bool flag_peel_loops_set, flag_branch_probabilities_set; /* Input file names. */ const char **in_fnames; unsigned num_in_fnames; +unsigned cur_in_fname; static size_t find_opt (const char *, int); static int common_handle_option (size_t scode, const char *arg, int value); diff --git a/gcc/opts.h b/gcc/opts.h index 17b2bca3f84..69eb3b8a55d 100644 --- a/gcc/opts.h +++ b/gcc/opts.h @@ -57,4 +57,8 @@ extern const char **in_fnames; extern unsigned num_in_fnames; +/* Current input filename index. */ + +extern unsigned cur_in_fname; + #endif diff --git a/gcc/tree.c b/gcc/tree.c index a4bbd668bb3..9183a5cc864 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -48,6 +48,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "tree-iterator.h" #include "basic-block.h" #include "tree-flow.h" +#include "opts.h" /* obstack.[ch] explicitly declined to prototype this. */ extern int _obstack_allocated_p (struct obstack *h, void *obj); @@ -309,7 +310,10 @@ make_node_stat (enum tree_code code MEM_STAT_DECL) DECL_USER_ALIGN (t) = 0; DECL_IN_SYSTEM_HEADER (t) = in_system_header; DECL_SOURCE_LOCATION (t) = input_location; - DECL_UID (t) = next_decl_uid++; + if (code == TRANSLATION_UNIT_DECL) + DECL_UID (t) = cur_in_fname; + else + DECL_UID (t) = next_decl_uid++; /* We have not yet computed the alias set for this declaration. */ DECL_POINTER_ALIAS_SET (t) = -1; @@ -382,7 +386,7 @@ copy_node_stat (tree node MEM_STAT_DECL) TREE_VISITED (t) = 0; t->common.ann = 0; - if (TREE_CODE_CLASS (code) == 'd') + if (TREE_CODE_CLASS (code) == 'd' && code != TRANSLATION_UNIT_DECL) DECL_UID (t) = next_decl_uid++; else if (TREE_CODE_CLASS (code) == 't') { @@ -5310,6 +5314,14 @@ make_or_reuse_type (unsigned size, int unsignedp) void build_common_tree_nodes (int signed_char) { + /* This function is called after command line parsing is complete, + but before any DECL nodes should have been created. Therefore, + now is the appropriate time to adjust next_decl_uid so that the + range 0 .. num_in_fnames-1 is reserved for TRANSLATION_UNIT_DECLs. */ + if (next_decl_uid) + abort (); + next_decl_uid = num_in_fnames; + error_mark_node = make_node (ERROR_MARK); TREE_TYPE (error_mark_node) = error_mark_node; |