mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
Check alignment and enable -O3
This commit is contained in:
parent
9b010b1c03
commit
3a88e31a0e
4
Makefile
4
Makefile
|
@ -3,7 +3,7 @@ VERSION = 1.6
|
|||
PREFIX ?= /usr/local
|
||||
MANPREFIX = $(PREFIX)/share/man
|
||||
|
||||
CFLAGS += -Wall -Wextra -Wno-unused-parameter
|
||||
CFLAGS += -O3 -Wall -Wextra -Wno-unused-parameter
|
||||
LDLIBS = -lreadline
|
||||
|
||||
ifeq ($(shell pkg-config ncursesw && echo 1),1)
|
||||
|
@ -23,7 +23,7 @@ all: $(BIN) $(PLAYER)
|
|||
$(SRC): nnn.h
|
||||
|
||||
$(BIN): $(SRC)
|
||||
$(CC) -O2 $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
|
||||
strip $@
|
||||
|
||||
debug: $(SRC)
|
||||
|
|
19
nnn.c
19
nnn.c
|
@ -357,11 +357,12 @@ xstrlen(const char *s)
|
|||
static size_t
|
||||
xstrlcpy(char *dest, const char *src, size_t n)
|
||||
{
|
||||
static ulong *s, *d;
|
||||
static size_t len, blocks;
|
||||
static const uint lsize = sizeof(ulong);
|
||||
static const uint _WSHIFT = (sizeof(ulong) == 8) ? 3 : 2;
|
||||
|
||||
if (!src || !dest)
|
||||
if (!src || !dest || !n)
|
||||
return 0;
|
||||
|
||||
len = xstrlen(src) + 1;
|
||||
|
@ -371,17 +372,15 @@ xstrlcpy(char *dest, const char *src, size_t n)
|
|||
/* Save total number of bytes to copy in len */
|
||||
len = n;
|
||||
|
||||
if (n >= lsize) {
|
||||
blocks = n >> _WSHIFT;
|
||||
n -= (blocks << _WSHIFT);
|
||||
} else
|
||||
blocks = 0;
|
||||
|
||||
if (blocks) {
|
||||
static ulong *s, *d;
|
||||
|
||||
/*
|
||||
* To enable -O3 ensure src and dest are 16-byte aligned
|
||||
* More info: http://www.felixcloutier.com/x86/MOVDQA.html
|
||||
*/
|
||||
if ((n >= lsize) && !((ulong)src & (ulong)dest & 0xF)) {
|
||||
s = (ulong *)src;
|
||||
d = (ulong *)dest;
|
||||
blocks = n >> _WSHIFT;
|
||||
n -= (blocks << _WSHIFT);
|
||||
|
||||
while (blocks) {
|
||||
*d = *s;
|
||||
|
|
Loading…
Reference in a new issue