From 5d23847db6a2b8ccacc992f76a1e387898047236 Mon Sep 17 00:00:00 2001 From: fche Date: Fri, 18 Jan 2008 13:07:13 +0000 Subject: PR 4936: probe pont conditions part 2; reorg in prep for full rewriting 2008-01-17 Frank Ch. Eigler PR 4935. Reorganize probe condition implementation. * elaborate.cxx (add_condition): New function. (derived_probe): Remove condition member. (derived_probe ctors): Assert non-null incoming probe/location ptrs. (insert_condition_statement): Remove; turn into ... (semantic_pass_conditions): New pass-2 subpass. (semantic_pass_symbols, visit_symbol, visit_functioncall, find_var): Detect some condition-related error cases. (match_key): Change type to exp_type from tok_type. Update callers. (alias_expansion_builder): Propagate probe conditions. * staptree.cxx (probe): Remove condition field and related functions. * tapsets.cxx (dwarf_derived_probe ctor): Compute replacement wildcard-expanded probe_point preserving more of the original location. (mark_derived_probe ctor): Make similar to others - take location rather than condition parameters. * translate.cxx (emit_common_header): Tweak ordering of tmpcounter traversal and hashkey expression generation. * elaborate.h: Corresponding changes. 2008-01-17 Frank Ch. Eigler PR 4935. * semko/forty.stp, fortyone.stp, fortytwo.stp: New tests. * semok/twentynine.stp: Weaken test since condition expressions have become more tightly constrained. --- staptree.cxx | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) (limited to 'staptree.cxx') diff --git a/staptree.cxx b/staptree.cxx index 8cd9ca83..ed2bc00e 100644 --- a/staptree.cxx +++ b/staptree.cxx @@ -89,7 +89,7 @@ probe_point::probe_point (): unsigned probe::last_probeidx = 0; probe::probe (): - body (0), tok (0), condition (0) + body (0), tok (0) { this->name = string ("probe_") + lex_cast(last_probeidx ++); } @@ -899,26 +899,6 @@ probe::collect_derivation_chain (std::vector &probes_list) probes_list.push_back((derived_probe*)this); } -void -probe::add_condition (expression* e) -{ - if (e) - { - if (this->condition) - { - logical_and_expr *la = new logical_and_expr (); - la->op = "&&"; - la->left = this->condition; - la->right = e; - la->tok = e->tok; - this->condition = la; - } - else - { - this->condition = e; - } - } -} void probe_point::print (ostream& o) const { -- cgit From edc22ba9b105fd944f39cf536346ff68c2c8d0aa Mon Sep 17 00:00:00 2001 From: brolley Date: Thu, 24 Jan 2008 16:43:13 +0000 Subject: 2008-01-24 Dave Brolley PR 5017. * staptree.cxx (): #include it. (required ): Remove 'static' from instantiation and move instantiation to here from... * staptree.h: ...here. --- staptree.cxx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'staptree.cxx') diff --git a/staptree.cxx b/staptree.cxx index ed2bc00e..173314ee 100644 --- a/staptree.cxx +++ b/staptree.cxx @@ -18,6 +18,7 @@ #include #include #include +#include using namespace std; @@ -2370,3 +2371,30 @@ deep_copy_visitor::deep_copy (expression* s) require (&v, &n, s); return n; } + +template <> void +require (deep_copy_visitor* v, indexable** dst, indexable* src) +{ + if (src != NULL) + { + symbol *array_src=NULL, *array_dst=NULL; + hist_op *hist_src=NULL, *hist_dst=NULL; + + classify_indexable(src, array_src, hist_src); + + *dst = NULL; + + if (array_src) + { + require (v, &array_dst, array_src); + *dst = array_dst; + } + else + { + require (v, &hist_dst, hist_src); + *dst = hist_dst; + } + assert (*dst); + } +} + -- cgit