From 1bbeef03a440e3ac23d6e5148675450597a58e67 Mon Sep 17 00:00:00 2001 From: graydon Date: Fri, 2 Dec 2005 23:28:03 +0000 Subject: 2005-12-02 Graydon Hoare * elaborate.cxx (mutated_var_collector): Forward traversal portion of calls to base class. (mutated_var_collector::visit_arrayindex): Resolve arrayindex-into-histogram expression as pe_long. (typeresolution_info::visit_print_format): Traverse into histogram if present. * parse.cxx (parse_symbol): Handle parse ambiguity surrounding print(@hist_op(...)[...]). * staptree.cxx (traversing_visitor::visit_arrayindex): Visit base member of arrayindex. * translate.cxx (c_unparser::histogram_index_check): New method. (var::hist): Fix bug. (var::buckets): New method. (stmt_expr::stmt_expr): Print with newline. (c_unparser::load_map_indices): Handle indexing-histogram case. (c_tmpcounter::visit_arrayindex): Likewise. (c_unparser::visit_arrayindex): Likewise. (c_tmpcounter_assignment::visit_arrayindex): Throw error when user attempts to write to histogram bucket. (c_unparser_assignment::visit_arrayindex): Likewise. * testsuite/buildok/print_histogram_entry.stp: New test. --- staptree.cxx | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'staptree.cxx') diff --git a/staptree.cxx b/staptree.cxx index 3015c796..2ad2d906 100644 --- a/staptree.cxx +++ b/staptree.cxx @@ -1375,6 +1375,13 @@ traversing_visitor::visit_target_symbol (target_symbol* e) void traversing_visitor::visit_arrayindex (arrayindex* e) { + symbol *array = NULL; + hist_op *hist = NULL; + classify_indexable(e->base, array, hist); + if (array) + return array->visit(this); + else + return hist->visit(this); for (unsigned i=0; iindexes.size(); i++) e->indexes[i]->visit (this); } -- cgit