1 // RUN: %clang_cc1 -emit-llvm-only -triple s390x-none-zos -fdump-record-layouts %s | FileCheck %s 2 3 struct s0 { 4 short a:3; 5 long b:5; 6 int c:1; 7 long d:10; 8 char e:5; 9 } S0; 10 // CHECK: 0 | struct s0 11 // CHECK-NEXT: 0:0-2 | short a 12 // CHECK-NEXT: 0:3-7 | long b 13 // CHECK-NEXT: 1:0-0 | int c 14 // CHECK-NEXT: 1:1-10 | long d 15 // CHECK-NEXT: 2:3-7 | char e 16 // CHECK-NEXT: | [sizeof=3, align=1] 17 18 struct s1 { 19 char a:7; 20 long b:27; 21 int c:2; 22 } S1; 23 // CHECK: 0 | struct s1 24 // CHECK-NEXT: 0:0-6 | char a 25 // CHECK-NEXT: 0:7-33 | long b 26 // CHECK-NEXT: 4:2-3 | int c 27 // CHECK-NEXT: | [sizeof=5, align=1] 28 29 struct s2 { 30 char a:7; 31 char :0; 32 short :0; 33 short :0; 34 } S2; 35 // CHECK: 0 | struct s2 36 // CHECK-NEXT: 0:0-6 | char a 37 // CHECK-NEXT: 4:- | char 38 // CHECK-NEXT: 4:- | short 39 // CHECK-NEXT: 4:- | short 40 // CHECK-NEXT: | [sizeof=4, align=4] 41 42 struct s3 { 43 int a; 44 int b:16; 45 char :0; 46 char c:1; 47 } S3; 48 // CHECK: 0 | struct s3 49 // CHECK-NEXT: 0 | int a 50 // CHECK-NEXT: 4:0-15 | int b 51 // CHECK-NEXT: 8:- | char 52 // CHECK-NEXT: 8:0-0 | char c 53 // CHECK-NEXT: | [sizeof=12, align=4] 54 55 struct s4 { 56 unsigned int __attribute__((aligned(32))) a; 57 } S4; 58 // CHECK: 0 | struct s4 59 // CHECK-NEXT: 0 | unsigned int a 60 // CHECK-NEXT: | [sizeof=32, align=32] 61 62 struct s5 { 63 char a; 64 int b:19 __attribute__((aligned(4))); 65 int c:22 __attribute__((aligned(8))); 66 int :0; 67 int d:10; 68 } S5; 69 // CHECK: 0 | struct s5 70 // CHECK-NEXT: 0 | char a 71 // CHECK-NEXT: 4:0-18 | int b 72 // CHECK-NEXT: 8:0-21 | int c 73 // CHECK-NEXT: 12:- | int 74 // CHECK-NEXT: 12:0-9 | int d 75 // CHECK-NEXT: | [sizeof=16, align=8] 76 77 struct s6 { 78 char * a; 79 char * b[]; 80 } S6; 81 // CHECK: 0 | struct s6 82 // CHECK-NEXT: 0 | char * a 83 // CHECK-NEXT: 8 | char *[] b 84 // CHECK-NEXT: | [sizeof=8, align=8] 85 86 struct s10 { 87 unsigned int __attribute__((aligned)) a; 88 } S10; 89 // CHECK: 0 | struct s10 90 // CHECK-NEXT: 0 | unsigned int a 91 // CHECK-NEXT: | [sizeof=16, align=16] 92 93 struct s11 { 94 char a; 95 long :0; 96 char b; 97 } S11; 98 // CHECK: 0 | struct s11 99 // CHECK-NEXT: 0 | char a 100 // CHECK-NEXT: 8:- | long 101 // CHECK-NEXT: 8 | char b 102 // CHECK-NEXT: | [sizeof=16, align=8] 103 104 union u0 { 105 unsigned short d1 __attribute__((packed)); 106 int d2:10; 107 long d3; 108 } U0 __attribute__((aligned(8))); 109 // CHECK: 0 | union u0 110 // CHECK-NEXT: 0 | unsigned short d1 111 // CHECK-NEXT: 0:0-9 | int d2 112 // CHECK-NEXT: 0 | long d3 113 // CHECK-NEXT: | [sizeof=8, align=8] 114 115 union u1 { 116 unsigned int :0; 117 short a; 118 } U1; 119 // CHECK: 0 | union u1 120 // CHECK-NEXT: 0:- | unsigned int 121 // CHECK-NEXT: 0 | short a 122 // CHECK-NEXT: | [sizeof=4, align=4] 123 124 union u2 { 125 long :0; 126 short a; 127 } U2; 128 // CHECK: 0 | union u2 129 // CHECK-NEXT: 0:- | long 130 // CHECK-NEXT: 0 | short a 131 // CHECK-NEXT: | [sizeof=8, align=8] 132 133 union u3 { 134 unsigned char :0; 135 unsigned short :0; 136 } U3; 137 // CHECK: 0 | union u3 138 // CHECK-NEXT: 0:- | unsigned char 139 // CHECK-NEXT: 0:- | unsigned short 140 // CHECK-NEXT: | [sizeof=0, align=4] 141