std: full namespace tail — fs/process/socket/json/cli/hash/test

With 0115's own-wins globals landed, the remaining tail modules join
std.sx: every '#import "modules/std.sx"' now carries mem/xml/log/fs/
process/socket/json/cli/hash/test as namespaces (trace stays a direct
import).

Enablers in the same change:
- emit: dead-global elimination — a plain-data global no instruction
  references is not emitted, so tail modules' data (hash's 64-entry K
  table, OS/ARCH/POINTER_SIZE) stays out of binaries that don't use it.
  Comptime-backed globals keep their #run evaluation. 37 pinned IR
  snapshots regenerated (dead globals dropped + string renumbering from
  the larger module).
- 1055/1056 stop pinning the global error-tag ordinal (it shifts with
  program composition); they assert nonzero + tag identity + name.
- specs/readme/CLAUDE.md tail docs updated.
This commit is contained in:
agra
2026-06-11 10:49:39 +03:00
parent 0b13498e25
commit 330c3aeef7
47 changed files with 129030 additions and 28600 deletions

View File

@@ -576,8 +576,8 @@ Wiring a new bundling step:
| `implementation_plan.md` | Archive of completed work (closures, protocols, etc.). Do not pick up tasks from here. | | `implementation_plan.md` | Archive of completed work (closures, protocols, etc.). Do not pick up tasks from here. |
| `readme.md` | User-facing language overview — **maintained**. Update it whenever a user-facing sx change lands (new/changed syntax, semantics, gating diagnostics, language behavior), per the docs-track-changes rule. | | `readme.md` | User-facing language overview — **maintained**. Update it whenever a user-facing sx change lands (new/changed syntax, semantics, gating diagnostics, language behavior), per the docs-track-changes rule. |
| `CLAUDE.md` | This file. Session instructions. | | `CLAUDE.md` | This file. Session instructions. |
| `library/modules/std.sx` | The prelude (print/format/List/string ops/Context/Allocator) + the namespace tail (`mem`/`xml`/`log` carried to flat importers). | | `library/modules/std.sx` | The prelude (print/format/List/string ops/Context/Allocator) + the namespace tail (`mem`/`xml`/`log`/`fs`/`process`/`socket`/`json`/`cli`/`hash`/`test` carried to flat importers). |
| `library/modules/std/` | Stdlib modules: mem (allocators), fs, process, socket, json, cli, hash, xml, log, trace, test. Import directly until they join the tail. | | `library/modules/std/` | Stdlib modules: mem (allocators), fs, process, socket, json, cli, hash, xml, log, trace, test — all but trace carried by the std.sx tail; direct file imports give bare access. |
| `library/modules/ffi/` | FFI bindings: objc, objc_block, sdl3, opengl, raylib, stb, stb_truetype, wasm. | | `library/modules/ffi/` | FFI bindings: objc, objc_block, sdl3, opengl, raylib, stb, stb_truetype, wasm. |
| `library/modules/math/` | scalar / vector2 / matrix44 — one spelling: `#import "modules/math"` (directory import). | | `library/modules/math/` | scalar / vector2 / matrix44 — one spelling: `#import "modules/math"` (directory import). |
| `library/modules/build.sx` | `BuildOptions` compile-time build DSL. See "Bundling lives in sx" above. | | `library/modules/build.sx` | `BuildOptions` compile-time build DSL. See "Bundling lives in sx" above. |

View File

@@ -36,7 +36,7 @@ main :: () -> s32 {
// ── error path: the right tag flows through ── // ── error path: the right tag flows through ──
c3, e3 := pick("xxx"); c3, e3 := pick("xxx");
print("error err int = {}\n", cast(s64) e3); // 1 print("error err nonzero = {}\n", cast(s64) e3 != 0); // true (ordinal is program-global, not pinned)
if e3 == error.Nope { print("error: is Nope (ok)\n"); } else { print("error: not Nope (WRONG)\n"); } if e3 == error.Nope { print("error: is Nope (ok)\n"); } else { print("error: not Nope (WRONG)\n"); }
print("error tag name = {}\n", error_tag_name(e3)); // Nope print("error tag name = {}\n", error_tag_name(e3)); // Nope

View File

@@ -43,7 +43,7 @@ main :: () -> s32 {
// ── F1 error (explicit tuple): right tag flows, no panic ── // ── F1 error (explicit tuple): right tag flows, no panic ──
c2, e2 := classify("bad"); c2, e2 := classify("bad");
print("F1 bad: err int = {}\n", cast(s64) e2); // 1 print("F1 bad: err nonzero = {}\n", cast(s64) e2 != 0); // true (ordinal is program-global, not pinned)
if e2 == error.Nope { print("F1 bad: is Nope (ok)\n"); } else { print("F1 bad: not Nope (WRONG)\n"); } if e2 == error.Nope { print("F1 bad: is Nope (ok)\n"); } else { print("F1 bad: not Nope (WRONG)\n"); }
print("F1 bad: tag name = {}\n", error_tag_name(e2)); // Nope print("F1 bad: tag name = {}\n", error_tag_name(e2)); // Nope
@@ -59,7 +59,7 @@ main :: () -> s32 {
// ── F2 error (comptime-param, inline error path): right tag ── // ── F2 error (comptime-param, inline error path): right tag ──
c5, e5 := ct_pick(7, "x"); c5, e5 := ct_pick(7, "x");
print("F2 err: err int = {}\n", cast(s64) e5); // 1 print("F2 err: err nonzero = {}\n", cast(s64) e5 != 0); // true (ordinal is program-global, not pinned)
if e5 == error.Nope { print("F2 err: is Nope (ok)\n"); } else { print("F2 err: not Nope (WRONG)\n"); } if e5 == error.Nope { print("F2 err: is Nope (ok)\n"); } else { print("F2 err: not Nope (WRONG)\n"); }
return 0; 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

@@ -3,6 +3,6 @@ bare-if e: ok
e != Nope (ok) e != Nope (ok)
guard !e: c = 0 guard !e: c = 0
blue: err int = 0, c = 2 blue: err int = 0, c = 2
error err int = 1 error err nonzero = true
error: is Nope (ok) error: is Nope (ok)
error tag name = Nope error tag name = Nope

View File

@@ -1,7 +1,7 @@
F1 ok: err int = 0 F1 ok: err int = 0
F1 ok bare-if: ok F1 ok bare-if: ok
F1 ok guard: c = 2 F1 ok guard: c = 2
F1 bad: err int = 1 F1 bad: err nonzero = true
F1 bad: is Nope (ok) F1 bad: is Nope (ok)
F1 bad: tag name = Nope F1 bad: tag name = Nope
F2 red: err int = 0 F2 red: err int = 0
@@ -9,5 +9,5 @@ F2 red bare-if: ok
F2 red != Nope (ok) F2 red != Nope (ok)
F2 red guard: c = 0 F2 red guard: c = 0
F2 blue: err int = 0, c = 2 F2 blue: err int = 0, c = 2
F2 err: err int = 1 F2 err: err nonzero = true
F2 err: is Nope (ok) F2 err: is Nope (ok)

View File

@@ -197,6 +197,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:

View File

@@ -1,40 +1,37 @@
@__SxFoo_state_ivar = internal global ptr null @__SxFoo_state_ivar = internal global ptr null
@__SxFoo_class = internal global ptr null @__SxFoo_class = internal global ptr null
@OS = internal global i64 6
@ARCH = internal global i64 4
@POINTER_SIZE = internal global i64 8
@__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null }
@__sx_objc_cstr_dealloc = internal global [8 x i8] c"dealloc\00" @__sx_objc_cstr_dealloc = internal global [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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.162 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.163 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.165 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.166 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.167 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.168 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.170 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.171 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.173 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.174 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.175 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.176 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1 @str.177 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@str.37 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.178 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.38 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1 @str.179 = 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_.39 = private unnamed_addr constant [6 x i8] c"SxFoo\00" @OBJC_CLASS_NAME_.180 = 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_.40 = private unnamed_addr constant [8 x i8] c"dealloc\00" @OBJC_METH_VAR_NAME_.181 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.41 = private unnamed_addr constant [4 x i8] c"v@:\00" @OBJC_METH_VAR_TYPE_.182 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.42 = private unnamed_addr constant [6 x i8] c"alloc\00" @OBJC_METH_VAR_NAME_.183 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.43 = private unnamed_addr constant [4 x i8] c"@@:\00" @OBJC_METH_VAR_TYPE_.184 = 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
@@ -339,7 +336,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.162, 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
@@ -435,7 +432,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, 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
@@ -443,7 +440,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, 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
@@ -453,13 +450,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, 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
@@ -467,7 +464,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, 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
@@ -481,7 +478,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, 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
@@ -489,7 +486,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, 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
@@ -500,7 +497,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, 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
@@ -557,7 +554,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.171, 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
@@ -565,7 +562,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, 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
@@ -576,7 +573,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, 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
@@ -596,7 +593,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, 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
@@ -604,7 +601,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, 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
@@ -615,7 +612,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, 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
@@ -692,6 +689,414 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0 declare void @BuildOptions.add_link_flag(i64, ptr) #0
@@ -803,6 +1208,336 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(ptr, i1) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.125(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.126(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.127(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.128(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.129(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.130(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.131(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.132(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.133(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.134(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.135(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.136(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.137(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.138(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.139(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.140(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.141(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.142(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.143(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.144(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.145(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.146(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.147(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.148(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.149(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.150(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.151(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.152(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.153(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.154(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.155(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.156(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.157(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.158(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.159(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.160(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options.161() #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 {
entry: entry:
@@ -844,14 +1579,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.36, i64 9 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.177, 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.37, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.178, 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)
@@ -867,7 +1602,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.38, i64 9 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.179, i64 9 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -947,17 +1682,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_.39, i64 0) %cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.180, 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_.40) %sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.181)
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.41) %2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.182)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.42) %sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.183)
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.43) %3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.184)
%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 it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,31 +1,28 @@
@OS = internal global i64 6
@ARCH = internal global i64 4
@POINTER_SIZE = internal global i64 8
@__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null }
@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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.162 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.163 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.164 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.165 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.166 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.167 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.168 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.169 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.170 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.171 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.172 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.173 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.174 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.175 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.176 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.177 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.37 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.178 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.179 = 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_.39 = private unnamed_addr constant [8 x i8] c"release\00" @OBJC_METH_VAR_NAME_.180 = 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
@@ -331,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.162, 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
@@ -427,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.163, 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
@@ -435,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.164, 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
@@ -445,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.165, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.166, 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
@@ -459,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.167, 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
@@ -473,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.168, 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 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.169, 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 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.170, 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
@@ -549,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.171, 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
@@ -557,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.172, 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
@@ -568,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.173, 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
@@ -588,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.174, 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
@@ -596,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.175, 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
@@ -607,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.176, 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,6 +681,414 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0 declare void @BuildOptions.add_link_flag(i64, ptr) #0
@@ -795,6 +1200,336 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(ptr, i1) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.125(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.126(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.127(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.128(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.129(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.130(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.131(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.132(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.133(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.134(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.135(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.136(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.137(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.138(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.139(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.140(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.141(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.142(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.143(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.144(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.145(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.146(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.147(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.148(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.149(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.150(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.151(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.152(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.153(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.154(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.155(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.156(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.157(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.158(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.159(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.160(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options.161() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define i32 @main() #0 { define i32 @main() #0 {
entry: entry:
@@ -829,14 +1564,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.36, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.177, 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.37, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.178, 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)
@@ -852,7 +1587,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.38, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.179, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }
@@ -864,7 +1599,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_.39) %selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.180)
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

File diff suppressed because it is too large Load Diff

View File

@@ -2,30 +2,30 @@
@g_should_call = internal global i1 false @g_should_call = internal global i1 false
@__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [5 x i8] c"noop\00", align 1 @str.140 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.37 = private unnamed_addr constant [4 x i8] c"()V\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [5 x i8] c"noop\00", align 1 @str.142 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.39 = private unnamed_addr constant [4 x i8] c"()V\00", align 1 @str.143 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.41 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.145 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.42 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.146 = 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
@@ -330,7 +330,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -426,7 +426,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -434,7 +434,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -444,13 +444,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -458,7 +458,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -472,7 +472,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -480,7 +480,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -491,7 +491,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -548,7 +548,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -556,7 +556,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -567,7 +567,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -587,7 +587,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -595,7 +595,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -606,7 +606,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -683,6 +683,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -709,7 +1447,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -734,7 +1472,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.38, ptr @str.39) %jni.fresh.mid14 = call ptr %jni.GetMethodID13(ptr %load, ptr %jni.global.cls12, ptr @str.142, ptr @str.143)
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
@@ -786,14 +1524,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.40, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.144, 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.41, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.145, 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)
@@ -809,6 +1547,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.42, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.146, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [9 x i8] c"getCount\00", align 1 @str.140 = private unnamed_addr constant [9 x i8] c"getCount\00", align 1
@str.37 = private unnamed_addr constant [4 x i8] c"()I\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -707,7 +1445,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -761,14 +1499,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -784,6 +1522,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [18 x i8] c"currentTimeMillis\00", align 1 @str.140 = private unnamed_addr constant [18 x i8] c"currentTimeMillis\00", align 1
@str.37 = private unnamed_addr constant [4 x i8] c"()J\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -707,7 +1445,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -761,14 +1499,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -784,6 +1522,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [9 x i8] c"getValue\00", align 1 @str.140 = private unnamed_addr constant [9 x i8] c"getValue\00", align 1
@str.37 = private unnamed_addr constant [4 x i8] c"()D\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -707,7 +1445,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -761,14 +1499,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -784,6 +1522,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [8 x i8] c"isShown\00", align 1 @str.140 = private unnamed_addr constant [8 x i8] c"isShown\00", align 1
@str.37 = private unnamed_addr constant [4 x i8] c"()Z\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -707,7 +1445,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -761,14 +1499,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -784,6 +1522,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1 @str.140 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1
@str.37 = private unnamed_addr constant [24 x i8] c"()Landroid/view/Window;\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -707,7 +1445,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -761,14 +1499,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -784,6 +1522,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [4 x i8] c"max\00", align 1 @str.140 = private unnamed_addr constant [4 x i8] c"max\00", align 1
@str.37 = private unnamed_addr constant [6 x i8] c"(II)I\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -704,7 +1442,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetStaticMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -758,14 +1496,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -781,6 +1519,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1 @str.140 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1
@str.37 = private unnamed_addr constant [21 x i8] c"()Ljava/lang/Object;\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -708,7 +1446,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -761,14 +1499,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -784,6 +1522,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, 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 global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1 @str.125 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.22 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.23 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.24 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.25 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1 @str.129 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.26 = private unnamed_addr constant [6 x i8] c"])); \00", align 1 @str.130 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.27 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.131 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.28 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.132 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.29 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.133 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.30 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.134 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.31 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.135 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.32 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.136 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.33 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1 @str.137 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.34 = private unnamed_addr constant [3 x i8] c", \00", align 1 @str.138 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.35 = private unnamed_addr constant [5 x i8] c")); \00", align 1 @str.139 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.36 = private unnamed_addr constant [5 x i8] c"noop\00", align 1 @str.140 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.37 = private unnamed_addr constant [4 x i8] c"()V\00", align 1 @str.141 = 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.38 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.142 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.39 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.40 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1 @str.144 = 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
@@ -328,7 +328,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.21, i64 14 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.125, 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
@@ -424,7 +424,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.22, i64 36 }) %call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -432,7 +432,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.23, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -442,13 +442,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.24, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, 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.25, i64 43 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.129, 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
@@ -456,7 +456,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.26, i64 5 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -470,7 +470,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.27, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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
@@ -478,7 +478,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.28, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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
@@ -489,7 +489,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.29, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -546,7 +546,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.30, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, 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
@@ -554,7 +554,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.31, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -565,7 +565,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.32, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -585,7 +585,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.33, i64 36 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, 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
@@ -593,7 +593,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.34, i64 2 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -604,7 +604,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.35, i64 4 }) %callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -681,6 +681,744 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(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 {
entry: entry:
@@ -707,7 +1445,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.36, ptr @str.37) %jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.140, ptr @str.141)
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
@@ -759,14 +1497,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.38, i64 3 }, ptr %alloca, align 8 store { ptr, i64 } { ptr @str.142, 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.39, i64 0 }, ptr %allocaN, align 8 store { ptr, i64 } { ptr @str.143, 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)
@@ -782,6 +1520,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.40, i64 3 }) %call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, i64 3 })
ret { ptr, i64 } %call ret { ptr, i64 } %call
} }

View File

@@ -1,14 +1,11 @@
@OS = internal global i64 6
@ARCH = internal global i64 4
@POINTER_SIZE = internal global i64 8
@g_held_view = internal global ptr null @g_held_view = internal global ptr null
@__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, ptr null } @__sx_default_context = internal global { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc, ptr @__thunk_CAllocator_Allocator_dealloc }, 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.21 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1 @str.162 = 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.22 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1 @str.163 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
@str.23 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1 @str.164 = 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
@@ -207,6 +204,414 @@ declare i64 @write(i32, ptr, i64)
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @log_emit(ptr, ptr, ptr) #0 declare void @log_emit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close(i32) #0
; Function Attrs: nounwind
declare i64 @read(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @spaces(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at(i32) #0
; Function Attrs: nounwind
declare ptr @to_string(ptr) #0
; Function Attrs: nounwind
declare void @print_current(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames(ptr) #0
; Function Attrs: nounwind
declare ptr @popen(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose(ptr) #0
; Function Attrs: nounwind
declare i64 @fread(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen(ptr) #0
; Function Attrs: nounwind
declare i32 @system(ptr) #0
; Function Attrs: nounwind
declare void @run(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit(i32) #0
; Function Attrs: nounwind
declare void @exit(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @socket(i32, i32, i32) #0
; Function Attrs: nounwind
declare i32 @setsockopt(i32, i32, i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @bind(i32, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @listen(i32, i32) #0
; Function Attrs: nounwind
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.21(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.22(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc.23(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc.24(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.25(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc.26(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc.27(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.28(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.29(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.30(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.31(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc.33(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.init.34(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.38(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.39(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.40(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc.41(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc.42(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.43(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.44(i32) #0
; Function Attrs: nounwind
declare i64 @read.45(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.46(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.47(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.48(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.49(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.50(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.51(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.52(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.53(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.54(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.55(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.56(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.57(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.58(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.59(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.60(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.61(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.62(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.63(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.64(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.65(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.66(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.67(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.68(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.70(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.71(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.72(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.put(ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Object.deinit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.put_byte(ptr, ptr, i8) #0
; Function Attrs: nounwind
declare i32 @Sink.put(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Sink.flush(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @hex_digit(ptr, i64) #0
; Function Attrs: nounwind
declare i32 @write_u_escape(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare i32 @write_string(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_int(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @write_value(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_array(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_object(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @write_to_buffer(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @write_to_file(ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @hex_value(ptr, i8) #0
; Function Attrs: nounwind
declare i64 @encode_utf8(ptr, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.skip_ws(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Parser.expect_lit(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.read_hex4(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.decode_into(ptr, ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_string(ptr sret({ { ptr, i64 }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare [2 x i64] @Parser.parse_number(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_array(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_object(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @Parser.parse_value(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse(ptr sret({ { i64, [24 x i8] }, i32 }), ptr, ptr, ptr) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0 declare void @BuildOptions.add_link_flag(i64, ptr) #0
@@ -318,6 +723,336 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind ; Function Attrs: nounwind
declare i64 @build_options() #0 declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.73(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.74() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.75() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.76(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.77(ptr) #0
; Function Attrs: nounwind
declare void @print_current.78(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.79(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.80(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.81(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.82(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.83(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.84(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.85(ptr) #0
; Function Attrs: nounwind
declare i32 @system.86(ptr) #0
; Function Attrs: nounwind
declare void @run.87(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.88(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.89(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.90(i32) #0
; Function Attrs: nounwind
declare void @exit.91(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.92(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
; Function Attrs: nounwind
declare ptr @_NSGetArgc() #0
; Function Attrs: nounwind
declare void @exit_ok(ptr) #0
; Function Attrs: nounwind
declare void @exit_usage(ptr) #0
; Function Attrs: nounwind
declare i64 @os_argc(ptr) #0
; Function Attrs: nounwind
declare ptr @os_args(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @Parsed.is_set(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.93(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
declare i32 @open.94(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.95(i32) #0
; Function Attrs: nounwind
declare i64 @read.96(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.97(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.98(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.99(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.100(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.101(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.102(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.103(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.104(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.105(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.106(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.107(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.108(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.109(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.110(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.111(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.112(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.113(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.114(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.115(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.116(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.117(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.118(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.119(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.121(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.122(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.123(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @big_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma0(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @small_sigma1(ptr, i64) #0
; Function Attrs: nounwind
declare void @Sha256.process_block(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Sha256.update(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @Sha256.final(ptr, ptr) #0
; Function Attrs: nounwind
declare i8 @nibble_hex(ptr, i64) #0
; Function Attrs: nounwind
declare void @init(ptr sret({ [8 x i64], [64 x i8], i64, i64 }), ptr) #0
; Function Attrs: nounwind
declare [64 x i8] @sha256_hex(ptr, ptr) #0
; Function Attrs: nounwind
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.124(ptr, i1) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.125(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.126(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.127(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.128(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.129(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.130(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.131(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.132(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.133(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.134(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.135(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.136(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.137(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.138(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.139(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.140(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.141(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.142(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.143(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.144(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.145(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.146(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.147(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.148(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.149(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.150(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.151(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.152(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.153(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.154(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.155(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.156(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.157(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.158(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.159(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.160(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options.161() #0
; Function Attrs: nounwind ; Function Attrs: nounwind
define i32 @main() #0 { define i32 @main() #0 {
entry: entry:
@@ -356,7 +1091,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.21) %jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.162)
%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
@@ -372,7 +1107,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.22, ptr @str.23) %jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.163, ptr @str.164)
%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

@@ -495,7 +495,10 @@ List :: struct ($T: Type) {
mem :: #import "modules/std/mem.sx"; mem :: #import "modules/std/mem.sx";
xml :: #import "modules/std/xml.sx"; xml :: #import "modules/std/xml.sx";
log :: #import "modules/std/log.sx"; log :: #import "modules/std/log.sx";
// fs/process/socket/json/cli/hash/test join the tail once the global fs :: #import "modules/std/fs.sx";
// last-wins maps are fully own-wins (their decls collide across programs process :: #import "modules/std/process.sx";
// when pulled into every closure) — import them directly meanwhile: socket :: #import "modules/std/socket.sx";
// #import "modules/std/fs.sx"; etc. json :: #import "modules/std/json.sx";
cli :: #import "modules/std/cli.sx";
hash :: #import "modules/std/hash.sx";
test :: #import "modules/std/test.sx";

View File

@@ -445,7 +445,8 @@ site.)
declaration, and flat-importing the module that declares it makes the alias declaration, and flat-importing the module that declares it makes the alias
usable in the importer — there is no `pub` keyword. The stdlib prelude uses usable in the importer — there is no `pub` keyword. The stdlib prelude uses
exactly this: `#import "modules/std.sx"` gives every bare prelude name exactly this: `#import "modules/std.sx"` gives every bare prelude name
(`print`, `List`, `Context`, …) plus the carried namespaces of std's tail: (`print`, `List`, `Context`, …) plus the carried namespaces of std's tail
(`mem`, `fs`, `process`, `socket`, `json`, `cli`, `hash`, `xml`, `log`, `test`):
```sx ```sx
#import "modules/std.sx"; #import "modules/std.sx";

View File

@@ -2596,8 +2596,9 @@ main :: () -> s32 {
``` ```
modules/std.sx the prelude — print/format, string ops (concat, substr, modules/std.sx the prelude — print/format, string ops (concat, substr,
path_join, ...), List(T), Context + push, the Allocator path_join, ...), List(T), Context + push, the Allocator
protocol; plus the namespace tail: protocol; plus the namespace tail: mem / xml / log /
mem / xml / log :: #import "modules/std/<m>.sx" fs / process / socket / json / cli / hash / test ::
#import "modules/std/<m>.sx"
modules/std/ mem.sx (CAllocator, GPA, Arena, TrackingAllocator), modules/std/ mem.sx (CAllocator, GPA, Arena, TrackingAllocator),
fs.sx, process.sx, socket.sx, json.sx, cli.sx, hash.sx, fs.sx, process.sx, socket.sx, json.sx, cli.sx, hash.sx,
xml.sx, log.sx, trace.sx, test.sx xml.sx, log.sx, trace.sx, test.sx
@@ -2612,9 +2613,9 @@ modules/gpu/, modules/ui/ GPU protocol + retained UI toolkit
``` ```
`#import "modules/std.sx"` gives every prelude name bare, plus `mem.GPA`, `#import "modules/std.sx"` gives every prelude name bare, plus `mem.GPA`,
`xml.escape`, `log.warn`, ... through the carried namespace tail (see `json.parse`, `fs.exists`, `hash.sha256_hex`, `log.warn`, ... through the
Namespace Alias Carry). The remaining `std/` modules are imported directly carried namespace tail (see Namespace Alias Carry). Direct file imports
(`#import "modules/std/json.sx"`) until they join the tail. (`#import "modules/std/json.sx"`) remain available for bare access.
--- ---

View File

@@ -860,7 +860,27 @@ pub const LLVMEmitter = struct {
} }
fn emitGlobals(self: *LLVMEmitter) void { fn emitGlobals(self: *LLVMEmitter) void {
// Dead-global elimination: a plain-data global no instruction
// references is not emitted — without this, every module pulled in
// via the std namespace tail lands its data (hash's K table, ...)
// in every binary. Comptime-backed globals are kept: their #run
// evaluation (and its failure diagnostics) is a semantic effect,
// not just data.
var used = std.AutoHashMap(u32, void).init(self.alloc);
defer used.deinit();
for (self.ir_mod.functions.items) |*func| {
for (func.blocks.items) |*block| {
for (block.insts.items) |*instruction| {
switch (instruction.op) {
.global_get, .global_addr => |gid| used.put(gid.index(), {}) catch {},
.global_set => |gs| used.put(gs.global.index(), {}) catch {},
else => {},
}
}
}
}
for (self.ir_mod.globals.items, 0..) |global, i| { for (self.ir_mod.globals.items, 0..) |global, i| {
if (global.comptime_func == null and !used.contains(@intCast(i))) continue;
const name = self.ir_mod.types.getString(global.name); const name = self.ir_mod.types.getString(global.name);
const llvm_ty = self.toLLVMType(global.ty); const llvm_ty = self.toLLVMType(global.ty);
const name_z = self.alloc.dupeZ(u8, name) catch continue; const name_z = self.alloc.dupeZ(u8, name) catch continue;