blob: 574cec908c859594aa31cad655572d4608ec1695 [file] [log] [blame]
Devang Patelb9b00ad2007-10-23 20:28:39 +00001// RUN: clang %s -emit-llvm
2
3struct {
4 int x;
5 int y;
6} point;
7
8void fn1() {
9 point.x = 42;
10}
11
12/* Nested member */
13struct {
14 struct {
15 int a;
16 int b;
17 } p1;
18} point2;
19
20void fn2() {
21 point2.p1.a = 42;
22}
23
24/* Indirect reference */
25typedef struct __sf {
26 unsigned char *c;
27 short flags;
28} F;
29
30typedef struct __sf2 {
31 F *ff;
32} F2;
33
34int fn3(F2 *c) {
35 if (c->ff->c >= 0)
36 return 1;
37 else
38 return 0;
39}
Devang Patelb1e39892007-10-23 23:26:46 +000040
41/* Nested structs */
42typedef struct NA {
43 int data;
44 struct NA *next;
45} NA;
Devang Pateldbb46b12007-10-23 23:29:51 +000046void f1() { NA a; }
Devang Patelb1e39892007-10-23 23:26:46 +000047
48typedef struct NB {
49 int d1;
50 struct _B2 {
51 int d2;
52 struct NB *n2;
53 } B2;
54} NB;
55
56void f2() { NB b; }
57
Devang Patel126a8562007-10-24 22:26:28 +000058extern NB *f3();
59void f4() {
60 f3()->d1 = 42;
61}
Devang Patel0a961182007-10-26 18:15:21 +000062
63void f5() {
64 (f3())->d1 = 42;
65}
Anders Carlsson148fe672007-10-31 22:04:46 +000066
67/* Function calls */
68typedef struct {
69 int location;
70 int length;
71} range;
72
73extern range f6();
74void f7()
75{
Anders Carlssona1ff3e92007-11-02 16:59:10 +000076 range r = f6();
77}
78
79/* Member expressions */
80typedef struct {
81 range range1;
82 range range2;
83} rangepair;
84
85void f8()
86{
87 rangepair p;
88
89 range r = p.range1;
Anders Carlsson148fe672007-10-31 22:04:46 +000090}
91
92
Devang Patel14c75002007-12-10 18:25:34 +000093/* _Bool types */
94
95struct _w
96{
97 short a,b;
98 short c,d;
99 short e,f;
100 short g;
101
102 unsigned int h,i;
103
104 _Bool j,k;
105} ws;