On 14 Dec 2023 11:21, Simon Marchi wrote: > I get this when building with --enable-targets=all: > > CC m32r/mloopx.o > m32r/mloopx.c:37:1: error: ‘m32rxf_fill_argbuf_tp’ defined but not used [-Werror=unused-function] > 37 | m32rxf_fill_argbuf_tp (const SIM_CPU *cpu, ARGBUF *abuf, > | ^~~~~~~~~~~~~~~~~~~~~ > > CC m32r/mloop2.o > m32r/mloop2.c:37:1: error: ‘m32r2f_fill_argbuf_tp’ defined but not used [-Werror=unused-function] > 37 | m32r2f_fill_argbuf_tp (const SIM_CPU *cpu, ARGBUF *abuf, > | ^~~~~~~~~~~~~~~~~~~~~ > > I don't know this code, so I didn't do an in-depth analysis of the > situation. Adding the __attribute__((unused)) makes the warning go away > (this is what this patch does), but perhaps there's a better way or the > warning is the sign that something is wrong. pretty sure this is a shortcoming in the m32r mloop2.in & mloopx.in files and we should fix it there. the patch below should fix it. it also seems like the loop files are not respecting fast_p, but one thing at a time i guess. -mike --- a/sim/m32r/mloop2.in +++ b/sim/m32r/mloop2.in @@ -90,8 +90,7 @@ emit_full16 (SIM_CPU *current_cpu, PCADDR pc, CGEN_INSN_INT insn, SCACHE *sc, @cpu@_emit_before (current_cpu, sc, pc, 1); id = emit_16 (current_cpu, pc, insn, sc + 1, 0, 0); @cpu@_emit_after (current_cpu, sc + 2, pc); - sc[1].argbuf.trace_p = trace_p; - sc[1].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[1].argbuf, trace_p, profile_p); return id; } @@ -140,15 +139,13 @@ emit_full_parallel (SIM_CPU *current_cpu, PCADDR pc, CGEN_INSN_INT insn, /* FIXME: No need to handle this parallelly if second is nop. */ id = emit_16 (current_cpu, pc, insn >> 16, sc + 1, 0, 1); - sc[1].argbuf.trace_p = trace_p; - sc[1].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[1].argbuf, trace_p, profile_p); @cpu@_emit_before (current_cpu, sc + 2, pc, 0); /* Note that this can never be a cti. No cti's go in the S pipeline. */ id2 = emit_16 (current_cpu, pc + 2, insn & 0x7fff, sc + 3, 0, 0); - sc[3].argbuf.trace_p = trace_p; - sc[3].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[3].argbuf, trace_p, profile_p); /* Set sc/snc insns notion of where to skip to. */ if (IDESC_SKIP_P (id)) @@ -184,8 +181,7 @@ emit_full32 (SIM_CPU *current_cpu, PCADDR pc, CGEN_INSN_INT insn, SCACHE *sc, @cpu@_emit_before (current_cpu, sc, pc, 1); id = emit_32 (current_cpu, pc, insn, sc + 1, 0); @cpu@_emit_after (current_cpu, sc + 2, pc); - sc[1].argbuf.trace_p = trace_p; - sc[1].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[1].argbuf, trace_p, profile_p); return id; } --- a/sim/m32r/mloopx.in +++ b/sim/m32r/mloopx.in @@ -90,8 +90,7 @@ emit_full16 (SIM_CPU *current_cpu, PCADDR pc, CGEN_INSN_INT insn, SCACHE *sc, @cpu@_emit_before (current_cpu, sc, pc, 1); id = emit_16 (current_cpu, pc, insn, sc + 1, 0, 0); @cpu@_emit_after (current_cpu, sc + 2, pc); - sc[1].argbuf.trace_p = trace_p; - sc[1].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[1].argbuf, trace_p, profile_p); return id; } @@ -140,15 +139,13 @@ emit_full_parallel (SIM_CPU *current_cpu, PCADDR pc, CGEN_INSN_INT insn, /* FIXME: No need to handle this parallelly if second is nop. */ id = emit_16 (current_cpu, pc, insn >> 16, sc + 1, 0, 1); - sc[1].argbuf.trace_p = trace_p; - sc[1].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[1].argbuf, trace_p, profile_p); @cpu@_emit_before (current_cpu, sc + 2, pc, 0); /* Note that this can never be a cti. No cti's go in the S pipeline. */ id2 = emit_16 (current_cpu, pc + 2, insn & 0x7fff, sc + 3, 0, 0); - sc[3].argbuf.trace_p = trace_p; - sc[3].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[3].argbuf, trace_p, profile_p); /* Set sc/snc insns notion of where to skip to. */ if (IDESC_SKIP_P (id)) @@ -184,8 +181,7 @@ emit_full32 (SIM_CPU *current_cpu, PCADDR pc, CGEN_INSN_INT insn, SCACHE *sc, @cpu@_emit_before (current_cpu, sc, pc, 1); id = emit_32 (current_cpu, pc, insn, sc + 1, 0); @cpu@_emit_after (current_cpu, sc + 2, pc); - sc[1].argbuf.trace_p = trace_p; - sc[1].argbuf.profile_p = profile_p; + @cpu@_fill_argbuf_tp (current_cpu, &sc[1].argbuf, trace_p, profile_p); return id; }