2002-11-25 02:53:52

by Érsek László

[permalink] [raw]
Subject: [PATCH] rbtree

Hi all,

this patch tries to remove those checks for 0 from
linux-2.4.19/lib/rbtree.c which are (I think) superfluous.

Laszlo Ersek


--- linux-2.4.19/lib/rbtree.c Sat Aug 3 02:39:46 2002
+++ linux/lib/rbtree.c Sun Nov 24 22:59:38 2002
@@ -159,17 +159,16 @@
if (!other->rb_right ||
other->rb_right->rb_color == RB_BLACK)
{
- register rb_node_t * o_left;
- if ((o_left = other->rb_left))
- o_left->rb_color = RB_BLACK;
+ /* unneeded check-for-0 removed */
+ other->rb_left->rb_color = RB_BLACK;
other->rb_color = RB_RED;
__rb_rotate_right(other, root);
other = parent->rb_right;
}
other->rb_color = parent->rb_color;
parent->rb_color = RB_BLACK;
- if (other->rb_right)
- other->rb_right->rb_color = RB_BLACK;
+ /* unneeded check-for-0 removed */
+ other->rb_right->rb_color = RB_BLACK;
__rb_rotate_left(parent, root);
node = root->rb_node;
break;
@@ -199,17 +198,16 @@
if (!other->rb_left ||
other->rb_left->rb_color == RB_BLACK)
{
- register rb_node_t * o_right;
- if ((o_right = other->rb_right))
- o_right->rb_color = RB_BLACK;
+ /* unneeded check-for-0 removed */
+ other->rb_right->rb_color = RB_BLACK;
other->rb_color = RB_RED;
__rb_rotate_left(other, root);
other = parent->rb_left;
}
other->rb_color = parent->rb_color;
parent->rb_color = RB_BLACK;
- if (other->rb_left)
- other->rb_left->rb_color = RB_BLACK;
+ /* unneeded check-for-0 removed */
+ other->rb_left->rb_color = RB_BLACK;
__rb_rotate_right(parent, root);
node = root->rb_node;
break;



2002-11-25 20:54:31

by folkert

[permalink] [raw]
Subject: RE: [PATCH] rbtree

Not trying to be negative and also really wondering this: won't
the compiler produce the same code for:
if (!variable)
and
if (variable == 0)
?

-----Oorspronkelijk bericht-----
Van: [email protected]
[mailto:[email protected]]Namens Ersek Laszlo
Verzonden: zondag 24 november 2002 23:41
Aan: [email protected]
Onderwerp: [PATCH] rbtree


Hi all,

this patch tries to remove those checks for 0 from
linux-2.4.19/lib/rbtree.c which are (I think) superfluous.

Laszlo Ersek


--- linux-2.4.19/lib/rbtree.c Sat Aug 3 02:39:46 2002
+++ linux/lib/rbtree.c Sun Nov 24 22:59:38 2002
@@ -159,17 +159,16 @@
if (!other->rb_right ||
other->rb_right->rb_color == RB_BLACK)
{
- register rb_node_t * o_left;
- if ((o_left = other->rb_left))
- o_left->rb_color = RB_BLACK;
+ /* unneeded check-for-0 removed */
+ other->rb_left->rb_color = RB_BLACK;
...

2002-11-26 12:06:39

by Mike Black

[permalink] [raw]
Subject: Re: [PATCH] rbtree

Mine produces the same code either way:
int
main()
{
int i=0;
if (i==0) {
i++;
}
}

gcc --version
2.95.3
.file "t1.c"
.version "01.01"
gcc2_compiled.:
.text
.align 4
.globl main
.type main,@function
main:
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl $0,-4(%ebp)
cmpl $0,-4(%ebp)
jne .L3
incl -4(%ebp)
.L3:
.L2:
movl %ebp,%esp
popl %ebp
ret
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) 2.95.3 20010315 (release)"


----- Original Message -----
From: "Folkert van Heusden" <[email protected]>
To: "'Ersek Laszlo'" <[email protected]>; <[email protected]>
Sent: Monday, November 25, 2002 4:01 PM
Subject: RE: [PATCH] rbtree


> Not trying to be negative and also really wondering this: won't
> the compiler produce the same code for:
> if (!variable)
> and
> if (variable == 0)
> ?
>
> -----Oorspronkelijk bericht-----
> Van: [email protected]
> [mailto:[email protected]]Namens Ersek Laszlo
> Verzonden: zondag 24 november 2002 23:41
> Aan: [email protected]
> Onderwerp: [PATCH] rbtree
>
>
> Hi all,
>
> this patch tries to remove those checks for 0 from
> linux-2.4.19/lib/rbtree.c which are (I think) superfluous.
>
> Laszlo Ersek
>
>
> --- linux-2.4.19/lib/rbtree.c Sat Aug 3 02:39:46 2002
> +++ linux/lib/rbtree.c Sun Nov 24 22:59:38 2002
> @@ -159,17 +159,16 @@
> if (!other->rb_right ||
> other->rb_right->rb_color == RB_BLACK)
> {
> - register rb_node_t * o_left;
> - if ((o_left = other->rb_left))
> - o_left->rb_color = RB_BLACK;
> + /* unneeded check-for-0 removed */
> + other->rb_left->rb_color = RB_BLACK;
> ...
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/