blob: 7cc0b469dbf339aa2ddce8af5246f17276d8a208 [file] [log] [blame]
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
// RUN: linker -o %t2%exeext %t1.o %t2.o
// RUN: runtool %t2%exeext | checker "TEST PASSED"
#include "testsuite.h"
#ifdef __cplusplus
struct empty {
};
//SIG(-1 empty) C1{}
static void Test_empty()
{
{
init_simple_test("empty");
empty lv;
check2(sizeof(lv), 1, "sizeof(empty)");
check2(__alignof__(lv), 1, "__alignof__(empty)");
}
}
static Arrange_To_Call_Me vempty(Test_empty, "empty", 1);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_BFu0c_Sf {
bool v1;
unsigned char :0;
::empty v2;
};
//SIG(1 B_BFu0c_Sf) C1{ Fc Fc:0 FC2{}}
static void Test_B_BFu0c_Sf()
{
{
init_simple_test("B_BFu0c_Sf");
static B_BFu0c_Sf lv;
check2(sizeof(lv), 2, "sizeof(B_BFu0c_Sf)");
check2(__alignof__(lv), 1, "__alignof__(B_BFu0c_Sf)");
check_field_offset(lv, v1, 0, "B_BFu0c_Sf.v1");
check_field_offset(lv, v2, 1, "B_BFu0c_Sf.v2");
}
}
static Arrange_To_Call_Me vB_BFu0c_Sf(Test_B_BFu0c_Sf, "B_BFu0c_Sf", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_BFu0i_Sf {
bool v1;
unsigned int :0;
::empty v2;
};
//SIG(1 B_BFu0i_Sf) C1{ Fc Fi:0 FC2{}}
static void Test_B_BFu0i_Sf()
{
{
init_simple_test("B_BFu0i_Sf");
static B_BFu0i_Sf lv;
check2(sizeof(lv), ABISELECT(5,5), "sizeof(B_BFu0i_Sf)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(B_BFu0i_Sf)");
check_field_offset(lv, v1, 0, "B_BFu0i_Sf.v1");
check_field_offset(lv, v2, 4, "B_BFu0i_Sf.v2");
}
}
static Arrange_To_Call_Me vB_BFu0i_Sf(Test_B_BFu0i_Sf, "B_BFu0i_Sf", ABISELECT(5,5));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_BFu0ll_Sf {
bool v1;
__tsu64 :0;
::empty v2;
};
//SIG(1 B_BFu0ll_Sf) C1{ Fc FL:0 FC2{}}
static void Test_B_BFu0ll_Sf()
{
{
init_simple_test("B_BFu0ll_Sf");
static B_BFu0ll_Sf lv;
check2(sizeof(lv), ABISELECT(9,5), "sizeof(B_BFu0ll_Sf)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(B_BFu0ll_Sf)");
check_field_offset(lv, v1, 0, "B_BFu0ll_Sf.v1");
check_field_offset(lv, v2, ABISELECT(8,4), "B_BFu0ll_Sf.v2");
}
}
static Arrange_To_Call_Me vB_BFu0ll_Sf(Test_B_BFu0ll_Sf, "B_BFu0ll_Sf", ABISELECT(9,5));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_BFu0s_Sf {
bool v1;
unsigned short :0;
::empty v2;
};
//SIG(1 B_BFu0s_Sf) C1{ Fc Fs:0 FC2{}}
static void Test_B_BFu0s_Sf()
{
{
init_simple_test("B_BFu0s_Sf");
static B_BFu0s_Sf lv;
check2(sizeof(lv), ABISELECT(3,3), "sizeof(B_BFu0s_Sf)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(B_BFu0s_Sf)");
check_field_offset(lv, v1, 0, "B_BFu0s_Sf.v1");
check_field_offset(lv, v2, 2, "B_BFu0s_Sf.v2");
}
}
static Arrange_To_Call_Me vB_BFu0s_Sf(Test_B_BFu0s_Sf, "B_BFu0s_Sf", ABISELECT(3,3));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_Sf_BFu0c {
bool v1;
::empty v2;
unsigned char :0;
};
//SIG(1 B_Sf_BFu0c) C1{ Fc FC2{} Fc:0}
static void Test_B_Sf_BFu0c()
{
{
init_simple_test("B_Sf_BFu0c");
static B_Sf_BFu0c lv;
check2(sizeof(lv), 2, "sizeof(B_Sf_BFu0c)");
check2(__alignof__(lv), 1, "__alignof__(B_Sf_BFu0c)");
check_field_offset(lv, v1, 0, "B_Sf_BFu0c.v1");
check_field_offset(lv, v2, 1, "B_Sf_BFu0c.v2");
}
}
static Arrange_To_Call_Me vB_Sf_BFu0c(Test_B_Sf_BFu0c, "B_Sf_BFu0c", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_Sf_BFu0i {
bool v1;
::empty v2;
unsigned int :0;
};
//SIG(1 B_Sf_BFu0i) C1{ Fc FC2{} Fi:0}
static void Test_B_Sf_BFu0i()
{
{
init_simple_test("B_Sf_BFu0i");
static B_Sf_BFu0i lv;
check2(sizeof(lv), 4, "sizeof(B_Sf_BFu0i)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(B_Sf_BFu0i)");
check_field_offset(lv, v1, 0, "B_Sf_BFu0i.v1");
check_field_offset(lv, v2, 1, "B_Sf_BFu0i.v2");
}
}
static Arrange_To_Call_Me vB_Sf_BFu0i(Test_B_Sf_BFu0i, "B_Sf_BFu0i", 4);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_Sf_BFu0ll {
bool v1;
::empty v2;
__tsu64 :0;
};
//SIG(1 B_Sf_BFu0ll) C1{ Fc FC2{} FL:0}
static void Test_B_Sf_BFu0ll()
{
{
init_simple_test("B_Sf_BFu0ll");
static B_Sf_BFu0ll lv;
check2(sizeof(lv), ABISELECT(8,4), "sizeof(B_Sf_BFu0ll)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(B_Sf_BFu0ll)");
check_field_offset(lv, v1, 0, "B_Sf_BFu0ll.v1");
check_field_offset(lv, v2, 1, "B_Sf_BFu0ll.v2");
}
}
static Arrange_To_Call_Me vB_Sf_BFu0ll(Test_B_Sf_BFu0ll, "B_Sf_BFu0ll", ABISELECT(8,4));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct B_Sf_BFu0s {
bool v1;
::empty v2;
unsigned short :0;
};
//SIG(1 B_Sf_BFu0s) C1{ Fc FC2{} Fs:0}
static void Test_B_Sf_BFu0s()
{
{
init_simple_test("B_Sf_BFu0s");
static B_Sf_BFu0s lv;
check2(sizeof(lv), 2, "sizeof(B_Sf_BFu0s)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(B_Sf_BFu0s)");
check_field_offset(lv, v1, 0, "B_Sf_BFu0s.v1");
check_field_offset(lv, v2, 1, "B_Sf_BFu0s.v2");
}
}
static Arrange_To_Call_Me vB_Sf_BFu0s(Test_B_Sf_BFu0s, "B_Sf_BFu0s", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0c_B_Sf {
unsigned char :0;
bool v1;
::empty v2;
};
//SIG(1 BFu0c_B_Sf) C1{ Fc:0 Fc FC2{}}
static void Test_BFu0c_B_Sf()
{
{
init_simple_test("BFu0c_B_Sf");
static BFu0c_B_Sf lv;
check2(sizeof(lv), 2, "sizeof(BFu0c_B_Sf)");
check2(__alignof__(lv), 1, "__alignof__(BFu0c_B_Sf)");
check_field_offset(lv, v1, 0, "BFu0c_B_Sf.v1");
check_field_offset(lv, v2, 1, "BFu0c_B_Sf.v2");
}
}
static Arrange_To_Call_Me vBFu0c_B_Sf(Test_BFu0c_B_Sf, "BFu0c_B_Sf", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0c_Sf_B {
unsigned char :0;
::empty v1;
bool v2;
};
//SIG(1 BFu0c_Sf_B) C1{ Fc:0 FC2{} Fc}
static void Test_BFu0c_Sf_B()
{
{
init_simple_test("BFu0c_Sf_B");
static BFu0c_Sf_B lv;
check2(sizeof(lv), 2, "sizeof(BFu0c_Sf_B)");
check2(__alignof__(lv), 1, "__alignof__(BFu0c_Sf_B)");
check_field_offset(lv, v1, 0, "BFu0c_Sf_B.v1");
check_field_offset(lv, v2, 1, "BFu0c_Sf_B.v2");
}
}
static Arrange_To_Call_Me vBFu0c_Sf_B(Test_BFu0c_Sf_B, "BFu0c_Sf_B", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0i_B_Sf {
unsigned int :0;
bool v1;
::empty v2;
};
//SIG(1 BFu0i_B_Sf) C1{ Fi:0 Fc FC2{}}
static void Test_BFu0i_B_Sf()
{
{
init_simple_test("BFu0i_B_Sf");
static BFu0i_B_Sf lv;
check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0i_B_Sf)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0i_B_Sf)");
check_field_offset(lv, v1, 0, "BFu0i_B_Sf.v1");
check_field_offset(lv, v2, 1, "BFu0i_B_Sf.v2");
}
}
static Arrange_To_Call_Me vBFu0i_B_Sf(Test_BFu0i_B_Sf, "BFu0i_B_Sf", ABISELECT(2,2));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0i_Sf_B {
unsigned int :0;
::empty v1;
bool v2;
};
//SIG(1 BFu0i_Sf_B) C1{ Fi:0 FC2{} Fc}
static void Test_BFu0i_Sf_B()
{
{
init_simple_test("BFu0i_Sf_B");
static BFu0i_Sf_B lv;
check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0i_Sf_B)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0i_Sf_B)");
check_field_offset(lv, v1, 0, "BFu0i_Sf_B.v1");
check_field_offset(lv, v2, 1, "BFu0i_Sf_B.v2");
}
}
static Arrange_To_Call_Me vBFu0i_Sf_B(Test_BFu0i_Sf_B, "BFu0i_Sf_B", ABISELECT(2,2));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0ll_B_Sf {
__tsu64 :0;
bool v1;
::empty v2;
};
//SIG(1 BFu0ll_B_Sf) C1{ FL:0 Fc FC2{}}
static void Test_BFu0ll_B_Sf()
{
{
init_simple_test("BFu0ll_B_Sf");
static BFu0ll_B_Sf lv;
check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0ll_B_Sf)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_B_Sf)");
check_field_offset(lv, v1, 0, "BFu0ll_B_Sf.v1");
check_field_offset(lv, v2, 1, "BFu0ll_B_Sf.v2");
}
}
static Arrange_To_Call_Me vBFu0ll_B_Sf(Test_BFu0ll_B_Sf, "BFu0ll_B_Sf", ABISELECT(2,2));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0ll_Sf_B {
__tsu64 :0;
::empty v1;
bool v2;
};
//SIG(1 BFu0ll_Sf_B) C1{ FL:0 FC2{} Fc}
static void Test_BFu0ll_Sf_B()
{
{
init_simple_test("BFu0ll_Sf_B");
static BFu0ll_Sf_B lv;
check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0ll_Sf_B)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Sf_B)");
check_field_offset(lv, v1, 0, "BFu0ll_Sf_B.v1");
check_field_offset(lv, v2, 1, "BFu0ll_Sf_B.v2");
}
}
static Arrange_To_Call_Me vBFu0ll_Sf_B(Test_BFu0ll_Sf_B, "BFu0ll_Sf_B", ABISELECT(2,2));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0s_B_Sf {
unsigned short :0;
bool v1;
::empty v2;
};
//SIG(1 BFu0s_B_Sf) C1{ Fs:0 Fc FC2{}}
static void Test_BFu0s_B_Sf()
{
{
init_simple_test("BFu0s_B_Sf");
static BFu0s_B_Sf lv;
check2(sizeof(lv), 2, "sizeof(BFu0s_B_Sf)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_B_Sf)");
check_field_offset(lv, v1, 0, "BFu0s_B_Sf.v1");
check_field_offset(lv, v2, 1, "BFu0s_B_Sf.v2");
}
}
static Arrange_To_Call_Me vBFu0s_B_Sf(Test_BFu0s_B_Sf, "BFu0s_B_Sf", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct BFu0s_Sf_B {
unsigned short :0;
::empty v1;
bool v2;
};
//SIG(1 BFu0s_Sf_B) C1{ Fs:0 FC2{} Fc}
static void Test_BFu0s_Sf_B()
{
{
init_simple_test("BFu0s_Sf_B");
static BFu0s_Sf_B lv;
check2(sizeof(lv), 2, "sizeof(BFu0s_Sf_B)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Sf_B)");
check_field_offset(lv, v1, 0, "BFu0s_Sf_B.v1");
check_field_offset(lv, v2, 1, "BFu0s_Sf_B.v2");
}
}
static Arrange_To_Call_Me vBFu0s_Sf_B(Test_BFu0s_Sf_B, "BFu0s_Sf_B", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_B_BFu0c {
::empty v1;
bool v2;
unsigned char :0;
};
//SIG(1 Sf_B_BFu0c) C1{ FC2{} Fc Fc:0}
static void Test_Sf_B_BFu0c()
{
{
init_simple_test("Sf_B_BFu0c");
static Sf_B_BFu0c lv;
check2(sizeof(lv), 2, "sizeof(Sf_B_BFu0c)");
check2(__alignof__(lv), 1, "__alignof__(Sf_B_BFu0c)");
check_field_offset(lv, v1, 0, "Sf_B_BFu0c.v1");
check_field_offset(lv, v2, 1, "Sf_B_BFu0c.v2");
}
}
static Arrange_To_Call_Me vSf_B_BFu0c(Test_Sf_B_BFu0c, "Sf_B_BFu0c", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_B_BFu0i {
::empty v1;
bool v2;
unsigned int :0;
};
//SIG(1 Sf_B_BFu0i) C1{ FC2{} Fc Fi:0}
static void Test_Sf_B_BFu0i()
{
{
init_simple_test("Sf_B_BFu0i");
static Sf_B_BFu0i lv;
check2(sizeof(lv), 4, "sizeof(Sf_B_BFu0i)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(Sf_B_BFu0i)");
check_field_offset(lv, v1, 0, "Sf_B_BFu0i.v1");
check_field_offset(lv, v2, 1, "Sf_B_BFu0i.v2");
}
}
static Arrange_To_Call_Me vSf_B_BFu0i(Test_Sf_B_BFu0i, "Sf_B_BFu0i", 4);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_B_BFu0ll {
::empty v1;
bool v2;
__tsu64 :0;
};
//SIG(1 Sf_B_BFu0ll) C1{ FC2{} Fc FL:0}
static void Test_Sf_B_BFu0ll()
{
{
init_simple_test("Sf_B_BFu0ll");
static Sf_B_BFu0ll lv;
check2(sizeof(lv), ABISELECT(8,4), "sizeof(Sf_B_BFu0ll)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(Sf_B_BFu0ll)");
check_field_offset(lv, v1, 0, "Sf_B_BFu0ll.v1");
check_field_offset(lv, v2, 1, "Sf_B_BFu0ll.v2");
}
}
static Arrange_To_Call_Me vSf_B_BFu0ll(Test_Sf_B_BFu0ll, "Sf_B_BFu0ll", ABISELECT(8,4));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_B_BFu0s {
::empty v1;
bool v2;
unsigned short :0;
};
//SIG(1 Sf_B_BFu0s) C1{ FC2{} Fc Fs:0}
static void Test_Sf_B_BFu0s()
{
{
init_simple_test("Sf_B_BFu0s");
static Sf_B_BFu0s lv;
check2(sizeof(lv), 2, "sizeof(Sf_B_BFu0s)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(Sf_B_BFu0s)");
check_field_offset(lv, v1, 0, "Sf_B_BFu0s.v1");
check_field_offset(lv, v2, 1, "Sf_B_BFu0s.v2");
}
}
static Arrange_To_Call_Me vSf_B_BFu0s(Test_Sf_B_BFu0s, "Sf_B_BFu0s", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_BFu0c_B {
::empty v1;
unsigned char :0;
bool v2;
};
//SIG(1 Sf_BFu0c_B) C1{ FC2{} Fc:0 Fc}
static void Test_Sf_BFu0c_B()
{
{
init_simple_test("Sf_BFu0c_B");
static Sf_BFu0c_B lv;
check2(sizeof(lv), 2, "sizeof(Sf_BFu0c_B)");
check2(__alignof__(lv), 1, "__alignof__(Sf_BFu0c_B)");
check_field_offset(lv, v1, 0, "Sf_BFu0c_B.v1");
check_field_offset(lv, v2, 1, "Sf_BFu0c_B.v2");
}
}
static Arrange_To_Call_Me vSf_BFu0c_B(Test_Sf_BFu0c_B, "Sf_BFu0c_B", 2);
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_BFu0i_B {
::empty v1;
unsigned int :0;
bool v2;
};
//SIG(1 Sf_BFu0i_B) C1{ FC2{} Fi:0 Fc}
static void Test_Sf_BFu0i_B()
{
{
init_simple_test("Sf_BFu0i_B");
static Sf_BFu0i_B lv;
check2(sizeof(lv), ABISELECT(5,5), "sizeof(Sf_BFu0i_B)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(Sf_BFu0i_B)");
check_field_offset(lv, v1, 0, "Sf_BFu0i_B.v1");
check_field_offset(lv, v2, 4, "Sf_BFu0i_B.v2");
}
}
static Arrange_To_Call_Me vSf_BFu0i_B(Test_Sf_BFu0i_B, "Sf_BFu0i_B", ABISELECT(5,5));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_BFu0ll_B {
::empty v1;
__tsu64 :0;
bool v2;
};
//SIG(1 Sf_BFu0ll_B) C1{ FC2{} FL:0 Fc}
static void Test_Sf_BFu0ll_B()
{
{
init_simple_test("Sf_BFu0ll_B");
static Sf_BFu0ll_B lv;
check2(sizeof(lv), ABISELECT(9,5), "sizeof(Sf_BFu0ll_B)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(Sf_BFu0ll_B)");
check_field_offset(lv, v1, 0, "Sf_BFu0ll_B.v1");
check_field_offset(lv, v2, ABISELECT(8,4), "Sf_BFu0ll_B.v2");
}
}
static Arrange_To_Call_Me vSf_BFu0ll_B(Test_Sf_BFu0ll_B, "Sf_BFu0ll_B", ABISELECT(9,5));
#else // __cplusplus
#endif // __cplusplus
//============================================================================
#ifdef __cplusplus
struct Sf_BFu0s_B {
::empty v1;
unsigned short :0;
bool v2;
};
//SIG(1 Sf_BFu0s_B) C1{ FC2{} Fs:0 Fc}
static void Test_Sf_BFu0s_B()
{
{
init_simple_test("Sf_BFu0s_B");
static Sf_BFu0s_B lv;
check2(sizeof(lv), ABISELECT(3,3), "sizeof(Sf_BFu0s_B)");
check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(Sf_BFu0s_B)");
check_field_offset(lv, v1, 0, "Sf_BFu0s_B.v1");
check_field_offset(lv, v2, 2, "Sf_BFu0s_B.v2");
}
}
static Arrange_To_Call_Me vSf_BFu0s_B(Test_Sf_BFu0s_B, "Sf_BFu0s_B", ABISELECT(3,3));
#else // __cplusplus
#endif // __cplusplus
//============================================================================