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-01-18 14:35:48 +0100
commit1cef08a2c606a9fcd3195ca90e5ec7c27f8bb842 (patch)
tree3382a896004118dc35c36b4516f05605f9a34dfc
parent2add0cb9af56f8a601f2ad788dfaf9705eff09dc (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)