diff options
author | manu <manu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-09-16 21:25:28 +0000 |
---|---|---|
committer | manu <manu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-09-16 21:25:28 +0000 |
commit | 22c5bcc6d784aa4a4d392ce319ddee5e90d6be79 (patch) | |
tree | b82a31d5d53ebfe4aa79b8cf8362be98cba22d67 /gcc/toplev.c | |
parent | 5c4802f1e03c96bf95647ec751fc17a4146ade28 (diff) | |
download | gcc-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.c | 63 |
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. */ |