Changeset View
Changeset View
Standalone View
Standalone View
clang/test/CodeGen/nrvo-tracking.cpp
Show First 20 Lines • Show All 276 Lines • ▼ Show 20 Lines | |||||
// CHECK-NEXT: call {{.*}} @_ZN1XC1EOS_ | // CHECK-NEXT: call {{.*}} @_ZN1XC1EOS_ | ||||
// CHECK-NEXT: call void @llvm.lifetime.end | // CHECK-NEXT: call void @llvm.lifetime.end | ||||
X t5() { | X t5() { | ||||
X a [[gnu::aligned(1)]] [[gnu::aligned(8)]]; | X a [[gnu::aligned(1)]] [[gnu::aligned(8)]]; | ||||
return a; | return a; | ||||
} | } | ||||
} // namespace test_alignas | } // namespace test_alignas | ||||
namespace PR51862 { | |||||
template <class T> T test() { | |||||
T a; | |||||
T b; | |||||
if (0) | |||||
return a; | |||||
return b; | |||||
} | |||||
struct A { | |||||
A(); | |||||
A(A &); | |||||
A(int); | |||||
operator int(); | |||||
}; | |||||
// CHECK-LABEL: define{{.*}} void @_ZN7PR518624testINS_1AEEET_v | |||||
// CHECK: call i32 @_ZN7PR518621AcviEv | |||||
// CHECK-NEXT: call void @_ZN7PR518621AC1Ei | |||||
// CHECK-NEXT: call void @llvm.lifetime.end | |||||
template A test<A>(); | |||||
struct BSub {}; | |||||
struct B : BSub { | |||||
B(); | |||||
B(B &); | |||||
B(const BSub &); | |||||
}; | |||||
// CHECK-LABEL: define{{.*}} void @_ZN7PR518624testINS_1BEEET_v | |||||
// CHECK: call void @_ZN7PR518621BC1ERKNS_4BSubE | |||||
// CHECK-NEXT: call void @llvm.lifetime.end | |||||
template B test<B>(); | |||||
} // namespace PR51862 |