From b0be9bdb8c6972d847cad50a1e699f1fa806ad99 Mon Sep 17 00:00:00 2001 From: fche Date: Mon, 3 Mar 2008 21:36:50 +0000 Subject: PR5516: assignment to $pointers 2008-03-03 Frank Ch. Eigler 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 PR5516 * buildok/twentynine.stp: New test. --- staptree.cxx | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'staptree.cxx') 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) -- cgit