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';
}
}