summaryrefslogtreecommitdiffstats
path: root/staptree.cxx
diff options
context:
space:
mode:
authorfche <fche>2008-03-03 21:36:50 +0000
committerfche <fche>2008-03-03 21:36:50 +0000
commitb0be9bdb8c6972d847cad50a1e699f1fa806ad99 (patch)
tree66b3e148a84447d69f1340447c5edba8bf2055cd /staptree.cxx
parentaae3e9a9a9cb64560070de2d1de30b08252b1e81 (diff)
downloadsystemtap-steved-b0be9bdb8c6972d847cad50a1e699f1fa806ad99.tar.gz
systemtap-steved-b0be9bdb8c6972d847cad50a1e699f1fa806ad99.tar.xz
systemtap-steved-b0be9bdb8c6972d847cad50a1e699f1fa806ad99.zip
PR5516: assignment to $pointers
2008-03-03 Frank Ch. Eigler <fche@elastic.org> PR5516 * elaborate.cxx (symbol_fetcher, dead_assignment_remover): Support unresolved $target lvalues. Propagate pretty error messages. * staptree.cxx (varuse_collecting_visitor target_symbol): Ditto. * staptree.h: Corresponding decl. * loc2c.c: c_translate_pointer_store: New function. * loc2c.h: Corresponding decl. * tapsets.cxx (dwflpp::translate_final_fetch_or_store): Call it for $target pointer assignments. 2008-03-03 Frank Ch. Eigler <fche@elastic.org> PR5516 * buildok/twentynine.stp: New test.
Diffstat (limited to 'staptree.cxx')
-rw-r--r--staptree.cxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/staptree.cxx b/staptree.cxx
index 63c1fcf7..778691f4 100644
--- a/staptree.cxx
+++ b/staptree.cxx
@@ -1644,6 +1644,17 @@ varuse_collecting_visitor::visit_embeddedcode (embeddedcode *s)
embedded_seen = true;
}
+void
+varuse_collecting_visitor::visit_target_symbol (target_symbol *e)
+{
+ // Still-unresolved target symbol assignments get treated as
+ // generating side-effects like embedded-C, to prevent premature
+ // elision and later error message suppression (PR5516). rvalue use
+ // of unresolved target symbols is OTOH not considered a side-effect.
+
+ if (is_active_lvalue (e))
+ embedded_seen = true;
+}
void
varuse_collecting_visitor::visit_print_format (print_format* e)