brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 88f6b3f Raw
114 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,32BIT %s4 5// RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -fdump-record-layouts \6// RUN:     -fsyntax-only -fxl-pragma-pack -x c++ %s | \7// RUN:   FileCheck --check-prefixes=CHECK,32BIT %s8 9// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \10// RUN:     -fsyntax-only -fxl-pragma-pack -x c %s | \11// RUN:   FileCheck --check-prefixes=CHECK,64BIT %s12 13// RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -fdump-record-layouts \14// RUN:     -fsyntax-only -fxl-pragma-pack -x c++ %s | \15// RUN:   FileCheck --check-prefixes=CHECK,64BIT %s16 17struct A {18  int a1 : 30;19  int a2 : 30;20  int a3 : 4;21};22 23int a = sizeof(struct A);24 25// CHECK:      *** Dumping AST Record Layout26// CHECK-NEXT:      0 | struct A27// CHECK-NEXT: 0:0-29 |   int a128// CHECK-NEXT: 4:0-29 |   int a229// CHECK-NEXT:  8:0-3 |   int a330// CHECK-NEXT:          sizeof=12, {{(dsize=12, )?}}align=4, preferredalign=431 32#pragma align(packed)33struct AlignPacked {34  int a1 : 30;35  int a2 : 30;36  int a3 : 4;37};38#pragma align(reset)39 40int b = sizeof(struct AlignPacked);41 42// CHECK:      *** Dumping AST Record Layout43// CHECK-NEXT:      0 | struct AlignPacked44// CHECK-NEXT: 0:0-29 |   int a145// CHECK-NEXT: 3:6-35 |   int a246// CHECK-NEXT:  7:4-7 |   int a347// CHECK-NEXT:          sizeof=8, {{(dsize=8, )?}}align=1, preferredalign=148 49#pragma pack(1)50struct Pack1 {51  int a1 : 30;52  int a2 : 30;53  int a3 : 4;54};55#pragma pack(pop)56 57int c = sizeof(struct Pack1);58 59// CHECK:      *** Dumping AST Record Layout60// CHECK-NEXT:      0 | struct Pack161// CHECK-NEXT: 0:0-29 |   int a162// CHECK-NEXT: 3:6-35 |   int a263// CHECK-NEXT:  7:4-7 |   int a364// CHECK-NEXT:          sizeof=8, {{(dsize=8, )?}}align=1, preferredalign=165 66#pragma pack(2)67struct Pack2 {68  int a1 : 30;69  int a2 : 30;70  int a3 : 4;71};72#pragma pack(pop)73 74int d = sizeof(struct Pack2);75 76// CHECK:      *** Dumping AST Record Layout77// CHECK-NEXT:      0 | struct Pack278// CHECK-NEXT: 0:0-29 |   int a179// CHECK-NEXT: 3:6-35 |   int a280// CHECK-NEXT:  7:4-7 |   int a381// CHECK-NEXT:          sizeof=8, {{(dsize=8, )?}}align=2, preferredalign=282//83struct __attribute__((packed)) PackedAttr {84  char f1;85  int : 0;86  short : 3;87  char f4 : 2;88};89 90int e = sizeof(struct PackedAttr);91// CHECK:      *** Dumping AST Record Layout92// CHECK-NEXT:      0 | struct PackedAttr93// CHECK-NEXT:      0 |   char f194// CHECK-NEXT:    4:- |   int95// CHECK-NEXT:  4:0-2 |   short96// CHECK-NEXT:  4:3-4 |   char f497// CHECK-NEXT:          sizeof=5, {{(dsize=5, )?}}align=1, preferredalign=198 99#pragma pack(2)100struct __attribute__((packed)) PackedAttrAndPragma {101  char f1;102  long long : 0;103};104#pragma pack(pop)105 106int f = sizeof(struct PackedAttrAndPragma);107// CHECK:      *** Dumping AST Record Layout108// CHECK-NEXT:      0 | struct PackedAttrAndPragma109// CHECK-NEXT:      0 |   char f1110// 32BIT-NEXT:    4:- |   long long111// 32BIT-NEXT:          sizeof=4, {{(dsize=4, )?}}align=1, preferredalign=1112// 64BIT-NEXT:    8:- |   long long113// 64BIT-NEXT:          sizeof=8, {{(dsize=8, )?}}align=1, preferredalign=1114