207 lines · c
1// RUN: %clang_cc1 -emit-llvm-only -triple s390x-none-zos -fdump-record-layouts %s | FileCheck %s --check-prefix=CHECK2// RUN: %clang_cc1 -emit-llvm -triple s390x-none-zos %s -o - | FileCheck %s --check-prefix=DECL3 4static int __attribute__((aligned(32))) v0;5int __attribute__((aligned(32))) v1;6typedef int __attribute__((aligned(32))) int32;7static int32 v2;8int32 v3;9int f0(void) { return v0 + v1 + v2 + v3; }10// DECL: @v0 {{.*}} align 1611// DECL-NEXT: @v1 {{.*}} align 3212// DECL-NEXT: @v2 {{.*}} align 1613// DECL-NEXT: @v3 {{.*}} align 3214 15const struct cs0 {16 unsigned long : 0;17 long long a;18} CS0 = {};19// CHECK: 0 | struct cs020// CHECK-NEXT: 0:- | unsigned long21// CHECK-NEXT: 0 | long long a22// CHECK-NEXT: | [sizeof=8, align=8]23 24volatile struct vs0 {25 long : 0;26 short a;27} VS0;28// CHECK: 0 | struct vs029// CHECK-NEXT: 0:- | long30// CHECK-NEXT: 0 | short a31// CHECK-NEXT: | [sizeof=2, align=2]32 33struct s0 {34 short a : 3;35 long b : 5;36 int c : 1;37 long d : 10;38 char e : 5;39} S0;40// CHECK: 0 | struct s041// CHECK-NEXT: 0:0-2 | short a42// CHECK-NEXT: 0:3-7 | long b43// CHECK-NEXT: 1:0-0 | int c44// CHECK-NEXT: 1:1-10 | long d45// CHECK-NEXT: 2:3-7 | char e46// CHECK-NEXT: | [sizeof=3, align=1]47 48struct s1 {49 char a : 7;50 long b : 27;51 int c : 2;52} S1;53// CHECK: 0 | struct s154// CHECK-NEXT: 0:0-6 | char a55// CHECK-NEXT: 0:7-33 | long b56// CHECK-NEXT: 4:2-3 | int c57// CHECK-NEXT: | [sizeof=5, align=1]58 59struct s2 {60 char a : 7;61 char : 0;62 short : 0;63 short : 0;64} S2;65// CHECK: 0 | struct s266// CHECK-NEXT: 0:0-6 | char a67// CHECK-NEXT: 4:- | char68// CHECK-NEXT: 4:- | short69// CHECK-NEXT: 4:- | short70// CHECK-NEXT: | [sizeof=4, align=4]71 72struct s3 {73 int a;74 int b : 16;75 char : 0;76 char c : 1;77} S3;78// CHECK: 0 | struct s379// CHECK-NEXT: 0 | int a80// CHECK-NEXT: 4:0-15 | int b81// CHECK-NEXT: 8:- | char82// CHECK-NEXT: 8:0-0 | char c83// CHECK-NEXT: | [sizeof=12, align=4]84 85struct s4 {86 unsigned int __attribute__((aligned(32))) a;87} S4;88// CHECK: 0 | struct s489// CHECK-NEXT: 0 | unsigned int a90// CHECK-NEXT: | [sizeof=32, align=32]91 92struct s5 {93 char a;94 int b : 19 __attribute__((aligned(4)));95 int c : 22 __attribute__((aligned(8)));96 int : 0;97 int d : 10;98} S5;99// CHECK: 0 | struct s5100// CHECK-NEXT: 0 | char a101// CHECK-NEXT: 4:0-18 | int b102// CHECK-NEXT: 8:0-21 | int c103// CHECK-NEXT: 12:- | int104// CHECK-NEXT: 12:0-9 | int d105// CHECK-NEXT: | [sizeof=16, align=8]106 107struct s6 {108 char *a;109 char *b[];110} S6;111// CHECK: 0 | struct s6112// CHECK-NEXT: 0 | char * a113// CHECK-NEXT: 8 | char *[] b114// CHECK-NEXT: | [sizeof=8, align=8]115 116struct s7 {117 long : 0;118 short a;119} S7;120// CHECK: 0 | struct s7121// CHECK-NEXT: 0:- | long122// CHECK-NEXT: 0 | short a123// CHECK-NEXT: | [sizeof=2, align=2]124 125#pragma pack(2)126struct s8 {127 unsigned long : 0;128 long long a;129} S8;130#pragma pack()131// CHECK: 0 | struct s8132// CHECK-NEXT: 0:- | unsigned long133// CHECK-NEXT: 0 | long long a134// CHECK-NEXT: | [sizeof=8, align=2]135 136struct s9 {137 unsigned int : 0;138 unsigned short : 0;139} S9;140// CHECK: 0 | struct s9141// CHECK-NEXT: 0:- | unsigned int142// CHECK-NEXT: 0:- | unsigned short143// CHECK-NEXT: | [sizeof=0, align=1]144 145struct s10 {146 unsigned int __attribute__((aligned)) a;147} S10;148// CHECK: 0 | struct s10149// CHECK-NEXT: 0 | unsigned int a150// CHECK-NEXT: | [sizeof=8, align=8]151 152struct s11 {153 char a;154 long : 0;155 char b;156} S11;157// CHECK: 0 | struct s11158// CHECK-NEXT: 0 | char a159// CHECK-NEXT: 8:- | long160// CHECK-NEXT: 8 | char b161// CHECK-NEXT: | [sizeof=16, align=8]162 163struct s12 {164 __int128_t a;165} S12;166// CHECK: 0 | struct s12167// CHECK-NEXT: 0 | __int128_t a168// CHECK-NEXT: | [sizeof=16, align=8]169 170union u0 {171 unsigned short d1 __attribute__((packed));172 int d2 : 10;173 long d3;174} U0 __attribute__((aligned(8)));175// CHECK: 0 | union u0176// CHECK-NEXT: 0 | unsigned short d1177// CHECK-NEXT: 0:0-9 | int d2178// CHECK-NEXT: 0 | long d3179// CHECK-NEXT: | [sizeof=8, align=8]180 181union u1 {182 unsigned int : 0;183 short a;184} U1;185// CHECK: 0 | union u1186// CHECK-NEXT: 0:- | unsigned int187// CHECK-NEXT: 0 | short a188// CHECK-NEXT: | [sizeof=4, align=4]189 190union u2 {191 long : 0;192 short a;193} U2;194// CHECK: 0 | union u2195// CHECK-NEXT: 0:- | long196// CHECK-NEXT: 0 | short a197// CHECK-NEXT: | [sizeof=8, align=8]198 199union u3 {200 unsigned char : 0;201 unsigned short : 0;202} U3;203// CHECK: 0 | union u3204// CHECK-NEXT: 0:- | unsigned char205// CHECK-NEXT: 0:- | unsigned short206// CHECK-NEXT: | [sizeof=0, align=4]207