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