1931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -O3 | FileCheck -check-prefix CHECK-LP64 %s
2931a4feb64f18190d189c222d61b2abf52f18ab8Tim Northover// RUN: %clang_cc1 %s -triple=i386-apple-darwin10 -emit-llvm -o - -O3 | FileCheck -check-prefix CHECK-LP32 %s
3de9f153b2348f590151504888c22cb937134cd27Anders Carlsson
46ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson// CHECK-LP64: %union.Test1 = type { i32, [4 x i8] }
5de9f153b2348f590151504888c22cb937134cd27Anders Carlssonunion Test1 {
6de9f153b2348f590151504888c22cb937134cd27Anders Carlsson  int a;
7de9f153b2348f590151504888c22cb937134cd27Anders Carlsson  int b: 39;
8d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlsson} t1;
9de9f153b2348f590151504888c22cb937134cd27Anders Carlsson
106ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson// CHECK-LP64: %union.Test2 = type { i8 }
11d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlssonunion Test2 {
12d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlsson  int : 6;
13d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlsson} t2;
14d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlsson
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LP64: %union.Test3 = type { i16 }
16d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlssonunion Test3 {
17d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlsson  int : 9;
18d62328e6a0fa933e3a5daaf68e4964031e6c5c5eAnders Carlsson} t3;
196ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
206ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
216ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson#define CHECK(x) if (!(x)) return __LINE__
226ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
236ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlssonint f() {
246ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  struct {
256ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson    int a;
266ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
276ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson    unsigned long long b : 65;
286ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
296ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson    int c;
306ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  } c;
316ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
326ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  c.a = 0;
336ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  c.b = (unsigned long long)-1;
346ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  c.c = 0;
356ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
366ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  CHECK(c.a == 0);
376ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  CHECK(c.b == (unsigned long long)-1);
386ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  CHECK(c.c == 0);
396ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson
406ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson// CHECK-LP64: ret i32 0
416ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson// CHECK-LP32: ret i32 0
426ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson  return 0;
436ba38151f7e31d7f9194c8bbb91229cb5ffbb6f4Anders Carlsson}
44