// RUN: %clang_cc1 -emit-llvm-only -triple s390x-none-zos -fdump-record-layouts %s | FileCheck %s --check-prefix=CHECK
// RUN: %clang_cc1 -emit-llvm -triple s390x-none-zos %s -o - | FileCheck %s --check-prefix=DECL

static int __attribute__((aligned(32))) v0;
int __attribute__((aligned(32))) v1;
typedef int __attribute__((aligned(32))) int32;
static int32 v2;
int32 v3;
int f0(void) { return v0 + v1 + v2 + v3; }
// DECL:      @v0 {{.*}} align 16
// DECL-NEXT: @v1 {{.*}} align 32
// DECL-NEXT: @v2 {{.*}} align 16
// DECL-NEXT: @v3 {{.*}} align 32

const struct cs0 {
  unsigned long : 0;
  long long a;
} CS0 = {};
// CHECK:              0 | struct cs0
// CHECK-NEXT:       0:- |   unsigned long
// CHECK-NEXT:         0 |   long long a
// CHECK-NEXT:           | [sizeof=8, align=8]

volatile struct vs0 {
  long : 0;
  short a;
} VS0;
// CHECK:              0 | struct vs0
// CHECK-NEXT:       0:- |   long
// CHECK-NEXT:         0 |   short a
// CHECK-NEXT:           | [sizeof=2, align=2]

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 s7 {
  long : 0;
  short a;
} S7;
// CHECK:              0 | struct s7
// CHECK-NEXT:       0:- |   long
// CHECK-NEXT:         0 |   short a
// CHECK-NEXT:           | [sizeof=2, align=2]

#pragma pack(2)
struct s8 {
  unsigned long : 0;
  long long a;
} S8;
#pragma pack()
// CHECK:              0 | struct s8
// CHECK-NEXT:       0:- |   unsigned long
// CHECK-NEXT:         0 |   long long a
// CHECK-NEXT:           | [sizeof=8, align=2]

struct s9 {
  unsigned int : 0;
  unsigned short : 0;
} S9;
// CHECK:              0 | struct s9
// CHECK-NEXT:       0:- |   unsigned int
// CHECK-NEXT:       0:- |   unsigned short
// CHECK-NEXT:           | [sizeof=0, align=1]

struct s10 {
  unsigned int __attribute__((aligned)) a;
} S10;
// CHECK:              0 | struct s10
// CHECK-NEXT:         0 |   unsigned int a
// CHECK-NEXT:           | [sizeof=8, align=8]

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]

struct s12 {
  __int128_t a;
} S12;
// CHECK:              0 | struct s12
// CHECK-NEXT:         0 |   __int128_t a
// 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]
