Unbreak build: -Werror=pragmas (srsly)
authorTudor Bosman <tudorb@fb.com>
Tue, 27 Aug 2013 19:17:48 +0000 (12:17 -0700)
committerSara Golemon <sgolemon@fb.com>
Wed, 28 Aug 2013 21:30:13 +0000 (14:30 -0700)
Summary:
gcc 4.6 doesn't know of -Wmaybe-uninitialized, so it reports a warning, which
we treat as an error.

Test Plan: compiled folly/test folly/experimental/test with gcc 4.6.2, 4.7.1, 4.8.1

Reviewed By: philipp@fb.com

FB internal diff: D945766

folly/experimental/Bits.h

index 5983988d51744d95ef86d6294a879d0daa9d348d..0bf85fcf2bebfcc85f758dca7042729543fef762 100644 (file)
@@ -22,6 +22,7 @@
 #include <limits>
 
 #include "folly/Bits.h"
+#include "folly/Portability.h"
 #include "folly/Range.h"
 
 namespace folly {
@@ -52,7 +53,10 @@ struct BitsTraits<Unaligned<T>, typename std::enable_if<
   static T loadRMW(const Unaligned<T>& x) {
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wuninitialized"
+// make sure we compile without warning on gcc 4.6 with -Wpragmas
+#if __GNUC_PREREQ(4, 7)
 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     return x.value;
 #pragma GCC diagnostic pop
   }
@@ -68,7 +72,9 @@ struct BitsTraits<T, typename std::enable_if<
   static T loadRMW(const T& x) {
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wuninitialized"
+#if __GNUC_PREREQ(4, 7)
 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
     return x;
 #pragma GCC diagnostic pop
   }
@@ -171,7 +177,9 @@ struct Bits {
 
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wuninitialized"
+#if __GNUC_PREREQ(4, 7)
 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
 
 template <class T, class Traits>
 inline void Bits<T, Traits>::set(T* p, size_t bit) {