aboutsummaryrefslogtreecommitdiff
path: root/gcc/langhooks.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-04-03 14:39:51 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-04-03 14:39:51 -0800
commitef4f94ac977780ceb14adc8dcbcc2eb2c23b5425 (patch)
treefd1d1d700f54be42454fcc88e95011014edff3f4 /gcc/langhooks.c
parent599bba86dffe8bd03676f4bf50bca436d3112b90 (diff)
downloadgcc-ef4f94ac977780ceb14adc8dcbcc2eb2c23b5425.zip
gcc-ef4f94ac977780ceb14adc8dcbcc2eb2c23b5425.tar.gz
gcc-ef4f94ac977780ceb14adc8dcbcc2eb2c23b5425.tar.bz2
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/langhooks.c')
-rw-r--r--gcc/langhooks.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 4cdb8ab..128e6de 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -113,6 +113,25 @@ lhd_staticp (exp)
return 0;
}
+/* Called from check_global_declarations. */
+
+bool
+lhd_warn_unused_global_decl (decl)
+ tree decl;
+{
+ /* This is what used to exist in check_global_declarations. Probably
+ not many of these actually apply to non-C languages. */
+
+ if (TREE_CODE (decl) == FUNCTION_DECL && DECL_INLINE (decl))
+ return false;
+ if (TREE_CODE (decl) == VAR_DECL && TREE_READONLY (decl))
+ return false;
+ if (DECL_IN_SYSTEM_HEADER (decl))
+ return false;
+
+ return true;
+}
+
/* Called when -dy is given on the command line. */
void