diff options
author | Mark Mitchell <mark@codesourcery.com> | 2001-03-19 23:50:04 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2001-03-19 23:50:04 +0000 |
commit | 92643fea9381b2d137f19d19e28e24a61dc44b0c (patch) | |
tree | 0e001bd33ab3dcdd688aa773f49f4ddf63c89df6 /gcc/java | |
parent | b90f4049d36e101e2090dd2c1a0595bdb3790ec2 (diff) | |
download | gcc-92643fea9381b2d137f19d19e28e24a61dc44b0c.zip gcc-92643fea9381b2d137f19d19e28e24a61dc44b0c.tar.gz gcc-92643fea9381b2d137f19d19e28e24a61dc44b0c.tar.bz2 |
Compute DECL_ASSEMBLER_NAME lazily.
* tree.h (DECL_ASSEMBLER_NAME): Compute it lazily.
(DECL_ASSEMBLER_NAME_SET_P): New macro.
(SET_DECL_ASSEMBLER_NAME): Likewise.
(COPY_DECL_ASSEMBLER_NAME): Likewise.
(set_decl_assembler_name): Declare.
(lang_set_decl_assembler_name): Likewise.
* tree.c (lang_set_decl_assembler_name): New variab.e
(set_decl_assembler_name): New function.
(init_obstacks): Set lang_set_decl_assembler_name.
(build_decl): Don't set DECL_ASSEMBLER_NAME.
* c-decl.c (duplicate_decls): Use SET_DECL_ASSEMBLER_NAME,
COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
where it's not necessary.
(builtin_function): Likewise.
(finish_decl): Likewise.
* dbxout.c (dbxout_type_methods): Likewise.
* ggc-common.c (ggc_mark_trees): Likewise.
* profile.c (output_func_start_profiler): Likewise.
* varasm.c (make_decl_rtl): Likewise.
* class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
where it's not necessary.
(add_method): Remove optimization involving comparison of
DECL_ASSEMBLER_NAME.
(build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
where it's not necessary.
(check_methods): Likewise.
(build_clone): Likewise.
(built_vtt): Likewise.
* cp-tree.h (DECL_NEEDED_P): Likewise.
* decl.c (pushtag): Likewise.
(duplicate_decls): Likewise.
(pushdecl): Likewise.
(builtin_function): Likewise.
(build_library_fn_1): Set DECL_LANGUAGE for library functions.
(build_cp_library_fn): Likewise.
(maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
where it's not necessary.
(make_rtl_for_nonlocal_decl): Likewise.
(cp_finish_decl): Likewise.
(grokfndecl): Likewise.
(grokvardecl): Likewise.
(grokdeclarator): Likewise.
(start_function): Likewise.
(cp_missing_return_ok_p): Likewise.
* decl2.c (grokclassfn): Likewise.
(check_classfn): Likewise.
(finish_static_data_member_decl): Likewise.
(grokfield): Likewise.
* error.c (GLOBAL_IORD_P): Remove.
(dump_global_iord): Improve output.
(dump_decl): Avoid using DECL_ASSEMBLER_NAME.
* except.c (nothrow_libfn_p): Summarily reject any function not in
namespace-scope.
* init.c (build_java_class_ref): Don't explicitly set
DECL_ASSEMBLER_NAME after calling mangle_decl.
* mangle.c (mangle_decl_string): Handle extern "C" functions.
(mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
* method.c (set_mangled_name_for_decl): Don't explicitly set
DECL_ASSEMBLER_NAME after calling mangle_decl.
(make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
IDENTIFIER_GLOBAL_VALUE for the thunk.
* pt.c (set_mangled_name_for_template_decl): Remove.
(check_explicit_specialization): Don't use it.
(looup_template_class): Don't set DECL_ASSEMBLER_NAME.
(tsubst_friend_function): Likewise.
(tsubst_decl): Likewise.
(regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
* rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
where it's not necessary.
(tinfo_base_init): Likewise.
(create_real_tinfo_var): Likewise.
* search.c (looup_field_1): Likewise.
* semantics.c (finish_named_return_value): Likewise.
* tree.c (init_tree): Set lang_set_decl_assembler_name.
* com.c (builtin_function): Use SET_DECL_ASSEMBLER_NAME.
* class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
(layout_class): Likewise.
(layout_class_method): Likewise.
(emit_register_classes): Likewise.
* decl.c (builtin_function): Likewise.
(give_name_to_locals): Likewise.
From-SVN: r40642
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/java/class.c | 17 | ||||
-rw-r--r-- | gcc/java/decl.c | 6 |
3 files changed, 22 insertions, 10 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 2a96eb5..3d1f6e4c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,12 @@ +2001-03-19 Mark Mitchell <mark@codesourcery.com> + + * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME. + (layout_class): Likewise. + (layout_class_method): Likewise. + (emit_register_classes): Likewise. + * decl.c (builtin_function): Likewise. + (give_name_to_locals): Likewise. + 2001-03-19 Per Bothner <per@bothner.com> * jcf-parse.c (load_inner_classes): Check CLASS_LOADED_P diff --git a/gcc/java/class.c b/gcc/java/class.c index 4114271..6deb46e 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -899,8 +899,9 @@ build_class_ref (type) TREE_PUBLIC (decl) = 1; DECL_IGNORED_P (decl) = 1; DECL_ARTIFICIAL (decl) = 1; - DECL_ASSEMBLER_NAME (decl) = - java_mangle_class_field (&temporary_obstack, type); + SET_DECL_ASSEMBLER_NAME (decl, + java_mangle_class_field + (&temporary_obstack, type)); make_decl_rtl (decl, NULL); pushdecl_top_level (decl); if (is_compiled == 1) @@ -1701,8 +1702,9 @@ layout_class (this_class) if (FIELD_STATIC (field)) { /* Set DECL_ASSEMBLER_NAME to something suitably mangled. */ - DECL_ASSEMBLER_NAME (field) = - java_mangle_decl (&temporary_obstack, field); + SET_DECL_ASSEMBLER_NAME (field, + java_mangle_decl + (&temporary_obstack, field)); } } @@ -1797,8 +1799,9 @@ layout_class_method (this_class, super_class, method_decl, dtable_count) TREE_PUBLIC (method_decl) = 1; /* This is a good occasion to mangle the method's name */ - DECL_ASSEMBLER_NAME (method_decl) = - java_mangle_decl (&temporary_obstack, method_decl); + SET_DECL_ASSEMBLER_NAME (method_decl, + java_mangle_decl (&temporary_obstack, + method_decl)); /* We don't generate a RTL for the method if it's abstract, or if it's an interface method that isn't clinit. */ if (! METHOD_ABSTRACT (method_decl) @@ -1878,7 +1881,7 @@ emit_register_classes () tree t; init_decl = build_decl (FUNCTION_DECL, init_name, init_type); - DECL_ASSEMBLER_NAME (init_decl) = init_name; + SET_DECL_ASSEMBLER_NAME (init_decl, init_name); TREE_STATIC (init_decl) = 1; current_function_decl = init_decl; DECL_RESULT (init_decl) = build_decl(RESULT_DECL, NULL_TREE, void_type_node); diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 8c688ce..1a68a04 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -377,7 +377,7 @@ builtin_function (name, type, function_code, class, library_name) DECL_EXTERNAL (decl) = 1; TREE_PUBLIC (decl) = 1; if (library_name) - DECL_ASSEMBLER_NAME (decl) = get_identifier (library_name); + SET_DECL_ASSEMBLER_NAME (decl, get_identifier (library_name)); make_decl_rtl (decl, NULL_PTR); pushdecl (decl); DECL_BUILT_IN_CLASS (decl) = class; @@ -1569,7 +1569,7 @@ give_name_to_locals (jcf) { tree decl = TREE_VEC_ELT (decl_map, slot); DECL_NAME (decl) = name; - DECL_ASSEMBLER_NAME (decl) = name; + SET_DECL_ASSEMBLER_NAME (decl, name); if (TREE_CODE (decl) != PARM_DECL || TREE_TYPE (decl) != type) warning ("bad type in parameter debug info"); } @@ -1636,7 +1636,7 @@ give_name_to_locals (jcf) sprintf (buffer, "ARG_%d", arg_i); DECL_NAME (parm) = get_identifier (buffer); } - DECL_ASSEMBLER_NAME (parm) = DECL_NAME (parm); + SET_DECL_ASSEMBLER_NAME (parm, DECL_NAME (parm)); } } } |