brintos

brintos / llvm-project-archived public Read only

0
0
Text · 870 B · 820baa8 Raw
59 lines · cpp
1// RUN: %clang_cc1 -fblocks -emit-llvm -o - %s2 3template <typename T> T foo(T t)4{5    void (^block)(int);6    return 1;7}8 9int test1(void)10{11    int i = 1;12    int b = 2;13    i = foo(b);14    return 0;15}16 17template <typename T, typename T1> void foo(T t, T1 r)18{19    T block_arg;20    __block T1 byref_block_arg;21 22    T1 (^block)(char, T, T1, double) =  23	^ T1 (char ch, T arg, T1 arg2, double d1) { byref_block_arg = arg2;24           					    return byref_block_arg + block_arg + arg; };25 26    void (^block2)() = ^{};27}28 29void test2(void)30{31    foo(100, 'a');32}33 34namespace rdar6182276 {35extern "C" {36int printf(const char *, ...);37}38 39template <typename T> T foo(T t)40{41    void (^testing)(int) = ^(int bar) { printf("bar is %d\n", bar); };42    printf("bar is\n");43    return 1;44}45 46template <typename T> void gorf(T t)47{48    foo(t);49}50 51 52void test(void)53{54    gorf(2);55}56}57 58 59