forked from OSchip/llvm-project
39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
// RUN: %clang_cc1 --std=c++20 %s -emit-llvm -o - -triple x86_64-linux | FileCheck %s
|
|
|
|
namespace std {
|
|
struct strong_ordering {
|
|
int n;
|
|
constexpr operator int() const { return n; }
|
|
static const strong_ordering equal, greater, less;
|
|
};
|
|
constexpr inline strong_ordering strong_ordering::equal = {0};
|
|
constexpr inline strong_ordering strong_ordering::greater = {1};
|
|
constexpr inline strong_ordering strong_ordering::less = {-1};
|
|
} // namespace std
|
|
|
|
struct Space {
|
|
int i, j;
|
|
|
|
std::strong_ordering operator<=>(Space const &other) const;
|
|
bool operator==(Space const &other) const;
|
|
};
|
|
|
|
// Make sure these cause emission
|
|
std::strong_ordering Space::operator<=>(Space const &other) const = default;
|
|
// CHECK-LABEL: define{{.*}} @_ZNK5SpacessERKS_
|
|
bool Space::operator==(Space const &) const = default;
|
|
// CHECK-LABEL: define{{.*}} @_ZNK5SpaceeqERKS_
|
|
|
|
struct Water {
|
|
int i, j;
|
|
|
|
std::strong_ordering operator<=>(Water const &other) const;
|
|
bool operator==(Water const &other) const;
|
|
};
|
|
|
|
// Make sure these do not cause emission
|
|
inline std::strong_ordering Water::operator<=>(Water const &other) const = default;
|
|
// CHECK-NOT: define{{.*}} @_ZNK5WaterssERKS_
|
|
inline bool Water::operator==(Water const &) const = default;
|
|
// CHECK-NOT: define{{.*}} @_ZNK5WatereqERKS_
|