public inbox for newlib-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Remove from RB_REMOVE_COLOR some null checks
@ 2020-10-26 13:32 Sebastian Huber
  0 siblings, 0 replies; only message in thread
From: Sebastian Huber @ 2020-10-26 13:32 UTC (permalink / raw)
  To: newlib-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=123df813ee5a688545ce38367006241b1de20d7b

commit 123df813ee5a688545ce38367006241b1de20d7b
Author: dougm <dougm@FreeBSD.org>
Date:   Tue Jun 2 17:18:16 2020 +0000

    Remove from RB_REMOVE_COLOR some null checks
    
    where the pointer checked is provably never null. Restructure the surrounding
    code just enough to make the non-nullness obvious.
    
    Reviewed by:    markj
    Tested by:      pho
    Differential Revision:  https://reviews.freebsd.org/D25089

Diff:
---
 newlib/libc/include/sys/tree.h | 46 ++++++++++++++++++------------------------
 1 file changed, 20 insertions(+), 26 deletions(-)

diff --git a/newlib/libc/include/sys/tree.h b/newlib/libc/include/sys/tree.h
index d5adfdd4e..372c001b9 100644
--- a/newlib/libc/include/sys/tree.h
+++ b/newlib/libc/include/sys/tree.h
@@ -493,26 +493,23 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent)		\
 				RB_ROTATE_LEFT(head, parent, tmp, field);\
 				tmp = RB_RIGHT(parent, field);		\
 			}						\
-			if (!RB_ISRED(RB_LEFT(tmp, field), field) &&	\
-			    !RB_ISRED(RB_RIGHT(tmp, field), field)) {	\
-				RB_COLOR(tmp, field) = RB_RED;		\
-				elm = parent;				\
-				parent = RB_PARENT(elm, field);		\
-				continue;				\
-			}						\
-			if (!RB_ISRED(RB_RIGHT(tmp, field), field)) {	\
+			if (RB_ISRED(RB_LEFT(tmp, field), field)) {	\
 				struct type *oleft;			\
-				if ((oleft = RB_LEFT(tmp, field))	\
-				    != NULL)				\
-					RB_COLOR(oleft, field) = RB_BLACK; \
+				oleft = RB_LEFT(tmp, field);		\
+				RB_COLOR(oleft, field) = RB_BLACK;	\
 				RB_COLOR(tmp, field) = RB_RED;		\
 				RB_ROTATE_RIGHT(head, tmp, oleft, field); \
 				tmp = RB_RIGHT(parent, field);		\
+			} else if (!RB_ISRED(RB_RIGHT(tmp, field), field)) { \
+				RB_COLOR(tmp, field) = RB_RED;		\
+				elm = parent;				\
+				parent = RB_PARENT(elm, field);		\
+				continue;				\
 			}						\
+			if (RB_ISRED(RB_RIGHT(tmp, field), field))	\
+				RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \
 			RB_COLOR(tmp, field) = RB_COLOR(parent, field);	\
 			RB_COLOR(parent, field) = RB_BLACK;		\
-			if (RB_RIGHT(tmp, field))			\
-				RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \
 			RB_ROTATE_LEFT(head, parent, tmp, field);	\
 			elm = RB_ROOT(head);				\
 			break;						\
@@ -523,26 +520,23 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type *parent)		\
 				RB_ROTATE_RIGHT(head, parent, tmp, field);\
 				tmp = RB_LEFT(parent, field);		\
 			}						\
-			if (!RB_ISRED(RB_LEFT(tmp, field), field) &&	\
-			    !RB_ISRED(RB_RIGHT(tmp, field), field)) {	\
-				RB_COLOR(tmp, field) = RB_RED;		\
-				elm = parent;				\
-				parent = RB_PARENT(elm, field);		\
-				continue;				\
-			}						\
-			if (!RB_ISRED(RB_LEFT(tmp, field), field)) {	\
+			if (RB_ISRED(RB_RIGHT(tmp, field), field)) {	\
 				struct type *oright;			\
-				if ((oright = RB_RIGHT(tmp, field))	\
-				    != NULL)				\
-					RB_COLOR(oright, field) = RB_BLACK; \
+				oright = RB_RIGHT(tmp, field);		\
+				RB_COLOR(oright, field) = RB_BLACK;	\
 				RB_COLOR(tmp, field) = RB_RED;		\
 				RB_ROTATE_LEFT(head, tmp, oright, field); \
 				tmp = RB_LEFT(parent, field);		\
+			} else if (!RB_ISRED(RB_LEFT(tmp, field), field)) { \
+				RB_COLOR(tmp, field) = RB_RED;		\
+				elm = parent;				\
+				parent = RB_PARENT(elm, field);		\
+				continue;				\
 			}						\
+			if (RB_ISRED(RB_LEFT(tmp, field), field))	\
+				RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \
 			RB_COLOR(tmp, field) = RB_COLOR(parent, field);	\
 			RB_COLOR(parent, field) = RB_BLACK;		\
-			if (RB_LEFT(tmp, field))			\
-				RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \
 			RB_ROTATE_RIGHT(head, parent, tmp, field);	\
 			elm = RB_ROOT(head);				\
 			break;						\


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-10-26 13:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-26 13:32 [newlib-cygwin] Remove from RB_REMOVE_COLOR some null checks Sebastian Huber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).