1 | // RUN: %clang_cc1 -emit-llvm -o - -fblocks %s -O1 -triple x86_64-apple-darwin10.0.0 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s |
2 | |
3 | // PR10835 / <rdar://problem/10050178> |
4 | struct 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 |
22 | |
23 | X blocksNRVO() { |
24 | return ^{ |
25 | // CHECK-LABEL: define internal void @___Z10blocksNRVOv_block_invoke |
26 | X x; |
27 | // CHECK: tail call void @_ZN1XC1Ev |
28 | // CHECK-NEXT: ret void |
29 | return x; |
30 | }() ; |
31 | } |
32 | |
33 | |