• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // RUN: %clang_cc1 -fblocks -emit-llvm -o - %s
2  // rdar : // 6182276
3  
foo(T t)4  template <typename T> T foo(T t)
5  {
6      void (^block)(int);
7      return 1;
8  }
9  
test1(void)10  int test1(void)
11  {
12      int i = 1;
13      int b = 2;
14      i = foo(b);
15      return 0;
16  }
17  
foo(T t,T1 r)18  template <typename T, typename T1> void foo(T t, T1 r)
19  {
20      T block_arg;
21      __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;
25             					    return byref_block_arg + block_arg + arg; };
26  
27      void (^block2)() = ^{};
28  }
29  
test2(void)30  void test2(void)
31  {
32      foo(100, 'a');
33  }
34  
35  namespace rdar6182276 {
36  extern "C" {
37  int printf(const char *, ...);
38  }
39  
foo(T t)40  template <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  
gorf(T t)47  template <typename T> void gorf(T t)
48  {
49      foo(t);
50  }
51  
52  
test(void)53  void test(void)
54  {
55      gorf(2);
56  }
57  }
58  
59  
60