blob: e206582191ca6514958674ef5e476efede43b3ab [file] [log] [blame]
Fariborz Jahaniana729da22010-07-09 18:44:02 +00001// RUN: %clang_cc1 -fblocks -emit-llvm -o - %s
2// rdar : // 6182276
3
4template <typename T> T foo(T t)
5{
6 void (^block)(int);
7 return 1;
8}
9
10int test1(void)
11{
12 int i = 1;
13 int b = 2;
14 i = foo(b);
15 return 0;
16}
17
18template <typename T, typename T1> void foo(T t, T1 r)
19{
20 T block_arg;
Fariborz Jahanian5750b812010-07-09 21:27:28 +000021 __block T1 byref_block_arg;
22
23 T1 (^block)(char, T, T1, double) =
24 ^ T1 (char ch, T arg, T1 arg2, double d1) { byref_block_arg = arg2;
Fariborz Jahanian833f42e2010-07-09 22:21:32 +000025 return byref_block_arg + block_arg + arg; };
Fariborz Jahaniana729da22010-07-09 18:44:02 +000026
27 void (^block2)() = ^{};
28}
29
30void test2(void)
31{
32 foo(100, 'a');
33}
Fariborz Jahaniane7ffbe22010-07-13 20:05:58 +000034
35namespace rdar6182276 {
36extern "C" {
37int printf(const char *, ...);
38}
39
40template <typename T> T foo(T t)
41{
42 void (^testing)(int) = ^(int bar) { printf("bar is %d\n", bar); };
43 printf("bar is\n");
44 return 1;
45}
46
47template <typename T> void gorf(T t)
48{
49 foo(t);
50}
51
52
53void test(void)
54{
55 gorf(2);
56}
57}
58
59