Fix build with GCC:
authorNick Lewycky <nicholas@mxc.ca>
Thu, 5 Mar 2015 02:56:05 +0000 (02:56 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Thu, 5 Mar 2015 02:56:05 +0000 (02:56 +0000)
 - GCC doesn't support #pragma mark, only Apple GCC and clang. Wrap the pragma mark's in #if 0 to make gcc ignore them but xcode still see them.
 - Wrap a bunch of "#pragma clang" lines in #ifdef __clang__.
 - Pacify gcc's -Wparenthesis in a case where it's quite reasonable.

llvm-svn: 231344

libcxxabi/src/cxa_demangle.cpp
libcxxabi/src/cxa_vector.cpp
libcxxabi/src/private_typeinfo.cpp

index 2d07686..1344f43 100644 (file)
@@ -4711,7 +4711,7 @@ class arena
 
     std::size_t 
     align_up(std::size_t n) noexcept
-        {return n + (alignment-1) & ~(alignment-1);}
+        {return (n + (alignment-1)) & ~(alignment-1);}
 
     bool
     pointer_in_buffer(char* p) noexcept
index 3c9b535..c0d806f 100644 (file)
@@ -17,7 +17,9 @@
 
 namespace __cxxabiv1 {
 
+#if 0
 #pragma mark --Helper routines and classes --
+#endif
 
 namespace {
     inline static size_t __get_element_count ( void *p ) {
@@ -102,7 +104,9 @@ namespace {
     };
 }
 
+#if 0
 #pragma mark --Externally visible routines--
+#endif
 
 extern "C" {
 
index 821796f..d410dab 100644 (file)
@@ -219,8 +219,10 @@ __enum_type_info::can_catch(const __shim_type_info* thrown_type,
     return is_equal(this, thrown_type, false);
 }
 
+#ifdef __clang__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wmissing-field-initializers"
+#endif
 
 // Handles bullets 1 and 2
 bool
@@ -246,7 +248,9 @@ __class_type_info::can_catch(const __shim_type_info* thrown_type,
     return false;
 }
 
+#ifdef __clang__
 #pragma clang diagnostic pop
+#endif
 
 void
 __class_type_info::process_found_base_class(__dynamic_cast_info* info,
@@ -351,8 +355,10 @@ __pbase_type_info::can_catch(const __shim_type_info* thrown_type,
            is_equal(thrown_type, &typeid(std::nullptr_t), false);
 }
 
+#ifdef __clang__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wmissing-field-initializers"
+#endif
 
 // Handles bullets 1, 3 and 4
 // NOTE: It might not be safe to adjust the pointer if it is not not a pointer
@@ -403,13 +409,17 @@ __pointer_type_info::can_catch(const __shim_type_info* thrown_type,
     return false;
 }
 
+#ifdef __clang__
 #pragma clang diagnostic pop
+#endif
 
 #pragma GCC visibility pop
 #pragma GCC visibility push(default)
 
+#ifdef __clang__
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wmissing-field-initializers"
+#endif
 
 // __dynamic_cast
 
@@ -578,7 +588,9 @@ __dynamic_cast(const void* static_ptr,
     return const_cast<void*>(dst_ptr);
 }
 
+#ifdef __clang__
 #pragma clang diagnostic pop
+#endif
 
 #pragma GCC visibility pop
 #pragma GCC visibility push(hidden)