diff options
author | fche <fche> | 2008-03-03 21:36:50 +0000 |
---|---|---|
committer | fche <fche> | 2008-03-03 21:36:50 +0000 |
commit | b0be9bdb8c6972d847cad50a1e699f1fa806ad99 (patch) | |
tree | 66b3e148a84447d69f1340447c5edba8bf2055cd /staptree.cxx | |
parent | aae3e9a9a9cb64560070de2d1de30b08252b1e81 (diff) | |
download | systemtap-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.cxx | 11 |
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) |