xref: /llvm-project/clang/test/CodeGenCXX/reference-in-block-args.cpp (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1 // RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t
2 
3 extern "C" int printf(const char*, ...);
4 
5 struct ST {
6      int filler;
7      int referrer;
8 };
9 
10 void OUTER_BLOCK(void (^fixer)(ST& ref)) {
11     ST ref = {2, 100};
12     fixer(ref);
13 }
14 
15 void INNER_BLOCK(int (^largeDo) ()) {
16 	printf("%d\n", largeDo());
17 }
18 
scan()19 void scan() {
20             OUTER_BLOCK(^(ST &ref) {
21                 INNER_BLOCK(^() { return ref.referrer + ref.filler; });
22             });
23 
24 }
25 
main()26 int main() {
27     scan();
28 }
29