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
6typedef struct {
7  int x;
8  int y;
9  int z[10];
10} MyPoint;
11
12void f0(id a) {
13  int i;
14  MyPoint pt = { 1, 2};
15
16  // CHECK-MAC: call {{.*}} @objc_msgSend to
17  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
18  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
19  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
20  [a print0];
21
22  // CHECK-MAC: call {{.*}} @objc_msgSend to
23  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
24  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
25  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
26  [a print1: 10];
27
28  // CHECK-MAC: call {{.*}} @objc_msgSend to
29  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
30  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
31  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
32  [a print2: 10 and: "hello" and: 2.2];
33
34  // CHECK-MAC: call {{.*}} @objc_msgSend to
35  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
36  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
37  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
38  [a takeStruct: pt ];
39
40  void *s = @selector(print0);
41  for (i=0; i<2; ++i)
42    // CHECK-MAC: call {{.*}} @objc_msgSend to
43    // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
44    // CHECK-GNU: call {{.*}} @objc_msg_lookup(
45    // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
46    [a performSelector:s];
47}
48