49 lines · cpp
1// RUN: %clang_cc1 -std=c++2a -triple %itanium_abi_triple -emit-llvm %s -o - | FileCheck %s2 3#include "Inputs/std-compare.h"4 5// CHECK: @_ZTV1A =6struct A;7struct X {8 // CHECK-SAME: @_ZN1X1xEv9 virtual void x();10 friend auto operator<=>(X, X) = default;11};12struct Y {13 virtual ~Y();14 virtual A &operator=(const A &);15 friend auto operator<=>(Y, Y) = default;16};17struct A : X, Y {18 // CHECK-SAME: @_ZN1A1fEv19 virtual void f();20 // CHECK-SAME: @_ZNKR1AssERKS_21 virtual std::strong_ordering operator<=>(const A &) const & = default;22 // CHECK-SAME: @_ZN1A1gEv23 virtual void g();24 // CHECK-SAME: @_ZN1A1hEv25 virtual void h();26 27 // CHECK-SAME: @_ZN1AaSERKS_28 // implicit virtual A &operator=(const A&) = default;29 30 // CHECK-SAME: @_ZN1AD1Ev31 // CHECK-SAME: @_ZN1AD0Ev32 // implicit virtual ~A();33 34 // CHECK-SAME: @_ZNKR1AeqERKS_35 // implicit virtual A &operator==(const A&) const & = default;36};37 38// For Y:39// CHECK-SAME: @_ZTI1A40 41// CHECK-SAME: @_ZThn{{[0-9]*}}_N1AD1Ev42// CHECK-SAME: @_ZThn{{[0-9]*}}_N1AD0Ev43// virtual ~Y();44 45// CHECK-SAME: @_ZThn{{[0-9]*}}_N1AaSERKS_46// virtual A &operator=(const A &);47 48void A::f() {}49