Move C_DECL_FILE_SCOPE to tree.h

Richard Henderson rth@redhat.com
Fri Aug 29 21:58:00 GMT 2003


I'll shortly need this in code generic to all functions-as-trees languages.


r~


        * c-tree.h (C_DECL_FILE_SCOPE): Move ...
        * tree.h (DECL_FILE_SCOPE_P): ... here, and rename.
        * c-decl.c, c-objc-common.c, c-typeck.c: Update to match.

Index: c-decl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-decl.c,v
retrieving revision 1.435
diff -c -p -d -u -r1.435 c-decl.c
--- c-decl.c	23 Aug 2003 22:18:49 -0000	1.435
+++ c-decl.c	29 Aug 2003 21:37:56 -0000
@@ -1571,7 +1571,7 @@ warn_if_shadowing (tree x, tree old)
   name = IDENTIFIER_POINTER (DECL_NAME (x));
   if (TREE_CODE (old) == PARM_DECL)
     shadow_warning (SW_PARAM, name, old);
-  else if (C_DECL_FILE_SCOPE (old))
+  else if (DECL_FILE_SCOPE_P (old))
     shadow_warning (SW_GLOBAL, name, old);
   else
     shadow_warning (SW_LOCAL, name, old);
@@ -1818,7 +1818,7 @@ implicitly_declare (tree functionid)
       if (!C_DECL_IMPLICIT (decl))
 	{
 	  implicit_decl_warning (DECL_NAME (decl));
-	  if (! C_DECL_FILE_SCOPE (decl))
+	  if (! DECL_FILE_SCOPE_P (decl))
 	    warning ("%Hprevious declaration of '%D'",
                      &DECL_SOURCE_LOCATION (decl), decl);
 	  C_DECL_IMPLICIT (decl) = 1;
@@ -1898,7 +1898,7 @@ redeclaration_error_message (tree newdec
 	return 1;
       return 0;
     }
-  else if (C_DECL_FILE_SCOPE (newdecl))
+  else if (DECL_FILE_SCOPE_P (newdecl))
     {
       /* Objects declared at file scope:  */
       /* If at least one is a reference, it's ok.  */
@@ -2689,7 +2689,7 @@ start_decl (tree declarator, tree declsp
 	 and we preserved the rtl from the previous one
 	 (which may or may not happen).  */
       && !DECL_RTL_SET_P (tem)
-      && C_DECL_FILE_SCOPE (tem))
+      && DECL_FILE_SCOPE_P (tem))
     {
       if (TREE_TYPE (tem) != error_mark_node
 	  && (COMPLETE_TYPE_P (TREE_TYPE (tem))
@@ -2794,7 +2794,7 @@ finish_decl (tree decl, tree init, tree 
 		   Otherwise, let it through, but if it is not `extern'
 		   then it may cause an error message later.  */
 		(DECL_INITIAL (decl) != 0
-		 || !C_DECL_FILE_SCOPE (decl))
+		 || !DECL_FILE_SCOPE_P (decl))
 	      :
 		/* An automatic variable with an incomplete type
 		   is an error.  */
@@ -2865,7 +2865,7 @@ finish_decl (tree decl, tree init, tree 
       if (c_dialect_objc ())
 	objc_check_decl (decl);
 
-      if (C_DECL_FILE_SCOPE (decl))
+      if (DECL_FILE_SCOPE_P (decl))
 	{
 	  if (DECL_INITIAL (decl) == NULL_TREE
 	      || DECL_INITIAL (decl) == error_mark_node)
@@ -2905,7 +2905,7 @@ finish_decl (tree decl, tree init, tree 
 	    add_decl_stmt (decl);
 	}
 
-      if (!C_DECL_FILE_SCOPE (decl))
+      if (!DECL_FILE_SCOPE_P (decl))
 	{
 	  /* Recompute the RTL of a local array now
 	     if it used to be an incomplete type.  */
@@ -2930,7 +2930,7 @@ finish_decl (tree decl, tree init, tree 
       /* This is a no-op in c-lang.c or something real in objc-act.c.  */
       if (c_dialect_objc ())
 	objc_check_decl (decl);
-      rest_of_decl_compilation (decl, NULL, C_DECL_FILE_SCOPE (decl), 0);
+      rest_of_decl_compilation (decl, NULL, DECL_FILE_SCOPE_P (decl), 0);
     }
 
   /* At the end of a declaration, throw away any variable type sizes
@@ -6308,7 +6308,7 @@ c_expand_body_1 (tree fndecl, int nested
      to run global initializers, etc.  */
   if (DECL_NAME (fndecl)
       && MAIN_NAME_P (DECL_NAME (fndecl))
-      && C_DECL_FILE_SCOPE (fndecl))
+      && DECL_FILE_SCOPE_P (fndecl))
     expand_main_function ();
 
   /* Generate the RTL for this function.  */
@@ -6640,7 +6640,7 @@ tree
 identifier_global_value	(tree t)
 {
   tree decl = IDENTIFIER_SYMBOL_VALUE (t);
-  if (decl == 0 || C_DECL_FILE_SCOPE (decl))
+  if (decl == 0 || DECL_FILE_SCOPE_P (decl))
     return decl;
 
   /* Shadowed by something else; find the true global value.  */
Index: c-objc-common.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-objc-common.c,v
retrieving revision 1.30
diff -c -p -d -u -r1.30 c-objc-common.c
--- c-objc-common.c	25 Jul 2003 09:52:23 -0000	1.30
+++ c-objc-common.c	29 Aug 2003 21:37:56 -0000
@@ -127,7 +127,7 @@ inline_forbidden_p (tree *nodep, int *wa
       /* We cannot inline a nested function that jumps to a nonlocal
          label.  */
       if (TREE_CODE (t) == LABEL_DECL
-	  && !C_DECL_FILE_SCOPE (t) && DECL_CONTEXT (t) != fn)
+	  && !DECL_FILE_SCOPE_P (t) && DECL_CONTEXT (t) != fn)
 	return node;
 
       break;
@@ -184,7 +184,7 @@ c_cannot_inline_tree_fn (tree *fnp)
 	goto cannot_inline;
     }
 
-  if (! C_DECL_FILE_SCOPE (fn))
+  if (! DECL_FILE_SCOPE_P (fn))
     {
       /* If a nested function has pending sizes, we may have already
          saved them.  */
Index: c-tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-tree.h,v
retrieving revision 1.128
diff -c -p -d -u -r1.128 c-tree.h
--- c-tree.h	5 Aug 2003 14:11:42 -0000	1.128
+++ c-tree.h	29 Aug 2003 21:37:56 -0000
@@ -138,11 +138,6 @@ struct lang_type GTY(())
 	|| (TYPE_ARG_TYPES (TREE_TYPE (EXP)) == 0	\
 	    && !DECL_BUILT_IN (EXP)))
 
-/* Nonzero for a decl which is at file scope.  */
-#define C_DECL_FILE_SCOPE(EXP) 					\
-  (! DECL_CONTEXT (EXP)						\
-   || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL)
-
 /* For FUNCTION_TYPE, a hidden list of types of arguments.  The same as
    TYPE_ARG_TYPES for functions with prototypes, but created for functions
    without prototypes.  */
Index: c-typeck.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-typeck.c,v
retrieving revision 1.253
diff -c -p -d -u -r1.253 c-typeck.c
--- c-typeck.c	19 Aug 2003 01:36:27 -0000	1.253
+++ c-typeck.c	29 Aug 2003 21:37:56 -0000
@@ -1545,7 +1545,7 @@ build_external_ref (tree id, int fun)
       /* Properly declared variable or function reference.  */
       if (!objc_ivar)
 	ref = decl;
-      else if (decl != objc_ivar && !C_DECL_FILE_SCOPE (decl))
+      else if (decl != objc_ivar && !DECL_FILE_SCOPE_P (decl))
 	{
 	  warning ("local declaration of `%s' hides instance variable",
 		   IDENTIFIER_POINTER (id));
@@ -1585,7 +1585,7 @@ build_external_ref (tree id, int fun)
       TREE_CONSTANT (ref) = 1;
     }
   else if (current_function_decl != 0
-	   && !C_DECL_FILE_SCOPE (current_function_decl)
+	   && !DECL_FILE_SCOPE_P (current_function_decl)
 	   && (TREE_CODE (ref) == VAR_DECL
 	       || TREE_CODE (ref) == PARM_DECL
 	       || TREE_CODE (ref) == FUNCTION_DECL))
@@ -2436,7 +2436,7 @@ build_unary_op (enum tree_code code, tre
 	   file-scope function counts as a constant.  */
 	if (staticp (arg)
 	    && ! (TREE_CODE (arg) == FUNCTION_DECL
-		  && !C_DECL_FILE_SCOPE (arg)))
+		  && !DECL_FILE_SCOPE_P (arg)))
 	  TREE_CONSTANT (addr) = 1;
 	return addr;
       }
Index: tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree.h,v
retrieving revision 1.441
diff -c -p -d -u -r1.441 tree.h
--- tree.h	28 Aug 2003 22:00:44 -0000	1.441
+++ tree.h	29 Aug 2003 21:37:56 -0000
@@ -1624,6 +1624,11 @@ struct tree_type GTY(())
 #define DECL_ESTIMATED_INSNS(NODE) \
   (FUNCTION_DECL_CHECK (NODE)->decl.u1.i)
 
+/* Nonzero for a decl which is at file scope.  */
+#define DECL_FILE_SCOPE_P(EXP) 					\
+  (! DECL_CONTEXT (EXP)						\
+   || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL)
+
 struct function;
 
 struct tree_decl GTY(())



More information about the Gcc-patches mailing list