diff options
| author | Eric Fiselier <eric@efcs.ca> | 2014-11-19 05:41:29 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2014-11-19 05:41:29 +0000 |
| commit | 77c1ae83643735326af7f7f0b62212c1b7eba20d (patch) | |
| tree | 71ba191155628d1c62161434ff2c9c74b367ff2b | |
| parent | b58e51c3041125b2108de1cd03b8589f4e6b1049 (diff) | |
| download | bcm5719-llvm-77c1ae83643735326af7f7f0b62212c1b7eba20d.tar.gz bcm5719-llvm-77c1ae83643735326af7f7f0b62212c1b7eba20d.zip | |
Revert r222296 to fix bad commit message
llvm-svn: 222316
3 files changed, 34 insertions, 95 deletions
diff --git a/libcxx/test/language.support/support.types/nullptr_t.pass.cpp b/libcxx/test/language.support/support.types/nullptr_t.pass.cpp index 4d7c8b0bc0a..6c15fefdc48 100644 --- a/libcxx/test/language.support/support.types/nullptr_t.pass.cpp +++ b/libcxx/test/language.support/support.types/nullptr_t.pass.cpp @@ -18,62 +18,42 @@ struct A A(std::nullptr_t) {} }; -template <class T> -void test_conversions() -{ - { - T p = 0; - assert(p == nullptr); - } - { - T p = nullptr; - assert(p == nullptr); - assert(nullptr == p); - assert(!(p != nullptr)); - assert(!(nullptr != p)); - } -} - -template <class T> -void test_comparisons() -{ - T p = nullptr; - assert(p == nullptr); - assert(p <= nullptr); - assert(p >= nullptr); - assert(!(p != nullptr)); - assert(!(p < nullptr)); - assert(!(p > nullptr)); - assert(nullptr == p); - assert(nullptr <= p); - assert(nullptr >= p); - assert(!(nullptr != p)); - assert(!(nullptr < p)); - assert(!(nullptr > p)); -} - - int main() { static_assert(sizeof(std::nullptr_t) == sizeof(void*), "sizeof(std::nullptr_t) == sizeof(void*)"); - - { - test_conversions<std::nullptr_t>(); - test_conversions<void*>(); - test_conversions<A*>(); - test_conversions<void(*)()>(); - test_conversions<void(A::*)()>(); - test_conversions<int A::*>(); - } - { - test_comparisons<std::nullptr_t>(); - test_comparisons<void*>(); - test_comparisons<A*>(); - test_comparisons<void(*)()>(); - } - { - bool b = nullptr; - assert(!b); - } + A* p = 0; + assert(p == nullptr); + void (A::*pmf)() = 0; +#ifdef __clang__ + // GCC 4.2 can't handle this + assert(pmf == nullptr); +#endif + int A::*pmd = 0; + assert(pmd == nullptr); + A a1(nullptr); + A a2(0); + bool b = nullptr; + assert(!b); + assert(nullptr == nullptr); + assert(nullptr <= nullptr); + assert(nullptr >= nullptr); + assert(!(nullptr != nullptr)); + assert(!(nullptr < nullptr)); + assert(!(nullptr > nullptr)); + A* a = nullptr; + assert(a == nullptr); + assert(a <= nullptr); + assert(a >= nullptr); + assert(!(a != nullptr)); + assert(!(a < nullptr)); + assert(!(a > nullptr)); + assert(nullptr == a); + assert(nullptr <= a); + assert(nullptr >= a); + assert(!(nullptr != a)); + assert(!(nullptr < a)); + assert(!(nullptr > a)); + std::ptrdiff_t i = reinterpret_cast<std::ptrdiff_t>(nullptr); + assert(i == 0); } diff --git a/libcxx/test/language.support/support.types/nullptr_t_integral_cast.fail.cpp b/libcxx/test/language.support/support.types/nullptr_t_integral_cast.fail.cpp deleted file mode 100644 index 92bd87943e1..00000000000 --- a/libcxx/test/language.support/support.types/nullptr_t_integral_cast.fail.cpp +++ /dev/null @@ -1,17 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// typedef decltype(nullptr) nullptr_t; - -#include <cstddef> - -int main() -{ - std::ptrdiff_t i = static_cast<std::ptrdiff_t>(nullptr); -} diff --git a/libcxx/test/language.support/support.types/nullptr_t_integral_cast.pass.cpp b/libcxx/test/language.support/support.types/nullptr_t_integral_cast.pass.cpp deleted file mode 100644 index 34c7a93e41c..00000000000 --- a/libcxx/test/language.support/support.types/nullptr_t_integral_cast.pass.cpp +++ /dev/null @@ -1,24 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// 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. -// -//===----------------------------------------------------------------------===// - -// NOTE: nullptr_t emulation cannot handle a reinterpret_cast to an -// integral type -// XFAIL: c++98, c++03 - -// typedef decltype(nullptr) nullptr_t; - - -#include <cstddef> -#include <cassert> - -int main() -{ - std::ptrdiff_t i = reinterpret_cast<std::ptrdiff_t>(nullptr); - assert(i == 0); -} |

