diff options
author | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-18 17:07:53 +0000 |
---|---|---|
committer | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-18 17:07:53 +0000 |
commit | 0767cba934e92d31349601c9e58281878096a310 (patch) | |
tree | e282a8b31bbf685e2f19352bd0b60a68eddc7257 /gcc/cp/semantics.c | |
parent | 0deb47ed60e5ed86f389d3d6fe5b2afdceb897cb (diff) | |
download | gcc-0767cba934e92d31349601c9e58281878096a310.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71528 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 37dca0a6a57..ef42579f349 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. */ |