hist_op *hist;
classify_indexable (s->base, array, hist);
+ // Create a temporary for the loop limit counter and the limit
+ // expression result.
+ if (s->limit)
+ {
+ tmpvar res_limit = parent->gensym (pe_long);
+ res_limit.declare(*parent);
+
+ s->limit->visit (this);
+
+ tmpvar limitv = parent->gensym (pe_long);
+ limitv.declare(*parent);
+ }
+
if (array)
{
itervar iv = parent->getiter (array);
load_aggregate (hist->stat);
}
- // Create a temporary for the loop limit counter and the limit
- // expression result.
- if (s->limit)
- {
- tmpvar res_limit = parent->gensym (pe_long);
- res_limit.declare(*parent);
-
- s->limit->visit (this);
-
- tmpvar limitv = parent->gensym (pe_long);
- limitv.declare(*parent);
- }
-
parent->visit_foreach_loop_value(this, s);
}
if (array)
{
mapvar mv = getmap (array->referent, s->tok);
- itervar iv = getiter (array);
vector<var> keys;
// NB: structure parallels for_loop
// NB: sort direction sense is opposite in runtime, thus the negation
- if (mv.is_parallel())
- aggregations_active.insert(mv.value());
- o->newline() << iv << " = " << iv.start (mv) << ";";
-
tmpvar *limitv = NULL;
if (s->limit)
{
o->newline() << *limitv << " = 0LL;";
}
+ if (mv.is_parallel())
+ aggregations_active.insert(mv.value());
+
+ itervar iv = getiter (array);
+ o->newline() << iv << " = " << iv.start (mv) << ";";
+
vector<tmpvar *> array_slice_vars;
// store the the variables corresponding to the index of the array slice
// as temporary variables
// Iterating over buckets in a histogram.
assert(s->indexes.size() == 1);
assert(s->indexes[0]->referent->type == pe_long);
- var bucketvar = getvar (s->indexes[0]->referent);
-
- aggvar agg = gensym_aggregate ();
-
- var *v = load_aggregate(hist->stat, agg);
- v->assert_hist_compatible(*hist);
tmpvar *res_limit = NULL;
tmpvar *limitv = NULL;
o->newline() << *limitv << " = 0LL;";
}
+ var bucketvar = getvar (s->indexes[0]->referent);
+
+ aggvar agg = gensym_aggregate ();
+
+ var *v = load_aggregate(hist->stat, agg);
+ v->assert_hist_compatible(*hist);
+
record_actions(1, s->tok, true);
o->newline() << "for (" << bucketvar << " = 0; "
<< bucketvar << " < " << v->buckets() << "; "