fix(0128): foreign cstring returns + conflicting same-symbol bindings

Two genuine defects behind the 0128 filing (whose original repros were
both poisoned by binding getenv, which std already declares -> *u8):

1. Re-declaring a C symbol was silent first-wins: every call through
   the later declaration was typed by the older signature. Foreign
   registration now dedupes — equal signatures share one FuncId,
   conflicting ones are diagnosed.

2. Foreign -> string / -> ?string returns read garbage: C returns one
   char*, but the LLVM signature declared the fat {ptr,i64} (len =
   register garbage), and ?string was mis-declared SRET (the hidden
   out-pointer landed in the callee's first arg register). cstrRetKind
   now classifies such returns, declares them as plain ptr (never
   sret), and the call site synthesizes {ptr, strlen} via a
   branch-guarded strlen (NULL -> {null,0} / optional null), wrapping
   {string, i1} for ?string.

?[:0]u8 itself resolves fine (it is ?string); the spelling works in
return, param, local, and alias positions.

Regression: examples/1221 (plain + optional non-null + NULL paths) and
examples/1172 (conflict diagnostic); both FAIL pre-fix. The extern
dedupe collapses duplicate libc decls, so affected .ir snapshots were
regenerated. zig build test 426/426; run_examples 602/602;
distribution suite 21/21.
This commit is contained in:
agra
2026-06-12 14:13:01 +03:00
parent a8fbded567
commit d88bdd7242
50 changed files with 24903 additions and 28907 deletions

View File

@@ -0,0 +1,15 @@
// One C symbol bound twice with DIFFERENT sx signatures is diagnosed
// (issue 0128): the first registration used to silently win, mis-typing
// every call through the second declaration. Equal signatures share one
// registration silently (see std's read/write bound by several modules).
#import "modules/std.sx";
libc :: #library "c";
// std/process.sx already binds getenv as `-> *u8`; this view disagrees.
getenv_opt :: (name: [:0]u8) -> ?[:0]u8 #foreign libc "getenv";
main :: () -> i32 {
p := getenv_opt("PATH");
if p == null { return 1; }
return 0;
}

View File

@@ -0,0 +1,31 @@
// Foreign `-> [:0]u8` / `-> ?[:0]u8` returns: C hands back ONE `char *`;
// the fat sx string is synthesized at the call boundary ({ptr, strlen};
// NULL maps to the optional's null / an empty string) — issue 0128.
// Pre-fix, the call read the pointer register pair as {ptr, len} and the
// length was garbage (bus error on print).
#import "modules/std.sx";
libc :: #library "c";
err_text :: (code: i32) -> [:0]u8 #foreign libc "strerror";
sig_text :: (sig: i32) -> ?[:0]u8 #foreign libc "strsignal";
dlerror :: () -> ?[:0]u8 #foreign libc;
main :: () -> i32 {
// plain: strerror(0) = "Undefined error: 0" on macOS — assert shape,
// not the exact text (locale/platform variance)
t := err_text(2);
if t.len < 5 { print("BUG: strerror too short ({})\n", t.len); return 1; }
print("strerror(2) len ok\n");
// optional, non-null branch
o := sig_text(2);
if o == null { print("BUG: strsignal null\n"); return 2; }
if o!.len < 3 { print("BUG: strsignal too short\n"); return 3; }
print("optional non-null ok\n");
// optional, NULL branch: dlerror() with no pending error is NULL
d := dlerror();
if d != null { print("BUG: dlerror non-null\n"); return 4; }
print("optional null ok\n");
return 0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,5 @@
error: foreign symbol 'getenv' is already bound with a different signature; two views of one C symbol must declare identical types
--> examples/1172-diagnostics-foreign-symbol-conflict.sx:9:41
|
9 | getenv_opt :: (name: [:0]u8) -> ?[:0]u8 #foreign libc "getenv";
| ^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -192,7 +192,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -276,10 +276,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -305,167 +305,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -666,64 +630,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -753,97 +684,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -885,7 +786,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal i64 @accept_c(ptr %0) #0 { define internal i64 @accept_c(ptr %0) #0 {

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,3 @@
strerror(2) len ok
optional non-null ok
optional null ok

View File

@@ -4,34 +4,34 @@
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00" @__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.145 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.146 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.148 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.149 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.150 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.151 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.153 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.154 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.156 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.157 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.159 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.160 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1 @str.127 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@str.161 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.162 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1 @str.129 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00" @OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00" @OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00" @OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
@OBJC_CLASS_NAME_.163 = private unnamed_addr constant [6 x i8] c"SxFoo\00" @OBJC_CLASS_NAME_.130 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00" @OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00" @OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.164 = private unnamed_addr constant [8 x i8] c"dealloc\00" @OBJC_METH_VAR_NAME_.131 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.165 = private unnamed_addr constant [4 x i8] c"v@:\00" @OBJC_METH_VAR_TYPE_.132 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.166 = private unnamed_addr constant [6 x i8] c"alloc\00" @OBJC_METH_VAR_NAME_.133 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.167 = private unnamed_addr constant [4 x i8] c"@@:\00" @OBJC_METH_VAR_TYPE_.134 = private unnamed_addr constant [4 x i8] c"@@:\00"
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -261,7 +261,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.145, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -357,7 +357,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
if.then.12: ; preds = %if.then.9 if.then.12: ; preds = %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -365,7 +365,7 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -375,13 +375,13 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.13 br label %if.merge.13
if.merge.13: ; preds = %if.then.12, %if.then.9 if.merge.13: ; preds = %if.then.12, %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -389,7 +389,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -403,7 +403,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
if.then.23: ; preds = %if.else.10 if.then.23: ; preds = %if.else.10
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -411,7 +411,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -422,7 +422,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -479,7 +479,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
if.then.32: ; preds = %if.then.29 if.then.32: ; preds = %if.then.29
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -487,7 +487,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -498,7 +498,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -518,7 +518,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
if.then.35: ; preds = %while.exit.2 if.then.35: ; preds = %while.exit.2
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -526,7 +526,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -537,7 +537,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.36 br label %if.merge.36
@@ -684,7 +684,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -768,10 +768,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -797,167 +797,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1158,64 +1122,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1245,97 +1176,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1377,118 +1278,118 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.108(i64, ptr) #0 declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_framework.109(i64, ptr) #0 declare void @BuildOptions.add_framework.76(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.110(i64, ptr) #0 declare void @BuildOptions.set_output_path.77(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.111(i64, ptr) #0 declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.112(i64, ptr, ptr) #0 declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.113(i64) #0 declare i64 @BuildOptions.asset_dir_count.80(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.114(i64, i64) #0 declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.115(i64, i64) #0 declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.116(i64, ptr) #0 declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.117(i64, ptr) #0 declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.118(i64) #0 declare ptr @BuildOptions.binary_path.85(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.119(i64, ptr) #0 declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.120(i64, ptr) #0 declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.121(i64, ptr) #0 declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.122(i64, ptr) #0 declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.123(i64) #0 declare ptr @BuildOptions.bundle_path.90(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.124(i64) #0 declare ptr @BuildOptions.bundle_id.91(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.125(i64) #0 declare ptr @BuildOptions.codesign_identity.92(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.126(i64) #0 declare ptr @BuildOptions.provisioning_profile.93(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.127(i64) #0 declare ptr @BuildOptions.target_triple.94(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.128(i64) #0 declare i1 @BuildOptions.is_macos.95(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.129(i64) #0 declare i1 @BuildOptions.is_ios.96(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.130(i64) #0 declare i1 @BuildOptions.is_ios_device.97(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.131(i64) #0 declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.132(i64) #0 declare i1 @BuildOptions.is_android.99(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.133(i64) #0 declare i64 @BuildOptions.framework_count.100(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.134(i64, i64) #0 declare ptr @BuildOptions.framework_at.101(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.135(i64) #0 declare i64 @BuildOptions.framework_path_count.102(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.136(i64, i64) #0 declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.137(i64, ptr) #0 declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.138(i64, ptr) #0 declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.139(i64) #0 declare ptr @BuildOptions.manifest_path.106(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.140(i64) #0 declare ptr @BuildOptions.keystore_path.107(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.141(i64) #0 declare i64 @BuildOptions.jni_main_count.108(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.142(i64, i64) #0 declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.143(i64, i64) #0 declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options.144() #0 declare i64 @build_options.111() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal void @SxFoo.bump(ptr %0, ptr %1) #0 { define internal void @SxFoo.bump(ptr %0, ptr %1) #0 {
@@ -1531,14 +1432,14 @@ entry:
define internal void @print__ct_sfeff9eeccd48b824__pack(ptr %0) #0 { define internal void @print__ct_sfeff9eeccd48b824__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.160, i64 9 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.127, i64 9 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.161, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.128, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 9) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 9)
@@ -1554,7 +1455,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.162, i64 9 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 9 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1634,17 +1535,17 @@ declare ptr @class_getInstanceVariable(ptr, ptr)
define internal void @__sx_objc_defined_class_init() { define internal void @__sx_objc_defined_class_init() {
entry: entry:
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_) %super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.163, i64 0) %cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.130, i64 0)
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_) %0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
%metacls = call ptr @object_getClass(ptr %cls) %metacls = call ptr @object_getClass(ptr %cls)
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_) %sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
%1 = call i8 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_) %1 = call i8 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
call void @objc_registerClassPair(ptr %cls) call void @objc_registerClassPair(ptr %cls)
store ptr %cls, ptr @__SxFoo_class, align 8 store ptr %cls, ptr @__SxFoo_class, align 8
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.164) %sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.131)
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.165) %2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.132)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.166) %sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.133)
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.167) %3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.134)
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_) %iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
store ptr %iv, ptr @__SxFoo_state_ivar, align 8 store ptr %iv, ptr @__SxFoo_state_ivar, align 8
ret void ret void

View File

@@ -4,50 +4,50 @@
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00" @__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.145 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.146 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.148 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.149 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.150 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.151 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.153 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.154 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.156 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.157 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.159 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.160 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1 @str.127 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
@str.161 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1 @str.128 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
@str.162 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1 @str.129 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
@str.163 = private unnamed_addr constant [8 x i8] c"release\00", align 1 @str.130 = private unnamed_addr constant [8 x i8] c"release\00", align 1
@str.164 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1 @str.131 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.165 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.132 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.166 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1 @str.133 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.167 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1 @str.134 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.168 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.135 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.169 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1 @str.136 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.170 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1 @str.137 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.171 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.138 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.172 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1 @str.139 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.173 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1 @str.140 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.174 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.141 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.175 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1 @str.142 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.176 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1 @str.143 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@str.177 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.178 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1 @str.145 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00" @OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00" @OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00" @OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
@OBJC_CLASS_NAME_.179 = private unnamed_addr constant [6 x i8] c"SxFoo\00" @OBJC_CLASS_NAME_.146 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00" @OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00" @OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.180 = private unnamed_addr constant [8 x i8] c"dealloc\00" @OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.181 = private unnamed_addr constant [4 x i8] c"v@:\00" @OBJC_METH_VAR_TYPE_.148 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.182 = private unnamed_addr constant [6 x i8] c"alloc\00" @OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.183 = private unnamed_addr constant [4 x i8] c"@@:\00" @OBJC_METH_VAR_TYPE_.150 = private unnamed_addr constant [4 x i8] c"@@:\00"
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -277,7 +277,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.145, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -373,7 +373,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -391,13 +391,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -405,7 +405,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -419,7 +419,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -427,7 +427,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -438,7 +438,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -495,7 +495,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -503,7 +503,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -514,7 +514,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -534,7 +534,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -542,7 +542,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -553,7 +553,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -700,7 +700,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -784,10 +784,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -813,167 +813,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1174,64 +1138,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1261,97 +1192,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1393,118 +1294,118 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.108(i64, ptr) #0 declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_framework.109(i64, ptr) #0 declare void @BuildOptions.add_framework.76(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.110(i64, ptr) #0 declare void @BuildOptions.set_output_path.77(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.111(i64, ptr) #0 declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.112(i64, ptr, ptr) #0 declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.113(i64) #0 declare i64 @BuildOptions.asset_dir_count.80(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.114(i64, i64) #0 declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.115(i64, i64) #0 declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.116(i64, ptr) #0 declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.117(i64, ptr) #0 declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.118(i64) #0 declare ptr @BuildOptions.binary_path.85(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.119(i64, ptr) #0 declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.120(i64, ptr) #0 declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.121(i64, ptr) #0 declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.122(i64, ptr) #0 declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.123(i64) #0 declare ptr @BuildOptions.bundle_path.90(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.124(i64) #0 declare ptr @BuildOptions.bundle_id.91(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.125(i64) #0 declare ptr @BuildOptions.codesign_identity.92(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.126(i64) #0 declare ptr @BuildOptions.provisioning_profile.93(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.127(i64) #0 declare ptr @BuildOptions.target_triple.94(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.128(i64) #0 declare i1 @BuildOptions.is_macos.95(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.129(i64) #0 declare i1 @BuildOptions.is_ios.96(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.130(i64) #0 declare i1 @BuildOptions.is_ios_device.97(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.131(i64) #0 declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.132(i64) #0 declare i1 @BuildOptions.is_android.99(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.133(i64) #0 declare i64 @BuildOptions.framework_count.100(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.134(i64, i64) #0 declare ptr @BuildOptions.framework_at.101(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.135(i64) #0 declare i64 @BuildOptions.framework_path_count.102(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.136(i64, i64) #0 declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.137(i64, ptr) #0 declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.138(i64, ptr) #0 declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.139(i64) #0 declare ptr @BuildOptions.manifest_path.106(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.140(i64) #0 declare ptr @BuildOptions.keystore_path.107(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.141(i64) #0 declare i64 @BuildOptions.jni_main_count.108(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.142(i64, i64) #0 declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.143(i64, i64) #0 declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options.144() #0 declare i64 @build_options.111() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @objc_getClass(ptr) #0 declare ptr @objc_getClass(ptr) #0
@@ -1591,7 +1492,7 @@ entry:
%allocaN = alloca ptr, align 8 %allocaN = alloca ptr, align 8
%allocaN = alloca ptr, align 8 %allocaN = alloca ptr, align 8
%allocaN = alloca ptr, align 8 %allocaN = alloca ptr, align 8
%call = call ptr @objc_getClass(ptr @str.160) %call = call ptr @objc_getClass(ptr @str.127)
store ptr %call, ptr %alloca, align 8 store ptr %call, ptr %alloca, align 8
%load = load ptr, ptr %alloca, align 8 %load = load ptr, ptr %alloca, align 8
%icmp = icmp eq ptr %load, null %icmp = icmp eq ptr %load, null
@@ -1602,7 +1503,7 @@ if.then.0: ; preds = %entry
ret i32 1 ret i32 1
if.merge.1: ; preds = %entry if.merge.1: ; preds = %entry
%callN = call ptr @sel_registerName(ptr @str.161) %callN = call ptr @sel_registerName(ptr @str.128)
store ptr %callN, ptr %allocaN, align 8 store ptr %callN, ptr %allocaN, align 8
%loadN = load ptr, ptr %alloca, align 8 %loadN = load ptr, ptr %alloca, align 8
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
@@ -1617,7 +1518,7 @@ if.then.39: ; preds = %if.merge.1
ret i32 1 ret i32 1
if.merge.40: ; preds = %if.merge.1 if.merge.40: ; preds = %if.merge.1
%callN = call ptr @sel_registerName(ptr @str.162) %callN = call ptr @sel_registerName(ptr @str.129)
store ptr %callN, ptr %allocaN, align 8 store ptr %callN, ptr %allocaN, align 8
store ptr @objc_msgSend, ptr %allocaN, align 8 store ptr @objc_msgSend, ptr %allocaN, align 8
%loadN = load ptr, ptr %alloca, align 8 %loadN = load ptr, ptr %alloca, align 8
@@ -1634,7 +1535,7 @@ if.then.41: ; preds = %if.merge.40
ret i32 1 ret i32 1
if.merge.42: ; preds = %if.merge.40 if.merge.42: ; preds = %if.merge.40
%callN = call ptr @sel_registerName(ptr @str.163) %callN = call ptr @sel_registerName(ptr @str.130)
store ptr %callN, ptr %allocaN, align 8 store ptr %callN, ptr %allocaN, align 8
store ptr @objc_msgSend, ptr %allocaN, align 8 store ptr @objc_msgSend, ptr %allocaN, align 8
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
@@ -1681,14 +1582,14 @@ entry:
define internal void @print__ct_s354c93d7643e1bdf__pack(ptr %0) #0 { define internal void @print__ct_s354c93d7643e1bdf__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.164, i64 27 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.131, i64 27 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.165, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.132, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27)
@@ -1704,7 +1605,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.166, i64 27 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.133, i64 27 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1712,14 +1613,14 @@ entry:
define internal void @print__ct_sfe783e2b27a4beff__pack(ptr %0) #0 { define internal void @print__ct_sfe783e2b27a4beff__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.167, i64 26 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.134, i64 26 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.168, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.135, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 26) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 26)
@@ -1735,7 +1636,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_1(ptr %0) #0 { define internal { ptr, i64 } @__insert_1(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.169, i64 26 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.136, i64 26 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1743,14 +1644,14 @@ entry:
define internal void @print__ct_scaebdbbd10c81716__pack(ptr %0) #0 { define internal void @print__ct_scaebdbbd10c81716__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.170, i64 27 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.137, i64 27 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.171, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.138, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27)
@@ -1766,7 +1667,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_2(ptr %0) #0 { define internal { ptr, i64 } @__insert_2(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.172, i64 27 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.139, i64 27 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1774,14 +1675,14 @@ entry:
define internal void @print__ct_s7c1052877b8cc801__pack(ptr %0) #0 { define internal void @print__ct_s7c1052877b8cc801__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.173, i64 35 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.140, i64 35 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.174, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.141, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 35) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 35)
@@ -1797,7 +1698,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_3(ptr %0) #0 { define internal { ptr, i64 } @__insert_3(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.175, i64 35 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.142, i64 35 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1805,14 +1706,14 @@ entry:
define internal void @print__ct_sed4e79fbcbd67966__pack(ptr %0) #0 { define internal void @print__ct_sed4e79fbcbd67966__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.176, i64 12 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.143, i64 12 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.177, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.144, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 12) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 12)
@@ -1828,7 +1729,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_4(ptr %0) #0 { define internal { ptr, i64 } @__insert_4(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.178, i64 12 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.145, i64 12 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1886,17 +1787,17 @@ declare i8 @class_addIvar(ptr, ptr, i64, i8, ptr)
define internal void @__sx_objc_defined_class_init() { define internal void @__sx_objc_defined_class_init() {
entry: entry:
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_) %super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.179, i64 0) %cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.146, i64 0)
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_) %0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
%metacls = call ptr @object_getClass(ptr %cls) %metacls = call ptr @object_getClass(ptr %cls)
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_) %sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
%1 = call i1 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_) %1 = call i1 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
call void @objc_registerClassPair(ptr %cls) call void @objc_registerClassPair(ptr %cls)
store ptr %cls, ptr @__SxFoo_class, align 8 store ptr %cls, ptr @__SxFoo_class, align 8
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.180) %sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.147)
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.181) %2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.148)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.182) %sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.183) %3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.150)
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_) %iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
store ptr %iv, ptr @__SxFoo_state_ivar, align 8 store ptr %iv, ptr @__SxFoo_state_ivar, align 8
ret void ret void

File diff suppressed because one or more lines are too long

View File

@@ -3,26 +3,26 @@
@OBJC_SELECTOR_REFERENCES_init = internal global ptr null @OBJC_SELECTOR_REFERENCES_init = internal global ptr null
@OBJC_SELECTOR_REFERENCES_release = internal global ptr null @OBJC_SELECTOR_REFERENCES_release = internal global ptr null
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.145 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.146 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.148 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.149 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.150 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.151 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.153 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.154 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.156 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.157 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.159 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.160 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.161 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.162 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.129 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"init\00" @OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"init\00"
@OBJC_METH_VAR_NAME_.163 = private unnamed_addr constant [8 x i8] c"release\00" @OBJC_METH_VAR_NAME_.130 = private unnamed_addr constant [8 x i8] c"release\00"
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }] @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }]
; Function Attrs: nounwind ; Function Attrs: nounwind
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.145, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
if.then.12: ; preds = %if.then.9 if.then.12: ; preds = %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.13 br label %if.merge.13
if.merge.13: ; preds = %if.then.12, %if.then.9 if.merge.13: ; preds = %if.then.12, %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
if.then.23: ; preds = %if.else.10 if.then.23: ; preds = %if.else.10
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
if.then.32: ; preds = %if.then.29 if.then.32: ; preds = %if.then.29
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
if.then.35: ; preds = %while.exit.2 if.then.35: ; preds = %while.exit.2
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.36 br label %if.merge.36
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,118 +1270,118 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.108(i64, ptr) #0 declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_framework.109(i64, ptr) #0 declare void @BuildOptions.add_framework.76(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.110(i64, ptr) #0 declare void @BuildOptions.set_output_path.77(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.111(i64, ptr) #0 declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.112(i64, ptr, ptr) #0 declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.113(i64) #0 declare i64 @BuildOptions.asset_dir_count.80(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.114(i64, i64) #0 declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.115(i64, i64) #0 declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.116(i64, ptr) #0 declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.117(i64, ptr) #0 declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.118(i64) #0 declare ptr @BuildOptions.binary_path.85(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.119(i64, ptr) #0 declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.120(i64, ptr) #0 declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.121(i64, ptr) #0 declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.122(i64, ptr) #0 declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.123(i64) #0 declare ptr @BuildOptions.bundle_path.90(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.124(i64) #0 declare ptr @BuildOptions.bundle_id.91(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.125(i64) #0 declare ptr @BuildOptions.codesign_identity.92(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.126(i64) #0 declare ptr @BuildOptions.provisioning_profile.93(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.127(i64) #0 declare ptr @BuildOptions.target_triple.94(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.128(i64) #0 declare i1 @BuildOptions.is_macos.95(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.129(i64) #0 declare i1 @BuildOptions.is_ios.96(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.130(i64) #0 declare i1 @BuildOptions.is_ios_device.97(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.131(i64) #0 declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.132(i64) #0 declare i1 @BuildOptions.is_android.99(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.133(i64) #0 declare i64 @BuildOptions.framework_count.100(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.134(i64, i64) #0 declare ptr @BuildOptions.framework_at.101(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.135(i64) #0 declare i64 @BuildOptions.framework_path_count.102(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.136(i64, i64) #0 declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.137(i64, ptr) #0 declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.138(i64, ptr) #0 declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.139(i64) #0 declare ptr @BuildOptions.manifest_path.106(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.140(i64) #0 declare ptr @BuildOptions.keystore_path.107(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.141(i64) #0 declare i64 @BuildOptions.jni_main_count.108(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.142(i64, i64) #0 declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.143(i64, i64) #0 declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options.144() #0 declare i64 @build_options.111() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define i32 @main() #0 { define i32 @main() #0 {
@@ -1516,14 +1417,14 @@ entry:
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.160, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.127, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.161, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.128, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1539,7 +1440,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.162, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1551,7 +1452,7 @@ define internal void @__sx_objc_selector_init() {
entry: entry:
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_) %sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_init, align 8 store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_init, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.163) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.130)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_release, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_release, align 8
ret void ret void
} }

File diff suppressed because one or more lines are too long

View File

@@ -8,47 +8,47 @@
@OBJC_SELECTOR_REFERENCES_initWithFrame_options_ = internal global ptr null @OBJC_SELECTOR_REFERENCES_initWithFrame_options_ = internal global ptr null
@OBJC_SELECTOR_REFERENCES_actualSelectorName = internal global ptr null @OBJC_SELECTOR_REFERENCES_actualSelectorName = internal global ptr null
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.145 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.146 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.147 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.148 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.149 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.150 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.151 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.152 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.153 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.154 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.155 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.156 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.157 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.158 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.159 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.160 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1 @str.127 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1
@str.161 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1 @str.128 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
@str.162 = private unnamed_addr constant [7 x i8] c"length\00", align 1 @str.129 = private unnamed_addr constant [7 x i8] c"length\00", align 1
@str.163 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1 @str.130 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.164 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1 @str.131 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
@str.165 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1 @str.132 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
@str.166 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1 @str.133 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
@str.167 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1 @str.134 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.168 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1 @str.135 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
@str.169 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1 @str.136 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
@str.170 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1 @str.137 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
@str.171 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1 @str.138 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
@str.172 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1 @str.139 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
@str.173 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1 @str.140 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.174 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1 @str.141 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
@str.175 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.176 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1 @str.143 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@str.177 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.178 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1 @str.145 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [7 x i8] c"length\00" @OBJC_METH_VAR_NAME_ = private unnamed_addr constant [7 x i8] c"length\00"
@OBJC_METH_VAR_NAME_.179 = private unnamed_addr constant [11 x i8] c"addObject:\00" @OBJC_METH_VAR_NAME_.146 = private unnamed_addr constant [11 x i8] c"addObject:\00"
@OBJC_METH_VAR_NAME_.180 = private unnamed_addr constant [13 x i8] c"combine:and:\00" @OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
@OBJC_METH_VAR_NAME_.181 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00" @OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
@OBJC_METH_VAR_NAME_.182 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00" @OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
@OBJC_METH_VAR_NAME_.183 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00" @OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
@OBJC_METH_VAR_NAME_.184 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00" @OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00"
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }] @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }]
; Function Attrs: nounwind ; Function Attrs: nounwind
@@ -279,7 +279,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.145, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.112, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -375,7 +375,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
if.then.12: ; preds = %if.then.9 if.then.12: ; preds = %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.146, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -383,7 +383,7 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.147, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -393,13 +393,13 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.148, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.13 br label %if.merge.13
if.merge.13: ; preds = %if.then.12, %if.then.9 if.merge.13: ; preds = %if.then.12, %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.149, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -407,7 +407,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.150, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -421,7 +421,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
if.then.23: ; preds = %if.else.10 if.then.23: ; preds = %if.else.10
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.151, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -429,7 +429,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.152, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -440,7 +440,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.153, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -497,7 +497,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
if.then.32: ; preds = %if.then.29 if.then.32: ; preds = %if.then.29
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.154, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -505,7 +505,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.155, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -516,7 +516,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.156, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -536,7 +536,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
if.then.35: ; preds = %while.exit.2 if.then.35: ; preds = %while.exit.2
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.157, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -544,7 +544,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.158, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -555,7 +555,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.159, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.36 br label %if.merge.36
@@ -702,7 +702,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -786,10 +786,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -815,167 +815,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1176,64 +1140,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1263,97 +1194,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1395,118 +1296,118 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.108(i64, ptr) #0 declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_framework.109(i64, ptr) #0 declare void @BuildOptions.add_framework.76(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.110(i64, ptr) #0 declare void @BuildOptions.set_output_path.77(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.111(i64, ptr) #0 declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.112(i64, ptr, ptr) #0 declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.113(i64) #0 declare i64 @BuildOptions.asset_dir_count.80(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.114(i64, i64) #0 declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.115(i64, i64) #0 declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.116(i64, ptr) #0 declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.117(i64, ptr) #0 declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.118(i64) #0 declare ptr @BuildOptions.binary_path.85(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.119(i64, ptr) #0 declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.120(i64, ptr) #0 declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.121(i64, ptr) #0 declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.122(i64, ptr) #0 declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.123(i64) #0 declare ptr @BuildOptions.bundle_path.90(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.124(i64) #0 declare ptr @BuildOptions.bundle_id.91(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.125(i64) #0 declare ptr @BuildOptions.codesign_identity.92(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.126(i64) #0 declare ptr @BuildOptions.provisioning_profile.93(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.127(i64) #0 declare ptr @BuildOptions.target_triple.94(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.128(i64) #0 declare i1 @BuildOptions.is_macos.95(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.129(i64) #0 declare i1 @BuildOptions.is_ios.96(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.130(i64) #0 declare i1 @BuildOptions.is_ios_device.97(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.131(i64) #0 declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.132(i64) #0 declare i1 @BuildOptions.is_android.99(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.133(i64) #0 declare i64 @BuildOptions.framework_count.100(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.134(i64, i64) #0 declare ptr @BuildOptions.framework_at.101(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.135(i64) #0 declare i64 @BuildOptions.framework_path_count.102(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.136(i64, i64) #0 declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.137(i64, ptr) #0 declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.138(i64, ptr) #0 declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.139(i64) #0 declare ptr @BuildOptions.manifest_path.106(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.140(i64) #0 declare ptr @BuildOptions.keystore_path.107(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.141(i64) #0 declare i64 @BuildOptions.jni_main_count.108(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.142(i64, i64) #0 declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.143(i64, i64) #0 declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options.144() #0 declare i64 @build_options.111() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @objc_getClass(ptr) #0 declare ptr @objc_getClass(ptr) #0
@@ -1588,34 +1489,34 @@ entry:
define i32 @main() #0 { define i32 @main() #0 {
entry: entry:
call void @__sx_objc_selector_init() call void @__sx_objc_selector_init()
%call = call ptr @objc_getClass(ptr @str.160) %call = call ptr @objc_getClass(ptr @str.127)
%alloca = alloca ptr, align 8 %alloca = alloca ptr, align 8
store ptr %call, ptr %alloca, align 8 store ptr %call, ptr %alloca, align 8
%load = load ptr, ptr %alloca, align 8 %load = load ptr, ptr %alloca, align 8
%callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.161, i64 0) %callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.128, i64 0)
%allocaN = alloca ptr, align 8 %allocaN = alloca ptr, align 8
store ptr %callN, ptr %allocaN, align 8 store ptr %callN, ptr %allocaN, align 8
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.162) %callN = call ptr @sel_registerName(ptr @str.129)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.163) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.130)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.164) %callN = call ptr @sel_registerName(ptr @str.131)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.165) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.132)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.166) %callN = call ptr @sel_registerName(ptr @str.133)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.167) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.134)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.168) %callN = call ptr @sel_registerName(ptr @str.135)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.169) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.136)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.170) %callN = call ptr @sel_registerName(ptr @str.137)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.171) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.138)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.172) %callN = call ptr @sel_registerName(ptr @str.139)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.173) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.140)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.174) %callN = call ptr @sel_registerName(ptr @str.141)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.175) %callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.142)
%loadN = load ptr, ptr %allocaN, align 8 %loadN = load ptr, ptr %allocaN, align 8
call void @objc_registerClassPair(ptr %loadN) call void @objc_registerClassPair(ptr %loadN)
%allocaN = alloca ptr, align 8 %allocaN = alloca ptr, align 8
@@ -1665,14 +1566,14 @@ entry:
define internal void @print__ct_s4c1a58a7c89bfbba__pack(ptr %0) #0 { define internal void @print__ct_s4c1a58a7c89bfbba__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.176, i64 18 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.143, i64 18 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.177, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.144, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 18) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 18)
@@ -1688,7 +1589,7 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.178, i64 18 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.145, i64 18 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -1696,17 +1597,17 @@ define internal void @__sx_objc_selector_init() {
entry: entry:
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_) %sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_length, align 8 store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_length, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.179) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.146)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.180) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.147)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.181) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.148)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.182) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.183) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.150)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.184) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.151)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_actualSelectorName, align 8 store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_actualSelectorName, align 8
ret void ret void
} }

View File

@@ -2,30 +2,30 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [5 x i8] c"noop\00", align 1 @str.90 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.124 = private unnamed_addr constant [4 x i8] c"()V\00", align 1 @str.91 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@SX_JNI_CLS_noop____V = internal global ptr null @SX_JNI_CLS_noop____V = internal global ptr null
@SX_JNI_MID_noop____V = internal global ptr null @SX_JNI_MID_noop____V = internal global ptr null
@str.125 = private unnamed_addr constant [5 x i8] c"noop\00", align 1 @str.92 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.126 = private unnamed_addr constant [4 x i8] c"()V\00", align 1 @str.93 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.128 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.129 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -255,7 +255,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -351,7 +351,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -359,7 +359,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -369,13 +369,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -383,7 +383,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -397,7 +397,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -405,7 +405,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -416,7 +416,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -473,7 +473,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -481,7 +481,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -492,7 +492,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -512,7 +512,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -520,7 +520,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -531,7 +531,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -678,7 +678,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -762,10 +762,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -791,167 +791,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1152,64 +1116,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1239,97 +1170,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1371,7 +1272,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 { define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
@@ -1399,7 +1300,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_noop____V, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_noop____V, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont br label %jni.cont
@@ -1424,7 +1325,7 @@ jni.miss7: ; preds = %jni.cont
store ptr %jni.global.cls12, ptr @SX_JNI_CLS_noop____V, align 8 store ptr %jni.global.cls12, ptr @SX_JNI_CLS_noop____V, align 8
%9 = getelementptr inbounds ptr, ptr %jni.ifs4, i32 33 %9 = getelementptr inbounds ptr, ptr %jni.ifs4, i32 33
%jni.GetMethodID13 = load ptr, ptr %9, align 8 %jni.GetMethodID13 = load ptr, ptr %9, align 8
%jni.fresh.mid14 = call ptr %jni.GetMethodID13(ptr %load, ptr %jni.global.cls12, ptr @str.125, ptr @str.126) %jni.fresh.mid14 = call ptr %jni.GetMethodID13(ptr %load, ptr %jni.global.cls12, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid14, ptr @SX_JNI_MID_noop____V, align 8 store ptr %jni.fresh.mid14, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont8 br label %jni.cont8
@@ -1476,14 +1377,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.127, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.94, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.128, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.95, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1499,6 +1400,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.129, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [9 x i8] c"getCount\00", align 1 @str.90 = private unnamed_addr constant [9 x i8] c"getCount\00", align 1
@str.124 = private unnamed_addr constant [4 x i8] c"()I\00", align 1 @str.91 = private unnamed_addr constant [4 x i8] c"()I\00", align 1
@SX_JNI_CLS_getCount____I = internal global ptr null @SX_JNI_CLS_getCount____I = internal global ptr null
@SX_JNI_MID_getCount____I = internal global ptr null @SX_JNI_MID_getCount____I = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal i32 @read_int(ptr %0, ptr %1, ptr %2) #0 { define internal i32 @read_int(ptr %0, ptr %1, ptr %2) #0 {
@@ -1397,7 +1298,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getCount____I, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_getCount____I, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getCount____I, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getCount____I, align 8
br label %jni.cont br label %jni.cont
@@ -1451,14 +1352,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1474,6 +1375,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [18 x i8] c"currentTimeMillis\00", align 1 @str.90 = private unnamed_addr constant [18 x i8] c"currentTimeMillis\00", align 1
@str.124 = private unnamed_addr constant [4 x i8] c"()J\00", align 1 @str.91 = private unnamed_addr constant [4 x i8] c"()J\00", align 1
@SX_JNI_CLS_currentTimeMillis____J = internal global ptr null @SX_JNI_CLS_currentTimeMillis____J = internal global ptr null
@SX_JNI_MID_currentTimeMillis____J = internal global ptr null @SX_JNI_MID_currentTimeMillis____J = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal i64 @read_long(ptr %0, ptr %1, ptr %2) #0 { define internal i64 @read_long(ptr %0, ptr %1, ptr %2) #0 {
@@ -1397,7 +1298,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_currentTimeMillis____J, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_currentTimeMillis____J, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_currentTimeMillis____J, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_currentTimeMillis____J, align 8
br label %jni.cont br label %jni.cont
@@ -1451,14 +1352,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1474,6 +1375,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [9 x i8] c"getValue\00", align 1 @str.90 = private unnamed_addr constant [9 x i8] c"getValue\00", align 1
@str.124 = private unnamed_addr constant [4 x i8] c"()D\00", align 1 @str.91 = private unnamed_addr constant [4 x i8] c"()D\00", align 1
@SX_JNI_CLS_getValue____D = internal global ptr null @SX_JNI_CLS_getValue____D = internal global ptr null
@SX_JNI_MID_getValue____D = internal global ptr null @SX_JNI_MID_getValue____D = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal double @read_double(ptr %0, ptr %1, ptr %2) #0 { define internal double @read_double(ptr %0, ptr %1, ptr %2) #0 {
@@ -1397,7 +1298,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getValue____D, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_getValue____D, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getValue____D, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getValue____D, align 8
br label %jni.cont br label %jni.cont
@@ -1451,14 +1352,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1474,6 +1375,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [8 x i8] c"isShown\00", align 1 @str.90 = private unnamed_addr constant [8 x i8] c"isShown\00", align 1
@str.124 = private unnamed_addr constant [4 x i8] c"()Z\00", align 1 @str.91 = private unnamed_addr constant [4 x i8] c"()Z\00", align 1
@SX_JNI_CLS_isShown____Z = internal global ptr null @SX_JNI_CLS_isShown____Z = internal global ptr null
@SX_JNI_MID_isShown____Z = internal global ptr null @SX_JNI_MID_isShown____Z = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal i1 @read_bool(ptr %0, ptr %1, ptr %2) #0 { define internal i1 @read_bool(ptr %0, ptr %1, ptr %2) #0 {
@@ -1397,7 +1298,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_isShown____Z, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_isShown____Z, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_isShown____Z, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_isShown____Z, align 8
br label %jni.cont br label %jni.cont
@@ -1451,14 +1352,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1474,6 +1375,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1 @str.90 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1
@str.124 = private unnamed_addr constant [24 x i8] c"()Landroid/view/Window;\00", align 1 @str.91 = private unnamed_addr constant [24 x i8] c"()Landroid/view/Window;\00", align 1
@SX_JNI_CLS_getWindow____Landroid_view_Window_ = internal global ptr null @SX_JNI_CLS_getWindow____Landroid_view_Window_ = internal global ptr null
@SX_JNI_MID_getWindow____Landroid_view_Window_ = internal global ptr null @SX_JNI_MID_getWindow____Landroid_view_Window_ = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal ptr @get_window(ptr %0, ptr %1, ptr %2) #0 { define internal ptr @get_window(ptr %0, ptr %1, ptr %2) #0 {
@@ -1397,7 +1298,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getWindow____Landroid_view_Window_, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_getWindow____Landroid_view_Window_, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getWindow____Landroid_view_Window_, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getWindow____Landroid_view_Window_, align 8
br label %jni.cont br label %jni.cont
@@ -1451,14 +1352,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1474,6 +1375,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [4 x i8] c"max\00", align 1 @str.90 = private unnamed_addr constant [4 x i8] c"max\00", align 1
@str.124 = private unnamed_addr constant [6 x i8] c"(II)I\00", align 1 @str.91 = private unnamed_addr constant [6 x i8] c"(II)I\00", align 1
@SX_JNI_CLS_max___II_I = internal global ptr null @SX_JNI_CLS_max___II_I = internal global ptr null
@SX_JNI_MID_max___II_I = internal global ptr null @SX_JNI_MID_max___II_I = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal i32 @call_static_max(ptr %0, ptr %1, ptr %2) #0 { define internal i32 @call_static_max(ptr %0, ptr %1, ptr %2) #0 {
@@ -1394,7 +1295,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_max___II_I, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_max___II_I, align 8
%4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 113 %4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 113
%jni.GetStaticMethodID = load ptr, ptr %4, align 8 %jni.GetStaticMethodID = load ptr, ptr %4, align 8
%jni.fresh.mid = call ptr %jni.GetStaticMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetStaticMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_max___II_I, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_max___II_I, align 8
br label %jni.cont br label %jni.cont
@@ -1448,14 +1349,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1471,6 +1372,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1 @str.90 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1
@str.124 = private unnamed_addr constant [21 x i8] c"()Ljava/lang/Object;\00", align 1 @str.91 = private unnamed_addr constant [21 x i8] c"()Ljava/lang/Object;\00", align 1
@SX_JNI_CLS_getWindow____Ljava_lang_Object_ = internal global ptr null @SX_JNI_CLS_getWindow____Ljava_lang_Object_ = internal global ptr null
@SX_JNI_MID_getWindow____Ljava_lang_Object_ = internal global ptr null @SX_JNI_MID_getWindow____Ljava_lang_Object_ = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 { define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
@@ -1398,7 +1299,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getWindow____Ljava_lang_Object_, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_getWindow____Ljava_lang_Object_, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getWindow____Ljava_lang_Object_, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getWindow____Ljava_lang_Object_, align 8
br label %jni.cont br label %jni.cont
@@ -1451,14 +1352,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1474,6 +1375,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1 @str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.108 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.109 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.110 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.111 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.112 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.113 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.83 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.118 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.119 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [5 x i8] c"noop\00", align 1 @str.90 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.124 = private unnamed_addr constant [4 x i8] c"()V\00", align 1 @str.91 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@SX_JNI_CLS_noop____V = internal global ptr null @SX_JNI_CLS_noop____V = internal global ptr null
@SX_JNI_MID_noop____V = internal global ptr null @SX_JNI_MID_noop____V = internal global ptr null
@str.125 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.126 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.127 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @out(ptr) #0 declare void @out(ptr) #0
@@ -253,7 +253,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8 store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.108, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.75, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8 store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8 %allocaN = alloca i64, align 8
@@ -349,7 +349,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11 if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.109, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.76, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8 store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -357,7 +357,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.110, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.77, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -367,13 +367,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.111, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15 br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11 if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.112, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -381,7 +381,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.113, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1 %addN = add i64 %loadN, 1
@@ -395,7 +395,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12 if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -403,7 +403,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -414,7 +414,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -471,7 +471,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31 if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -479,7 +479,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -490,7 +490,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2 %addN = add i64 %loadN, 2
@@ -510,7 +510,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4 if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8 %loadN = load i64, ptr %allocaN, align 8
@@ -518,7 +518,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -529,7 +529,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8 %loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8 store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38 br label %if.merge.38
@@ -676,7 +676,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -760,10 +760,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -789,167 +789,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1150,64 +1114,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -1237,97 +1168,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -1369,7 +1270,7 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 { define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
@@ -1397,7 +1298,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_noop____V, align 8 store ptr %jni.global.cls, ptr @SX_JNI_CLS_noop____V, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8 %jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.123, ptr @str.124) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8 store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont br label %jni.cont
@@ -1449,14 +1350,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 { define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry: entry:
%alloca = alloca { ptr, i64 }, align 8 %alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.125, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0 %gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8 store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1 %gepN = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8 store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8 %allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.126, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.93, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8 %load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8 %loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3) %call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1472,6 +1373,6 @@ entry:
; Function Attrs: nounwind ; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 { define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry: entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.127, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.94, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -2,10 +2,10 @@
@g_held_view = internal global ptr null @g_held_view = internal global ptr null
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null } @__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [9 x i8] c"onCreate\00", align 1 @str = private unnamed_addr constant [9 x i8] c"onCreate\00", align 1
@str.145 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1 @str.112 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1
@jni.parent.path = private unnamed_addr constant [21 x i8] c"android/app/Activity\00", align 1 @jni.parent.path = private unnamed_addr constant [21 x i8] c"android/app/Activity\00", align 1
@str.146 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1 @str.113 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
@str.147 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1 @str.114 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1
@jni.ctor.path = private unnamed_addr constant [25 x i8] c"android/view/SurfaceView\00", align 1 @jni.ctor.path = private unnamed_addr constant [25 x i8] c"android/view/SurfaceView\00", align 1
; Function Attrs: nounwind ; Function Attrs: nounwind
@@ -199,7 +199,7 @@ declare i32 @mode_to_flags(ptr, i64) #0
declare i64 @open_file(ptr, ptr, i64) #0 declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @read_file(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0 declare i1 @write_file(ptr, ptr, ptr) #0
@@ -283,10 +283,10 @@ declare i32 @system(ptr) #0
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0 declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @env(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare ptr @find_executable(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @_exit(i32) #0 declare void @_exit(i32) #0
@@ -312,167 +312,131 @@ declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0 declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.3(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.4(i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0 declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @mem_realloc.5(ptr, ptr, ptr, i64, i64, i64) #0 declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.6(ptr, ptr, i64) #0 declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.7(ptr, ptr, ptr) #0 declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @GPA.init.8(ptr) #0 declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.9(ptr, ptr, i64) #0 declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.10(ptr, ptr, ptr) #0 declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.add_chunk.11(ptr, ptr, i64) #0 declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.init.12(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0 declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.reset.13(ptr, ptr) #0 declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.deinit.14(ptr, ptr) #0 declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.15(ptr, ptr, i64) #0 declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.16(ptr, ptr, ptr) #0 declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.init.17(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0 declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.reset.18(ptr, ptr) #0 declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.19(ptr, ptr, i64) #0 declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.20(ptr, ptr, ptr) #0 declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.init.21(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0 declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.22(ptr, ptr) #0 declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.report.23(ptr, ptr) #0 declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.24(ptr, ptr, i64) #0 declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.25(ptr, ptr, ptr) #0 declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.26(ptr, i32, ...) #0 declare i1 @File.is_valid.24(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.27(i32) #0 declare i1 @File.close.25(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.28(i32, ptr, i64) #0 declare i64 @File.read.26(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.29(i32, i64, i32) #0 declare i64 @File.write.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.30(ptr) #0 declare i64 @File.seek.28(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.31(ptr) #0 declare i32 @mode_to_flags.29(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.32(ptr, i32) #0 declare i64 @open_file.30(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.33(ptr, i32) #0 declare ptr @read_file.31(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.34(ptr, i32) #0 declare i1 @write_file.32(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.35(ptr, ptr) #0 declare i1 @append_file.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.36(ptr, ptr) #0 declare i1 @exists.34(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.37(ptr, ptr) #0 declare i1 @delete_file.35(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.38(ptr, ptr, ptr) #0 declare i1 @delete_dir.36(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.39(ptr, ptr, ptr) #0 declare i1 @create_dir.37(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.40(ptr, ptr, i64, i64) #0 declare i1 @set_mode.38(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.41(ptr, i64) #0 declare i1 @move.39(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.42(ptr, ptr, i64) #0 declare i1 @create_dir_all.40(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.43(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.44(ptr, ptr, ptr) #0 declare ptr @basename.42(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.45(ptr, ptr, ptr) #0 declare ptr @dirname.43(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.46(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.47(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.48(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.49(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.50(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.51(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.53(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.54(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0 declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -673,64 +637,31 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @spaces.56(ptr, i32) #0 declare ptr @spaces.44(ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_len.57() #0 declare ptr @to_string.45(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @sx_trace_truncated.58() #0 declare void @print_current.46(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.59(i32) #0 declare void @print_interpreter_frames.47(ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @to_string.60(ptr) #0 declare void @run.48(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_current.61(ptr) #0 declare ptr @env.49(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @print_interpreter_frames.62(ptr) #0 declare ptr @find_executable.50(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @popen.63(ptr, ptr) #0 declare void @exit.51(ptr, i8, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @pclose.64(ptr) #0 declare void @assert.52(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @fread.65(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.66(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.67(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.68(ptr) #0
; Function Attrs: nounwind
declare i32 @system.69(ptr) #0
; Function Attrs: nounwind
declare void @run.70(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.71(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.72(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.73(i32) #0
; Function Attrs: nounwind
declare void @exit.74(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.75(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0 declare ptr @_NSGetArgv() #0
@@ -760,97 +691,67 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0 declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @parse.76(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0 declare void @parse.53(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @open.77(ptr, i32, ...) #0 declare i1 @File.is_valid.54(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @close.78(i32) #0 declare i1 @File.close.55(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @read.79(i32, ptr, i64) #0 declare i64 @File.read.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @lseek.80(i32, i64, i32) #0 declare i64 @File.write.57(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @unlink.81(ptr) #0 declare i64 @File.seek.58(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rmdir.82(ptr) #0 declare i32 @mode_to_flags.59(ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mkdir.83(ptr, i32) #0 declare i64 @open_file.60(ptr, ptr, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @access.84(ptr, i32) #0 declare ptr @read_file.61(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @chmod.85(ptr, i32) #0 declare i1 @write_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @rename.86(ptr, ptr) #0 declare i1 @append_file.63(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.is_valid.87(ptr, ptr) #0 declare i1 @exists.64(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @File.close.88(ptr, ptr) #0 declare i1 @delete_file.65(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.read.89(ptr, ptr, ptr) #0 declare i1 @delete_dir.66(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.write.90(ptr, ptr, ptr) #0 declare i1 @create_dir.67(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @File.seek.91(ptr, ptr, i64, i64) #0 declare i1 @set_mode.68(ptr, ptr, i32) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i32 @mode_to_flags.92(ptr, i64) #0 declare i1 @move.69(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @open_file.93(ptr, ptr, i64) #0 declare i1 @create_dir_all.70(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @read_file.94(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0 declare i1 @copy_file.71(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @write_file.95(ptr, ptr, ptr) #0 declare ptr @basename.72(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @append_file.96(ptr, ptr, ptr) #0 declare ptr @dirname.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.97(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.98(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.99(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.100(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.101(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.102(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.104(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.105(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.106(ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0 declare i64 @rotr(ptr, i64, i64) #0
@@ -892,118 +793,118 @@ declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @assert.107(ptr, i1) #0 declare void @assert.74(ptr, i1) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.108(i64, ptr) #0 declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_framework.109(i64, ptr) #0 declare void @BuildOptions.add_framework.76(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.110(i64, ptr) #0 declare void @BuildOptions.set_output_path.77(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.111(i64, ptr) #0 declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.112(i64, ptr, ptr) #0 declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.113(i64) #0 declare i64 @BuildOptions.asset_dir_count.80(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.114(i64, i64) #0 declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.115(i64, i64) #0 declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.116(i64, ptr) #0 declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.117(i64, ptr) #0 declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.118(i64) #0 declare ptr @BuildOptions.binary_path.85(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.119(i64, ptr) #0 declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.120(i64, ptr) #0 declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.121(i64, ptr) #0 declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.122(i64, ptr) #0 declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.123(i64) #0 declare ptr @BuildOptions.bundle_path.90(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.124(i64) #0 declare ptr @BuildOptions.bundle_id.91(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.125(i64) #0 declare ptr @BuildOptions.codesign_identity.92(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.126(i64) #0 declare ptr @BuildOptions.provisioning_profile.93(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.127(i64) #0 declare ptr @BuildOptions.target_triple.94(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.128(i64) #0 declare i1 @BuildOptions.is_macos.95(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.129(i64) #0 declare i1 @BuildOptions.is_ios.96(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.130(i64) #0 declare i1 @BuildOptions.is_ios_device.97(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.131(i64) #0 declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.132(i64) #0 declare i1 @BuildOptions.is_android.99(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.133(i64) #0 declare i64 @BuildOptions.framework_count.100(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.134(i64, i64) #0 declare ptr @BuildOptions.framework_at.101(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.135(i64) #0 declare i64 @BuildOptions.framework_path_count.102(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.136(i64, i64) #0 declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.137(i64, ptr) #0 declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.138(i64, ptr) #0 declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.139(i64) #0 declare ptr @BuildOptions.manifest_path.106(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.140(i64) #0 declare ptr @BuildOptions.keystore_path.107(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.141(i64) #0 declare i64 @BuildOptions.jni_main_count.108(i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.142(i64, i64) #0 declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.143(i64, i64) #0 declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options.144() #0 declare i64 @build_options.111() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define i32 @main() #0 { define i32 @main() #0 {
@@ -1043,7 +944,7 @@ entry:
%jni.parent.cls = call ptr %jni.FindClass(ptr %load, ptr @jni.parent.path) %jni.parent.cls = call ptr %jni.FindClass(ptr %load, ptr @jni.parent.path)
%4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33 %4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %4, align 8 %jni.GetMethodID = load ptr, ptr %4, align 8
%jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.145) %jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.112)
%jni.parent.cls.slot = alloca ptr, align 8 %jni.parent.cls.slot = alloca ptr, align 8
store ptr %jni.parent.cls, ptr %jni.parent.cls.slot, align 8 store ptr %jni.parent.cls, ptr %jni.parent.cls.slot, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 91 %5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 91
@@ -1059,7 +960,7 @@ entry:
%jni.ctor.cls = call ptr %jni.FindClass9(ptr %load, ptr @jni.ctor.path) %jni.ctor.cls = call ptr %jni.FindClass9(ptr %load, ptr @jni.ctor.path)
%7 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 33 %7 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 33
%jni.GetMethodID10 = load ptr, ptr %7, align 8 %jni.GetMethodID10 = load ptr, ptr %7, align 8
%jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.146, ptr @str.147) %jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.113, ptr @str.114)
%8 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 28 %8 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 28
%jni.NewObject = load ptr, ptr %8, align 8 %jni.NewObject = load ptr, ptr %8, align 8
%jni.new.obj = call ptr %jni.NewObject(ptr %load, ptr %jni.ctor.cls, ptr %jni.ctor.mid, ptr %loadN) %jni.new.obj = call ptr %jni.NewObject(ptr %load, ptr %jni.ctor.cls, ptr %jni.ctor.mid, ptr %loadN)

View File

@@ -1,4 +1,41 @@
# 0128: `[:0]u8` at FFI boundaries — silent `u8` returns, unresolvable optional # RESOLVED — 0128: `[:0]u8` at FFI boundaries — conflicting symbol views, garbage string returns
> **RESOLVED** (2026-06-12). Investigation corrected the filing: the
> "silent `u8` return" and the "`?[:0]u8` unresolved panic" were BOTH
> artifacts of the reproducers binding the C symbol `getenv`, which
> std/process.sx already declares as `-> *u8` — the FIRST registration
> of a C symbol silently won and every call through the later
> declaration was typed by the older signature (`*u8`), cascading into
> the panic. `?[:0]u8` itself resolves correctly (it is `?string`).
> The two GENUINE defects, both fixed:
>
> 1. **Conflicting same-symbol redeclaration was silent.**
> `dedupeForeignSymbol` (src/ir/lower/decl.zig) now runs at foreign
> registration: an EQUAL signature shares the first registration's
> FuncId; a CONFLICTING one is diagnosed ("foreign symbol '<s>' is
> already bound with a different signature").
> 2. **Foreign `-> string` / `-> ?string` returns read garbage.** The
> C side returns ONE `char *`; the LLVM signature declared the fat
> `{ptr,i64}` (len = register garbage; bus error on use), and
> `?string` (24 B struct) was mis-declared SRET — the hidden
> out-pointer landed in the C callee's first argument register.
> Now: such returns are classified by `cstrRetKind`
> (src/ir/emit_llvm.zig), declared as plain `ptr` returns (never
> sret), and the call site synthesizes the sx value via
> `cstrReturnToSx`: `{ptr, strlen(ptr)}` with the strlen call
> branch-guarded (NULL → `{null,0}`), wrapped in `{string, i1}`
> with `has = ptr != null` for the optional.
>
> Regression tests: `examples/1221-ffi-cstring-returns.sx` (plain +
> optional non-null via strerror/strsignal + optional NULL via
> dlerror) and `examples/1172-diagnostics-foreign-symbol-conflict.sx`
> (the getenv conflict); both FAIL on pre-fix master. The extern
> dedupe changes IR snapshots (duplicate libc decls collapse), so the
> affected `.ir` files were regenerated. Gates: zig build test
> 426/426, tests/run_examples.sh 602/602, distribution repo 21/21.
> Boundary: comptime-interp (`#run`) foreign calls are untouched, and
> indirect (fn-pointer) foreign calls don't synthesize — both can
> follow if ever needed.
## Design contract (Agra, 2026-06-12) ## Design contract (Agra, 2026-06-12)

View File

@@ -804,7 +804,10 @@ pub const Ops = struct {
}; };
const callee_needs_c_abi = callee_func.is_extern or callee_func.call_conv == .c; const callee_needs_c_abi = callee_func.is_extern or callee_func.call_conv == .c;
const callee_raw_ret = self.e.toLLVMType(callee_func.ret); const callee_raw_ret = self.e.toLLVMType(callee_func.ret);
const callee_uses_sret = callee_needs_c_abi and self.e.needsByval(callee_func.ret, callee_raw_ret); // Foreign string/?string returns receive one `char *` — never sret
// (must mirror declareFunction's signature classification).
const cstr_ret = self.e.cstrRetKind(callee_func);
const callee_uses_sret = callee_needs_c_abi and cstr_ret == .none and self.e.needsByval(callee_func.ret, callee_raw_ret);
// When the callee uses sret, prepend an alloca for the result. // When the callee uses sret, prepend an alloca for the result.
// Index alignment: actual_args[0] = sret_slot; actual_args[i+1] = sx arg i. // Index alignment: actual_args[0] = sret_slot; actual_args[i+1] = sx arg i.
@@ -859,6 +862,10 @@ pub const Ops = struct {
c.LLVMAddCallSiteAttribute(result, param1_idx, sret_attr); c.LLVMAddCallSiteAttribute(result, param1_idx, sret_attr);
// Load the actual struct value the callee wrote into the slot. // Load the actual struct value the callee wrote into the slot.
result = c.LLVMBuildLoad2(self.e.builder, callee_raw_ret, sret_slot, "sret.load"); result = c.LLVMBuildLoad2(self.e.builder, callee_raw_ret, sret_slot, "sret.load");
} else if (!call_is_void_like and cstr_ret != .none) {
// The C side returned `char *`; build the fat sx string (and the
// optional wrapper) from it.
result = self.e.cstrReturnToSx(result, cstr_ret == .optional);
} else if (!call_is_void_like and callee_func.is_extern) { } else if (!call_is_void_like and callee_func.is_extern) {
// Coerce ABI return value (e.g. i64 / [2 x i64]) back to IR struct type if needed // Coerce ABI return value (e.g. i64 / [2 x i64]) back to IR struct type if needed
const expected_ty = self.e.toLLVMType(instruction.ty); const expected_ty = self.e.toLLVMType(instruction.ty);

View File

@@ -1242,13 +1242,19 @@ pub const LLVMEmitter = struct {
// main always returns i32 at the LLVM level (JIT expects it) // main always returns i32 at the LLVM level (JIT expects it)
const raw_ret_ty = self.toLLVMType(func.ret); const raw_ret_ty = self.toLLVMType(func.ret);
const needs_c_abi = func.is_extern or func.call_conv == .c; const needs_c_abi = func.is_extern or func.call_conv == .c;
// A foreign `-> string` / `-> ?string` receives ONE `char *` from C;
// the fat sx value is synthesized at the call site (emitCall's
// cstrReturnToSx). Never sret — the C callee knows nothing about an
// out-pointer.
const cstr_ret = self.cstrRetKind(func);
// sret return: C-ABI functions returning a >16 B non-HFA struct // sret return: C-ABI functions returning a >16 B non-HFA struct
// use the indirect-return convention (caller allocates space, // use the indirect-return convention (caller allocates space,
// passes its pointer as a hidden first arg with `sret(<T>)`, // passes its pointer as a hidden first arg with `sret(<T>)`,
// function writes through and returns void). Distinct from // function writes through and returns void). Distinct from
// small-struct register coercion (i64 / [2 x i64]) and HFA. // small-struct register coercion (i64 / [2 x i64]) and HFA.
const uses_sret = needs_c_abi and !is_main and self.needsByval(func.ret, raw_ret_ty); const uses_sret = needs_c_abi and !is_main and cstr_ret == .none and self.needsByval(func.ret, raw_ret_ty);
const ret_ty = if (is_main) self.cached_i32 const ret_ty = if (is_main) self.cached_i32
else if (cstr_ret != .none) self.cached_ptr
else if (uses_sret) self.cached_void else if (uses_sret) self.cached_void
else if (needs_c_abi) self.abiCoerceParamTypeEx(func.ret, raw_ret_ty, func.is_extern) else if (needs_c_abi) self.abiCoerceParamTypeEx(func.ret, raw_ret_ty, func.is_extern)
else raw_ret_ty; else raw_ret_ty;
@@ -2244,6 +2250,69 @@ pub const LLVMEmitter = struct {
/// Coerce a call argument to match the expected parameter type. /// Coerce a call argument to match the expected parameter type.
/// Handles int width mismatches (trunc/ext), float width, and int↔float. /// Handles int width mismatches (trunc/ext), float width, and int↔float.
/// How a FOREIGN function's declared sx return maps onto a C `char *`:
/// `-> string` (.plain) and `-> ?string` (.optional) both receive one
/// pointer from C; everything else is `.none`. Keep `declareFunction`'s
/// signature building and `emitCall`'s result synthesis keyed on the
/// SAME classification or the ABI splits.
pub const CstrRet = enum { none, plain, optional };
pub fn cstrRetKind(self: *LLVMEmitter, func: *const Function) CstrRet {
if (!func.is_extern) return .none;
if (func.ret == .string) return .plain;
if (!func.ret.isBuiltin()) {
const info = self.ir_mod.types.get(func.ret);
if (info == .optional and info.optional.child == .string) return .optional;
}
return .none;
}
/// Build the sx-level value for a foreign call that returned a `char *`:
/// `{ptr, strlen(ptr)}` for `string` (NULL → `{null, 0}`), wrapped in
/// `{string, i1}` with `has = ptr != null` for `?string`. The strlen call
/// is branch-guarded — `select` would evaluate `strlen(NULL)`.
pub fn cstrReturnToSx(self: *LLVMEmitter, p: c.LLVMValueRef, optional: bool) c.LLVMValueRef {
const strlen_fn = c.LLVMGetNamedFunction(self.llvm_module, "strlen") orelse blk: {
var pt = [_]c.LLVMTypeRef{self.cached_ptr};
const ft = c.LLVMFunctionType(self.cached_i64, &pt, 1, 0);
break :blk c.LLVMAddFunction(self.llvm_module, "strlen", ft);
};
const strlen_ty = c.LLVMGlobalGetValueType(strlen_fn);
const cur_fn = c.LLVMGetBasicBlockParent(c.LLVMGetInsertBlock(self.builder));
const entry_bb = c.LLVMGetInsertBlock(self.builder);
const len_bb = c.LLVMAppendBasicBlockInContext(self.context, cur_fn, "cstr.len");
const join_bb = c.LLVMAppendBasicBlockInContext(self.context, cur_fn, "cstr.join");
const is_null = c.LLVMBuildICmp(self.builder, c.LLVMIntEQ, p, c.LLVMConstNull(self.cached_ptr), "cstr.isnull");
_ = c.LLVMBuildCondBr(self.builder, is_null, join_bb, len_bb);
c.LLVMPositionBuilderAtEnd(self.builder, len_bb);
var sargs = [_]c.LLVMValueRef{p};
const n = c.LLVMBuildCall2(self.builder, strlen_ty, strlen_fn, &sargs, 1, "cstr.n");
_ = c.LLVMBuildBr(self.builder, join_bb);
c.LLVMPositionBuilderAtEnd(self.builder, join_bb);
const len_phi = c.LLVMBuildPhi(self.builder, self.cached_i64, "cstr.lenphi");
var ivals = [_]c.LLVMValueRef{ c.LLVMConstInt(self.cached_i64, 0, 0), n };
var ibbs = [_]c.LLVMBasicBlockRef{ entry_bb, len_bb };
c.LLVMAddIncoming(len_phi, &ivals, &ibbs, 2);
const str_ty = self.getStringStructType();
var s = c.LLVMGetUndef(str_ty);
s = c.LLVMBuildInsertValue(self.builder, s, p, 0, "cstr.sp");
s = c.LLVMBuildInsertValue(self.builder, s, len_phi, 1, "cstr.sv");
if (!optional) return s;
var ofields = [_]c.LLVMTypeRef{ str_ty, self.cached_i1 };
const opt_ty = c.LLVMStructTypeInContext(self.context, &ofields, 2, 0);
const has = c.LLVMBuildNot(self.builder, is_null, "cstr.has");
var o = c.LLVMGetUndef(opt_ty);
o = c.LLVMBuildInsertValue(self.builder, o, s, 0, "cstr.ov");
o = c.LLVMBuildInsertValue(self.builder, o, has, 1, "cstr.opt");
return o;
}
pub fn coerceArg(self: *LLVMEmitter, val: c.LLVMValueRef, param_ty: c.LLVMTypeRef) c.LLVMValueRef { pub fn coerceArg(self: *LLVMEmitter, val: c.LLVMValueRef, param_ty: c.LLVMTypeRef) c.LLVMValueRef {
const val_ty = c.LLVMTypeOf(val); const val_ty = c.LLVMTypeOf(val);
if (val_ty == param_ty) return val; if (val_ty == param_ty) return val;

View File

@@ -1888,6 +1888,7 @@ pub const Lowering = struct {
pub const findTaggedVariant = lower_expr.findTaggedVariant; pub const findTaggedVariant = lower_expr.findTaggedVariant;
pub const emitBadVariant = lower_expr.emitBadVariant; pub const emitBadVariant = lower_expr.emitBadVariant;
pub const emitBadEnumVariant = lower_expr.emitBadEnumVariant; pub const emitBadEnumVariant = lower_expr.emitBadEnumVariant;
pub const dedupeForeignSymbol = lower_decl.dedupeForeignSymbol;
pub const resolveVariantValue = lower_expr.resolveVariantValue; pub const resolveVariantValue = lower_expr.resolveVariantValue;
pub const resolveVariantIndex = lower_expr.resolveVariantIndex; pub const resolveVariantIndex = lower_expr.resolveVariantIndex;
pub const lowerArrayLiteral = lower_expr.lowerArrayLiteral; pub const lowerArrayLiteral = lower_expr.lowerArrayLiteral;

View File

@@ -2020,6 +2020,37 @@ fn returnGenericLeaf(node: *const Node) ?[]const u8 {
} }
/// Declare a function as an extern stub (signature only, no body). /// Declare a function as an extern stub (signature only, no body).
/// The same C SYMBOL declared more than once (two modules binding the same
/// libc function, or a rename colliding with an existing binding): an EQUAL
/// signature shares the first registration; a CONFLICTING one is diagnosed —
/// silently letting the first registration win mis-types every call through
/// the later declaration (a `-> string` view of a symbol registered `-> *u8`
/// reads the wrong shape; issue 0128). True = handled (shared or diagnosed),
/// caller must not declare again.
pub fn dedupeForeignSymbol(self: *Lowering, fd: *const ast.FnDecl, sym_name: StringId, params: []const Function.Param, ret_ty: TypeId) bool {
for (self.module.functions.items, 0..) |*func, i| {
if (func.name != sym_name or !func.is_extern) continue;
var same = func.ret == ret_ty and func.params.len == params.len;
if (same) {
for (func.params, params) |a, b| {
if (a.ty != b.ty) {
same = false;
break;
}
}
}
if (same) {
self.fn_decl_fids.put(fd, FuncId.fromIndex(@intCast(i))) catch {};
return true;
}
if (self.diagnostics) |d| {
d.addFmt(.err, fd.body.span, "foreign symbol '{s}' is already bound with a different signature; two views of one C symbol must declare identical types", .{self.module.types.getString(sym_name)});
}
return true;
}
return false;
}
pub fn declareFunction(self: *Lowering, fd: *const ast.FnDecl, name: []const u8) void { pub fn declareFunction(self: *Lowering, fd: *const ast.FnDecl, name: []const u8) void {
// Skip generic templates — they're monomorphized on demand, not declared as extern // Skip generic templates — they're monomorphized on demand, not declared as extern
if (fd.type_params.len > 0) return; if (fd.type_params.len > 0) return;
@@ -2083,6 +2114,10 @@ pub fn declareFunction(self: *Lowering, fd: *const ast.FnDecl, name: []const u8)
const fe = fd.body.data.foreign_expr; const fe = fd.body.data.foreign_expr;
if (fe.c_name) |c_name| { if (fe.c_name) |c_name| {
const c_name_id = self.module.types.internString(c_name); const c_name_id = self.module.types.internString(c_name);
if (self.dedupeForeignSymbol(fd, c_name_id, params.items, ret_ty)) {
self.foreign_name_map.put(name, c_name) catch {};
return;
}
const fid = self.builder.declareExtern(c_name_id, params.items, ret_ty); const fid = self.builder.declareExtern(c_name_id, params.items, ret_ty);
const func = self.module.getFunctionMut(fid); const func = self.module.getFunctionMut(fid);
func.call_conv = cc; func.call_conv = cc;
@@ -2096,6 +2131,7 @@ pub fn declareFunction(self: *Lowering, fd: *const ast.FnDecl, name: []const u8)
} }
const name_id = self.module.types.internString(name); const name_id = self.module.types.internString(name);
if (is_foreign and self.dedupeForeignSymbol(fd, name_id, params.items, ret_ty)) return;
const fid = self.builder.declareExtern(name_id, params.items, ret_ty); const fid = self.builder.declareExtern(name_id, params.items, ret_ty);
const func = self.module.getFunctionMut(fid); const func = self.module.getFunctionMut(fid);
func.call_conv = cc; func.call_conv = cc;