2024-05-03 09:50:47

by Kuan-Wei Chiu

[permalink] [raw]
Subject: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

When compiling library code using "make W=1 LLVM=1 lib/", clang
generated the following compilation errors:

lib/maple_tree.c:351:21: error: unused function 'mte_set_full' [-Werror,-Wunused-function]
static inline void *mte_set_full(const struct maple_enode *node)
^
lib/maple_tree.c:356:21: error: unused function 'mte_clear_full' [-Werror,-Wunused-function]
static inline void *mte_clear_full(const struct maple_enode *node)
^
lib/maple_tree.c:361:20: error: unused function 'mte_has_null' [-Werror,-Wunused-function]
static inline bool mte_has_null(const struct maple_enode *node)
^
3 errors generated.

Remove unused static inline functions to resolve compilation errors
with clang.

Signed-off-by: Kuan-Wei Chiu <[email protected]>
---
lib/maple_tree.c | 15 ---------------
1 file changed, 15 deletions(-)

diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index 55e1b35bf877..cd3f5399f9f3 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -348,21 +348,6 @@ static inline void *mte_safe_root(const struct maple_enode *node)
return (void *)((unsigned long)node & ~MAPLE_ROOT_NODE);
}

-static inline void *mte_set_full(const struct maple_enode *node)
-{
- return (void *)((unsigned long)node & ~MAPLE_ENODE_NULL);
-}
-
-static inline void *mte_clear_full(const struct maple_enode *node)
-{
- return (void *)((unsigned long)node | MAPLE_ENODE_NULL);
-}
-
-static inline bool mte_has_null(const struct maple_enode *node)
-{
- return (unsigned long)node & MAPLE_ENODE_NULL;
-}
-
static __always_inline bool ma_is_root(struct maple_node *node)
{
return ((unsigned long)node->parent & MA_ROOT_PARENT);
--
2.34.1



2024-05-03 12:20:52

by Matthew Wilcox

[permalink] [raw]
Subject: Re: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

On Fri, May 03, 2024 at 05:50:27PM +0800, Kuan-Wei Chiu wrote:
> When compiling library code using "make W=1 LLVM=1 lib/", clang
> generated the following compilation errors:
>
> lib/maple_tree.c:351:21: error: unused function 'mte_set_full' [-Werror,-Wunused-function]
> static inline void *mte_set_full(const struct maple_enode *node)

Uh, clang is wrong to flag these as an error. They're just not used
yet.

2024-05-03 13:02:19

by Kuan-Wei Chiu

[permalink] [raw]
Subject: Re: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

On Fri, May 03, 2024 at 01:20:32PM +0100, Matthew Wilcox wrote:
> On Fri, May 03, 2024 at 05:50:27PM +0800, Kuan-Wei Chiu wrote:
> > When compiling library code using "make W=1 LLVM=1 lib/", clang
> > generated the following compilation errors:
> >
> > lib/maple_tree.c:351:21: error: unused function 'mte_set_full' [-Werror,-Wunused-function]
> > static inline void *mte_set_full(const struct maple_enode *node)
>
> Uh, clang is wrong to flag these as an error. They're just not used
> yet.

I think it's because the kernel defaults to treating all compilation
warnings as errors. If you turn off the option to treat compilation
warnings as errors, they will be treated as warnings instead. Should I
update my commit message to change compilation errors to compilation
warnings?

Regards,
Kuan-Wei

2024-05-03 13:29:29

by Matthew Wilcox

[permalink] [raw]
Subject: Re: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

On Fri, May 03, 2024 at 09:01:06PM +0800, Kuan-Wei Chiu wrote:
> On Fri, May 03, 2024 at 01:20:32PM +0100, Matthew Wilcox wrote:
> > On Fri, May 03, 2024 at 05:50:27PM +0800, Kuan-Wei Chiu wrote:
> > > When compiling library code using "make W=1 LLVM=1 lib/", clang
> > > generated the following compilation errors:
> > >
> > > lib/maple_tree.c:351:21: error: unused function 'mte_set_full' [-Werror,-Wunused-function]
> > > static inline void *mte_set_full(const struct maple_enode *node)
> >
> > Uh, clang is wrong to flag these as an error. They're just not used
> > yet.
>
> I think it's because the kernel defaults to treating all compilation
> warnings as errors. If you turn off the option to treat compilation
> warnings as errors, they will be treated as warnings instead. Should I
> update my commit message to change compilation errors to compilation
> warnings?

just don't use W=1 and clang.

2024-05-03 16:08:28

by Nathan Chancellor

[permalink] [raw]
Subject: Re: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

On Fri, May 03, 2024 at 02:29:12PM +0100, Matthew Wilcox wrote:
> On Fri, May 03, 2024 at 09:01:06PM +0800, Kuan-Wei Chiu wrote:
> > On Fri, May 03, 2024 at 01:20:32PM +0100, Matthew Wilcox wrote:
> > > On Fri, May 03, 2024 at 05:50:27PM +0800, Kuan-Wei Chiu wrote:
> > > > When compiling library code using "make W=1 LLVM=1 lib/", clang
> > > > generated the following compilation errors:
> > > >
> > > > lib/maple_tree.c:351:21: error: unused function 'mte_set_full' [-Werror,-Wunused-function]
> > > > static inline void *mte_set_full(const struct maple_enode *node)
> > >
> > > Uh, clang is wrong to flag these as an error. They're just not used
> > > yet.
> >
> > I think it's because the kernel defaults to treating all compilation
> > warnings as errors. If you turn off the option to treat compilation
> > warnings as errors, they will be treated as warnings instead. Should I
> > update my commit message to change compilation errors to compilation
> > warnings?
>
> just don't use W=1 and clang.

This patch has effectively been sent four times now:

https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/all/[email protected]/ (this change obviously)

Your first comment from the 2022 patch:

They're not used now, but they will be in a release or two.

I think a few releases have passed since then :) I don't personally care
if there is a solution here or not, as I don't test with W=1 (there's
enough to do at W=0 :P), but maybe it is time for either __maybe_unused
(as that strikes at the heart of the issue) or at the very least a
comment saying "hey, these functions are currently unused but there are
plans for them to be used, so don't remove them", rather than just
saying the status quo?

Cheers,
Nathan

2024-05-04 23:03:35

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

On Fri, 3 May 2024 09:08:21 -0700 Nathan Chancellor <[email protected]> wrote:

> This patch has effectively been sent four times now:
>
> https://lore.kernel.org/all/[email protected]/
> https://lore.kernel.org/all/[email protected]/
> https://lore.kernel.org/all/[email protected]/
> https://lore.kernel.org/all/[email protected]/ (this change obviously)
>
> Your first comment from the 2022 patch:
>
> They're not used now, but they will be in a release or two.
>
> I think a few releases have passed since then :) I don't personally care
> if there is a solution here or not, as I don't test with W=1 (there's
> enough to do at W=0 :P), but maybe it is time for either __maybe_unused
> (as that strikes at the heart of the issue) or at the very least a
> comment saying "hey, these functions are currently unused but there are
> plans for them to be used, so don't remove them", rather than just
> saying the status quo?

We could just slap a #if 0 around them. But I don't think it'll kill us to
have to type them in again one day ;)

2024-05-06 14:33:00

by Liam R. Howlett

[permalink] [raw]
Subject: Re: [PATCH] maple_tree: Fix build failure with W=1 and LLVM=1

* Andrew Morton <[email protected]> [240504 19:03]:
> On Fri, 3 May 2024 09:08:21 -0700 Nathan Chancellor <[email protected]> wrote:
>
> > This patch has effectively been sent four times now:
> >
> > https://lore.kernel.org/all/[email protected]/
> > https://lore.kernel.org/all/[email protected]/
> > https://lore.kernel.org/all/[email protected]/
> > https://lore.kernel.org/all/[email protected]/ (this change obviously)
> >
> > Your first comment from the 2022 patch:
> >
> > They're not used now, but they will be in a release or two.
> >
> > I think a few releases have passed since then :) I don't personally care
> > if there is a solution here or not, as I don't test with W=1 (there's
> > enough to do at W=0 :P), but maybe it is time for either __maybe_unused
> > (as that strikes at the heart of the issue) or at the very least a
> > comment saying "hey, these functions are currently unused but there are
> > plans for them to be used, so don't remove them", rather than just
> > saying the status quo?
>
> We could just slap a #if 0 around them. But I don't think it'll kill us to
> have to type them in again one day ;)

I've had people try to use this bit for other reasons, even with these
functions.

If we're dropping this code, then we should put something in to avoid it
disappearing on us.

I am working on the use of these functions in a branch, but I don't have
a timeline of when that feature will land.

Thanks,
Liam