Files
c3c/test/test_suite/union/union_codegen_overwrite_call.c3t
2021-05-27 08:30:02 +02:00

32 lines
465 B
Plaintext

module test;
union UnionB
{
struct b
{
int a;
}
int c;
double d;
}
extern func int bar();
func void test()
{
UnionB b = { .c = bar(), .b = {} };
}
// #expect: test.ll
entry:
%b = alloca %UnionB, align 8
%0 = bitcast %UnionB* %b to i32*
%1 = call i32 @bar()
store i32 %1, i32* %0, align 4
%2 = bitcast %UnionB* %b to %b*
%3 = bitcast %b* %2 to i8*
call void @llvm.memset.p0i8.i64(i8* align 4 %3, i8 0, i64 4, i1 false)
ret void