diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-05-21 11:43:53 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-05-21 11:43:53 -0400 |
commit | 8fa48434a2fa7cd0302ed5d45d0cf5506796d9f9 (patch) | |
tree | f39c9c722c76603f4f5514d3092c74b3abfc5478 /elaborate.cxx | |
parent | d0c4107b0e02c31acb062de829c6d104cb6918df (diff) | |
parent | e483d9dfa614ee17b488df7224ee22a0f7dc9386 (diff) | |
download | systemtap-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.cxx | 13 |
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; |