summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-09-06 15:42:08 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-05-18 11:36:07 +0200
commitc691d766444fe7b2a05c972da8aa9b6f4b824e5e (patch)
tree56b48de91d180fe127ac53e51f3c066a65f52e4a
parenta7511914253d4c25847bc2c4d20d421da140765d (diff)
libc: Avoid dead code in memset()
-rw-r--r--cpukit/libc/string/memset.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/cpukit/libc/string/memset.c b/cpukit/libc/string/memset.c
index e8e667a241..a5ea43ea86 100644
--- a/cpukit/libc/string/memset.c
+++ b/cpukit/libc/string/memset.c
@@ -29,7 +29,7 @@ QUICKREF
#include <string.h>
#include "local.h"
-#define LBLOCKSIZE (sizeof(long))
+#define LBLOCKSIZE (__SIZEOF_LONG__)
#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1))
#define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE)
@@ -42,7 +42,9 @@ memset (void *m,
char *s = (char *) m;
#if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__)
+#if LBLOCKSIZE > 4
unsigned int i;
+#endif
unsigned long buffer;
unsigned long *aligned_addr;
unsigned int d = c & 0xff; /* To avoid sign extension, copy C to an
@@ -65,8 +67,10 @@ memset (void *m,
we can set large blocks quickly. */
buffer = (d << 8) | d;
buffer |= (buffer << 16);
+#if LBLOCKSIZE > 4
for (i = 32; i < LBLOCKSIZE * 8; i <<= 1)
buffer = (buffer << i) | buffer;
+#endif
/* Unroll the loop. */
while (n >= LBLOCKSIZE*4)