From 3c79fa86db0cf6bbcc3673c2844e85ca8679370c Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Sun, 30 May 2004 23:53:32 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 10 ++++++++ gcc/c-common.c | 24 +++++++++++++++++ gcc/c-common.h | 1 + gcc/c-decl.c | 67 +++++++----------------------------------------- gcc/c-tree.h | 1 - gcc/cp/ChangeLog | 5 ++++ gcc/cp/cp-lang.c | 26 +------------------ 7 files changed, 50 insertions(+), 84 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0746702b562..7c8627a283b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2004-05-30 Andrew Pinski + + * 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. + 2004-05-30 Roger Sayle * fold-const.c (combine_comparisons, optimize_bit_field_compare, diff --git a/gcc/c-common.c b/gcc/c-common.c index 666dc40a716..4b2b35501f0 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -1123,6 +1123,30 @@ fname_as_string (int pretty_p) return namep; } +/* Expand DECL if it declares an entity not handled by the + common code. */ + +int +c_expand_decl (tree decl) +{ + if (TREE_CODE (decl) == VAR_DECL && !TREE_STATIC (decl)) + { + /* Let the back-end know about this variable. */ + if (!anon_aggr_type_p (TREE_TYPE (decl))) + emit_local_var (decl); + else + expand_anon_union_decl (decl, NULL_TREE, + DECL_ANON_UNION_ELEMS (decl)); + } + else if (TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl)) + make_rtl_for_local_static (decl); + else + return 0; + + return 1; +} + + /* Return the VAR_DECL for a const char array naming the current function. If the VAR_DECL has not yet been created, create it now. RID indicates how it should be formatted and IDENTIFIER_NODE diff --git a/gcc/c-common.h b/gcc/c-common.h index a9a0c0e45a6..8d0f926b07a 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -332,6 +332,7 @@ extern void prep_stmt (tree); extern tree c_begin_if_stmt (void); extern tree c_begin_while_stmt (void); extern void c_finish_while_stmt_cond (tree, tree); +extern int c_expand_decl (tree); extern int field_decl_cmp (const void *, const void *); extern void resort_sorted_fields (void *, void *, gt_pointer_operator, diff --git a/gcc/c-decl.c b/gcc/c-decl.c index ce39f6f54f4..5cf4e0e239a 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -6361,47 +6361,26 @@ finish_function (void) current_function_decl = NULL; } -/* Generate the RTL for the body of FNDECL. If NESTED_P is nonzero, - then we are already in the process of generating RTL for another - function. */ +/* Generate the RTL for the body of FNDECL. */ -static void -c_expand_body_1 (tree fndecl, int nested_p) +void +c_expand_body (tree fndecl) { - if (nested_p) - { - /* Make sure that we will evaluate variable-sized types involved - in our function's type. */ - expand_pending_sizes (DECL_LANG_SPECIFIC (fndecl)->pending_sizes); - /* Squirrel away our current state. */ - push_function_context (); - } - - tree_rest_of_compilation (fndecl, nested_p); + if (!DECL_INITIAL (fndecl) + || DECL_INITIAL (fndecl) == error_mark_node) + return; - if (nested_p) - /* Return to the enclosing function. */ - pop_function_context (); + tree_rest_of_compilation (fndecl, false); if (DECL_STATIC_CONSTRUCTOR (fndecl) && targetm.have_ctors_dtors) targetm.asm_out.constructor (XEXP (DECL_RTL (fndecl), 0), - DEFAULT_INIT_PRIORITY); + DEFAULT_INIT_PRIORITY); if (DECL_STATIC_DESTRUCTOR (fndecl) && targetm.have_ctors_dtors) targetm.asm_out.destructor (XEXP (DECL_RTL (fndecl), 0), - DEFAULT_INIT_PRIORITY); -} - -/* Like c_expand_body_1 but only for unnested functions. */ - -void -c_expand_body (tree fndecl) -{ - - if (DECL_INITIAL (fndecl) && DECL_INITIAL (fndecl) != error_mark_node) - c_expand_body_1 (fndecl, 0); + DEFAULT_INIT_PRIORITY); } /* Check the declarations given in a for-loop for satisfying the C99 @@ -6597,34 +6576,6 @@ c_begin_compound_stmt (void) return stmt; } -/* Expand DECL if it declares an entity not handled by the - common code. */ - -int -c_expand_decl (tree decl) -{ - if (TREE_CODE (decl) == VAR_DECL && !TREE_STATIC (decl)) - { - /* Let the back-end know about this variable. */ - if (!anon_aggr_type_p (TREE_TYPE (decl))) - emit_local_var (decl); - else - expand_anon_union_decl (decl, NULL_TREE, - DECL_ANON_UNION_ELEMS (decl)); - } - else if (TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl)) - make_rtl_for_local_static (decl); - /* Expand nested functions. */ - else if (TREE_CODE (decl) == FUNCTION_DECL - && DECL_CONTEXT (decl) == current_function_decl - && DECL_SAVED_TREE (decl)) - c_expand_body_1 (decl, 1); - else - return 0; - - return 1; -} - /* Return the global value of T as a symbol. */ tree diff --git a/gcc/c-tree.h b/gcc/c-tree.h index da41c3a5c7a..f460e1ee486 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -192,7 +192,6 @@ extern tree start_struct (enum tree_code, tree); extern void store_parm_decls (void); extern tree xref_tag (enum tree_code, tree); extern tree c_begin_compound_stmt (void); -extern int c_expand_decl (tree); extern void c_static_assembler_name (tree); extern tree make_pointer_declarator (tree, tree); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4d2ee0606c3..539d5a3d88a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-05-30 Andrew Pinski + + * cp-lang.c (cp_expand_decl): Remove. + (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl. + 2004-05-30 Andreas Jaeger * lang-specs.h: Add missing initializers for .ii. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 3d737ad502a..8a82e4e72ce 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -40,7 +40,6 @@ static tree cp_expr_size (tree); static size_t cp_tree_size (enum tree_code); static bool cp_var_mod_type_p (tree); static int cxx_types_compatible_p (tree, tree); -static int cp_expand_decl (tree); static void cxx_initialize_diagnostics (diagnostic_context *); #undef LANG_HOOKS_NAME @@ -72,7 +71,7 @@ static void cxx_initialize_diagnostics (diagnostic_context *); #undef LANG_HOOKS_EXPAND_EXPR #define LANG_HOOKS_EXPAND_EXPR cxx_expand_expr #undef LANG_HOOKS_EXPAND_DECL -#define LANG_HOOKS_EXPAND_DECL cp_expand_decl +#define LANG_HOOKS_EXPAND_DECL c_expand_decl #undef LANG_HOOKS_SAFE_FROM_P #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p #undef LANG_HOOKS_PARSE_FILE @@ -293,29 +292,6 @@ cp_expr_size (tree exp) return lhd_expr_size (exp); } -/* Expand DECL if it declares an entity not handled by the - common code. */ - -static int -cp_expand_decl (tree decl) -{ - if (TREE_CODE (decl) == VAR_DECL && !TREE_STATIC (decl)) - { - /* Let the back-end know about this variable. */ - if (!anon_aggr_type_p (TREE_TYPE (decl))) - emit_local_var (decl); - else - expand_anon_union_decl (decl, NULL_TREE, - DECL_ANON_UNION_ELEMS (decl)); - } - else if (TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl)) - make_rtl_for_local_static (decl); - else - return 0; - - return 1; -} - int cp_tree_chain_matters_p (tree t) { -- 2.30.2