xref: /llvm-project/compiler-rt/test/BlocksRuntime/byrefaccess.c (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
1 //
2 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
3 // See https://llvm.org/LICENSE.txt for license information.
4 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5 
6 //
7 //  byrefaccess.m
8 //  test that byref access to locals is accurate
9 //  testObjects
10 //
11 //  Created by Blaine Garst on 5/13/08.
12 //
13 // CONFIG
14 
15 #include <stdio.h>
16 
17 
18 void callVoidVoid(void (^closure)(void)) {
19     closure();
20 }
21 
main(int argc,char * argv[])22 int main(int argc, char *argv[]) {
23     __block int i = 10;
24 
25     callVoidVoid(^{ ++i; });
26 
27     if (i != 11) {
28         printf("*** %s didn't update i\n", argv[0]);
29         return 1;
30     }
31     printf("%s: success\n", argv[0]);
32     return 0;
33 }
34