ms_struct-bitfields.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // RUN: %clang_cc1 -emit-llvm-only -triple armv7-apple-darwin -fdump-record-layouts %s 2>/dev/null \
  2. // RUN: | FileCheck %s
  3. // rdar://22275433
  4. #pragma ms_struct on
  5. union A {
  6. unsigned long long x : 32;
  7. unsigned long long y : 32;
  8. } a;
  9. // CHECK:*** Dumping AST Record Layout
  10. // CHECK-NEXT: 0 | union A
  11. // CHECK-NEXT: 0:0-31 | unsigned long long x
  12. // CHECK-NEXT: 0:0-31 | unsigned long long y
  13. // CHECK-NEXT: | [sizeof=8, align=1]
  14. union B {
  15. __attribute__((aligned(4)))
  16. unsigned long long x : 32;
  17. unsigned long long y : 32;
  18. } b;
  19. // CHECK:*** Dumping AST Record Layout
  20. // CHECK-NEXT: 0 | union B
  21. // CHECK-NEXT: 0:0-31 | unsigned long long x
  22. // CHECK-NEXT: 0:0-31 | unsigned long long y
  23. // CHECK-NEXT: | [sizeof=8, align=1]
  24. union C {
  25. unsigned long long : 0;
  26. unsigned short y : 8;
  27. } c;
  28. // CHECK:*** Dumping AST Record Layout
  29. // CHECK-NEXT: 0 | union C
  30. // CHECK-NEXT: 0:- | unsigned long long
  31. // CHECK-NEXT: 0:0-7 | unsigned short y
  32. // CHECK-NEXT: | [sizeof=2, align=1]
  33. union D {
  34. unsigned long long : 0;
  35. unsigned short : 0;
  36. } d;
  37. // CHECK:*** Dumping AST Record Layout
  38. // CHECK-NEXT: 0 | union D
  39. // CHECK-NEXT: 0:- | unsigned long long
  40. // CHECK-NEXT: 0:- | unsigned short
  41. // CHECK-NEXT: | [sizeof=1, align=1]