27 lines
643 B
C++
27 lines
643 B
C++
// RUN: %clang_cc1 -std=c++17 -emit-llvm -triple x86_64-linux-gnu -o - %s | FileCheck %s
|
|
|
|
void doSomething();
|
|
|
|
struct A {
|
|
A() {};
|
|
~A() noexcept {
|
|
doSomething();
|
|
}
|
|
|
|
A & operator=(A a) & noexcept {
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
template<typename T>
|
|
struct B {
|
|
void test() {a = {};}
|
|
// CHECK: define linkonce_odr void @_ZN1BIiE4testEv
|
|
// CHECK: call void @_ZN1AC1Ev(ptr noundef nonnull align 1 dereferenceable(1)
|
|
// CHECK: [[CALL:%.*]] = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNR1AaSES_
|
|
// CHECK: call void @_ZN1AD2Ev(ptr noundef nonnull align 1 dereferenceable(1)
|
|
|
|
A a;
|
|
};
|
|
|
|
void client(B<int> &f) {f.test();}
|