diff options
| author | Nick Lewycky <nicholas@mxc.ca> | 2015-03-05 02:56:05 +0000 |
|---|---|---|
| committer | Nick Lewycky <nicholas@mxc.ca> | 2015-03-05 02:56:05 +0000 |
| commit | 5b2d125c926908c0a8e6592dcb5754fb752a074e (patch) | |
| tree | 8f2b4679c5f84759cdc20e0078b57b3a849917d0 | |
| parent | c1d6ab9a1eb05f14ec4d408031b673dc3d4c8131 (diff) | |
| download | bcm5719-llvm-5b2d125c926908c0a8e6592dcb5754fb752a074e.tar.gz bcm5719-llvm-5b2d125c926908c0a8e6592dcb5754fb752a074e.zip | |
Fix build with GCC:
- 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
| -rw-r--r-- | libcxxabi/src/cxa_demangle.cpp | 2 | ||||
| -rw-r--r-- | libcxxabi/src/cxa_vector.cpp | 4 | ||||
| -rw-r--r-- | libcxxabi/src/private_typeinfo.cpp | 12 |
3 files changed, 17 insertions, 1 deletions
diff --git a/libcxxabi/src/cxa_demangle.cpp b/libcxxabi/src/cxa_demangle.cpp index 2d076863ac5..1344f439f6a 100644 --- a/libcxxabi/src/cxa_demangle.cpp +++ b/libcxxabi/src/cxa_demangle.cpp @@ -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 diff --git a/libcxxabi/src/cxa_vector.cpp b/libcxxabi/src/cxa_vector.cpp index 3c9b535c624..c0d806f2fb8 100644 --- a/libcxxabi/src/cxa_vector.cpp +++ b/libcxxabi/src/cxa_vector.cpp @@ -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" { diff --git a/libcxxabi/src/private_typeinfo.cpp b/libcxxabi/src/private_typeinfo.cpp index 821796fb2a0..d410dabf7a7 100644 --- a/libcxxabi/src/private_typeinfo.cpp +++ b/libcxxabi/src/private_typeinfo.cpp @@ -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) |

