]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Tweaks to create a single-file decoder
authorCarl Woffenden <cwoffenden@gmail.com>
Wed, 21 Aug 2019 15:49:17 +0000 (17:49 +0200)
committerCarl Woffenden <cwoffenden@gmail.com>
Wed, 21 Aug 2019 15:49:17 +0000 (17:49 +0200)
The CHECK_F macros differ slightly (but eventually do the same thing). Older GCC needs to fallback on the old-style pragma optimisation flags.

lib/common/compiler.h
lib/common/fse_decompress.c
lib/decompress/huf_decompress.c

index 6686b837d643de10911928b2fa1ef167af8c36fc..36584aa698397d4d0ea516e392d61095fa6ee295 100644 (file)
     }                                     \
 }
 
-/* vectorization */
+/* vectorization
+ * older GCC (pre gcc-4.3 picked as the cutoff) uses a different syntax */
 #if !defined(__clang__) && defined(__GNUC__)
-#  define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize")))
+#  if (__GNUC__ == 4 && __GNUC_MINOR__ > 3) || (__GNUC__ >= 5)
+#    define DONT_VECTORIZE __attribute__((optimize("no-tree-vectorize")))
+#  else
+#    define DONT_VECTORIZE _Pragma("GCC optimize(\"no-tree-vectorize\")")
+#  endif
 #else
 #  define DONT_VECTORIZE
 #endif
index 72bbead5beea3d5e73e5b4eaaa689ee8b98533d1..4f07378982094779c6118f575d2551000e57f445 100644 (file)
@@ -52,7 +52,9 @@
 #define FSE_STATIC_ASSERT(c) DEBUG_STATIC_ASSERT(c)   /* use only *after* variable declarations */
 
 /* check and forward error code */
+#ifndef CHECK_F
 #define CHECK_F(f) { size_t const e = f; if (FSE_isError(e)) return e; }
+#endif
 
 
 /* **************************************************************
index 3f8bd2973207f4b6c1bdf13867a21a7a072c479d..bb2d0a96bc1ec9e2c7c5e7fe50d333517c4de897 100644 (file)
@@ -61,7 +61,9 @@
 *  Error Management
 ****************************************************************/
 #define HUF_isError ERR_isError
+#ifndef CHECK_F
 #define CHECK_F(f) { size_t const err_ = (f); if (HUF_isError(err_)) return err_; }
+#endif
 
 
 /* **************************************************************