1*b09ba426SYing Yi //  Test for debug info related to DW_AT_alignment attribute in the struct type.
2*b09ba426SYing Yi // RUN: %clang_cc1 -dwarf-version=5 -debug-info-kind=standalone -S -emit-llvm %s -o - | FileCheck %s
3*b09ba426SYing Yi 
4*b09ba426SYing Yi // CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, name: "MyType", {{.*}}, align: 32
5*b09ba426SYing Yi // CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, name: "MyType1", {{.*}}, align: 8
6*b09ba426SYing Yi // CHECK-DAG: DICompositeType(tag: DW_TAG_structure_type, name: "MyType2", {{.*}}, align: 8
7*b09ba426SYing Yi 
8*b09ba426SYing Yi struct MyType {
9*b09ba426SYing Yi   int m;
10*b09ba426SYing Yi } __attribute__((aligned(1)));
11*b09ba426SYing Yi MyType mt;
12*b09ba426SYing Yi 
13*b09ba426SYing Yi static_assert(alignof(MyType) == 4, "alignof MyType is wrong");
14*b09ba426SYing Yi 
15*b09ba426SYing Yi struct MyType1 {
16*b09ba426SYing Yi   int m;
17*b09ba426SYing Yi } __attribute__((packed, aligned(1)));
18*b09ba426SYing Yi MyType1 mt1;
19*b09ba426SYing Yi 
20*b09ba426SYing Yi static_assert(alignof(MyType1) == 1, "alignof MyType1 is wrong");
21*b09ba426SYing Yi 
22*b09ba426SYing Yi struct MyType2 {
23*b09ba426SYing Yi   __attribute__((packed)) int m;
24*b09ba426SYing Yi } __attribute__((aligned(1)));
25*b09ba426SYing Yi MyType2 mt2;
26*b09ba426SYing Yi 
27*b09ba426SYing Yi static_assert(alignof(MyType2) == 1, "alignof MyType2 is wrong");
28