brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · cec428d Raw
81 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_global' %t  | count 263 4@class NSObject;5typedef const struct __CFDictionary * CFDictionaryRef;6typedef struct {7  id  element;8  id elementArray[10];9  __strong CFDictionaryRef cfElement;10  __strong CFDictionaryRef cfElementArray[10];11} struct_with_ids_t;12 13 14// assignments to these should generate objc_assign_global15@interface A16@end17 18typedef struct s0 {19  A *a[4];20} T;21 22T g0;23 24extern id FileExternID;25static id FileStaticID;26id GlobalId;27id GlobalArray[20];28NSObject *GlobalObject;29NSObject *GlobalObjectArray[20];30__strong CFDictionaryRef Gdict;31__strong CFDictionaryRef Gdictarray[10];32struct_with_ids_t GlobalStruct;33struct_with_ids_t GlobalStructArray[10];34 35#define ASSIGNTEST(expr, global) expr = rhs36void *rhs = 0;37 38int main(void) {39  static id staticGlobalId;40  static id staticGlobalArray[20];41  static NSObject *staticGlobalObject;42  static NSObject *staticGlobalObjectArray[20];43  static __strong CFDictionaryRef staticGdict;44  static __strong CFDictionaryRef staticGdictarray[10];45  static struct_with_ids_t staticGlobalStruct;46  static struct_with_ids_t staticGlobalStructArray[10];47  extern id ExID;48  id localID;49 50  ASSIGNTEST(GlobalId, GlobalAssigns);                          // objc_assign_global51  ASSIGNTEST(GlobalArray[0], GlobalAssigns);                    // objc_assign_global52  ASSIGNTEST(GlobalObject, GlobalAssigns);                      // objc_assign_global53  ASSIGNTEST(GlobalObjectArray[0], GlobalAssigns);              // objc_assign_global54  ASSIGNTEST(Gdict, GlobalAssigns);                             // objc_assign_global55  ASSIGNTEST(Gdictarray[1], GlobalAssigns);                     // objc_assign_global56 57  ASSIGNTEST(GlobalStruct.element, GlobalAssigns);              // objc_assign_global58  ASSIGNTEST(GlobalStruct.elementArray[0], GlobalAssigns);      // objc_assign_global59  ASSIGNTEST(GlobalStruct.cfElement, GlobalAssigns);            // objc_assign_global60  ASSIGNTEST(GlobalStruct.cfElementArray[0], GlobalAssigns);    // objc_assign_global61 62  ASSIGNTEST(staticGlobalId, GlobalAssigns);                    // objc_assign_global63  ASSIGNTEST(staticGlobalArray[0], GlobalAssigns);              // objc_assign_global64  ASSIGNTEST(staticGlobalObject, GlobalAssigns);                // objc_assign_global65  ASSIGNTEST(staticGlobalObjectArray[0], GlobalAssigns);        // objc_assign_global66  ASSIGNTEST(staticGdict, GlobalAssigns);                       // objc_assign_global67  ASSIGNTEST(staticGdictarray[1], GlobalAssigns);               // objc_assign_global68 69  ASSIGNTEST(staticGlobalStruct.element, GlobalAssigns);                // objc_assign_global70  ASSIGNTEST(staticGlobalStruct.elementArray[0], GlobalAssigns);        // objc_assign_global71  ASSIGNTEST(staticGlobalStruct.cfElement, GlobalAssigns);              // objc_assign_global72  ASSIGNTEST(staticGlobalStruct.cfElementArray[0], GlobalAssigns);      // objc_assign_global73 74  ExID = 0;75  localID = 0;76  FileStaticID = 0;77  FileExternID=0;78  g0.a[0] = 0;79  ((T*) &g0)->a[0] = 0;80}81