Files
c3c/test/test_suite/union/union_in_struct.c3t

46 lines
1.7 KiB
C

// #target: x64-darwin
module test;
struct Foo
{
char c;
union {
int a;
double b;
}
int z;
}
Foo foo1 = { .a = 3, .z = 4 };
Foo foo2 = { .b = 3, .z = 4 };
struct Blend_Map_Entry
{
union vals {
float[5] colour;
double[2] point_Slope;
}
}
Blend_Map_Entry a = { .vals = { .colour = { 1, 2, 3, 4, 5 } } };
Blend_Map_Entry b = { .vals = { .point_Slope = { 6, 7 } } };
Blend_Map_Entry c = { .vals.colour[2] = 1 };
Blend_Map_Entry d = { .vals.colour = { 1, 2, 3, 4, 5 } };
func void test(Blend_Map_Entry* foo)
{
}
// #expect: test.ll
%Blend_Map_Entry = type { %vals }
%vals = type { [2 x double], [8 x i8] }
@test.foo1 = global { i8, [4 x i8], { i32, [4 x i8] }, i32 } { i8 0, [4 x i8] undef, { i32, [4 x i8] } { i32 3, [4 x i8] undef }, i32 4 }, align 8
@test.foo2 = global %Foo { i8 0, %anon { double 3.000000e+00 }, i32 4 }, align 8
@test.a = global { { [5 x float], [4 x i8] } } { { [5 x float], [4 x i8] } { [5 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 5.000000e+00], [4 x i8] undef } }, align 8
@test.b = global %Blend_Map_Entry { %vals { [2 x double] [double 6.000000e+00, double 7.000000e+00], [8 x i8] undef } }, align 8
@test.c = global { { { [2 x float], float, [2 x float] }, [4 x i8] } } { { { [2 x float], float, [2 x float] }, [4 x i8] } { { [2 x float], float, [2 x float] } { [2 x float] zeroinitializer, float 1.000000e+00, [2 x float] zeroinitializer }, [4 x i8] undef } }, align 8
@test.d = global { { [5 x float], [4 x i8] } } { { [5 x float], [4 x i8] } { [5 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 5.000000e+00], [4 x i8] undef } }, align 8