| // RUN: %clang_cc1 -emit-llvm-only -triple s390x-none-zos -fdump-record-layouts %s | FileCheck %s |
| |
| struct s0 { |
| short a:3; |
| long b:5; |
| int c:1; |
| long d:10; |
| char e:5; |
| } S0; |
| // CHECK: 0 | struct s0 |
| // CHECK-NEXT: 0:0-2 | short a |
| // CHECK-NEXT: 0:3-7 | long b |
| // CHECK-NEXT: 1:0-0 | int c |
| // CHECK-NEXT: 1:1-10 | long d |
| // CHECK-NEXT: 2:3-7 | char e |
| // CHECK-NEXT: | [sizeof=3, align=1] |
| |
| struct s1 { |
| char a:7; |
| long b:27; |
| int c:2; |
| } S1; |
| // CHECK: 0 | struct s1 |
| // CHECK-NEXT: 0:0-6 | char a |
| // CHECK-NEXT: 0:7-33 | long b |
| // CHECK-NEXT: 4:2-3 | int c |
| // CHECK-NEXT: | [sizeof=5, align=1] |
| |
| struct s2 { |
| char a:7; |
| char :0; |
| short :0; |
| short :0; |
| } S2; |
| // CHECK: 0 | struct s2 |
| // CHECK-NEXT: 0:0-6 | char a |
| // CHECK-NEXT: 4:- | char |
| // CHECK-NEXT: 4:- | short |
| // CHECK-NEXT: 4:- | short |
| // CHECK-NEXT: | [sizeof=4, align=4] |
| |
| struct s3 { |
| int a; |
| int b:16; |
| char :0; |
| char c:1; |
| } S3; |
| // CHECK: 0 | struct s3 |
| // CHECK-NEXT: 0 | int a |
| // CHECK-NEXT: 4:0-15 | int b |
| // CHECK-NEXT: 8:- | char |
| // CHECK-NEXT: 8:0-0 | char c |
| // CHECK-NEXT: | [sizeof=12, align=4] |
| |
| struct s4 { |
| unsigned int __attribute__((aligned(32))) a; |
| } S4; |
| // CHECK: 0 | struct s4 |
| // CHECK-NEXT: 0 | unsigned int a |
| // CHECK-NEXT: | [sizeof=32, align=32] |
| |
| struct s5 { |
| char a; |
| int b:19 __attribute__((aligned(4))); |
| int c:22 __attribute__((aligned(8))); |
| int :0; |
| int d:10; |
| } S5; |
| // CHECK: 0 | struct s5 |
| // CHECK-NEXT: 0 | char a |
| // CHECK-NEXT: 4:0-18 | int b |
| // CHECK-NEXT: 8:0-21 | int c |
| // CHECK-NEXT: 12:- | int |
| // CHECK-NEXT: 12:0-9 | int d |
| // CHECK-NEXT: | [sizeof=16, align=8] |
| |
| struct s6 { |
| char * a; |
| char * b[]; |
| } S6; |
| // CHECK: 0 | struct s6 |
| // CHECK-NEXT: 0 | char * a |
| // CHECK-NEXT: 8 | char *[] b |
| // CHECK-NEXT: | [sizeof=8, align=8] |
| |
| struct s10 { |
| unsigned int __attribute__((aligned)) a; |
| } S10; |
| // CHECK: 0 | struct s10 |
| // CHECK-NEXT: 0 | unsigned int a |
| // CHECK-NEXT: | [sizeof=16, align=16] |
| |
| struct s11 { |
| char a; |
| long :0; |
| char b; |
| } S11; |
| // CHECK: 0 | struct s11 |
| // CHECK-NEXT: 0 | char a |
| // CHECK-NEXT: 8:- | long |
| // CHECK-NEXT: 8 | char b |
| // CHECK-NEXT: | [sizeof=16, align=8] |
| |
| union u0 { |
| unsigned short d1 __attribute__((packed)); |
| int d2:10; |
| long d3; |
| } U0 __attribute__((aligned(8))); |
| // CHECK: 0 | union u0 |
| // CHECK-NEXT: 0 | unsigned short d1 |
| // CHECK-NEXT: 0:0-9 | int d2 |
| // CHECK-NEXT: 0 | long d3 |
| // CHECK-NEXT: | [sizeof=8, align=8] |
| |
| union u1 { |
| unsigned int :0; |
| short a; |
| } U1; |
| // CHECK: 0 | union u1 |
| // CHECK-NEXT: 0:- | unsigned int |
| // CHECK-NEXT: 0 | short a |
| // CHECK-NEXT: | [sizeof=4, align=4] |
| |
| union u2 { |
| long :0; |
| short a; |
| } U2; |
| // CHECK: 0 | union u2 |
| // CHECK-NEXT: 0:- | long |
| // CHECK-NEXT: 0 | short a |
| // CHECK-NEXT: | [sizeof=8, align=8] |
| |
| union u3 { |
| unsigned char :0; |
| unsigned short :0; |
| } U3; |
| // CHECK: 0 | union u3 |
| // CHECK-NEXT: 0:- | unsigned char |
| // CHECK-NEXT: 0:- | unsigned short |
| // CHECK-NEXT: | [sizeof=0, align=4] |