>  static struct evsel *find_evsel_group(struct evlist *perf_evlist,
>                                     struct expr_parse_ctx *pctx,
> +                                   bool has_constraint,
>                                     struct evsel **metric_events,
>                                     unsigned long *evlist_used)
>  {
> -     struct evsel *ev;
> -     bool leader_found;
> -     const size_t idnum = hashmap__size(&pctx->ids);
> -     size_t i = 0;
> -     int j = 0;
> +     struct evsel *ev, *current_leader = NULL;
>       double *val_ptr;
> +     int i = 0, matched_events = 0, events_to_match;
> +     const int idnum = (int)hashmap__size(&pctx->ids);

BTW standard perf data structure would be a rblist or strlist

I think it would be really better to do the deduping in a separate
pass than trying to add it to find_evsel_group. This leads
to very complicated logic.

This will likely make it easier to implement more sophisticated
algorithms too.

-Andi

Reply via email to