mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Separate const slice. Fix #1489. Fix const slice appending. Remove unintended print of char[] as String. Support const conversion of array -> slice.
This commit is contained in:
committed by
Christoffer Lerno
parent
7f66d5992f
commit
02e9bfaf31
@@ -18,13 +18,14 @@ fn void main()
|
||||
}
|
||||
/* #expect: test.ll
|
||||
|
||||
%Abc = type { i32, i32 }
|
||||
%Bcd = type { %Abc, i32 }
|
||||
@.__const = private unnamed_addr constant %Abc { i32 123, i32 333 }, align 4
|
||||
%Abc = type { i32, i32 }
|
||||
|
||||
%z = alloca %Bcd, align 4
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %z, ptr align 4 @.__const, i32 8, i1 false)
|
||||
%ptradd = getelementptr inbounds i8, ptr %z, i64 8
|
||||
store i32 0, ptr %ptradd, align 4
|
||||
store i32 123, ptr %z, align 4
|
||||
%ptradd = getelementptr inbounds i8, ptr %z, i64 4
|
||||
store i32 333, ptr %ptradd, align 4
|
||||
%ptradd1 = getelementptr inbounds i8, ptr %z, i64 8
|
||||
store i32 0, ptr %ptradd1, align 4
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -67,25 +67,25 @@ entry:
|
||||
%x = alloca %Matrix3x3, align 4
|
||||
%m = alloca %Matrix2x2, align 4
|
||||
%m2 = alloca %Matrix2x2_b, align 4
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %x, ptr align 4 @.__const, i32 4, i1 false)
|
||||
store float 1.000000e+00, ptr %x, align 4
|
||||
%ptradd = getelementptr inbounds i8, ptr %x, i64 4
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd, ptr align 4 @.__const.16, i32 4, i1 false)
|
||||
store float 2.000000e+00, ptr %ptradd, align 4
|
||||
%ptradd1 = getelementptr inbounds i8, ptr %x, i64 8
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd1, ptr align 4 @.__const.17, i32 4, i1 false)
|
||||
store float 3.000000e+00, ptr %ptradd1, align 4
|
||||
%ptradd2 = getelementptr inbounds i8, ptr %x, i64 12
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd2, ptr align 4 @.__const.18, i32 4, i1 false)
|
||||
store float 4.000000e+00, ptr %ptradd2, align 4
|
||||
%ptradd3 = getelementptr inbounds i8, ptr %x, i64 16
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd3, ptr align 4 @.__const.19, i32 4, i1 false)
|
||||
store float 5.000000e+00, ptr %ptradd3, align 4
|
||||
%ptradd4 = getelementptr inbounds i8, ptr %x, i64 20
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd4, ptr align 4 @.__const.20, i32 4, i1 false)
|
||||
store float 6.000000e+00, ptr %ptradd4, align 4
|
||||
%ptradd5 = getelementptr inbounds i8, ptr %x, i64 24
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd5, ptr align 4 @.__const.21, i32 4, i1 false)
|
||||
store float 7.000000e+00, ptr %ptradd5, align 4
|
||||
%ptradd6 = getelementptr inbounds i8, ptr %x, i64 28
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd6, ptr align 4 @.__const.22, i32 4, i1 false)
|
||||
store float 8.000000e+00, ptr %ptradd6, align 4
|
||||
%ptradd7 = getelementptr inbounds i8, ptr %x, i64 32
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %ptradd7, ptr align 4 @.__const.23, i32 4, i1 false)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %m, ptr align 4 @.__const.24, i32 16, i1 false)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %m2, ptr align 4 @.__const.25, i32 16, i1 false)
|
||||
store float 9.000000e+00, ptr %ptradd7, align 4
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %m, ptr align 4 @.__const, i32 16, i1 false)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %m2, ptr align 4 @.__const.16, i32 16, i1 false)
|
||||
%0 = load float, ptr %x, align 4
|
||||
%fpfpext = fpext float %0 to double
|
||||
%ptradd8 = getelementptr inbounds i8, ptr %x, i64 4
|
||||
|
||||
Reference in New Issue
Block a user