struct parse_events_terms parsed_terms;
        bool alias_rewrote_terms = false;
 
-       parse_events_terms__init(&parsed_terms);
-       if (const_parsed_terms) {
-               int ret = parse_events_terms__copy(const_parsed_terms, &parsed_terms);
-
-               if (ret)
-                       return ret;
-       }
-
        if (verbose > 1) {
                struct strbuf sb;
 
                strbuf_init(&sb, /*hint=*/ 0);
-               if (pmu->selectable && list_empty(&parsed_terms.terms)) {
+               if (pmu->selectable && const_parsed_terms &&
+                   list_empty(&const_parsed_terms->terms)) {
                        strbuf_addf(&sb, "%s//", pmu->name);
                } else {
                        strbuf_addf(&sb, "%s/", pmu->name);
-                       parse_events_terms__to_strbuf(&parsed_terms, &sb);
+                       parse_events_terms__to_strbuf(const_parsed_terms, &sb);
                        strbuf_addch(&sb, '/');
                }
                fprintf(stderr, "Attempt to add: %s\n", sb.buf);
                strbuf_release(&sb);
        }
-       fix_raw(&parsed_terms, pmu);
 
        memset(&attr, 0, sizeof(attr));
        if (pmu->perf_event_attr_init_default)
 
        attr.type = pmu->type;
 
-       if (list_empty(&parsed_terms.terms)) {
+       if (!const_parsed_terms || list_empty(&const_parsed_terms->terms)) {
                evsel = __add_event(list, &parse_state->idx, &attr,
                                    /*init_attr=*/true, /*name=*/NULL,
                                    /*metric_id=*/NULL, pmu,
                return evsel ? 0 : -ENOMEM;
        }
 
+       parse_events_terms__init(&parsed_terms);
+       if (const_parsed_terms) {
+               int ret = parse_events_terms__copy(const_parsed_terms, &parsed_terms);
+
+               if (ret)
+                       return ret;
+       }
+       fix_raw(&parsed_terms, pmu);
+
        /* Configure attr/terms with a known PMU, this will set hardcoded terms. */
        if (config_attr(&attr, &parsed_terms, parse_state->error, config_term_pmu)) {
                parse_events_terms__exit(&parsed_terms);