blob: 0a7dff50c5a0eef9c549edf0932138dc1b9c015b [file] [log] [blame]
John McCall260611a2012-06-20 06:18:46 +00001// RUN: %clang_cc1 -emit-llvm -o - -fblocks %s -O1 -triple x86_64-apple-darwin10.0.0 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s
Douglas Gregorf7603f62011-09-06 20:33:37 +00002
3// PR10835 / <rdar://problem/10050178>
4struct X {
5 X();
6 X(const X&);
7 ~X();
8};
9
10@interface NRVO
11@end
12
13@implementation NRVO
14// CHECK: define internal void @"\01-[NRVO getNRVO]"
15- (X)getNRVO {
16 X x;
17 // CHECK: tail call void @_ZN1XC1Ev
18 // CHECK-NEXT: ret void
19 return x;
20}
21@end
Douglas Gregorf8b7f712011-09-06 20:46:03 +000022
23X blocksNRVO() {
24 return ^{
Stephen Lin93ab6bf2013-08-15 06:47:53 +000025 // CHECK-LABEL: define internal void @___Z10blocksNRVOv_block_invoke
Douglas Gregorf8b7f712011-09-06 20:46:03 +000026 X x;
27 // CHECK: tail call void @_ZN1XC1Ev
28 // CHECK-NEXT: ret void
29 return x;
30 }() ;
31}
32