mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
0.5.3: Single-module not respected. Fix issue with compiler defined types. Fix optimization levels for projects. Use GEP i8 on offsets. Optimize foreach on len 1 arrays. Move panic blocks last. Fix generic module wildcard imports. Deprecate init_temp / init_new. Fix issue with macro vaarg and untyped lists. Fix extern const globals.
This commit is contained in:
committed by
Christoffer Lerno
parent
e91f6e268e
commit
deb4cc7c4b
@@ -100,77 +100,74 @@ phi_block5: ; preds = %phi_block, %after_c
|
||||
store i32 %val6, ptr %taddr, align 4
|
||||
%6 = insertvalue %"any*" undef, ptr %taddr, 0
|
||||
%7 = insertvalue %"any*" %6, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
%8 = getelementptr inbounds [1 x %"any*"], ptr %varargslots, i64 0, i64 0
|
||||
store %"any*" %7, ptr %8, align 16
|
||||
%9 = call i64 @std.io.printfn(ptr %retparam7, ptr @.str, i64 4, ptr %varargslots, i64 1)
|
||||
%10 = call i64 @test.get_a(ptr %retparam11, i32 2)
|
||||
%not_err12 = icmp eq i64 %10, 0
|
||||
%11 = call i1 @llvm.expect.i1(i1 %not_err12, i1 true)
|
||||
br i1 %11, label %after_check13, label %else_block14
|
||||
store %"any*" %7, ptr %varargslots, align 16
|
||||
%8 = call i64 @std.io.printfn(ptr %retparam7, ptr @.str, i64 4, ptr %varargslots, i64 1)
|
||||
%9 = call i64 @test.get_a(ptr %retparam11, i32 2)
|
||||
%not_err12 = icmp eq i64 %9, 0
|
||||
%10 = call i1 @llvm.expect.i1(i1 %not_err12, i1 true)
|
||||
br i1 %10, label %after_check13, label %else_block14
|
||||
|
||||
after_check13: ; preds = %phi_block5
|
||||
%12 = load i32, ptr %retparam11, align 4
|
||||
%11 = load i32, ptr %retparam11, align 4
|
||||
br label %phi_block21
|
||||
|
||||
else_block14: ; preds = %phi_block5
|
||||
%13 = call i64 @test.get_b(ptr %retparam15, i32 4)
|
||||
%not_err16 = icmp eq i64 %13, 0
|
||||
%14 = call i1 @llvm.expect.i1(i1 %not_err16, i1 true)
|
||||
br i1 %14, label %after_check17, label %else_block18
|
||||
%12 = call i64 @test.get_b(ptr %retparam15, i32 4)
|
||||
%not_err16 = icmp eq i64 %12, 0
|
||||
%13 = call i1 @llvm.expect.i1(i1 %not_err16, i1 true)
|
||||
br i1 %13, label %after_check17, label %else_block18
|
||||
|
||||
after_check17: ; preds = %else_block14
|
||||
%15 = load i32, ptr %retparam15, align 4
|
||||
%14 = load i32, ptr %retparam15, align 4
|
||||
br label %phi_block19
|
||||
|
||||
else_block18: ; preds = %else_block14
|
||||
br label %phi_block19
|
||||
|
||||
phi_block19: ; preds = %else_block18, %after_check17
|
||||
%val20 = phi i32 [ %15, %after_check17 ], [ -1, %else_block18 ]
|
||||
%val20 = phi i32 [ %14, %after_check17 ], [ -1, %else_block18 ]
|
||||
br label %phi_block21
|
||||
|
||||
phi_block21: ; preds = %phi_block19, %after_check13
|
||||
%val22 = phi i32 [ %12, %after_check13 ], [ %val20, %phi_block19 ]
|
||||
%val22 = phi i32 [ %11, %after_check13 ], [ %val20, %phi_block19 ]
|
||||
store i32 %val22, ptr %taddr23, align 4
|
||||
%16 = insertvalue %"any*" undef, ptr %taddr23, 0
|
||||
%17 = insertvalue %"any*" %16, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
%18 = getelementptr inbounds [1 x %"any*"], ptr %varargslots10, i64 0, i64 0
|
||||
store %"any*" %17, ptr %18, align 16
|
||||
%19 = call i64 @std.io.printfn(ptr %retparam24, ptr @.str.2, i64 4, ptr %varargslots10, i64 1)
|
||||
%20 = call i64 @test.get_a(ptr %retparam28, i32 1)
|
||||
%not_err29 = icmp eq i64 %20, 0
|
||||
%21 = call i1 @llvm.expect.i1(i1 %not_err29, i1 true)
|
||||
br i1 %21, label %after_check30, label %else_block31
|
||||
%15 = insertvalue %"any*" undef, ptr %taddr23, 0
|
||||
%16 = insertvalue %"any*" %15, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
store %"any*" %16, ptr %varargslots10, align 16
|
||||
%17 = call i64 @std.io.printfn(ptr %retparam24, ptr @.str.2, i64 4, ptr %varargslots10, i64 1)
|
||||
%18 = call i64 @test.get_a(ptr %retparam28, i32 1)
|
||||
%not_err29 = icmp eq i64 %18, 0
|
||||
%19 = call i1 @llvm.expect.i1(i1 %not_err29, i1 true)
|
||||
br i1 %19, label %after_check30, label %else_block31
|
||||
|
||||
after_check30: ; preds = %phi_block21
|
||||
%22 = load i32, ptr %retparam28, align 4
|
||||
%20 = load i32, ptr %retparam28, align 4
|
||||
br label %phi_block38
|
||||
|
||||
else_block31: ; preds = %phi_block21
|
||||
%23 = call i64 @test.get_b(ptr %retparam32, i32 5)
|
||||
%not_err33 = icmp eq i64 %23, 0
|
||||
%24 = call i1 @llvm.expect.i1(i1 %not_err33, i1 true)
|
||||
br i1 %24, label %after_check34, label %else_block35
|
||||
%21 = call i64 @test.get_b(ptr %retparam32, i32 5)
|
||||
%not_err33 = icmp eq i64 %21, 0
|
||||
%22 = call i1 @llvm.expect.i1(i1 %not_err33, i1 true)
|
||||
br i1 %22, label %after_check34, label %else_block35
|
||||
|
||||
after_check34: ; preds = %else_block31
|
||||
%25 = load i32, ptr %retparam32, align 4
|
||||
%23 = load i32, ptr %retparam32, align 4
|
||||
br label %phi_block36
|
||||
|
||||
else_block35: ; preds = %else_block31
|
||||
br label %phi_block36
|
||||
|
||||
phi_block36: ; preds = %else_block35, %after_check34
|
||||
%val37 = phi i32 [ %25, %after_check34 ], [ -1, %else_block35 ]
|
||||
%val37 = phi i32 [ %23, %after_check34 ], [ -1, %else_block35 ]
|
||||
br label %phi_block38
|
||||
|
||||
phi_block38: ; preds = %phi_block36, %after_check30
|
||||
%val39 = phi i32 [ %22, %after_check30 ], [ %val37, %phi_block36 ]
|
||||
%val39 = phi i32 [ %20, %after_check30 ], [ %val37, %phi_block36 ]
|
||||
store i32 %val39, ptr %taddr40, align 4
|
||||
%26 = insertvalue %"any*" undef, ptr %taddr40, 0
|
||||
%27 = insertvalue %"any*" %26, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
%28 = getelementptr inbounds [1 x %"any*"], ptr %varargslots27, i64 0, i64 0
|
||||
store %"any*" %27, ptr %28, align 16
|
||||
%29 = call i64 @std.io.printfn(ptr %retparam41, ptr @.str.3, i64 4, ptr %varargslots27, i64 1)
|
||||
%24 = insertvalue %"any*" undef, ptr %taddr40, 0
|
||||
%25 = insertvalue %"any*" %24, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
store %"any*" %25, ptr %varargslots27, align 16
|
||||
%26 = call i64 @std.io.printfn(ptr %retparam41, ptr @.str.3, i64 4, ptr %varargslots27, i64 1)
|
||||
br label %testblock
|
||||
|
||||
testblock: ; preds = %phi_block38
|
||||
@@ -178,13 +175,13 @@ testblock: ; preds = %phi_block38
|
||||
br label %end_block
|
||||
|
||||
end_block: ; preds = %testblock
|
||||
%30 = load i64, ptr %f, align 8
|
||||
%neq = icmp ne i64 %30, 0
|
||||
%27 = load i64, ptr %f, align 8
|
||||
%neq = icmp ne i64 %27, 0
|
||||
br i1 %neq, label %if.then, label %if.exit
|
||||
|
||||
if.then: ; preds = %end_block
|
||||
%31 = load i64, ptr %f, align 8
|
||||
store i64 %31, ptr %blockret, align 8
|
||||
%28 = load i64, ptr %f, align 8
|
||||
store i64 %28, ptr %blockret, align 8
|
||||
br label %expr_block.exit
|
||||
|
||||
if.exit: ; preds = %end_block
|
||||
@@ -192,17 +189,15 @@ if.exit: ; preds = %end_block
|
||||
br label %expr_block.exit
|
||||
|
||||
expr_block.exit: ; preds = %if.exit, %if.then
|
||||
%32 = insertvalue %"any*" undef, ptr %blockret, 0
|
||||
%33 = insertvalue %"any*" %32, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
%34 = getelementptr inbounds [1 x %"any*"], ptr %varargslots44, i64 0, i64 0
|
||||
store %"any*" %33, ptr %34, align 16
|
||||
%35 = call i64 @std.io.printfn(ptr %retparam45, ptr @.str.4, i64 4, ptr %varargslots44, i64 1)
|
||||
%29 = insertvalue %"any*" undef, ptr %blockret, 0
|
||||
%30 = insertvalue %"any*" %29, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
store %"any*" %30, ptr %varargslots44, align 16
|
||||
%31 = call i64 @std.io.printfn(ptr %retparam45, ptr @.str.4, i64 4, ptr %varargslots44, i64 1)
|
||||
store i32 3, ptr %taddr49, align 4
|
||||
%36 = insertvalue %"any*" undef, ptr %taddr49, 0
|
||||
%37 = insertvalue %"any*" %36, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
%38 = getelementptr inbounds [1 x %"any*"], ptr %varargslots48, i64 0, i64 0
|
||||
store %"any*" %37, ptr %38, align 16
|
||||
%39 = call i64 @std.io.printfn(ptr %retparam50, ptr @.str.5, i64 4, ptr %varargslots48, i64 1)
|
||||
%32 = insertvalue %"any*" undef, ptr %taddr49, 0
|
||||
%33 = insertvalue %"any*" %32, i64 ptrtoint (ptr @"$ct.int" to i64), 1
|
||||
store %"any*" %33, ptr %varargslots48, align 16
|
||||
%34 = call i64 @std.io.printfn(ptr %retparam50, ptr @.str.5, i64 4, ptr %varargslots48, i64 1)
|
||||
br label %testblock56
|
||||
|
||||
testblock56: ; preds = %expr_block.exit
|
||||
@@ -210,13 +205,13 @@ testblock56: ; preds = %expr_block.exit
|
||||
br label %end_block57
|
||||
|
||||
end_block57: ; preds = %testblock56
|
||||
%40 = load i64, ptr %f55, align 8
|
||||
%neq58 = icmp ne i64 %40, 0
|
||||
%35 = load i64, ptr %f55, align 8
|
||||
%neq58 = icmp ne i64 %35, 0
|
||||
br i1 %neq58, label %if.then59, label %if.exit60
|
||||
|
||||
if.then59: ; preds = %end_block57
|
||||
%41 = load i64, ptr %f55, align 8
|
||||
store i64 %41, ptr %blockret54, align 8
|
||||
%36 = load i64, ptr %f55, align 8
|
||||
store i64 %36, ptr %blockret54, align 8
|
||||
br label %expr_block.exit61
|
||||
|
||||
if.exit60: ; preds = %end_block57
|
||||
@@ -224,11 +219,10 @@ if.exit60: ; preds = %end_block57
|
||||
br label %expr_block.exit61
|
||||
|
||||
expr_block.exit61: ; preds = %if.exit60, %if.then59
|
||||
%42 = insertvalue %"any*" undef, ptr %blockret54, 0
|
||||
%43 = insertvalue %"any*" %42, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
%44 = getelementptr inbounds [1 x %"any*"], ptr %varargslots53, i64 0, i64 0
|
||||
store %"any*" %43, ptr %44, align 16
|
||||
%45 = call i64 @std.io.printfn(ptr %retparam62, ptr @.str.6, i64 4, ptr %varargslots53, i64 1)
|
||||
%37 = insertvalue %"any*" undef, ptr %blockret54, 0
|
||||
%38 = insertvalue %"any*" %37, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
store %"any*" %38, ptr %varargslots53, align 16
|
||||
%39 = call i64 @std.io.printfn(ptr %retparam62, ptr @.str.6, i64 4, ptr %varargslots53, i64 1)
|
||||
br label %testblock68
|
||||
|
||||
testblock68: ; preds = %expr_block.exit61
|
||||
@@ -239,13 +233,13 @@ phi_block70: ; preds = %testblock68
|
||||
br label %end_block71
|
||||
|
||||
end_block71: ; preds = %phi_block70
|
||||
%46 = load i64, ptr %f67, align 8
|
||||
%neq72 = icmp ne i64 %46, 0
|
||||
%40 = load i64, ptr %f67, align 8
|
||||
%neq72 = icmp ne i64 %40, 0
|
||||
br i1 %neq72, label %if.then73, label %if.exit74
|
||||
|
||||
if.then73: ; preds = %end_block71
|
||||
%47 = load i64, ptr %f67, align 8
|
||||
store i64 %47, ptr %blockret66, align 8
|
||||
%41 = load i64, ptr %f67, align 8
|
||||
store i64 %41, ptr %blockret66, align 8
|
||||
br label %expr_block.exit75
|
||||
|
||||
if.exit74: ; preds = %end_block71
|
||||
@@ -253,22 +247,20 @@ if.exit74: ; preds = %end_block71
|
||||
br label %expr_block.exit75
|
||||
|
||||
expr_block.exit75: ; preds = %if.exit74, %if.then73
|
||||
%48 = insertvalue %"any*" undef, ptr %blockret66, 0
|
||||
%49 = insertvalue %"any*" %48, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
%50 = getelementptr inbounds [1 x %"any*"], ptr %varargslots65, i64 0, i64 0
|
||||
store %"any*" %49, ptr %50, align 16
|
||||
%51 = call i64 @std.io.printfn(ptr %retparam76, ptr @.str.7, i64 4, ptr %varargslots65, i64 1)
|
||||
%42 = insertvalue %"any*" undef, ptr %blockret66, 0
|
||||
%43 = insertvalue %"any*" %42, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
store %"any*" %43, ptr %varargslots65, align 16
|
||||
%44 = call i64 @std.io.printfn(ptr %retparam76, ptr @.str.7, i64 4, ptr %varargslots65, i64 1)
|
||||
store i64 3, ptr %x, align 8
|
||||
%52 = insertvalue %"any*" undef, ptr %x, 0
|
||||
%53 = insertvalue %"any*" %52, i64 ptrtoint (ptr @"$ct.long" to i64), 1
|
||||
%54 = getelementptr inbounds [1 x %"any*"], ptr %varargslots79, i64 0, i64 0
|
||||
store %"any*" %53, ptr %54, align 16
|
||||
%55 = call i64 @std.io.printfn(ptr %retparam80, ptr @.str.8, i64 4, ptr %varargslots79, i64 1)
|
||||
%45 = insertvalue %"any*" undef, ptr %x, 0
|
||||
%46 = insertvalue %"any*" %45, i64 ptrtoint (ptr @"$ct.long" to i64), 1
|
||||
store %"any*" %46, ptr %varargslots79, align 16
|
||||
%47 = call i64 @std.io.printfn(ptr %retparam80, ptr @.str.8, i64 4, ptr %varargslots79, i64 1)
|
||||
store i64 ptrtoint (ptr @"test.Foo$DEF" to i64), ptr %xy.f, align 8
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
; Function Attrs:
|
||||
define i64 @test.get_a(ptr %0, i32 %1) #0 {
|
||||
entry:
|
||||
%reterr = alloca i64, align 8
|
||||
@@ -285,7 +277,7 @@ if.exit: ; preds = %entry
|
||||
ret i64 0
|
||||
}
|
||||
|
||||
|
||||
; Function Attrs:
|
||||
define i64 @test.get_b(ptr %0, i32 %1) #0 {
|
||||
entry:
|
||||
%reterr = alloca i64, align 8
|
||||
|
||||
Reference in New Issue
Block a user