xref: /llvm-project/clang/test/CodeGenCXX/override-layout-nameless-struct-union.cpp (revision 09240ef77639785a8207e636796cb2fb7c73c3fb)
1*09240ef7SAleksandr Urakov // RUN: %clang_cc1 -w -fdump-record-layouts-simple -foverride-record-layout=%S/Inputs/override-layout-nameless-struct-union.layout %s | FileCheck %s
2*09240ef7SAleksandr Urakov 
3*09240ef7SAleksandr Urakov // CHECK: Type: struct S
4*09240ef7SAleksandr Urakov // CHECK:   Size:64
5*09240ef7SAleksandr Urakov // CHECK:   Alignment:32
6*09240ef7SAleksandr Urakov // CHECK:   FieldOffsets: [0, 32, 32]
7*09240ef7SAleksandr Urakov struct S {
8*09240ef7SAleksandr Urakov   short _s;
9*09240ef7SAleksandr Urakov //union {
10*09240ef7SAleksandr Urakov     int _su0;
11*09240ef7SAleksandr Urakov     char _su1;
12*09240ef7SAleksandr Urakov //};
13*09240ef7SAleksandr Urakov };
14*09240ef7SAleksandr Urakov 
15*09240ef7SAleksandr Urakov // CHECK: Type: union U
16*09240ef7SAleksandr Urakov // CHECK:   Size:96
17*09240ef7SAleksandr Urakov // CHECK:   Alignment:32
18*09240ef7SAleksandr Urakov // CHECK:   FieldOffsets: [0, 0, 32, 64, 68, 73]
19*09240ef7SAleksandr Urakov union U {
20*09240ef7SAleksandr Urakov   short _u;
21*09240ef7SAleksandr Urakov //struct {
22*09240ef7SAleksandr Urakov     char _us0;
23*09240ef7SAleksandr Urakov     int _us1;
24*09240ef7SAleksandr Urakov     unsigned _us20 : 4;
25*09240ef7SAleksandr Urakov     unsigned _us21 : 5;
26*09240ef7SAleksandr Urakov     unsigned _us22 : 6;
27*09240ef7SAleksandr Urakov //};
28*09240ef7SAleksandr Urakov };
29*09240ef7SAleksandr Urakov 
use_structs()30*09240ef7SAleksandr Urakov void use_structs() {
31*09240ef7SAleksandr Urakov   S ss[sizeof(S)];
32*09240ef7SAleksandr Urakov   U us[sizeof(U)];
33*09240ef7SAleksandr Urakov }
34