|  | // 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; |