Fix the GCC build (#40)

* Make it compile with GCC.  
* Add GCC to CI.
* Add warning to documentation about using GCC.
This commit is contained in:
Matthew Parkinson
2019-05-05 19:58:37 +01:00
committed by GitHub
parent 0b64536be4
commit 8fcedfc290
8 changed files with 74 additions and 11 deletions

View File

@@ -14,7 +14,13 @@
# include <emmintrin.h>
# define ALWAYSINLINE __attribute__((always_inline))
# define NOINLINE __attribute__((noinline))
# define HEADER_GLOBAL __attribute__((selectany))
# ifdef __clang__
# define HEADER_GLOBAL __attribute__((selectany))
# else
// GCC does not support selectany, weak is almost the correct
// attribute, but leaves the global variable preemptible.
# define HEADER_GLOBAL __attribute__((weak))
# endif
#endif
#if defined(__i386__) || defined(_M_IX86) || defined(_X86_) || \
@@ -299,7 +305,8 @@ namespace snmalloc
# endif
#else
size_t prod = x * y;
return y && (x > ((size_t)-1 / y));
overflow = y && (x > ((size_t)-1 / y));
return prod;
#endif
}