llvm-project
36 строк · 711.0 Байт
1// RUN: %clang_cc1 -triple x86_64 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
2
3struct s0 {
4int x;
5};
6
7@interface C0
8@property int x0;
9@property _Complex int x1;
10@property struct s0 x2;
11@end
12
13// Check that we get exactly the message sends we expect, and no more.
14//
15// CHECK-LABEL: define{{.*}} void @f0
16void f0(C0 *a) {
17// CHECK: objc_msgSend
18int l0 = (a.x0 = 1);
19
20// CHECK: objc_msgSend
21_Complex int l1 = (a.x1 = 1);
22
23// CHECK: objc_msgSend
24struct s0 l2 = (a.x2 = (struct s0) { 1 });
25
26// CHECK: objc_msgSend
27// CHECK: objc_msgSend
28int l3 = (a.x0 += 1);
29
30// CHECK: objc_msgSend
31// CHECK: objc_msgSend
32_Complex int l4 = (a.x1 += 1);
33
34// CHECK-NOT: objc_msgSend
35// CHECK: }
36}
37