diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-05-30 23:53:32 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-05-30 16:53:32 -0700 |
commit | 3c79fa86db0cf6bbcc3673c2844e85ca8679370c (patch) | |
tree | ea6af9f1714899b3e6bb97969fabd46262b40f7e /gcc | |
parent | 1b0f3e79b1b3b9e96be90ec30fc6a142057e84ed (diff) | |
download | gcc-3c79fa86db0cf6bbcc3673c2844e85ca8679370c.zip gcc-3c79fa86db0cf6bbcc3673c2844e85ca8679370c.tar.gz gcc-3c79fa86db0cf6bbcc3673c2844e85ca8679370c.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/c-common.c | 24 | ||||
-rw-r--r-- | gcc/c-common.h | 1 | ||||
-rw-r--r-- | gcc/c-decl.c | 67 | ||||
-rw-r--r-- | gcc/c-tree.h | 1 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/cp-lang.c | 26 |
7 files changed, 50 insertions, 84 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0746702..7c8627a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2004-05-30 Andrew Pinski <pinskia@physics.uc.edu> + + * 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 <roger@eyesopen.com> * fold-const.c (combine_comparisons, optimize_bit_field_compare, diff --git a/gcc/c-common.c b/gcc/c-common.c index 666dc40..4b2b355 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 a9a0c0e..8d0f926 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 ce39f6f..5cf4e0e 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 da41c3a..f460e1e 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 4d2ee06..539d5a3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-05-30 Andrew Pinski <pinskia@physics.uc.edu> + + * cp-lang.c (cp_expand_decl): Remove. + (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl. + 2004-05-30 Andreas Jaeger <aj@suse.de> * lang-specs.h: Add missing initializers for .ii. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 3d737ad..8a82e4e 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) { |