Message ID | 20230608-amdgpu-wrap-wunused-but-set-variable-in-cc-option-v1-1-48ca005f2247@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/amdgpu: Wrap -Wunused-but-set-variable in cc-option | expand |
On 6/8/23 13:01, Nathan Chancellor wrote: > -Wunused-but-set-variable was only supported in clang starting with > 13.0.0, so earlier versions will emit a warning, which is turned into a > hard error for the kernel to mirror GCC: > > error: unknown warning option '-Wunused-but-set-variable'; did you mean '-Wunused-const-variable'? [-Werror,-Wunknown-warning-option] > > The minimum supported version of clang for building the kernel is > 11.0.0, so match the rest of the kernel and wrap > -Wunused-but-set-variable in a cc-option call, so that it is only used > when supported by the compiler. > > Closes: https://github.com/ClangBuiltLinux/linux/issues/1869 > Fixes: a0fd5a5f676c ("drm/amd/amdgpu: introduce DRM_AMDGPU_WERROR") > Signed-off-by: Nathan Chancellor <nathan@kernel.org> Applied, thanks! > --- > drivers/gpu/drm/amd/amdgpu/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile > index 7ee68b1bbfed..86b833085f19 100644 > --- a/drivers/gpu/drm/amd/amdgpu/Makefile > +++ b/drivers/gpu/drm/amd/amdgpu/Makefile > @@ -40,7 +40,7 @@ ccflags-y := -I$(FULL_AMD_PATH)/include/asic_reg \ > -I$(FULL_AMD_PATH)/amdkfd > > subdir-ccflags-y := -Wextra > -subdir-ccflags-y += -Wunused-but-set-variable > +subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable) > subdir-ccflags-y += -Wno-unused-parameter > subdir-ccflags-y += -Wno-type-limits > subdir-ccflags-y += -Wno-sign-compare > > --- > base-commit: 6bd4b01e8938779b0d959bdf33949a9aa258a363 > change-id: 20230608-amdgpu-wrap-wunused-but-set-variable-in-cc-option-0be9528ac5c8 > > Best regards,
On Thu, 08 Jun 2023, Nathan Chancellor <nathan@kernel.org> wrote: > -Wunused-but-set-variable was only supported in clang starting with > 13.0.0, so earlier versions will emit a warning, which is turned into a > hard error for the kernel to mirror GCC: > > error: unknown warning option '-Wunused-but-set-variable'; did you mean '-Wunused-const-variable'? [-Werror,-Wunknown-warning-option] > > The minimum supported version of clang for building the kernel is > 11.0.0, so match the rest of the kernel and wrap > -Wunused-but-set-variable in a cc-option call, so that it is only used > when supported by the compiler. I wonder if there's a table somewhere listing all the warning options, which GCC and Clang versions support them, and which versions have them in -Wall and -Wextra. Would be really useful. If there isn't one, it would be really helpful. *wink*. BR, Jani. > > Closes: https://github.com/ClangBuiltLinux/linux/issues/1869 > Fixes: a0fd5a5f676c ("drm/amd/amdgpu: introduce DRM_AMDGPU_WERROR") > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > --- > drivers/gpu/drm/amd/amdgpu/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile > index 7ee68b1bbfed..86b833085f19 100644 > --- a/drivers/gpu/drm/amd/amdgpu/Makefile > +++ b/drivers/gpu/drm/amd/amdgpu/Makefile > @@ -40,7 +40,7 @@ ccflags-y := -I$(FULL_AMD_PATH)/include/asic_reg \ > -I$(FULL_AMD_PATH)/amdkfd > > subdir-ccflags-y := -Wextra > -subdir-ccflags-y += -Wunused-but-set-variable > +subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable) > subdir-ccflags-y += -Wno-unused-parameter > subdir-ccflags-y += -Wno-type-limits > subdir-ccflags-y += -Wno-sign-compare > > --- > base-commit: 6bd4b01e8938779b0d959bdf33949a9aa258a363 > change-id: 20230608-amdgpu-wrap-wunused-but-set-variable-in-cc-option-0be9528ac5c8 > > Best regards,
On Sat, Jun 10, 2023 at 10:14:05AM +0300, Jani Nikula wrote: > On Thu, 08 Jun 2023, Nathan Chancellor <nathan@kernel.org> wrote: > > -Wunused-but-set-variable was only supported in clang starting with > > 13.0.0, so earlier versions will emit a warning, which is turned into a > > hard error for the kernel to mirror GCC: > > > > error: unknown warning option '-Wunused-but-set-variable'; did you mean '-Wunused-const-variable'? [-Werror,-Wunknown-warning-option] > > > > The minimum supported version of clang for building the kernel is > > 11.0.0, so match the rest of the kernel and wrap > > -Wunused-but-set-variable in a cc-option call, so that it is only used > > when supported by the compiler. > > I wonder if there's a table somewhere listing all the warning options, > which GCC and Clang versions support them, and which versions have them > in -Wall and -Wextra. Would be really useful. I don't think there is anything other than the official documentations for each listing all the warning options. I know each version has its own documentation for comparing warnings between releases but that is obviously tedious. The clang -Wall question is easy enough to answer based on the test case: https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/clang/test/Misc/warning-wall.c https://github.com/llvm/llvm-project/blob/llvmorg-15.0.0/clang/test/Misc/warning-wall.c https://github.com/llvm/llvm-project/blob/llvmorg-14.0.0/clang/test/Misc/warning-wall.c https://github.com/llvm/llvm-project/blob/llvmorg-13.0.0/clang/test/Misc/warning-wall.c https://github.com/llvm/llvm-project/blob/llvmorg-12.0.0/clang/test/Misc/warning-wall.c https://github.com/llvm/llvm-project/blob/llvmorg-11.0.0/clang/test/Misc/warning-wall.c Clang has a tool, diagtool, that can print information about -Wextra, but I do not ship it with the kernel.org LLVM releases, nor does Debian it seems. On a recent clang-17 (the colors don't matter for this exercise): $ diagtool tree -Wextra GREEN = enabled by default YELLOW = disabled by default RED = unimplemented (accepted for GCC compatibility) -Wextra -Wdeprecated-copy -Wdeprecated-copy-with-user-provided-copy -Wmissing-field-initializers -Wignored-qualifiers -Wignored-reference-qualifiers -Winitializer-overrides -Wsemicolon-before-method-body -Wmissing-method-return-type -Wsign-compare -Wunused-parameter -Wunused-but-set-parameter -Wnull-pointer-arithmetic -Wgnu-null-pointer-arithmetic -Wnull-pointer-subtraction -Wempty-init-stmt -Wstring-concatenation -Wfuse-ld-path Maybe some of that can be useful for future travelers. > If there isn't one, it would be really helpful. *wink*. Heh, that does sound like an interesting project but I am not sure I have the bandwidth at the moment to do something like that, especially since the number of warnings that are different between GCC and clang are continuing to dwindle :) Cheers, Nathan > > Closes: https://github.com/ClangBuiltLinux/linux/issues/1869 > > Fixes: a0fd5a5f676c ("drm/amd/amdgpu: introduce DRM_AMDGPU_WERROR") > > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > > --- > > drivers/gpu/drm/amd/amdgpu/Makefile | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile > > index 7ee68b1bbfed..86b833085f19 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/Makefile > > +++ b/drivers/gpu/drm/amd/amdgpu/Makefile > > @@ -40,7 +40,7 @@ ccflags-y := -I$(FULL_AMD_PATH)/include/asic_reg \ > > -I$(FULL_AMD_PATH)/amdkfd > > > > subdir-ccflags-y := -Wextra > > -subdir-ccflags-y += -Wunused-but-set-variable > > +subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable) > > subdir-ccflags-y += -Wno-unused-parameter > > subdir-ccflags-y += -Wno-type-limits > > subdir-ccflags-y += -Wno-sign-compare > > > > --- > > base-commit: 6bd4b01e8938779b0d959bdf33949a9aa258a363 > > change-id: 20230608-amdgpu-wrap-wunused-but-set-variable-in-cc-option-0be9528ac5c8 > > > > Best regards, > > -- > Jani Nikula, Intel Open Source Graphics Center
diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile index 7ee68b1bbfed..86b833085f19 100644 --- a/drivers/gpu/drm/amd/amdgpu/Makefile +++ b/drivers/gpu/drm/amd/amdgpu/Makefile @@ -40,7 +40,7 @@ ccflags-y := -I$(FULL_AMD_PATH)/include/asic_reg \ -I$(FULL_AMD_PATH)/amdkfd subdir-ccflags-y := -Wextra -subdir-ccflags-y += -Wunused-but-set-variable +subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable) subdir-ccflags-y += -Wno-unused-parameter subdir-ccflags-y += -Wno-type-limits subdir-ccflags-y += -Wno-sign-compare
-Wunused-but-set-variable was only supported in clang starting with 13.0.0, so earlier versions will emit a warning, which is turned into a hard error for the kernel to mirror GCC: error: unknown warning option '-Wunused-but-set-variable'; did you mean '-Wunused-const-variable'? [-Werror,-Wunknown-warning-option] The minimum supported version of clang for building the kernel is 11.0.0, so match the rest of the kernel and wrap -Wunused-but-set-variable in a cc-option call, so that it is only used when supported by the compiler. Closes: https://github.com/ClangBuiltLinux/linux/issues/1869 Fixes: a0fd5a5f676c ("drm/amd/amdgpu: introduce DRM_AMDGPU_WERROR") Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- drivers/gpu/drm/amd/amdgpu/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: 6bd4b01e8938779b0d959bdf33949a9aa258a363 change-id: 20230608-amdgpu-wrap-wunused-but-set-variable-in-cc-option-0be9528ac5c8 Best regards,