Re: [PATCH 2/2] powerpc/sstep: Don’t defi ne variables we won’t be using

"Christophe Leroy (CS GROUP)" <[email protected]> Thu, 30 Jul 2026 08:24:36 +0200
Newsgroups org.ozlabs.lists.linuxppc-dev,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

Le 29/07/2026 à 22:49, Link Mauve a écrit :
> It seems this function has only compiled without warnings on PPC64, not
> on PowerPC, so before this commit it would fail with:
> ```
> ../arch/powerpc/lib/sstep.c: In function 'analyse_instr':
> ../arch/powerpc/lib/sstep.c:1350:28: error: variable 'suffix' set but not used [-Werror=unused-but-set-variable]
>   1350 |         unsigned int word, suffix;
>        |                            ^~~~~~
> ../arch/powerpc/lib/sstep.c:1346:38: error: variable 'rc' set but not used [-Werror=unused-but-set-variable]
>   1346 |         unsigned int opcode, ra, rb, rc, rd, spr, u;
>        |                                      ^~
> cc1: all warnings being treated as errors
> ```
> 

I'm surprised we still have this issue. I remember seeing it reported 
several times allthough I've not been able to spot when.

By the way on my side it happens only when I do a W=1 build.

Same as previous patch, I'd prefer using CONFIG_PPC64 instead of 
__powerpc64__

> Signed-off-by: Link Mauve <[email protected]>
> ---
>   arch/powerpc/lib/sstep.c | 10 ++++++++--
>   1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
> index 597a0d841fe8..c866e4337f94 100644
> --- a/arch/powerpc/lib/sstep.c
> +++ b/arch/powerpc/lib/sstep.c
> @@ -1342,16 +1342,20 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
>   {
>   #ifdef __powerpc64__
>   	unsigned int suffixopcode, prefixtype, prefix_r;
> +	unsigned int rc;
> +	unsigned int suffix;

A single line would be enough:

	unsigned int rc, suffix;

>   #endif
> -	unsigned int opcode, ra, rb, rc, rd, spr, u;
> +	unsigned int opcode, ra, rb, rd, spr, u;
>   	unsigned long int imm;
>   	unsigned long int val, val2;
>   	unsigned int mb, me, sh;
> -	unsigned int word, suffix;
> +	unsigned int word;
>   	long ival;
>   
>   	word = ppc_inst_val(instr);
> +#ifdef __powerpc64__
>   	suffix = ppc_inst_suffix(instr);
> +#endif
>   
>   	op->type = COMPUTE;
>   
> @@ -1469,7 +1473,9 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
>   	rd = (word >> 21) & 0x1f;
>   	ra = (word >> 16) & 0x1f;
>   	rb = (word >> 11) & 0x1f;
> +#ifdef __powerpc64__
>   	rc = (word >> 6) & 0x1f;
> +#endif
>   
>   	switch (opcode) {
>   #ifdef __powerpc64__