]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
force loop-align to 32 for zstd_decompress
authorYann Collet <yann.collet.73@gmail.com>
Fri, 22 Jul 2016 01:36:50 +0000 (18:36 -0700)
committerYann Collet <yann.collet.73@gmail.com>
Fri, 22 Jul 2016 12:37:09 +0000 (14:37 +0200)
lib/Makefile
lib/decompress/zstd_decompress.c
programs/Makefile

index 1f4f7eb8519df6285403ff4a45123fa66e1af084..6df2b1a0b943589aba4445f8194d055032072fad 100644 (file)
@@ -95,6 +95,7 @@ libzstd: $(ZSTD_FILES)
 
 clean:
        @rm -f core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc
+       @rm -f decompress/*.o
        @echo Cleaning library completed
 
 #------------------------------------------------------------------------
index 16c85cf32a4b2bcb2d6ee68b21754189f0f6b174..7299b6b5f908b032d3c46550d3c7b3cd562a8001 100644 (file)
@@ -467,14 +467,16 @@ size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx,
     switch((litBlockType_t)(istart[0] & 3))
     {
     case lbt_huffman:
-        {   size_t lhSize, litSize, litCSize, singleStream=0;
+        {   size_t lhSize, litSize, litCSize;
+            U32 singleStream=0;
             U32 const lhlCode = (istart[0] >> 2) & 3;
+            U32 const lhc = MEM_read32(istart);
             if (srcSize < 5) return ERROR(corruption_detected);   /* srcSize >= MIN_CBLOCK_SIZE == 3; here we need up to 5 for lhSize, + cSize (+nbSeq) */
             switch(lhlCode)
             {
             case 0: case 1: default:   /* note : default is impossible, since lhlCode into [0..3] */
                 /* 2 - 2 - 10 - 10 */
-                {   U32 const lhc = MEM_readLE32(istart);
+                {   //U32 const lhc = MEM_readLE32(istart);
                     singleStream = lhlCode;
                     lhSize = 3;
                     litSize  = (lhc >> 4) & 0x3FF;
@@ -483,7 +485,7 @@ size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx,
                 }
             case 2:
                 /* 2 - 2 - 14 - 14 */
-                {   U32 const lhc = MEM_readLE32(istart);
+                {   //U32 const lhc = MEM_readLE32(istart);
                     lhSize = 4;
                     litSize  = (lhc >> 4) & 0x3FFF;
                     litCSize = lhc >> 18;
@@ -491,7 +493,7 @@ size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx,
                 }
             case 3:
                 /* 2 - 2 - 18 - 18 */
-                {   U32 const lhc = MEM_readLE32(istart);
+                {   //U32 const lhc = MEM_readLE32(istart);
                     lhSize = 5;
                     litSize  = (lhc >> 4) & 0x3FFFF;
                     litCSize = (lhc >> 22) + (istart[4] << 10);
index 75d3154dd00064c2d92aff4e7bcbe7dacaed6b73..effa9440369bcb4024708623592244999fd8b0c7 100644 (file)
@@ -38,15 +38,21 @@ MANDIR  = $(PREFIX)/share/man/man1
 
 ZSTDDIR = ../lib
 
+ifeq ($(shell $(CC) -v 2>&1 | grep -c "gcc version "), 1)
+ALIGN_LOOP = -falign-loops=32
+else
+ALIGN_LOOP =
+endif
+
 CPPFLAGS= -I$(ZSTDDIR) -I$(ZSTDDIR)/common -I$(ZSTDDIR)/dictBuilder -DXXH_NAMESPACE=ZSTD_
-CFLAGS ?= -O3  # -falign-loops=32   # not always beneficial
+CFLAGS ?= -O3
 CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef
 FLAGS   = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(MOREFLAGS)
 
 
 ZSTDCOMMON_FILES := $(ZSTDDIR)/common/*.c
 ZSTDCOMP_FILES := $(ZSTDDIR)/compress/zstd_compress.c $(ZSTDDIR)/compress/fse_compress.c $(ZSTDDIR)/compress/huf_compress.c
-ZSTDDECOMP_FILES := $(ZSTDDIR)/decompress/zstd_decompress.c $(ZSTDDIR)/decompress/huf_decompress.c
+ZSTDDECOMP_FILES := $(ZSTDDIR)/decompress/zstd_decompress.o $(ZSTDDIR)/decompress/huf_decompress.c
 ZSTD_FILES := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES)
 ZBUFF_FILES := $(ZSTDDIR)/compress/zbuff_compress.c $(ZSTDDIR)/decompress/zbuff_decompress.c
 ZDICT_FILES := $(ZSTDDIR)/dictBuilder/*.c
@@ -80,6 +86,8 @@ default: zstd
 
 all: zstd fullbench fuzzer zbufftest paramgrill datagen zstd32 fullbench32 fuzzer32 zbufftest32
 
+$(ZSTDDIR)/decompress/zstd_decompress.o: CFLAGS += $(ALIGN_LOOP)
+
 zstd  : $(ZSTD_FILES) $(ZSTDLEGACY_FILES) $(ZBUFF_FILES) $(ZDICT_FILES) \
         zstdcli.c fileio.c bench.c datagen.c dibio.c
        $(CC)      $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ -o $@$(EXT)
@@ -146,6 +154,7 @@ roundTripCrash : $(ZSTD_FILES) roundTripCrash.c
        $(CC)      $(FLAGS) $^ -o $@$(EXT)
 
 clean:
+       $(MAKE) -C ../lib clean
        @rm -f core *.o tmp* result* *.gcda dictionary *.zst \
         zstd$(EXT) zstd32$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) \
         fullbench$(EXT) fullbench32$(EXT) \