diff --git a/src/bitops.c b/src/bitops.c index 46eee22c3..7ab72633c 100644 --- a/src/bitops.c +++ b/src/bitops.c @@ -654,8 +654,11 @@ void bitopCommand(client *c) { /* Fast path: as far as we have data for all the input bitmaps we * can take a fast path that performs much better than the - * vanilla algorithm. */ + * vanilla algorithm. On ARM we skip the fast path since it will + * result in GCC compiling the code using multiple-words load/store + * operations that are not supported even in ARM >= v6. */ j = 0; + #ifndef __arm__ if (minlen >= sizeof(unsigned long)*4 && numkeys <= 16) { unsigned long *lp[16]; unsigned long *lres = (unsigned long*) res; @@ -716,6 +719,7 @@ void bitopCommand(client *c) { } } } + #endif /* j is set to the next byte to process by the previous loop. */ for (; j < maxlen; j++) {