This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Move C_DECL_FILE_SCOPE to tree.h
- From: Richard Henderson <rth at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 29 Aug 2003 14:58:44 -0700
- Subject: Move C_DECL_FILE_SCOPE to tree.h
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(())