summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-05-21 11:43:53 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-05-21 11:43:53 -0400
commit8fa48434a2fa7cd0302ed5d45d0cf5506796d9f9 (patch)
treef39c9c722c76603f4f5514d3092c74b3abfc5478 /elaborate.cxx
parentd0c4107b0e02c31acb062de829c6d104cb6918df (diff)
parente483d9dfa614ee17b488df7224ee22a0f7dc9386 (diff)
downloadsystemtap-steved-8fa48434a2fa7cd0302ed5d45d0cf5506796d9f9.tar.gz
systemtap-steved-8fa48434a2fa7cd0302ed5d45d0cf5506796d9f9.tar.xz
systemtap-steved-8fa48434a2fa7cd0302ed5d45d0cf5506796d9f9.zip
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
* 'master' of ssh://sources.redhat.com/git/systemtap: Use pointer_arg to fetch arguments for syscall.utime and compat_utime. Optimize compound and binary expression assignments.
Diffstat (limited to 'elaborate.cxx')
-rw-r--r--elaborate.cxx13
1 files changed, 13 insertions, 0 deletions
diff --git a/elaborate.cxx b/elaborate.cxx
index 26786c00..2f246e2c 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -1713,6 +1713,7 @@ struct dead_assignment_remover: public traversing_visitor
// called with null current_expr.
void visit_assignment (assignment* e);
+ void visit_binary_expression (binary_expression* e);
void visit_arrayindex (arrayindex* e);
void visit_functioncall (functioncall* e);
void visit_if_statement (if_statement* e);
@@ -1743,6 +1744,7 @@ dead_assignment_remover::visit_assignment (assignment* e)
{
expression** last_expr = current_expr;
e->left->visit (this);
+ current_expr = &e->right;
e->right->visit (this);
current_expr = last_expr;
if (vut.read.find(leftvar) == vut.read.end()) // var never read?
@@ -1776,6 +1778,17 @@ dead_assignment_remover::visit_assignment (assignment* e)
}
void
+dead_assignment_remover::visit_binary_expression (binary_expression* e)
+{
+ expression** last_expr = current_expr;
+ current_expr = &e->left;
+ e->left->visit (this);
+ current_expr = &e->right;
+ e->right->visit (this);
+ current_expr = last_expr;
+}
+
+void
dead_assignment_remover::visit_arrayindex (arrayindex *e)
{
symbol *array = NULL;