| // RUN: %clang_cc1 -emit-llvm -triple s390x-ibm-zos -fzos-extensions -fdump-record-layouts < %s | FileCheck %s --check-prefix=PTR32-ZOS |
| // RUN: %clang_cc1 -emit-llvm -triple s390x-ibm-linux -fzos-extensions -fdump-record-layouts < %s | FileCheck %s --check-prefix=PTR32-LINUX |
| // RUN: %clang_cc1 -emit-llvm -triple s390x-linux-gnu -fzos-extensions -fdump-record-layouts < %s | FileCheck %s --check-prefix=PTR32-LINUX |
| |
| // PTR32-ZOS: 0 | struct s1 |
| // PTR32-ZOS-NEXT: 0 | long a |
| // PTR32-ZOS-NEXT: 8 | int b |
| // PTR32-ZOS-NEXT: 12 | int * __ptr32 c |
| // PTR32-ZOS-NEXT: 16 | int d |
| // PTR32-ZOS-NEXT: | [sizeof=24, align=8] |
| |
| // PTR32-LINUX: 0 | struct s1 |
| // PTR32-LINUX-NEXT: 0 | long a |
| // PTR32-LINUX-NEXT: 8 | int b |
| // PTR32-LINUX-NEXT: 16 | int * __ptr32 c |
| // PTR32-LINUX-NEXT: 24 | int d |
| // PTR32-LINUX-NEXT: | [sizeof=32, align=8] |
| struct s1 { |
| long a; |
| int b; |
| int * __ptr32 c; |
| int d; |
| } S1; |
| |
| // PTR32-ZOS: 0 | struct s2 |
| // PTR32-ZOS-NEXT: 0 | long a |
| // PTR32-ZOS-NEXT: 8 | int b |
| // PTR32-ZOS-NEXT: 16 | int * c |
| // PTR32-ZOS-NEXT: 24 | int d |
| // PTR32-ZOS-NEXT: | [sizeof=32, align=8] |
| |
| // PTR32-LINUX: 0 | struct s2 |
| // PTR32-LINUX-NEXT: 0 | long a |
| // PTR32-LINUX-NEXT: 8 | int b |
| // PTR32-LINUX-NEXT: 16 | int * c |
| // PTR32-LINUX-NEXT: 24 | int d |
| // PTR32-LINUX-NEXT: | [sizeof=32, align=8] |
| struct s2 { |
| long a; |
| int b; |
| int *c; |
| int d; |
| } S2; |
| |
| // PTR32-ZOS: 0 | struct s3 |
| // PTR32-ZOS-NEXT: 0 | int a |
| // PTR32-ZOS-NEXT: 4 | int * __ptr32 b |
| // PTR32-ZOS-NEXT: 8 | int * __ptr32 c |
| // PTR32-ZOS-NEXT: 12 | int * d |
| // PTR32-ZOS-NEXT: | [sizeof=20, align=1] |
| |
| struct __attribute__((packed)) s3 { |
| int a; |
| int *__ptr32 b; |
| int *__ptr32 c; |
| int *d; |
| }; |
| struct s3 S3; |
| |
| // PTR32-ZOS: 0 | union u1 |
| // PTR32-ZOS-NEXT: 0 | int * __ptr32 a |
| // PTR32-ZOS-NEXT: 0 | int * b |
| // PTR32-ZOS-NEXT: | [sizeof=8, align=8] |
| |
| // PTR32-LINUX: 0 | union u1 |
| // PTR32-LINUX-NEXT: 0 | int * __ptr32 a |
| // PTR32-LINUX-NEXT: 0 | int * b |
| // PTR32-LINUX-NEXT: | [sizeof=8, align=8] |
| union u1 { |
| int *__ptr32 a; |
| int *b; |
| } U1; |
| |
| // PTR32-ZOS: 0 | union u2 |
| // PTR32-ZOS-NEXT: 0 | int * __ptr32 a |
| // PTR32-ZOS-NEXT: 0 | int * b |
| // PTR32-ZOS-NEXT: | [sizeof=8, align=1] |
| |
| union __attribute__((packed)) u2 { |
| int *__ptr32 a; |
| int *b; |
| }; |
| union u2 U2; |
| |
| // PTR32-ZOS: 0 | union u3 |
| // PTR32-ZOS-NEXT: 0 | int * __ptr32 a |
| // PTR32-ZOS-NEXT: 0 | short b |
| // PTR32-ZOS-NEXT: | [sizeof=4, align=1] |
| |
| union __attribute__((packed)) u3 { |
| int *__ptr32 a; |
| short b; |
| }; |
| union u3 U3; |