c-decl.c (c_expand_body_1): Remove and fold back into ...
authorAndrew Pinski <pinskia@physics.uc.edu>
Sun, 30 May 2004 23:53:32 +0000 (23:53 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Sun, 30 May 2004 23:53:32 +0000 (16:53 -0700)
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
gcc/c-common.c
gcc/c-common.h
gcc/c-decl.c
gcc/c-tree.h
gcc/cp/ChangeLog
gcc/cp/cp-lang.c

index 0746702b562242d8f7f5693e0875825e09f4a3d9..7c8627a283bd1b44dda5cd3212cb89801a1d86df 100644 (file)
@@ -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,
index 666dc40a716d79fe36b7aa2843324dc3ac1c3088..4b2b35501f0e71565492b81c55038dae71f693a3 100644 (file)
@@ -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
index a9a0c0e45a629fc938007f9e2246699894c8e249..8d0f926b07a6ff56a0631467e6fd1c54ffdf3da3 100644 (file)
@@ -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, 
index ce39f6f54f4520674b7622561b3a9ca03c6ed6f7..5cf4e0e239af0fcef66ede649b07029a1847fbcf 100644 (file)
@@ -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);
 }
 \f
 /* 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
index da41c3a5c7ab8383b516541b5cf39f82f69333d4..f460e1ee486ff30e27ac352718ea107cd57f6954 100644 (file)
@@ -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);
 
index 4d2ee0606c32980a9d40678c5598d387803d0871..539d5a3d88a90eee591bb784d406a75f5ab47cd2 100644 (file)
@@ -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.
index 3d737ad502a1b969ee787130073687c2236002d1..8a82e4e72ce81451633e957b9d40fb2aad1758de 100644 (file)
@@ -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)
 {