commit 6d3c5b8fb5784240232a9265049b9e1660270df7
parent 3a7d757140c344986fba5769b47dc10d925fe119
Author: Nick Mathewson <nickm@torproject.org>
Date: Wed, 26 Jul 2017 12:53:13 -0400
Merge branch 'bug22915_029_2' into maint-0.2.9
Diffstat:
2 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/changes/bug22915 b/changes/bug22915
@@ -0,0 +1,3 @@
+ o Minor bugfixes (compilation warnings):
+ - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
+ bugfix on 0.2.8.1-alpha.
diff --git a/src/common/util.c b/src/common/util.c
@@ -5705,6 +5705,18 @@ clamp_double_to_int64(double number)
#define PROBLEMATIC_FLOAT_CONVERSION_WARNING
DISABLE_GCC_WARNING(float-conversion)
#endif
+
+/*
+ With clang 4.0 we apparently run into "double promotion" warnings here,
+ since clang thinks we're promoting a double to a long double.
+ */
+#if defined(__clang__)
+#if __has_warning("-Wdouble-promotion")
+#define PROBLEMATIC_DOUBLE_PROMOTION_WARNING
+DISABLE_GCC_WARNING(double-promotion)
+#endif
+#endif
+
/* NaN is a special case that can't be used with the logic below. */
if (isnan(number)) {
return 0;
@@ -5730,6 +5742,10 @@ DISABLE_GCC_WARNING(float-conversion)
/* Handle infinities and finite numbers with magnitude >= 2^63. */
return signbit(number) ? INT64_MIN : INT64_MAX;
+
+#ifdef PROBLEMATIC_DOUBLE_PROMOTION_WARNING
+ENABLE_GCC_WARNING(double-promotion)
+#endif
#ifdef PROBLEMATIC_FLOAT_CONVERSION_WARNING
ENABLE_GCC_WARNING(float-conversion)
#endif