diff options
author | Alon Zakai <azakai@mozilla.com> | 2011-01-17 15:36:26 -0800 |
---|---|---|
committer | Alon Zakai <azakai@mozilla.com> | 2011-01-17 15:36:26 -0800 |
commit | 1f3de5c76e4947afccca350da24859e52f6aa83f (patch) | |
tree | 1539bbf09d9a3b71e06db5444d4ea5ceb43f8013 /tests/libcxx/include/new | |
parent | 13a520ed493d40e405045df1829863edfdb2308e (diff) |
libcxx test; support for linking in test runner; failure in clang_0_1.test_libcxx
Diffstat (limited to 'tests/libcxx/include/new')
-rw-r--r-- | tests/libcxx/include/new | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/libcxx/include/new b/tests/libcxx/include/new new file mode 100644 index 00000000..68f0274b --- /dev/null +++ b/tests/libcxx/include/new @@ -0,0 +1,108 @@ +// -*- C++ -*- +//===----------------------------- new ------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_NEW +#define _LIBCPP_NEW + +/* + new synopsis + +namespace std +{ + +class bad_alloc + : public exception +{ +public: + bad_alloc() throw(); + bad_alloc(const bad_alloc&) throw(); + bad_alloc& operator=(const bad_alloc&) throw(); + virtual ~bad_alloc() throw(); + virtual const char* what() const throw(); +}; + +struct nothrow_t {}; +extern const nothrow_t nothrow; +typedef void (*new_handler)(); +new_handler set_new_handler(new_handler new_p) throw(); +new_handler get_new_handler() throw(); + +} // std + +void* operator new(std::size_t size) throw(std::bad_alloc); // replaceable +void* operator new(std::size_t size, const std::nothrow_t&) throw(); // replaceable +void operator delete(void* ptr) throw(); // replaceable +void operator delete(void* ptr, const std::nothrow_t&) throw(); // replaceable + +void* operator new[](std::size_t size) throw(std::bad_alloc); // replaceable +void* operator new[](std::size_t size, const std::nothrow_t&) throw(); // replaceable +void operator delete[](void* ptr) throw(); // replaceable +void operator delete[](void* ptr, const std::nothrow_t&) throw(); // replaceable + +void* operator new (std::size_t size, void* ptr) throw(); +void* operator new[](std::size_t size, void* ptr) throw(); +void operator delete (void* ptr, void*) throw(); +void operator delete[](void* ptr, void*) throw(); + +*/ + +#include <__config> +#include <exception> +#include <cstddef> + +#pragma GCC system_header + +namespace std // purposefully not using versioning namespace +{ + +class _LIBCPP_EXCEPTION_ABI bad_alloc + : public exception +{ +public: + bad_alloc() throw(); + virtual ~bad_alloc() throw(); + virtual const char* what() const throw(); +}; + +class _LIBCPP_EXCEPTION_ABI bad_array_new_length + : public bad_alloc +{ +public: + bad_array_new_length() throw(); + virtual ~bad_array_new_length() throw(); + virtual const char* what() const throw(); +}; + +void __throw_bad_alloc(); // not in C++ spec + +struct _LIBCPP_VISIBLE nothrow_t {}; +extern _LIBCPP_VISIBLE const nothrow_t nothrow; +typedef void (*new_handler)(); +_LIBCPP_VISIBLE new_handler set_new_handler(new_handler) throw(); +_LIBCPP_VISIBLE new_handler get_new_handler() throw(); + +} // std + +_LIBCPP_VISIBLE void* operator new(std::size_t) throw(std::bad_alloc); +_LIBCPP_VISIBLE void* operator new(std::size_t, const std::nothrow_t&) throw(); +_LIBCPP_VISIBLE void operator delete(void*) throw(); +_LIBCPP_VISIBLE void operator delete(void*, const std::nothrow_t&) throw(); + +_LIBCPP_VISIBLE void* operator new[](std::size_t) throw(std::bad_alloc); +_LIBCPP_VISIBLE void* operator new[](std::size_t, const std::nothrow_t&) throw(); +_LIBCPP_VISIBLE void operator delete[](void*) throw(); +_LIBCPP_VISIBLE void operator delete[](void*, const std::nothrow_t&) throw(); + +_LIBCPP_INLINE_VISIBILITY inline void* operator new (std::size_t, void* __p) throw() {return __p;} +_LIBCPP_INLINE_VISIBILITY inline void* operator new[](std::size_t, void* __p) throw() {return __p;} +_LIBCPP_INLINE_VISIBILITY inline void operator delete (void*, void*) throw() {} +_LIBCPP_INLINE_VISIBILITY inline void operator delete[](void*, void*) throw() {} + +#endif // _LIBCPP_NEW |