diff mbox series

MIPS: Drop unused positional parameter in local_irq_{dis,en}able

Message ID 20230404-mips-unused-named-parameters-v1-1-71d6c656f1de@kernel.org (mailing list archive)
State Accepted
Commit 275aca650e76e203e3efc71835d7195e18d2e718
Headers show
Series MIPS: Drop unused positional parameter in local_irq_{dis,en}able | expand

Commit Message

Nathan Chancellor April 4, 2023, 9:18 p.m. UTC
When building with clang's integrated assembler, it points out that the
CONFIG_CPU_HAS_DIEI versions of local_irq_enable and local_irq_disable
have a named parameter that is not used in the body of the macro and it
thinks that $8 is a positional parameter, rather than a register:

  arch/mips/include/asm/asmmacro.h:48:2: warning: macro defined with named parameters which are not used in macro body, possible positional parameter found in body which will have no effect
   .macro local_irq_enable reg=$8
   ^

The comment above the function that performs this check in LLVM notes
that the warning may trigger in this case, even though it is not
problematic. It is easy enough to clean this up by just omitting the
named parameter for this version of the macro, as it is entirely unused.

Reported-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/1415
Link: https://github.com/llvm/llvm-project/commit/81c944cadb7f9e55b3517b7423a820e2577b9279
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
 arch/mips/include/asm/asmmacro.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


---
base-commit: 101f26c72825c5dba1dfe826e4202a9a04b435c6
change-id: 20230404-mips-unused-named-parameters-b32df71aadda

Best regards,

Comments

Thomas Bogendoerfer April 5, 2023, 8:26 a.m. UTC | #1
On Tue, Apr 04, 2023 at 02:18:41PM -0700, Nathan Chancellor wrote:
> When building with clang's integrated assembler, it points out that the
> CONFIG_CPU_HAS_DIEI versions of local_irq_enable and local_irq_disable
> have a named parameter that is not used in the body of the macro and it
> thinks that $8 is a positional parameter, rather than a register:
> 
>   arch/mips/include/asm/asmmacro.h:48:2: warning: macro defined with named parameters which are not used in macro body, possible positional parameter found in body which will have no effect
>    .macro local_irq_enable reg=$8
>    ^
> 
> The comment above the function that performs this check in LLVM notes
> that the warning may trigger in this case, even though it is not
> problematic. It is easy enough to clean this up by just omitting the
> named parameter for this version of the macro, as it is entirely unused.
> 
> Reported-by: Nick Desaulniers <ndesaulniers@google.com>
> Link: https://github.com/ClangBuiltLinux/linux/issues/1415
> Link: https://github.com/llvm/llvm-project/commit/81c944cadb7f9e55b3517b7423a820e2577b9279
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
>  arch/mips/include/asm/asmmacro.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

applied to mips-next.

Thomas.
Maciej W. Rozycki May 15, 2023, 7:57 p.m. UTC | #2
On Tue, 4 Apr 2023, Nathan Chancellor wrote:

> When building with clang's integrated assembler, it points out that the
> CONFIG_CPU_HAS_DIEI versions of local_irq_enable and local_irq_disable
> have a named parameter that is not used in the body of the macro and it
> thinks that $8 is a positional parameter, rather than a register:
> 
>   arch/mips/include/asm/asmmacro.h:48:2: warning: macro defined with named
> parameters which are not used in macro body, possible positional parameter found
> in body which will have no effect
>    .macro local_irq_enable reg=$8
>    ^
> 
> The comment above the function that performs this check in LLVM notes
> that the warning may trigger in this case, even though it is not
> problematic. It is easy enough to clean this up by just omitting the
> named parameter for this version of the macro, as it is entirely unused.

 You need to remove the argument from the !CONFIG_CPU_HAS_DIEI versions of 
the macros then too or otherwise we now have an inconsistent API between 
kernel configurations.

 AFAICT the only call site is in arch/mips/kernel/entry.S (and for
`local_irq_enable' only), and it doesn't supply the argument, which is why 
you could have removed it for CONFIG_CPU_HAS_DIEI at all.

 FWIW I find your reported warning questionable, there are valid reasons, 
such as the very situation here, why an argument might not be used.  It is 
only a macro after all, effectively a source code transformation tool.  
Similarly the C preprocessor does not warn about unused macro arguments.

 So IMHO your change has crippled reasonable code just to paper over a 
tool's deficiency.

  Maciej
diff mbox series

Patch

diff --git a/arch/mips/include/asm/asmmacro.h b/arch/mips/include/asm/asmmacro.h
index 1c4438f3f2ab..067a635d3bc8 100644
--- a/arch/mips/include/asm/asmmacro.h
+++ b/arch/mips/include/asm/asmmacro.h
@@ -45,12 +45,12 @@ 
 #endif
 
 #ifdef CONFIG_CPU_HAS_DIEI
-	.macro	local_irq_enable reg=t0
+	.macro	local_irq_enable
 	ei
 	irq_enable_hazard
 	.endm
 
-	.macro	local_irq_disable reg=t0
+	.macro	local_irq_disable
 	di
 	irq_disable_hazard
 	.endm