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