Home | History | Annotate | Download | only in CodeGenObjC
      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 
      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 }
     48