diff options
| author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-17 22:43:55 +0000 | 
|---|---|---|
| committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-17 22:43:55 +0000 | 
| commit | 4cfbaf39ebd23c88866edd52097070e46bac189a (patch) | |
| tree | d63648bac97b145754a00dc4c1d8593cc1d3ae79 /gcc/c-lang.c | |
| parent | 9938224ec3c3bbe175b5eb1d846a650e49e4bd3d (diff) | |
| download | ppe42-gcc-4cfbaf39ebd23c88866edd52097070e46bac189a.tar.gz ppe42-gcc-4cfbaf39ebd23c88866edd52097070e46bac189a.zip | |
	* Makefile.in: Update dependencies.
	* c-lang.c: Remove unnecessary includes.
	(deferred_fns, start_cdtor, finish_cdtor, defer_fn): Move to
	c-objc-common.c.
	(finish_file): Move body to c_common_finish_file.
	* c-objc-common.c: Include varray.h and ggc.h.
	(deferred_fns, start_cdtor, finish_cdtor, defer_fn,
	expand_deferred_fns, c_objc_common_finish_file): Moved from c-lang.c.
	(c_objc_common_init): Initialize deferred function array.
	* c-tree.h (c_objc_common_finish_file,
	static_ctors, static_dtors): New.
objc:
	* Make-lang.in: Update dependencies.
	* objc/objc-act.c: Don't include varray.h.
	(defer_fn, deferred_fns): Move to c-objc-common.c.
	(objc_init): Similarly for initialization of it.
	(finish_file): Move some to c-objc-common.c, use
	c_objc_common_finish_file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48134 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-lang.c')
| -rw-r--r-- | gcc/c-lang.c | 129 | 
1 files changed, 2 insertions, 127 deletions
| diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 6e4c158dcb4..497d32af122 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -23,14 +23,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA  #include "config.h"  #include "system.h"  #include "tree.h" -#include "function.h" -#include "toplev.h" -#include "flags.h" -#include "ggc.h" -#include "rtl.h" -#include "expr.h"  #include "c-tree.h" -#include "varray.h"  #include "langhooks.h"  #include "langhooks-def.h" @@ -78,8 +71,6 @@ static void c_post_options PARAMS ((void));  /* Each front end provides its own.  */  const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; -static varray_type deferred_fns; -  /* Post-switch processing.  */  static void  c_post_options () @@ -97,12 +88,7 @@ static const char *  c_init (filename)       const char *filename;  { -  filename = c_objc_common_init (filename); - -  VARRAY_TREE_INIT (deferred_fns, 32, "deferred_fns"); -  ggc_add_tree_varray_root (&deferred_fns, 1); - -  return filename; +  return c_objc_common_init (filename);  }  /* Used by c-lex.c, but only for objc.  */ @@ -157,119 +143,8 @@ lookup_objc_ivar (id)    return 0;  } -extern tree static_ctors; -extern tree static_dtors; - -static tree start_cdtor		PARAMS ((int)); -static void finish_cdtor	PARAMS ((tree)); - -static tree -start_cdtor (method_type) -     int method_type; -{ -  tree fnname = get_file_function_name (method_type); -  tree void_list_node_1 = build_tree_list (NULL_TREE, void_type_node); -  tree body; - -  start_function (void_list_node_1, -		  build_nt (CALL_EXPR, fnname, -			    tree_cons (NULL_TREE, NULL_TREE, void_list_node_1), -			    NULL_TREE), -		  NULL_TREE); -  store_parm_decls (); - -  current_function_cannot_inline -    = "static constructors and destructors cannot be inlined"; - -  body = c_begin_compound_stmt (); - -  pushlevel (0); -  clear_last_expr (); -  add_scope_stmt (/*begin_p=*/1, /*partial_p=*/0); - -  return body; -} - -static void -finish_cdtor (body) -     tree body; -{ -  tree scope; -  tree block; - -  scope = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0); -  block = poplevel (0, 0, 0); -  SCOPE_STMT_BLOCK (TREE_PURPOSE (scope)) = block; -  SCOPE_STMT_BLOCK (TREE_VALUE (scope)) = block; - -  RECHAIN_STMTS (body, COMPOUND_BODY (body)); - -  finish_function (0); -} - -/* Register a function tree, so that its optimization and conversion -   to RTL is only done at the end of the compilation.  */ - -int -defer_fn (fn) -     tree fn; -{ -  VARRAY_PUSH_TREE (deferred_fns, fn); - -  return 1; -} - -/* Called at end of parsing, but before end-of-file processing.  */ -  void  finish_file ()  { -  unsigned int i; - -  for (i = 0; i < VARRAY_ACTIVE_SIZE (deferred_fns); i++) -    { -      tree decl = VARRAY_TREE (deferred_fns, i); - -      if (! TREE_ASM_WRITTEN (decl)) -	{ -	  /* For static inline functions, delay the decision whether to -	     emit them or not until wrapup_global_declarations.  */ -	  if (! TREE_PUBLIC (decl)) -	    DECL_DEFER_OUTPUT (decl) = 1; -	  c_expand_deferred_function (decl); -	} -    } -  VARRAY_FREE (deferred_fns); - -  if (static_ctors) -    { -      tree body = start_cdtor ('I'); - -      for (; static_ctors; static_ctors = TREE_CHAIN (static_ctors)) -	c_expand_expr_stmt (build_function_call (TREE_VALUE (static_ctors), -						 NULL_TREE)); - -      finish_cdtor (body); -    } -  if (static_dtors) -    { -      tree body = start_cdtor ('D'); - -      for (; static_dtors; static_dtors = TREE_CHAIN (static_dtors)) -	c_expand_expr_stmt (build_function_call (TREE_VALUE (static_dtors), -						 NULL_TREE)); - -      finish_cdtor (body); -    } - -  { -    int flags; -    FILE *stream = dump_begin (TDI_all, &flags); - -    if (stream) -      { -	dump_node (getdecls (), flags & ~TDF_SLIM, stream); -	dump_end (TDI_all, stream); -      } -  } +  c_objc_common_finish_file ();  } | 

