From e281c39d24793ea5793b0eabdd684c5e12ea77fe Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Wed, 11 Nov 2026 22:24:54 +0000 Subject: Add a mem_copy_fixed and mem_set_fixed to mem.h Probably self-explanatory. I was finding more use cases for the __builtin_memcpy_inline thing but boy is that ugly. --- src/sst.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/sst.c') diff --git a/src/sst.c b/src/sst.c index ab78b9c..4cdad5d 100644 --- a/src/sst.c +++ b/src/sst.c @@ -197,11 +197,9 @@ c: mem_copy(r, p + slash + 1, rellen); if_cold (f == -1) { errmsg_errorsys("couldn't open %" fS, path); return; } #ifdef _WIN32 char buf[19 + PATH_MAX]; - // XXX: with actual calls to memcpy gone, we need this builtin to produce 4 - // 4-byte movs from this string; can we expose this in a less hideous way? - __builtin_memcpy_inline(buf, "Plugin { file \"", 15); + mem_copy_fixed(buf, "Plugin { file \"", 15); for (int i = 0; i < rellen; ++i) buf[i + 15] = relpath[i]; - __builtin_memcpy_inline(buf + 15 + rellen, "\" }\n", 4); + mem_copy_fixed(buf + 15 + rellen, "\" }\n", 4); if_cold (os_write(f, buf, rellen + 19) == -1) { // blegh #else struct iovec iov[3] = { -- cgit v1.2.3-54-g00ecf