brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 4589c8c Raw
53 lines · plain
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s2// RUN: grep -F '@objc_assign_ivar' %t  | count 143 4typedef struct {5  id  element;6  id elementArray[10];7  __strong id cfElement;8  __strong id cfElementArray[10];9} struct_with_ids_t;10 11 12@interface NSString @end13 14@interface Foo  {15@public16// assignments to any/all of these fields should generate objc_assign_ivar17  __strong id dict;18  __strong id dictArray[3];19  id ivar;20  id array[10];21  id nsobject;22  NSString *stringArray[10];23  struct_with_ids_t inner;24 25  Foo *obj[20];26  short idx[5];27}28@end29 30// The test cases31int IvarAssigns;32void *rhs = 0;33#define ASSIGNTEST(expr, global) expr = rhs34 35void testIvars(void) {36  Foo *foo;37  ASSIGNTEST(foo->ivar, IvarAssigns);                                   // objc_assign_ivar38  ASSIGNTEST(foo->dict, IvarAssigns);                                   // objc_assign_ivar39  ASSIGNTEST(foo->dictArray[0], IvarAssigns);                           // objc_assign_ivar40  ASSIGNTEST(foo->array[0], IvarAssigns);                               // objc_assign_ivar41  ASSIGNTEST(foo->nsobject, IvarAssigns);                               // objc_assign_ivar42  ASSIGNTEST(foo->stringArray[0], IvarAssigns);                         // objc_assign_ivar43  ASSIGNTEST(foo->inner.element, IvarAssigns);                          // objc_assign_ivar44  ASSIGNTEST(foo->inner.elementArray[0], IvarAssigns);                  // objc_assign_ivar45  ASSIGNTEST(foo->inner.cfElement, IvarAssigns);                        // objc_assign_ivar46  ASSIGNTEST(foo->inner.cfElementArray[0], IvarAssigns);                // objc_assign_ivar47  int counter=1;48  ASSIGNTEST(foo->obj[5], IvarAssigns);                 // objc_assign_ivar49  ASSIGNTEST(foo->obj[++counter], IvarAssigns);         // objc_assign_ivar50  foo->idx[++counter] = 15;51  ASSIGNTEST(foo->obj[foo->idx[2]], IvarAssigns);       // objc_assign_ivar52}53