mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Fix to macro codegen.
This commit is contained in:
committed by
Christoffer Lerno
parent
4dcfb7a675
commit
5a2fe4c9d9
@@ -32,12 +32,14 @@ declare i32 @sum_us(ptr, i64) #0
|
||||
%4 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%5 = insertvalue %"int[]" %4, i64 3, 1
|
||||
store %"int[]" %5, ptr %z, align 8
|
||||
%6 = call i32 @sum_us(ptr %x, i64 3)
|
||||
%7 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 0
|
||||
%lo = load ptr, ptr %7, align 8
|
||||
%8 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 1
|
||||
%hi = load i64, ptr %8, align 8
|
||||
%9 = call i32 @sum_us(ptr %lo, i64 %hi)
|
||||
%10 = call i32 @sum_us(ptr null, i64 0)
|
||||
%6 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%7 = insertvalue %"int[]" %6, i64 3, 1
|
||||
%8 = call i32 @sum_us(ptr %x, i64 3)
|
||||
%9 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 0
|
||||
%lo = load ptr, ptr %9, align 8
|
||||
%10 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 1
|
||||
%hi = load i64, ptr %10, align 8
|
||||
%11 = call i32 @sum_us(ptr %lo, i64 %hi)
|
||||
%12 = call i32 @sum_us(ptr null, i64 0)
|
||||
ret void
|
||||
}
|
||||
@@ -35,23 +35,23 @@ entry:
|
||||
%2 = getelementptr inbounds [3 x i32], ptr %varargslots, i64 0, i64 2
|
||||
store i32 3, ptr %2, align 4
|
||||
%3 = insertvalue %"int[]" undef, ptr %varargslots, 0
|
||||
%4 = insertvalue %"int[]" %3, i64 3, 1
|
||||
store %"int[]" %4, ptr %taddr, align 8
|
||||
%5 = load [2 x i64], ptr %taddr, align 8
|
||||
%6 = call i32 @sum_us([2 x i64] %5)
|
||||
%"#temp#" = insertvalue %"int[]" %3, i64 3, 1
|
||||
store %"int[]" %"#temp#", ptr %taddr, align 8
|
||||
%4 = load [2 x i64], ptr %taddr, align 8
|
||||
%5 = call i32 @sum_us([2 x i64] %4)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %x, ptr align 4 @.__const, i32 12, i1 false)
|
||||
%7 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%8 = insertvalue %"int[]" %7, i64 3, 1
|
||||
store %"int[]" %8, ptr %z, align 8
|
||||
%9 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%10 = insertvalue %"int[]" %9, i64 3, 1
|
||||
store %"int[]" %10, ptr %taddr1, align 8
|
||||
%11 = load [2 x i64], ptr %taddr1, align 8
|
||||
%12 = call i32 @sum_us([2 x i64] %11)
|
||||
%13 = load [2 x i64], ptr %z, align 8
|
||||
%14 = call i32 @sum_us([2 x i64] %13)
|
||||
%6 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%7 = insertvalue %"int[]" %6, i64 3, 1
|
||||
store %"int[]" %7, ptr %z, align 8
|
||||
%8 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%9 = insertvalue %"int[]" %8, i64 3, 1
|
||||
store %"int[]" %9, ptr %taddr1, align 8
|
||||
%10 = load [2 x i64], ptr %taddr1, align 8
|
||||
%11 = call i32 @sum_us([2 x i64] %10)
|
||||
%12 = load [2 x i64], ptr %z, align 8
|
||||
%13 = call i32 @sum_us([2 x i64] %12)
|
||||
store %"int[]" zeroinitializer, ptr %taddr2, align 8
|
||||
%15 = load [2 x i64], ptr %taddr2, align 8
|
||||
%16 = call i32 @sum_us([2 x i64] %15)
|
||||
%14 = load [2 x i64], ptr %taddr2, align 8
|
||||
%15 = call i32 @sum_us([2 x i64] %14)
|
||||
ret void
|
||||
}
|
||||
|
||||
@@ -33,19 +33,19 @@ entry:
|
||||
%2 = getelementptr inbounds [3 x i32], ptr %varargslots, i64 0, i64 2
|
||||
store i32 3, ptr %2, align 4
|
||||
%3 = insertvalue %"int[]" undef, ptr %varargslots, 0
|
||||
%4 = insertvalue %"int[]" %3, i64 3, 1
|
||||
store %"int[]" %4, ptr %indirectarg, align 8
|
||||
%5 = call i32 @sum_us(ptr align 8 %indirectarg)
|
||||
%"#temp#" = insertvalue %"int[]" %3, i64 3, 1
|
||||
store %"int[]" %"#temp#", ptr %indirectarg, align 8
|
||||
%4 = call i32 @sum_us(ptr align 8 %indirectarg)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %x, ptr align 4 @.__const, i32 12, i1 false)
|
||||
%6 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%7 = insertvalue %"int[]" %6, i64 3, 1
|
||||
store %"int[]" %7, ptr %z, align 8
|
||||
%8 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%9 = insertvalue %"int[]" %8, i64 3, 1
|
||||
store %"int[]" %9, ptr %indirectarg1, align 8
|
||||
%10 = call i32 @sum_us(ptr align 8 %indirectarg1)
|
||||
%5 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%6 = insertvalue %"int[]" %5, i64 3, 1
|
||||
store %"int[]" %6, ptr %z, align 8
|
||||
%7 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%8 = insertvalue %"int[]" %7, i64 3, 1
|
||||
store %"int[]" %8, ptr %indirectarg1, align 8
|
||||
%9 = call i32 @sum_us(ptr align 8 %indirectarg1)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %indirectarg2, ptr align 8 %z, i32 16, i1 false)
|
||||
%11 = call i32 @sum_us(ptr align 8 %indirectarg2)
|
||||
%10 = call i32 @sum_us(ptr align 8 %indirectarg2)
|
||||
store %"int[]" zeroinitializer, ptr %indirectarg3, align 8
|
||||
%12 = call i32 @sum_us(ptr align 8 %indirectarg3)
|
||||
%11 = call i32 @sum_us(ptr align 8 %indirectarg3)
|
||||
ret void
|
||||
|
||||
@@ -355,12 +355,14 @@ if.exit: ; preds = %entry
|
||||
%11 = add i64 %sub, 1
|
||||
%size = sub i64 %11, 1
|
||||
%ptroffset2 = getelementptr inbounds i32, ptr %9, i64 1
|
||||
%12 = call i32 @test.sum_us(ptr %ptroffset2, i64 %size)
|
||||
%add = add i32 %7, %12
|
||||
%12 = insertvalue %"int[]" undef, ptr %ptroffset2, 0
|
||||
%13 = insertvalue %"int[]" %12, i64 %size, 1
|
||||
%14 = call i32 @test.sum_us(ptr %ptroffset2, i64 %size)
|
||||
%add = add i32 %7, %14
|
||||
%add3 = add i32 %4, %add
|
||||
store i32 %add3, ptr %sum, align 4
|
||||
%13 = load i32, ptr %sum, align 4
|
||||
ret i32 %13
|
||||
%15 = load i32, ptr %sum, align 4
|
||||
ret i32 %15
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
@@ -470,7 +472,7 @@ loop.exit: ; preds = %loop.cond
|
||||
|
||||
loop.cond2: ; preds = %loop.body5, %loop.exit
|
||||
%12 = load i32, ptr %i1, align 4
|
||||
%13 = call i64 @"std.collections.list$int$.List.len"(ptr %array)
|
||||
%13 = call i64 @"std.collections.list$int$.List.len"(ptr %array) #3
|
||||
%trunc3 = trunc i64 %13 to i32
|
||||
%lt4 = icmp slt i32 %12, %trunc3
|
||||
br i1 %lt4, label %loop.body5, label %loop.exit8
|
||||
@@ -479,7 +481,7 @@ loop.body5: ; preds = %loop.cond2
|
||||
%14 = load i32, ptr %i1, align 4
|
||||
%15 = load i32, ptr %i1, align 4
|
||||
%sext6 = sext i32 %15 to i64
|
||||
%16 = call i32 @"std.collections.list$int$.List.get"(ptr %array, i64 %sext6)
|
||||
%16 = call i32 @"std.collections.list$int$.List.get"(ptr %array, i64 %sext6) #3
|
||||
%17 = call i32 (ptr, ...) @printf(ptr @.str.5, i32 %14, i32 %16)
|
||||
%18 = load i32, ptr %i1, align 4
|
||||
%add7 = add i32 %18, 1
|
||||
@@ -508,40 +510,44 @@ loop.exit8: ; preds = %loop.cond2
|
||||
store i32 3, ptr %fro, align 4
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 16 %x, ptr align 16 @.__const.12, i32 16, i1 false)
|
||||
%31 = load i32, ptr %fro, align 4
|
||||
%32 = call i32 @test.sum_us(ptr %x, i64 4)
|
||||
%33 = call i32 (ptr, ...) @printf(ptr @.str.13, i32 %32)
|
||||
%add9 = add i32 %31, %33
|
||||
%32 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%33 = insertvalue %"int[]" %32, i64 4, 1
|
||||
%34 = call i32 @test.sum_us(ptr %x, i64 4)
|
||||
%35 = call i32 (ptr, ...) @printf(ptr @.str.13, i32 %34)
|
||||
%add9 = add i32 %31, %35
|
||||
store i32 %add9, ptr %fro, align 4
|
||||
%34 = load i32, ptr %fro, align 4
|
||||
%35 = call i32 (ptr, ...) @printf(ptr @.str.14, i32 %34)
|
||||
%36 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%37 = insertvalue %"int[]" %36, i64 4, 1
|
||||
store %"int[]" %37, ptr %z, align 8
|
||||
%36 = load i32, ptr %fro, align 4
|
||||
%37 = call i32 (ptr, ...) @printf(ptr @.str.14, i32 %36)
|
||||
%38 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%39 = insertvalue %"int[]" %38, i64 4, 1
|
||||
store %"int[]" %39, ptr %z, align 8
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %de, ptr align 4 @.__const.15, i32 12, i1 false)
|
||||
%38 = call i32 @test.sum_us(ptr %x, i64 4)
|
||||
%39 = call i32 (ptr, ...) @printf(ptr @.str.16, i32 %38)
|
||||
%40 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 0
|
||||
%lo = load ptr, ptr %40, align 8
|
||||
%41 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 1
|
||||
%hi = load i64, ptr %41, align 8
|
||||
%42 = call i32 @test.sum_us(ptr %lo, i64 %hi)
|
||||
%43 = call i32 (ptr, ...) @printf(ptr @.str.17, i32 %42)
|
||||
%44 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 0
|
||||
store i32 1, ptr %44, align 4
|
||||
%45 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 1
|
||||
store i32 2, ptr %45, align 4
|
||||
%46 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 2
|
||||
store i32 4, ptr %46, align 4
|
||||
%47 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 3
|
||||
store i32 5, ptr %47, align 4
|
||||
%48 = call i32 @test.sum_us(ptr %varargslots, i64 4)
|
||||
%49 = call i32 (ptr, ...) @printf(ptr @.str.18, i32 %48)
|
||||
%50 = getelementptr inbounds [1 x i32], ptr %varargslots10, i64 0, i64 0
|
||||
store i32 1, ptr %50, align 4
|
||||
%51 = call i32 @test.sum_us(ptr %varargslots10, i64 1)
|
||||
%52 = call i32 (ptr, ...) @printf(ptr @.str.19, i32 %51)
|
||||
%53 = call i32 @test.sum_us(ptr null, i64 0)
|
||||
%54 = call i32 (ptr, ...) @printf(ptr @.str.20, i32 %53)
|
||||
%40 = insertvalue %"int[]" undef, ptr %x, 0
|
||||
%41 = insertvalue %"int[]" %40, i64 4, 1
|
||||
%42 = call i32 @test.sum_us(ptr %x, i64 4)
|
||||
%43 = call i32 (ptr, ...) @printf(ptr @.str.16, i32 %42)
|
||||
%44 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 0
|
||||
%lo = load ptr, ptr %44, align 8
|
||||
%45 = getelementptr inbounds %"int[]", ptr %z, i32 0, i32 1
|
||||
%hi = load i64, ptr %45, align 8
|
||||
%46 = call i32 @test.sum_us(ptr %lo, i64 %hi)
|
||||
%47 = call i32 (ptr, ...) @printf(ptr @.str.17, i32 %46)
|
||||
%48 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 0
|
||||
store i32 1, ptr %48, align 4
|
||||
%49 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 1
|
||||
store i32 2, ptr %49, align 4
|
||||
%50 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 2
|
||||
store i32 4, ptr %50, align 4
|
||||
%51 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 3
|
||||
store i32 5, ptr %51, align 4
|
||||
%52 = call i32 @test.sum_us(ptr %varargslots, i64 4)
|
||||
%53 = call i32 (ptr, ...) @printf(ptr @.str.18, i32 %52)
|
||||
%54 = getelementptr inbounds [1 x i32], ptr %varargslots10, i64 0, i64 0
|
||||
store i32 1, ptr %54, align 4
|
||||
%55 = call i32 @test.sum_us(ptr %varargslots10, i64 1)
|
||||
%56 = call i32 (ptr, ...) @printf(ptr @.str.19, i32 %55)
|
||||
%57 = call i32 @test.sum_us(ptr null, i64 0)
|
||||
%58 = call i32 (ptr, ...) @printf(ptr @.str.20, i32 %57)
|
||||
store ptr null, ptr %a1, align 8
|
||||
store ptr null, ptr %b2, align 8
|
||||
ret void
|
||||
|
||||
@@ -244,13 +244,21 @@ fn Type getValue(Blob blob)
|
||||
%LinkedList = type { ptr, i64, ptr, ptr }
|
||||
%List = type { i64, i64, ptr, ptr }
|
||||
%Foo = type { i32, i32 }
|
||||
|
||||
$"$ct.test.Bobo" = comdat any
|
||||
|
||||
$"$ct.test.Blob" = comdat any
|
||||
|
||||
$"$ct.test.Foor" = comdat any
|
||||
|
||||
$"$ct.test.Foo2" = comdat any
|
||||
|
||||
$"$ct.test.Foo" = comdat any
|
||||
|
||||
$"$ct.int" = comdat any
|
||||
|
||||
$"$ct.test.MyEnum" = comdat any
|
||||
|
||||
@"$ct.test.Bobo" = linkonce global %.introspect { i8 10, ptr null, i64 20, i64 0, i64 6, [0 x i64] zeroinitializer }, comdat, align 8
|
||||
@"$ct.test.Blob" = linkonce global %.introspect { i8 10, ptr null, i64 8, i64 0, i64 2, [0 x i64] zeroinitializer }, comdat, align 8
|
||||
@"$ct.test.Foor" = linkonce global %.introspect { i8 11, ptr null, i64 16, i64 0, i64 2, [0 x i64] zeroinitializer }, comdat, align 8
|
||||
@@ -283,6 +291,7 @@ $"$ct.test.MyEnum" = comdat any
|
||||
@.str.20 = private unnamed_addr constant [13 x i8] c"Vararg0: %d\0A\00", align 1
|
||||
@.str.21 = private unnamed_addr constant [12 x i8] c"Foo is: %d\0A\00", align 1
|
||||
@.str.22 = private unnamed_addr constant [9 x i8] c"Mutating\00", align 1
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define void @test.Foo2.printme(ptr %0) #0 {
|
||||
entry:
|
||||
@@ -291,6 +300,7 @@ entry:
|
||||
%3 = call i32 (ptr, ...) @printf(ptr @.str.21, i32 %2)
|
||||
ret void
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @test.Foo2.mutate(ptr %0) #0 {
|
||||
entry:
|
||||
@@ -301,14 +311,17 @@ entry:
|
||||
store i32 %add, ptr %2, align 4
|
||||
ret i32 %add
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @printf(ptr, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define void @test.helloWorld() #0 {
|
||||
entry:
|
||||
%0 = call i32 (ptr, ...) @printf(ptr @.str)
|
||||
ret void
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @test.test_static() #0 {
|
||||
entry:
|
||||
@@ -320,6 +333,7 @@ entry:
|
||||
%3 = load i32, ptr @test_static.x, align 4
|
||||
ret i32 %3
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @test.helo(double %0, ptr align 4 %1) #0 {
|
||||
entry:
|
||||
@@ -332,6 +346,7 @@ entry:
|
||||
%2 = call i32 @test.helo(double 1.000000e+00, ptr align 4 %indirectarg)
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @test.test1(i32 %0, i32 %1) #0 {
|
||||
entry:
|
||||
@@ -343,12 +358,15 @@ entry:
|
||||
store i32 %3, ptr %a, align 4
|
||||
%gt = icmp sgt i32 %1, 128
|
||||
br i1 %gt, label %if.then, label %if.exit
|
||||
|
||||
if.then: ; preds = %entry
|
||||
ret i32 -1
|
||||
|
||||
if.exit: ; preds = %entry
|
||||
%4 = load i32, ptr %a, align 4
|
||||
ret i32 %4
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @test.sum_us(ptr align 8 %0) #0 {
|
||||
entry:
|
||||
@@ -359,8 +377,10 @@ entry:
|
||||
%2 = load i64, ptr %1, align 8
|
||||
%eq = icmp eq i64 0, %2
|
||||
br i1 %eq, label %if.then, label %if.exit
|
||||
|
||||
if.then: ; preds = %entry
|
||||
ret i32 0
|
||||
|
||||
if.exit: ; preds = %entry
|
||||
%3 = load i32, ptr %sum, align 4
|
||||
%4 = getelementptr inbounds %"int[]", ptr %0, i32 0, i32 0
|
||||
@@ -384,6 +404,7 @@ if.exit: ; preds = %entry
|
||||
%14 = load i32, ptr %sum, align 4
|
||||
ret i32 %14
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @test.sumd(ptr align 8 %0) #0 {
|
||||
entry:
|
||||
@@ -392,6 +413,7 @@ entry:
|
||||
store i32 0, ptr %sum, align 4
|
||||
store i32 0, ptr %i, align 4
|
||||
br label %loop.cond
|
||||
|
||||
loop.cond: ; preds = %loop.body, %entry
|
||||
%1 = load i32, ptr %i, align 4
|
||||
%sext = sext i32 %1 to i64
|
||||
@@ -401,6 +423,7 @@ loop.cond: ; preds = %loop.body, %entry
|
||||
%check = icmp slt i64 %3, 0
|
||||
%siui-lt = or i1 %check, %lt
|
||||
br i1 %siui-lt, label %loop.body, label %loop.exit
|
||||
|
||||
loop.body: ; preds = %loop.cond
|
||||
%4 = load i32, ptr %sum, align 4
|
||||
%5 = getelementptr inbounds %"int[]", ptr %0, i32 0, i32 0
|
||||
@@ -415,10 +438,12 @@ loop.body: ; preds = %loop.cond
|
||||
%add2 = add i32 %9, 1
|
||||
store i32 %add2, ptr %i, align 4
|
||||
br label %loop.cond
|
||||
|
||||
loop.exit: ; preds = %loop.cond
|
||||
%10 = load i32, ptr %sum, align 4
|
||||
ret i32 %10
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define void @test.main() #0 {
|
||||
entry:
|
||||
@@ -440,8 +465,8 @@ entry:
|
||||
%varargslots = alloca [4 x i32], align 16
|
||||
%indirectarg12 = alloca %"int[]", align 8
|
||||
%varargslots13 = alloca [1 x i32], align 4
|
||||
%indirectarg14 = alloca %"int[]", align 8
|
||||
%indirectarg15 = alloca %"int[]", align 8
|
||||
%indirectarg16 = alloca %"int[]", align 8
|
||||
%a1 = alloca ptr, align 8
|
||||
%b2 = alloca ptr, align 8
|
||||
%0 = call i32 @test.test_static()
|
||||
@@ -454,12 +479,14 @@ entry:
|
||||
call void @"std.collections.linkedlist$int$.LinkedList.push"(ptr %list, i32 30)
|
||||
store i32 0, ptr %i, align 4
|
||||
br label %loop.cond
|
||||
|
||||
loop.cond: ; preds = %loop.body, %entry
|
||||
%3 = load i32, ptr %i, align 4
|
||||
%4 = call i64 @"std.collections.linkedlist$int$.LinkedList.len"(ptr %list) #3
|
||||
%trunc = trunc i64 %4 to i32
|
||||
%lt = icmp slt i32 %3, %trunc
|
||||
br i1 %lt, label %loop.body, label %loop.exit
|
||||
|
||||
loop.body: ; preds = %loop.cond
|
||||
%5 = load i32, ptr %i, align 4
|
||||
%6 = load i32, ptr %i, align 4
|
||||
@@ -470,6 +497,7 @@ loop.body: ; preds = %loop.cond
|
||||
%add = add i32 %9, 1
|
||||
store i32 %add, ptr %i, align 4
|
||||
br label %loop.cond
|
||||
|
||||
loop.exit: ; preds = %loop.cond
|
||||
call void @"std.collections.linkedlist$int$.LinkedList.free"(ptr %list)
|
||||
%10 = call i32 (ptr, ...) @printf(ptr @.str.3, i32 3)
|
||||
@@ -483,22 +511,25 @@ loop.exit: ; preds = %loop.cond
|
||||
call void @"std.collections.list$int$.List.insert_at"(ptr %array, i64 2, i32 300)
|
||||
store i32 0, ptr %i1, align 4
|
||||
br label %loop.cond2
|
||||
|
||||
loop.cond2: ; preds = %loop.body5, %loop.exit
|
||||
%12 = load i32, ptr %i1, align 4
|
||||
%13 = call i64 @"std.collections.list$int$.List.len"(ptr %array)
|
||||
%13 = call i64 @"std.collections.list$int$.List.len"(ptr %array) #3
|
||||
%trunc3 = trunc i64 %13 to i32
|
||||
%lt4 = icmp slt i32 %12, %trunc3
|
||||
br i1 %lt4, label %loop.body5, label %loop.exit8
|
||||
|
||||
loop.body5: ; preds = %loop.cond2
|
||||
%14 = load i32, ptr %i1, align 4
|
||||
%15 = load i32, ptr %i1, align 4
|
||||
%sext6 = sext i32 %15 to i64
|
||||
%16 = call i32 @"std.collections.list$int$.List.get"(ptr %array, i64 %sext6)
|
||||
%16 = call i32 @"std.collections.list$int$.List.get"(ptr %array, i64 %sext6) #3
|
||||
%17 = call i32 (ptr, ...) @printf(ptr @.str.5, i32 %14, i32 %16)
|
||||
%18 = load i32, ptr %i1, align 4
|
||||
%add7 = add i32 %18, 1
|
||||
store i32 %add7, ptr %i1, align 4
|
||||
br label %loop.cond2
|
||||
|
||||
loop.exit8: ; preds = %loop.cond2
|
||||
call void @"std.collections.list$int$.List.free"(ptr %array)
|
||||
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %a, ptr align 4 @.__const.6, i32 4, i1 false)
|
||||
@@ -551,20 +582,20 @@ loop.exit8: ; preds = %loop.cond2
|
||||
%49 = getelementptr inbounds [4 x i32], ptr %varargslots, i64 0, i64 3
|
||||
store i32 5, ptr %49, align 4
|
||||
%50 = insertvalue %"int[]" undef, ptr %varargslots, 0
|
||||
%51 = insertvalue %"int[]" %50, i64 4, 1
|
||||
store %"int[]" %51, ptr %indirectarg12, align 8
|
||||
%52 = call i32 @test.sum_us(ptr align 8 %indirectarg12)
|
||||
%53 = call i32 (ptr, ...) @printf(ptr @.str.18, i32 %52)
|
||||
%54 = getelementptr inbounds [1 x i32], ptr %varargslots13, i64 0, i64 0
|
||||
store i32 1, ptr %54, align 4
|
||||
%55 = insertvalue %"int[]" undef, ptr %varargslots13, 0
|
||||
%56 = insertvalue %"int[]" %55, i64 1, 1
|
||||
store %"int[]" %56, ptr %indirectarg14, align 8
|
||||
%57 = call i32 @test.sum_us(ptr align 8 %indirectarg14)
|
||||
%58 = call i32 (ptr, ...) @printf(ptr @.str.19, i32 %57)
|
||||
store %"int[]" zeroinitializer, ptr %indirectarg15, align 8
|
||||
%59 = call i32 @test.sum_us(ptr align 8 %indirectarg15)
|
||||
%60 = call i32 (ptr, ...) @printf(ptr @.str.20, i32 %59)
|
||||
%"#temp#" = insertvalue %"int[]" %50, i64 4, 1
|
||||
store %"int[]" %"#temp#", ptr %indirectarg12, align 8
|
||||
%51 = call i32 @test.sum_us(ptr align 8 %indirectarg12)
|
||||
%52 = call i32 (ptr, ...) @printf(ptr @.str.18, i32 %51)
|
||||
%53 = getelementptr inbounds [1 x i32], ptr %varargslots13, i64 0, i64 0
|
||||
store i32 1, ptr %53, align 4
|
||||
%54 = insertvalue %"int[]" undef, ptr %varargslots13, 0
|
||||
%"#temp#14" = insertvalue %"int[]" %54, i64 1, 1
|
||||
store %"int[]" %"#temp#14", ptr %indirectarg15, align 8
|
||||
%55 = call i32 @test.sum_us(ptr align 8 %indirectarg15)
|
||||
%56 = call i32 (ptr, ...) @printf(ptr @.str.19, i32 %55)
|
||||
store %"int[]" zeroinitializer, ptr %indirectarg16, align 8
|
||||
%57 = call i32 @test.sum_us(ptr align 8 %indirectarg16)
|
||||
%58 = call i32 (ptr, ...) @printf(ptr @.str.20, i32 %57)
|
||||
store ptr null, ptr %a1, align 8
|
||||
store ptr null, ptr %b2, align 8
|
||||
ret void
|
||||
|
||||
Reference in New Issue
Block a user