[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / CodeGenObjC / messages.m
blob41f9d2fbc284c787de4c12acca662af8c1a9d49d
1 // RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC
2 // RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC-NF
3 // RUN: %clang_cc1 -fobjc-runtime=gcc -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-GNU
4 // RUN: %clang_cc1 -fobjc-runtime=gnustep -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-GNU-NF
5 // RUN: %clang_cc1 -fobjc-runtime=gnustep-2.2 -fobjc-dispatch-method=non-legacy -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC
7 typedef struct {
8   int x;
9   int y;
10   int z[10];
11 } MyPoint;
13 void f0(id a) {
14   int i;
15   MyPoint pt = { 1, 2};
17   // CHECK-MAC: call {{.*}} @objc_msgSend
18   // CHECK-MAC-NF: call {{.*}} @objc_msgSend
19   // CHECK-GNU: call {{.*}} @objc_msg_lookup(
20   // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
21   [a print0];
23   // CHECK-MAC: call {{.*}} @objc_msgSend
24   // CHECK-MAC-NF: call {{.*}} @objc_msgSend
25   // CHECK-GNU: call {{.*}} @objc_msg_lookup(
26   // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
27   [a print1: 10];
29   // CHECK-MAC: call {{.*}} @objc_msgSend
30   // CHECK-MAC-NF: call {{.*}} @objc_msgSend
31   // CHECK-GNU: call {{.*}} @objc_msg_lookup(
32   // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
33   [a print2: 10 and: "hello" and: 2.2];
35   // CHECK-MAC: call {{.*}} @objc_msgSend
36   // CHECK-MAC-NF: call {{.*}} @objc_msgSend
37   // CHECK-GNU: call {{.*}} @objc_msg_lookup(
38   // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
39   [a takeStruct: pt ];
40   
41   void *s = @selector(print0);
42   for (i=0; i<2; ++i)
43     // CHECK-MAC: call {{.*}} @objc_msgSend
44     // CHECK-MAC-NF: call {{.*}} @objc_msgSend
45     // CHECK-GNU: call {{.*}} @objc_msg_lookup(
46     // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
47     [a performSelector:s];