mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Fix on rethrow + macros.
This commit is contained in:
@@ -79,7 +79,6 @@ entry:
|
||||
%14 = load { ptr, i64 }, ptr %result, align 8
|
||||
ret { ptr, i64 } %14
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define void @test.main() #0 {
|
||||
entry:
|
||||
@@ -128,6 +127,9 @@ entry:
|
||||
%retparam53 = alloca i64, align 8
|
||||
%varargslots54 = alloca [1 x %any], align 16
|
||||
%result55 = alloca %"int[]", align 8
|
||||
%allocator58 = alloca ptr, align 8
|
||||
%mark59 = alloca i64, align 8
|
||||
%retparam60 = alloca ptr, align 8
|
||||
call void @llvm.memset.p0.i64(ptr align 8 %map, i8 0, i64 40, i1 false)
|
||||
%0 = load ptr, ptr @std.core.mem.thread_allocator, align 8
|
||||
call void @"std.collections.map$int$test.Foo$.HashMap.init"(ptr %map, i32 16, float 7.500000e-01, ptr %0)
|
||||
@@ -171,7 +173,6 @@ entry:
|
||||
%not_err = icmp eq i64 %26, 0
|
||||
%27 = call i1 @llvm.expect.i1(i1 %not_err, i1 true)
|
||||
br i1 %27, label %after_check, label %after_check12
|
||||
|
||||
after_check: ; preds = %entry
|
||||
%28 = getelementptr inbounds %Foo, ptr %retparam10, i32 0, i32 0
|
||||
%29 = insertvalue %any undef, ptr %28, 0
|
||||
@@ -182,7 +183,6 @@ after_check: ; preds = %entry
|
||||
%not_err11 = icmp eq i64 %32, 0
|
||||
%33 = call i1 @llvm.expect.i1(i1 %not_err11, i1 true)
|
||||
br i1 %33, label %after_check12, label %after_check12
|
||||
|
||||
after_check12: ; preds = %entry, %after_check, %after_check
|
||||
%34 = call i8 @"std.collections.map$int$test.Foo$.HashMap.has_key"(ptr %map, i32 1)
|
||||
store i8 %34, ptr %taddr, align 1
|
||||
@@ -253,22 +253,18 @@ after_check12: ; preds = %entry, %after_check
|
||||
%80 = load ptr, ptr @std.core.mem.thread_temp_allocator, align 8
|
||||
%not = icmp eq ptr %80, null
|
||||
br i1 %not, label %if.then, label %if.exit
|
||||
|
||||
if.then: ; preds = %after_check12
|
||||
%81 = load ptr, ptr @std.core.mem.thread_allocator, align 8
|
||||
%82 = call i64 @std.core.mem.allocator.new_temp(ptr %retparam49, i64 262144, ptr %81)
|
||||
%not_err50 = icmp eq i64 %82, 0
|
||||
%83 = call i1 @llvm.expect.i1(i1 %not_err50, i1 true)
|
||||
br i1 %83, label %after_check51, label %assign_optional
|
||||
|
||||
assign_optional: ; preds = %if.then
|
||||
store i64 %82, ptr %error_var, align 8
|
||||
br label %panic_block
|
||||
|
||||
after_check51: ; preds = %if.then
|
||||
%84 = load ptr, ptr %retparam49, align 8
|
||||
br label %noerr_block
|
||||
|
||||
panic_block: ; preds = %assign_optional
|
||||
%85 = insertvalue %any undef, ptr %error_var, 0
|
||||
%86 = insertvalue %any %85, i64 ptrtoint (ptr @"$ct.anyfault" to i64), 1
|
||||
@@ -279,11 +275,9 @@ panic_block: ; preds = %assign_optional
|
||||
store %"any[]" %89, ptr %indirectarg, align 8
|
||||
call void @std.core.builtin.panicf(ptr @.panic_msg, i64 36, ptr @.file, i64 6, ptr @.func, i64 4, i32 399, ptr byval(%"any[]") align 8 %indirectarg)
|
||||
unreachable
|
||||
|
||||
noerr_block: ; preds = %after_check51
|
||||
store ptr %84, ptr @std.core.mem.thread_temp_allocator, align 8
|
||||
br label %if.exit
|
||||
|
||||
if.exit: ; preds = %noerr_block, %after_check12
|
||||
%90 = load ptr, ptr @std.core.mem.thread_temp_allocator, align 8
|
||||
store ptr %90, ptr %allocator, align 8
|
||||
@@ -306,25 +300,28 @@ if.exit: ; preds = %noerr_block, %after
|
||||
%102 = call i64 @std.io.printfn(ptr %retparam53, ptr @.str.11, i64 2, ptr %varargslots54, i64 1)
|
||||
%103 = load ptr, ptr %allocator, align 8
|
||||
%104 = getelementptr inbounds %TempAllocator, ptr %103, i32 0, i32 0
|
||||
store ptr %104, ptr %allocator58, align 8
|
||||
%105 = load i64, ptr %mark, align 8
|
||||
call void @std.core.mem.allocator.Allocator.reset(ptr %104, i64 %105)
|
||||
store i64 %105, ptr %mark59, align 8
|
||||
%106 = load ptr, ptr %allocator58, align 8
|
||||
%107 = getelementptr inbounds %Allocator, ptr %106, i32 0, i32 0
|
||||
%108 = load ptr, ptr %107, align 8
|
||||
%109 = load ptr, ptr %allocator58, align 8
|
||||
%110 = load i64, ptr %mark59, align 8
|
||||
%111 = call i64 %108(ptr %retparam60, ptr %109, i64 %110, i64 0, i64 0, ptr null, i32 8)
|
||||
ret void
|
||||
}
|
||||
|
||||
define internal void @.static_initialize.0() {
|
||||
entry:
|
||||
br label %dtable_check
|
||||
|
||||
dtable_check: ; preds = %dtable_next, %entry
|
||||
%dtable_ref = phi ptr [ getelementptr inbounds (%.introspect, ptr @"$ct.test.Foo", i32 0, i32 1), %entry ], [ %next_dtable_ref, %dtable_next ]
|
||||
%dtable_ptr = load ptr, ptr %dtable_ref, align 8
|
||||
%0 = icmp eq ptr %dtable_ptr, null
|
||||
br i1 %0, label %dtable_found, label %dtable_next
|
||||
|
||||
dtable_next: ; preds = %dtable_check
|
||||
%next_dtable_ref = getelementptr inbounds { ptr, ptr, ptr }, ptr %dtable_ptr, i32 0, i32 2
|
||||
br label %dtable_check
|
||||
|
||||
dtable_found: ; preds = %dtable_check
|
||||
store ptr @"$ct.dyn.test.Foo.to_string", ptr %dtable_ref, align 8
|
||||
ret void
|
||||
|
||||
Reference in New Issue
Block a user