diff mbox series

maple_tree: Fix build failure with W=1 and LLVM=1

Message ID 20240503095027.747838-1-visitorckw@gmail.com (mailing list archive)
State New
Headers show
Series maple_tree: Fix build failure with W=1 and LLVM=1 | expand

Commit Message

Kuan-Wei Chiu May 3, 2024, 9:50 a.m. UTC
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 <visitorckw@gmail.com>
---
 lib/maple_tree.c | 15 ---------------
 1 file changed, 15 deletions(-)

Comments

Matthew Wilcox May 3, 2024, 12:20 p.m. UTC | #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.
Kuan-Wei Chiu May 3, 2024, 1:01 p.m. UTC | #2
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
Matthew Wilcox May 3, 2024, 1:29 p.m. UTC | #3
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.
Nathan Chancellor May 3, 2024, 4:08 p.m. UTC | #4
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/20220914101829.82000-1-jiapeng.chong@linux.alibaba.com/
https://lore.kernel.org/all/20230217084647.50471-1-jiapeng.chong@linux.alibaba.com/
https://lore.kernel.org/all/20230319132903.1702426-1-trix@redhat.com/
https://lore.kernel.org/all/20240503095027.747838-1-visitorckw@gmail.com/ (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
Andrew Morton May 4, 2024, 11:02 p.m. UTC | #5
On Fri, 3 May 2024 09:08:21 -0700 Nathan Chancellor <nathan@kernel.org> wrote:

> This patch has effectively been sent four times now:
> 
> https://lore.kernel.org/all/20220914101829.82000-1-jiapeng.chong@linux.alibaba.com/
> https://lore.kernel.org/all/20230217084647.50471-1-jiapeng.chong@linux.alibaba.com/
> https://lore.kernel.org/all/20230319132903.1702426-1-trix@redhat.com/
> https://lore.kernel.org/all/20240503095027.747838-1-visitorckw@gmail.com/ (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 ;)
Liam R. Howlett May 6, 2024, 2:29 p.m. UTC | #6
* Andrew Morton <akpm@linux-foundation.org> [240504 19:03]:
> On Fri, 3 May 2024 09:08:21 -0700 Nathan Chancellor <nathan@kernel.org> wrote:
> 
> > This patch has effectively been sent four times now:
> > 
> > https://lore.kernel.org/all/20220914101829.82000-1-jiapeng.chong@linux.alibaba.com/
> > https://lore.kernel.org/all/20230217084647.50471-1-jiapeng.chong@linux.alibaba.com/
> > https://lore.kernel.org/all/20230319132903.1702426-1-trix@redhat.com/
> > https://lore.kernel.org/all/20240503095027.747838-1-visitorckw@gmail.com/ (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
diff mbox series

Patch

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);