perf annotate: Add and use ins__is_nop()
authorNamhyung Kim <namhyung@kernel.org>
Fri, 29 Mar 2024 21:58:09 +0000 (14:58 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 3 Apr 2024 14:48:57 +0000 (11:48 -0300)
Likewise, add ins__is_nop() to check if the current instruction is NOP.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240329215812.537846-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/annotate.c
tools/perf/util/annotate.h

index 986c499150ef767420454a586bec509f39b09372..5d0ca004dcfb798718def24cefa201504ba7764a 100644 (file)
@@ -757,6 +757,11 @@ static struct ins_ops ret_ops = {
        .scnprintf = ins__raw_scnprintf,
 };
 
+bool ins__is_nop(const struct ins *ins)
+{
+       return ins->ops == &nop_ops;
+}
+
 bool ins__is_ret(const struct ins *ins)
 {
        return ins->ops == &ret_ops;
@@ -1785,7 +1790,7 @@ static void delete_last_nop(struct symbol *sym)
                dl = list_entry(list->prev, struct disasm_line, al.node);
 
                if (dl->ins.ops) {
-                       if (dl->ins.ops != &nop_ops)
+                       if (!ins__is_nop(&dl->ins))
                                return;
                } else {
                        if (!strstr(dl->al.line, " nop ") &&
index 14980b65f812d08ae225f482bb3cca8b0313b56c..98f556af637c229a4491fceb39a05a1e93613bde 100644 (file)
@@ -74,6 +74,7 @@ struct ins_ops {
 
 bool ins__is_jump(const struct ins *ins);
 bool ins__is_call(const struct ins *ins);
+bool ins__is_nop(const struct ins *ins);
 bool ins__is_ret(const struct ins *ins);
 bool ins__is_lock(const struct ins *ins);
 int ins__scnprintf(struct ins *ins, char *bf, size_t size, struct ins_operands *ops, int max_ins_name);