From 67673f5c5ba19b0012c518faa7aa7e3fc0a494b8 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 18 Oct 2000 05:45:37 +0000 Subject: [PATCH] c-common.c (back_end_hook): New variable. * c-common.c (back_end_hook): New variable. * c-common.h (back_end_hook): Declare it. * c-lang.c (finish_file): Use it. * emit-rtl.c (init_emit_once): Initialize the const_int_htab earlier. * cp-tree.h (back_end_hook): Remove declaration. * decl2.c (back_end_hook): Remove definition. * dump.c (dequeue_and_dump): Dump TREE_USED. From-SVN: r36928 --- gcc/ChangeLog | 9 +++++++++ gcc/c-common.c | 4 ++++ gcc/c-common.h | 8 ++++++++ gcc/c-lang.c | 3 +++ gcc/cp/ChangeLog | 7 +++++++ gcc/cp/cp-tree.h | 6 ------ gcc/cp/decl2.c | 5 ----- gcc/cp/dump.c | 3 +++ gcc/emit-rtl.c | 12 ++++++------ 9 files changed, 40 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 24f71bef970..fc1f8db160c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2000-10-17 Mark Mitchell + + * c-common.c (back_end_hook): New variable. + * c-common.h (back_end_hook): Declare it. + * c-lang.c (finish_file): Use it. + + * emit-rtl.c (init_emit_once): Initialize the const_int_htab + earlier. + 2000-10-18 Jan Hubikca * i386.c (ix86_comparison_operator, put_condition_code, diff --git a/gcc/c-common.c b/gcc/c-common.c index 2fb63fde5a0..72118c8f8d8 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -158,6 +158,10 @@ int (*lang_statement_code_p) PARAMS ((enum tree_code)); any action required right before expand_function_end is called. */ void (*lang_expand_function_end) PARAMS ((void)); +/* If this variable is defined to a non-NULL value, it will be called + after the file has been completely parsed. */ +void (*back_end_hook) PARAMS ((tree)); + /* Nonzero means the expression being parsed will never be evaluated. This is a count, since unevaluated expressions can nest. */ int skip_evaluation; diff --git a/gcc/c-common.h b/gcc/c-common.h index 2280b93a93e..a4bd09e9274 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -697,6 +697,12 @@ extern tree c_add_case_label PARAMS ((splay_tree, extern tree build_function_call PARAMS ((tree, tree)); +/* If this variable is defined to a non-NULL value, it will be called + after the file has been completely parsed. The argument will be + the GLOBAL_NAMESPACE in C++, or the list of top-level declarations + in C. */ +extern void (*back_end_hook) PARAMS ((tree)); + #ifdef RTX_CODE extern struct rtx_def *c_expand_expr PARAMS ((tree, rtx, @@ -720,3 +726,5 @@ struct c_fileinfo *get_fileinfo PARAMS ((const char *)); extern void dump_time_statistics PARAMS ((void)); #endif + + diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 21b8f0f273b..ab36a2ea37e 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -242,6 +242,9 @@ finish_file () assemble_destructor (IDENTIFIER_POINTER (fnname)); } #endif + + if (back_end_hook) + (*back_end_hook) (getdecls ()); } /* Called during diagnostic message formatting process to print a diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4246ac604a1..d4f8e47f4dc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2000-10-17 Mark Mitchell + + * cp-tree.h (back_end_hook): Remove declaration. + * decl2.c (back_end_hook): Remove definition. + + * dump.c (dequeue_and_dump): Dump TREE_USED. + Tue Oct 17 20:19:06 2000 Brad Lucier * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int). diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 1a6c5184817..689c859599e 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -1170,12 +1170,6 @@ extern int flag_access_control; extern int flag_check_new; -/* If this variable is defined to a non-NULL value, it will be called - after the file has been completely parsed. The argument will be - the GLOBAL_NAMESPACE. */ - -extern void (*back_end_hook) PARAMS ((tree)); - /* C++ language-specific tree codes. */ #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 4f6b57e15d7..fc319b7d7ae 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -490,11 +490,6 @@ int flag_permissive; int flag_enforce_eh_specs = 1; -/* If this variable is defined to a non-NULL value, it will be called - after the file has been completely parsed. */ - -void (*back_end_hook) PARAMS ((tree)); - /* The variant of the C language being processed. */ c_language_kind c_language = clk_cplusplus; diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c index 9b711062070..83c7db06058 100644 --- a/gcc/cp/dump.c +++ b/gcc/cp/dump.c @@ -555,6 +555,9 @@ dequeue_and_dump (di) if (DECL_FIELD_OFFSET (t)) dump_child ("bpos", bit_position (t)); } + else if (TREE_CODE (t) == VAR_DECL + || TREE_CODE (t) == PARM_DECL) + dump_int (di, "used", TREE_USED (t)); break; case FUNCTION_DECL: diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 66b1f7e93a9..3929e8820cf 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -4008,6 +4008,12 @@ init_emit_once (line_numbers) enum machine_mode mode; enum machine_mode double_mode; + /* Initialize the CONST_INT hash table. */ + const_int_htab = htab_create (37, const_int_htab_hash, + const_int_htab_eq, NULL); + ggc_add_root (&const_int_htab, 1, sizeof (const_int_htab), + rtx_htab_mark); + no_line_numbers = ! line_numbers; /* Compute the word and byte modes. */ @@ -4191,12 +4197,6 @@ init_emit_once (line_numbers) ggc_add_rtx_root (&static_chain_rtx, 1); ggc_add_rtx_root (&static_chain_incoming_rtx, 1); ggc_add_rtx_root (&return_address_pointer_rtx, 1); - - /* Initialize the CONST_INT hash table. */ - const_int_htab = htab_create (37, const_int_htab_hash, - const_int_htab_eq, NULL); - ggc_add_root (&const_int_htab, 1, sizeof (const_int_htab), - rtx_htab_mark); } /* Query and clear/ restore no_line_numbers. This is used by the