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