Skip to contentSkip to conversation

include/linux/rbtree_augmented.h:123: warning: '__rb_erase_color' declared

PATCH In review Fengguang Wu 2 participants 3 messages Sep 14, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 93/137 include/linux/rbtree_augmented.h:123: warning: '__rb_erase_color' declared

Hi Michel,

FYI, there are new compile warnings show up in

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git since-3.5
head:   d64f22e5761b1e367ba5d1e04d2fe5e0283aecbc
commit: 20710551fa2659c765f88380f3b40a0e714000b1 [93/137] rbtree: move augmented rbtree functionality to rbtree_augmented.h
config: avr32-atngw100_defconfig

All error/warnings:

include/linux/rbtree_augmented.h:123: warning: '__rb_erase_color' declared inline after being called include/linux/rbtree_augmented.h:123: warning: previous declaration of '__rb_erase_color' was here

vim +123 include/linux/rbtree_augmented.h
113 if (parent) {
114 if (parent->rb_left = old)
115 parent->rb_left = new;
116 else
117 parent->rb_right = new;
118 } else
119 root->rb_node = new;
120 }
121
122 extern void __rb_erase_color(struct rb_node *parent, struct rb_root *root,

Quoted 1 line

123 void (*augment_rotate)(struct rb_node *old, struct rb_node *new));

124
125 static __always_inline void
126 rb_erase_augmented(struct rb_node *node, struct rb_root *root,
127 const struct rb_augment_callbacks *augment)
128 {
129 struct rb_node *child = node->rb_right, *tmp = node->rb_left;
130 struct rb_node *parent, *rebalance;
131 unsigned long pc;
132
133 if (!tmp) {

---
0-DAY kernel build testing backend Open Source Technology Centre
Fengguang Wu <[email protected]> Intel Corporation

maintainer
#1 lore raw

Re: [memcg:since-3.5 93/137] include/linux/rbtree_augmented.h:123: warning: '__rb_erase_color' decla

Quoted 9 lines · On Fri, 14 Sep 2012 10:59:22 +0800 Fengguang Wu <[email protected]> wrote:

Hi Michel,

FYI, there are new compile warnings show up in

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git since-3.5
head:   d64f22e5761b1e367ba5d1e04d2fe5e0283aecbc
commit: 20710551fa2659c765f88380f3b40a0e714000b1 [93/137] rbtree: move augmented rbtree functionality to rbtree_augmented.h
config: avr32-atngw100_defconfig
Quoted 5 lines

All error/warnings:

include/linux/rbtree_augmented.h:123: warning: '__rb_erase_color' declared inline after being called include/linux/rbtree_augmented.h:123: warning: previous declaration of '__rb_erase_color' was here

Yes, that is a bit screwed up.

What is more screwed up is that the insanely huge rb_erase_augmented() is inlined.

Looky:

lib/rbtree_test.c renamed from lib/rbtree_test.c~a +1 -0
@@ -90,6 +90,7 @@ static void insert_augmented(struct test
 static void erase_augmented(struct test_node *node, struct rb_root *root)
 {
 	rb_erase_augmented(&node->rb, root, &augment_callbacks);
+	rb_erase_augmented(&node->rb, root, &augment_callbacks);
 }
 
 static void init(void)

akpm:/usr/src/25> size lib/rbtree_test.o
text data bss dec hex filename

   3599     117    5224    8940    22ec lib/rbtree_test.o	(before)
   4176     117    5384    9677    25cd lib/rbtree_test.o	(after)

that's crazy!

<wonders why bss got larger>

maintainer
#2 lore raw

Re: [memcg:since-3.5 93/137] include/linux/rbtree_augmented.h:123: warning: '__rb_erase_color' decla

In reply to Fengguang Wu
Quoted 6 lines · On Fri, 14 Sep 2012 14:10:04 -0700 Andrew Morton <[email protected]>…

akpm:/usr/src/25> size lib/rbtree_test.o
text data bss dec hex filename

   3599     117    5224    8940    22ec lib/rbtree_test.o	(before)
   4176     117    5384    9677    25cd lib/rbtree_test.o	(after)

that's crazy!

Although the changelog and Documentation/rbtree.txt do explain the situation. Nobody ever reads them. This explanation should be in a big fat comment at the rb_erase_augmented() site, please.