blob: 6e4b8125392db7d58aeb402651af08d197d4e62f [file] [log] [blame]
Fariborz Jahanian93ce50d2010-08-04 23:55:24 +00001// RUN: %clang_cc1 -fblocks -fobjc-gc -triple x86_64-apple-darwin -O0 -S %s -o %t-64.s
2// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
3// RUN: %clang_cc1 -x objective-c++ -fblocks -fobjc-gc -triple x86_64-apple-darwin -O0 -S %s -o %t-64.s
4// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
5
6__weak id wid;
7void x(id y) {}
8void y(int a) {}
9
10void f() {
11 __block int byref_int = 0;
12 char ch = 'a';
13 char ch1 = 'b';
14 char ch2 = 'c';
15 short sh = 2;
16 const id bar = (id)0;
17 id baz = 0;
18 __strong void *strong_void_sta;
19 __block id byref_bab = (id)0;
20 __block void *bl_var1;
21 int i; double dob;
22
23 void (^b)() = ^{
24 byref_int = sh + ch+ch1+ch2 ;
25 x(bar);
26 x(baz);
27 x((id)strong_void_sta);
28 x(byref_bab);
29 };
30 b();
31
32// Test 2
33 void (^c)() = ^{
34 byref_int = sh + ch+ch1+ch2 ;
35 x(bar);
36 x(baz);
37 x((id)strong_void_sta);
38 x(wid);
39 bl_var1 = 0;
40 x(byref_bab);
41 };
42 c();
43
44// Test 3
45void (^d)() = ^{
46 byref_int = sh + ch+ch1+ch2 ;
47 x(bar);
48 x(baz);
49 x(wid);
50 bl_var1 = 0;
51 y(i + dob);
52 x(byref_bab);
53 };
54 d();
55}
56
57// CHECK-LP64: L_OBJC_CLASS_NAME_:
58// CHECK-LP64-NEXT: .asciz "A\024"
59
60// CHECK-LP64: L_OBJC_CLASS_NAME_1:
61// CHECK-LP64-NEXT: .asciz "A\025"
62
63// CHECK-LP64: L_OBJC_CLASS_NAME_6:
64// CHECK-LP64-NEXT: .asciz "A\023!"
65