Make thread allocator take the thread allocator by default for allocating initial memory. Add some int128 methods. Fix attribute parsing.

This commit is contained in:
Christoffer Lerno
2023-02-01 01:10:17 +01:00
parent f916aa9189
commit 6a3219ad43
6 changed files with 135 additions and 39 deletions

View File

@@ -350,57 +350,58 @@ voiderr64: ; preds = %after_check63, %voi
br i1 %not, label %if.then, label %if.exit
if.then: ; preds = %voiderr64
%79 = call i64 @std_core_mem_allocator_new_temp(ptr %retparam65, i64 262144, ptr @std_core_mem_allocator__SYSTEM_ALLOCATOR)
%not_err66 = icmp eq i64 %79, 0
%79 = load ptr, ptr @std_core_mem_thread_allocator, align 8
%80 = call i64 @std_core_mem_allocator_new_temp(ptr %retparam65, i64 262144, ptr %79)
%not_err66 = icmp eq i64 %80, 0
br i1 %not_err66, label %after_check67, label %assign_optional
assign_optional: ; preds = %if.then
store i64 %79, ptr %error_var, align 8
store i64 %80, ptr %error_var, align 8
br label %panic_block
after_check67: ; preds = %if.then
%80 = load ptr, ptr %retparam65, align 8
%81 = load ptr, ptr %retparam65, align 8
br label %noerr_block
panic_block: ; preds = %assign_optional
%81 = load ptr, ptr @std_core_builtin_panic, align 8
call void %81(ptr @.panic_msg, i64 27, ptr @.file, i64 6, ptr @.func, i64 4, i32 280)
%82 = load ptr, ptr @std_core_builtin_panic, align 8
call void %82(ptr @.panic_msg, i64 27, ptr @.file, i64 6, ptr @.func, i64 4, i32 280)
unreachable
noerr_block: ; preds = %after_check67
store ptr %80, ptr @std_core_mem_thread_temp_allocator, align 8
store ptr %81, ptr @std_core_mem_thread_temp_allocator, align 8
br label %if.exit
if.exit: ; preds = %noerr_block, %voiderr64
%82 = load ptr, ptr @std_core_mem_thread_temp_allocator, align 8
store ptr %82, ptr %temp, align 8
%83 = load ptr, ptr %temp, align 8
%84 = getelementptr inbounds %TempAllocator, ptr %83, i32 0, i32 3
%85 = load i64, ptr %84, align 8
store i64 %85, ptr %mark, align 8
%83 = load ptr, ptr @std_core_mem_thread_temp_allocator, align 8
store ptr %83, ptr %temp, align 8
%84 = load ptr, ptr %temp, align 8
%85 = getelementptr inbounds %TempAllocator, ptr %84, i32 0, i32 3
%86 = load i64, ptr %85, align 8
store i64 %86, ptr %mark, align 8
call void @llvm.memset.p0.i64(ptr align 8 %map3, i8 0, i64 40, i1 false)
%86 = load ptr, ptr @std_core_mem_thread_allocator, align 8
call void @"std_map$$int.double_HashMap_init"(ptr %map3, i32 16, float 7.500000e-01, ptr %86)
%87 = call i8 @"std_map$$int.double_HashMap_set"(ptr %map3, i32 5, double 3.200000e+00)
%88 = call i8 @"std_map$$int.double_HashMap_set"(ptr %map3, i32 7, double 5.200000e+00)
%89 = load ptr, ptr @std_core_mem_thread_allocator, align 8
%90 = call { ptr, i64 } @"std_map$$int.double_HashMap_key_list"(ptr %map3, ptr %89)
store { ptr, i64 } %90, ptr %result70, align 8
%91 = insertvalue %variant undef, ptr %result70, 0
%92 = insertvalue %variant %91, i64 ptrtoint (ptr @"ct$sa$int" to i64), 1
%93 = getelementptr inbounds [1 x %variant], ptr %varargslots69, i64 0, i64 0
store %variant %92, ptr %93, align 16
%94 = call i64 @std_io_printfn(ptr %retparam68, ptr @.str.11, i64 2, ptr %varargslots69, i64 1)
%not_err71 = icmp eq i64 %94, 0
%87 = load ptr, ptr @std_core_mem_thread_allocator, align 8
call void @"std_map$$int.double_HashMap_init"(ptr %map3, i32 16, float 7.500000e-01, ptr %87)
%88 = call i8 @"std_map$$int.double_HashMap_set"(ptr %map3, i32 5, double 3.200000e+00)
%89 = call i8 @"std_map$$int.double_HashMap_set"(ptr %map3, i32 7, double 5.200000e+00)
%90 = load ptr, ptr @std_core_mem_thread_allocator, align 8
%91 = call { ptr, i64 } @"std_map$$int.double_HashMap_key_list"(ptr %map3, ptr %90)
store { ptr, i64 } %91, ptr %result70, align 8
%92 = insertvalue %variant undef, ptr %result70, 0
%93 = insertvalue %variant %92, i64 ptrtoint (ptr @"ct$sa$int" to i64), 1
%94 = getelementptr inbounds [1 x %variant], ptr %varargslots69, i64 0, i64 0
store %variant %93, ptr %94, align 16
%95 = call i64 @std_io_printfn(ptr %retparam68, ptr @.str.11, i64 2, ptr %varargslots69, i64 1)
%not_err71 = icmp eq i64 %95, 0
br i1 %not_err71, label %after_check72, label %voiderr73
after_check72: ; preds = %if.exit
br label %voiderr73
voiderr73: ; preds = %after_check72, %if.exit
%95 = load ptr, ptr %temp, align 8
%96 = getelementptr inbounds %TempAllocator, ptr %95, i32 0, i32 0
%97 = load i64, ptr %mark, align 8
call void @std_core_mem_allocator_Allocator_reset(ptr %96, i64 %97)
%96 = load ptr, ptr %temp, align 8
%97 = getelementptr inbounds %TempAllocator, ptr %96, i32 0, i32 0
%98 = load i64, ptr %mark, align 8
call void @std_core_mem_allocator_Allocator_reset(ptr %97, i64 %98)
ret void
}