xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenObjC/assign.m (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc// RUN: %clang_cc1 -triple x86_64 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
2*f4a2713aSLionel Sambuc
3*f4a2713aSLionel Sambucstruct s0 {
4*f4a2713aSLionel Sambuc  int x;
5*f4a2713aSLionel Sambuc};
6*f4a2713aSLionel Sambuc
7*f4a2713aSLionel Sambuc@interface C0
8*f4a2713aSLionel Sambuc@property int x0;
9*f4a2713aSLionel Sambuc@property _Complex int x1;
10*f4a2713aSLionel Sambuc@property struct s0 x2;
11*f4a2713aSLionel Sambuc@end
12*f4a2713aSLionel Sambuc
13*f4a2713aSLionel Sambuc// Check that we get exactly the message sends we expect, and no more.
14*f4a2713aSLionel Sambuc//
15*f4a2713aSLionel Sambuc// CHECK-LABEL: define void @f0
16*f4a2713aSLionel Sambucvoid f0(C0 *a) {
17*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
18*f4a2713aSLionel Sambuc  int l0 = (a.x0 = 1);
19*f4a2713aSLionel Sambuc
20*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
21*f4a2713aSLionel Sambuc  _Complex int l1 = (a.x1 = 1);
22*f4a2713aSLionel Sambuc
23*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
24*f4a2713aSLionel Sambuc  struct s0 l2 = (a.x2 = (struct s0) { 1 });
25*f4a2713aSLionel Sambuc
26*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
27*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
28*f4a2713aSLionel Sambuc  int l3 = (a.x0 += 1);
29*f4a2713aSLionel Sambuc
30*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
31*f4a2713aSLionel Sambuc// CHECK: objc_msgSend
32*f4a2713aSLionel Sambuc  _Complex int l4 = (a.x1 += 1);
33*f4a2713aSLionel Sambuc
34*f4a2713aSLionel Sambuc// CHECK-NOT: objc_msgSend
35*f4a2713aSLionel Sambuc// CHECK: }
36*f4a2713aSLionel Sambuc}
37