summaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authormanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-16 21:25:28 +0000
committermanu <manu@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-16 21:25:28 +0000
commit22c5bcc6d784aa4a4d392ce319ddee5e90d6be79 (patch)
treeb82a31d5d53ebfe4aa79b8cf8362be98cba22d67 /gcc/toplev.c
parent5c4802f1e03c96bf95647ec751fc17a4146ade28 (diff)
downloadgcc-22c5bcc6d784aa4a4d392ce319ddee5e90d6be79.tar.gz
Move check_global_declaration from toplev.c to cgraphunit.c
Unfortunately, toplev.c is a kitchen sink of things that do not belong anywhere in particular. For example, check_global_declarations is only used in cgraphunit.c. Moving it there allows us to make it static and remove one call to symtab_node::get. gcc/ChangeLog: 2015-09-16 Manuel López-Ibáñez <manu@gcc.gnu.org> * toplev.h (check_global_declaration): Remove declaration. * toplev.c (check_global_declaration): Move to ... * cgraphunit.c: ... here. Make it static and pass a symtab_node *. (analyze_functions): Update call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227835 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c63
1 files changed, 0 insertions, 63 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 95e4c522e4a..46689ab2860 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -469,69 +469,6 @@ wrapup_global_declarations (tree *vec, int len)
return output_something;
}
-/* Issue appropriate warnings for the global declaration DECL. */
-
-void
-check_global_declaration (tree decl)
-{
- /* Warn about any function declared static but not defined. We don't
- warn about variables, because many programs have static variables
- that exist only to get some text into the object file. */
- symtab_node *snode = symtab_node::get (decl);
- if (TREE_CODE (decl) == FUNCTION_DECL
- && DECL_INITIAL (decl) == 0
- && DECL_EXTERNAL (decl)
- && ! DECL_ARTIFICIAL (decl)
- && ! TREE_NO_WARNING (decl)
- && ! TREE_PUBLIC (decl)
- && (warn_unused_function
- || snode->referred_to_p (/*include_self=*/false)))
- {
- if (snode->referred_to_p (/*include_self=*/false))
- pedwarn (input_location, 0, "%q+F used but never defined", decl);
- else
- warning (OPT_Wunused_function, "%q+F declared %<static%> but never defined", decl);
- /* This symbol is effectively an "extern" declaration now. */
- TREE_PUBLIC (decl) = 1;
- }
-
- /* Warn about static fns or vars defined but not used. */
- if (((warn_unused_function && TREE_CODE (decl) == FUNCTION_DECL)
- || (((warn_unused_variable && ! TREE_READONLY (decl))
- || (warn_unused_const_variable && TREE_READONLY (decl)))
- && TREE_CODE (decl) == VAR_DECL))
- && ! DECL_IN_SYSTEM_HEADER (decl)
- && ! snode->referred_to_p (/*include_self=*/false)
- /* This TREE_USED check is needed in addition to referred_to_p
- above, because the `__unused__' attribute is not being
- considered for referred_to_p. */
- && ! TREE_USED (decl)
- /* The TREE_USED bit for file-scope decls is kept in the identifier,
- to handle multiple external decls in different scopes. */
- && ! (DECL_NAME (decl) && TREE_USED (DECL_NAME (decl)))
- && ! DECL_EXTERNAL (decl)
- && ! DECL_ARTIFICIAL (decl)
- && ! DECL_ABSTRACT_ORIGIN (decl)
- && ! TREE_PUBLIC (decl)
- /* A volatile variable might be used in some non-obvious way. */
- && ! TREE_THIS_VOLATILE (decl)
- /* Global register variables must be declared to reserve them. */
- && ! (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
- /* Global ctors and dtors are called by the runtime. */
- && (TREE_CODE (decl) != FUNCTION_DECL
- || (!DECL_STATIC_CONSTRUCTOR (decl)
- && !DECL_STATIC_DESTRUCTOR (decl)))
- /* Otherwise, ask the language. */
- && lang_hooks.decls.warn_unused_global (decl))
- warning_at (DECL_SOURCE_LOCATION (decl),
- (TREE_CODE (decl) == FUNCTION_DECL)
- ? OPT_Wunused_function
- : (TREE_READONLY (decl)
- ? OPT_Wunused_const_variable
- : OPT_Wunused_variable),
- "%qD defined but not used", decl);
-}
-
/* Compile an entire translation unit. Write a file of assembly
output and various debugging dumps. */