aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/semantics.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2003-09-18 17:07:53 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2003-09-18 17:07:53 +0000
commit85b22f7857a745d8ec12d88d61b770a598208ecf (patch)
treee282a8b31bbf685e2f19352bd0b60a68eddc7257 /gcc/cp/semantics.c
parentf857cb427e56de666cafa31769bb6208358c374c (diff)
downloadgcc-85b22f7857a745d8ec12d88d61b770a598208ecf.zip
gcc-85b22f7857a745d8ec12d88d61b770a598208ecf.tar.gz
gcc-85b22f7857a745d8ec12d88d61b770a598208ecf.tar.bz2
re PR c++/9848 (missing 'unused parameter' warning.)
cp: PR c++/9848 * optimize.c (maybe_clone_body): Don't set MARK_USED on parameters here. * semantics.c (expand_body): Set it here on the remaining clones. testsuite: PR c++/9848 * g++.dg/warn/Wunused-4.C: New test. From-SVN: r71528
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r--gcc/cp/semantics.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 37dca0a..ef42579 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2887,6 +2887,26 @@ expand_body (tree fn)
static duration objects. */
if (DECL_STATIC_DESTRUCTOR (fn))
static_dtors = tree_cons (NULL_TREE, fn, static_dtors);
+
+ if (DECL_CLONED_FUNCTION_P (fn))
+ {
+ /* If this is a clone, go through the other clones now and mark
+ their parameters used. We have to do that here, as we don't
+ know whether any particular clone will be expanded, and
+ therefore cannot pick one arbitrarily. */
+ tree probe;
+
+ for (probe = TREE_CHAIN (DECL_CLONED_FUNCTION (fn));
+ probe && DECL_CLONED_FUNCTION_P (probe);
+ probe = TREE_CHAIN (probe))
+ {
+ tree parms;
+
+ for (parms = DECL_ARGUMENTS (probe);
+ parms; parms = TREE_CHAIN (parms))
+ TREE_USED (parms) = 1;
+ }
+ }
}
/* Generate RTL for FN. */