diff options
author | Richard Henderson <rth@redhat.com> | 2002-04-03 14:39:51 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-04-03 14:39:51 -0800 |
commit | ef4f94ac977780ceb14adc8dcbcc2eb2c23b5425 (patch) | |
tree | fd1d1d700f54be42454fcc88e95011014edff3f4 /gcc/toplev.c | |
parent | 599bba86dffe8bd03676f4bf50bca436d3112b90 (diff) | |
download | gcc-ef4f94ac977780ceb14adc8dcbcc2eb2c23b5425.tar.gz |
re PR rtl-optimization/4330 (Optimizer generates illegal assembly code)
PR opt/4330
* langhooks.h (lang_hooks.decls.warn_unused_global): New.
* toplev.c (check_global_declarations): Use it.
* langhooks-def.h (lhd_warn_unused_global_decl): Declare.
(LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
(LANG_HOOKS_DECLS): Add it.
* langhooks.c (lhd_warn_unused_global_decl): New.
* c-decl.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
* c-objc-common.c (c_warn_unused_global_decl): New.
* c-tree.h (c_warn_unused_global_decl): Declare.
* objc/objc-lang.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
* cp-lang.c (cxx_warn_unused_global_decl): New.
(LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
* g++.dg/warn/Wunused-2.C: New.
* gcc.dg/unused-4.c: New.
From-SVN: r51818
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r-- | gcc/toplev.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c index 9fa22fc9cdf..b62aae35e1f 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1945,22 +1945,19 @@ check_global_declarations (vec, len) assemble_external (decl); } - /* Warn about static fns or vars defined but not used, - but not about inline functions or static consts - since defining those in header files is normal practice. */ - if (((warn_unused_function - && TREE_CODE (decl) == FUNCTION_DECL && ! DECL_INLINE (decl)) - || (warn_unused_variable - && TREE_CODE (decl) == VAR_DECL && ! TREE_READONLY (decl))) - && ! DECL_IN_SYSTEM_HEADER (decl) + /* Warn about static fns or vars defined but not used. */ + if (((warn_unused_function && TREE_CODE (decl) == FUNCTION_DECL) + || (warn_unused_variable && TREE_CODE (decl) == VAR_DECL)) + && ! TREE_USED (decl) + /* The TREE_USED bit for file-scope decls is kept in the identifier, + to handle multiple external decls in different scopes. */ + && ! TREE_USED (DECL_NAME (decl)) && ! DECL_EXTERNAL (decl) && ! TREE_PUBLIC (decl) - && ! TREE_USED (decl) - && (TREE_CODE (decl) == FUNCTION_DECL || ! DECL_REGISTER (decl)) - /* The TREE_USED bit for file-scope decls - is kept in the identifier, to handle multiple - external decls in different scopes. */ - && ! TREE_USED (DECL_NAME (decl))) + /* Global register variables must be declared to reserve them. */ + && ! (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl)) + /* Otherwise, ask the language. */ + && (*lang_hooks.decls.warn_unused_global) (decl)) warning_with_decl (decl, "`%s' defined but not used"); timevar_push (TV_SYMOUT); |