blob: 5c89e2d72a7e50c6de21e10271d0a8beb01f9e9d [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 %s -emit-llvm -o -
Devang Patelabad06c2007-10-26 19:42:18 +00002
Devang Patelfe2419a2007-12-11 21:33:16 +00003union u_tag {
Devang Patelabad06c2007-10-26 19:42:18 +00004 int a;
5 float b;
6} u;
7
8void f() {
9 u.b = 11;
10}
11
Devang Patelfe2419a2007-12-11 21:33:16 +000012float get_b(union u_tag *my_u) {
13 return my_u->b;
14}
15
Devang Patelabad06c2007-10-26 19:42:18 +000016int f2( float __x ) {
17 union{
18 float __f;
19 unsigned int __u;
20 }__u;
21 return (int)(__u.__u >> 31);
22}
Seo Sanghyeon2de3b3a2007-12-02 16:57:27 +000023
24typedef union { int i; int *j; } value;
25
26int f3(value v) {
27 return *v.j;
28}
Devang Patel5cada6b2008-05-07 22:28:29 +000029
30enum E9 { one, two };
Anders Carlsson663388f2008-12-06 20:32:39 +000031union S65 { enum E9 a; } ; union S65 s65;
Devang Patel5cada6b2008-05-07 22:28:29 +000032void fS65() { enum E9 e = s65.a; }
33
Eli Friedman0ac59572008-05-21 13:21:01 +000034typedef union{
35 unsigned char x[65536];
36} q;
37int qfunc() {q buf; unsigned char* x = buf.x;}
38
Eli Friedman1e86b342008-05-29 11:33:25 +000039union RR {_Bool a : 1;} RRU;
40int RRF(void) {return RRU.a;}
41
Anders Carlsson21fd7d72010-01-28 18:22:03 +000042// PR6164
43typedef union T0 { unsigned int : 0; } T0;
44T0 t0;
Ken Dyckf079b732011-02-28 02:01:38 +000045
46union { int large_bitfield: 31; char c } u2;