blob: 14ffcbe7d7046ba64f4755b8dcd247879c7a99e1 [file] [log] [blame]
Fariborz Jahanian0bdc0012009-09-16 23:49:04 +00001// RUN: clang-cc -fnext-runtime -fobjc-gc -fobjc-newgc-api -emit-llvm -o %t %s &&
2// RUN: grep -F '@objc_assign_global' %t | count 7 &&
3// RUN: grep -F '@objc_assign_ivar' %t | count 4 &&
4// RUN: grep -F '@objc_assign_strongCast' %t | count 4 &&
5// RUN: true
6
7extern id **somefunc(void);
8extern id *somefunc2(void);
9
10
11// Globals
12
13id W, *X, **Y;
14
15void func(id a, id *b, id **c) {
16 static id w, *x, **y;
Fariborz Jahanian1ff82992009-09-16 23:52:53 +000017 W = a;
18 w = a;
19 X = b;
20 x = b;
21 Y = c;
22 y = c;
Fariborz Jahanian0bdc0012009-09-16 23:49:04 +000023}
24
25// Instances
26
27@interface something {
28 id w, *x, **y;
29}
30@end
31
32@implementation something
33- (void)amethod {
34 id badIdea = *somefunc2();
Fariborz Jahanian1ff82992009-09-16 23:52:53 +000035 w = badIdea;
36 x = &badIdea;
37 y = &x;
Fariborz Jahanian0bdc0012009-09-16 23:49:04 +000038}
39@end
40
41typedef struct {
42 int junk;
43 id alfred;
44} AStruct;
45
46void funct2(AStruct *aptr) {
47 id **ppptr = somefunc();
Fariborz Jahanian1ff82992009-09-16 23:52:53 +000048 aptr->alfred = 0;
49 **ppptr = aptr->alfred;
50 *ppptr = somefunc2();
Fariborz Jahanian0bdc0012009-09-16 23:49:04 +000051}
52