Compare commits

...

17 Commits

Author SHA1 Message Date
agra
8dedacb23f fix(C4): dedup c-import units by normalized content, not node identity
One module imported through several aliased chains materializes one
c_import_decl copy per chain, each carrying a differently-spelled
relative path to the same file (src/app/../repo/../db/../../vendor/x.c
vs src/db/../../vendor/x.c). Dedup now keys on lexically-normalized
sources/includes + defines + flags, so the unit compiles and links
exactly once — pointer-identity dedup linked it once per chain and
died with duplicate symbols at AOT link.
2026-06-12 17:27:06 +03:00
agra
e9b500a232 fix(C4): collectCImportSources recurses into nested namespaces
A named #import c unit declared inside an aliased module sits two
namespace levels deep in the merged tree; the one-level walk (the
extractLibraries/0130 pattern in c_import form) never collected it,
so the unit silently never compiled and its symbols resolved from
whatever process image carried the same names — surfaced by C4's
sqlite migration, where only the version pin could tell the OS copy
from the vendored one.
2026-06-12 17:16:03 +03:00
agra
44f4aab51c test(C3.3): #define/#flags reach a unit consumed only by hand-curated #foreign decls 2026-06-12 17:09:07 +03:00
agra
1bad29e72e feat(C3.1): #foreign refs are validated — must name a #library or a named #import c unit
validateForeignRefs walks the merged tree (libraries + named c units,
nested namespaces included) and diagnoses any #foreign whose ref names
neither — a typo'd ref previously compiled and resolved silently
through whatever image carried the symbol. Decls synthesized from
#include headers carry no ref and are exempt. Flips the C0.2b pin;
zero collateral across the 608 other examples.
2026-06-12 17:09:07 +03:00
agra
0bd8f3e5ce feat(C2): unit-first JIT symbol resolution — program-owned dylibs beat process images
runJITFromObject now takes priority dylibs (the #import c unit's
linked objects first, then #library deps in declaration order) and
attaches a per-path search generator for each AHEAD of the
process-wide fallback, so a vendored symbol can never lose to a
same-named export of an image the host process happens to carry
(libz via LLVM, libsqlite3 via CoreServices). loadLibrary reports
the name dlopen succeeded on; the c-import handle records its dylib
path; temp link inputs are per-pid so concurrent runs can't clobber
each other. Flips the C0.3 shadowing pin to from_unit: true.
2026-06-12 16:56:35 +03:00
agra
2a2f43eada test(C1.4): objectMagicOk — corrupt/truncated cache entries recompile, never poison the link 2026-06-12 16:48:27 +03:00
agra
053314b3ea feat(C1.2): persistent content-addressed cache for compiled #source units
compileCToObjects now probes .sx-cache/c-<key>.o before invoking the
embedded clang and writes fresh objects back (per-pid temp + copy, the
main object cache's pattern). Default on for both JIT and AOT — the
temp-compile-and-delete behavior it replaces was strictly worse. A
cached entry must carry an object-file magic (Mach-O/ELF) or it falls
back to a fresh compile; no cache failure can fail a build. Cold/warm
verified via --time: the object compile disappears on the warm run.
2026-06-12 16:48:02 +03:00
agra
10f5a4318d test(C1.1): cSourceCacheKey — content key for compiled #source units
Source bytes, declared-header CONTENT (header edits invalidate),
defines/flags/include dirs in order, LLVM version, and target
triple/sysroot all participate; section tags keep equal strings in
different roles distinct. Pure function + variance property tests;
nothing consumes it yet.
2026-06-12 16:43:42 +03:00
agra
1009181638 test(C0.3): pin JIT shadowing — a #source unit's zlibCompileFlags loses to the process-loaded OS libz (xfail for C2.1) 2026-06-12 16:38:02 +03:00
agra
22455c706b test(C0.2): pin curated-bindings shape — #source-only unit + hand #foreign works (JIT+AOT), but the ref is decorative (xfail for C3.1) 2026-06-12 16:38:02 +03:00
agra
2808d5df82 test(C0.1): pin named #import c block — name namespaces decls, #define/#flags reach the unit's compile 2026-06-12 16:38:02 +03:00
agra
d739c5bf11 fix(0130): #library/#framework collection recurses into nested namespaces
extractLibraries/extractFrameworks walked the merged root plus exactly
one namespace_decl level, so a #library reached through two or more
aliased imports never made it to the AOT link line or the JIT dlopen
list. Both walks now recurse over namespace_decl children.

Regression: examples/1617-modules-library-nested-namespace.sx binds
libpcap (not in the compiler's loaded images, so the JIT cannot mask
the miss via RTLD_DEFAULT) behind two aliased imports.
2026-06-12 15:59:36 +03:00
agra
1d17b0abcf lang: introduce cstring — the C-boundary string (Odin model)
cstring is ONE pointer to a null-terminated u8 buffer, C's char*: thin
(8 bytes, no length; cstring_len walks to the terminator), crossing
#foreign boundaries verbatim in both directions, with ?cstring as the
nullable case lowering to the same bare pointer (null = absent).

Conversion discipline mirrors Odin: a string LITERAL coerces implicitly
(its bytes are terminated constants); any other string is rejected with
a diagnostic naming to_cstring (it may be an unterminated view); and
cstring never coerces to string implicitly — from_cstring(c) is the
explicit zero-copy view, pricing the strlen.

Plumbing: TypeId/TypeInfo builtin slot 18 (first_user 19), name
classifiers, size/align/name tables, LLVM ptr lowering, the ?T pointer
niche, the xx pointer ladder, the literal-gated coercion plan
(isConstString + data_ptr), and the reserved-spelling set. std gains
cstring_len/from_cstring/to_cstring (fmt.sx, re-exported); the old
cstring(size) allocator helper is renamed alloc_string everywhere;
getenv migrates to (name: cstring) -> ?cstring as the canonical user
and env() drops its manual strlen/memcpy.

Pinned: examples/1222 (FFI both directions, literal coercion,
?cstring null paths, round trip) and examples/1173 (both coercion
diagnostics); FAIL pre-feature. The alloc_string rename + getenv
signature shift the .ir snapshots — regenerated. zig build test
426/426; run_examples 604/604.

Spec: reserved spelling + cstring section + C-interop rows.
2026-06-12 14:50:53 +03:00
agra
d88bdd7242 fix(0128): foreign cstring returns + conflicting same-symbol bindings
Two genuine defects behind the 0128 filing (whose original repros were
both poisoned by binding getenv, which std already declares -> *u8):

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

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

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

Regression: examples/1221 (plain + optional non-null + NULL paths) and
examples/1172 (conflict diagnostic); both FAIL pre-fix. The extern
dedupe collapses duplicate libc decls, so affected .ir snapshots were
regenerated. zig build test 426/426; run_examples 602/602;
distribution suite 21/21.
2026-06-12 14:13:01 +03:00
agra
a8fbded567 fix(0129): logical not is truthiness-aware, not a bit flip
The unary .not arm emitted bool_not (LLVM bitwise Not) for every
operand. Correct on i1; on an error binding — an error-set value, u32
tag at the LLVM level — a bitwise not of a nonzero tag stays nonzero,
so 'if !e' held even on a SET error and its branch read the
uninitialized success value (real segfault in the distribution repo's
sqlite tests). Plain integers had the same hole ('!7' was '~7').

Now: bool keeps bool_not; integers and error-set operands lower as the
truthiness complement (cmp_eq against a typed zero); anything else is
diagnosed instead of silently bit-flipped.

Regression: examples/1057 (set error: !e must not hold; success: !e
holds with a real value; integer truthiness) + examples/1171 (!"text"
diagnosed); both FAIL pre-fix. zig build test 426/426;
tests/run_examples.sh 600/600.
2026-06-12 13:36:54 +03:00
agra
ba37d0b393 issues: file 0128 — [:0]u8 FFI returns silently u8; ?[:0]u8 unresolved panic
[:0]u8 aliases string (fat) and params already ABI-thin to char*, but
a foreign -> [:0]u8 return silently resolves to plain u8, and ?[:0]u8
never resolves at all (LLVM emission panic) even though ?string works.
Design contract recorded: ?[:0]u8 lowers to a nullable char* at the
boundary, length synthesized on the sx side; until then such returns
must be diagnosed, not mis-typed.
2026-06-12 13:21:19 +03:00
agra
1bc60d3a35 fix(0098): enum literal resolves against the unwrapped optional child; non-enum targets are diagnosed
lowerEnumLiteral resolved the variant against the raw destination type,
so any non-enum destination fell into resolveVariantValue's silent
return-0 tail with the enum_init stamped as the wrong type:

  - ?E destinations produced variant 0 mis-typed as the optional
    (observed as variant 0 OR null, layout-dependent);
  - builtin destinations (i64) silently became 0;
  - unknown variants of real enums silently became variant 0;
  - a destination-less literal panicked LLVM emission (unresolved
    type reached codegen).

Now: optional destinations unwrap to the child enum (the coercion
layer's .optional_wrap handles E -> ?E), and the remaining shapes are
diagnosed — unknown variant (with the variant list, via the new
emitBadEnumVariant twin of emitBadVariant), non-enum destination, and
no destination (cascade-guarded: silent when the destination's type
already failed to resolve and was reported).

Regression tests: examples/0183 (return/assign/reassign into ?Enum,
non-zero variants, null path) + examples/1169/1170 (each diagnostic);
all three FAIL on pre-fix master. zig build test 426/426;
tests/run_examples.sh 598/598.
2026-06-12 12:35:20 +03:00
140 changed files with 33596 additions and 35292 deletions

View File

@@ -0,0 +1,34 @@
// Enum literals flowing into OPTIONAL destinations resolve against the
// optional's CHILD type and wrap (issue 0098). Pre-fix, the literal fell
// into resolveVariantValue's non-enum fallback: variant 0, mis-typed as
// the optional itself — `return .android_apk;` was observed by callers as
// `.ios` or even null, layout-dependent.
#import "modules/std.sx";
Platform :: enum u8 { ios; android_apk; macos; linux; windows; }
classify :: (n: i64) -> ?Platform {
if n == 1 { return .android_apk; } // return: literal into ?Platform
if n == 2 { return .windows; } // non-zero, non-adjacent variant
return null;
}
main :: () -> i32 {
p := classify(1);
if p == null { print("BUG: null\n"); return 1; }
if p! != .android_apk { print("BUG: wrong variant\n"); return 2; }
w := classify(2);
if w == null or w! != .windows { print("BUG: windows\n"); return 3; }
if classify(9) != null { print("BUG: not null\n"); return 4; }
// assignment + reassignment: literal into a ?Platform slot
q : ?Platform = .macos;
if q == null or q! != .macos { print("BUG: assign\n"); return 5; }
q = .linux;
if q! != .linux { print("BUG: reassign\n"); return 6; }
print("ok\n");
return 0;
}

View File

@@ -0,0 +1,36 @@
// `!` on an error binding is the truthiness complement of `if e` (issue
// 0129). Pre-fix, `!` lowered as a bitwise not, so a nonzero error tag
// stayed nonzero and `if !e` held even on a SET error — with the success
// value read as garbage. Integer operands get the same `!x ≡ x == 0`
// semantics.
#import "modules/std.sx";
E :: error { Boom }
f :: (fail: bool) -> (i64, !E) {
if fail { raise error.Boom; }
return 42;
}
main :: () -> i32 {
// set error: `if e` holds, `if !e` must NOT
v, e := f(true);
took_e := false;
if e { took_e = true; }
if !e { print("BUG: !e held on a set error (v={})\n", v); return 1; }
if !took_e { print("BUG: if e did not hold on a set error\n"); return 2; }
// success: `if !e` holds and the value is real
v2, e2 := f(false);
if e2 { print("BUG: e2 set on success\n"); return 3; }
if !e2 { print("ok: !e2 on success, v2={}\n", v2); }
// integers: `!n` is `n == 0`, not a bit flip
n := 7;
if !n { print("BUG: !7 held\n"); return 4; }
z := 0;
if !z { print("ok: !0 holds\n"); }
print("done\n");
return 0;
}

View File

@@ -0,0 +1,14 @@
// Enum literals against unusable destinations are DIAGNOSED, never a
// silent variant 0 (issue 0098's sibling holes): an unknown variant of a
// real enum, a non-enum destination type, and a destination-less literal
// each get their own error.
#import "modules/std.sx";
Platform :: enum u8 { ios; android_apk; }
main :: () -> i32 {
a : Platform = .nonexistent; // unknown variant: lists the real ones
b : i64 = .foo; // non-enum destination
print("{}{}\n", a, b);
return 0;
}

View File

@@ -0,0 +1,11 @@
// A destination-less enum literal is diagnosed (issue 0098's third hole —
// it previously panicked the LLVM backend with an unresolved type). Kept
// as the ONLY error in this file: the diagnostic is cascade-guarded, so it
// stays silent when the destination type itself already failed to resolve.
#import "modules/std.sx";
main :: () -> i32 {
c := .ios;
print("{}\n", c);
return 0;
}

View File

@@ -0,0 +1,10 @@
// `!` on an operand that has no truthiness (neither bool, integer, nor
// an error binding) is diagnosed instead of silently bit-flipped
// (issue 0129's diagnostic half).
#import "modules/std.sx";
main :: () -> i32 {
s := "text";
if !s { print("unreachable\n"); }
return 0;
}

View File

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

View File

@@ -0,0 +1,13 @@
// cstring's coercion discipline (Odin-style): only a string LITERAL
// converts implicitly — an arbitrary string may be an unterminated view
// (use to_cstring); and cstring never converts to string implicitly —
// the length is an O(n) strlen the code must ask for (from_cstring).
#import "modules/std.sx";
main :: () -> i32 {
s := concat("a", "b");
c : cstring = s; // error: non-literal string -> cstring
t : string = c; // error: cstring -> string
print("{}{}\n", t, cstring_len(c));
return 0;
}

View File

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

View File

@@ -0,0 +1,38 @@
// The `cstring` type: ONE pointer to a null-terminated u8 buffer — C's
// `char *`. Crosses #foreign boundaries verbatim in both directions;
// `?cstring` is the nullable case (null pointer = absent); string
// LITERALS coerce implicitly (terminated constants); arbitrary strings
// materialize via to_cstring; from_cstring is the zero-copy view back.
#import "modules/std.sx";
libc :: #library "c";
strerror_c :: (code: i32) -> cstring #foreign libc "strerror";
getenv_c :: (name: cstring) -> ?cstring #foreign libc "getenv";
dlerror_c :: () -> ?cstring #foreign libc "dlerror";
main :: () -> i32 {
// literal -> cstring param; cstring return -> view
e := strerror_c(2);
v := from_cstring(e);
if v.len < 5 { print("BUG: strerror short\n"); return 1; }
print("strerror ok\n");
// ?cstring: present, absent, and null-returning C call
p := getenv_c("PATH");
if p == null { print("BUG: PATH null\n"); return 2; }
if cstring_len(p!) < 1 { print("BUG: PATH empty\n"); return 3; }
q := getenv_c("NO_SUCH_VAR_ZZZ");
if q != null { print("BUG: missing not null\n"); return 4; }
d := dlerror_c();
if d != null { print("BUG: dlerror non-null\n"); return 5; }
print("?cstring ok\n");
// round trip: built string -> owned cstring -> view -> equality
s := concat("hi-", "there");
c := to_cstring(s);
r := from_cstring(c);
if r != "hi-there" { print("BUG: round trip\n"); return 6; }
if cstring_len(c) != 8 { print("BUG: len\n"); return 7; }
print("round trip ok\n");
return 0;
}

View File

@@ -0,0 +1,10 @@
// Regression (issue 0130): a #library declared in a module reached through
// TWO aliased imports must still be linked (AOT) / dlopened (JIT).
#import "modules/std.sx";
b :: #import "1617-modules-library-nested-namespace/b.sx";
main :: () -> i32 {
v := b.version_via_b();
print("pcap version non-empty: {}\n", v.len > 0);
return 0;
}

View File

@@ -0,0 +1,5 @@
// Middle module: aliases c.sx, putting its #library one namespace deep.
#import "modules/std.sx";
c :: #import "c.sx";
version_via_b :: () -> string { return c.pcap_version(); }

View File

@@ -0,0 +1,11 @@
// Innermost module: owns the #library and its foreign fn.
#import "modules/std.sx";
pcaplib :: #library "pcap";
pcap_lib_version :: () -> ?cstring #foreign pcaplib "pcap_lib_version";
pcap_version :: () -> string {
p := pcap_lib_version();
if p == null { return ""; }
return from_cstring(p!);
}

View File

@@ -0,0 +1,18 @@
// Pins the NAMED `#import c` block (PLAN-C C0.1): the block's name
// namespaces the decls synthesized from `#include`, and `#define` /
// `#flags` entries reach the unit's clang invocation — the macro decides
// what cdef_value answers.
#import "modules/std.sx";
cu :: #import c {
#include "1618-cimport-named-defines/cdef.h";
#source "1618-cimport-named-defines/cdef.c";
#define "CDEF_BASE=42";
#flags "-O2";
};
main :: () -> i32 {
print("value = {}\n", cu.cdef_value());
print("doubled = {}\n", cu.cdef_doubled(21));
0
}

View File

@@ -0,0 +1,6 @@
#include "cdef.h"
#ifndef CDEF_BASE
#define CDEF_BASE 1
#endif
int cdef_value(void) { return CDEF_BASE; }
int cdef_doubled(int x) { return x * 2; }

View File

@@ -0,0 +1,5 @@
#ifndef CDEF_H
#define CDEF_H
int cdef_value(void);
int cdef_doubled(int x);
#endif

View File

@@ -0,0 +1,17 @@
// Pins the curated-bindings shape (PLAN-C C0.2): a `#source`-only unit
// (no `#include`, so no auto-synthesized decls) paired with a
// hand-written `#foreign` decl naming the unit. Works in JIT and AOT
// today — but see 1620: the unit ref is not yet validated or scoped,
// so the symbol actually resolves globally, not through the unit.
#import "modules/std.sx";
only :: #import c {
#source "1619-cimport-source-only/only.c";
};
only_answer :: () -> i32 #foreign only "only_answer";
main :: () -> i32 {
print("answer = {}\n", only_answer() + 1);
0
}

View File

@@ -0,0 +1 @@
int only_answer(void) { return 41; }

View File

@@ -0,0 +1,17 @@
// A `#foreign` ref must name something real (PLAN-C C3.1): `nosuchunit`
// names neither a #library constant nor a named `#import c` unit, so
// this is a compile-time diagnostic — a typo'd ref previously compiled
// and resolved silently through whatever image carried the symbol.
// Regression (PLAN-C C0.2b xfail, flipped by C3.1).
#import "modules/std.sx";
refs :: #import c {
#source "1620-cimport-foreign-ref-unvalidated/ref.c";
};
ref_answer :: () -> i32 #foreign nosuchunit "ref_answer";
main :: () -> i32 {
print("ref = {}\n", ref_answer());
0
}

View File

@@ -0,0 +1 @@
int ref_answer(void) { return 7; }

View File

@@ -0,0 +1,18 @@
// Unit-first JIT resolution (PLAN-C C2): a `#source` unit defining a
// symbol that ALSO lives in an OS image already loaded into the
// compiler process (libz, via libLLVM) still wins — the unit's dylib
// is a priority symbol-search target ahead of the process-wide
// fallback. The unit's zlibCompileFlags answers 0xDEADBEEF; the OS
// one answers real flag bits, so `true` proves the unit won.
// Regression (PLAN-C C0.3 xfail, flipped by C2.1).
#import "modules/std.sx";
zshadow :: #import c {
#include "1621-cimport-shadow-os-lib/shadow.h";
#source "1621-cimport-shadow-os-lib/shadow.c";
};
main :: () -> i32 {
print("from_unit: {}\n", zshadow.zlibCompileFlags() == 3735928559);
0
}

View File

@@ -0,0 +1 @@
unsigned long zlibCompileFlags(void) { return 3735928559UL; }

View File

@@ -0,0 +1 @@
unsigned long zlibCompileFlags(void);

View File

@@ -0,0 +1,17 @@
// `#define`/`#flags` reach a unit whose ONLY consumer is hand-curated
// `#foreign` decls (PLAN-C C3.3) — no `#include`, no auto-synthesis:
// the macro decides what the unit-bound decl answers.
#import "modules/std.sx";
unit :: #import c {
#define "UNIT_BASE=33";
#flags "-O2";
#source "1622-cimport-unit-bound-defines/unit.c";
};
unit_answer :: () -> i32 #foreign unit "unit_answer";
main :: () -> i32 {
print("unit answer = {}\n", unit_answer());
0
}

View File

@@ -0,0 +1,4 @@
#ifndef UNIT_BASE
#define UNIT_BASE 1
#endif
int unit_answer(void) { return UNIT_BASE; }

View File

@@ -0,0 +1,11 @@
// A named `#import c` unit declared INSIDE an aliased module (so the
// unit's namespace nests two deep in the merged tree) still compiles
// and links — collectCImportSources recurses through namespaces, the
// same way #library collection does (issue 0130's pattern).
#import "modules/std.sx";
m :: #import "1623-cimport-unit-in-aliased-module/mod.sx";
main :: () -> i32 {
print("nested unit answer = {}\n", m.answer_via_mod());
0
}

View File

@@ -0,0 +1 @@
int unit_in_mod_answer(void) { return 54; }

View File

@@ -0,0 +1,10 @@
// A module that owns a named C unit + a hand-curated binding.
#import "modules/std.sx";
cunit :: #import c {
#source "inmod.c";
};
unit_in_mod_answer :: () -> i32 #foreign cunit "unit_in_mod_answer";
answer_via_mod :: () -> i32 { return unit_in_mod_answer(); }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@
ok

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,3 @@
ok: !e2 on success, v2=42
ok: !0 holds
done

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,11 @@
error: 'nonexistent' is not a variant of 'Platform' (variants are: ios, android_apk)
--> examples/1169-diagnostics-enum-literal-bad-target.sx:10:20
|
10 | a : Platform = .nonexistent; // unknown variant: lists the real ones
| ^^^^^^^^^^^^
error: enum literal '.foo' cannot type itself from non-enum destination 'i64'
--> examples/1169-diagnostics-enum-literal-bad-target.sx:11:15
|
11 | b : i64 = .foo; // non-enum destination
| ^^^^

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,5 @@
error: enum literal '.ios' has no destination type to resolve against
--> examples/1170-diagnostics-enum-literal-no-target.sx:8:10
|
8 | c := .ios;
| ^^^^

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,5 @@
error: '!' needs a bool, integer, or error operand; got 'string'
--> examples/1171-diagnostics-logical-not-bad-operand.sx:8:8
|
8 | if !s { print("unreachable\n"); }
| ^^

View File

@@ -0,0 +1 @@
1

View File

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

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,11 @@
error: only a string LITERAL coerces to 'cstring' implicitly; an arbitrary string may be an unterminated view — materialize it with to_cstring(s)
--> examples/1173-diagnostics-cstring-coercions.sx:9:5
|
9 | c : cstring = s; // error: non-literal string -> cstring
| ^^^^^^^^^^^^^^^^
error: 'cstring' does not coerce to 'string' implicitly (the length is implicit); convert with from_cstring(c)
--> examples/1173-diagnostics-cstring-coercions.sx:10:5
|
10 | t : string = c; // error: cstring -> string
| ^^^^^^^^^^^^^^^

View File

@@ -0,0 +1 @@

View File

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

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

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

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,3 @@
strerror ok
?cstring ok
round trip ok

View File

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

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

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@
pcap version non-empty: true

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,2 @@
value = 42
doubled = 42

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
answer = 42

Some files were not shown because too many files have changed in this diff Show More