mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
34 lines
616 B
C
34 lines
616 B
C
// #target: macos-x64
|
|
module foo;
|
|
|
|
struct Bar
|
|
{
|
|
struct
|
|
{
|
|
int y;
|
|
}
|
|
int ufe;
|
|
int[*] z;
|
|
}
|
|
|
|
|
|
fn void test(Bar b)
|
|
{
|
|
b.z[1];
|
|
}
|
|
|
|
/* #expect: foo.ll
|
|
|
|
%Bar = type { %anon, i32, [0 x i32] }
|
|
%anon = type { i32 }
|
|
|
|
define void @foo.test(%Bar* byval(%Bar) align 8 %0) #0 {
|
|
entry:
|
|
%b = alloca %Bar, align 4
|
|
%1 = bitcast %Bar* %b to i8*
|
|
%2 = bitcast %Bar* %0 to i8*
|
|
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %1, i8* align 8 %2, i32 8, i1 false)
|
|
%3 = getelementptr inbounds %Bar, %Bar* %b, i32 0, i32 2
|
|
%4 = getelementptr inbounds [0 x i32], [0 x i32]* %3, i64 0, i64 1
|
|
ret void
|
|
}
|