xref: /llvm-project/clang/test/CodeGenObjC/messages.m (revision 3f9f8efc548d4a1dbd289bcf5fafe644d5f5c8f8)
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
6
7typedef struct {
8  int x;
9  int y;
10  int z[10];
11} MyPoint;
12
13void f0(id a) {
14  int i;
15  MyPoint pt = { 1, 2};
16
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];
22
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];
28
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];
34
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];
48}
49