brintos

brintos / llvm-project-archived public Read only

0
0
Text · 768 B · f5cc566 Raw
43 lines · cpp
1// RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t2 3extern "C" int printf(const char*, ...);4 5template<typename T> class range {6public:7T _i;8        range(T i) {_i = i;};9        T get() {return _i;};10};11 12class A {13    public:14	A() : field(10), d1(3.14) {}15	void F();16	void S() {17	  printf(" field = %d\n", field);18	  printf(" field = %f\n", d1);19	}20	int field;21	double d1;22};23 24void A::F()25    {26	__block A &tlc = *this;27	// crashed in code gen28        ^{ tlc.S(); }();29    }30 31int main() {32 33        // works34        void (^bl)(range<int> ) = ^(range<int> i){printf("Hello Blocks %d\n", i.get()); };35 36        //crashes in godegen?37        void (^bl2)(range<int>& ) = ^(range<int>& i){printf("Hello Blocks %d\n", i.get()); };38 39	A *a = new A;40	a->F();41        return 0;42}43