summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2007-10-05 22:43:41 -0400
committerFrank Ch. Eigler <fche@elastic.org>2007-10-05 22:43:41 -0400
commit9d33454315110680fda3a926465c3002a0521431 (patch)
tree1bf932760ff25506f7fb8c9c2fc118bb249f5113 /elaborate.cxx
parentb3159730ec256436bc47071185c6a3d14324f8d1 (diff)
parenta9e8f7e0533811be2cd7c9a88d9058da8caa1d11 (diff)
downloadsystemtap-steved-9d33454315110680fda3a926465c3002a0521431.tar.gz
systemtap-steved-9d33454315110680fda3a926465c3002a0521431.tar.xz
systemtap-steved-9d33454315110680fda3a926465c3002a0521431.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'elaborate.cxx')
-rw-r--r--elaborate.cxx36
1 files changed, 32 insertions, 4 deletions
diff --git a/elaborate.cxx b/elaborate.cxx
index 621e1a72..d86cc37d 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -1372,7 +1372,10 @@ void semantic_pass_opt1 (systemtap_session& s, bool& relaxed_p)
{
if (ftv.traversed.find(s.functions[i]) == ftv.traversed.end())
{
- if (s.verbose>2)
+ if (s.functions[i]->tok->location.file == s.user_file->name && // !tapset
+ ! s.suppress_warnings)
+ clog << "WARNING: eliding unused function " << *s.functions[i]->tok << endl;
+ else if (s.verbose>2)
clog << "Eliding unused function " << s.functions[i]->name
<< endl;
if (s.tapset_compile_coverage) {
@@ -1412,10 +1415,14 @@ void semantic_pass_opt2 (systemtap_session& s, bool& relaxed_p)
for (unsigned j=0; j<s.probes[i]->locals.size(); /* see below */)
{
vardecl* l = s.probes[i]->locals[j];
+
if (vut.read.find (l) == vut.read.end() &&
vut.written.find (l) == vut.written.end())
{
- if (s.verbose>2)
+ if (l->tok->location.file == s.user_file->name && // !tapset
+ ! s.suppress_warnings)
+ clog << "WARNING: eliding unused variable " << *l->tok << endl;
+ else if (s.verbose>2)
clog << "Eliding unused local variable "
<< l->name << " in " << s.probes[i]->name << endl;
if (s.tapset_compile_coverage) {
@@ -1436,7 +1443,10 @@ void semantic_pass_opt2 (systemtap_session& s, bool& relaxed_p)
if (vut.read.find (l) == vut.read.end() &&
vut.written.find (l) == vut.written.end())
{
- if (s.verbose>2)
+ if (l->tok->location.file == s.user_file->name && // !tapset
+ ! s.suppress_warnings)
+ clog << "WARNING: eliding unused variable " << *l->tok << endl;
+ else if (s.verbose>2)
clog << "Eliding unused local variable "
<< l->name << " in function " << s.functions[i]->name
<< endl;
@@ -1457,7 +1467,10 @@ void semantic_pass_opt2 (systemtap_session& s, bool& relaxed_p)
if (vut.read.find (l) == vut.read.end() &&
vut.written.find (l) == vut.written.end())
{
- if (s.verbose>2)
+ if (l->tok->location.file == s.user_file->name && // !tapset
+ ! s.suppress_warnings)
+ clog << "WARNING: eliding unused variable " << *l->tok << endl;
+ else if (s.verbose>2)
clog << "Eliding unused global variable "
<< l->name << endl;
if (s.tapset_compile_coverage) {
@@ -1529,9 +1542,17 @@ dead_assignment_remover::visit_assignment (assignment* e)
e->left->visit (& vut);
if (vut.side_effect_free ()) // XXX: use _wrt() once we track focal_vars
{
+ /* PR 1119: NB: This is not necessary here. A write-only
+ variable will also be elided soon at the next _opt2 iteration.
+ if (e->left->tok->location.file == session.user_file->name && // !tapset
+ ! session.suppress_warnings)
+ clog << "WARNING: eliding write-only " << *e->left->tok << endl;
+ else
+ */
if (session.verbose>2)
clog << "Eliding assignment to " << leftvar->name
<< " at " << *e->tok << endl;
+
*current_expr = e->right; // goodbye assignment*
relaxed_p = false;
}
@@ -1653,6 +1674,13 @@ dead_stmtexpr_remover::visit_expr_statement (expr_statement *s)
if (vut.side_effect_free_wrt (focal_vars) &&
*current_stmt == s) // we're not nested any deeper than expected
{
+ /* PR 1119: NB: this message is not a good idea here. It can
+ name some arbitrary RHS expression of an assignment.
+ if (s->value->tok->location.file == session.user_file->name && // not tapset
+ ! session.suppress_warnings)
+ clog << "WARNING: eliding read-only " << *s->value->tok << endl;
+ else
+ */
if (session.verbose>2)
clog << "Eliding side-effect-free expression "
<< *s->tok << endl;