summaryrefslogtreecommitdiffstats
path: root/libcxx/include/support/win32/limits_win32.h
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include/support/win32/limits_win32.h')
-rw-r--r--libcxx/include/support/win32/limits_win32.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/libcxx/include/support/win32/limits_win32.h b/libcxx/include/support/win32/limits_win32.h
index 91cdcf156af..671631df2f9 100644
--- a/libcxx/include/support/win32/limits_win32.h
+++ b/libcxx/include/support/win32/limits_win32.h
@@ -15,6 +15,11 @@
#error "This header is MSVC specific, Clang and GCC should not include it"
#else
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#include <windows.h> // ymath.h works correctly
+
#include <float.h> // limit constants
#define __FLT_MANT_DIG__ FLT_MANT_DIG
@@ -57,16 +62,17 @@
#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
// __builtin replacements/workarounds
+#include <math.h> // HUGE_VAL
#include <ymath.h> // internal MSVC header providing the needed functionality
-#define __builtin_huge_val() HUGE_VAL
-#define __builtin_huge_valf() _FInf
-#define __builtin_huge_vall() _LInf
-#define __builtin_nan() _Nan
-#define __builtin_nanf() _FNan
-#define __builtin_nanl() _LNan
-#define __builtin_nans() _Snan
-#define __builtin_nansf() _FSnan
-#define __builtin_nansl() _LSnan
+#define __builtin_huge_val() HUGE_VAL
+#define __builtin_huge_valf() _FInf._Float
+#define __builtin_huge_vall() _LInf._Long_double
+#define __builtin_nan(__dummy) _Nan._Double
+#define __builtin_nanf(__dummy) _FNan._Float
+#define __builtin_nanl(__dummmy) _LNan._Long_double
+#define __builtin_nans(__dummy) _Snan._Double
+#define __builtin_nansf(__dummy) _FSnan._Float
+#define __builtin_nansl(__dummy) _LSnan._Long_double
#endif // _MSC_VER
OpenPOWER on IntegriCloud