diff options
Diffstat (limited to 'lldb/source/Core/CxaDemangle.cpp')
-rw-r--r-- | lldb/source/Core/CxaDemangle.cpp | 74 |
1 files changed, 24 insertions, 50 deletions
diff --git a/lldb/source/Core/CxaDemangle.cpp b/lldb/source/Core/CxaDemangle.cpp index 16cdb0211a1..5c05db97927 100644 --- a/lldb/source/Core/CxaDemangle.cpp +++ b/lldb/source/Core/CxaDemangle.cpp @@ -8,18 +8,9 @@ // - Stripped GCC attributes() // - Removed extern "C" from the cxa_demangle function // - Added "#undef _LIBCPP_EXTERN_TEMPLATE" to avoid warning -// - Implemented missing rebind, construct, destroy in malloc_alloc -// - Replaced noexcept, constexpr, alignas with their LLVM_* equivalents -// - Included win32.h for snprintf implementation for MSVC -// - Removed constexpr member initialization for MSVC -// - Changed argument to alignas() to a literal for MSVC //---------------------------------------------------------------------- -#if defined(_MSC_VER) -#include "lldb/Host/windows/win32.h" // snprintf -#endif -#include "llvm/Support/Compiler.h" // LLVM_{NOEXCEPT, CONSTEXPR, ALIGNAS} -#undef _LIBCPP_EXTERN_TEMPLATE // Avoid warning below +#undef _LIBCPP_EXTERN_TEMPLATE // Avoid warning below //===-------------------------- cxa_demangle.cpp --------------------------===// // @@ -161,20 +152,20 @@ struct float_data<float> { static const size_t mangled_size = 8; static const size_t max_demangled_size = 24; - static const char* spec; + static constexpr const char* spec = "%af"; }; -const char* float_data<float>::spec = "%af"; +constexpr const char* float_data<float>::spec; template <> struct float_data<double> { static const size_t mangled_size = 16; static const size_t max_demangled_size = 32; - static const char* spec; + static constexpr const char* spec = "%a"; }; -const char* float_data<double>::spec = "%a"; +constexpr const char* float_data<double>::spec; template <> struct float_data<long double> @@ -185,10 +176,10 @@ struct float_data<long double> static const size_t mangled_size = 20; // May need to be adjusted to 16 or 24 on other platforms #endif static const size_t max_demangled_size = 40; - static const char* spec; + static constexpr const char* spec = "%LaL"; }; -const char* float_data<long double>::spec = "%LaL"; +constexpr const char* float_data<long double>::spec; template <class Float, class C> const char* @@ -4731,27 +4722,27 @@ template <std::size_t N> class arena { static const std::size_t alignment = 16; - LLVM_ALIGNAS(16) char buf_[N]; + alignas(alignment) char buf_[N]; char* ptr_; std::size_t - align_up(std::size_t n) LLVM_NOEXCEPT + align_up(std::size_t n) noexcept {return (n + (alignment-1)) & ~(alignment-1);} bool - pointer_in_buffer(char* p) LLVM_NOEXCEPT + pointer_in_buffer(char* p) noexcept {return buf_ <= p && p <= buf_ + N;} public: - arena() LLVM_NOEXCEPT : ptr_(buf_) {} + arena() noexcept : ptr_(buf_) {} ~arena() {ptr_ = nullptr;} arena(const arena&) = delete; arena& operator=(const arena&) = delete; char* allocate(std::size_t n); - void deallocate(char* p, std::size_t n) LLVM_NOEXCEPT; + void deallocate(char* p, std::size_t n) noexcept; - static LLVM_CONSTEXPR std::size_t size() {return N;} + static constexpr std::size_t size() {return N;} std::size_t used() const {return static_cast<std::size_t>(ptr_ - buf_);} void reset() {ptr_ = buf_;} }; @@ -4772,7 +4763,7 @@ arena<N>::allocate(std::size_t n) template <std::size_t N> void -arena<N>::deallocate(char* p, std::size_t n) LLVM_NOEXCEPT +arena<N>::deallocate(char* p, std::size_t n) noexcept { if (pointer_in_buffer(p)) { @@ -4794,9 +4785,9 @@ public: public: template <class _Up> struct rebind {typedef short_alloc<_Up, N> other;}; - short_alloc(arena<N>& a) LLVM_NOEXCEPT : a_(a) {} + short_alloc(arena<N>& a) noexcept : a_(a) {} template <class U> - short_alloc(const short_alloc<U, N>& a) LLVM_NOEXCEPT + short_alloc(const short_alloc<U, N>& a) noexcept : a_(a.a_) {} short_alloc(const short_alloc&) = default; short_alloc& operator=(const short_alloc&) = delete; @@ -4805,7 +4796,7 @@ public: { return reinterpret_cast<T*>(a_.allocate(n*sizeof(T))); } - void deallocate(T* p, std::size_t n) LLVM_NOEXCEPT + void deallocate(T* p, std::size_t n) noexcept { a_.deallocate(reinterpret_cast<char*>(p), n*sizeof(T)); } @@ -4813,7 +4804,7 @@ public: template <class T1, std::size_t N1, class U, std::size_t M> friend bool - operator==(const short_alloc<T1, N1>& x, const short_alloc<U, M>& y) LLVM_NOEXCEPT; + operator==(const short_alloc<T1, N1>& x, const short_alloc<U, M>& y) noexcept; template <class U, std::size_t M> friend class short_alloc; }; @@ -4821,7 +4812,7 @@ public: template <class T, std::size_t N, class U, std::size_t M> inline bool -operator==(const short_alloc<T, N>& x, const short_alloc<U, M>& y) LLVM_NOEXCEPT +operator==(const short_alloc<T, N>& x, const short_alloc<U, M>& y) noexcept { return N == M && &x.a_ == &y.a_; } @@ -4829,7 +4820,7 @@ operator==(const short_alloc<T, N>& x, const short_alloc<U, M>& y) LLVM_NOEXCEPT template <class T, std::size_t N, class U, std::size_t M> inline bool -operator!=(const short_alloc<T, N>& x, const short_alloc<U, M>& y) LLVM_NOEXCEPT +operator!=(const short_alloc<T, N>& x, const short_alloc<U, M>& y) noexcept { return !(x == y); } @@ -4841,39 +4832,22 @@ public: typedef T value_type; malloc_alloc() = default; - template <class U> malloc_alloc(const malloc_alloc<U>&) LLVM_NOEXCEPT {} + template <class U> malloc_alloc(const malloc_alloc<U>&) noexcept {} T* allocate(std::size_t n) { return static_cast<T*>(std::malloc(n*sizeof(T))); } - void deallocate(T* p, std::size_t) LLVM_NOEXCEPT + void deallocate(T* p, std::size_t) noexcept { std::free(p); } - template<class Other> - struct rebind - { - typedef malloc_alloc<Other> other; - }; - void construct(T *p) - { - ::new (p) T(); - } - void construct(T *p, const T& t) - { - ::new (p) T(t); - } - void destroy(T *p) - { - p->~T(); - } }; template <class T, class U> inline bool -operator==(const malloc_alloc<T>&, const malloc_alloc<U>&) LLVM_NOEXCEPT +operator==(const malloc_alloc<T>&, const malloc_alloc<U>&) noexcept { return true; } @@ -4881,7 +4855,7 @@ operator==(const malloc_alloc<T>&, const malloc_alloc<U>&) LLVM_NOEXCEPT template <class T, class U> inline bool -operator!=(const malloc_alloc<T>& x, const malloc_alloc<U>& y) LLVM_NOEXCEPT +operator!=(const malloc_alloc<T>& x, const malloc_alloc<U>& y) noexcept { return !(x == y); } |