summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp
diff options
context:
space:
mode:
authorRenato Golin <renato.golin@linaro.org>2016-10-21 08:03:49 +0000
committerRenato Golin <renato.golin@linaro.org>2016-10-21 08:03:49 +0000
commit41189656ed5ef78c8ad507444b39e2dd2c013762 (patch)
treed5b700c22884a4fef18e679e1f933ed652b8fe6a /clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp
parent032fa65606e26b2e5ccf43e0ff91cf0c2abf370f (diff)
downloadbcm5719-llvm-41189656ed5ef78c8ad507444b39e2dd2c013762.tar.gz
bcm5719-llvm-41189656ed5ef78c8ad507444b39e2dd2c013762.zip
Revert "DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules."
This reverts commit r284800, as it failed all ARM/AArch64 bots. llvm-svn: 284811
Diffstat (limited to 'clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp')
-rw-r--r--clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp67
1 files changed, 0 insertions, 67 deletions
diff --git a/clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp b/clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp
deleted file mode 100644
index 53b6a3b2c42..00000000000
--- a/clang/test/SemaCXX/libstdcxx_libcxx_less_hack.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-// This is a test for a hack in Clang that works around a problem introduced by
-// DR583: it's no longer possible to compare a pointer against nullptr_t, but
-// we still want to permit those comparisons within less<> and friends.
-
-// RUN: %clang_cc1 -verify %s -std=c++14
-
-namespace std {
- template<typename T = void> struct less {};
- template<typename T = void> struct less_equal {};
- template<typename T = void> struct greater {};
- template<typename T = void> struct greater_equal {};
-
- template<> struct less<> {
- template <class T1, class T2>
- auto operator()(T1 &&t, T2 &&u) const noexcept(noexcept(t < u))
- -> decltype(t < u) {
- return t < u;
- }
- };
-
- template<> struct less_equal<> {
- template <class T1, class T2>
- auto operator()(T1 &&t, T2 &&u) const noexcept(noexcept(t <= u))
- -> decltype(t <= u) {
- return t <= u;
- }
- };
-
- template<> struct greater<> {
- template <class T1, class T2>
- auto operator()(T1 &&t, T2 &&u) const noexcept(noexcept(t > u))
- -> decltype(t > u) {
- return t > u;
- }
- };
-
- template<> struct greater_equal<> {
- template <class T1, class T2>
- auto operator()(T1 &&t, T2 &&u) const noexcept(noexcept(t >= u))
- -> decltype(t >= u) {
- return t >= u;
- }
- };
-
- template<typename = void> struct unrelated;
- template<> struct unrelated<> {
- template <class T1, class T2>
- auto operator()(T1 &&t, T2 &&u) const noexcept(noexcept(t < u)) // expected-note {{substitution failure}}
- -> decltype(t < u) {
- return t < u;
- }
- };
-};
-
-void test(int *p) {
- using namespace std;
- less<>()(p, nullptr);
- less<>()(nullptr, p);
- less_equal<>()(p, nullptr);
- less_equal<>()(nullptr, p);
- greater<>()(p, nullptr);
- greater<>()(nullptr, p);
- greater_equal<>()(p, nullptr);
- greater_equal<>()(nullptr, p);
-
- unrelated<>()(p, nullptr); // expected-error {{no matching function}}
-}
OpenPOWER on IntegriCloud