Module Name:    src
Committed By:   rillig
Date:           Sun Jun 16 19:41:39 UTC 2024

Modified Files:
        src/common/lib/libutil: snprintb.c

Log Message:
libutil/snprintb: factor out common subexpression

GCC 10 was not able to optimize the code size on its own, so offer a
little help.


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/common/lib/libutil/snprintb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libutil/snprintb.c
diff -u src/common/lib/libutil/snprintb.c:1.48 src/common/lib/libutil/snprintb.c:1.49
--- src/common/lib/libutil/snprintb.c:1.48	Sun Apr  7 15:20:16 2024
+++ src/common/lib/libutil/snprintb.c	Sun Jun 16 19:41:39 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: snprintb.c,v 1.48 2024/04/07 15:20:16 rillig Exp $	*/
+/*	$NetBSD: snprintb.c,v 1.49 2024/06/16 19:41:39 rillig Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2024 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 #  include <sys/cdefs.h>
 #  if defined(LIBC_SCCS)
-__RCSID("$NetBSD: snprintb.c,v 1.48 2024/04/07 15:20:16 rillig Exp $");
+__RCSID("$NetBSD: snprintb.c,v 1.49 2024/06/16 19:41:39 rillig Exp $");
 #  endif
 
 #  include <sys/types.h>
@@ -46,7 +46,7 @@ __RCSID("$NetBSD: snprintb.c,v 1.48 2024
 #  include <errno.h>
 # else /* ! _KERNEL */
 #  include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.48 2024/04/07 15:20:16 rillig Exp $");
+__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.49 2024/06/16 19:41:39 rillig Exp $");
 #  include <sys/param.h>
 #  include <sys/inttypes.h>
 #  include <sys/systm.h>
@@ -252,17 +252,21 @@ finish_buffer(state *s)
 	if (s->line_max > 0) {
 		store_eol(s);
 		store(s, '\0');
-		if (s->bufsize >= 3 && s->total_len > s->bufsize)
+		if (s->total_len <= s->bufsize)
+			return;
+		if (s->bufsize >= 3)
 			s->buf[s->bufsize - 3] = '#';
-		if (s->bufsize >= 2 && s->total_len > s->bufsize)
+		if (s->bufsize >= 2)
 			s->buf[s->bufsize - 2] = '\0';
-		if (s->bufsize >= 1 && s->total_len > s->bufsize)
+		if (s->bufsize >= 1)
 			s->buf[s->bufsize - 1] = '\0';
 	} else {
 		store(s, '\0');
-		if (s->bufsize >= 2 && s->total_len > s->bufsize)
+		if (s->total_len <= s->bufsize)
+			return;
+		if (s->bufsize >= 2)
 			s->buf[s->bufsize - 2] = '#';
-		if (s->bufsize >= 1 && s->total_len > s->bufsize)
+		if (s->bufsize >= 1)
 			s->buf[s->bufsize - 1] = '\0';
 	}
 }

Reply via email to