Commit bb44e4b479

Jonathan Marler <johnnymarler@gmail.com>
2017-09-14 05:59:09
Fixed a couple compilation errors for MSVC 64-bit (#475)
1 parent d9eabde
Changed files (2)
src/quadmath.hpp
@@ -32,7 +32,7 @@ static inline __float128 strtoflt128(const char *s, char **sp) {
 
 static inline int quadmath_snprintf(char *s, size_t size, const char *format, ...) {
     va_list args;
-    va_start(format, args);
+    va_start(args, format);
     int result = vsnprintf(s, size, format, args);
     va_end(args);
     return result;
src/util.hpp
@@ -24,27 +24,12 @@
 #define ATTRIBUTE_RETURNS_NOALIAS __declspec(restrict)
 #define ATTRIBUTE_NORETURN __declspec(noreturn)
 
-static inline int clzll(unsigned long long mask) {
-    unsigned long lz;
-#if defined(_WIN64)
-    if (_BitScanReverse64(&lz, mask))
-        return static_cast<int>(63-lz);
-    zig_unreachable();
-#else
-    if  (_BitScanReverse(&lz, mask >> 32))
-        lz += 32;
-    else
-        _BitScanReverse(&lz, mask & 0xffffffff);
-    return 63 - lz;
-#endif
-}
 #else
 
 #define ATTRIBUTE_COLD         __attribute__((cold))
 #define ATTRIBUTE_PRINTF(a, b) __attribute__((format(printf, a, b)))
 #define ATTRIBUTE_RETURNS_NOALIAS __attribute__((__malloc__))
 #define ATTRIBUTE_NORETURN __attribute__((noreturn))
-#define clzll(x) __builtin_clzll(x)
 
 #endif
 
@@ -61,6 +46,25 @@ static inline void zig_unreachable(void) {
     zig_panic("unreachable");
 }
 
+#if defined(_MSC_VER)
+static inline int clzll(unsigned long long mask) {
+	unsigned long lz;
+#if defined(_WIN64)
+	if (_BitScanReverse64(&lz, mask))
+		return static_cast<int>(63 - lz);
+	zig_unreachable();
+#else
+	if (_BitScanReverse(&lz, mask >> 32))
+		lz += 32;
+	else
+		_BitScanReverse(&lz, mask & 0xffffffff);
+	return 63 - lz;
+#endif
+}
+#else
+#define clzll(x) __builtin_clzll(x)
+#endif
+
 template<typename T>
 ATTRIBUTE_RETURNS_NOALIAS static inline T *allocate_nonzero(size_t count) {
     T *ptr = reinterpret_cast<T*>(malloc(count * sizeof(T)));