]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenObjC/messages.m
Vendor import of clang release_30 branch r142614:
[FreeBSD/FreeBSD.git] / test / CodeGenObjC / messages.m
1 // RUN: %clang_cc1 -fobjc-fragile-abi -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-fragile-abi -fgnu-runtime -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-GNU
4 // RUN: %clang_cc1 -fgnu-runtime -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-GNU-NF
5
6 typedef struct {
7   int x;
8   int y;
9   int z[10];
10 } MyPoint;
11
12 void 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 }