[tor-commits] [tor/maint-0.2.9] Suppress clang4-specific -Wdouble-promotion warnings

nickm at torproject.org nickm at torproject.org
Wed Jul 26 16:53:59 UTC 2017


commit fca1934c88f1238a43d0bea5b06cea4fd15e7b93
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Jul 13 17:42:04 2017 -0400

    Suppress clang4-specific -Wdouble-promotion warnings
    
    Wow, it sure seems like some compilers can't implement isnan() and
    friends in a way that pleases themselves!
    
    Fixes bug 22915. Bug trigged by 0.2.8.1-alpha and later; caused by
    clang 4.
---
 changes/bug22915  |  3 +++
 src/common/util.c | 16 ++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/changes/bug22915 b/changes/bug22915
new file mode 100644
index 000000000..17a9c6018
--- /dev/null
+++ 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
index 9e61eb771..d2cbacde3 100644
--- 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





More information about the tor-commits mailing list