Devang Patel | b9b00ad | 2007-10-23 20:28:39 +0000 | [diff] [blame] | 1 | // RUN: clang %s -emit-llvm |
2 | |||||
3 | struct { | ||||
4 | int x; | ||||
5 | int y; | ||||
6 | } point; | ||||
7 | |||||
8 | void fn1() { | ||||
9 | point.x = 42; | ||||
10 | } | ||||
11 | |||||
12 | /* Nested member */ | ||||
13 | struct { | ||||
14 | struct { | ||||
15 | int a; | ||||
16 | int b; | ||||
17 | } p1; | ||||
18 | } point2; | ||||
19 | |||||
20 | void fn2() { | ||||
21 | point2.p1.a = 42; | ||||
22 | } | ||||
23 | |||||
24 | /* Indirect reference */ | ||||
25 | typedef struct __sf { | ||||
26 | unsigned char *c; | ||||
27 | short flags; | ||||
28 | } F; | ||||
29 | |||||
30 | typedef struct __sf2 { | ||||
31 | F *ff; | ||||
32 | } F2; | ||||
33 | |||||
34 | int fn3(F2 *c) { | ||||
35 | if (c->ff->c >= 0) | ||||
36 | return 1; | ||||
37 | else | ||||
38 | return 0; | ||||
39 | } | ||||
Devang Patel | b1e3989 | 2007-10-23 23:26:46 +0000 | [diff] [blame] | 40 | |
41 | /* Nested structs */ | ||||
42 | typedef struct NA { | ||||
43 | int data; | ||||
44 | struct NA *next; | ||||
45 | } NA; | ||||
Devang Patel | dbb46b1 | 2007-10-23 23:29:51 +0000 | [diff] [blame] | 46 | void f1() { NA a; } |
Devang Patel | b1e3989 | 2007-10-23 23:26:46 +0000 | [diff] [blame] | 47 | |
48 | typedef struct NB { | ||||
49 | int d1; | ||||
50 | struct _B2 { | ||||
51 | int d2; | ||||
52 | struct NB *n2; | ||||
53 | } B2; | ||||
54 | } NB; | ||||
55 | |||||
56 | void f2() { NB b; } | ||||
57 | |||||
Devang Patel | 126a856 | 2007-10-24 22:26:28 +0000 | [diff] [blame] | 58 | extern NB *f3(); |
59 | void f4() { | ||||
60 | f3()->d1 = 42; | ||||
61 | } | ||||
Devang Patel | 0a96118 | 2007-10-26 18:15:21 +0000 | [diff] [blame] | 62 | |
63 | void f5() { | ||||
64 | (f3())->d1 = 42; | ||||
65 | } | ||||
Anders Carlsson | 148fe67 | 2007-10-31 22:04:46 +0000 | [diff] [blame] | 66 | |
67 | /* Function calls */ | ||||
68 | typedef struct { | ||||
69 | int location; | ||||
70 | int length; | ||||
71 | } range; | ||||
72 | |||||
73 | extern range f6(); | ||||
74 | void f7() | ||||
75 | { | ||||
Anders Carlsson | a1ff3e9 | 2007-11-02 16:59:10 +0000 | [diff] [blame] | 76 | range r = f6(); |
77 | } | ||||
78 | |||||
79 | /* Member expressions */ | ||||
80 | typedef struct { | ||||
81 | range range1; | ||||
82 | range range2; | ||||
83 | } rangepair; | ||||
84 | |||||
85 | void f8() | ||||
86 | { | ||||
87 | rangepair p; | ||||
88 | |||||
89 | range r = p.range1; | ||||
Anders Carlsson | 148fe67 | 2007-10-31 22:04:46 +0000 | [diff] [blame] | 90 | } |
91 | |||||
Seo Sanghyeon | 7777bb2 | 2007-12-14 01:09:11 +0000 | [diff] [blame] | 92 | void f9(range *p) |
93 | { | ||||
94 | range r = *p; | ||||
95 | } | ||||
Anders Carlsson | 148fe67 | 2007-10-31 22:04:46 +0000 | [diff] [blame] | 96 | |
Seo Sanghyeon | 9b73b39 | 2007-12-14 02:04:12 +0000 | [diff] [blame^] | 97 | void f10(range *p) |
98 | { | ||||
99 | range r = p[0]; | ||||
100 | } | ||||
101 | |||||
Devang Patel | 14c7500 | 2007-12-10 18:25:34 +0000 | [diff] [blame] | 102 | /* _Bool types */ |
103 | |||||
104 | struct _w | ||||
105 | { | ||||
106 | short a,b; | ||||
107 | short c,d; | ||||
108 | short e,f; | ||||
109 | short g; | ||||
110 | |||||
111 | unsigned int h,i; | ||||
112 | |||||
113 | _Bool j,k; | ||||
114 | } ws; |