brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · d47b3d7 Raw
269 lines · c
1// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \2// RUN:     -fsyntax-only -fxl-pragma-pack -x c %s | \3// RUN:   FileCheck --check-prefixes=CHECK,CHECK32 %s4// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \5// RUN:     -fsyntax-only -fxl-pragma-pack -x c++ %s | \6// RUN:   FileCheck --check-prefixes=CHECK,CHECK32 %s7 8// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \9// RUN:     -fsyntax-only -fxl-pragma-pack -x c %s | \10// RUN:   FileCheck --check-prefixes=CHECK,CHECK64 %s11// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \12// RUN:     -fsyntax-only -fxl-pragma-pack -x c++ %s | \13// RUN:   FileCheck --check-prefixes=CHECK,CHECK64 %s14 15struct A {16  unsigned char c : 2;17} A;18 19int a = sizeof(A);20 21// CHECK:      *** Dumping AST Record Layout22// CHECK-NEXT:          0 | struct A23// CHECK-NEXT:      0:0-1 |   unsigned char c24// CHECK-NEXT:               sizeof=4, {{(dsize=4, )?}}align=4, preferredalign=425 26struct B {27  char c;28  int : 0;29} B;30 31int b = sizeof(B);32 33// CHECK:      *** Dumping AST Record Layout34// CHECK-NEXT:          0 | struct B35// CHECK-NEXT:          0 |   char c36// CHECK-NEXT:        4:- |   int37// CHECK-NEXT:               sizeof=4, {{(dsize=4, )?}}align=4, preferredalign=438 39struct C {40  signed int a1 : 6;41  signed char a2 : 4;42  short int a3 : 2;43  int a4 : 2;44  signed long a5 : 5;45  long long int a6 : 6;46  unsigned long a7 : 8;47} C;48 49int c = sizeof(C);50 51// CHECK:      *** Dumping AST Record Layout52// CHECK-NEXT:          0 | struct C53// CHECK-NEXT:      0:0-5 |   int a154// CHECK-NEXT:      0:6-9 |   signed char a255// CHECK-NEXT:      1:2-3 |   short a356// CHECK-NEXT:      1:4-5 |   int a457// CHECK-NEXT:     1:6-10 |   long a558// CHECK-NEXT:      2:3-8 |   long long a659// CHECK32:         4:0-7 |   unsigned long a760// CHECK32:                  sizeof=8, {{(dsize=8, )?}}align=4, preferredalign=461// CHECK64:         3:1-8 |   unsigned long a762// CHECK64:                  sizeof=8, {{(dsize=8, )?}}align=8, preferredalign=863 64#pragma align(packed)65struct C1 {66  signed int a1 : 6;67  signed char a2 : 4;68  short int a3 : 2;69  int a4 : 2;70  signed long a5 : 5;71  long long int a6 : 6;72  unsigned long a7 : 8;73} C1;74#pragma align(reset)75 76int c1 = sizeof(C1);77 78// CHECK:      *** Dumping AST Record Layout79// CHECK-NEXT:          0 | struct C180// CHECK-NEXT:      0:0-5 |   int a181// CHECK-NEXT:      0:6-9 |   signed char a282// CHECK-NEXT:      1:2-3 |   short a383// CHECK-NEXT:      1:4-5 |   int a484// CHECK-NEXT:     1:6-10 |   long a585// CHECK-NEXT:      2:3-8 |   long long a686// CHECK-NEXT:      3:1-8 |   unsigned long a787// CHECK-NEXT:               sizeof=5, {{(dsize=5, )?}}align=1, preferredalign=188 89#pragma pack(4)90struct C2 {91  signed int a1 : 6;92  signed char a2 : 4;93  short int a3 : 2;94  int a4 : 2;95  signed long a5 : 5;96  long long int a6 : 6;97  unsigned long a7 : 8;98} C2;99#pragma pack(pop)100 101int c2 = sizeof(C2);102 103// CHECK:      *** Dumping AST Record Layout104// CHECK-NEXT:          0 | struct C2105// CHECK-NEXT:      0:0-5 |   int a1106// CHECK-NEXT:      0:6-9 |   signed char a2107// CHECK-NEXT:      1:2-3 |   short a3108// CHECK-NEXT:      1:4-5 |   int a4109// CHECK-NEXT:     1:6-10 |   long a5110// CHECK-NEXT:      2:3-8 |   long long a6111// CHECK-NEXT:      3:1-8 |   unsigned long a7112// CHECK-NEXT:               sizeof=8, {{(dsize=8, )?}}align=4, preferredalign=4113 114typedef __attribute__((aligned(32))) short mySHORT;115struct D {116  char c : 8;117  mySHORT : 0;118} D;119 120int d = sizeof(D);121 122// CHECK:      *** Dumping AST Record Layout123// CHECK-NEXT:          0 | struct D124// CHECK-NEXT:      0:0-7 |   char c125// CHECK-NEXT:       32:- |   mySHORT126// CHECK-NEXT:               sizeof=32, {{(dsize=32, )?}}align=32, preferredalign=32127 128typedef __attribute__((aligned(32))) long myLONG;129struct D11 {130  char c : 8;131  myLONG : 0;132} D11;133 134int d11 = sizeof(D11);135 136// CHECK:      *** Dumping AST Record Layout137// CHECK-NEXT:          0 | struct D11138// CHECK-NEXT:      0:0-7 |   char c139// CHECK-NEXT:       32:- |   myLONG140// CHECK-NEXT:               sizeof=32, {{(dsize=32, )?}}align=32, preferredalign=32141 142typedef __attribute__((aligned(2))) long myLONG2;143struct D12 {144  char c : 8;145  myLONG2 : 0;146} D12;147 148int d12 = sizeof(D12);149 150// CHECK:      *** Dumping AST Record Layout151// CHECK-NEXT:          0 | struct D12152// CHECK-NEXT:      0:0-7 |   char c153// CHECK32:           4:- |   myLONG2154// CHECK32:                  sizeof=4, {{(dsize=4, )?}}align=4, preferredalign=4155// CHECK64:           8:- |   myLONG2156// CHECK64:                  sizeof=8, {{(dsize=8, )?}}align=8, preferredalign=8157 158typedef __attribute__((aligned(32))) long long myLONGLONG;159struct D21 {160  char c : 8;161  myLONGLONG : 0;162} D21;163 164int d21 = sizeof(D21);165 166// CHECK:      *** Dumping AST Record Layout167// CHECK-NEXT:          0 | struct D21168// CHECK-NEXT:      0:0-7 |   char c169// CHECK-NEXT:       32:- |   myLONGLONG170// CHECK-NEXT:               sizeof=32, {{(dsize=32, )?}}align=32, preferredalign=32171 172typedef __attribute__((aligned(2))) long long myLONGLONG2;173struct D22 {174  char c : 8;175  myLONGLONG2 : 0;176} D22;177 178int d22 = sizeof(D22);179 180// CHECK:      *** Dumping AST Record Layout181// CHECK-NEXT:          0 | struct D22182// CHECK-NEXT:      0:0-7 |   char c183// CHECK32:           4:- |   myLONGLONG2184// CHECK32:                  sizeof=4, {{(dsize=4, )?}}align=4, preferredalign=4185// CHECK64:           8:- |   myLONGLONG2186// CHECK64:                  sizeof=8, {{(dsize=8, )?}}align=8, preferredalign=8187 188enum LL : unsigned long long { val = 1 };189 190struct E {191  enum LL e : 32;192} E;193 194int e = sizeof(E);195 196// CHECK:      *** Dumping AST Record Layout197// CHECK-NEXT:          0 | struct E198// CHECK-NEXT:     0:0-31 |   enum LL e199// CHECK32-NEXT:             sizeof=4, {{(dsize=4, )?}}align=4, preferredalign=4200// CHECK64-NEXT:             sizeof=8, {{(dsize=8, )?}}align=8, preferredalign=8201 202enum LL1 : unsigned long long { val1 = 1 } __attribute__((aligned(16)));203struct E1 {204  enum LL1 e : 32;205} E1;206 207int e1 = sizeof(E1);208 209// CHECK:      *** Dumping AST Record Layout210// CHECK-NEXT:          0 | struct E1211// CHECK-NEXT:     0:0-31 |   enum LL1 e212// CHECK-NEXT:               sizeof=16, {{(dsize=16, )?}}align=16, preferredalign=16213 214struct F {215  long long l : 32 __attribute__((aligned(16)));216} F;217 218int f = sizeof(F);219 220// CHECK:      *** Dumping AST Record Layout221// CHECK-NEXT:          0 | struct F222// CHECK-NEXT:     0:0-31 |   long long l223// CHECK-NEXT:               sizeof=16, {{(dsize=16, )?}}align=16, preferredalign=16224 225struct G {226  long long ll : 45;227} G;228 229int s = sizeof(G);230 231// CHECK:      *** Dumping AST Record Layout232// CHECK-NEXT:          0 | struct G233// CHECK-NEXT:     0:0-44 |   long long ll234// CHECK-NEXT:               sizeof=8, {{(dsize=8, )?}}align=8, preferredalign=8235 236#pragma align(packed)237struct H {238   char c;239   int : 0;240   int i;241} H;242#pragma align(reset)243 244int h = sizeof(H);245 246// CHECK:      *** Dumping AST Record Layout247// CHECK-NEXT:          0 | struct H248// CHECK-NEXT:          0 |   char c249// CHECK-NEXT:        4:- |   int250// CHECK-NEXT:          4 |   int i251// CHECK-NEXT:              sizeof=8, {{(dsize=8, )?}}align=1, preferredalign=1252 253#pragma pack(2)254struct I {255   char c;256   int : 0;257   int i;258} I;259#pragma pack(pop)260 261int i = sizeof(I);262 263// CHECK:      *** Dumping AST Record Layout264// CHECK-NEXT:          0 | struct I265// CHECK-NEXT:          0 |   char c266// CHECK-NEXT:        4:- |   int267// CHECK-NEXT:          4 |   int i268// CHECK-NEXT:              sizeof=8, {{(dsize=8, )?}}align=2, preferredalign=2269